From 89a9ff592056d75ea0e8df1969b962d67daf1e76 Mon Sep 17 00:00:00 2001 From: mahmood19227 Date: Mon, 30 Jan 2023 20:19:15 +0330 Subject: [PATCH] First Commit --- .../BasicInputs/Bha/CStringConfiguration.f90 | 62 + .../Bha/CStringConfigurationVariables.f90 | 54 + .../Bha/cstringconfigurationvariables.mod | Bin 0 -> 1875 bytes CSharp/BasicInputs/CMudProperties.f90 | 237 + .../BasicInputs/CMudPropertiesVariables.f90 | 140 + CSharp/BasicInputs/Geology/CFormation.f90 | 37 + .../Geology/CFormationVariables.f90 | 20 + CSharp/BasicInputs/Geology/CReservoir.f90 | 114 + .../Geology/CReservoirVariables.f90 | 25 + CSharp/BasicInputs/Geology/CShoe.f90 | 55 + CSharp/BasicInputs/Geology/CShoeVariables.f90 | 12 + .../Geology/cformationvariables.mod | Bin 0 -> 1189 bytes .../Geology/creservoirvariables.mod | Bin 0 -> 605 bytes .../RigSpecifications/CAccumulator.f90 | 95 + .../CAccumulatorVariables.f90 | 18 + .../RigSpecifications/CBopStack.f90 | 201 + .../RigSpecifications/CBopStackVariables.f90 | 31 + .../RigSpecifications/CHoisting.f90 | 76 + .../RigSpecifications/CHoistingVariables.f90 | 16 + .../BasicInputs/RigSpecifications/CPower.f90 | 71 + .../RigSpecifications/CPowerVariables.f90 | 14 + .../BasicInputs/RigSpecifications/CPumps.f90 | 381 + .../RigSpecifications/CPumpsVariables.f90 | 260 + .../RigSpecifications/CRigSize.f90 | 37 + .../RigSpecifications/CRigSizeVariables.f90 | 13 + .../caccumulatorvariables.mod | Bin 0 -> 520 bytes .../RigSpecifications/cbopstackvariables.mod | Bin 0 -> 624 bytes .../WellProfile/CCasingLinerChoke.f90 | 145 + .../CCasingLinerChokeVariables.f90 | 24 + .../WellProfile/CPathGeneration.f90 | 59 + .../WellProfile/CPathGenerationVariables.f90 | 28 + .../WellProfile/CWellSurveyData.f90 | 34 + .../WellProfile/CWellSurveyDataVariables.f90 | 20 + .../WellProfile/cpathgenerationvariables.mod | Bin 0 -> 1564 bytes CSharp/Common/CCommon.f90 | 53 + CSharp/Common/CCommonVariables.f90 | 15 + CSharp/Common/CIActionReference.f90 | 55 + CSharp/Common/CLesson.f90 | 15 + CSharp/Common/CLessonVariables.f90 | 9 + CSharp/Common/CQuery.f90 | 17 + CSharp/Common/CScaleRange.f90 | 16 + CSharp/Common/CTimer.f90 | 54 + CSharp/Common/CTimerLegacy.f90 | 28 + .../EventHandlers/CBoolEventHandler.f90 | 44 + .../CBoolEventHandlerCollection.f90 | 103 + .../EventHandlers/CDoubleEventHandler.f90 | 43 + .../CDoubleEventHandlerCollection.f90 | 103 + .../CIntegerArrayEventHandler.f90 | 44 + .../CIntegerArrayEventHandlerCollection.f90 | 103 + .../EventHandlers/CIntegerEventHandler.f90 | 44 + .../CIntegerEventHandlerCollection.f90 | 103 + .../EventHandlers/CRealEventHandler.f90 | 44 + .../CRealEventHandlerCollection.f90 | 103 + .../EventHandlers/CVoidEventHandler.f90 | 44 + .../CVoidEventHandlerCollection.f90 | 102 + CSharp/DownHole/CDownHole.f90 | 278 + CSharp/DownHole/CDownHoleActions.f90 | 105 + CSharp/DownHole/CDownHoleTypes.f90 | 52 + CSharp/DownHole/CDownHoleVariables.f90 | 292 + .../ControlPanels/CBopControlPanel.f90 | 250 + .../CBopControlPanelVariables.f90 | 116 + .../ControlPanels/CChokeControlPanel.f90 | 161 + .../CChokeControlPanelVariables.f90 | 25 + .../ControlPanels/CChokeManifold.f90 | 212 + .../ControlPanels/CChokeManifoldVariables.f90 | 65 + .../ControlPanels/CDataDisplayConsole.f90 | 798 ++ .../CDataDisplayConsoleVariables.f90 | 258 + .../ControlPanels/CDrillingConsole.f90 | 871 ++ .../CDrillingConsoleVariables.f90 | 132 + .../ControlPanels/CEquipmentsConstants.f90 | 11 + CSharp/Equipments/ControlPanels/CHook.f90 | 6 + .../Equipments/ControlPanels/CHookActions.f90 | 16 + .../ControlPanels/CHookVariables.f90 | 79 + .../ControlPanels/CStandPipeManifold.f90 | 206 + .../CStandPipeManifoldVariables.f90 | 27 + .../ControlPanels/CTopDrivePanel.f90 | 211 + .../ControlPanels/CTopDrivePanelVariables.f90 | 43 + .../ControlPanels/cequipmentsconstants.mod | Bin 0 -> 312 bytes .../ControlPanels/ctopdrivepanelvariables.mod | Bin 0 -> 748 bytes CSharp/Equipments/DrillWatch/CDrillWatch.f90 | 171 + .../DrillWatch/CDrillWatchVariables.f90 | 33 + .../MudPathFinding/CArrangement.f90 | 137 + .../Equipments/MudPathFinding/CManifolds.f90 | 1389 ++ CSharp/Equipments/MudPathFinding/CPath.f90 | 231 + .../MudPathFinding/CPathChangeEvents.f90 | 12 + CSharp/Equipments/MudPathFinding/CStack.f90 | 42 + CSharp/Equipments/Tanks/CTanks.f90 | 252 + CSharp/Equipments/Tanks/CTanksVariables.f90 | 41 + CSharp/ErrorLog/CError.f90 | 303 + CSharp/ErrorLog/CLog1.f90 | 113 + CSharp/ErrorLog/CLog2.f90 | 113 + CSharp/ErrorLog/CLog3.f90 | 113 + CSharp/ErrorLog/CLog4.f90 | 113 + CSharp/ErrorLog/CLog5.f90 | 113 + .../Common/COperationScenariosMain.f90 | 716 + .../Common/COperationScenariosSettings.f90 | 488 + .../Common/COperationScenariosVariables.f90 | 116 + .../Enums/CElevatorConnectionEnum.f90 | 618 + .../CElevatorConnectionEnumVariables.f90 | 64 + .../Enums/CKellyConnectionEnum.f90 | 175 + .../Enums/CKellyConnectionEnumVariables.f90 | 66 + .../Enums/CTdsConnectionModesEnum.f90 | 81 + .../CTdsConnectionModesEnumVariables.f90 | 68 + .../Enums/CTdsElevatorModesEnum.f90 | 330 + .../Enums/CTdsElevatorModesEnumVariables.f90 | 62 + .../CCloseKellyCockLedNotification.f90 | 83 + ...CloseKellyCockLedNotificationVariables.f90 | 67 + .../CCloseSafetyValveLedNotification.f90 | 109 + ...oseSafetyValveLedNotificationVariables.f90 | 67 + .../CFillMouseHoleLedNotification.f90 | 114 + ...CFillMouseHoleLedNotificationVariables.f90 | 61 + .../Notifications/CIrIBopLedNotification.f90 | 116 + .../CIrIBopLedNotificationVariables.f90 | 63 + .../CIrSafetyValveLedNotification.f90 | 162 + ...CIrSafetyValveLedNotificationVariables.f90 | 90 + .../Notifications/CLatchLedNotification.f90 | 251 + .../CLatchLedNotificationVariables.f90 | 58 + .../COpenKellyCockLedNotification.f90 | 62 + ...COpenKellyCockLedNotificationVariables.f90 | 63 + .../COpenSafetyValveLedNotification.f90 | 106 + ...penSafetyValveLedNotificationVariables.f90 | 65 + .../Notifications/CSlipsNotification.f90 | 134 + .../CSlipsNotificationVariables.f90 | 65 + .../Notifications/CSwingLedNotification.f90 | 122 + .../CSwingLedNotificationVariables.f90 | 55 + .../Notifications/CTdsIbopLedNotification.f90 | 72 + .../CTdsIbopLedNotificationVariables.f90 | 60 + .../CTdsPowerLedNotification.f90 | 48 + .../CTdsPowerLedNotificationVariables.f90 | 57 + .../CTdsTorqueWrenchLedNotification.f90 | 59 + ...dsTorqueWrenchLedNotificationVariables.f90 | 50 + .../Notifications/CTongNotification.f90 | 287 + .../CTongNotificationVariables.f90 | 69 + .../Notifications/CUnlatchLedNotification.f90 | 221 + .../CUnlatchLedNotificationVariables.f90 | 62 + .../Permissions/CFillupHeadPermission.f90 | 55 + .../CFillupHeadPermissionVariables.f90 | 50 + .../CInstallFillupHeadPermission.f90 | 76 + .../CInstallFillupHeadPermissionVariables.f90 | 53 + .../CInstallMudBucketPermission.f90 | 36 + .../CInstallMudBucketPermissionVariables.f90 | 51 + .../Permissions/CIrIbopPermission.f90 | 92 + .../CIrIbopPermissionVariables.f90 | 49 + .../Permissions/CIrSafetyValvePermission.f90 | 87 + .../CIrSafetyValvePermissionVariables.f90 | 51 + .../CRemoveFillupHeadPermission.f90 | 36 + .../CRemoveFillupHeadPermissionVariables.f90 | 51 + .../CRemoveMudBucketPermission.f90 | 34 + .../CRemoveMudBucketPermissionVariables.f90 | 51 + .../Permissions/CSwingDrillPermission.f90 | 59 + .../CSwingDrillPermissionVariables.f90 | 49 + .../Permissions/CSwingOffPermission.f90 | 67 + .../CSwingOffPermissionVariables.f90 | 48 + .../Permissions/CSwingTiltPermission.f90 | 52 + .../CSwingTiltPermissionVariables.f90 | 50 + .../SoftwareInputs/CHookHeight.f90 | 37 + .../SoftwareInputs/CIbopHeight.f90 | 58 + .../SoftwareInputs/CNearFloorConnection.f90 | 60 + .../SoftwareInputs/CSafetyValveHeight.f90 | 59 + .../SoftwareInputs/CSlackOff.f90 | 54 + .../SoftwareInputs/CStandRack.f90 | 38 + .../SoftwareInputs/CStringPressure.f90 | 57 + .../SoftwareInputs/CTdsStemJointHeight.f90 | 55 + .../SoftwareInputs/CZeroStringSpeed.f90 | 60 + .../SoftwareOutputs/CStringUpdate.f90 | 33 + .../CStringUpdateVariables.f90 | 70 + .../Test/TestOperationScenarios.f90 | 831 ++ .../Test/TestOperationScenariosVariables.f90 | 96 + .../OperationScenarios/Unity/CUnityInputs.f90 | 632 + .../Unity/CUnityOutputs.f90 | 627 + .../UnitySignals/CBucketEnum.f90 | 93 + .../UnitySignals/CBucketEnumVariables.f90 | 79 + .../UnitySignals/CElevatorEnum.f90 | 48 + .../UnitySignals/CElevatorEnumVariables.f90 | 220 + .../UnitySignals/CFlowKellyDisconnectEnum.f90 | 29 + .../CFlowKellyDisconnectEnumVariables.f90 | 60 + .../UnitySignals/CFlowPipeDisconnectEnum.f90 | 29 + .../CFlowPipeDisconnectEnumVariables.f90 | 70 + .../UnitySignals/CHeadEnum.f90 | 150 + .../UnitySignals/CHeadEnumVariables.f90 | 90 + .../UnitySignals/CIbopEnum.f90 | 33 + .../UnitySignals/CIbopEnumVariables.f90 | 85 + .../UnitySignals/CKellyEnum.f90 | 69 + .../UnitySignals/CKellyEnumVariables.f90 | 79 + .../UnitySignals/CMouseHoleEnum.f90 | 39 + .../UnitySignals/CMouseHoleEnumVariables.f90 | 83 + .../UnitySignals/COperationConditionEnum.f90 | 147 + .../COperationConditionEnumVariables.f90 | 84 + .../UnitySignals/CSafetyValveEnum.f90 | 32 + .../CSafetyValveEnumVariables.f90 | 101 + .../UnitySignals/CSlipsEnum.f90 | 152 + .../UnitySignals/CSlipsEnumVariables.f90 | 108 + .../UnitySignals/CSwingEnum.f90 | 233 + .../UnitySignals/CSwingEnumVariables.f90 | 135 + .../UnitySignals/CTdsBackupClamp.f90 | 57 + .../UnitySignals/CTdsBackupClampVariables.f90 | 83 + .../UnitySignals/CTdsSpineEnum.f90 | 61 + .../UnitySignals/CTdsSpineEnumVariables.f90 | 84 + .../UnitySignals/CTdsSwingEnum.f90 | 140 + .../UnitySignals/CTdsSwingEnumVariables.f90 | 97 + .../UnitySignals/CTdsTongEnum.f90 | 64 + .../UnitySignals/CTdsTongEnumVariables.f90 | 86 + .../UnitySignals/CTongEnum.f90 | 189 + .../UnitySignals/CTongEnumVariables.f90 | 129 + CSharp/Problems/CBitProblems.f90 | 65 + CSharp/Problems/CBitProblemsVariables.f90 | 95 + CSharp/Problems/CBopProblems.f90 | 217 + CSharp/Problems/CBopProblemsVariables.f90 | 417 + CSharp/Problems/CChokeProblems.f90 | 221 + CSharp/Problems/CChokeProblemsVariables.f90 | 367 + CSharp/Problems/CDrillStemProblems.f90 | 69 + .../Problems/CDrillStemProblemsVariables.f90 | 113 + CSharp/Problems/CGaugesProblems.f90 | 307 + CSharp/Problems/CGaugesProblemsVariables.f90 | 585 + CSharp/Problems/CHoistingProblems.f90 | 47 + .../Problems/CHoistingProblemsVariables.f90 | 116 + CSharp/Problems/CKickProblems.f90 | 76 + CSharp/Problems/CKickProblemsVariables.f90 | 86 + CSharp/Problems/CLostProblems.f90 | 32 + CSharp/Problems/CLostProblemsVariables.f90 | 73 + CSharp/Problems/CMudTreatmentProblems.f90 | 60 + .../CMudTreatmentProblemsVariables.f90 | 154 + CSharp/Problems/COtherProblems.f90 | 151 + CSharp/Problems/COtherProblemsVariables.f90 | 300 + CSharp/Problems/CProblemDifinition.f90 | 154 + CSharp/Problems/CPumpProblems.f90 | 86 + CSharp/Problems/CPumpProblemsVariables.f90 | 208 + CSharp/Problems/CRotaryProblems.f90 | 34 + CSharp/Problems/CRotaryProblemsVariables.f90 | 106 + CSharp/Simulation/CSimulation.f90 | 1080 ++ CSharp/Simulation/CSimulationThreads.f90 | 146 + CSharp/Simulation/CSimulationVariables.f90 | 1211 ++ CSharp/Simulation/CSounds.f90 | 683 + CSharp/StudentStation/CStudentStation.f90 | 98 + .../CStudentStationVariables.f90 | 21 + CSharp/Warnings/CWarnings.f90 | 6 + CSharp/Warnings/CWarningsActions.f90 | 224 + CSharp/Warnings/CWarningsVariables.f90 | 1031 ++ CSimulationVariables.f90 | 1211 ++ CSounds.f90 | 683 + Common/DynamicDoubleArray.f90 | 157 + Common/DynamicIntegerArray.f90 | 158 + Common/DynamicLogicalArray.f90 | 157 + Common/DynamicRealArray.f90 | 157 + Common/json-fortran/json_file_module.F90 | 3040 ++++ .../json-fortran/json_get_scalar_by_path.inc | 32 + Common/json-fortran/json_get_vec_by_path.inc | 27 + .../json_get_vec_by_path_alloc.inc | 43 + .../json_initialize_arguments.inc | 114 + .../json_initialize_dummy_arguments.inc | 25 + Common/json-fortran/json_kinds.F90 | 148 + Common/json-fortran/json_macros.inc | 58 + Common/json-fortran/json_module.F90 | 104 + Common/json-fortran/json_parameters.F90 | 144 + Common/json-fortran/json_string_utilities.F90 | 932 ++ Common/json-fortran/json_value_module.F90 | 11549 ++++++++++++++++ Equipments/BopStack/ANNULAR.f90 | 427 + Equipments/BopStack/AnnularMain.f90 | 65 + Equipments/BopStack/BOP.f90 | 299 + Equipments/BopStack/BOPstartup.f90 | 324 + Equipments/BopStack/BlindRamsMain.f90 | 68 + Equipments/BopStack/BopStackMain.f90 | 10 + Equipments/BopStack/CHOKE_LINE.f90 | 309 + Equipments/BopStack/ChokeLineMain.f90 | 69 + Equipments/BopStack/KILL_LINE.f90 | 308 + Equipments/BopStack/KillLineMain.f90 | 68 + Equipments/BopStack/LOSS_INPUTS.f90 | 1269 ++ Equipments/BopStack/PIPE_RAM1.f90 | 376 + Equipments/BopStack/PIPE_RAM2.f90 | 397 + Equipments/BopStack/PipeRams1Main.f90 | 68 + Equipments/BopStack/PipeRams2Main.f90 | 68 + Equipments/BopStack/SHEAR_RAM.f90 | 396 + Equipments/BopStack/VARIABLES.f90 | 212 + Equipments/BopStack/bopstackmain.mod | Bin 0 -> 289 bytes .../ChokeControl/AirPump_Choke_Subs.f90 | 454 + Equipments/ChokeControl/CHOKE.f90 | 207 + Equipments/ChokeControl/CHOKE_VARIABLES.f90 | 106 + Equipments/ChokeControl/ChokeControlMain.f90 | 60 + Equipments/ChokeControl/ChokeStartup.f90 | 137 + Equipments/Drawworks/DWBrakeSound.f90 | 91 + Equipments/Drawworks/DWFixModeMotion.f90 | 28 + .../DWMalfunction_ClutchDisengage.f90 | 19 + .../Drawworks/DWMalfunction_ClutchEngage.f90 | 55 + .../Drawworks/DWMalfunction_MotorFailure.f90 | 20 + Equipments/Drawworks/DrawworksMain.f90 | 171 + .../Drawworks/Drawworks_Diff_Equations.f90 | 218 + Equipments/Drawworks/Drawworks_Direction.f90 | 119 + .../Drawworks_Free_Traction_motor.f90 | 86 + .../Drawworks_Free_Traction_motor_Dir.f90 | 61 + ...wworks_Free_Traction_motor_dawn_motion.f90 | 86 + Equipments/Drawworks/Drawworks_INPUTS.f90 | 250 + Equipments/Drawworks/Drawworks_Solver.f90 | 379 + .../Drawworks_Solver_FreeTractionMotor.f90 | 336 + Equipments/Drawworks/Drawworks_StartUp.f90 | 102 + .../Drawworks_Traction_motor_ClutchMode.f90 | 161 + ...rawworks_Traction_motor_ClutchMode_Dir.f90 | 137 + .../Drawworks_Traction_motor_dawnmotion.f90 | 154 + ...rawworks_Traction_motor_dawnmotion_Dir.f90 | 139 + Equipments/Drawworks/Drawworks_VARIABLES.f90 | 83 + Equipments/DrillingConsole_ScrLEDs.f90 | 49 + .../MudSystem/Circulation_Code_Select.f90 | 158 + .../Deallocate_Normal_Circulation.f90 | 189 + Equipments/MudSystem/Disconnecting_Pipe.f90 | 108 + Equipments/MudSystem/Elements_Creation.f90 | 274 + .../MudSystem/FillingWell_By_BellNipple.f90 | 215 + .../Kick_Expansion_and_Contraction.f90 | 235 + Equipments/MudSystem/Kick_Influx.f90 | 215 + Equipments/MudSystem/Kick_Migration.f90 | 1181 ++ Equipments/MudSystem/MudSystem.f90 | 3553 +++++ Equipments/MudSystem/MudSystemMain.f90 | 85 + Equipments/MudSystem/MudSystemStartup.f90 | 501 + Equipments/MudSystem/MudSystem_Variables.f90 | 232 + .../MudSystem/Plot_Final_Mud_Elements.f90 | 412 + Equipments/MudSystem/Pump_and_Trip_In.f90 | 1626 +++ Equipments/MudSystem/Trip_Out_andPump.f90 | 1366 ++ Equipments/MudSystem/Utube1_and_Trip_In.f90 | 532 + Equipments/MudSystem/Utube2_and_Trip_In.f90 | 517 + Equipments/PowerLimits.f90 | 44 + Equipments/Pumps.old/ON_mode_simulation.f90 | 80 + Equipments/Pumps.old/Off_mode_Simulation.f90 | 51 + Equipments/Pumps.old/Pump1_OffMode_Solver.f90 | 68 + Equipments/Pumps.old/Pump1_OnMode_Solver.f90 | 120 + Equipments/Pumps.old/Pump2_OffMode_Solver.f90 | 69 + Equipments/Pumps.old/Pump2_OnMode_Solver.f90 | 108 + Equipments/Pumps.old/Pump3_OffMode_Solver.f90 | 55 + Equipments/Pumps.old/Pump3_OnMode_Solver.f90 | 57 + Equipments/Pumps.old/Pump_INPUTS.f90 | 59 + Equipments/Pumps.old/Pump_Solver.f90 | 29 + Equipments/Pumps.old/Pump_StartUp.f90 | 52 + Equipments/Pumps.old/Pump_Total_Counts.f90 | 11 + Equipments/Pumps.old/Pump_Traction_Motor.f90 | 124 + Equipments/Pumps.old/Pump_VARIABLES.f90 | 61 + Equipments/Pumps.old/PumpsMain.f90 | 719 + Equipments/Pumps.old/pump_diff_eqs.f90 | 105 + Equipments/Pumps.rar | Bin 0 -> 13110 bytes Equipments/Pumps.rar.old | Bin 0 -> 15312 bytes Equipments/Pumps/ON_mode_simulation.f90 | 80 + Equipments/Pumps/Off_mode_Simulation.f90 | 51 + Equipments/Pumps/Pump1_MainSolver.f90 | 109 + Equipments/Pumps/Pump1_OffMode_Solver.f90 | 66 + Equipments/Pumps/Pump1_OnMode_Solver.f90 | 120 + Equipments/Pumps/Pump2_MainSolver.f90 | 76 + Equipments/Pumps/Pump2_OffMode_Solver.f90 | 67 + Equipments/Pumps/Pump2_OnMode_Solver.f90 | 108 + Equipments/Pumps/Pump3_OffMode_Solver.f90 | 54 + Equipments/Pumps/Pump3_OnMode_Solver.f90 | 57 + Equipments/Pumps/Pump_INPUTS.f90 | 59 + Equipments/Pumps/Pump_Solver.f90 | 29 + Equipments/Pumps/Pump_StartUp.f90 | 73 + Equipments/Pumps/Pump_Total_Counts.f90 | 17 + Equipments/Pumps/Pump_Traction_Motor.f90 | 124 + Equipments/Pumps/Pump_VARIABLES.f90 | 64 + Equipments/Pumps/PumpsMain.f90 | 249 + Equipments/Pumps/pump_diff_eqs.f90 | 105 + .../RTMalfunction_MotorFailure.f90 | 17 + Equipments/RotaryTable/RTTorqueLimit.f90 | 25 + Equipments/RotaryTable/RTable_INPUTS.f90 | 90 + Equipments/RotaryTable/RTable_OffMode.f90 | 81 + Equipments/RotaryTable/RTable_Solver.f90 | 128 + Equipments/RotaryTable/RTable_StartUp.f90 | 42 + .../RotaryTable/RTable_Traction_Motor.f90 | 141 + Equipments/RotaryTable/RTable_VARIABLES.f90 | 61 + Equipments/RotaryTable/RTable_diff_eqs.f90 | 126 + Equipments/RotaryTable/RotaryTableMain.f90 | 204 + Equipments/RotaryTable/rtable_variables.mod | Bin 0 -> 2040 bytes Equipments/TopDrive/TopDriveMain.f90 | 179 + Equipments/TopDrive/TopDrive_INPUTS.f90 | 50 + .../TopDrive_Malfunction_MotorFailure.f90 | 17 + Equipments/TopDrive/TopDrive_OffMode.f90 | 80 + Equipments/TopDrive/TopDrive_Solver.f90 | 314 + Equipments/TopDrive/TopDrive_StartUp.f90 | 46 + Equipments/TopDrive/TopDrive_TorqueLimit.f90 | 25 + .../TopDrive/TopDrive_Traction_Motor.f90 | 139 + Equipments/TopDrive/TopDrive_VARIABLES.f90 | 61 + Equipments/TopDrive/TopDrive_diff_eqs.f90 | 124 + Equipments/TopDrive/topdrive_variables.mod | Bin 0 -> 2005 bytes Equipments/equipments_PowerLimit.f90 | 60 + FluidFlow/Annulus_Property_Calculator.f90 | 45 + ...lus_and_Openhole_Pressure_Distribution.f90 | 337 + FluidFlow/Flow_Startup.f90 | 118 + FluidFlow/Flow_Startup_VARIABLES.f90 | 62 + FluidFlow/FluidFlowMain.f90 | 147 + FluidFlow/Fluid_Flow_Solver.f90 | 58 + FluidFlow/Frictional_Press_Drop_Calc.f90 | 230 + ...ontal_and_String_Pressure_Distribution.f90 | 799 ++ FluidFlow/Pressure_Display_VARIABLES.f90 | 32 + FluidFlow/Pressure_Distribution_VARIABLES.f90 | 178 + FluidFlow/String_Property_Calculator.f90 | 31 + FluidFlow/Utube.f90 | 117 + FluidFlow/Well_Pressure_Data_Transfer.f90 | 776 ++ FluidFlow/fricpressdropvars.mod | Bin 0 -> 3086 bytes FluidFlow/kick/Formation_Information.f90 | 124 + FluidFlow/kick/Gas_Kick_Calculator.f90 | 566 + FluidFlow/kick/Kick_VARIABLES.f90 | 95 + FluidFlow/utubevars.mod | Bin 0 -> 318 bytes Geo/GeoMain.f90 | 297 + ReadMe.txt | 25 + Rop/Bit_Database.txt | 15 + Rop/Bit_Specification.f90 | 77 + Rop/JetImpactForce.f90 | 31 + Rop/ROP_MainCalculation.f90 | 239 + Rop/ROP_StartUp.f90 | 12 + Rop/RopMain.f90 | 38 + Rop/sROP_Module.f90 | 187 + Rop/sROP_Other_Variables.f90 | 31 + Rop/sROP_Variables.f90 | 10 + Rop/srop_other_variables.mod | Bin 0 -> 1179 bytes Rop/srop_variables.mod | Bin 0 -> 740 bytes SimulationCore2.f90 | 30 + SimulationCore2.sln | 31 + SimulationCore2.u2d | Bin 0 -> 748 bytes SimulationCore2.vfproj | 511 + Simulator.f90 | 150 + Text1.txt | 1 + .../MeshGeneration_FluidModule.f90 | 516 + .../TD_DrillingSubs/TD_AddComponents.f90 | 314 + .../TD_DrillingSubs/TD_BOPDiamCalculation.f90 | 180 + .../TD_DrillStemConfiguration.f90 | 316 + .../TD_DrillingSubs/TD_RemoveComponents.f90 | 357 + .../TD_StringConnectionModes.f90 | 828 ++ .../TD_WellElementsConfiguration.f90 | 28 + .../TD_WellGeoConfiguration.f90 | 51 + TorqueDrag/TD_DrillingSubs/TVD_Calculator.f90 | 78 + TorqueDrag/TD_Forces/TD_BouyancyFactor.f90 | 32 + .../TD_Forces/TD_BuildArea/TD_ForceDownB.f90 | 65 + .../TD_BuildArea/TD_ForceDownBRot.f90 | 56 + .../TD_Forces/TD_BuildArea/TD_ForceUpB.f90 | 75 + .../TD_Forces/TD_BuildArea/TD_ForceUpBRot.f90 | 56 + .../TD_Forces/TD_CombinedMotionData.f90 | 21 + .../TD_Forces/TD_DropArea/TD_ForceDownD.f90 | 61 + .../TD_DropArea/TD_ForceDownDRot.f90 | 56 + .../TD_Forces/TD_DropArea/TD_ForceUpD.f90 | 68 + .../TD_Forces/TD_DropArea/TD_ForceUpDRot.f90 | 55 + TorqueDrag/TD_Forces/TD_ForceCalculation.f90 | 138 + .../TD_Forces/TD_HookLoadCalculation.f90 | 285 + .../TD_StaticHookLoadCalculation.f90 | 71 + .../TD_StraightArea/TD_ForceDownS.f90 | 64 + .../TD_StraightArea/TD_ForceDownSRot.f90 | 60 + .../TD_Forces/TD_StraightArea/TD_ForceUpS.f90 | 65 + .../TD_StraightArea/TD_ForceUpSRot.f90 | 59 + TorqueDrag/TD_Forces/TD_StrainCalculation.f90 | 54 + TorqueDrag/TD_Forces/TD_TorqueCalculation.f90 | 42 + .../TD_ViscousDragForce.f90 | 176 + .../TD_Forces/TD_WeightOnBitCalculation.f90 | 40 + TorqueDrag/TD_MainCalculations.f90 | 180 + .../TD_Modules/GeoElements_FluidModule.f90 | 58 + TorqueDrag/TD_Modules/TD_DrillStem.f90 | 128 + TorqueDrag/TD_Modules/TD_GeneralData.f90 | 51 + .../TD_Modules/TD_StringConnectionData.f90 | 47 + TorqueDrag/TD_Modules/TD_WellElements.f90 | 80 + TorqueDrag/TD_Modules/TD_WellGeometry.f90 | 32 + TorqueDrag/TD_Modules/td_wellgeometry.mod | Bin 0 -> 1354 bytes .../TD_DrillStemReadData.f90 | 145 + .../TD_ForceReadData.f90 | 61 + .../TD_MudPropertiesReadData.f90 | 96 + .../TD_PipePropertiesReadData.f90 | 26 + .../TD_WellElementsReadData.f90 | 132 + .../TD_WellReadData.f90 | 111 + TorqueDrag/TD_StartUp/TD_DrillStemStartUp.f90 | 81 + TorqueDrag/TD_StartUp/TD_StartUp.f90 | 155 + TorqueDrag/TorqueDragMain.f90 | 46 + config.json | 14 + lib/x64/json_file_module.mod | Bin 0 -> 223777 bytes lib/x64/json_kinds.mod | Bin 0 -> 2480 bytes lib/x64/json_module.mod | Bin 0 -> 3616 bytes lib/x64/json_parameters.mod | Bin 0 -> 13487 bytes lib/x64/json_string_utilities.mod | Bin 0 -> 9704 bytes lib/x64/json_value_module.mod | Bin 0 -> 145492 bytes lib/x64/libjsonfortrand.lib | Bin 0 -> 1953774 bytes x64/Debug/ANNULAR.obj | Bin 0 -> 17143 bytes x64/Debug/AirPump_Choke_Subs.obj | Bin 0 -> 103411 bytes x64/Debug/AnnularMain.obj | Bin 0 -> 12370 bytes x64/Debug/Annulus_Property_Calculator.obj | Bin 0 -> 11516 bytes ...lus_and_Openhole_Pressure_Distribution.obj | Bin 0 -> 123844 bytes x64/Debug/BOP.obj | Bin 0 -> 28335 bytes x64/Debug/BOPstartup.obj | Bin 0 -> 41492 bytes x64/Debug/Bit_Specification.obj | Bin 0 -> 5931 bytes x64/Debug/BlindRamsMain.obj | Bin 0 -> 12499 bytes x64/Debug/BopStackMain.obj | Bin 0 -> 2964 bytes x64/Debug/BuildLog.htm | Bin 0 -> 41010 bytes x64/Debug/CAccumulator.obj | Bin 0 -> 18246 bytes x64/Debug/CAccumulatorVariables.obj | Bin 0 -> 3734 bytes x64/Debug/CArrangement.obj | Bin 0 -> 20441 bytes x64/Debug/CBitProblems.obj | Bin 0 -> 10674 bytes x64/Debug/CBitProblemsVariables.obj | Bin 0 -> 10773 bytes x64/Debug/CBoolEventHandler.obj | Bin 0 -> 5020 bytes x64/Debug/CBoolEventHandlerCollection.obj | Bin 0 -> 26014 bytes x64/Debug/CBopControlPanel.obj | Bin 0 -> 75420 bytes x64/Debug/CBopControlPanelVariables.obj | Bin 0 -> 15346 bytes x64/Debug/CBopProblems.obj | Bin 0 -> 55146 bytes x64/Debug/CBopProblemsVariables.obj | Bin 0 -> 50231 bytes x64/Debug/CBopStack.obj | Bin 0 -> 35211 bytes x64/Debug/CBopStackVariables.obj | Bin 0 -> 5214 bytes x64/Debug/CBucketEnum.obj | Bin 0 -> 7157 bytes x64/Debug/CBucketEnumVariables.obj | Bin 0 -> 10289 bytes x64/Debug/CCasingLinerChoke.obj | Bin 0 -> 26898 bytes x64/Debug/CCasingLinerChokeVariables.obj | Bin 0 -> 4327 bytes x64/Debug/CChokeControlPanel.obj | Bin 0 -> 28839 bytes x64/Debug/CChokeControlPanelVariables.obj | Bin 0 -> 4367 bytes x64/Debug/CChokeManifold.obj | Bin 0 -> 31457 bytes x64/Debug/CChokeManifoldVariables.obj | Bin 0 -> 7994 bytes x64/Debug/CChokeProblems.obj | Bin 0 -> 57875 bytes x64/Debug/CChokeProblemsVariables.obj | Bin 0 -> 44400 bytes x64/Debug/CCloseKellyCockLedNotification.obj | Bin 0 -> 6152 bytes ...CloseKellyCockLedNotificationVariables.obj | Bin 0 -> 8965 bytes .../CCloseSafetyValveLedNotification.obj | Bin 0 -> 8588 bytes ...oseSafetyValveLedNotificationVariables.obj | Bin 0 -> 9971 bytes x64/Debug/CCommon.obj | Bin 0 -> 8476 bytes x64/Debug/CCommonVariables.obj | Bin 0 -> 2640 bytes x64/Debug/CDataDisplayConsole.obj | Bin 0 -> 424206 bytes x64/Debug/CDataDisplayConsoleVariables.obj | Bin 0 -> 32055 bytes x64/Debug/CDoubleEventHandler.obj | Bin 0 -> 5369 bytes x64/Debug/CDoubleEventHandlerCollection.obj | Bin 0 -> 26124 bytes x64/Debug/CDownHole.obj | Bin 0 -> 56129 bytes x64/Debug/CDownHoleActions.obj | Bin 0 -> 8247 bytes x64/Debug/CDownHoleTypes.obj | Bin 0 -> 2124 bytes x64/Debug/CDownHoleVariables.obj | Bin 0 -> 44879 bytes x64/Debug/CDrillStemProblems.obj | Bin 0 -> 14549 bytes x64/Debug/CDrillStemProblemsVariables.obj | Bin 0 -> 13639 bytes x64/Debug/CDrillWatch.obj | Bin 0 -> 33745 bytes x64/Debug/CDrillWatchVariables.obj | Bin 0 -> 4471 bytes x64/Debug/CDrillingConsole.obj | Bin 0 -> 315340 bytes x64/Debug/CDrillingConsoleVariables.obj | Bin 0 -> 13679 bytes x64/Debug/CElevatorConnectionEnum.obj | Bin 0 -> 27481 bytes .../CElevatorConnectionEnumVariables.obj | Bin 0 -> 9162 bytes x64/Debug/CElevatorEnum.obj | Bin 0 -> 3554 bytes x64/Debug/CElevatorEnumVariables.obj | Bin 0 -> 19035 bytes x64/Debug/CEquipmentsConstants.obj | Bin 0 -> 2709 bytes x64/Debug/CError.obj | Bin 0 -> 18373 bytes x64/Debug/CFillMouseHoleLedNotification.obj | Bin 0 -> 6698 bytes ...CFillMouseHoleLedNotificationVariables.obj | Bin 0 -> 8878 bytes x64/Debug/CFillupHeadPermission.obj | Bin 0 -> 5444 bytes x64/Debug/CFillupHeadPermissionVariables.obj | Bin 0 -> 9172 bytes x64/Debug/CFlowKellyDisconnectEnum.obj | Bin 0 -> 3777 bytes .../CFlowKellyDisconnectEnumVariables.obj | Bin 0 -> 2275 bytes x64/Debug/CFlowPipeDisconnectEnum.obj | Bin 0 -> 3744 bytes .../CFlowPipeDisconnectEnumVariables.obj | Bin 0 -> 2266 bytes x64/Debug/CFormation.obj | Bin 0 -> 10146 bytes x64/Debug/CFormationVariables.obj | Bin 0 -> 2717 bytes x64/Debug/CGaugesProblems.obj | Bin 0 -> 85874 bytes x64/Debug/CGaugesProblemsVariables.obj | Bin 0 -> 71485 bytes x64/Debug/CHOKE.obj | Bin 0 -> 13129 bytes x64/Debug/CHOKE_LINE.obj | Bin 0 -> 17437 bytes x64/Debug/CHOKE_VARIABLES.obj | Bin 0 -> 16891 bytes x64/Debug/CHeadEnum.obj | Bin 0 -> 8514 bytes x64/Debug/CHeadEnumVariables.obj | Bin 0 -> 10277 bytes x64/Debug/CHoisting.obj | Bin 0 -> 11828 bytes x64/Debug/CHoistingProblems.obj | Bin 0 -> 10462 bytes x64/Debug/CHoistingProblemsVariables.obj | Bin 0 -> 13690 bytes x64/Debug/CHoistingVariables.obj | Bin 0 -> 3379 bytes x64/Debug/CHook.obj | Bin 0 -> 2108 bytes x64/Debug/CHookActions.obj | Bin 0 -> 3166 bytes x64/Debug/CHookHeight.obj | Bin 0 -> 10064 bytes x64/Debug/CHookVariables.obj | Bin 0 -> 9817 bytes x64/Debug/CIActionReference.obj | Bin 0 -> 2139 bytes x64/Debug/CIbopEnum.obj | Bin 0 -> 3482 bytes x64/Debug/CIbopEnumVariables.obj | Bin 0 -> 11049 bytes x64/Debug/CIbopHeight.obj | Bin 0 -> 9089 bytes x64/Debug/CInstallFillupHeadPermission.obj | Bin 0 -> 6547 bytes .../CInstallFillupHeadPermissionVariables.obj | Bin 0 -> 9547 bytes x64/Debug/CInstallMudBucketPermission.obj | Bin 0 -> 3860 bytes .../CInstallMudBucketPermissionVariables.obj | Bin 0 -> 9502 bytes x64/Debug/CIntegerArrayEventHandler.obj | Bin 0 -> 5280 bytes .../CIntegerArrayEventHandlerCollection.obj | Bin 0 -> 26495 bytes x64/Debug/CIntegerEventHandler.obj | Bin 0 -> 5095 bytes x64/Debug/CIntegerEventHandlerCollection.obj | Bin 0 -> 26171 bytes x64/Debug/CIrIBopLedNotification.obj | Bin 0 -> 6761 bytes x64/Debug/CIrIBopLedNotificationVariables.obj | Bin 0 -> 8828 bytes x64/Debug/CIrIbopPermission.obj | Bin 0 -> 7269 bytes x64/Debug/CIrIbopPermissionVariables.obj | Bin 0 -> 8968 bytes x64/Debug/CIrSafetyValveLedNotification.obj | Bin 0 -> 9339 bytes ...CIrSafetyValveLedNotificationVariables.obj | Bin 0 -> 11909 bytes x64/Debug/CIrSafetyValvePermission.obj | Bin 0 -> 7418 bytes .../CIrSafetyValvePermissionVariables.obj | Bin 0 -> 9335 bytes x64/Debug/CKellyConnectionEnum.obj | Bin 0 -> 10723 bytes x64/Debug/CKellyConnectionEnumVariables.obj | Bin 0 -> 9166 bytes x64/Debug/CKellyEnum.obj | Bin 0 -> 3499 bytes x64/Debug/CKellyEnumVariables.obj | Bin 0 -> 9976 bytes x64/Debug/CKickProblems.obj | Bin 0 -> 13248 bytes x64/Debug/CKickProblemsVariables.obj | Bin 0 -> 8887 bytes x64/Debug/CLatchLedNotification.obj | Bin 0 -> 12279 bytes x64/Debug/CLatchLedNotificationVariables.obj | Bin 0 -> 8458 bytes x64/Debug/CLesson.obj | Bin 0 -> 3466 bytes x64/Debug/CLessonVariables.obj | Bin 0 -> 2388 bytes x64/Debug/CLog1.obj | Bin 0 -> 10164 bytes x64/Debug/CLog2.obj | Bin 0 -> 10164 bytes x64/Debug/CLog3.obj | Bin 0 -> 10164 bytes x64/Debug/CLog4.obj | Bin 0 -> 10164 bytes x64/Debug/CLog5.obj | Bin 0 -> 10164 bytes x64/Debug/CLostProblems.obj | Bin 0 -> 6464 bytes x64/Debug/CLostProblemsVariables.obj | Bin 0 -> 7946 bytes x64/Debug/CManifolds.obj | Bin 0 -> 353608 bytes x64/Debug/CMouseHoleEnum.obj | Bin 0 -> 3571 bytes x64/Debug/CMouseHoleEnumVariables.obj | Bin 0 -> 10974 bytes x64/Debug/CMudProperties.obj | Bin 0 -> 72279 bytes x64/Debug/CMudPropertiesVariables.obj | Bin 0 -> 14493 bytes x64/Debug/CMudTreatmentProblems.obj | Bin 0 -> 13091 bytes x64/Debug/CMudTreatmentProblemsVariables.obj | Bin 0 -> 15419 bytes x64/Debug/CNearFloorConnection.obj | Bin 0 -> 9604 bytes x64/Debug/COpenKellyCockLedNotification.obj | Bin 0 -> 6127 bytes ...COpenKellyCockLedNotificationVariables.obj | Bin 0 -> 8890 bytes x64/Debug/COpenSafetyValveLedNotification.obj | Bin 0 -> 8527 bytes ...penSafetyValveLedNotificationVariables.obj | Bin 0 -> 9920 bytes x64/Debug/COperationConditionEnum.obj | Bin 0 -> 9416 bytes .../COperationConditionEnumVariables.obj | Bin 0 -> 13483 bytes x64/Debug/COperationScenariosMain.obj | Bin 0 -> 24009 bytes x64/Debug/COperationScenariosSettings.obj | Bin 0 -> 9962 bytes x64/Debug/COperationScenariosVariables.obj | Bin 0 -> 6009 bytes x64/Debug/COtherProblems.obj | Bin 0 -> 33637 bytes x64/Debug/COtherProblemsVariables.obj | Bin 0 -> 31331 bytes x64/Debug/CPath.obj | Bin 0 -> 40735 bytes x64/Debug/CPathChangeEvents.obj | Bin 0 -> 3088 bytes x64/Debug/CPathGeneration.obj | Bin 0 -> 16438 bytes x64/Debug/CPathGenerationVariables.obj | Bin 0 -> 3273 bytes x64/Debug/CPower.obj | Bin 0 -> 11710 bytes x64/Debug/CPowerVariables.obj | Bin 0 -> 3093 bytes x64/Debug/CProblemDifinition.obj | Bin 0 -> 10365 bytes x64/Debug/CPumpProblems.obj | Bin 0 -> 19689 bytes x64/Debug/CPumpProblemsVariables.obj | Bin 0 -> 21657 bytes x64/Debug/CPumps.obj | Bin 0 -> 100036 bytes x64/Debug/CPumpsVariables.obj | Bin 0 -> 30385 bytes x64/Debug/CQuery.obj | Bin 0 -> 2271 bytes x64/Debug/CRealEventHandler.obj | Bin 0 -> 5020 bytes x64/Debug/CRealEventHandlerCollection.obj | Bin 0 -> 26014 bytes x64/Debug/CRemoveFillupHeadPermission.obj | Bin 0 -> 3860 bytes .../CRemoveFillupHeadPermissionVariables.obj | Bin 0 -> 9502 bytes x64/Debug/CRemoveMudBucketPermission.obj | Bin 0 -> 3843 bytes .../CRemoveMudBucketPermissionVariables.obj | Bin 0 -> 9457 bytes x64/Debug/CReservoir.obj | Bin 0 -> 21357 bytes x64/Debug/CReservoirVariables.obj | Bin 0 -> 4308 bytes x64/Debug/CRigSize.obj | Bin 0 -> 6387 bytes x64/Debug/CRigSizeVariables.obj | Bin 0 -> 2880 bytes x64/Debug/CRotaryProblems.obj | Bin 0 -> 7691 bytes x64/Debug/CRotaryProblemsVariables.obj | Bin 0 -> 10660 bytes x64/Debug/CSafetyValveEnum.obj | Bin 0 -> 3617 bytes x64/Debug/CSafetyValveEnumVariables.obj | Bin 0 -> 12920 bytes x64/Debug/CSafetyValveHeight.obj | Bin 0 -> 9506 bytes x64/Debug/CScaleRange.obj | Bin 0 -> 3145 bytes x64/Debug/CShoe.obj | Bin 0 -> 8809 bytes x64/Debug/CShoeVariables.obj | Bin 0 -> 2833 bytes x64/Debug/CSimulationThreads.obj | Bin 0 -> 12418 bytes x64/Debug/CSimulationVariables.obj | Bin 0 -> 43214 bytes x64/Debug/CSlackOff.obj | Bin 0 -> 8909 bytes x64/Debug/CSlipsEnum.obj | Bin 0 -> 7138 bytes x64/Debug/CSlipsEnumVariables.obj | Bin 0 -> 11857 bytes x64/Debug/CSlipsNotification.obj | Bin 0 -> 7129 bytes x64/Debug/CSlipsNotificationVariables.obj | Bin 0 -> 10011 bytes x64/Debug/CSounds.obj | Bin 0 -> 58598 bytes x64/Debug/CStack.obj | Bin 0 -> 12021 bytes x64/Debug/CStandPipeManifold.obj | Bin 0 -> 43099 bytes x64/Debug/CStandPipeManifoldVariables.obj | Bin 0 -> 4960 bytes x64/Debug/CStandRack.obj | Bin 0 -> 8814 bytes x64/Debug/CStringConfiguration.obj | Bin 0 -> 13727 bytes x64/Debug/CStringConfigurationVariables.obj | Bin 0 -> 4372 bytes x64/Debug/CStringPressure.obj | Bin 0 -> 9309 bytes x64/Debug/CStringUpdate.obj | Bin 0 -> 3578 bytes x64/Debug/CStringUpdateVariables.obj | Bin 0 -> 8266 bytes x64/Debug/CStudentStation.obj | Bin 0 -> 17432 bytes x64/Debug/CStudentStationVariables.obj | Bin 0 -> 3944 bytes x64/Debug/CSwingDrillPermission.obj | Bin 0 -> 5795 bytes x64/Debug/CSwingDrillPermissionVariables.obj | Bin 0 -> 9172 bytes x64/Debug/CSwingEnum.obj | Bin 0 -> 11430 bytes x64/Debug/CSwingEnumVariables.obj | Bin 0 -> 13576 bytes x64/Debug/CSwingLedNotification.obj | Bin 0 -> 8624 bytes x64/Debug/CSwingLedNotificationVariables.obj | Bin 0 -> 8454 bytes x64/Debug/CSwingOffPermission.obj | Bin 0 -> 6231 bytes x64/Debug/CSwingOffPermissionVariables.obj | Bin 0 -> 9086 bytes x64/Debug/CSwingTiltPermission.obj | Bin 0 -> 5996 bytes x64/Debug/CSwingTiltPermissionVariables.obj | Bin 0 -> 9131 bytes x64/Debug/CTanks.obj | Bin 0 -> 39602 bytes x64/Debug/CTanksVariables.obj | Bin 0 -> 5601 bytes x64/Debug/CTdsBackupClamp.obj | Bin 0 -> 6622 bytes x64/Debug/CTdsBackupClampVariables.obj | Bin 0 -> 10873 bytes x64/Debug/CTdsConnectionModesEnum.obj | Bin 0 -> 7048 bytes .../CTdsConnectionModesEnumVariables.obj | Bin 0 -> 9345 bytes x64/Debug/CTdsElevatorModesEnum.obj | Bin 0 -> 13990 bytes x64/Debug/CTdsElevatorModesEnumVariables.obj | Bin 0 -> 8456 bytes x64/Debug/CTdsIbopLedNotification.obj | Bin 0 -> 5979 bytes .../CTdsIbopLedNotificationVariables.obj | Bin 0 -> 8634 bytes x64/Debug/CTdsPowerLedNotification.obj | Bin 0 -> 5221 bytes .../CTdsPowerLedNotificationVariables.obj | Bin 0 -> 8548 bytes x64/Debug/CTdsSpineEnum.obj | Bin 0 -> 7366 bytes x64/Debug/CTdsSpineEnumVariables.obj | Bin 0 -> 10647 bytes x64/Debug/CTdsStemJointHeight.obj | Bin 0 -> 9553 bytes x64/Debug/CTdsSwingEnum.obj | Bin 0 -> 9878 bytes x64/Debug/CTdsSwingEnumVariables.obj | Bin 0 -> 11563 bytes x64/Debug/CTdsTongEnum.obj | Bin 0 -> 7258 bytes x64/Debug/CTdsTongEnumVariables.obj | Bin 0 -> 10576 bytes x64/Debug/CTdsTorqueWrenchLedNotification.obj | Bin 0 -> 6220 bytes ...dsTorqueWrenchLedNotificationVariables.obj | Bin 0 -> 8907 bytes x64/Debug/CTimer.obj | Bin 0 -> 11384 bytes x64/Debug/CTimerLegacy.obj | Bin 0 -> 4691 bytes x64/Debug/CTongEnum.obj | Bin 0 -> 8950 bytes x64/Debug/CTongEnumVariables.obj | Bin 0 -> 11842 bytes x64/Debug/CTongNotification.obj | Bin 0 -> 24406 bytes x64/Debug/CTongNotificationVariables.obj | Bin 0 -> 9934 bytes x64/Debug/CTopDrivePanel.obj | Bin 0 -> 32193 bytes x64/Debug/CTopDrivePanelVariables.obj | Bin 0 -> 6185 bytes x64/Debug/CUnityInputs.obj | Bin 0 -> 45394 bytes x64/Debug/CUnityOutputs.obj | Bin 0 -> 53584 bytes x64/Debug/CUnlatchLedNotification.obj | Bin 0 -> 22265 bytes .../CUnlatchLedNotificationVariables.obj | Bin 0 -> 8590 bytes x64/Debug/CVoidEventHandler.obj | Bin 0 -> 4996 bytes x64/Debug/CVoidEventHandlerCollection.obj | Bin 0 -> 25982 bytes x64/Debug/CWarnings.obj | Bin 0 -> 2111 bytes x64/Debug/CWarningsActions.obj | Bin 0 -> 22310 bytes x64/Debug/CWarningsVariables.obj | Bin 0 -> 97296 bytes x64/Debug/CWellSurveyData.obj | Bin 0 -> 10986 bytes x64/Debug/CWellSurveyDataVariables.obj | Bin 0 -> 2789 bytes x64/Debug/CZeroStringSpeed.obj | Bin 0 -> 9322 bytes x64/Debug/ChokeControlMain.obj | Bin 0 -> 11437 bytes x64/Debug/ChokeLineMain.obj | Bin 0 -> 12509 bytes x64/Debug/ChokeStartup.obj | Bin 0 -> 12474 bytes x64/Debug/Circulation_Code_Select.obj | Bin 0 -> 17193 bytes x64/Debug/DWBrakeSound.obj | Bin 0 -> 3007 bytes x64/Debug/DWFixModeMotion.obj | Bin 0 -> 2911 bytes x64/Debug/DWMalfunction_ClutchDisengage.obj | Bin 0 -> 2478 bytes x64/Debug/DWMalfunction_ClutchEngage.obj | Bin 0 -> 3437 bytes x64/Debug/DWMalfunction_MotorFailure.obj | Bin 0 -> 2703 bytes x64/Debug/Deallocate_Normal_Circulation.obj | Bin 0 -> 84120 bytes x64/Debug/Disconnecting_Pipe.obj | Bin 0 -> 23718 bytes x64/Debug/DrawworksMain.obj | Bin 0 -> 17421 bytes x64/Debug/Drawworks_Diff_Equations.obj | Bin 0 -> 13988 bytes x64/Debug/Drawworks_Direction.obj | Bin 0 -> 7019 bytes x64/Debug/Drawworks_Free_Traction_motor.obj | Bin 0 -> 9700 bytes .../Drawworks_Free_Traction_motor_Dir.obj | Bin 0 -> 4626 bytes ...wworks_Free_Traction_motor_dawn_motion.obj | Bin 0 -> 9816 bytes x64/Debug/Drawworks_INPUTS.obj | Bin 0 -> 16671 bytes x64/Debug/Drawworks_Solver.obj | Bin 0 -> 25944 bytes .../Drawworks_Solver_FreeTractionMotor.obj | Bin 0 -> 24969 bytes x64/Debug/Drawworks_StartUp.obj | Bin 0 -> 6266 bytes .../Drawworks_Traction_motor_ClutchMode.obj | Bin 0 -> 21419 bytes ...rawworks_Traction_motor_ClutchMode_Dir.obj | Bin 0 -> 16279 bytes .../Drawworks_Traction_motor_dawnmotion.obj | Bin 0 -> 21809 bytes ...rawworks_Traction_motor_dawnmotion_Dir.obj | Bin 0 -> 16053 bytes x64/Debug/Drawworks_VARIABLES.obj | Bin 0 -> 4121 bytes x64/Debug/DrillingConsole_ScrLEDs.obj | Bin 0 -> 4300 bytes x64/Debug/DynamicDoubleArray.obj | Bin 0 -> 32391 bytes x64/Debug/DynamicIntegerArray.obj | Bin 0 -> 32359 bytes x64/Debug/DynamicLogicalArray.obj | Bin 0 -> 32359 bytes x64/Debug/DynamicRealArray.obj | Bin 0 -> 32295 bytes x64/Debug/Elements_Creation.obj | Bin 0 -> 119139 bytes x64/Debug/FillingWell_By_BellNipple.obj | Bin 0 -> 52015 bytes x64/Debug/Flow_Startup.obj | Bin 0 -> 18775 bytes x64/Debug/Flow_Startup_VARIABLES.obj | Bin 0 -> 3646 bytes x64/Debug/FluidFlowMain.obj | Bin 0 -> 11867 bytes x64/Debug/Fluid_Flow_Solver.obj | Bin 0 -> 7254 bytes x64/Debug/Formation_Information.obj | Bin 0 -> 26054 bytes x64/Debug/Frictional_Press_Drop_Calc.obj | Bin 0 -> 145642 bytes x64/Debug/Gas_Kick_Calculator.obj | Bin 0 -> 225711 bytes x64/Debug/GeoElements_FluidModule.obj | Bin 0 -> 4381 bytes x64/Debug/GeoMain.obj | Bin 0 -> 33588 bytes ...ontal_and_String_Pressure_Distribution.obj | Bin 0 -> 190723 bytes x64/Debug/JetImpactForce.obj | Bin 0 -> 3878 bytes x64/Debug/KILL_LINE.obj | Bin 0 -> 17363 bytes x64/Debug/Kick_Expansion_and_Contraction.obj | Bin 0 -> 29733 bytes x64/Debug/Kick_Influx.obj | Bin 0 -> 35529 bytes x64/Debug/Kick_Migration.obj | Bin 0 -> 230708 bytes x64/Debug/Kick_VARIABLES.obj | Bin 0 -> 14666 bytes x64/Debug/KillLineMain.obj | Bin 0 -> 12436 bytes x64/Debug/LOSS_INPUTS.obj | Bin 0 -> 507544 bytes x64/Debug/MeshGeneration_FluidModule.obj | Bin 0 -> 155136 bytes x64/Debug/MudSystem.obj | Bin 0 -> 381364 bytes x64/Debug/MudSystemMain.obj | Bin 0 -> 12473 bytes x64/Debug/MudSystemStartup.obj | Bin 0 -> 113192 bytes x64/Debug/MudSystem_Variables.obj | Bin 0 -> 60883 bytes x64/Debug/ON_mode_simulation.obj | Bin 0 -> 18864 bytes x64/Debug/Off_mode_Simulation.obj | Bin 0 -> 12077 bytes x64/Debug/PIPE_RAM1.obj | Bin 0 -> 18486 bytes x64/Debug/PIPE_RAM2.obj | Bin 0 -> 18486 bytes x64/Debug/PipeRams1Main.obj | Bin 0 -> 12499 bytes x64/Debug/PipeRams2Main.obj | Bin 0 -> 12499 bytes x64/Debug/Plot_Final_Mud_Elements.obj | Bin 0 -> 131050 bytes x64/Debug/PowerLimits.obj | Bin 0 -> 5361 bytes x64/Debug/Pressure_Display_VARIABLES.obj | Bin 0 -> 4142 bytes x64/Debug/Pressure_Distribution_VARIABLES.obj | Bin 0 -> 26842 bytes x64/Debug/Pump1_MainSolver.obj | Bin 0 -> 7537 bytes x64/Debug/Pump1_OffMode_Solver.obj | Bin 0 -> 11643 bytes x64/Debug/Pump1_OnMode_Solver.obj | Bin 0 -> 18755 bytes x64/Debug/Pump2_MainSolver.obj | Bin 0 -> 6198 bytes x64/Debug/Pump2_OffMode_Solver.obj | Bin 0 -> 11728 bytes x64/Debug/Pump2_OnMode_Solver.obj | Bin 0 -> 18773 bytes x64/Debug/Pump3_OffMode_Solver.obj | Bin 0 -> 4350 bytes x64/Debug/Pump3_OnMode_Solver.obj | Bin 0 -> 4334 bytes x64/Debug/Pump_INPUTS.obj | Bin 0 -> 4354 bytes x64/Debug/Pump_Solver.obj | Bin 0 -> 16356 bytes x64/Debug/Pump_StartUp.obj | Bin 0 -> 7682 bytes x64/Debug/Pump_Total_Counts.obj | Bin 0 -> 3280 bytes x64/Debug/Pump_Traction_Motor.obj | Bin 0 -> 87648 bytes x64/Debug/Pump_VARIABLES.obj | Bin 0 -> 3401 bytes x64/Debug/Pump_and_Trip_In.obj | Bin 0 -> 470075 bytes x64/Debug/PumpsMain.obj | Bin 0 -> 35506 bytes x64/Debug/ROP_MainCalculation.obj | Bin 0 -> 26142 bytes x64/Debug/ROP_StartUp.obj | Bin 0 -> 2300 bytes x64/Debug/RTMalfunction_MotorFailure.obj | Bin 0 -> 2642 bytes x64/Debug/RTTorqueLimit.obj | Bin 0 -> 2635 bytes x64/Debug/RTable_INPUTS.obj | Bin 0 -> 9743 bytes x64/Debug/RTable_OffMode.obj | Bin 0 -> 6415 bytes x64/Debug/RTable_Solver.obj | Bin 0 -> 6580 bytes x64/Debug/RTable_StartUp.obj | Bin 0 -> 3693 bytes x64/Debug/RTable_Traction_Motor.obj | Bin 0 -> 15781 bytes x64/Debug/RTable_VARIABLES.obj | Bin 0 -> 3571 bytes x64/Debug/RTable_diff_eqs.obj | Bin 0 -> 7000 bytes x64/Debug/RopMain.obj | Bin 0 -> 9970 bytes x64/Debug/RotaryTableMain.obj | Bin 0 -> 12927 bytes x64/Debug/SHEAR_RAM.obj | Bin 0 -> 18519 bytes x64/Debug/SimulationCore2.exe | Bin 0 -> 6295552 bytes .../SimulationCore2.exe.intermediate.manifest | 10 + x64/Debug/SimulationCore2.exp | Bin 0 -> 154114 bytes x64/Debug/SimulationCore2.lib | Bin 0 -> 263748 bytes x64/Debug/SimulationCore2.obj | Bin 0 -> 3818 bytes x64/Debug/SimulationCore2.pdb | Bin 0 -> 4599808 bytes x64/Debug/Simulator.obj | Bin 0 -> 35512 bytes x64/Debug/String_Property_Calculator.obj | Bin 0 -> 8561 bytes x64/Debug/TD_AddComponents.obj | Bin 0 -> 133031 bytes x64/Debug/TD_BOPDiamCalculation.obj | Bin 0 -> 33982 bytes x64/Debug/TD_BouyancyFactor.obj | Bin 0 -> 11310 bytes x64/Debug/TD_CombinedMotionData.obj | Bin 0 -> 4128 bytes x64/Debug/TD_DrillStem.obj | Bin 0 -> 15320 bytes x64/Debug/TD_DrillStemConfiguration.obj | Bin 0 -> 106870 bytes x64/Debug/TD_DrillStemReadData.obj | Bin 0 -> 47883 bytes x64/Debug/TD_DrillStemStartUp.obj | Bin 0 -> 18442 bytes x64/Debug/TD_ForceCalculation.obj | Bin 0 -> 19043 bytes x64/Debug/TD_ForceDownB.obj | Bin 0 -> 44075 bytes x64/Debug/TD_ForceDownBRot.obj | Bin 0 -> 36498 bytes x64/Debug/TD_ForceDownD.obj | Bin 0 -> 44790 bytes x64/Debug/TD_ForceDownDRot.obj | Bin 0 -> 36490 bytes x64/Debug/TD_ForceDownS.obj | Bin 0 -> 26752 bytes x64/Debug/TD_ForceDownSRot.obj | Bin 0 -> 34515 bytes x64/Debug/TD_ForceReadData.obj | Bin 0 -> 6435 bytes x64/Debug/TD_ForceUpB.obj | Bin 0 -> 58674 bytes x64/Debug/TD_ForceUpBRot.obj | Bin 0 -> 36452 bytes x64/Debug/TD_ForceUpD.obj | Bin 0 -> 59861 bytes x64/Debug/TD_ForceUpDRot.obj | Bin 0 -> 36440 bytes x64/Debug/TD_ForceUpS.obj | Bin 0 -> 28094 bytes x64/Debug/TD_ForceUpSRot.obj | Bin 0 -> 34505 bytes x64/Debug/TD_GeneralData.obj | Bin 0 -> 4473 bytes x64/Debug/TD_HookLoadCalculation.obj | Bin 0 -> 14476 bytes x64/Debug/TD_MainCalculations.obj | Bin 0 -> 14422 bytes x64/Debug/TD_MudPropertiesReadData.obj | Bin 0 -> 15096 bytes x64/Debug/TD_PipePropertiesReadData.obj | Bin 0 -> 4830 bytes x64/Debug/TD_RemoveComponents.obj | Bin 0 -> 128415 bytes x64/Debug/TD_StartUp.obj | Bin 0 -> 19099 bytes x64/Debug/TD_StaticHookLoadCalculation.obj | Bin 0 -> 42225 bytes x64/Debug/TD_StrainCalculation.obj | Bin 0 -> 33895 bytes x64/Debug/TD_StringConnectionData.obj | Bin 0 -> 7374 bytes x64/Debug/TD_StringConnectionModes.obj | Bin 0 -> 45761 bytes x64/Debug/TD_TorqueCalculation.obj | Bin 0 -> 6555 bytes x64/Debug/TD_ViscousDragForce.obj | Bin 0 -> 14418 bytes x64/Debug/TD_WeightOnBitCalculation.obj | Bin 0 -> 4098 bytes x64/Debug/TD_WellElements.obj | Bin 0 -> 3801 bytes x64/Debug/TD_WellElementsConfiguration.obj | Bin 0 -> 7389 bytes x64/Debug/TD_WellElementsReadData.obj | Bin 0 -> 47673 bytes x64/Debug/TD_WellGeoConfiguration.obj | Bin 0 -> 12506 bytes x64/Debug/TD_WellGeometry.obj | Bin 0 -> 2880 bytes x64/Debug/TD_WellReadData.obj | Bin 0 -> 66032 bytes x64/Debug/TVD_Calculator.obj | Bin 0 -> 21890 bytes x64/Debug/TestOperationScenarios.obj | Bin 0 -> 86237 bytes x64/Debug/TestOperationScenariosVariables.obj | Bin 0 -> 14460 bytes x64/Debug/TopDriveMain.obj | Bin 0 -> 15089 bytes x64/Debug/TopDrive_INPUTS.obj | Bin 0 -> 6455 bytes .../TopDrive_Malfunction_MotorFailure.obj | Bin 0 -> 2676 bytes x64/Debug/TopDrive_OffMode.obj | Bin 0 -> 5069 bytes x64/Debug/TopDrive_Solver.obj | Bin 0 -> 13266 bytes x64/Debug/TopDrive_StartUp.obj | Bin 0 -> 3719 bytes x64/Debug/TopDrive_TorqueLimit.obj | Bin 0 -> 2673 bytes x64/Debug/TopDrive_Traction_Motor.obj | Bin 0 -> 15695 bytes x64/Debug/TopDrive_VARIABLES.obj | Bin 0 -> 3629 bytes x64/Debug/TopDrive_diff_eqs.obj | Bin 0 -> 6925 bytes x64/Debug/TorqueDragMain.obj | Bin 0 -> 12620 bytes x64/Debug/Trip_Out_andPump.obj | Bin 0 -> 440274 bytes x64/Debug/Utube.obj | Bin 0 -> 21911 bytes x64/Debug/Utube1_and_Trip_In.obj | Bin 0 -> 177760 bytes x64/Debug/Utube2_and_Trip_In.obj | Bin 0 -> 188416 bytes x64/Debug/VARIABLES.obj | Bin 0 -> 42830 bytes x64/Debug/Well_Pressure_Data_Transfer.obj | Bin 0 -> 290024 bytes x64/Debug/adddynamicarray__genmod.f90 | 11 + x64/Debug/adddynamicarray__genmod.mod | Bin 0 -> 655 bytes x64/Debug/airpump_code__genmod.f90 | 9 + x64/Debug/airpump_code__genmod.mod | Bin 0 -> 373 bytes x64/Debug/airpump_code_choke__genmod.f90 | 10 + x64/Debug/airpump_code_choke__genmod.mod | Bin 0 -> 499 bytes x64/Debug/annular__genmod.f90 | 9 + x64/Debug/annular__genmod.mod | Bin 0 -> 359 bytes x64/Debug/annular_sub__genmod.f90 | 9 + x64/Debug/annular_sub__genmod.mod | Bin 0 -> 367 bytes x64/Debug/annularmain.mod | Bin 0 -> 782 bytes .../annuluspropertycalculator__genmod.f90 | 13 + .../annuluspropertycalculator__genmod.mod | Bin 0 -> 775 bytes x64/Debug/bit_spec__genmod.f90 | 9 + x64/Debug/bit_spec__genmod.mod | Bin 0 -> 349 bytes x64/Debug/bit_specification__genmod.f90 | 9 + x64/Debug/bit_specification__genmod.mod | Bin 0 -> 373 bytes x64/Debug/blindramsmain.mod | Bin 0 -> 796 bytes x64/Debug/bop.mod | Bin 0 -> 457 bytes x64/Debug/bop_code__genmod.f90 | 12 + x64/Debug/bop_code__genmod.mod | Bin 0 -> 670 bytes x64/Debug/bop_codeannular__genmod.f90 | 10 + x64/Debug/bop_codeannular__genmod.mod | Bin 0 -> 480 bytes x64/Debug/bop_startup__genmod.f90 | 9 + x64/Debug/bop_startup__genmod.mod | Bin 0 -> 370 bytes x64/Debug/bopstackmain.mod | Bin 0 -> 564 bytes x64/Debug/caccumulator.mod | Bin 0 -> 5116 bytes x64/Debug/caccumulatorvariables.mod | Bin 0 -> 1390 bytes x64/Debug/calculate_rop__genmod.f90 | 9 + x64/Debug/calculate_rop__genmod.mod | Bin 0 -> 359 bytes x64/Debug/carrangement.mod | Bin 0 -> 4441 bytes x64/Debug/cbitproblems.mod | Bin 0 -> 5420 bytes x64/Debug/cbitproblemsvariables.mod | Bin 0 -> 8444 bytes x64/Debug/cbooleventhandler.mod | Bin 0 -> 2983 bytes x64/Debug/cbooleventhandlercollection.mod | Bin 0 -> 6296 bytes x64/Debug/cbopcontrolpanel.mod | Bin 0 -> 10811 bytes x64/Debug/cbopcontrolpanelvariables.mod | Bin 0 -> 4360 bytes x64/Debug/cbopproblems.mod | Bin 0 -> 13195 bytes x64/Debug/cbopproblemsvariables.mod | Bin 0 -> 22636 bytes x64/Debug/cbopstack.mod | Bin 0 -> 8904 bytes x64/Debug/cbopstackvariables.mod | Bin 0 -> 2476 bytes x64/Debug/cbucketenum.mod | Bin 0 -> 1793 bytes x64/Debug/cbucketenumvariables.mod | Bin 0 -> 7809 bytes x64/Debug/ccasinglinerchoke.mod | Bin 0 -> 6660 bytes x64/Debug/ccasinglinerchokevariables.mod | Bin 0 -> 1723 bytes x64/Debug/cchokecontrolpanel.mod | Bin 0 -> 5856 bytes x64/Debug/cchokecontrolpanelvariables.mod | Bin 0 -> 1707 bytes x64/Debug/cchokemanifold.mod | Bin 0 -> 7401 bytes x64/Debug/cchokemanifoldvariables.mod | Bin 0 -> 7092 bytes x64/Debug/cchokeproblems.mod | Bin 0 -> 13406 bytes x64/Debug/cchokeproblemsvariables.mod | Bin 0 -> 20630 bytes x64/Debug/cclosekellycocklednotification.mod | Bin 0 -> 2251 bytes ...closekellycocklednotificationvariables.mod | Bin 0 -> 7244 bytes .../cclosesafetyvalvelednotification.mod | Bin 0 -> 2488 bytes ...osesafetyvalvelednotificationvariables.mod | Bin 0 -> 7380 bytes x64/Debug/ccommon.mod | Bin 0 -> 4393 bytes x64/Debug/ccommonvariables.mod | Bin 0 -> 3345 bytes x64/Debug/cdatadisplayconsole.mod | Bin 0 -> 31335 bytes x64/Debug/cdatadisplayconsolevariables.mod | Bin 0 -> 18933 bytes x64/Debug/cdoubleeventhandler.mod | Bin 0 -> 3013 bytes x64/Debug/cdoubleeventhandlercollection.mod | Bin 0 -> 6394 bytes x64/Debug/cdownhole.mod | Bin 0 -> 12378 bytes x64/Debug/cdownholeactions.mod | Bin 0 -> 9282 bytes x64/Debug/cdownholetypes.mod | Bin 0 -> 4138 bytes x64/Debug/cdownholevariables.mod | Bin 0 -> 8372 bytes x64/Debug/cdrillingconsole.mod | Bin 0 -> 28127 bytes x64/Debug/cdrillingconsolevariables.mod | Bin 0 -> 8138 bytes x64/Debug/cdrillstemproblems.mod | Bin 0 -> 4872 bytes x64/Debug/cdrillstemproblemsvariables.mod | Bin 0 -> 9391 bytes x64/Debug/cdrillwatch.mod | Bin 0 -> 6115 bytes x64/Debug/cdrillwatchvariables.mod | Bin 0 -> 2009 bytes x64/Debug/celevatorconnectionenum.mod | Bin 0 -> 15554 bytes .../celevatorconnectionenumvariables.mod | Bin 0 -> 8294 bytes x64/Debug/celevatorenum.mod | Bin 0 -> 616 bytes x64/Debug/celevatorenumvariables.mod | Bin 0 -> 11615 bytes x64/Debug/cequipmentsconstants.mod | Bin 0 -> 566 bytes x64/Debug/cerror.mod | Bin 0 -> 14722 bytes x64/Debug/cfillmouseholelednotification.mod | Bin 0 -> 3226 bytes ...cfillmouseholelednotificationvariables.mod | Bin 0 -> 7714 bytes x64/Debug/cfillupheadpermission.mod | Bin 0 -> 1987 bytes x64/Debug/cfillupheadpermissionvariables.mod | Bin 0 -> 7245 bytes x64/Debug/cflowkellydisconnectenum.mod | Bin 0 -> 660 bytes .../cflowkellydisconnectenumvariables.mod | Bin 0 -> 442 bytes x64/Debug/cflowpipedisconnectenum.mod | Bin 0 -> 656 bytes .../cflowpipedisconnectenumvariables.mod | Bin 0 -> 440 bytes x64/Debug/cformation.mod | Bin 0 -> 2299 bytes x64/Debug/cformationvariables.mod | Bin 0 -> 1487 bytes x64/Debug/cgaugesproblems.mod | Bin 0 -> 18396 bytes x64/Debug/cgaugesproblemsvariables.mod | Bin 0 -> 29720 bytes x64/Debug/cheadenum.mod | Bin 0 -> 2111 bytes x64/Debug/cheadenumvariables.mod | Bin 0 -> 7819 bytes x64/Debug/choisting.mod | Bin 0 -> 3118 bytes x64/Debug/choistingproblems.mod | Bin 0 -> 3794 bytes x64/Debug/choistingproblemsvariables.mod | Bin 0 -> 9281 bytes x64/Debug/choistingvariables.mod | Bin 0 -> 1073 bytes x64/Debug/choke.mod | Bin 0 -> 5635 bytes x64/Debug/choke_gassound__genmod.f90 | 9 + x64/Debug/choke_gassound__genmod.mod | Bin 0 -> 383 bytes x64/Debug/choke_line__genmod.f90 | 9 + x64/Debug/choke_line__genmod.mod | Bin 0 -> 368 bytes x64/Debug/choke_line_sub__genmod.f90 | 9 + x64/Debug/choke_line_sub__genmod.mod | Bin 0 -> 376 bytes x64/Debug/choke_startup__genmod.f90 | 9 + x64/Debug/choke_startup__genmod.mod | Bin 0 -> 380 bytes x64/Debug/chokecontrolmain.mod | Bin 0 -> 821 bytes x64/Debug/chokelinemain.mod | Bin 0 -> 796 bytes x64/Debug/chokelinemud__genmod.f90 | 9 + x64/Debug/chokelinemud__genmod.mod | Bin 0 -> 379 bytes x64/Debug/chokevariables.mod | Bin 0 -> 14522 bytes x64/Debug/chook.mod | Bin 0 -> 366 bytes x64/Debug/chookactions.mod | Bin 0 -> 1283 bytes x64/Debug/chookheight.mod | Bin 0 -> 6701 bytes x64/Debug/chookvariables.mod | Bin 0 -> 8179 bytes x64/Debug/ciactionreference.mod | Bin 0 -> 3331 bytes x64/Debug/cibopenum.mod | Bin 0 -> 600 bytes x64/Debug/cibopenumvariables.mod | Bin 0 -> 7930 bytes x64/Debug/cibopheight.mod | Bin 0 -> 7200 bytes x64/Debug/cinstallfillupheadpermission.mod | Bin 0 -> 2148 bytes .../cinstallfillupheadpermissionvariables.mod | Bin 0 -> 7336 bytes x64/Debug/cinstallmudbucketpermission.mod | Bin 0 -> 679 bytes .../cinstallmudbucketpermissionvariables.mod | Bin 0 -> 7323 bytes x64/Debug/cintegerarrayeventhandler.mod | Bin 0 -> 3419 bytes .../cintegerarrayeventhandlercollection.mod | Bin 0 -> 7164 bytes x64/Debug/cintegereventhandler.mod | Bin 0 -> 3028 bytes x64/Debug/cintegereventhandlercollection.mod | Bin 0 -> 6443 bytes x64/Debug/circulationcodeselect__genmod.f90 | 9 + x64/Debug/circulationcodeselect__genmod.mod | Bin 0 -> 404 bytes x64/Debug/ciriboplednotification.mod | Bin 0 -> 1776 bytes x64/Debug/ciriboplednotificationvariables.mod | Bin 0 -> 7140 bytes x64/Debug/ciriboppermission.mod | Bin 0 -> 2904 bytes x64/Debug/ciriboppermissionvariables.mod | Bin 0 -> 7193 bytes x64/Debug/cirsafetyvalvelednotification.mod | Bin 0 -> 2507 bytes ...cirsafetyvalvelednotificationvariables.mod | Bin 0 -> 7563 bytes x64/Debug/cirsafetyvalvepermission.mod | Bin 0 -> 2960 bytes .../cirsafetyvalvepermissionvariables.mod | Bin 0 -> 7284 bytes x64/Debug/ckellyconnectionenum.mod | Bin 0 -> 6031 bytes x64/Debug/ckellyconnectionenumvariables.mod | Bin 0 -> 7643 bytes x64/Debug/ckellyenum.mod | Bin 0 -> 604 bytes x64/Debug/ckellyenumvariables.mod | Bin 0 -> 7966 bytes x64/Debug/ckickproblems.mod | Bin 0 -> 4403 bytes x64/Debug/ckickproblemsvariables.mod | Bin 0 -> 7587 bytes x64/Debug/clatchlednotification.mod | Bin 0 -> 6457 bytes x64/Debug/clatchlednotificationvariables.mod | Bin 0 -> 7127 bytes x64/Debug/clesson.mod | Bin 0 -> 1024 bytes x64/Debug/clessonvariables.mod | Bin 0 -> 469 bytes x64/Debug/clog1.mod | Bin 0 -> 8312 bytes x64/Debug/clog2.mod | Bin 0 -> 8312 bytes x64/Debug/clog3.mod | Bin 0 -> 8312 bytes x64/Debug/clog4.mod | Bin 0 -> 8312 bytes x64/Debug/clog5.mod | Bin 0 -> 8312 bytes x64/Debug/clostproblems.mod | Bin 0 -> 2725 bytes x64/Debug/clostproblemsvariables.mod | Bin 0 -> 7006 bytes x64/Debug/cmanifolds.mod | Bin 0 -> 38892 bytes x64/Debug/cmouseholeenum.mod | Bin 0 -> 620 bytes x64/Debug/cmouseholeenumvariables.mod | Bin 0 -> 8164 bytes x64/Debug/cmudproperties.mod | Bin 0 -> 19085 bytes x64/Debug/cmudpropertiesvariables.mod | Bin 0 -> 15106 bytes x64/Debug/cmudtreatmentproblems.mod | Bin 0 -> 4504 bytes x64/Debug/cmudtreatmentproblemsvariables.mod | Bin 0 -> 9880 bytes x64/Debug/cnearfloorconnection.mod | Bin 0 -> 7326 bytes x64/Debug/copenkellycocklednotification.mod | Bin 0 -> 2247 bytes ...copenkellycocklednotificationvariables.mod | Bin 0 -> 7231 bytes x64/Debug/copensafetyvalvelednotification.mod | Bin 0 -> 2480 bytes ...pensafetyvalvelednotificationvariables.mod | Bin 0 -> 7366 bytes x64/Debug/coperationconditionenum.mod | Bin 0 -> 4948 bytes .../coperationconditionenumvariables.mod | Bin 0 -> 15216 bytes x64/Debug/coperationscenariosmain.mod | Bin 0 -> 7701 bytes x64/Debug/coperationscenariossettings.mod | Bin 0 -> 1477 bytes x64/Debug/coperationscenariosvariables.mod | Bin 0 -> 7838 bytes x64/Debug/cotherproblems.mod | Bin 0 -> 9078 bytes x64/Debug/cotherproblemsvariables.mod | Bin 0 -> 16675 bytes x64/Debug/cpath.mod | Bin 0 -> 7991 bytes x64/Debug/cpathchangeevents.mod | Bin 0 -> 13833 bytes x64/Debug/cpathgeneration.mod | Bin 0 -> 3953 bytes x64/Debug/cpathgenerationvariables.mod | Bin 0 -> 2314 bytes x64/Debug/cpower.mod | Bin 0 -> 3574 bytes x64/Debug/cpowervariables.mod | Bin 0 -> 1036 bytes x64/Debug/cproblemdifinition.mod | Bin 0 -> 6998 bytes x64/Debug/cpumpproblems.mod | Bin 0 -> 6134 bytes x64/Debug/cpumpproblemsvariables.mod | Bin 0 -> 12628 bytes x64/Debug/cpumps.mod | Bin 0 -> 17843 bytes x64/Debug/cpumpsvariables.mod | Bin 0 -> 23336 bytes x64/Debug/cquery.mod | Bin 0 -> 635 bytes x64/Debug/crealeventhandler.mod | Bin 0 -> 2983 bytes x64/Debug/crealeventhandlercollection.mod | Bin 0 -> 6296 bytes x64/Debug/cremovefillupheadpermission.mod | Bin 0 -> 679 bytes .../cremovefillupheadpermissionvariables.mod | Bin 0 -> 7323 bytes x64/Debug/cremovemudbucketpermission.mod | Bin 0 -> 675 bytes .../cremovemudbucketpermissionvariables.mod | Bin 0 -> 7310 bytes x64/Debug/creservoir.mod | Bin 0 -> 5467 bytes x64/Debug/creservoirvariables.mod | Bin 0 -> 1742 bytes x64/Debug/crigsize.mod | Bin 0 -> 2000 bytes x64/Debug/crigsizevariables.mod | Bin 0 -> 774 bytes x64/Debug/crotaryproblems.mod | Bin 0 -> 3072 bytes x64/Debug/crotaryproblemsvariables.mod | Bin 0 -> 8283 bytes x64/Debug/csafetyvalveenum.mod | Bin 0 -> 628 bytes x64/Debug/csafetyvalveenumvariables.mod | Bin 0 -> 8523 bytes x64/Debug/csafetyvalveheight.mod | Bin 0 -> 7298 bytes x64/Debug/cscalerange.mod | Bin 0 -> 912 bytes x64/Debug/cshoe.mod | Bin 0 -> 2775 bytes x64/Debug/cshoevariables.mod | Bin 0 -> 841 bytes x64/Debug/csimulationthreads.mod | Bin 0 -> 8276 bytes x64/Debug/csimulationvariables.mod | Bin 0 -> 29686 bytes x64/Debug/cslackoff.mod | Bin 0 -> 7172 bytes x64/Debug/cslipsenum.mod | Bin 0 -> 4082 bytes x64/Debug/cslipsenumvariables.mod | Bin 0 -> 8617 bytes x64/Debug/cslipsnotification.mod | Bin 0 -> 3476 bytes x64/Debug/cslipsnotificationvariables.mod | Bin 0 -> 8248 bytes x64/Debug/csounds.mod | Bin 0 -> 25515 bytes x64/Debug/cstack.mod | Bin 0 -> 8497 bytes x64/Debug/cstandpipemanifold.mod | Bin 0 -> 8385 bytes x64/Debug/cstandpipemanifoldvariables.mod | Bin 0 -> 2073 bytes x64/Debug/cstandrack.mod | Bin 0 -> 6693 bytes x64/Debug/cstringconfiguration.mod | Bin 0 -> 4925 bytes x64/Debug/cstringconfigurationvariables.mod | Bin 0 -> 4179 bytes x64/Debug/cstringpressure.mod | Bin 0 -> 7256 bytes x64/Debug/cstringupdate.mod | Bin 0 -> 627 bytes x64/Debug/cstringupdatevariables.mod | Bin 0 -> 8744 bytes x64/Debug/cstudentstation.mod | Bin 0 -> 22542 bytes x64/Debug/cstudentstationvariables.mod | Bin 0 -> 7028 bytes x64/Debug/cswingdrillpermission.mod | Bin 0 -> 2054 bytes x64/Debug/cswingdrillpermissionvariables.mod | Bin 0 -> 7245 bytes x64/Debug/cswingenum.mod | Bin 0 -> 5094 bytes x64/Debug/cswingenumvariables.mod | Bin 0 -> 9417 bytes x64/Debug/cswinglednotification.mod | Bin 0 -> 4447 bytes x64/Debug/cswinglednotificationvariables.mod | Bin 0 -> 7127 bytes x64/Debug/cswingoffpermission.mod | Bin 0 -> 2834 bytes x64/Debug/cswingoffpermissionvariables.mod | Bin 0 -> 7219 bytes x64/Debug/cswingtiltpermission.mod | Bin 0 -> 2670 bytes x64/Debug/cswingtiltpermissionvariables.mod | Bin 0 -> 7232 bytes x64/Debug/ctanks.mod | Bin 0 -> 7851 bytes x64/Debug/ctanksvariables.mod | Bin 0 -> 2031 bytes x64/Debug/ctdsbackupclamp.mod | Bin 0 -> 2272 bytes x64/Debug/ctdsbackupclampvariables.mod | Bin 0 -> 8160 bytes x64/Debug/ctdsconnectionmodesenum.mod | Bin 0 -> 3297 bytes .../ctdsconnectionmodesenumvariables.mod | Bin 0 -> 7675 bytes x64/Debug/ctdselevatormodesenum.mod | Bin 0 -> 9386 bytes x64/Debug/ctdselevatormodesenumvariables.mod | Bin 0 -> 8296 bytes x64/Debug/ctdsiboplednotification.mod | Bin 0 -> 1871 bytes .../ctdsiboplednotificationvariables.mod | Bin 0 -> 7123 bytes x64/Debug/ctdspowerlednotification.mod | Bin 0 -> 1388 bytes .../ctdspowerlednotificationvariables.mod | Bin 0 -> 7136 bytes x64/Debug/ctdsspineenum.mod | Bin 0 -> 3108 bytes x64/Debug/ctdsspineenumvariables.mod | Bin 0 -> 8338 bytes x64/Debug/ctdsstemjointheight.mod | Bin 0 -> 7312 bytes x64/Debug/ctdsswingenum.mod | Bin 0 -> 4879 bytes x64/Debug/ctdsswingenumvariables.mod | Bin 0 -> 8786 bytes x64/Debug/ctdstongenum.mod | Bin 0 -> 2979 bytes x64/Debug/ctdstongenumvariables.mod | Bin 0 -> 8073 bytes x64/Debug/ctdstorquewrenchlednotification.mod | Bin 0 -> 2438 bytes ...dstorquewrenchlednotificationvariables.mod | Bin 0 -> 7227 bytes x64/Debug/ctimer.mod | Bin 0 -> 9916 bytes x64/Debug/ctimerlegacy.mod | Bin 0 -> 1880 bytes x64/Debug/ctongenum.mod | Bin 0 -> 2083 bytes x64/Debug/ctongenumvariables.mod | Bin 0 -> 8712 bytes x64/Debug/ctongnotification.mod | Bin 0 -> 21119 bytes x64/Debug/ctongnotificationvariables.mod | Bin 0 -> 8229 bytes x64/Debug/ctopdrivepanel.mod | Bin 0 -> 7824 bytes x64/Debug/ctopdrivepanelvariables.mod | Bin 0 -> 2920 bytes x64/Debug/cunityinputs.mod | Bin 0 -> 15499 bytes x64/Debug/cunityoutputs.mod | Bin 0 -> 12632 bytes x64/Debug/cunlatchlednotification.mod | Bin 0 -> 21271 bytes .../cunlatchlednotificationvariables.mod | Bin 0 -> 7153 bytes x64/Debug/cvoideventhandler.mod | Bin 0 -> 2514 bytes x64/Debug/cvoideventhandlercollection.mod | Bin 0 -> 5593 bytes x64/Debug/cwarnings.mod | Bin 0 -> 362 bytes x64/Debug/cwarningsactions.mod | Bin 0 -> 17686 bytes x64/Debug/cwarningsvariables.mod | Bin 0 -> 27630 bytes x64/Debug/cwellsurveydata.mod | Bin 0 -> 2477 bytes x64/Debug/cwellsurveydatavariables.mod | Bin 0 -> 1589 bytes x64/Debug/czerostringspeed.mod | Bin 0 -> 7270 bytes x64/Debug/deallocate_arrays__genmod.f90 | 9 + x64/Debug/deallocate_arrays__genmod.mod | Bin 0 -> 383 bytes x64/Debug/deallocate_arrays_choke__genmod.f90 | 9 + x64/Debug/deallocate_arrays_choke__genmod.mod | Bin 0 -> 406 bytes .../deallocate_arrays_mudsystem__genmod.f90 | 9 + .../deallocate_arrays_mudsystem__genmod.mod | Bin 0 -> 409 bytes ...ocate_arrays_normalcirculation__genmod.f90 | 9 + ...ocate_arrays_normalcirculation__genmod.mod | Bin 0 -> 438 bytes x64/Debug/deallocateflowtypes__genmod.f90 | 9 + x64/Debug/deallocateflowtypes__genmod.mod | Bin 0 -> 397 bytes x64/Debug/dia__genmod.f90 | 15 + x64/Debug/dia__genmod.mod | Bin 0 -> 915 bytes x64/Debug/disconnectingpipe__genmod.f90 | 9 + x64/Debug/disconnectingpipe__genmod.mod | Bin 0 -> 391 bytes x64/Debug/drawworks_direction__genmod.f90 | 9 + x64/Debug/drawworks_direction__genmod.mod | Bin 0 -> 396 bytes .../drawworks_free_traction_motor__genmod.f90 | 9 + .../drawworks_free_traction_motor__genmod.mod | Bin 0 -> 426 bytes ...ree_traction_motor_dawn_motion__genmod.f90 | 9 + ...ree_traction_motor_dawn_motion__genmod.mod | Bin 0 -> 462 bytes ...wworks_free_traction_motor_dir__genmod.f90 | 9 + ...wworks_free_traction_motor_dir__genmod.mod | Bin 0 -> 438 bytes x64/Debug/drawworks_inputs__genmod.f90 | 9 + x64/Debug/drawworks_inputs__genmod.mod | Bin 0 -> 387 bytes x64/Debug/drawworks_solver__genmod.f90 | 9 + x64/Debug/drawworks_solver__genmod.mod | Bin 0 -> 387 bytes ...works_solver_freetractionmotor__genmod.f90 | 9 + ...works_solver_freetractionmotor__genmod.mod | Bin 0 -> 441 bytes x64/Debug/drawworks_startup__genmod.f90 | 9 + x64/Debug/drawworks_startup__genmod.mod | Bin 0 -> 390 bytes ...orks_traction_motor_clutchmode__genmod.f90 | 9 + ...orks_traction_motor_clutchmode__genmod.mod | Bin 0 -> 444 bytes ..._traction_motor_clutchmode_dir__genmod.f90 | 9 + ..._traction_motor_clutchmode_dir__genmod.mod | Bin 0 -> 456 bytes ...orks_traction_motor_dawnmotion__genmod.f90 | 9 + ...orks_traction_motor_dawnmotion__genmod.mod | Bin 0 -> 444 bytes ..._traction_motor_dawnmotion_dir__genmod.f90 | 9 + ..._traction_motor_dawnmotion_dir__genmod.mod | Bin 0 -> 456 bytes x64/Debug/drawworks_variables.mod | Bin 0 -> 16954 bytes x64/Debug/drawworksmain.mod | Bin 0 -> 797 bytes x64/Debug/drillingconsole_scrleds__genmod.f90 | 9 + x64/Debug/drillingconsole_scrleds__genmod.mod | Bin 0 -> 398 bytes x64/Debug/dw__genmod.f90 | 14 + x64/Debug/dw__genmod.mod | Bin 0 -> 822 bytes x64/Debug/dw_dawnmotion__genmod.f90 | 14 + x64/Debug/dw_dawnmotion__genmod.mod | Bin 0 -> 844 bytes x64/Debug/dw_freetrac__genmod.f90 | 11 + x64/Debug/dw_freetrac__genmod.mod | Bin 0 -> 567 bytes x64/Debug/dw_freetrac_dmotion__genmod.f90 | 11 + x64/Debug/dw_freetrac_dmotion__genmod.mod | Bin 0 -> 583 bytes x64/Debug/dwbrakesound__genmod.f90 | 9 + x64/Debug/dwbrakesound__genmod.mod | Bin 0 -> 375 bytes x64/Debug/dwfixmodemotion__genmod.f90 | 9 + x64/Debug/dwfixmodemotion__genmod.mod | Bin 0 -> 384 bytes .../dwmalfunction_clutchdisengage__genmod.f90 | 9 + .../dwmalfunction_clutchdisengage__genmod.mod | Bin 0 -> 426 bytes .../dwmalfunction_clutchengage__genmod.f90 | 9 + .../dwmalfunction_clutchengage__genmod.mod | Bin 0 -> 417 bytes .../dwmalfunction_motorfailure__genmod.f90 | 9 + .../dwmalfunction_motorfailure__genmod.mod | Bin 0 -> 417 bytes x64/Debug/dx__genmod.f90 | 14 + x64/Debug/dx__genmod.mod | Bin 0 -> 822 bytes x64/Debug/dy__genmod.f90 | 14 + x64/Debug/dy__genmod.mod | Bin 0 -> 822 bytes x64/Debug/dynamicdoublearray.mod | Bin 0 -> 4118 bytes x64/Debug/dynamicintegerarray.mod | Bin 0 -> 4138 bytes x64/Debug/dynamiclogicalarray.mod | Bin 0 -> 4138 bytes x64/Debug/dynamicrealarray.mod | Bin 0 -> 4078 bytes x64/Debug/elementscreation__genmod.f90 | 9 + x64/Debug/elementscreation__genmod.mod | Bin 0 -> 388 bytes x64/Debug/equipments_PowerLimit.obj | Bin 0 -> 3168 bytes x64/Debug/equipments_powerlimit.mod | Bin 0 -> 1074 bytes .../fillingwell_by_bellnipple__genmod.f90 | 9 + .../fillingwell_by_bellnipple__genmod.mod | Bin 0 -> 414 bytes x64/Debug/flowstartup__genmod.f90 | 9 + x64/Debug/flowstartup__genmod.mod | Bin 0 -> 362 bytes x64/Debug/fluid_flow_solver__genmod.f90 | 9 + x64/Debug/fluid_flow_solver__genmod.mod | Bin 0 -> 379 bytes x64/Debug/fluid_flow_startup_vars.mod | Bin 0 -> 5191 bytes x64/Debug/fluidflowmain.mod | Bin 0 -> 785 bytes ...formationinformationcalculator__genmod.f90 | 9 + ...formationinformationcalculator__genmod.mod | Bin 0 -> 414 bytes x64/Debug/fricpressdrop__genmod.f90 | 10 + x64/Debug/fricpressdrop__genmod.mod | Bin 0 -> 475 bytes x64/Debug/fricpressdropvars.mod | Bin 0 -> 13513 bytes x64/Debug/gaskickcalculator__genmod.f90 | 9 + x64/Debug/gaskickcalculator__genmod.mod | Bin 0 -> 386 bytes ...aspocketflowelementtransformer__genmod.f90 | 9 + ...aspocketflowelementtransformer__genmod.mod | Bin 0 -> 417 bytes x64/Debug/geoelements_fluidmodule.mod | Bin 0 -> 4907 bytes x64/Debug/geomain.mod | Bin 0 -> 2893 bytes ...instructor_circulationmud_edit__genmod.f90 | 9 + ...instructor_circulationmud_edit__genmod.mod | Bin 0 -> 410 bytes x64/Debug/jetimpactforce__genmod.f90 | 9 + x64/Debug/jetimpactforce__genmod.mod | Bin 0 -> 364 bytes x64/Debug/kick_contraction__genmod.f90 | 9 + x64/Debug/kick_contraction__genmod.mod | Bin 0 -> 401 bytes x64/Debug/kick_expansion__genmod.f90 | 9 + x64/Debug/kick_expansion__genmod.mod | Bin 0 -> 397 bytes x64/Debug/kick_influx__genmod.f90 | 9 + x64/Debug/kick_influx__genmod.mod | Bin 0 -> 372 bytes x64/Debug/kick_migration__genmod.f90 | 9 + x64/Debug/kick_migration__genmod.mod | Bin 0 -> 381 bytes x64/Debug/kickfunctionscalculator__genmod.f90 | 13 + x64/Debug/kickfunctionscalculator__genmod.mod | Bin 0 -> 715 bytes x64/Debug/kickvariables.mod | Bin 0 -> 23376 bytes x64/Debug/kill_line__genmod.f90 | 9 + x64/Debug/kill_line__genmod.mod | Bin 0 -> 365 bytes x64/Debug/kill_line_sub__genmod.f90 | 9 + x64/Debug/kill_line_sub__genmod.mod | Bin 0 -> 373 bytes x64/Debug/killlinemain.mod | Bin 0 -> 789 bytes x64/Debug/loss_inputs__genmod.f90 | 9 + x64/Debug/loss_inputs__genmod.mod | Bin 0 -> 371 bytes x64/Debug/loss_inputs_choke__genmod.f90 | 9 + x64/Debug/loss_inputs_choke__genmod.mod | Bin 0 -> 394 bytes .../meshgeneration_fluidmodule__genmod.f90 | 9 + .../meshgeneration_fluidmodule__genmod.mod | Bin 0 -> 423 bytes x64/Debug/mudline_loss_inputs__genmod.f90 | 9 + x64/Debug/mudline_loss_inputs__genmod.mod | Bin 0 -> 393 bytes x64/Debug/mudline_losses__genmod.f90 | 10 + x64/Debug/mudline_losses__genmod.mod | Bin 0 -> 486 bytes x64/Debug/mudsystem.mod | Bin 0 -> 97010 bytes x64/Debug/mudsystem_startup__genmod.f90 | 9 + x64/Debug/mudsystem_startup__genmod.mod | Bin 0 -> 389 bytes x64/Debug/mudsystemmain.mod | Bin 0 -> 1103 bytes x64/Debug/mudsystemvariables.mod | Bin 0 -> 59315 bytes x64/Debug/newgaskick__genmod.f90 | 9 + x64/Debug/newgaskick__genmod.mod | Bin 0 -> 372 bytes .../normalcirculation_startup__genmod.f90 | 9 + .../normalcirculation_startup__genmod.mod | Bin 0 -> 405 bytes x64/Debug/off_mode_simulation__genmod.f90 | 10 + x64/Debug/off_mode_simulation__genmod.mod | Bin 0 -> 493 bytes x64/Debug/on_mode_simulation__genmod.f90 | 10 + x64/Debug/on_mode_simulation__genmod.mod | Bin 0 -> 490 bytes ...artialderivativefrictoflowrate__genmod.f90 | 10 + ...artialderivativefrictoflowrate__genmod.mod | Bin 0 -> 511 bytes x64/Debug/pipe_rams1__genmod.f90 | 9 + x64/Debug/pipe_rams1__genmod.mod | Bin 0 -> 367 bytes x64/Debug/pipe_rams1_sub__genmod.f90 | 9 + x64/Debug/pipe_rams1_sub__genmod.mod | Bin 0 -> 375 bytes x64/Debug/pipe_rams2__genmod.f90 | 9 + x64/Debug/pipe_rams2__genmod.mod | Bin 0 -> 367 bytes x64/Debug/pipe_rams2_sub__genmod.f90 | 9 + x64/Debug/pipe_rams2_sub__genmod.mod | Bin 0 -> 375 bytes x64/Debug/pipe_rams_choke__genmod.f90 | 10 + x64/Debug/pipe_rams_choke__genmod.mod | Bin 0 -> 493 bytes x64/Debug/piperams1main.mod | Bin 0 -> 796 bytes x64/Debug/piperams2main.mod | Bin 0 -> 796 bytes x64/Debug/plotfinalmudelements__genmod.f90 | 9 + x64/Debug/plotfinalmudelements__genmod.mod | Bin 0 -> 402 bytes x64/Debug/powerlimits__genmod.f90 | 9 + x64/Debug/powerlimits__genmod.mod | Bin 0 -> 362 bytes .../pressureannandohdistribution__genmod.f90 | 9 + .../pressureannandohdistribution__genmod.mod | Bin 0 -> 426 bytes x64/Debug/pressuredisplayvariables.mod | Bin 0 -> 6756 bytes ...surehorizandstringdistribution__genmod.f90 | 9 + ...surehorizandstringdistribution__genmod.mod | Bin 0 -> 439 bytes x64/Debug/pump1_mainsolver__genmod.f90 | 9 + x64/Debug/pump1_mainsolver__genmod.mod | Bin 0 -> 383 bytes x64/Debug/pump1_offmode_solver__genmod.f90 | 10 + x64/Debug/pump1_offmode_solver__genmod.mod | Bin 0 -> 496 bytes x64/Debug/pump1_onmode_solver__genmod.f90 | 10 + x64/Debug/pump1_onmode_solver__genmod.mod | Bin 0 -> 493 bytes x64/Debug/pump2_mainsolver__genmod.f90 | 9 + x64/Debug/pump2_mainsolver__genmod.mod | Bin 0 -> 383 bytes x64/Debug/pump2_offmode_solver__genmod.f90 | 10 + x64/Debug/pump2_offmode_solver__genmod.mod | Bin 0 -> 496 bytes x64/Debug/pump2_onmode_solver__genmod.f90 | 10 + x64/Debug/pump2_onmode_solver__genmod.mod | Bin 0 -> 493 bytes x64/Debug/pump3_offmode_solver__genmod.f90 | 9 + x64/Debug/pump3_offmode_solver__genmod.mod | Bin 0 -> 395 bytes x64/Debug/pump3_onmode_solver__genmod.f90 | 9 + x64/Debug/pump3_onmode_solver__genmod.mod | Bin 0 -> 392 bytes x64/Debug/pump_and_tripin__genmod.f90 | 9 + x64/Debug/pump_and_tripin__genmod.mod | Bin 0 -> 385 bytes x64/Debug/pump_dia__genmod.f90 | 15 + x64/Debug/pump_dia__genmod.mod | Bin 0 -> 920 bytes x64/Debug/pump_diff_eqs.obj | Bin 0 -> 14430 bytes x64/Debug/pump_dw__genmod.f90 | 15 + x64/Debug/pump_dw__genmod.mod | Bin 0 -> 918 bytes x64/Debug/pump_dx__genmod.f90 | 14 + x64/Debug/pump_dx__genmod.mod | Bin 0 -> 827 bytes x64/Debug/pump_inputs__genmod.f90 | 9 + x64/Debug/pump_inputs__genmod.mod | Bin 0 -> 368 bytes x64/Debug/pump_solver__genmod.f90 | 10 + x64/Debug/pump_solver__genmod.mod | Bin 0 -> 469 bytes x64/Debug/pump_startup__genmod.f90 | 9 + x64/Debug/pump_startup__genmod.mod | Bin 0 -> 371 bytes x64/Debug/pump_total_counts__genmod.f90 | 9 + x64/Debug/pump_total_counts__genmod.mod | Bin 0 -> 386 bytes x64/Debug/pump_traction_motor__genmod.f90 | 10 + x64/Debug/pump_traction_motor__genmod.mod | Bin 0 -> 493 bytes x64/Debug/pump_variables.mod | Bin 0 -> 11281 bytes x64/Debug/pumps_charge_bottle__genmod.f90 | 9 + x64/Debug/pumps_charge_bottle__genmod.mod | Bin 0 -> 387 bytes x64/Debug/pumpsmain.mod | Bin 0 -> 16526 bytes x64/Debug/removeannulusmudarrays__genmod.f90 | 10 + x64/Debug/removeannulusmudarrays__genmod.mod | Bin 0 -> 511 bytes x64/Debug/removegaspocket__genmod.f90 | 10 + x64/Debug/removegaspocket__genmod.mod | Bin 0 -> 484 bytes x64/Debug/removehzmudarrays__genmod.f90 | 10 + x64/Debug/removehzmudarrays__genmod.mod | Bin 0 -> 501 bytes x64/Debug/removeopmudarrays__genmod.f90 | 10 + x64/Debug/removeopmudarrays__genmod.mod | Bin 0 -> 501 bytes x64/Debug/removestringmudarrays__genmod.f90 | 10 + x64/Debug/removestringmudarrays__genmod.mod | Bin 0 -> 509 bytes x64/Debug/rop_maincalculation__genmod.f90 | 9 + x64/Debug/rop_maincalculation__genmod.mod | Bin 0 -> 379 bytes x64/Debug/rop_startup__genmod.f90 | 9 + x64/Debug/rop_startup__genmod.mod | Bin 0 -> 355 bytes x64/Debug/ropmain.mod | Bin 0 -> 738 bytes x64/Debug/rotarytablemain.mod | Bin 0 -> 707 bytes x64/Debug/rtable_dia__genmod.f90 | 15 + x64/Debug/rtable_dia__genmod.mod | Bin 0 -> 922 bytes x64/Debug/rtable_dw__genmod.f90 | 14 + x64/Debug/rtable_dw__genmod.mod | Bin 0 -> 829 bytes x64/Debug/rtable_dx__genmod.f90 | 14 + x64/Debug/rtable_dx__genmod.mod | Bin 0 -> 829 bytes x64/Debug/rtable_dy__genmod.f90 | 14 + x64/Debug/rtable_dy__genmod.mod | Bin 0 -> 829 bytes x64/Debug/rtable_inputs__genmod.f90 | 9 + x64/Debug/rtable_inputs__genmod.mod | Bin 0 -> 380 bytes x64/Debug/rtable_offmode__genmod.f90 | 9 + x64/Debug/rtable_offmode__genmod.mod | Bin 0 -> 383 bytes x64/Debug/rtable_solver__genmod.f90 | 9 + x64/Debug/rtable_solver__genmod.mod | Bin 0 -> 380 bytes x64/Debug/rtable_startup__genmod.f90 | 9 + x64/Debug/rtable_startup__genmod.mod | Bin 0 -> 383 bytes x64/Debug/rtable_traction_motor__genmod.f90 | 9 + x64/Debug/rtable_traction_motor__genmod.mod | Bin 0 -> 404 bytes x64/Debug/rtable_variables.mod | Bin 0 -> 11175 bytes .../rtmalfunction_motorfailure__genmod.f90 | 9 + .../rtmalfunction_motorfailure__genmod.mod | Bin 0 -> 419 bytes x64/Debug/rttorquelimit__genmod.f90 | 9 + x64/Debug/rttorquelimit__genmod.mod | Bin 0 -> 380 bytes x64/Debug/sROP_Module.obj | Bin 0 -> 20798 bytes x64/Debug/sROP_Other_Variables.obj | Bin 0 -> 7821 bytes x64/Debug/sROP_Variables.obj | Bin 0 -> 4806 bytes x64/Debug/shear_rams__genmod.f90 | 9 + x64/Debug/shear_rams__genmod.mod | Bin 0 -> 367 bytes x64/Debug/shear_rams_sub__genmod.f90 | 9 + x64/Debug/shear_rams_sub__genmod.mod | Bin 0 -> 375 bytes x64/Debug/shoelostsub__genmod.f90 | 9 + x64/Debug/shoelostsub__genmod.mod | Bin 0 -> 372 bytes x64/Debug/simulator.mod | Bin 0 -> 234859 bytes x64/Debug/solve_linear_equations__genmod.f90 | 14 + x64/Debug/solve_linear_equations__genmod.mod | Bin 0 -> 1341 bytes x64/Debug/srop_other_variables.mod | Bin 0 -> 4684 bytes x64/Debug/srop_variables.mod | Bin 0 -> 2523 bytes .../stringpropertycalculator__genmod.f90 | 13 + .../stringpropertycalculator__genmod.mod | Bin 0 -> 772 bytes x64/Debug/td_addcomponents__genmod.f90 | 9 + x64/Debug/td_addcomponents__genmod.mod | Bin 0 -> 393 bytes x64/Debug/td_bopdiamcalculation__genmod.f90 | 9 + x64/Debug/td_bopdiamcalculation__genmod.mod | Bin 0 -> 408 bytes x64/Debug/td_bouyancyfactor__genmod.f90 | 10 + x64/Debug/td_bouyancyfactor__genmod.mod | Bin 0 -> 479 bytes x64/Debug/td_combinedmotiondata__genmod.f90 | 10 + x64/Debug/td_combinedmotiondata__genmod.mod | Bin 0 -> 491 bytes x64/Debug/td_drillstemcomponents.mod | Bin 0 -> 18841 bytes .../td_drillstemconfiguration__genmod.f90 | 9 + .../td_drillstemconfiguration__genmod.mod | Bin 0 -> 420 bytes x64/Debug/td_drillstemreaddata__genmod.f90 | 9 + x64/Debug/td_drillstemreaddata__genmod.mod | Bin 0 -> 412 bytes x64/Debug/td_drillstemstartup__genmod.f90 | 9 + x64/Debug/td_drillstemstartup__genmod.mod | Bin 0 -> 397 bytes x64/Debug/td_forcecalculation__genmod.f90 | 9 + x64/Debug/td_forcecalculation__genmod.mod | Bin 0 -> 396 bytes x64/Debug/td_forcedownb__genmod.f90 | 11 + x64/Debug/td_forcedownb__genmod.mod | Bin 0 -> 595 bytes x64/Debug/td_forcedownbrot__genmod.f90 | 11 + x64/Debug/td_forcedownbrot__genmod.mod | Bin 0 -> 604 bytes x64/Debug/td_forcedownd__genmod.f90 | 11 + x64/Debug/td_forcedownd__genmod.mod | Bin 0 -> 594 bytes x64/Debug/td_forcedowndrot__genmod.f90 | 11 + x64/Debug/td_forcedowndrot__genmod.mod | Bin 0 -> 603 bytes x64/Debug/td_forcedowns__genmod.f90 | 11 + x64/Debug/td_forcedowns__genmod.mod | Bin 0 -> 598 bytes x64/Debug/td_forcedownsrot__genmod.f90 | 11 + x64/Debug/td_forcedownsrot__genmod.mod | Bin 0 -> 607 bytes x64/Debug/td_forcereaddata__genmod.f90 | 9 + x64/Debug/td_forcereaddata__genmod.mod | Bin 0 -> 400 bytes x64/Debug/td_forceupb__genmod.f90 | 11 + x64/Debug/td_forceupb__genmod.mod | Bin 0 -> 589 bytes x64/Debug/td_forceupbrot__genmod.f90 | 11 + x64/Debug/td_forceupbrot__genmod.mod | Bin 0 -> 598 bytes x64/Debug/td_forceupd__genmod.f90 | 11 + x64/Debug/td_forceupd__genmod.mod | Bin 0 -> 588 bytes x64/Debug/td_forceupdrot__genmod.f90 | 11 + x64/Debug/td_forceupdrot__genmod.mod | Bin 0 -> 597 bytes x64/Debug/td_forceups__genmod.f90 | 11 + x64/Debug/td_forceups__genmod.mod | Bin 0 -> 592 bytes x64/Debug/td_forceupsrot__genmod.f90 | 11 + x64/Debug/td_forceupsrot__genmod.mod | Bin 0 -> 601 bytes x64/Debug/td_generaldata.mod | Bin 0 -> 3367 bytes x64/Debug/td_hookloadcalculation__genmod.f90 | 9 + x64/Debug/td_hookloadcalculation__genmod.mod | Bin 0 -> 405 bytes x64/Debug/td_maincalculations__genmod.f90 | 9 + x64/Debug/td_maincalculations__genmod.mod | Bin 0 -> 386 bytes .../td_mudpropertiesreaddata__genmod.f90 | 10 + .../td_mudpropertiesreaddata__genmod.mod | Bin 0 -> 513 bytes .../td_pipepropertiesreaddata__genmod.f90 | 9 + .../td_pipepropertiesreaddata__genmod.mod | Bin 0 -> 427 bytes x64/Debug/td_removecomponents__genmod.f90 | 9 + x64/Debug/td_removecomponents__genmod.mod | Bin 0 -> 402 bytes x64/Debug/td_startup__genmod.f90 | 9 + x64/Debug/td_startup__genmod.mod | Bin 0 -> 370 bytes .../td_statichookloadcalculation__genmod.f90 | 9 + .../td_statichookloadcalculation__genmod.mod | Bin 0 -> 423 bytes x64/Debug/td_straincalculation__genmod.f90 | 10 + x64/Debug/td_straincalculation__genmod.mod | Bin 0 -> 488 bytes x64/Debug/td_stringconnectiondata.mod | Bin 0 -> 3866 bytes .../td_stringconnectionmodes__genmod.f90 | 9 + .../td_stringconnectionmodes__genmod.mod | Bin 0 -> 417 bytes x64/Debug/td_torquecalculation__genmod.f90 | 10 + x64/Debug/td_torquecalculation__genmod.mod | Bin 0 -> 488 bytes x64/Debug/td_viscousdragforce__genmod.f90 | 9 + x64/Debug/td_viscousdragforce__genmod.mod | Bin 0 -> 416 bytes .../td_weightonbitcalculation__genmod.f90 | 9 + .../td_weightonbitcalculation__genmod.mod | Bin 0 -> 414 bytes x64/Debug/td_wellelements.mod | Bin 0 -> 5667 bytes .../td_wellelementsconfiguration__genmod.f90 | 9 + .../td_wellelementsconfiguration__genmod.mod | Bin 0 -> 429 bytes x64/Debug/td_wellelementsreaddata__genmod.f90 | 9 + x64/Debug/td_wellelementsreaddata__genmod.mod | Bin 0 -> 421 bytes x64/Debug/td_wellgeoconfiguration__genmod.f90 | 9 + x64/Debug/td_wellgeoconfiguration__genmod.mod | Bin 0 -> 414 bytes x64/Debug/td_wellgeometry.mod | Bin 0 -> 2118 bytes x64/Debug/td_wellreaddata__genmod.f90 | 9 + x64/Debug/td_wellreaddata__genmod.mod | Bin 0 -> 397 bytes x64/Debug/tds_dia__genmod.f90 | 15 + x64/Debug/tds_dia__genmod.mod | Bin 0 -> 915 bytes x64/Debug/tds_dw__genmod.f90 | 14 + x64/Debug/tds_dw__genmod.mod | Bin 0 -> 822 bytes x64/Debug/tds_dx__genmod.f90 | 14 + x64/Debug/tds_dx__genmod.mod | Bin 0 -> 822 bytes x64/Debug/tds_dy__genmod.f90 | 14 + x64/Debug/tds_dy__genmod.mod | Bin 0 -> 822 bytes x64/Debug/testoperationscenarios.mod | Bin 0 -> 32658 bytes x64/Debug/testoperationscenariosvariables.mod | Bin 0 -> 7972 bytes x64/Debug/topdrive_inputs__genmod.f90 | 9 + x64/Debug/topdrive_inputs__genmod.mod | Bin 0 -> 383 bytes ...drive_malfunction_motorfailure__genmod.f90 | 9 + ...drive_malfunction_motorfailure__genmod.mod | Bin 0 -> 437 bytes x64/Debug/topdrive_offmode__genmod.f90 | 9 + x64/Debug/topdrive_offmode__genmod.mod | Bin 0 -> 386 bytes x64/Debug/topdrive_solver__genmod.f90 | 9 + x64/Debug/topdrive_solver__genmod.mod | Bin 0 -> 383 bytes x64/Debug/topdrive_startup__genmod.f90 | 9 + x64/Debug/topdrive_startup__genmod.mod | Bin 0 -> 386 bytes x64/Debug/topdrive_torquelimit__genmod.f90 | 9 + x64/Debug/topdrive_torquelimit__genmod.mod | Bin 0 -> 398 bytes x64/Debug/topdrive_traction_motor__genmod.f90 | 9 + x64/Debug/topdrive_traction_motor__genmod.mod | Bin 0 -> 407 bytes x64/Debug/topdrive_variables.mod | Bin 0 -> 10394 bytes x64/Debug/topdrivemain.mod | Bin 0 -> 2477 bytes x64/Debug/torquedragmain.mod | Bin 0 -> 14495 bytes x64/Debug/tripout_and_pump__genmod.f90 | 9 + x64/Debug/tripout_and_pump__genmod.mod | Bin 0 -> 387 bytes x64/Debug/tvd_calculator__genmod.f90 | 11 + x64/Debug/tvd_calculator__genmod.mod | Bin 0 -> 613 bytes x64/Debug/utube1_and_tripin__genmod.f90 | 9 + x64/Debug/utube1_and_tripin__genmod.mod | Bin 0 -> 391 bytes x64/Debug/utube2_and_tripin__genmod.f90 | 9 + x64/Debug/utube2_and_tripin__genmod.mod | Bin 0 -> 391 bytes x64/Debug/utube__genmod.f90 | 9 + x64/Debug/utube__genmod.mod | Bin 0 -> 343 bytes x64/Debug/utubevars.mod | Bin 0 -> 647 bytes x64/Debug/variables.mod | Bin 0 -> 45782 bytes x64/Debug/vc170.pdb | Bin 0 -> 299008 bytes .../wellpressuredatatransfer__genmod.f90 | 9 + .../wellpressuredatatransfer__genmod.mod | Bin 0 -> 403 bytes مستتندات شبیه ساز.docx | Bin 0 -> 16643 bytes 1520 files changed, 89053 insertions(+) create mode 100644 CSharp/BasicInputs/Bha/CStringConfiguration.f90 create mode 100644 CSharp/BasicInputs/Bha/CStringConfigurationVariables.f90 create mode 100644 CSharp/BasicInputs/Bha/cstringconfigurationvariables.mod create mode 100644 CSharp/BasicInputs/CMudProperties.f90 create mode 100644 CSharp/BasicInputs/CMudPropertiesVariables.f90 create mode 100644 CSharp/BasicInputs/Geology/CFormation.f90 create mode 100644 CSharp/BasicInputs/Geology/CFormationVariables.f90 create mode 100644 CSharp/BasicInputs/Geology/CReservoir.f90 create mode 100644 CSharp/BasicInputs/Geology/CReservoirVariables.f90 create mode 100644 CSharp/BasicInputs/Geology/CShoe.f90 create mode 100644 CSharp/BasicInputs/Geology/CShoeVariables.f90 create mode 100644 CSharp/BasicInputs/Geology/cformationvariables.mod create mode 100644 CSharp/BasicInputs/Geology/creservoirvariables.mod create mode 100644 CSharp/BasicInputs/RigSpecifications/CAccumulator.f90 create mode 100644 CSharp/BasicInputs/RigSpecifications/CAccumulatorVariables.f90 create mode 100644 CSharp/BasicInputs/RigSpecifications/CBopStack.f90 create mode 100644 CSharp/BasicInputs/RigSpecifications/CBopStackVariables.f90 create mode 100644 CSharp/BasicInputs/RigSpecifications/CHoisting.f90 create mode 100644 CSharp/BasicInputs/RigSpecifications/CHoistingVariables.f90 create mode 100644 CSharp/BasicInputs/RigSpecifications/CPower.f90 create mode 100644 CSharp/BasicInputs/RigSpecifications/CPowerVariables.f90 create mode 100644 CSharp/BasicInputs/RigSpecifications/CPumps.f90 create mode 100644 CSharp/BasicInputs/RigSpecifications/CPumpsVariables.f90 create mode 100644 CSharp/BasicInputs/RigSpecifications/CRigSize.f90 create mode 100644 CSharp/BasicInputs/RigSpecifications/CRigSizeVariables.f90 create mode 100644 CSharp/BasicInputs/RigSpecifications/caccumulatorvariables.mod create mode 100644 CSharp/BasicInputs/RigSpecifications/cbopstackvariables.mod create mode 100644 CSharp/BasicInputs/WellProfile/CCasingLinerChoke.f90 create mode 100644 CSharp/BasicInputs/WellProfile/CCasingLinerChokeVariables.f90 create mode 100644 CSharp/BasicInputs/WellProfile/CPathGeneration.f90 create mode 100644 CSharp/BasicInputs/WellProfile/CPathGenerationVariables.f90 create mode 100644 CSharp/BasicInputs/WellProfile/CWellSurveyData.f90 create mode 100644 CSharp/BasicInputs/WellProfile/CWellSurveyDataVariables.f90 create mode 100644 CSharp/BasicInputs/WellProfile/cpathgenerationvariables.mod create mode 100644 CSharp/Common/CCommon.f90 create mode 100644 CSharp/Common/CCommonVariables.f90 create mode 100644 CSharp/Common/CIActionReference.f90 create mode 100644 CSharp/Common/CLesson.f90 create mode 100644 CSharp/Common/CLessonVariables.f90 create mode 100644 CSharp/Common/CQuery.f90 create mode 100644 CSharp/Common/CScaleRange.f90 create mode 100644 CSharp/Common/CTimer.f90 create mode 100644 CSharp/Common/CTimerLegacy.f90 create mode 100644 CSharp/Common/EventHandlers/CBoolEventHandler.f90 create mode 100644 CSharp/Common/EventHandlers/CBoolEventHandlerCollection.f90 create mode 100644 CSharp/Common/EventHandlers/CDoubleEventHandler.f90 create mode 100644 CSharp/Common/EventHandlers/CDoubleEventHandlerCollection.f90 create mode 100644 CSharp/Common/EventHandlers/CIntegerArrayEventHandler.f90 create mode 100644 CSharp/Common/EventHandlers/CIntegerArrayEventHandlerCollection.f90 create mode 100644 CSharp/Common/EventHandlers/CIntegerEventHandler.f90 create mode 100644 CSharp/Common/EventHandlers/CIntegerEventHandlerCollection.f90 create mode 100644 CSharp/Common/EventHandlers/CRealEventHandler.f90 create mode 100644 CSharp/Common/EventHandlers/CRealEventHandlerCollection.f90 create mode 100644 CSharp/Common/EventHandlers/CVoidEventHandler.f90 create mode 100644 CSharp/Common/EventHandlers/CVoidEventHandlerCollection.f90 create mode 100644 CSharp/DownHole/CDownHole.f90 create mode 100644 CSharp/DownHole/CDownHoleActions.f90 create mode 100644 CSharp/DownHole/CDownHoleTypes.f90 create mode 100644 CSharp/DownHole/CDownHoleVariables.f90 create mode 100644 CSharp/Equipments/ControlPanels/CBopControlPanel.f90 create mode 100644 CSharp/Equipments/ControlPanels/CBopControlPanelVariables.f90 create mode 100644 CSharp/Equipments/ControlPanels/CChokeControlPanel.f90 create mode 100644 CSharp/Equipments/ControlPanels/CChokeControlPanelVariables.f90 create mode 100644 CSharp/Equipments/ControlPanels/CChokeManifold.f90 create mode 100644 CSharp/Equipments/ControlPanels/CChokeManifoldVariables.f90 create mode 100644 CSharp/Equipments/ControlPanels/CDataDisplayConsole.f90 create mode 100644 CSharp/Equipments/ControlPanels/CDataDisplayConsoleVariables.f90 create mode 100644 CSharp/Equipments/ControlPanels/CDrillingConsole.f90 create mode 100644 CSharp/Equipments/ControlPanels/CDrillingConsoleVariables.f90 create mode 100644 CSharp/Equipments/ControlPanels/CEquipmentsConstants.f90 create mode 100644 CSharp/Equipments/ControlPanels/CHook.f90 create mode 100644 CSharp/Equipments/ControlPanels/CHookActions.f90 create mode 100644 CSharp/Equipments/ControlPanels/CHookVariables.f90 create mode 100644 CSharp/Equipments/ControlPanels/CStandPipeManifold.f90 create mode 100644 CSharp/Equipments/ControlPanels/CStandPipeManifoldVariables.f90 create mode 100644 CSharp/Equipments/ControlPanels/CTopDrivePanel.f90 create mode 100644 CSharp/Equipments/ControlPanels/CTopDrivePanelVariables.f90 create mode 100644 CSharp/Equipments/ControlPanels/cequipmentsconstants.mod create mode 100644 CSharp/Equipments/ControlPanels/ctopdrivepanelvariables.mod create mode 100644 CSharp/Equipments/DrillWatch/CDrillWatch.f90 create mode 100644 CSharp/Equipments/DrillWatch/CDrillWatchVariables.f90 create mode 100644 CSharp/Equipments/MudPathFinding/CArrangement.f90 create mode 100644 CSharp/Equipments/MudPathFinding/CManifolds.f90 create mode 100644 CSharp/Equipments/MudPathFinding/CPath.f90 create mode 100644 CSharp/Equipments/MudPathFinding/CPathChangeEvents.f90 create mode 100644 CSharp/Equipments/MudPathFinding/CStack.f90 create mode 100644 CSharp/Equipments/Tanks/CTanks.f90 create mode 100644 CSharp/Equipments/Tanks/CTanksVariables.f90 create mode 100644 CSharp/ErrorLog/CError.f90 create mode 100644 CSharp/ErrorLog/CLog1.f90 create mode 100644 CSharp/ErrorLog/CLog2.f90 create mode 100644 CSharp/ErrorLog/CLog3.f90 create mode 100644 CSharp/ErrorLog/CLog4.f90 create mode 100644 CSharp/ErrorLog/CLog5.f90 create mode 100644 CSharp/OperationScenarios/Common/COperationScenariosMain.f90 create mode 100644 CSharp/OperationScenarios/Common/COperationScenariosSettings.f90 create mode 100644 CSharp/OperationScenarios/Common/COperationScenariosVariables.f90 create mode 100644 CSharp/OperationScenarios/Enums/CElevatorConnectionEnum.f90 create mode 100644 CSharp/OperationScenarios/Enums/CElevatorConnectionEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/Enums/CKellyConnectionEnum.f90 create mode 100644 CSharp/OperationScenarios/Enums/CKellyConnectionEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/Enums/CTdsConnectionModesEnum.f90 create mode 100644 CSharp/OperationScenarios/Enums/CTdsConnectionModesEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/Enums/CTdsElevatorModesEnum.f90 create mode 100644 CSharp/OperationScenarios/Enums/CTdsElevatorModesEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CCloseKellyCockLedNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CCloseKellyCockLedNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CCloseSafetyValveLedNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CCloseSafetyValveLedNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CFillMouseHoleLedNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CFillMouseHoleLedNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CIrIBopLedNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CIrIBopLedNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CIrSafetyValveLedNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CIrSafetyValveLedNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CLatchLedNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CLatchLedNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/COpenKellyCockLedNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/COpenKellyCockLedNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/COpenSafetyValveLedNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/COpenSafetyValveLedNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CSlipsNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CSlipsNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CSwingLedNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CSwingLedNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CTdsIbopLedNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CTdsIbopLedNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CTdsPowerLedNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CTdsPowerLedNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CTdsTorqueWrenchLedNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CTdsTorqueWrenchLedNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CTongNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CTongNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CUnlatchLedNotification.f90 create mode 100644 CSharp/OperationScenarios/Notifications/CUnlatchLedNotificationVariables.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CFillupHeadPermission.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CFillupHeadPermissionVariables.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CInstallFillupHeadPermission.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CInstallFillupHeadPermissionVariables.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CInstallMudBucketPermission.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CInstallMudBucketPermissionVariables.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CIrIbopPermission.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CIrIbopPermissionVariables.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CIrSafetyValvePermission.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CIrSafetyValvePermissionVariables.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CRemoveFillupHeadPermission.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CRemoveFillupHeadPermissionVariables.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CRemoveMudBucketPermission.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CRemoveMudBucketPermissionVariables.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CSwingDrillPermission.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CSwingDrillPermissionVariables.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CSwingOffPermission.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CSwingOffPermissionVariables.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CSwingTiltPermission.f90 create mode 100644 CSharp/OperationScenarios/Permissions/CSwingTiltPermissionVariables.f90 create mode 100644 CSharp/OperationScenarios/SoftwareInputs/CHookHeight.f90 create mode 100644 CSharp/OperationScenarios/SoftwareInputs/CIbopHeight.f90 create mode 100644 CSharp/OperationScenarios/SoftwareInputs/CNearFloorConnection.f90 create mode 100644 CSharp/OperationScenarios/SoftwareInputs/CSafetyValveHeight.f90 create mode 100644 CSharp/OperationScenarios/SoftwareInputs/CSlackOff.f90 create mode 100644 CSharp/OperationScenarios/SoftwareInputs/CStandRack.f90 create mode 100644 CSharp/OperationScenarios/SoftwareInputs/CStringPressure.f90 create mode 100644 CSharp/OperationScenarios/SoftwareInputs/CTdsStemJointHeight.f90 create mode 100644 CSharp/OperationScenarios/SoftwareInputs/CZeroStringSpeed.f90 create mode 100644 CSharp/OperationScenarios/SoftwareOutputs/CStringUpdate.f90 create mode 100644 CSharp/OperationScenarios/SoftwareOutputs/CStringUpdateVariables.f90 create mode 100644 CSharp/OperationScenarios/Test/TestOperationScenarios.f90 create mode 100644 CSharp/OperationScenarios/Test/TestOperationScenariosVariables.f90 create mode 100644 CSharp/OperationScenarios/Unity/CUnityInputs.f90 create mode 100644 CSharp/OperationScenarios/Unity/CUnityOutputs.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CBucketEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CBucketEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CElevatorEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CElevatorEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CFlowKellyDisconnectEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CFlowKellyDisconnectEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CFlowPipeDisconnectEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CFlowPipeDisconnectEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CHeadEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CHeadEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CIbopEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CIbopEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CKellyEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CKellyEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CMouseHoleEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CMouseHoleEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/COperationConditionEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/COperationConditionEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CSafetyValveEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CSafetyValveEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CSlipsEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CSlipsEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CSwingEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CSwingEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CTdsBackupClamp.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CTdsBackupClampVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CTdsSpineEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CTdsSpineEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CTdsSwingEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CTdsSwingEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CTdsTongEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CTdsTongEnumVariables.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CTongEnum.f90 create mode 100644 CSharp/OperationScenarios/UnitySignals/CTongEnumVariables.f90 create mode 100644 CSharp/Problems/CBitProblems.f90 create mode 100644 CSharp/Problems/CBitProblemsVariables.f90 create mode 100644 CSharp/Problems/CBopProblems.f90 create mode 100644 CSharp/Problems/CBopProblemsVariables.f90 create mode 100644 CSharp/Problems/CChokeProblems.f90 create mode 100644 CSharp/Problems/CChokeProblemsVariables.f90 create mode 100644 CSharp/Problems/CDrillStemProblems.f90 create mode 100644 CSharp/Problems/CDrillStemProblemsVariables.f90 create mode 100644 CSharp/Problems/CGaugesProblems.f90 create mode 100644 CSharp/Problems/CGaugesProblemsVariables.f90 create mode 100644 CSharp/Problems/CHoistingProblems.f90 create mode 100644 CSharp/Problems/CHoistingProblemsVariables.f90 create mode 100644 CSharp/Problems/CKickProblems.f90 create mode 100644 CSharp/Problems/CKickProblemsVariables.f90 create mode 100644 CSharp/Problems/CLostProblems.f90 create mode 100644 CSharp/Problems/CLostProblemsVariables.f90 create mode 100644 CSharp/Problems/CMudTreatmentProblems.f90 create mode 100644 CSharp/Problems/CMudTreatmentProblemsVariables.f90 create mode 100644 CSharp/Problems/COtherProblems.f90 create mode 100644 CSharp/Problems/COtherProblemsVariables.f90 create mode 100644 CSharp/Problems/CProblemDifinition.f90 create mode 100644 CSharp/Problems/CPumpProblems.f90 create mode 100644 CSharp/Problems/CPumpProblemsVariables.f90 create mode 100644 CSharp/Problems/CRotaryProblems.f90 create mode 100644 CSharp/Problems/CRotaryProblemsVariables.f90 create mode 100644 CSharp/Simulation/CSimulation.f90 create mode 100644 CSharp/Simulation/CSimulationThreads.f90 create mode 100644 CSharp/Simulation/CSimulationVariables.f90 create mode 100644 CSharp/Simulation/CSounds.f90 create mode 100644 CSharp/StudentStation/CStudentStation.f90 create mode 100644 CSharp/StudentStation/CStudentStationVariables.f90 create mode 100644 CSharp/Warnings/CWarnings.f90 create mode 100644 CSharp/Warnings/CWarningsActions.f90 create mode 100644 CSharp/Warnings/CWarningsVariables.f90 create mode 100644 CSimulationVariables.f90 create mode 100644 CSounds.f90 create mode 100644 Common/DynamicDoubleArray.f90 create mode 100644 Common/DynamicIntegerArray.f90 create mode 100644 Common/DynamicLogicalArray.f90 create mode 100644 Common/DynamicRealArray.f90 create mode 100644 Common/json-fortran/json_file_module.F90 create mode 100644 Common/json-fortran/json_get_scalar_by_path.inc create mode 100644 Common/json-fortran/json_get_vec_by_path.inc create mode 100644 Common/json-fortran/json_get_vec_by_path_alloc.inc create mode 100644 Common/json-fortran/json_initialize_arguments.inc create mode 100644 Common/json-fortran/json_initialize_dummy_arguments.inc create mode 100644 Common/json-fortran/json_kinds.F90 create mode 100644 Common/json-fortran/json_macros.inc create mode 100644 Common/json-fortran/json_module.F90 create mode 100644 Common/json-fortran/json_parameters.F90 create mode 100644 Common/json-fortran/json_string_utilities.F90 create mode 100644 Common/json-fortran/json_value_module.F90 create mode 100644 Equipments/BopStack/ANNULAR.f90 create mode 100644 Equipments/BopStack/AnnularMain.f90 create mode 100644 Equipments/BopStack/BOP.f90 create mode 100644 Equipments/BopStack/BOPstartup.f90 create mode 100644 Equipments/BopStack/BlindRamsMain.f90 create mode 100644 Equipments/BopStack/BopStackMain.f90 create mode 100644 Equipments/BopStack/CHOKE_LINE.f90 create mode 100644 Equipments/BopStack/ChokeLineMain.f90 create mode 100644 Equipments/BopStack/KILL_LINE.f90 create mode 100644 Equipments/BopStack/KillLineMain.f90 create mode 100644 Equipments/BopStack/LOSS_INPUTS.f90 create mode 100644 Equipments/BopStack/PIPE_RAM1.f90 create mode 100644 Equipments/BopStack/PIPE_RAM2.f90 create mode 100644 Equipments/BopStack/PipeRams1Main.f90 create mode 100644 Equipments/BopStack/PipeRams2Main.f90 create mode 100644 Equipments/BopStack/SHEAR_RAM.f90 create mode 100644 Equipments/BopStack/VARIABLES.f90 create mode 100644 Equipments/BopStack/bopstackmain.mod create mode 100644 Equipments/ChokeControl/AirPump_Choke_Subs.f90 create mode 100644 Equipments/ChokeControl/CHOKE.f90 create mode 100644 Equipments/ChokeControl/CHOKE_VARIABLES.f90 create mode 100644 Equipments/ChokeControl/ChokeControlMain.f90 create mode 100644 Equipments/ChokeControl/ChokeStartup.f90 create mode 100644 Equipments/Drawworks/DWBrakeSound.f90 create mode 100644 Equipments/Drawworks/DWFixModeMotion.f90 create mode 100644 Equipments/Drawworks/DWMalfunction_ClutchDisengage.f90 create mode 100644 Equipments/Drawworks/DWMalfunction_ClutchEngage.f90 create mode 100644 Equipments/Drawworks/DWMalfunction_MotorFailure.f90 create mode 100644 Equipments/Drawworks/DrawworksMain.f90 create mode 100644 Equipments/Drawworks/Drawworks_Diff_Equations.f90 create mode 100644 Equipments/Drawworks/Drawworks_Direction.f90 create mode 100644 Equipments/Drawworks/Drawworks_Free_Traction_motor.f90 create mode 100644 Equipments/Drawworks/Drawworks_Free_Traction_motor_Dir.f90 create mode 100644 Equipments/Drawworks/Drawworks_Free_Traction_motor_dawn_motion.f90 create mode 100644 Equipments/Drawworks/Drawworks_INPUTS.f90 create mode 100644 Equipments/Drawworks/Drawworks_Solver.f90 create mode 100644 Equipments/Drawworks/Drawworks_Solver_FreeTractionMotor.f90 create mode 100644 Equipments/Drawworks/Drawworks_StartUp.f90 create mode 100644 Equipments/Drawworks/Drawworks_Traction_motor_ClutchMode.f90 create mode 100644 Equipments/Drawworks/Drawworks_Traction_motor_ClutchMode_Dir.f90 create mode 100644 Equipments/Drawworks/Drawworks_Traction_motor_dawnmotion.f90 create mode 100644 Equipments/Drawworks/Drawworks_Traction_motor_dawnmotion_Dir.f90 create mode 100644 Equipments/Drawworks/Drawworks_VARIABLES.f90 create mode 100644 Equipments/DrillingConsole_ScrLEDs.f90 create mode 100644 Equipments/MudSystem/Circulation_Code_Select.f90 create mode 100644 Equipments/MudSystem/Deallocate_Normal_Circulation.f90 create mode 100644 Equipments/MudSystem/Disconnecting_Pipe.f90 create mode 100644 Equipments/MudSystem/Elements_Creation.f90 create mode 100644 Equipments/MudSystem/FillingWell_By_BellNipple.f90 create mode 100644 Equipments/MudSystem/Kick_Expansion_and_Contraction.f90 create mode 100644 Equipments/MudSystem/Kick_Influx.f90 create mode 100644 Equipments/MudSystem/Kick_Migration.f90 create mode 100644 Equipments/MudSystem/MudSystem.f90 create mode 100644 Equipments/MudSystem/MudSystemMain.f90 create mode 100644 Equipments/MudSystem/MudSystemStartup.f90 create mode 100644 Equipments/MudSystem/MudSystem_Variables.f90 create mode 100644 Equipments/MudSystem/Plot_Final_Mud_Elements.f90 create mode 100644 Equipments/MudSystem/Pump_and_Trip_In.f90 create mode 100644 Equipments/MudSystem/Trip_Out_andPump.f90 create mode 100644 Equipments/MudSystem/Utube1_and_Trip_In.f90 create mode 100644 Equipments/MudSystem/Utube2_and_Trip_In.f90 create mode 100644 Equipments/PowerLimits.f90 create mode 100644 Equipments/Pumps.old/ON_mode_simulation.f90 create mode 100644 Equipments/Pumps.old/Off_mode_Simulation.f90 create mode 100644 Equipments/Pumps.old/Pump1_OffMode_Solver.f90 create mode 100644 Equipments/Pumps.old/Pump1_OnMode_Solver.f90 create mode 100644 Equipments/Pumps.old/Pump2_OffMode_Solver.f90 create mode 100644 Equipments/Pumps.old/Pump2_OnMode_Solver.f90 create mode 100644 Equipments/Pumps.old/Pump3_OffMode_Solver.f90 create mode 100644 Equipments/Pumps.old/Pump3_OnMode_Solver.f90 create mode 100644 Equipments/Pumps.old/Pump_INPUTS.f90 create mode 100644 Equipments/Pumps.old/Pump_Solver.f90 create mode 100644 Equipments/Pumps.old/Pump_StartUp.f90 create mode 100644 Equipments/Pumps.old/Pump_Total_Counts.f90 create mode 100644 Equipments/Pumps.old/Pump_Traction_Motor.f90 create mode 100644 Equipments/Pumps.old/Pump_VARIABLES.f90 create mode 100644 Equipments/Pumps.old/PumpsMain.f90 create mode 100644 Equipments/Pumps.old/pump_diff_eqs.f90 create mode 100644 Equipments/Pumps.rar create mode 100644 Equipments/Pumps.rar.old create mode 100644 Equipments/Pumps/ON_mode_simulation.f90 create mode 100644 Equipments/Pumps/Off_mode_Simulation.f90 create mode 100644 Equipments/Pumps/Pump1_MainSolver.f90 create mode 100644 Equipments/Pumps/Pump1_OffMode_Solver.f90 create mode 100644 Equipments/Pumps/Pump1_OnMode_Solver.f90 create mode 100644 Equipments/Pumps/Pump2_MainSolver.f90 create mode 100644 Equipments/Pumps/Pump2_OffMode_Solver.f90 create mode 100644 Equipments/Pumps/Pump2_OnMode_Solver.f90 create mode 100644 Equipments/Pumps/Pump3_OffMode_Solver.f90 create mode 100644 Equipments/Pumps/Pump3_OnMode_Solver.f90 create mode 100644 Equipments/Pumps/Pump_INPUTS.f90 create mode 100644 Equipments/Pumps/Pump_Solver.f90 create mode 100644 Equipments/Pumps/Pump_StartUp.f90 create mode 100644 Equipments/Pumps/Pump_Total_Counts.f90 create mode 100644 Equipments/Pumps/Pump_Traction_Motor.f90 create mode 100644 Equipments/Pumps/Pump_VARIABLES.f90 create mode 100644 Equipments/Pumps/PumpsMain.f90 create mode 100644 Equipments/Pumps/pump_diff_eqs.f90 create mode 100644 Equipments/RotaryTable/RTMalfunction_MotorFailure.f90 create mode 100644 Equipments/RotaryTable/RTTorqueLimit.f90 create mode 100644 Equipments/RotaryTable/RTable_INPUTS.f90 create mode 100644 Equipments/RotaryTable/RTable_OffMode.f90 create mode 100644 Equipments/RotaryTable/RTable_Solver.f90 create mode 100644 Equipments/RotaryTable/RTable_StartUp.f90 create mode 100644 Equipments/RotaryTable/RTable_Traction_Motor.f90 create mode 100644 Equipments/RotaryTable/RTable_VARIABLES.f90 create mode 100644 Equipments/RotaryTable/RTable_diff_eqs.f90 create mode 100644 Equipments/RotaryTable/RotaryTableMain.f90 create mode 100644 Equipments/RotaryTable/rtable_variables.mod create mode 100644 Equipments/TopDrive/TopDriveMain.f90 create mode 100644 Equipments/TopDrive/TopDrive_INPUTS.f90 create mode 100644 Equipments/TopDrive/TopDrive_Malfunction_MotorFailure.f90 create mode 100644 Equipments/TopDrive/TopDrive_OffMode.f90 create mode 100644 Equipments/TopDrive/TopDrive_Solver.f90 create mode 100644 Equipments/TopDrive/TopDrive_StartUp.f90 create mode 100644 Equipments/TopDrive/TopDrive_TorqueLimit.f90 create mode 100644 Equipments/TopDrive/TopDrive_Traction_Motor.f90 create mode 100644 Equipments/TopDrive/TopDrive_VARIABLES.f90 create mode 100644 Equipments/TopDrive/TopDrive_diff_eqs.f90 create mode 100644 Equipments/TopDrive/topdrive_variables.mod create mode 100644 Equipments/equipments_PowerLimit.f90 create mode 100644 FluidFlow/Annulus_Property_Calculator.f90 create mode 100644 FluidFlow/Annulus_and_Openhole_Pressure_Distribution.f90 create mode 100644 FluidFlow/Flow_Startup.f90 create mode 100644 FluidFlow/Flow_Startup_VARIABLES.f90 create mode 100644 FluidFlow/FluidFlowMain.f90 create mode 100644 FluidFlow/Fluid_Flow_Solver.f90 create mode 100644 FluidFlow/Frictional_Press_Drop_Calc.f90 create mode 100644 FluidFlow/Horizontal_and_String_Pressure_Distribution.f90 create mode 100644 FluidFlow/Pressure_Display_VARIABLES.f90 create mode 100644 FluidFlow/Pressure_Distribution_VARIABLES.f90 create mode 100644 FluidFlow/String_Property_Calculator.f90 create mode 100644 FluidFlow/Utube.f90 create mode 100644 FluidFlow/Well_Pressure_Data_Transfer.f90 create mode 100644 FluidFlow/fricpressdropvars.mod create mode 100644 FluidFlow/kick/Formation_Information.f90 create mode 100644 FluidFlow/kick/Gas_Kick_Calculator.f90 create mode 100644 FluidFlow/kick/Kick_VARIABLES.f90 create mode 100644 FluidFlow/utubevars.mod create mode 100644 Geo/GeoMain.f90 create mode 100644 ReadMe.txt create mode 100644 Rop/Bit_Database.txt create mode 100644 Rop/Bit_Specification.f90 create mode 100644 Rop/JetImpactForce.f90 create mode 100644 Rop/ROP_MainCalculation.f90 create mode 100644 Rop/ROP_StartUp.f90 create mode 100644 Rop/RopMain.f90 create mode 100644 Rop/sROP_Module.f90 create mode 100644 Rop/sROP_Other_Variables.f90 create mode 100644 Rop/sROP_Variables.f90 create mode 100644 Rop/srop_other_variables.mod create mode 100644 Rop/srop_variables.mod create mode 100644 SimulationCore2.f90 create mode 100644 SimulationCore2.sln create mode 100644 SimulationCore2.u2d create mode 100644 SimulationCore2.vfproj create mode 100644 Simulator.f90 create mode 100644 Text1.txt create mode 100644 TorqueDrag/TD_DrillingSubs/MeshGeneration_FluidModule.f90 create mode 100644 TorqueDrag/TD_DrillingSubs/TD_AddComponents.f90 create mode 100644 TorqueDrag/TD_DrillingSubs/TD_BOPDiamCalculation.f90 create mode 100644 TorqueDrag/TD_DrillingSubs/TD_DrillStemConfiguration.f90 create mode 100644 TorqueDrag/TD_DrillingSubs/TD_RemoveComponents.f90 create mode 100644 TorqueDrag/TD_DrillingSubs/TD_StringConnectionModes.f90 create mode 100644 TorqueDrag/TD_DrillingSubs/TD_WellElementsConfiguration.f90 create mode 100644 TorqueDrag/TD_DrillingSubs/TD_WellGeoConfiguration.f90 create mode 100644 TorqueDrag/TD_DrillingSubs/TVD_Calculator.f90 create mode 100644 TorqueDrag/TD_Forces/TD_BouyancyFactor.f90 create mode 100644 TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceDownB.f90 create mode 100644 TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceDownBRot.f90 create mode 100644 TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceUpB.f90 create mode 100644 TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceUpBRot.f90 create mode 100644 TorqueDrag/TD_Forces/TD_CombinedMotionData.f90 create mode 100644 TorqueDrag/TD_Forces/TD_DropArea/TD_ForceDownD.f90 create mode 100644 TorqueDrag/TD_Forces/TD_DropArea/TD_ForceDownDRot.f90 create mode 100644 TorqueDrag/TD_Forces/TD_DropArea/TD_ForceUpD.f90 create mode 100644 TorqueDrag/TD_Forces/TD_DropArea/TD_ForceUpDRot.f90 create mode 100644 TorqueDrag/TD_Forces/TD_ForceCalculation.f90 create mode 100644 TorqueDrag/TD_Forces/TD_HookLoadCalculation.f90 create mode 100644 TorqueDrag/TD_Forces/TD_StaticHookLoadCalculation.f90 create mode 100644 TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceDownS.f90 create mode 100644 TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceDownSRot.f90 create mode 100644 TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceUpS.f90 create mode 100644 TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceUpSRot.f90 create mode 100644 TorqueDrag/TD_Forces/TD_StrainCalculation.f90 create mode 100644 TorqueDrag/TD_Forces/TD_TorqueCalculation.f90 create mode 100644 TorqueDrag/TD_Forces/TD_ViscousDragForce/TD_ViscousDragForce.f90 create mode 100644 TorqueDrag/TD_Forces/TD_WeightOnBitCalculation.f90 create mode 100644 TorqueDrag/TD_MainCalculations.f90 create mode 100644 TorqueDrag/TD_Modules/GeoElements_FluidModule.f90 create mode 100644 TorqueDrag/TD_Modules/TD_DrillStem.f90 create mode 100644 TorqueDrag/TD_Modules/TD_GeneralData.f90 create mode 100644 TorqueDrag/TD_Modules/TD_StringConnectionData.f90 create mode 100644 TorqueDrag/TD_Modules/TD_WellElements.f90 create mode 100644 TorqueDrag/TD_Modules/TD_WellGeometry.f90 create mode 100644 TorqueDrag/TD_Modules/td_wellgeometry.mod create mode 100644 TorqueDrag/TD_ReadDataSubroutines/TD_DrillStemReadData.f90 create mode 100644 TorqueDrag/TD_ReadDataSubroutines/TD_ForceReadData.f90 create mode 100644 TorqueDrag/TD_ReadDataSubroutines/TD_MudPropertiesReadData.f90 create mode 100644 TorqueDrag/TD_ReadDataSubroutines/TD_PipePropertiesReadData.f90 create mode 100644 TorqueDrag/TD_ReadDataSubroutines/TD_WellElementsReadData.f90 create mode 100644 TorqueDrag/TD_ReadDataSubroutines/TD_WellReadData.f90 create mode 100644 TorqueDrag/TD_StartUp/TD_DrillStemStartUp.f90 create mode 100644 TorqueDrag/TD_StartUp/TD_StartUp.f90 create mode 100644 TorqueDrag/TorqueDragMain.f90 create mode 100644 config.json create mode 100644 lib/x64/json_file_module.mod create mode 100644 lib/x64/json_kinds.mod create mode 100644 lib/x64/json_module.mod create mode 100644 lib/x64/json_parameters.mod create mode 100644 lib/x64/json_string_utilities.mod create mode 100644 lib/x64/json_value_module.mod create mode 100644 lib/x64/libjsonfortrand.lib create mode 100644 x64/Debug/ANNULAR.obj create mode 100644 x64/Debug/AirPump_Choke_Subs.obj create mode 100644 x64/Debug/AnnularMain.obj create mode 100644 x64/Debug/Annulus_Property_Calculator.obj create mode 100644 x64/Debug/Annulus_and_Openhole_Pressure_Distribution.obj create mode 100644 x64/Debug/BOP.obj create mode 100644 x64/Debug/BOPstartup.obj create mode 100644 x64/Debug/Bit_Specification.obj create mode 100644 x64/Debug/BlindRamsMain.obj create mode 100644 x64/Debug/BopStackMain.obj create mode 100644 x64/Debug/BuildLog.htm create mode 100644 x64/Debug/CAccumulator.obj create mode 100644 x64/Debug/CAccumulatorVariables.obj create mode 100644 x64/Debug/CArrangement.obj create mode 100644 x64/Debug/CBitProblems.obj create mode 100644 x64/Debug/CBitProblemsVariables.obj create mode 100644 x64/Debug/CBoolEventHandler.obj create mode 100644 x64/Debug/CBoolEventHandlerCollection.obj create mode 100644 x64/Debug/CBopControlPanel.obj create mode 100644 x64/Debug/CBopControlPanelVariables.obj create mode 100644 x64/Debug/CBopProblems.obj create mode 100644 x64/Debug/CBopProblemsVariables.obj create mode 100644 x64/Debug/CBopStack.obj create mode 100644 x64/Debug/CBopStackVariables.obj create mode 100644 x64/Debug/CBucketEnum.obj create mode 100644 x64/Debug/CBucketEnumVariables.obj create mode 100644 x64/Debug/CCasingLinerChoke.obj create mode 100644 x64/Debug/CCasingLinerChokeVariables.obj create mode 100644 x64/Debug/CChokeControlPanel.obj create mode 100644 x64/Debug/CChokeControlPanelVariables.obj create mode 100644 x64/Debug/CChokeManifold.obj create mode 100644 x64/Debug/CChokeManifoldVariables.obj create mode 100644 x64/Debug/CChokeProblems.obj create mode 100644 x64/Debug/CChokeProblemsVariables.obj create mode 100644 x64/Debug/CCloseKellyCockLedNotification.obj create mode 100644 x64/Debug/CCloseKellyCockLedNotificationVariables.obj create mode 100644 x64/Debug/CCloseSafetyValveLedNotification.obj create mode 100644 x64/Debug/CCloseSafetyValveLedNotificationVariables.obj create mode 100644 x64/Debug/CCommon.obj create mode 100644 x64/Debug/CCommonVariables.obj create mode 100644 x64/Debug/CDataDisplayConsole.obj create mode 100644 x64/Debug/CDataDisplayConsoleVariables.obj create mode 100644 x64/Debug/CDoubleEventHandler.obj create mode 100644 x64/Debug/CDoubleEventHandlerCollection.obj create mode 100644 x64/Debug/CDownHole.obj create mode 100644 x64/Debug/CDownHoleActions.obj create mode 100644 x64/Debug/CDownHoleTypes.obj create mode 100644 x64/Debug/CDownHoleVariables.obj create mode 100644 x64/Debug/CDrillStemProblems.obj create mode 100644 x64/Debug/CDrillStemProblemsVariables.obj create mode 100644 x64/Debug/CDrillWatch.obj create mode 100644 x64/Debug/CDrillWatchVariables.obj create mode 100644 x64/Debug/CDrillingConsole.obj create mode 100644 x64/Debug/CDrillingConsoleVariables.obj create mode 100644 x64/Debug/CElevatorConnectionEnum.obj create mode 100644 x64/Debug/CElevatorConnectionEnumVariables.obj create mode 100644 x64/Debug/CElevatorEnum.obj create mode 100644 x64/Debug/CElevatorEnumVariables.obj create mode 100644 x64/Debug/CEquipmentsConstants.obj create mode 100644 x64/Debug/CError.obj create mode 100644 x64/Debug/CFillMouseHoleLedNotification.obj create mode 100644 x64/Debug/CFillMouseHoleLedNotificationVariables.obj create mode 100644 x64/Debug/CFillupHeadPermission.obj create mode 100644 x64/Debug/CFillupHeadPermissionVariables.obj create mode 100644 x64/Debug/CFlowKellyDisconnectEnum.obj create mode 100644 x64/Debug/CFlowKellyDisconnectEnumVariables.obj create mode 100644 x64/Debug/CFlowPipeDisconnectEnum.obj create mode 100644 x64/Debug/CFlowPipeDisconnectEnumVariables.obj create mode 100644 x64/Debug/CFormation.obj create mode 100644 x64/Debug/CFormationVariables.obj create mode 100644 x64/Debug/CGaugesProblems.obj create mode 100644 x64/Debug/CGaugesProblemsVariables.obj create mode 100644 x64/Debug/CHOKE.obj create mode 100644 x64/Debug/CHOKE_LINE.obj create mode 100644 x64/Debug/CHOKE_VARIABLES.obj create mode 100644 x64/Debug/CHeadEnum.obj create mode 100644 x64/Debug/CHeadEnumVariables.obj create mode 100644 x64/Debug/CHoisting.obj create mode 100644 x64/Debug/CHoistingProblems.obj create mode 100644 x64/Debug/CHoistingProblemsVariables.obj create mode 100644 x64/Debug/CHoistingVariables.obj create mode 100644 x64/Debug/CHook.obj create mode 100644 x64/Debug/CHookActions.obj create mode 100644 x64/Debug/CHookHeight.obj create mode 100644 x64/Debug/CHookVariables.obj create mode 100644 x64/Debug/CIActionReference.obj create mode 100644 x64/Debug/CIbopEnum.obj create mode 100644 x64/Debug/CIbopEnumVariables.obj create mode 100644 x64/Debug/CIbopHeight.obj create mode 100644 x64/Debug/CInstallFillupHeadPermission.obj create mode 100644 x64/Debug/CInstallFillupHeadPermissionVariables.obj create mode 100644 x64/Debug/CInstallMudBucketPermission.obj create mode 100644 x64/Debug/CInstallMudBucketPermissionVariables.obj create mode 100644 x64/Debug/CIntegerArrayEventHandler.obj create mode 100644 x64/Debug/CIntegerArrayEventHandlerCollection.obj create mode 100644 x64/Debug/CIntegerEventHandler.obj create mode 100644 x64/Debug/CIntegerEventHandlerCollection.obj create mode 100644 x64/Debug/CIrIBopLedNotification.obj create mode 100644 x64/Debug/CIrIBopLedNotificationVariables.obj create mode 100644 x64/Debug/CIrIbopPermission.obj create mode 100644 x64/Debug/CIrIbopPermissionVariables.obj create mode 100644 x64/Debug/CIrSafetyValveLedNotification.obj create mode 100644 x64/Debug/CIrSafetyValveLedNotificationVariables.obj create mode 100644 x64/Debug/CIrSafetyValvePermission.obj create mode 100644 x64/Debug/CIrSafetyValvePermissionVariables.obj create mode 100644 x64/Debug/CKellyConnectionEnum.obj create mode 100644 x64/Debug/CKellyConnectionEnumVariables.obj create mode 100644 x64/Debug/CKellyEnum.obj create mode 100644 x64/Debug/CKellyEnumVariables.obj create mode 100644 x64/Debug/CKickProblems.obj create mode 100644 x64/Debug/CKickProblemsVariables.obj create mode 100644 x64/Debug/CLatchLedNotification.obj create mode 100644 x64/Debug/CLatchLedNotificationVariables.obj create mode 100644 x64/Debug/CLesson.obj create mode 100644 x64/Debug/CLessonVariables.obj create mode 100644 x64/Debug/CLog1.obj create mode 100644 x64/Debug/CLog2.obj create mode 100644 x64/Debug/CLog3.obj create mode 100644 x64/Debug/CLog4.obj create mode 100644 x64/Debug/CLog5.obj create mode 100644 x64/Debug/CLostProblems.obj create mode 100644 x64/Debug/CLostProblemsVariables.obj create mode 100644 x64/Debug/CManifolds.obj create mode 100644 x64/Debug/CMouseHoleEnum.obj create mode 100644 x64/Debug/CMouseHoleEnumVariables.obj create mode 100644 x64/Debug/CMudProperties.obj create mode 100644 x64/Debug/CMudPropertiesVariables.obj create mode 100644 x64/Debug/CMudTreatmentProblems.obj create mode 100644 x64/Debug/CMudTreatmentProblemsVariables.obj create mode 100644 x64/Debug/CNearFloorConnection.obj create mode 100644 x64/Debug/COpenKellyCockLedNotification.obj create mode 100644 x64/Debug/COpenKellyCockLedNotificationVariables.obj create mode 100644 x64/Debug/COpenSafetyValveLedNotification.obj create mode 100644 x64/Debug/COpenSafetyValveLedNotificationVariables.obj create mode 100644 x64/Debug/COperationConditionEnum.obj create mode 100644 x64/Debug/COperationConditionEnumVariables.obj create mode 100644 x64/Debug/COperationScenariosMain.obj create mode 100644 x64/Debug/COperationScenariosSettings.obj create mode 100644 x64/Debug/COperationScenariosVariables.obj create mode 100644 x64/Debug/COtherProblems.obj create mode 100644 x64/Debug/COtherProblemsVariables.obj create mode 100644 x64/Debug/CPath.obj create mode 100644 x64/Debug/CPathChangeEvents.obj create mode 100644 x64/Debug/CPathGeneration.obj create mode 100644 x64/Debug/CPathGenerationVariables.obj create mode 100644 x64/Debug/CPower.obj create mode 100644 x64/Debug/CPowerVariables.obj create mode 100644 x64/Debug/CProblemDifinition.obj create mode 100644 x64/Debug/CPumpProblems.obj create mode 100644 x64/Debug/CPumpProblemsVariables.obj create mode 100644 x64/Debug/CPumps.obj create mode 100644 x64/Debug/CPumpsVariables.obj create mode 100644 x64/Debug/CQuery.obj create mode 100644 x64/Debug/CRealEventHandler.obj create mode 100644 x64/Debug/CRealEventHandlerCollection.obj create mode 100644 x64/Debug/CRemoveFillupHeadPermission.obj create mode 100644 x64/Debug/CRemoveFillupHeadPermissionVariables.obj create mode 100644 x64/Debug/CRemoveMudBucketPermission.obj create mode 100644 x64/Debug/CRemoveMudBucketPermissionVariables.obj create mode 100644 x64/Debug/CReservoir.obj create mode 100644 x64/Debug/CReservoirVariables.obj create mode 100644 x64/Debug/CRigSize.obj create mode 100644 x64/Debug/CRigSizeVariables.obj create mode 100644 x64/Debug/CRotaryProblems.obj create mode 100644 x64/Debug/CRotaryProblemsVariables.obj create mode 100644 x64/Debug/CSafetyValveEnum.obj create mode 100644 x64/Debug/CSafetyValveEnumVariables.obj create mode 100644 x64/Debug/CSafetyValveHeight.obj create mode 100644 x64/Debug/CScaleRange.obj create mode 100644 x64/Debug/CShoe.obj create mode 100644 x64/Debug/CShoeVariables.obj create mode 100644 x64/Debug/CSimulationThreads.obj create mode 100644 x64/Debug/CSimulationVariables.obj create mode 100644 x64/Debug/CSlackOff.obj create mode 100644 x64/Debug/CSlipsEnum.obj create mode 100644 x64/Debug/CSlipsEnumVariables.obj create mode 100644 x64/Debug/CSlipsNotification.obj create mode 100644 x64/Debug/CSlipsNotificationVariables.obj create mode 100644 x64/Debug/CSounds.obj create mode 100644 x64/Debug/CStack.obj create mode 100644 x64/Debug/CStandPipeManifold.obj create mode 100644 x64/Debug/CStandPipeManifoldVariables.obj create mode 100644 x64/Debug/CStandRack.obj create mode 100644 x64/Debug/CStringConfiguration.obj create mode 100644 x64/Debug/CStringConfigurationVariables.obj create mode 100644 x64/Debug/CStringPressure.obj create mode 100644 x64/Debug/CStringUpdate.obj create mode 100644 x64/Debug/CStringUpdateVariables.obj create mode 100644 x64/Debug/CStudentStation.obj create mode 100644 x64/Debug/CStudentStationVariables.obj create mode 100644 x64/Debug/CSwingDrillPermission.obj create mode 100644 x64/Debug/CSwingDrillPermissionVariables.obj create mode 100644 x64/Debug/CSwingEnum.obj create mode 100644 x64/Debug/CSwingEnumVariables.obj create mode 100644 x64/Debug/CSwingLedNotification.obj create mode 100644 x64/Debug/CSwingLedNotificationVariables.obj create mode 100644 x64/Debug/CSwingOffPermission.obj create mode 100644 x64/Debug/CSwingOffPermissionVariables.obj create mode 100644 x64/Debug/CSwingTiltPermission.obj create mode 100644 x64/Debug/CSwingTiltPermissionVariables.obj create mode 100644 x64/Debug/CTanks.obj create mode 100644 x64/Debug/CTanksVariables.obj create mode 100644 x64/Debug/CTdsBackupClamp.obj create mode 100644 x64/Debug/CTdsBackupClampVariables.obj create mode 100644 x64/Debug/CTdsConnectionModesEnum.obj create mode 100644 x64/Debug/CTdsConnectionModesEnumVariables.obj create mode 100644 x64/Debug/CTdsElevatorModesEnum.obj create mode 100644 x64/Debug/CTdsElevatorModesEnumVariables.obj create mode 100644 x64/Debug/CTdsIbopLedNotification.obj create mode 100644 x64/Debug/CTdsIbopLedNotificationVariables.obj create mode 100644 x64/Debug/CTdsPowerLedNotification.obj create mode 100644 x64/Debug/CTdsPowerLedNotificationVariables.obj create mode 100644 x64/Debug/CTdsSpineEnum.obj create mode 100644 x64/Debug/CTdsSpineEnumVariables.obj create mode 100644 x64/Debug/CTdsStemJointHeight.obj create mode 100644 x64/Debug/CTdsSwingEnum.obj create mode 100644 x64/Debug/CTdsSwingEnumVariables.obj create mode 100644 x64/Debug/CTdsTongEnum.obj create mode 100644 x64/Debug/CTdsTongEnumVariables.obj create mode 100644 x64/Debug/CTdsTorqueWrenchLedNotification.obj create mode 100644 x64/Debug/CTdsTorqueWrenchLedNotificationVariables.obj create mode 100644 x64/Debug/CTimer.obj create mode 100644 x64/Debug/CTimerLegacy.obj create mode 100644 x64/Debug/CTongEnum.obj create mode 100644 x64/Debug/CTongEnumVariables.obj create mode 100644 x64/Debug/CTongNotification.obj create mode 100644 x64/Debug/CTongNotificationVariables.obj create mode 100644 x64/Debug/CTopDrivePanel.obj create mode 100644 x64/Debug/CTopDrivePanelVariables.obj create mode 100644 x64/Debug/CUnityInputs.obj create mode 100644 x64/Debug/CUnityOutputs.obj create mode 100644 x64/Debug/CUnlatchLedNotification.obj create mode 100644 x64/Debug/CUnlatchLedNotificationVariables.obj create mode 100644 x64/Debug/CVoidEventHandler.obj create mode 100644 x64/Debug/CVoidEventHandlerCollection.obj create mode 100644 x64/Debug/CWarnings.obj create mode 100644 x64/Debug/CWarningsActions.obj create mode 100644 x64/Debug/CWarningsVariables.obj create mode 100644 x64/Debug/CWellSurveyData.obj create mode 100644 x64/Debug/CWellSurveyDataVariables.obj create mode 100644 x64/Debug/CZeroStringSpeed.obj create mode 100644 x64/Debug/ChokeControlMain.obj create mode 100644 x64/Debug/ChokeLineMain.obj create mode 100644 x64/Debug/ChokeStartup.obj create mode 100644 x64/Debug/Circulation_Code_Select.obj create mode 100644 x64/Debug/DWBrakeSound.obj create mode 100644 x64/Debug/DWFixModeMotion.obj create mode 100644 x64/Debug/DWMalfunction_ClutchDisengage.obj create mode 100644 x64/Debug/DWMalfunction_ClutchEngage.obj create mode 100644 x64/Debug/DWMalfunction_MotorFailure.obj create mode 100644 x64/Debug/Deallocate_Normal_Circulation.obj create mode 100644 x64/Debug/Disconnecting_Pipe.obj create mode 100644 x64/Debug/DrawworksMain.obj create mode 100644 x64/Debug/Drawworks_Diff_Equations.obj create mode 100644 x64/Debug/Drawworks_Direction.obj create mode 100644 x64/Debug/Drawworks_Free_Traction_motor.obj create mode 100644 x64/Debug/Drawworks_Free_Traction_motor_Dir.obj create mode 100644 x64/Debug/Drawworks_Free_Traction_motor_dawn_motion.obj create mode 100644 x64/Debug/Drawworks_INPUTS.obj create mode 100644 x64/Debug/Drawworks_Solver.obj create mode 100644 x64/Debug/Drawworks_Solver_FreeTractionMotor.obj create mode 100644 x64/Debug/Drawworks_StartUp.obj create mode 100644 x64/Debug/Drawworks_Traction_motor_ClutchMode.obj create mode 100644 x64/Debug/Drawworks_Traction_motor_ClutchMode_Dir.obj create mode 100644 x64/Debug/Drawworks_Traction_motor_dawnmotion.obj create mode 100644 x64/Debug/Drawworks_Traction_motor_dawnmotion_Dir.obj create mode 100644 x64/Debug/Drawworks_VARIABLES.obj create mode 100644 x64/Debug/DrillingConsole_ScrLEDs.obj create mode 100644 x64/Debug/DynamicDoubleArray.obj create mode 100644 x64/Debug/DynamicIntegerArray.obj create mode 100644 x64/Debug/DynamicLogicalArray.obj create mode 100644 x64/Debug/DynamicRealArray.obj create mode 100644 x64/Debug/Elements_Creation.obj create mode 100644 x64/Debug/FillingWell_By_BellNipple.obj create mode 100644 x64/Debug/Flow_Startup.obj create mode 100644 x64/Debug/Flow_Startup_VARIABLES.obj create mode 100644 x64/Debug/FluidFlowMain.obj create mode 100644 x64/Debug/Fluid_Flow_Solver.obj create mode 100644 x64/Debug/Formation_Information.obj create mode 100644 x64/Debug/Frictional_Press_Drop_Calc.obj create mode 100644 x64/Debug/Gas_Kick_Calculator.obj create mode 100644 x64/Debug/GeoElements_FluidModule.obj create mode 100644 x64/Debug/GeoMain.obj create mode 100644 x64/Debug/Horizontal_and_String_Pressure_Distribution.obj create mode 100644 x64/Debug/JetImpactForce.obj create mode 100644 x64/Debug/KILL_LINE.obj create mode 100644 x64/Debug/Kick_Expansion_and_Contraction.obj create mode 100644 x64/Debug/Kick_Influx.obj create mode 100644 x64/Debug/Kick_Migration.obj create mode 100644 x64/Debug/Kick_VARIABLES.obj create mode 100644 x64/Debug/KillLineMain.obj create mode 100644 x64/Debug/LOSS_INPUTS.obj create mode 100644 x64/Debug/MeshGeneration_FluidModule.obj create mode 100644 x64/Debug/MudSystem.obj create mode 100644 x64/Debug/MudSystemMain.obj create mode 100644 x64/Debug/MudSystemStartup.obj create mode 100644 x64/Debug/MudSystem_Variables.obj create mode 100644 x64/Debug/ON_mode_simulation.obj create mode 100644 x64/Debug/Off_mode_Simulation.obj create mode 100644 x64/Debug/PIPE_RAM1.obj create mode 100644 x64/Debug/PIPE_RAM2.obj create mode 100644 x64/Debug/PipeRams1Main.obj create mode 100644 x64/Debug/PipeRams2Main.obj create mode 100644 x64/Debug/Plot_Final_Mud_Elements.obj create mode 100644 x64/Debug/PowerLimits.obj create mode 100644 x64/Debug/Pressure_Display_VARIABLES.obj create mode 100644 x64/Debug/Pressure_Distribution_VARIABLES.obj create mode 100644 x64/Debug/Pump1_MainSolver.obj create mode 100644 x64/Debug/Pump1_OffMode_Solver.obj create mode 100644 x64/Debug/Pump1_OnMode_Solver.obj create mode 100644 x64/Debug/Pump2_MainSolver.obj create mode 100644 x64/Debug/Pump2_OffMode_Solver.obj create mode 100644 x64/Debug/Pump2_OnMode_Solver.obj create mode 100644 x64/Debug/Pump3_OffMode_Solver.obj create mode 100644 x64/Debug/Pump3_OnMode_Solver.obj create mode 100644 x64/Debug/Pump_INPUTS.obj create mode 100644 x64/Debug/Pump_Solver.obj create mode 100644 x64/Debug/Pump_StartUp.obj create mode 100644 x64/Debug/Pump_Total_Counts.obj create mode 100644 x64/Debug/Pump_Traction_Motor.obj create mode 100644 x64/Debug/Pump_VARIABLES.obj create mode 100644 x64/Debug/Pump_and_Trip_In.obj create mode 100644 x64/Debug/PumpsMain.obj create mode 100644 x64/Debug/ROP_MainCalculation.obj create mode 100644 x64/Debug/ROP_StartUp.obj create mode 100644 x64/Debug/RTMalfunction_MotorFailure.obj create mode 100644 x64/Debug/RTTorqueLimit.obj create mode 100644 x64/Debug/RTable_INPUTS.obj create mode 100644 x64/Debug/RTable_OffMode.obj create mode 100644 x64/Debug/RTable_Solver.obj create mode 100644 x64/Debug/RTable_StartUp.obj create mode 100644 x64/Debug/RTable_Traction_Motor.obj create mode 100644 x64/Debug/RTable_VARIABLES.obj create mode 100644 x64/Debug/RTable_diff_eqs.obj create mode 100644 x64/Debug/RopMain.obj create mode 100644 x64/Debug/RotaryTableMain.obj create mode 100644 x64/Debug/SHEAR_RAM.obj create mode 100644 x64/Debug/SimulationCore2.exe create mode 100644 x64/Debug/SimulationCore2.exe.intermediate.manifest create mode 100644 x64/Debug/SimulationCore2.exp create mode 100644 x64/Debug/SimulationCore2.lib create mode 100644 x64/Debug/SimulationCore2.obj create mode 100644 x64/Debug/SimulationCore2.pdb create mode 100644 x64/Debug/Simulator.obj create mode 100644 x64/Debug/String_Property_Calculator.obj create mode 100644 x64/Debug/TD_AddComponents.obj create mode 100644 x64/Debug/TD_BOPDiamCalculation.obj create mode 100644 x64/Debug/TD_BouyancyFactor.obj create mode 100644 x64/Debug/TD_CombinedMotionData.obj create mode 100644 x64/Debug/TD_DrillStem.obj create mode 100644 x64/Debug/TD_DrillStemConfiguration.obj create mode 100644 x64/Debug/TD_DrillStemReadData.obj create mode 100644 x64/Debug/TD_DrillStemStartUp.obj create mode 100644 x64/Debug/TD_ForceCalculation.obj create mode 100644 x64/Debug/TD_ForceDownB.obj create mode 100644 x64/Debug/TD_ForceDownBRot.obj create mode 100644 x64/Debug/TD_ForceDownD.obj create mode 100644 x64/Debug/TD_ForceDownDRot.obj create mode 100644 x64/Debug/TD_ForceDownS.obj create mode 100644 x64/Debug/TD_ForceDownSRot.obj create mode 100644 x64/Debug/TD_ForceReadData.obj create mode 100644 x64/Debug/TD_ForceUpB.obj create mode 100644 x64/Debug/TD_ForceUpBRot.obj create mode 100644 x64/Debug/TD_ForceUpD.obj create mode 100644 x64/Debug/TD_ForceUpDRot.obj create mode 100644 x64/Debug/TD_ForceUpS.obj create mode 100644 x64/Debug/TD_ForceUpSRot.obj create mode 100644 x64/Debug/TD_GeneralData.obj create mode 100644 x64/Debug/TD_HookLoadCalculation.obj create mode 100644 x64/Debug/TD_MainCalculations.obj create mode 100644 x64/Debug/TD_MudPropertiesReadData.obj create mode 100644 x64/Debug/TD_PipePropertiesReadData.obj create mode 100644 x64/Debug/TD_RemoveComponents.obj create mode 100644 x64/Debug/TD_StartUp.obj create mode 100644 x64/Debug/TD_StaticHookLoadCalculation.obj create mode 100644 x64/Debug/TD_StrainCalculation.obj create mode 100644 x64/Debug/TD_StringConnectionData.obj create mode 100644 x64/Debug/TD_StringConnectionModes.obj create mode 100644 x64/Debug/TD_TorqueCalculation.obj create mode 100644 x64/Debug/TD_ViscousDragForce.obj create mode 100644 x64/Debug/TD_WeightOnBitCalculation.obj create mode 100644 x64/Debug/TD_WellElements.obj create mode 100644 x64/Debug/TD_WellElementsConfiguration.obj create mode 100644 x64/Debug/TD_WellElementsReadData.obj create mode 100644 x64/Debug/TD_WellGeoConfiguration.obj create mode 100644 x64/Debug/TD_WellGeometry.obj create mode 100644 x64/Debug/TD_WellReadData.obj create mode 100644 x64/Debug/TVD_Calculator.obj create mode 100644 x64/Debug/TestOperationScenarios.obj create mode 100644 x64/Debug/TestOperationScenariosVariables.obj create mode 100644 x64/Debug/TopDriveMain.obj create mode 100644 x64/Debug/TopDrive_INPUTS.obj create mode 100644 x64/Debug/TopDrive_Malfunction_MotorFailure.obj create mode 100644 x64/Debug/TopDrive_OffMode.obj create mode 100644 x64/Debug/TopDrive_Solver.obj create mode 100644 x64/Debug/TopDrive_StartUp.obj create mode 100644 x64/Debug/TopDrive_TorqueLimit.obj create mode 100644 x64/Debug/TopDrive_Traction_Motor.obj create mode 100644 x64/Debug/TopDrive_VARIABLES.obj create mode 100644 x64/Debug/TopDrive_diff_eqs.obj create mode 100644 x64/Debug/TorqueDragMain.obj create mode 100644 x64/Debug/Trip_Out_andPump.obj create mode 100644 x64/Debug/Utube.obj create mode 100644 x64/Debug/Utube1_and_Trip_In.obj create mode 100644 x64/Debug/Utube2_and_Trip_In.obj create mode 100644 x64/Debug/VARIABLES.obj create mode 100644 x64/Debug/Well_Pressure_Data_Transfer.obj create mode 100644 x64/Debug/adddynamicarray__genmod.f90 create mode 100644 x64/Debug/adddynamicarray__genmod.mod create mode 100644 x64/Debug/airpump_code__genmod.f90 create mode 100644 x64/Debug/airpump_code__genmod.mod create mode 100644 x64/Debug/airpump_code_choke__genmod.f90 create mode 100644 x64/Debug/airpump_code_choke__genmod.mod create mode 100644 x64/Debug/annular__genmod.f90 create mode 100644 x64/Debug/annular__genmod.mod create mode 100644 x64/Debug/annular_sub__genmod.f90 create mode 100644 x64/Debug/annular_sub__genmod.mod create mode 100644 x64/Debug/annularmain.mod create mode 100644 x64/Debug/annuluspropertycalculator__genmod.f90 create mode 100644 x64/Debug/annuluspropertycalculator__genmod.mod create mode 100644 x64/Debug/bit_spec__genmod.f90 create mode 100644 x64/Debug/bit_spec__genmod.mod create mode 100644 x64/Debug/bit_specification__genmod.f90 create mode 100644 x64/Debug/bit_specification__genmod.mod create mode 100644 x64/Debug/blindramsmain.mod create mode 100644 x64/Debug/bop.mod create mode 100644 x64/Debug/bop_code__genmod.f90 create mode 100644 x64/Debug/bop_code__genmod.mod create mode 100644 x64/Debug/bop_codeannular__genmod.f90 create mode 100644 x64/Debug/bop_codeannular__genmod.mod create mode 100644 x64/Debug/bop_startup__genmod.f90 create mode 100644 x64/Debug/bop_startup__genmod.mod create mode 100644 x64/Debug/bopstackmain.mod create mode 100644 x64/Debug/caccumulator.mod create mode 100644 x64/Debug/caccumulatorvariables.mod create mode 100644 x64/Debug/calculate_rop__genmod.f90 create mode 100644 x64/Debug/calculate_rop__genmod.mod create mode 100644 x64/Debug/carrangement.mod create mode 100644 x64/Debug/cbitproblems.mod create mode 100644 x64/Debug/cbitproblemsvariables.mod create mode 100644 x64/Debug/cbooleventhandler.mod create mode 100644 x64/Debug/cbooleventhandlercollection.mod create mode 100644 x64/Debug/cbopcontrolpanel.mod create mode 100644 x64/Debug/cbopcontrolpanelvariables.mod create mode 100644 x64/Debug/cbopproblems.mod create mode 100644 x64/Debug/cbopproblemsvariables.mod create mode 100644 x64/Debug/cbopstack.mod create mode 100644 x64/Debug/cbopstackvariables.mod create mode 100644 x64/Debug/cbucketenum.mod create mode 100644 x64/Debug/cbucketenumvariables.mod create mode 100644 x64/Debug/ccasinglinerchoke.mod create mode 100644 x64/Debug/ccasinglinerchokevariables.mod create mode 100644 x64/Debug/cchokecontrolpanel.mod create mode 100644 x64/Debug/cchokecontrolpanelvariables.mod create mode 100644 x64/Debug/cchokemanifold.mod create mode 100644 x64/Debug/cchokemanifoldvariables.mod create mode 100644 x64/Debug/cchokeproblems.mod create mode 100644 x64/Debug/cchokeproblemsvariables.mod create mode 100644 x64/Debug/cclosekellycocklednotification.mod create mode 100644 x64/Debug/cclosekellycocklednotificationvariables.mod create mode 100644 x64/Debug/cclosesafetyvalvelednotification.mod create mode 100644 x64/Debug/cclosesafetyvalvelednotificationvariables.mod create mode 100644 x64/Debug/ccommon.mod create mode 100644 x64/Debug/ccommonvariables.mod create mode 100644 x64/Debug/cdatadisplayconsole.mod create mode 100644 x64/Debug/cdatadisplayconsolevariables.mod create mode 100644 x64/Debug/cdoubleeventhandler.mod create mode 100644 x64/Debug/cdoubleeventhandlercollection.mod create mode 100644 x64/Debug/cdownhole.mod create mode 100644 x64/Debug/cdownholeactions.mod create mode 100644 x64/Debug/cdownholetypes.mod create mode 100644 x64/Debug/cdownholevariables.mod create mode 100644 x64/Debug/cdrillingconsole.mod create mode 100644 x64/Debug/cdrillingconsolevariables.mod create mode 100644 x64/Debug/cdrillstemproblems.mod create mode 100644 x64/Debug/cdrillstemproblemsvariables.mod create mode 100644 x64/Debug/cdrillwatch.mod create mode 100644 x64/Debug/cdrillwatchvariables.mod create mode 100644 x64/Debug/celevatorconnectionenum.mod create mode 100644 x64/Debug/celevatorconnectionenumvariables.mod create mode 100644 x64/Debug/celevatorenum.mod create mode 100644 x64/Debug/celevatorenumvariables.mod create mode 100644 x64/Debug/cequipmentsconstants.mod create mode 100644 x64/Debug/cerror.mod create mode 100644 x64/Debug/cfillmouseholelednotification.mod create mode 100644 x64/Debug/cfillmouseholelednotificationvariables.mod create mode 100644 x64/Debug/cfillupheadpermission.mod create mode 100644 x64/Debug/cfillupheadpermissionvariables.mod create mode 100644 x64/Debug/cflowkellydisconnectenum.mod create mode 100644 x64/Debug/cflowkellydisconnectenumvariables.mod create mode 100644 x64/Debug/cflowpipedisconnectenum.mod create mode 100644 x64/Debug/cflowpipedisconnectenumvariables.mod create mode 100644 x64/Debug/cformation.mod create mode 100644 x64/Debug/cformationvariables.mod create mode 100644 x64/Debug/cgaugesproblems.mod create mode 100644 x64/Debug/cgaugesproblemsvariables.mod create mode 100644 x64/Debug/cheadenum.mod create mode 100644 x64/Debug/cheadenumvariables.mod create mode 100644 x64/Debug/choisting.mod create mode 100644 x64/Debug/choistingproblems.mod create mode 100644 x64/Debug/choistingproblemsvariables.mod create mode 100644 x64/Debug/choistingvariables.mod create mode 100644 x64/Debug/choke.mod create mode 100644 x64/Debug/choke_gassound__genmod.f90 create mode 100644 x64/Debug/choke_gassound__genmod.mod create mode 100644 x64/Debug/choke_line__genmod.f90 create mode 100644 x64/Debug/choke_line__genmod.mod create mode 100644 x64/Debug/choke_line_sub__genmod.f90 create mode 100644 x64/Debug/choke_line_sub__genmod.mod create mode 100644 x64/Debug/choke_startup__genmod.f90 create mode 100644 x64/Debug/choke_startup__genmod.mod create mode 100644 x64/Debug/chokecontrolmain.mod create mode 100644 x64/Debug/chokelinemain.mod create mode 100644 x64/Debug/chokelinemud__genmod.f90 create mode 100644 x64/Debug/chokelinemud__genmod.mod create mode 100644 x64/Debug/chokevariables.mod create mode 100644 x64/Debug/chook.mod create mode 100644 x64/Debug/chookactions.mod create mode 100644 x64/Debug/chookheight.mod create mode 100644 x64/Debug/chookvariables.mod create mode 100644 x64/Debug/ciactionreference.mod create mode 100644 x64/Debug/cibopenum.mod create mode 100644 x64/Debug/cibopenumvariables.mod create mode 100644 x64/Debug/cibopheight.mod create mode 100644 x64/Debug/cinstallfillupheadpermission.mod create mode 100644 x64/Debug/cinstallfillupheadpermissionvariables.mod create mode 100644 x64/Debug/cinstallmudbucketpermission.mod create mode 100644 x64/Debug/cinstallmudbucketpermissionvariables.mod create mode 100644 x64/Debug/cintegerarrayeventhandler.mod create mode 100644 x64/Debug/cintegerarrayeventhandlercollection.mod create mode 100644 x64/Debug/cintegereventhandler.mod create mode 100644 x64/Debug/cintegereventhandlercollection.mod create mode 100644 x64/Debug/circulationcodeselect__genmod.f90 create mode 100644 x64/Debug/circulationcodeselect__genmod.mod create mode 100644 x64/Debug/ciriboplednotification.mod create mode 100644 x64/Debug/ciriboplednotificationvariables.mod create mode 100644 x64/Debug/ciriboppermission.mod create mode 100644 x64/Debug/ciriboppermissionvariables.mod create mode 100644 x64/Debug/cirsafetyvalvelednotification.mod create mode 100644 x64/Debug/cirsafetyvalvelednotificationvariables.mod create mode 100644 x64/Debug/cirsafetyvalvepermission.mod create mode 100644 x64/Debug/cirsafetyvalvepermissionvariables.mod create mode 100644 x64/Debug/ckellyconnectionenum.mod create mode 100644 x64/Debug/ckellyconnectionenumvariables.mod create mode 100644 x64/Debug/ckellyenum.mod create mode 100644 x64/Debug/ckellyenumvariables.mod create mode 100644 x64/Debug/ckickproblems.mod create mode 100644 x64/Debug/ckickproblemsvariables.mod create mode 100644 x64/Debug/clatchlednotification.mod create mode 100644 x64/Debug/clatchlednotificationvariables.mod create mode 100644 x64/Debug/clesson.mod create mode 100644 x64/Debug/clessonvariables.mod create mode 100644 x64/Debug/clog1.mod create mode 100644 x64/Debug/clog2.mod create mode 100644 x64/Debug/clog3.mod create mode 100644 x64/Debug/clog4.mod create mode 100644 x64/Debug/clog5.mod create mode 100644 x64/Debug/clostproblems.mod create mode 100644 x64/Debug/clostproblemsvariables.mod create mode 100644 x64/Debug/cmanifolds.mod create mode 100644 x64/Debug/cmouseholeenum.mod create mode 100644 x64/Debug/cmouseholeenumvariables.mod create mode 100644 x64/Debug/cmudproperties.mod create mode 100644 x64/Debug/cmudpropertiesvariables.mod create mode 100644 x64/Debug/cmudtreatmentproblems.mod create mode 100644 x64/Debug/cmudtreatmentproblemsvariables.mod create mode 100644 x64/Debug/cnearfloorconnection.mod create mode 100644 x64/Debug/copenkellycocklednotification.mod create mode 100644 x64/Debug/copenkellycocklednotificationvariables.mod create mode 100644 x64/Debug/copensafetyvalvelednotification.mod create mode 100644 x64/Debug/copensafetyvalvelednotificationvariables.mod create mode 100644 x64/Debug/coperationconditionenum.mod create mode 100644 x64/Debug/coperationconditionenumvariables.mod create mode 100644 x64/Debug/coperationscenariosmain.mod create mode 100644 x64/Debug/coperationscenariossettings.mod create mode 100644 x64/Debug/coperationscenariosvariables.mod create mode 100644 x64/Debug/cotherproblems.mod create mode 100644 x64/Debug/cotherproblemsvariables.mod create mode 100644 x64/Debug/cpath.mod create mode 100644 x64/Debug/cpathchangeevents.mod create mode 100644 x64/Debug/cpathgeneration.mod create mode 100644 x64/Debug/cpathgenerationvariables.mod create mode 100644 x64/Debug/cpower.mod create mode 100644 x64/Debug/cpowervariables.mod create mode 100644 x64/Debug/cproblemdifinition.mod create mode 100644 x64/Debug/cpumpproblems.mod create mode 100644 x64/Debug/cpumpproblemsvariables.mod create mode 100644 x64/Debug/cpumps.mod create mode 100644 x64/Debug/cpumpsvariables.mod create mode 100644 x64/Debug/cquery.mod create mode 100644 x64/Debug/crealeventhandler.mod create mode 100644 x64/Debug/crealeventhandlercollection.mod create mode 100644 x64/Debug/cremovefillupheadpermission.mod create mode 100644 x64/Debug/cremovefillupheadpermissionvariables.mod create mode 100644 x64/Debug/cremovemudbucketpermission.mod create mode 100644 x64/Debug/cremovemudbucketpermissionvariables.mod create mode 100644 x64/Debug/creservoir.mod create mode 100644 x64/Debug/creservoirvariables.mod create mode 100644 x64/Debug/crigsize.mod create mode 100644 x64/Debug/crigsizevariables.mod create mode 100644 x64/Debug/crotaryproblems.mod create mode 100644 x64/Debug/crotaryproblemsvariables.mod create mode 100644 x64/Debug/csafetyvalveenum.mod create mode 100644 x64/Debug/csafetyvalveenumvariables.mod create mode 100644 x64/Debug/csafetyvalveheight.mod create mode 100644 x64/Debug/cscalerange.mod create mode 100644 x64/Debug/cshoe.mod create mode 100644 x64/Debug/cshoevariables.mod create mode 100644 x64/Debug/csimulationthreads.mod create mode 100644 x64/Debug/csimulationvariables.mod create mode 100644 x64/Debug/cslackoff.mod create mode 100644 x64/Debug/cslipsenum.mod create mode 100644 x64/Debug/cslipsenumvariables.mod create mode 100644 x64/Debug/cslipsnotification.mod create mode 100644 x64/Debug/cslipsnotificationvariables.mod create mode 100644 x64/Debug/csounds.mod create mode 100644 x64/Debug/cstack.mod create mode 100644 x64/Debug/cstandpipemanifold.mod create mode 100644 x64/Debug/cstandpipemanifoldvariables.mod create mode 100644 x64/Debug/cstandrack.mod create mode 100644 x64/Debug/cstringconfiguration.mod create mode 100644 x64/Debug/cstringconfigurationvariables.mod create mode 100644 x64/Debug/cstringpressure.mod create mode 100644 x64/Debug/cstringupdate.mod create mode 100644 x64/Debug/cstringupdatevariables.mod create mode 100644 x64/Debug/cstudentstation.mod create mode 100644 x64/Debug/cstudentstationvariables.mod create mode 100644 x64/Debug/cswingdrillpermission.mod create mode 100644 x64/Debug/cswingdrillpermissionvariables.mod create mode 100644 x64/Debug/cswingenum.mod create mode 100644 x64/Debug/cswingenumvariables.mod create mode 100644 x64/Debug/cswinglednotification.mod create mode 100644 x64/Debug/cswinglednotificationvariables.mod create mode 100644 x64/Debug/cswingoffpermission.mod create mode 100644 x64/Debug/cswingoffpermissionvariables.mod create mode 100644 x64/Debug/cswingtiltpermission.mod create mode 100644 x64/Debug/cswingtiltpermissionvariables.mod create mode 100644 x64/Debug/ctanks.mod create mode 100644 x64/Debug/ctanksvariables.mod create mode 100644 x64/Debug/ctdsbackupclamp.mod create mode 100644 x64/Debug/ctdsbackupclampvariables.mod create mode 100644 x64/Debug/ctdsconnectionmodesenum.mod create mode 100644 x64/Debug/ctdsconnectionmodesenumvariables.mod create mode 100644 x64/Debug/ctdselevatormodesenum.mod create mode 100644 x64/Debug/ctdselevatormodesenumvariables.mod create mode 100644 x64/Debug/ctdsiboplednotification.mod create mode 100644 x64/Debug/ctdsiboplednotificationvariables.mod create mode 100644 x64/Debug/ctdspowerlednotification.mod create mode 100644 x64/Debug/ctdspowerlednotificationvariables.mod create mode 100644 x64/Debug/ctdsspineenum.mod create mode 100644 x64/Debug/ctdsspineenumvariables.mod create mode 100644 x64/Debug/ctdsstemjointheight.mod create mode 100644 x64/Debug/ctdsswingenum.mod create mode 100644 x64/Debug/ctdsswingenumvariables.mod create mode 100644 x64/Debug/ctdstongenum.mod create mode 100644 x64/Debug/ctdstongenumvariables.mod create mode 100644 x64/Debug/ctdstorquewrenchlednotification.mod create mode 100644 x64/Debug/ctdstorquewrenchlednotificationvariables.mod create mode 100644 x64/Debug/ctimer.mod create mode 100644 x64/Debug/ctimerlegacy.mod create mode 100644 x64/Debug/ctongenum.mod create mode 100644 x64/Debug/ctongenumvariables.mod create mode 100644 x64/Debug/ctongnotification.mod create mode 100644 x64/Debug/ctongnotificationvariables.mod create mode 100644 x64/Debug/ctopdrivepanel.mod create mode 100644 x64/Debug/ctopdrivepanelvariables.mod create mode 100644 x64/Debug/cunityinputs.mod create mode 100644 x64/Debug/cunityoutputs.mod create mode 100644 x64/Debug/cunlatchlednotification.mod create mode 100644 x64/Debug/cunlatchlednotificationvariables.mod create mode 100644 x64/Debug/cvoideventhandler.mod create mode 100644 x64/Debug/cvoideventhandlercollection.mod create mode 100644 x64/Debug/cwarnings.mod create mode 100644 x64/Debug/cwarningsactions.mod create mode 100644 x64/Debug/cwarningsvariables.mod create mode 100644 x64/Debug/cwellsurveydata.mod create mode 100644 x64/Debug/cwellsurveydatavariables.mod create mode 100644 x64/Debug/czerostringspeed.mod create mode 100644 x64/Debug/deallocate_arrays__genmod.f90 create mode 100644 x64/Debug/deallocate_arrays__genmod.mod create mode 100644 x64/Debug/deallocate_arrays_choke__genmod.f90 create mode 100644 x64/Debug/deallocate_arrays_choke__genmod.mod create mode 100644 x64/Debug/deallocate_arrays_mudsystem__genmod.f90 create mode 100644 x64/Debug/deallocate_arrays_mudsystem__genmod.mod create mode 100644 x64/Debug/deallocate_arrays_normalcirculation__genmod.f90 create mode 100644 x64/Debug/deallocate_arrays_normalcirculation__genmod.mod create mode 100644 x64/Debug/deallocateflowtypes__genmod.f90 create mode 100644 x64/Debug/deallocateflowtypes__genmod.mod create mode 100644 x64/Debug/dia__genmod.f90 create mode 100644 x64/Debug/dia__genmod.mod create mode 100644 x64/Debug/disconnectingpipe__genmod.f90 create mode 100644 x64/Debug/disconnectingpipe__genmod.mod create mode 100644 x64/Debug/drawworks_direction__genmod.f90 create mode 100644 x64/Debug/drawworks_direction__genmod.mod create mode 100644 x64/Debug/drawworks_free_traction_motor__genmod.f90 create mode 100644 x64/Debug/drawworks_free_traction_motor__genmod.mod create mode 100644 x64/Debug/drawworks_free_traction_motor_dawn_motion__genmod.f90 create mode 100644 x64/Debug/drawworks_free_traction_motor_dawn_motion__genmod.mod create mode 100644 x64/Debug/drawworks_free_traction_motor_dir__genmod.f90 create mode 100644 x64/Debug/drawworks_free_traction_motor_dir__genmod.mod create mode 100644 x64/Debug/drawworks_inputs__genmod.f90 create mode 100644 x64/Debug/drawworks_inputs__genmod.mod create mode 100644 x64/Debug/drawworks_solver__genmod.f90 create mode 100644 x64/Debug/drawworks_solver__genmod.mod create mode 100644 x64/Debug/drawworks_solver_freetractionmotor__genmod.f90 create mode 100644 x64/Debug/drawworks_solver_freetractionmotor__genmod.mod create mode 100644 x64/Debug/drawworks_startup__genmod.f90 create mode 100644 x64/Debug/drawworks_startup__genmod.mod create mode 100644 x64/Debug/drawworks_traction_motor_clutchmode__genmod.f90 create mode 100644 x64/Debug/drawworks_traction_motor_clutchmode__genmod.mod create mode 100644 x64/Debug/drawworks_traction_motor_clutchmode_dir__genmod.f90 create mode 100644 x64/Debug/drawworks_traction_motor_clutchmode_dir__genmod.mod create mode 100644 x64/Debug/drawworks_traction_motor_dawnmotion__genmod.f90 create mode 100644 x64/Debug/drawworks_traction_motor_dawnmotion__genmod.mod create mode 100644 x64/Debug/drawworks_traction_motor_dawnmotion_dir__genmod.f90 create mode 100644 x64/Debug/drawworks_traction_motor_dawnmotion_dir__genmod.mod create mode 100644 x64/Debug/drawworks_variables.mod create mode 100644 x64/Debug/drawworksmain.mod create mode 100644 x64/Debug/drillingconsole_scrleds__genmod.f90 create mode 100644 x64/Debug/drillingconsole_scrleds__genmod.mod create mode 100644 x64/Debug/dw__genmod.f90 create mode 100644 x64/Debug/dw__genmod.mod create mode 100644 x64/Debug/dw_dawnmotion__genmod.f90 create mode 100644 x64/Debug/dw_dawnmotion__genmod.mod create mode 100644 x64/Debug/dw_freetrac__genmod.f90 create mode 100644 x64/Debug/dw_freetrac__genmod.mod create mode 100644 x64/Debug/dw_freetrac_dmotion__genmod.f90 create mode 100644 x64/Debug/dw_freetrac_dmotion__genmod.mod create mode 100644 x64/Debug/dwbrakesound__genmod.f90 create mode 100644 x64/Debug/dwbrakesound__genmod.mod create mode 100644 x64/Debug/dwfixmodemotion__genmod.f90 create mode 100644 x64/Debug/dwfixmodemotion__genmod.mod create mode 100644 x64/Debug/dwmalfunction_clutchdisengage__genmod.f90 create mode 100644 x64/Debug/dwmalfunction_clutchdisengage__genmod.mod create mode 100644 x64/Debug/dwmalfunction_clutchengage__genmod.f90 create mode 100644 x64/Debug/dwmalfunction_clutchengage__genmod.mod create mode 100644 x64/Debug/dwmalfunction_motorfailure__genmod.f90 create mode 100644 x64/Debug/dwmalfunction_motorfailure__genmod.mod create mode 100644 x64/Debug/dx__genmod.f90 create mode 100644 x64/Debug/dx__genmod.mod create mode 100644 x64/Debug/dy__genmod.f90 create mode 100644 x64/Debug/dy__genmod.mod create mode 100644 x64/Debug/dynamicdoublearray.mod create mode 100644 x64/Debug/dynamicintegerarray.mod create mode 100644 x64/Debug/dynamiclogicalarray.mod create mode 100644 x64/Debug/dynamicrealarray.mod create mode 100644 x64/Debug/elementscreation__genmod.f90 create mode 100644 x64/Debug/elementscreation__genmod.mod create mode 100644 x64/Debug/equipments_PowerLimit.obj create mode 100644 x64/Debug/equipments_powerlimit.mod create mode 100644 x64/Debug/fillingwell_by_bellnipple__genmod.f90 create mode 100644 x64/Debug/fillingwell_by_bellnipple__genmod.mod create mode 100644 x64/Debug/flowstartup__genmod.f90 create mode 100644 x64/Debug/flowstartup__genmod.mod create mode 100644 x64/Debug/fluid_flow_solver__genmod.f90 create mode 100644 x64/Debug/fluid_flow_solver__genmod.mod create mode 100644 x64/Debug/fluid_flow_startup_vars.mod create mode 100644 x64/Debug/fluidflowmain.mod create mode 100644 x64/Debug/formationinformationcalculator__genmod.f90 create mode 100644 x64/Debug/formationinformationcalculator__genmod.mod create mode 100644 x64/Debug/fricpressdrop__genmod.f90 create mode 100644 x64/Debug/fricpressdrop__genmod.mod create mode 100644 x64/Debug/fricpressdropvars.mod create mode 100644 x64/Debug/gaskickcalculator__genmod.f90 create mode 100644 x64/Debug/gaskickcalculator__genmod.mod create mode 100644 x64/Debug/gaspocketflowelementtransformer__genmod.f90 create mode 100644 x64/Debug/gaspocketflowelementtransformer__genmod.mod create mode 100644 x64/Debug/geoelements_fluidmodule.mod create mode 100644 x64/Debug/geomain.mod create mode 100644 x64/Debug/instructor_circulationmud_edit__genmod.f90 create mode 100644 x64/Debug/instructor_circulationmud_edit__genmod.mod create mode 100644 x64/Debug/jetimpactforce__genmod.f90 create mode 100644 x64/Debug/jetimpactforce__genmod.mod create mode 100644 x64/Debug/kick_contraction__genmod.f90 create mode 100644 x64/Debug/kick_contraction__genmod.mod create mode 100644 x64/Debug/kick_expansion__genmod.f90 create mode 100644 x64/Debug/kick_expansion__genmod.mod create mode 100644 x64/Debug/kick_influx__genmod.f90 create mode 100644 x64/Debug/kick_influx__genmod.mod create mode 100644 x64/Debug/kick_migration__genmod.f90 create mode 100644 x64/Debug/kick_migration__genmod.mod create mode 100644 x64/Debug/kickfunctionscalculator__genmod.f90 create mode 100644 x64/Debug/kickfunctionscalculator__genmod.mod create mode 100644 x64/Debug/kickvariables.mod create mode 100644 x64/Debug/kill_line__genmod.f90 create mode 100644 x64/Debug/kill_line__genmod.mod create mode 100644 x64/Debug/kill_line_sub__genmod.f90 create mode 100644 x64/Debug/kill_line_sub__genmod.mod create mode 100644 x64/Debug/killlinemain.mod create mode 100644 x64/Debug/loss_inputs__genmod.f90 create mode 100644 x64/Debug/loss_inputs__genmod.mod create mode 100644 x64/Debug/loss_inputs_choke__genmod.f90 create mode 100644 x64/Debug/loss_inputs_choke__genmod.mod create mode 100644 x64/Debug/meshgeneration_fluidmodule__genmod.f90 create mode 100644 x64/Debug/meshgeneration_fluidmodule__genmod.mod create mode 100644 x64/Debug/mudline_loss_inputs__genmod.f90 create mode 100644 x64/Debug/mudline_loss_inputs__genmod.mod create mode 100644 x64/Debug/mudline_losses__genmod.f90 create mode 100644 x64/Debug/mudline_losses__genmod.mod create mode 100644 x64/Debug/mudsystem.mod create mode 100644 x64/Debug/mudsystem_startup__genmod.f90 create mode 100644 x64/Debug/mudsystem_startup__genmod.mod create mode 100644 x64/Debug/mudsystemmain.mod create mode 100644 x64/Debug/mudsystemvariables.mod create mode 100644 x64/Debug/newgaskick__genmod.f90 create mode 100644 x64/Debug/newgaskick__genmod.mod create mode 100644 x64/Debug/normalcirculation_startup__genmod.f90 create mode 100644 x64/Debug/normalcirculation_startup__genmod.mod create mode 100644 x64/Debug/off_mode_simulation__genmod.f90 create mode 100644 x64/Debug/off_mode_simulation__genmod.mod create mode 100644 x64/Debug/on_mode_simulation__genmod.f90 create mode 100644 x64/Debug/on_mode_simulation__genmod.mod create mode 100644 x64/Debug/partialderivativefrictoflowrate__genmod.f90 create mode 100644 x64/Debug/partialderivativefrictoflowrate__genmod.mod create mode 100644 x64/Debug/pipe_rams1__genmod.f90 create mode 100644 x64/Debug/pipe_rams1__genmod.mod create mode 100644 x64/Debug/pipe_rams1_sub__genmod.f90 create mode 100644 x64/Debug/pipe_rams1_sub__genmod.mod create mode 100644 x64/Debug/pipe_rams2__genmod.f90 create mode 100644 x64/Debug/pipe_rams2__genmod.mod create mode 100644 x64/Debug/pipe_rams2_sub__genmod.f90 create mode 100644 x64/Debug/pipe_rams2_sub__genmod.mod create mode 100644 x64/Debug/pipe_rams_choke__genmod.f90 create mode 100644 x64/Debug/pipe_rams_choke__genmod.mod create mode 100644 x64/Debug/piperams1main.mod create mode 100644 x64/Debug/piperams2main.mod create mode 100644 x64/Debug/plotfinalmudelements__genmod.f90 create mode 100644 x64/Debug/plotfinalmudelements__genmod.mod create mode 100644 x64/Debug/powerlimits__genmod.f90 create mode 100644 x64/Debug/powerlimits__genmod.mod create mode 100644 x64/Debug/pressureannandohdistribution__genmod.f90 create mode 100644 x64/Debug/pressureannandohdistribution__genmod.mod create mode 100644 x64/Debug/pressuredisplayvariables.mod create mode 100644 x64/Debug/pressurehorizandstringdistribution__genmod.f90 create mode 100644 x64/Debug/pressurehorizandstringdistribution__genmod.mod create mode 100644 x64/Debug/pump1_mainsolver__genmod.f90 create mode 100644 x64/Debug/pump1_mainsolver__genmod.mod create mode 100644 x64/Debug/pump1_offmode_solver__genmod.f90 create mode 100644 x64/Debug/pump1_offmode_solver__genmod.mod create mode 100644 x64/Debug/pump1_onmode_solver__genmod.f90 create mode 100644 x64/Debug/pump1_onmode_solver__genmod.mod create mode 100644 x64/Debug/pump2_mainsolver__genmod.f90 create mode 100644 x64/Debug/pump2_mainsolver__genmod.mod create mode 100644 x64/Debug/pump2_offmode_solver__genmod.f90 create mode 100644 x64/Debug/pump2_offmode_solver__genmod.mod create mode 100644 x64/Debug/pump2_onmode_solver__genmod.f90 create mode 100644 x64/Debug/pump2_onmode_solver__genmod.mod create mode 100644 x64/Debug/pump3_offmode_solver__genmod.f90 create mode 100644 x64/Debug/pump3_offmode_solver__genmod.mod create mode 100644 x64/Debug/pump3_onmode_solver__genmod.f90 create mode 100644 x64/Debug/pump3_onmode_solver__genmod.mod create mode 100644 x64/Debug/pump_and_tripin__genmod.f90 create mode 100644 x64/Debug/pump_and_tripin__genmod.mod create mode 100644 x64/Debug/pump_dia__genmod.f90 create mode 100644 x64/Debug/pump_dia__genmod.mod create mode 100644 x64/Debug/pump_diff_eqs.obj create mode 100644 x64/Debug/pump_dw__genmod.f90 create mode 100644 x64/Debug/pump_dw__genmod.mod create mode 100644 x64/Debug/pump_dx__genmod.f90 create mode 100644 x64/Debug/pump_dx__genmod.mod create mode 100644 x64/Debug/pump_inputs__genmod.f90 create mode 100644 x64/Debug/pump_inputs__genmod.mod create mode 100644 x64/Debug/pump_solver__genmod.f90 create mode 100644 x64/Debug/pump_solver__genmod.mod create mode 100644 x64/Debug/pump_startup__genmod.f90 create mode 100644 x64/Debug/pump_startup__genmod.mod create mode 100644 x64/Debug/pump_total_counts__genmod.f90 create mode 100644 x64/Debug/pump_total_counts__genmod.mod create mode 100644 x64/Debug/pump_traction_motor__genmod.f90 create mode 100644 x64/Debug/pump_traction_motor__genmod.mod create mode 100644 x64/Debug/pump_variables.mod create mode 100644 x64/Debug/pumps_charge_bottle__genmod.f90 create mode 100644 x64/Debug/pumps_charge_bottle__genmod.mod create mode 100644 x64/Debug/pumpsmain.mod create mode 100644 x64/Debug/removeannulusmudarrays__genmod.f90 create mode 100644 x64/Debug/removeannulusmudarrays__genmod.mod create mode 100644 x64/Debug/removegaspocket__genmod.f90 create mode 100644 x64/Debug/removegaspocket__genmod.mod create mode 100644 x64/Debug/removehzmudarrays__genmod.f90 create mode 100644 x64/Debug/removehzmudarrays__genmod.mod create mode 100644 x64/Debug/removeopmudarrays__genmod.f90 create mode 100644 x64/Debug/removeopmudarrays__genmod.mod create mode 100644 x64/Debug/removestringmudarrays__genmod.f90 create mode 100644 x64/Debug/removestringmudarrays__genmod.mod create mode 100644 x64/Debug/rop_maincalculation__genmod.f90 create mode 100644 x64/Debug/rop_maincalculation__genmod.mod create mode 100644 x64/Debug/rop_startup__genmod.f90 create mode 100644 x64/Debug/rop_startup__genmod.mod create mode 100644 x64/Debug/ropmain.mod create mode 100644 x64/Debug/rotarytablemain.mod create mode 100644 x64/Debug/rtable_dia__genmod.f90 create mode 100644 x64/Debug/rtable_dia__genmod.mod create mode 100644 x64/Debug/rtable_dw__genmod.f90 create mode 100644 x64/Debug/rtable_dw__genmod.mod create mode 100644 x64/Debug/rtable_dx__genmod.f90 create mode 100644 x64/Debug/rtable_dx__genmod.mod create mode 100644 x64/Debug/rtable_dy__genmod.f90 create mode 100644 x64/Debug/rtable_dy__genmod.mod create mode 100644 x64/Debug/rtable_inputs__genmod.f90 create mode 100644 x64/Debug/rtable_inputs__genmod.mod create mode 100644 x64/Debug/rtable_offmode__genmod.f90 create mode 100644 x64/Debug/rtable_offmode__genmod.mod create mode 100644 x64/Debug/rtable_solver__genmod.f90 create mode 100644 x64/Debug/rtable_solver__genmod.mod create mode 100644 x64/Debug/rtable_startup__genmod.f90 create mode 100644 x64/Debug/rtable_startup__genmod.mod create mode 100644 x64/Debug/rtable_traction_motor__genmod.f90 create mode 100644 x64/Debug/rtable_traction_motor__genmod.mod create mode 100644 x64/Debug/rtable_variables.mod create mode 100644 x64/Debug/rtmalfunction_motorfailure__genmod.f90 create mode 100644 x64/Debug/rtmalfunction_motorfailure__genmod.mod create mode 100644 x64/Debug/rttorquelimit__genmod.f90 create mode 100644 x64/Debug/rttorquelimit__genmod.mod create mode 100644 x64/Debug/sROP_Module.obj create mode 100644 x64/Debug/sROP_Other_Variables.obj create mode 100644 x64/Debug/sROP_Variables.obj create mode 100644 x64/Debug/shear_rams__genmod.f90 create mode 100644 x64/Debug/shear_rams__genmod.mod create mode 100644 x64/Debug/shear_rams_sub__genmod.f90 create mode 100644 x64/Debug/shear_rams_sub__genmod.mod create mode 100644 x64/Debug/shoelostsub__genmod.f90 create mode 100644 x64/Debug/shoelostsub__genmod.mod create mode 100644 x64/Debug/simulator.mod create mode 100644 x64/Debug/solve_linear_equations__genmod.f90 create mode 100644 x64/Debug/solve_linear_equations__genmod.mod create mode 100644 x64/Debug/srop_other_variables.mod create mode 100644 x64/Debug/srop_variables.mod create mode 100644 x64/Debug/stringpropertycalculator__genmod.f90 create mode 100644 x64/Debug/stringpropertycalculator__genmod.mod create mode 100644 x64/Debug/td_addcomponents__genmod.f90 create mode 100644 x64/Debug/td_addcomponents__genmod.mod create mode 100644 x64/Debug/td_bopdiamcalculation__genmod.f90 create mode 100644 x64/Debug/td_bopdiamcalculation__genmod.mod create mode 100644 x64/Debug/td_bouyancyfactor__genmod.f90 create mode 100644 x64/Debug/td_bouyancyfactor__genmod.mod create mode 100644 x64/Debug/td_combinedmotiondata__genmod.f90 create mode 100644 x64/Debug/td_combinedmotiondata__genmod.mod create mode 100644 x64/Debug/td_drillstemcomponents.mod create mode 100644 x64/Debug/td_drillstemconfiguration__genmod.f90 create mode 100644 x64/Debug/td_drillstemconfiguration__genmod.mod create mode 100644 x64/Debug/td_drillstemreaddata__genmod.f90 create mode 100644 x64/Debug/td_drillstemreaddata__genmod.mod create mode 100644 x64/Debug/td_drillstemstartup__genmod.f90 create mode 100644 x64/Debug/td_drillstemstartup__genmod.mod create mode 100644 x64/Debug/td_forcecalculation__genmod.f90 create mode 100644 x64/Debug/td_forcecalculation__genmod.mod create mode 100644 x64/Debug/td_forcedownb__genmod.f90 create mode 100644 x64/Debug/td_forcedownb__genmod.mod create mode 100644 x64/Debug/td_forcedownbrot__genmod.f90 create mode 100644 x64/Debug/td_forcedownbrot__genmod.mod create mode 100644 x64/Debug/td_forcedownd__genmod.f90 create mode 100644 x64/Debug/td_forcedownd__genmod.mod create mode 100644 x64/Debug/td_forcedowndrot__genmod.f90 create mode 100644 x64/Debug/td_forcedowndrot__genmod.mod create mode 100644 x64/Debug/td_forcedowns__genmod.f90 create mode 100644 x64/Debug/td_forcedowns__genmod.mod create mode 100644 x64/Debug/td_forcedownsrot__genmod.f90 create mode 100644 x64/Debug/td_forcedownsrot__genmod.mod create mode 100644 x64/Debug/td_forcereaddata__genmod.f90 create mode 100644 x64/Debug/td_forcereaddata__genmod.mod create mode 100644 x64/Debug/td_forceupb__genmod.f90 create mode 100644 x64/Debug/td_forceupb__genmod.mod create mode 100644 x64/Debug/td_forceupbrot__genmod.f90 create mode 100644 x64/Debug/td_forceupbrot__genmod.mod create mode 100644 x64/Debug/td_forceupd__genmod.f90 create mode 100644 x64/Debug/td_forceupd__genmod.mod create mode 100644 x64/Debug/td_forceupdrot__genmod.f90 create mode 100644 x64/Debug/td_forceupdrot__genmod.mod create mode 100644 x64/Debug/td_forceups__genmod.f90 create mode 100644 x64/Debug/td_forceups__genmod.mod create mode 100644 x64/Debug/td_forceupsrot__genmod.f90 create mode 100644 x64/Debug/td_forceupsrot__genmod.mod create mode 100644 x64/Debug/td_generaldata.mod create mode 100644 x64/Debug/td_hookloadcalculation__genmod.f90 create mode 100644 x64/Debug/td_hookloadcalculation__genmod.mod create mode 100644 x64/Debug/td_maincalculations__genmod.f90 create mode 100644 x64/Debug/td_maincalculations__genmod.mod create mode 100644 x64/Debug/td_mudpropertiesreaddata__genmod.f90 create mode 100644 x64/Debug/td_mudpropertiesreaddata__genmod.mod create mode 100644 x64/Debug/td_pipepropertiesreaddata__genmod.f90 create mode 100644 x64/Debug/td_pipepropertiesreaddata__genmod.mod create mode 100644 x64/Debug/td_removecomponents__genmod.f90 create mode 100644 x64/Debug/td_removecomponents__genmod.mod create mode 100644 x64/Debug/td_startup__genmod.f90 create mode 100644 x64/Debug/td_startup__genmod.mod create mode 100644 x64/Debug/td_statichookloadcalculation__genmod.f90 create mode 100644 x64/Debug/td_statichookloadcalculation__genmod.mod create mode 100644 x64/Debug/td_straincalculation__genmod.f90 create mode 100644 x64/Debug/td_straincalculation__genmod.mod create mode 100644 x64/Debug/td_stringconnectiondata.mod create mode 100644 x64/Debug/td_stringconnectionmodes__genmod.f90 create mode 100644 x64/Debug/td_stringconnectionmodes__genmod.mod create mode 100644 x64/Debug/td_torquecalculation__genmod.f90 create mode 100644 x64/Debug/td_torquecalculation__genmod.mod create mode 100644 x64/Debug/td_viscousdragforce__genmod.f90 create mode 100644 x64/Debug/td_viscousdragforce__genmod.mod create mode 100644 x64/Debug/td_weightonbitcalculation__genmod.f90 create mode 100644 x64/Debug/td_weightonbitcalculation__genmod.mod create mode 100644 x64/Debug/td_wellelements.mod create mode 100644 x64/Debug/td_wellelementsconfiguration__genmod.f90 create mode 100644 x64/Debug/td_wellelementsconfiguration__genmod.mod create mode 100644 x64/Debug/td_wellelementsreaddata__genmod.f90 create mode 100644 x64/Debug/td_wellelementsreaddata__genmod.mod create mode 100644 x64/Debug/td_wellgeoconfiguration__genmod.f90 create mode 100644 x64/Debug/td_wellgeoconfiguration__genmod.mod create mode 100644 x64/Debug/td_wellgeometry.mod create mode 100644 x64/Debug/td_wellreaddata__genmod.f90 create mode 100644 x64/Debug/td_wellreaddata__genmod.mod create mode 100644 x64/Debug/tds_dia__genmod.f90 create mode 100644 x64/Debug/tds_dia__genmod.mod create mode 100644 x64/Debug/tds_dw__genmod.f90 create mode 100644 x64/Debug/tds_dw__genmod.mod create mode 100644 x64/Debug/tds_dx__genmod.f90 create mode 100644 x64/Debug/tds_dx__genmod.mod create mode 100644 x64/Debug/tds_dy__genmod.f90 create mode 100644 x64/Debug/tds_dy__genmod.mod create mode 100644 x64/Debug/testoperationscenarios.mod create mode 100644 x64/Debug/testoperationscenariosvariables.mod create mode 100644 x64/Debug/topdrive_inputs__genmod.f90 create mode 100644 x64/Debug/topdrive_inputs__genmod.mod create mode 100644 x64/Debug/topdrive_malfunction_motorfailure__genmod.f90 create mode 100644 x64/Debug/topdrive_malfunction_motorfailure__genmod.mod create mode 100644 x64/Debug/topdrive_offmode__genmod.f90 create mode 100644 x64/Debug/topdrive_offmode__genmod.mod create mode 100644 x64/Debug/topdrive_solver__genmod.f90 create mode 100644 x64/Debug/topdrive_solver__genmod.mod create mode 100644 x64/Debug/topdrive_startup__genmod.f90 create mode 100644 x64/Debug/topdrive_startup__genmod.mod create mode 100644 x64/Debug/topdrive_torquelimit__genmod.f90 create mode 100644 x64/Debug/topdrive_torquelimit__genmod.mod create mode 100644 x64/Debug/topdrive_traction_motor__genmod.f90 create mode 100644 x64/Debug/topdrive_traction_motor__genmod.mod create mode 100644 x64/Debug/topdrive_variables.mod create mode 100644 x64/Debug/topdrivemain.mod create mode 100644 x64/Debug/torquedragmain.mod create mode 100644 x64/Debug/tripout_and_pump__genmod.f90 create mode 100644 x64/Debug/tripout_and_pump__genmod.mod create mode 100644 x64/Debug/tvd_calculator__genmod.f90 create mode 100644 x64/Debug/tvd_calculator__genmod.mod create mode 100644 x64/Debug/utube1_and_tripin__genmod.f90 create mode 100644 x64/Debug/utube1_and_tripin__genmod.mod create mode 100644 x64/Debug/utube2_and_tripin__genmod.f90 create mode 100644 x64/Debug/utube2_and_tripin__genmod.mod create mode 100644 x64/Debug/utube__genmod.f90 create mode 100644 x64/Debug/utube__genmod.mod create mode 100644 x64/Debug/utubevars.mod create mode 100644 x64/Debug/variables.mod create mode 100644 x64/Debug/vc170.pdb create mode 100644 x64/Debug/wellpressuredatatransfer__genmod.f90 create mode 100644 x64/Debug/wellpressuredatatransfer__genmod.mod create mode 100644 مستتندات شبیه ساز.docx diff --git a/CSharp/BasicInputs/Bha/CStringConfiguration.f90 b/CSharp/BasicInputs/Bha/CStringConfiguration.f90 new file mode 100644 index 0000000..bcc792e --- /dev/null +++ b/CSharp/BasicInputs/Bha/CStringConfiguration.f90 @@ -0,0 +1,62 @@ +module CStringConfiguration + use CStringConfigurationVariables + implicit none + public + contains + + integer function SetStringConfigurations(count, array, bit) + !DEC$ ATTRIBUTES DLLEXPORT::SetStringConfigurations + !DEC$ ATTRIBUTES ALIAS: 'SetStringConfigurations' :: SetStringConfigurations + use CManifolds + implicit none + integer, intent(in) :: count + integer :: i, j + type(CStringItem), intent(inout), target :: array(count) + type(CBitInfo), intent(inout) :: bit + type(CStringItem), pointer :: item + BitDefinition%BitType = bit%BitType + BitDefinition%BitSize = bit%BitSize + BitDefinition%BitCodeHundreds = bit%BitCodeHundreds + BitDefinition%BitCodeTens = bit%BitCodeTens + BitDefinition%BitCodeOnes = bit%BitCodeOnes + BitDefinition%BitNozzleSize = bit%BitNozzleSize + BitDefinition%BitLength = bit%BitLength + BitDefinition%BitWeightPerLength = bit%BitWeightPerLength + BitDefinition%BitNozzleNo = bit%BitNozzleNo + BitDefinition%FloatValve = bit%FloatValve + StringConfigurationCount = count + + if(BitDefinition%FloatValve) then + call InstallFloatValve() + else + call RemoveFloatValve() + endif + + if(size(StringConfigurations) > 0) then + deallocate(StringConfigurations) + end if + if(count > 0) then + allocate(StringConfigurations(count)) + !j = count + do i = 1, count + item => array(i) + StringConfigurations(i)%ComponentType = item%ComponentType + StringConfigurations(i)%NumberOfJoint = item%NumberOfJoint + StringConfigurations(i)%LengthPerJoint = item%LengthPerJoint + StringConfigurations(i)%NominalOd = item%NominalOd + StringConfigurations(i)%NominalId = item%NominalId + StringConfigurations(i)%WeightPerLength = item%WeightPerLength + StringConfigurations(i)%ComponentLength = item%ComponentLength + StringConfigurations(i)%NominalToolJointOd = item%NominalToolJointOd + StringConfigurations(i)%Grade = item%Grade + !print*, 'type=', StringConfigurations(i)%ComponentType + !print*, 'NumberOfJoint=', StringConfigurations(i)%NumberOfJoint + !print*, '-----------------------------------------------------------' + !j = j - 1 + end do + end if + + SetStringConfigurations = 0 + end function SetStringConfigurations + +end module CStringConfiguration \ No newline at end of file diff --git a/CSharp/BasicInputs/Bha/CStringConfigurationVariables.f90 b/CSharp/BasicInputs/Bha/CStringConfigurationVariables.f90 new file mode 100644 index 0000000..556e250 --- /dev/null +++ b/CSharp/BasicInputs/Bha/CStringConfigurationVariables.f90 @@ -0,0 +1,54 @@ +module CStringConfigurationVariables + implicit none + public + + !constants + integer :: Bit_ComponentType = 0 + integer :: Stabilizer_ComponentType = 1 + integer :: Collar_ComponentType = 2 + integer :: DrillPipe_ComponentType = 3 + integer :: Heavyweight_ComponentType = 4 + + integer :: Cone_BitType = 0 + integer :: PDC_BitType = 1 + integer :: Rock_BitType = 2 + + + + ! types + ! Pipe Items in String Array + type, bind(c), public :: CStringItem + integer :: ComponentType + real(8) :: NumberOfJoint + real(8) :: LengthPerJoint + real(8) :: NominalOd + real(8) :: NominalId + real(8) :: WeightPerLength + real(8) :: ComponentLength + real(8) :: NominalToolJointOd + character(1) :: Grade + end type CStringItem + + ! types + ! Pipe Items in String Array + type, bind(c), public :: CBitInfo + integer :: BitType + real(8) :: BitSize + integer :: BitCodeHundreds + integer :: BitCodeTens + integer :: BitCodeOnes + real(8) :: BitNozzleSize + real(8) :: BitLength + real(8) :: BitWeightPerLength + integer :: BitNozzleNo + logical :: FloatValve + end type CBitInfo + + integer :: StringConfigurationCount = 0 + type(CStringItem), allocatable :: StringConfigurations(:) + type(CBitInfo) :: BitDefinition + + + + contains +end module CStringConfigurationVariables \ No newline at end of file diff --git a/CSharp/BasicInputs/Bha/cstringconfigurationvariables.mod b/CSharp/BasicInputs/Bha/cstringconfigurationvariables.mod new file mode 100644 index 0000000000000000000000000000000000000000..3156bffb5f28edfb565dc3e6f25fade6e1fab835 GIT binary patch literal 1875 zcmV-Z2dwxXiwFP!000001MON{bD~HTe(zt=Z|K8paTCnGA(AXL1}#8mQ0AZqIkR&-u=UzPTRjrY>pt$zMFL9sJ@1Ti5q6#q=mV z4;(vm7I+!>Pk8?4{Uq?eJM(aRKQq+Zd(HV_xKGb(JA?(YA2|22v9g2B{lMP3bJg2C z!_2|ThT$-9y+_&imhR(o5Y3<2fongko$VjXD;jk=U3`xJDE*_0;7|DJQ1b^jbiJid zVQRjOaLn^KUQ!$sW?^AE#|@n)3LRR(WpdIV7E^L#ffR)q-02JzU7aaIG}XRp<8Rs* zRWlXM#OdQiAIs@O_M3)(s$mUOZD`4WyTfA&wv044(P!*L&1;l>G?AVKf46Kw7@Jb%|Hc5U;0 zaB!Gfu6;XvvDYueBu3*KRR;A_80mBVV9=Ribn#?57^!lmUL=`;pY)kXCu1=J_??e1 z*(i-gj$>(>X1fUVl5-K{q9K6cAz=AW8*q0ojsy*kx8!hb5mfs;(?gW^{Pf@i{_?x; zdSL^nJ39seQL&$a!+jVC5jMhqay@(PFIvezPe^7U2qf}dA|D+M;K*3W0R7j~9y$p{ z^BBZJ0LVO}o_x_MC=Qbz%VdWU`u;ky$wOB0F6_%f6nG5m1tAFeFG-hV6DWa60KAQK zI`UXEObG;a&^{)C?PaKlQs2*+y66bD&d}u88i_ql;24hUA{OY{vKG$Lay>V+_HwnA z<@E>4f`rs(lCDaFkM-JmiDVeam?$#Q7EdNJ@h>{EH$uQmlIT$RaLoy|N}f{NUq9qHv!3ohY2= zD=D1s{iYPo3;$DinZo(_O@>u!Dz>a68nMq#9T7v>_vWO&bl~GxAHW!dFaX>|F&FYn z)U;;hf!~|Is!ZT!wzn7WP?1Lk!@HhpvZ;bWhPzJi+XG8wH+L3C#a_2 zY_;hJ+EcaQ83NvOtn}UKuW#Hv_AtfZZ@8bFBNEasodS0R7~{`{ZM1Q}xIHnbnyHPjlP zlG3k;0y`k*{xf+4_z4sc=t>0|^7`rEp{y8jEVE~5~bDOHdE7gdJTD;eg zsYV}Usd-*UE_xk7N~m-8c7;N$*qe{<#EM+S*SO#+g~GaUBCuHC@<)xbZHRi@QI&Pp zec&7K!(cqTtJ{YxeCmok)eSi4>J2z(=0Xn(0v5z*I_R9;qKGqJuBk1w>=Oz7U(+0} zut-;$1K(?G4lTDrZ0;Esu?UgHB8Npjnht6gEdm^d+6MCodFs{~r>R;skL4hv9OU8j z_V%u#FsmW2B2^&*2F!D@4eP*wWn35!7>OMO_G^ZSKM_$%@mL;frg}3SPmRVfQ4BA# z6T_I^Dnm<`w67IWja<-t4IPWvD!F-31-@lpHE)_TX*5;xu=h1d$qv*6U&z=<*8uov z&nEA|S#>pLFV6I)TYCK>c}544gsY;9^v~-e`{MhqNs4sQMfzuVk(PMal8cC^I&DK2 zsf5|sMSu~jTtwXSQvM@cMC7Yoq%qD5xd^$ApSz4tW43fRlg1o6;`$HyrdA7!GFcwA zyqrQ7^_ng!2@_GYUR}sWS_xp^ N{{heHCV09t005@xlEDA~ literal 0 HcmV?d00001 diff --git a/CSharp/BasicInputs/CMudProperties.f90 b/CSharp/BasicInputs/CMudProperties.f90 new file mode 100644 index 0000000..1e13006 --- /dev/null +++ b/CSharp/BasicInputs/CMudProperties.f90 @@ -0,0 +1,237 @@ +module CMudProperties + use CMudPropertiesVariables + use CLog4 + implicit none + public + contains + subroutine SetActiveMudType(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetActiveMudType + !DEC$ ATTRIBUTES ALIAS: 'SetActiveMudType' :: SetActiveMudType + implicit none + integer, intent(in) :: v + ActiveMudType = v + end subroutine + + subroutine SetActiveRheologyModel(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetActiveRheologyModel + !DEC$ ATTRIBUTES ALIAS: 'SetActiveRheologyModel' :: SetActiveRheologyModel + implicit none + integer, intent(in) :: v + ActiveRheologyModel = v +#ifdef deb + call Log_4( '=====ActiveRheologyModel=', ActiveRheologyModel) +#endif + end subroutine + + subroutine SetActiveMudVolume(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetActiveMudVolume + !DEC$ ATTRIBUTES ALIAS: 'SetActiveMudVolume' :: SetActiveMudVolume + implicit none + real*8, intent(in) :: v + ActiveMudVolume = v + !call Log_5('ActiveDensity=', ActiveDensity) +#ifdef deb + print*, 'ActiveMudVolume=', ActiveMudVolume +#endif + ActiveMudVolumeGal = v * 42.0 + call OnActiveMudVolumeChange%RunAll(v * 42.0d0) + end subroutine + + subroutine SetActiveDensity(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetActiveDensity + !DEC$ ATTRIBUTES ALIAS: 'SetActiveDensity' :: SetActiveDensity + implicit none + real*8, intent(in) :: v + ActiveDensity = v + !call Log_5('ActiveDensity=', ActiveDensity) +#ifdef deb + print*, 'ActiveDensity=', ActiveDensity +#endif + call OnActiveDensityChange%RunAll(v) + end subroutine + + subroutine SetActiveThetaThreeHundred(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetActiveThetaThreeHundred + !DEC$ ATTRIBUTES ALIAS: 'SetActiveThetaThreeHundred' :: SetActiveThetaThreeHundred + implicit none + real*8, intent(in) :: v + ActiveThetaThreeHundred = v + end subroutine + + subroutine SetActiveThetaSixHundred(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetActiveThetaSixHundred + !DEC$ ATTRIBUTES ALIAS: 'SetActiveThetaSixHundred' :: SetActiveThetaSixHundred + implicit none + real*8, intent(in) :: v + ActiveThetaSixHundred = v + end subroutine + + + subroutine SetReserveMudType(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetReserveMudType + !DEC$ ATTRIBUTES ALIAS: 'SetReserveMudType' :: SetReserveMudType + implicit none + integer, intent(in) :: v + ReserveMudType = v + end subroutine + + subroutine SetReserveMudVolume(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetReserveMudVolume + !DEC$ ATTRIBUTES ALIAS: 'SetReserveMudVolume' :: SetReserveMudVolume + implicit none + real*8, intent(in) :: v + ReserveMudVolume = v + !call Log_5('ReserveMudVolume=', ReserveMudVolume) +#ifdef deb + print*, 'ReserveMudVolume=', ReserveMudVolume +#endif + + ReserveMudVolumeGal = v * 42.0 + call OnReserveMudVolumeChange%RunAll(v * 42.0d0) + end subroutine + + subroutine SetReserveDensity(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetReserveDensity + !DEC$ ATTRIBUTES ALIAS: 'SetReserveDensity' :: SetReserveDensity + implicit none + real*8, intent(in) :: v + ReserveDensity = v + !call Log_5('ReserveDensity=', ReserveDensity) +#ifdef deb + print*, 'ReserveDensity=', ReserveDensity +#endif + call OnReserveDensityChange%RunAll(v) + end subroutine + + subroutine SetReserveThetaThreeHundred(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetReserveThetaThreeHundred + !DEC$ ATTRIBUTES ALIAS: 'SetReserveThetaThreeHundred' :: SetReserveThetaThreeHundred + implicit none + real*8, intent(in) :: v + ReserveThetaThreeHundred = v + end subroutine + + subroutine SetReserveThetaSixHundred(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetReserveThetaSixHundred + !DEC$ ATTRIBUTES ALIAS: 'SetReserveThetaSixHundred' :: SetReserveThetaSixHundred + implicit none + real*8, intent(in) :: v + ReserveThetaSixHundred = v + end subroutine + + + subroutine SetActiveTotalTankCapacity(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetActiveTotalTankCapacity + !DEC$ ATTRIBUTES ALIAS: 'SetActiveTotalTankCapacity' :: SetActiveTotalTankCapacity + implicit none + real*8, intent(in) :: v + ActiveTotalTankCapacity = v + ActiveTotalTankCapacityGal = v * 42.0 +#ifdef deb + print*, 'ActiveTotalTankCapacity=', ActiveTotalTankCapacity +#endif + end subroutine + + subroutine SetActiveSettledContents(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetActiveSettledContents + !DEC$ ATTRIBUTES ALIAS: 'SetActiveSettledContents' :: SetActiveSettledContents + implicit none + real*8, intent(in) :: v + ActiveSettledContents = v + ActiveSettledContentsGal = v * 42.0 +#ifdef deb + print*, 'ActiveSettledContents=', ActiveSettledContents +#endif + end subroutine + + subroutine SetActiveTotalContents(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetActiveTotalContents + !DEC$ ATTRIBUTES ALIAS: 'SetActiveTotalContents' :: SetActiveTotalContents + implicit none + real*8, intent(in) :: v + ActiveTotalContents = v + ActiveTotalContentsGal = v * 42.0 +#ifdef deb + print*, 'ActiveTotalContents=', ActiveTotalContents +#endif + end subroutine + + subroutine SetActivePlasticViscosity(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetActivePlasticViscosity + !DEC$ ATTRIBUTES ALIAS: 'SetActivePlasticViscosity' :: SetActivePlasticViscosity + implicit none + real*8, intent(in) :: v + ActivePlasticViscosity = v +#ifdef deb + print*, 'ActivePlasticViscosity=', ActivePlasticViscosity +#endif + end subroutine + + subroutine SetActiveYieldPoint(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetActiveYieldPoint + !DEC$ ATTRIBUTES ALIAS: 'SetActiveYieldPoint' :: SetActiveYieldPoint + implicit none + real*8, intent(in) :: v + ActiveYieldPoint = v +#ifdef deb + print*, 'ActiveYieldPoint=', ActiveYieldPoint +#endif + end subroutine + + subroutine SetActiveAutoDensity(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetActiveAutoDensity + !DEC$ ATTRIBUTES ALIAS: 'SetActiveAutoDensity' :: SetActiveAutoDensity + implicit none + logical, intent(in) :: v + ActiveAutoDensity = v +#ifdef deb + print*, 'ActiveAutoDensity=', ActiveAutoDensity +#endif + end subroutine + + subroutine SetReservePlasticViscosity(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetReservePlasticViscosity + !DEC$ ATTRIBUTES ALIAS: 'SetReservePlasticViscosity' :: SetReservePlasticViscosity + implicit none + real*8, intent(in) :: v + ReservePlasticViscosity = v +#ifdef deb + print*, 'ReservePlasticViscosity=', ReservePlasticViscosity +#endif + end subroutine + + subroutine SetReserveYieldPoint(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetReserveYieldPoint + !DEC$ ATTRIBUTES ALIAS: 'SetReserveYieldPoint' :: SetReserveYieldPoint + implicit none + real*8, intent(in) :: v + ReserveYieldPoint = v +#ifdef deb + print*, 'ReserveYieldPoint=', ReserveYieldPoint +#endif + end subroutine + + subroutine SetInitialTripTankMudVolume(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetInitialTripTankMudVolume + !DEC$ ATTRIBUTES ALIAS: 'SetInitialTripTankMudVolume' :: SetInitialTripTankMudVolume + implicit none + real*8, intent(in) :: v + InitialTripTankMudVolume = v + InitialTripTankMudVolumeGal = v * 42.0 +#ifdef deb + print*, 'InitialTripTankMudVolume=', InitialTripTankMudVolume +#endif + end subroutine + + subroutine SetPedalFlowMeter(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPedalFlowMeter + !DEC$ ATTRIBUTES ALIAS: 'SetPedalFlowMeter' :: SetPedalFlowMeter + implicit none + real*8, intent(in) :: v + PedalFlowMeter = v +#ifdef deb + print*, 'PedalFlowMeter=', PedalFlowMeter +#endif + end subroutine + +end module CMudProperties \ No newline at end of file diff --git a/CSharp/BasicInputs/CMudPropertiesVariables.f90 b/CSharp/BasicInputs/CMudPropertiesVariables.f90 new file mode 100644 index 0000000..e21796d --- /dev/null +++ b/CSharp/BasicInputs/CMudPropertiesVariables.f90 @@ -0,0 +1,140 @@ +module CMudPropertiesVariables + use CIActionReference + use CDoubleEventHandlerCollection + implicit none + public + + !pointers + procedure (ActionDouble), pointer :: ActiveMudVolumePtr + procedure (ActionDouble), pointer :: ActiveDensityPtr + procedure (ActionDouble), pointer :: ReserveMudVolumePtr + procedure (ActionDouble), pointer :: ReserveDensityPtr + + type(DoubleEventHandlerCollection) :: OnActiveMudVolumeChange + type(DoubleEventHandlerCollection) :: OnActiveDensityChange + type(DoubleEventHandlerCollection) :: OnReserveMudVolumeChange + type(DoubleEventHandlerCollection) :: OnReserveDensityChange + + !constants + integer, parameter :: WaterBase_MudType = 0 + integer, parameter :: OilBase_MudType = 1 + integer, parameter :: PowerLaw_RheologyModel = 0 + integer, parameter :: Bingham_RheologyModel = 1 + integer, parameter :: Newtonian_RheologyModel = 2 + INTEGER, PARAMETER :: Herschel_Bulkley_RheologyModel = 3 + + ! variables + integer :: ActiveMudType + integer :: ActiveRheologyModel + real(8) :: ActiveMudVolume + real(8) :: ActiveMudVolumeGal + real(8) :: ActiveDensity + real(8) :: ActivePlasticViscosity + real(8) :: ActiveYieldPoint + real(8) :: ActiveThetaThreeHundred + real(8) :: ActiveThetaSixHundred + + integer :: ReserveMudType + real(8) :: ReserveMudVolume + real(8) :: ReserveMudVolumeGal + real(8) :: ReserveDensity + real(8) :: ReservePlasticViscosity + real(8) :: ReserveYieldPoint + real(8) :: ReserveThetaThreeHundred + real(8) :: ReserveThetaSixHundred + + real(8) :: ActiveTotalTankCapacity + real(8) :: ActiveTotalTankCapacityGal + real(8) :: ActiveSettledContents + real(8) :: ActiveSettledContentsGal + real(8) :: ActiveTotalContents + real(8) :: ActiveTotalContentsGal + logical :: ActiveAutoDensity + !real(8) :: ReserveTotalTankCapacity + !real(8) :: ReserveTotalTankCapacityGal + !real(8) :: ReserveSettledContents + !real(8) :: ReserveSettledContentsGal + !real(8) :: ReserveTotalContents + !real(8) :: ReserveTotalContentsGal + real(8) :: InitialTripTankMudVolume + real(8) :: InitialTripTankMudVolumeGal + real(8) :: PedalFlowMeter + + contains + + + subroutine Set_ActiveMudVolume_StudentStation(v) + implicit none + real*8, intent(in) :: v +#ifdef ExcludeExtraChanges + if(ActiveMudVolume == v) return +#endif + ActiveMudVolume = v + if(associated(ActiveMudVolumePtr)) call ActiveMudVolumePtr(ActiveMudVolume) + end subroutine + + subroutine Set_ActiveDensity_StudentStation(v) + implicit none + real*8, intent(in) :: v +#ifdef ExcludeExtraChanges + if(ActiveDensity == v) return +#endif + ActiveDensity = v + if(associated(ActiveDensityPtr)) call ActiveDensityPtr(ActiveDensity) + end subroutine + + subroutine Set_ReserveMudVolume_StudentStation(v) + implicit none + real*8, intent(in) :: v +#ifdef ExcludeExtraChanges + if(ReserveMudVolume == v) return +#endif + ReserveMudVolume = v + if(associated(ReserveMudVolumePtr)) call ReserveMudVolumePtr(ReserveMudVolume) + end subroutine + + subroutine Set_ReserveDensity_StudentStation(v) + implicit none + real*8, intent(in) :: v +#ifdef ExcludeExtraChanges + if(ReserveDensity == v) return +#endif + ReserveDensity = v + if(associated(ReserveDensityPtr)) call ReserveDensityPtr(ReserveDensity) + end subroutine + + + + subroutine SubscribeActiveMudVolume(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeActiveMudVolume + !DEC$ ATTRIBUTES ALIAS: 'SubscribeActiveMudVolume' :: SubscribeActiveMudVolume + implicit none + procedure (ActionDouble) :: a + ActiveMudVolumePtr => a + end subroutine + + subroutine SubscribeActiveDensity(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeActiveDensity + !DEC$ ATTRIBUTES ALIAS: 'SubscribeActiveDensity' :: SubscribeActiveDensity + implicit none + procedure (ActionDouble) :: a + ActiveDensityPtr => a + end subroutine + + subroutine SubscribeReserveMudVolume(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeReserveMudVolume + !DEC$ ATTRIBUTES ALIAS: 'SubscribeReserveMudVolume' :: SubscribeReserveMudVolume + implicit none + procedure (ActionDouble) :: a + ReserveMudVolumePtr => a + end subroutine + + subroutine SubscribeReserveDensity(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeReserveDensity + !DEC$ ATTRIBUTES ALIAS: 'SubscribeReserveDensity' :: SubscribeReserveDensity + implicit none + procedure (ActionDouble) :: a + ReserveDensityPtr => a + end subroutine + +end module CMudPropertiesVariables \ No newline at end of file diff --git a/CSharp/BasicInputs/Geology/CFormation.f90 b/CSharp/BasicInputs/Geology/CFormation.f90 new file mode 100644 index 0000000..3f62502 --- /dev/null +++ b/CSharp/BasicInputs/Geology/CFormation.f90 @@ -0,0 +1,37 @@ +module CFormation + use CFormationVariables + implicit none + public + contains + integer function SetFormations(count, array) + !DEC$ ATTRIBUTES DLLEXPORT::SetFormations + !DEC$ ATTRIBUTES ALIAS: 'SetFormations' :: SetFormations + implicit none + integer, intent(in) :: count + integer :: i + type(CFormationItem), intent(inout), target :: array(count) + type(CFormationItem), pointer :: item + FormationCount = count + if(size(Formations) > 0) then + deallocate(Formations) + end if + if(count > 0) then + allocate(Formations(count)) + do i = 1, count + item => array(i) + Formations(i)%Top = item%Top + Formations(i)%Thickness = item%Thickness + Formations(i)%Drillablity = item%Drillablity + Formations(i)%Abrasiveness = item%Abrasiveness + Formations(i)%ThresholdWeight = item%ThresholdWeight + Formations(i)%PorePressureGradient = item%PorePressureGradient + !print*, "===========================" + !print*, "Formations(", i, ")%Top=", Formations(i)%Top + !print*, "Formations(",i,")%Thickness", Formations(i)%Thickness + !print*, "Formations(",i,")%Drillablity", Formations(i)%Drillablity + end do + end if + + SetFormations = 0 + end function SetFormations +end module CFormation \ No newline at end of file diff --git a/CSharp/BasicInputs/Geology/CFormationVariables.f90 b/CSharp/BasicInputs/Geology/CFormationVariables.f90 new file mode 100644 index 0000000..21fcf14 --- /dev/null +++ b/CSharp/BasicInputs/Geology/CFormationVariables.f90 @@ -0,0 +1,20 @@ +module CFormationVariables + implicit none + public + + ! types + ! Pipe Items in String Array + type, bind(c), public :: CFormationItem + real(8) :: Top + real(8) :: Thickness + real(8) :: Drillablity + real(8) :: Abrasiveness + real(8) :: ThresholdWeight + real(8) :: PorePressureGradient + end type CFormationItem + + integer :: FormationCount = 0 + type(CFormationItem), allocatable :: Formations(:) + + contains +end module CFormationVariables \ No newline at end of file diff --git a/CSharp/BasicInputs/Geology/CReservoir.f90 b/CSharp/BasicInputs/Geology/CReservoir.f90 new file mode 100644 index 0000000..9808aed --- /dev/null +++ b/CSharp/BasicInputs/Geology/CReservoir.f90 @@ -0,0 +1,114 @@ +module CReservoir + use CReservoirVariables + implicit none + public + contains + + subroutine SetReservoirFormationNo(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetReservoirFormationNo + !DEC$ ATTRIBUTES ALIAS: 'SetReservoirFormationNo' :: SetReservoirFormationNo + implicit none + integer, intent(in) :: v + FormationNo = v + end subroutine + + subroutine SetFormationTop(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetFormationTop + !DEC$ ATTRIBUTES ALIAS: 'SetFormationTop' :: SetFormationTop + implicit none + real*8, intent(in) :: v + FormationTop = v + end subroutine + + subroutine SetPressureGradient(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPressureGradient + !DEC$ ATTRIBUTES ALIAS: 'SetPressureGradient' :: SetPressureGradient + implicit none + real*8, intent(in) :: v + PressureGradient = v + end subroutine + + subroutine SetFormationPermeability(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetFormationPermeability + !DEC$ ATTRIBUTES ALIAS: 'SetFormationPermeability' :: SetFormationPermeability + implicit none + real*8, intent(in) :: v + FormationPermeability = v + end subroutine + + subroutine SetGeothermalGradient(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetGeothermalGradient + !DEC$ ATTRIBUTES ALIAS: 'SetGeothermalGradient' :: SetGeothermalGradient + implicit none + real*8, intent(in) :: v + GeothermalGradient = v + end subroutine + + subroutine SetFluidType(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetFluidType + !DEC$ ATTRIBUTES ALIAS: 'SetFluidType' :: SetFluidType + implicit none + integer, intent(in) :: v + FluidType = v + end subroutine + + subroutine SetFluidGradient(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetFluidGradient + !DEC$ ATTRIBUTES ALIAS: 'SetFluidGradient' :: SetFluidGradient + implicit none + real*8, intent(in) :: v + FluidGradient = v + end subroutine + + subroutine SetFluidViscosity(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetFluidViscosity + !DEC$ ATTRIBUTES ALIAS: 'SetFluidViscosity' :: SetFluidViscosity + implicit none + real*8, intent(in) :: v + FluidViscosity = v + end subroutine + + subroutine SetInactiveInflux(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetInactiveInflux + !DEC$ ATTRIBUTES ALIAS: 'SetInactiveInflux' :: SetInactiveInflux + implicit none + logical, intent(in) :: v + InactiveInflux = v + end subroutine + + subroutine SetMakeKickSinglePacket(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMakeKickSinglePacket + !DEC$ ATTRIBUTES ALIAS: 'SetMakeKickSinglePacket' :: SetMakeKickSinglePacket + implicit none + logical, intent(in) :: v + MakeKickSinglePacket = v +#ifdef deb + print*, 'MakeKickSinglePacket=', MakeKickSinglePacket +#endif + end subroutine + + subroutine SetIsAutoMigrationRateSelected(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetIsAutoMigrationRateSelected + !DEC$ ATTRIBUTES ALIAS: 'SetIsAutoMigrationRateSelected' :: SetIsAutoMigrationRateSelected + implicit none + logical, intent(in) :: v + IsAutoMigrationRateSelected = v +#ifdef deb + print*, 'IsAutoMigrationRateSelected=', IsAutoMigrationRateSelected +#endif + end subroutine + + subroutine SetAutoMigrationRate(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAutoMigrationRate + !DEC$ ATTRIBUTES ALIAS: 'SetAutoMigrationRate' :: SetAutoMigrationRate + implicit none + real*8, intent(in) :: v + AutoMigrationRate = v +#ifdef deb + print*, 'AutoMigrationRate=', AutoMigrationRate +#endif + end subroutine + + + +end module CReservoir \ No newline at end of file diff --git a/CSharp/BasicInputs/Geology/CReservoirVariables.f90 b/CSharp/BasicInputs/Geology/CReservoirVariables.f90 new file mode 100644 index 0000000..43ae73f --- /dev/null +++ b/CSharp/BasicInputs/Geology/CReservoirVariables.f90 @@ -0,0 +1,25 @@ +module CReservoirVariables + implicit none + public + !constants + integer :: Gas_FluidType = 0 + integer :: Oil_FluidType = 1 + integer :: Water_FluidType = 2 + + ! variables + integer :: FormationNo + real(8) :: FormationTop + real(8) :: PressureGradient + real(8) :: FormationPermeability + real(8) :: GeothermalGradient + integer :: FluidType + real(8) :: FluidGradient + real(8) :: FluidViscosity + logical :: InactiveInflux + logical :: IsAutoMigrationRateSelected + real(8) :: AutoMigrationRate + + logical :: MakeKickSinglePacket + + contains +end module CReservoirVariables \ No newline at end of file diff --git a/CSharp/BasicInputs/Geology/CShoe.f90 b/CSharp/BasicInputs/Geology/CShoe.f90 new file mode 100644 index 0000000..20af03b --- /dev/null +++ b/CSharp/BasicInputs/Geology/CShoe.f90 @@ -0,0 +1,55 @@ +module CShoe + use CShoeVariables + implicit none + public + contains + + subroutine SetShoeFormationNo(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetShoeFormationNo + !DEC$ ATTRIBUTES ALIAS: 'SetShoeFormationNo' :: SetShoeFormationNo + implicit none + integer, intent(in) :: v + FormationNo = v + end subroutine + + subroutine SetShoeDepth(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetShoeDepth + !DEC$ ATTRIBUTES ALIAS: 'SetShoeDepth' :: SetShoeDepth + implicit none + real*8, intent(in) :: v + ShoeDepth = v + end subroutine + + subroutine SetLeakOff(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLeakOff + !DEC$ ATTRIBUTES ALIAS: 'SetLeakOff' :: SetLeakOff + implicit none + real*8, intent(in) :: v + LeakOff = v + end subroutine + + subroutine SetBreakdown(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetBreakdown + !DEC$ ATTRIBUTES ALIAS: 'SetBreakdown' :: SetBreakdown + implicit none + real*8, intent(in) :: v + Breakdown = v + end subroutine + + subroutine SetFracturePropagation(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetFracturePropagation + !DEC$ ATTRIBUTES ALIAS: 'SetFracturePropagation' :: SetFracturePropagation + implicit none + real*8, intent(in) :: v + FracturePropagation = v + end subroutine + + subroutine SetInactiveFracture(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetInactiveFracture + !DEC$ ATTRIBUTES ALIAS: 'SetInactiveFracture' :: SetInactiveFracture + implicit none + logical, intent(in) :: v + InactiveFracture = v + end subroutine + +end module CShoe \ No newline at end of file diff --git a/CSharp/BasicInputs/Geology/CShoeVariables.f90 b/CSharp/BasicInputs/Geology/CShoeVariables.f90 new file mode 100644 index 0000000..88047bd --- /dev/null +++ b/CSharp/BasicInputs/Geology/CShoeVariables.f90 @@ -0,0 +1,12 @@ +module CShoeVariables + implicit none + public + ! variables + integer :: FormationNo + real(8) :: ShoeDepth + real(8) :: LeakOff + real(8) :: Breakdown + real(8) :: FracturePropagation + logical :: InactiveFracture + contains +end module CShoeVariables \ No newline at end of file diff --git a/CSharp/BasicInputs/Geology/cformationvariables.mod b/CSharp/BasicInputs/Geology/cformationvariables.mod new file mode 100644 index 0000000000000000000000000000000000000000..258b0d35d7499b36cce367a0fdd9c8a03031cb6b GIT binary patch literal 1189 zcmV;W1X}waiwFP!000001I1WfbD~HTeeYkj5t1#KlM`0Q*^v(7a?wrtg z9Y4R%)p4A>@H=N=5`~Xzn*Q~4FQQ(rkFW7X#h*Tczi{+~#ZzH2%IJ%LD<|Fx3<8$R z8O0%ELG3hE5U_-MJ&ic}jA+<5znRu|^NVhJ#Pm=xv>i(=u9d$cd~`P$>82K_0J}H9 zLKbfY+;fOx;32<3#B2bds!WT=j*UHo_>{qZ2}w~^;<}hW_y!EGqQ$=(nx;+Waos$+ zw*6ZyER$%x2A@XR`)45diiPko0nNVA&vL>YTZDwBt9ZTqNu%dgb`k};x)O$1*g_O< z0Z00p(B~vvMs#xm3A(-}``GqJhOU;+(#ttDC+Cy81QriA zVToCikr1rHbOmw1CQpciZ+3i&amNgOvLt}=0j=T@+*2*n^%Ow5ZxmIH!s6!|7xKXA zNl-_EH2RNL&<-2XqEl!)#O@9)vkPS;puaM@S+WG$y7E`aqu93ColXq|)RHpHh4zTL z4v3FXMg<;R!2^{gSj1aa)jnoPcYJC!mt6;p>yI4E_jHpWVvs4!fed5&4#A4?U3qW= z@=qSJm^~uc2mB$0JQX8rMjS`ict)@l$jz=zR7Mxuw#u3xkt+_$M(`AE!gZbHJr`>; z%kxO0W{)3ZVfuzqFCF_p#2n6E<>^Kj$s!k7xL(H#XpV&gQ%6>op(Pru2KxPVty4xv z7OoSM!@}D}<5;q0NkEox$5wmSFL(2VMpUEbhOuv|o^F|VLQDu`wH`2M!3NOsF^p}< zr=@Z5GwnL{m5Zz@nvdGa!tkkAZE zRXqL#O@~zHf-rW1=+Z|?{QMZggkLDLLahzCV{Hga-5-n*n_zPN) znPT{)3cIc6<{E5_xB-+%Nm@y>7)Mvv&~HTHx&Q? DBR5Dj literal 0 HcmV?d00001 diff --git a/CSharp/BasicInputs/Geology/creservoirvariables.mod b/CSharp/BasicInputs/Geology/creservoirvariables.mod new file mode 100644 index 0000000000000000000000000000000000000000..25e4892d502361337c4836dab4be66dddb0a6f71 GIT binary patch literal 605 zcmV-j0;2sNiwFP!000001J#z>j@mE~hVT6pa~HVS%Hd4!*p#BE5Kv(0O{A4K7}h0; zBRiqx?K@#f%OOzqAVeiXGLu;P{M+MydS8d`#O*i`%2^t4SaGF=jKDDK2Kb7zgwJ5E zWC;FeZ=~c8?kC!tj_rXr7U6)2D7&WtOK_AW75A+1GgGm5&$RIEC{FS79+!b!tUb%+ znyZx*YRZ&gPXX7T=50z!r80cPkK_+!f{z7P1q_xZG87B70mgrBfPwSea;izjAS}h{FaLh&FUv^RrP8~-$S`4DcO_s3~Sbv z7WJeQDkqRBRFC>D3N^CZ=uoI1_Y@Qw2PRITNly7Ch1Q`#QD`3-0tJ(j!m}6On8$}5 rW-H|Uxq_cmPn9sf! a + end subroutine + + subroutine SubscribeMudPump2LinerDiameter(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMudPump2LinerDiameter + !DEC$ ATTRIBUTES ALIAS: 'SubscribeMudPump2LinerDiameter' :: SubscribeMudPump2LinerDiameter + implicit none + procedure (ActionDouble) :: a + MudPump2LinerDiameterPtr => a + end subroutine + + subroutine SubscribeMudPump3LinerDiameter(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMudPump3LinerDiameter + !DEC$ ATTRIBUTES ALIAS: 'SubscribeMudPump3LinerDiameter' :: SubscribeMudPump3LinerDiameter + implicit none + procedure (ActionDouble) :: a + MudPump3LinerDiameterPtr => a + end subroutine + + + + subroutine SubscribeMudPump1OutputBblStroke(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMudPump1OutputBblStroke + !DEC$ ATTRIBUTES ALIAS: 'SubscribeMudPump1OutputBblStroke' :: SubscribeMudPump1OutputBblStroke + implicit none + procedure (ActionDouble) :: a + MudPump1OutputBblStrokePtr => a + end subroutine + + subroutine SubscribeMudPump2OutputBblStroke(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMudPump2OutputBblStroke + !DEC$ ATTRIBUTES ALIAS: 'SubscribeMudPump2OutputBblStroke' :: SubscribeMudPump2OutputBblStroke + implicit none + procedure (ActionDouble) :: a + MudPump2OutputBblStrokePtr => a + end subroutine + + subroutine SubscribeMudPump3OutputBblStroke(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMudPump3OutputBblStroke + !DEC$ ATTRIBUTES ALIAS: 'SubscribeMudPump3OutputBblStroke' :: SubscribeMudPump3OutputBblStroke + implicit none + procedure (ActionDouble) :: a + MudPump3OutputBblStrokePtr => a + end subroutine + + + + + subroutine SetMudPump1LinerDiameterN(a) + implicit none + real(8) :: a + if(associated(MudPump1LinerDiameterPtr)) call MudPump1LinerDiameterPtr(a) + end subroutine + + subroutine SetMudPump2LinerDiameterN(a) + implicit none + real(8) :: a + if(associated(MudPump2LinerDiameterPtr)) call MudPump2LinerDiameterPtr(a) + end subroutine + + subroutine SetMudPump3LinerDiameterN(a) + implicit none + real(8) :: a + if(associated(MudPump3LinerDiameterPtr)) call MudPump3LinerDiameterPtr(a) + end subroutine + + + + subroutine SetMudPump1OutputBblStrokeN(a) + implicit none + real(8) :: a + if(associated(MudPump1OutputBblStrokePtr)) call MudPump1OutputBblStrokePtr(a) + end subroutine + + subroutine SetMudPump2OutputBblStrokeN(a) + implicit none + real(8) :: a + if(associated(MudPump2OutputBblStrokePtr)) call MudPump2OutputBblStrokePtr(a) + end subroutine + + subroutine SetMudPump3OutputBblStrokeN(a) + implicit none + real(8) :: a + if(associated(MudPump3OutputBblStrokePtr)) call MudPump3OutputBblStrokePtr(a) + end subroutine + + + + + subroutine CalcMudPump1LinerDiameter() + use, intrinsic :: IEEE_ARITHMETIC + implicit none + real(8) :: a + a = (MathPI / 4.d0) * MudPump1Stroke * 3.0d0 * MudPump1VolumetricEfficiency / 9702.03d0 + a = dsqrt(MudPump1OutputBblStroke / a) + if (.not.IEEE_IS_FINITE(a) .or. IEEE_IS_NAN(a)) then + MudPump1LinerDiameter = 0.0 + else + MudPump1LinerDiameter = a + endif + call SetMudPump1LinerDiameterN(MudPump1LinerDiameter) + end subroutine + + subroutine CalcMudPump2LinerDiameter() + use, intrinsic :: IEEE_ARITHMETIC + implicit none + real(8) :: a + a = (MathPI / 4.d0) * MudPump2Stroke * 3.0d0 * MudPump2VolumetricEfficiency / 9702.03d0 + a = dsqrt(MudPump2OutputBblStroke / a) + if (.not.IEEE_IS_FINITE(a) .or. IEEE_IS_NAN(a)) then + MudPump2LinerDiameter = 0.0 + else + MudPump2LinerDiameter = a + endif + call SetMudPump2LinerDiameterN(MudPump2LinerDiameter) + end subroutine + + subroutine CalcMudPump3LinerDiameter() + use, intrinsic :: IEEE_ARITHMETIC + implicit none + real(8) :: a + a = (MathPI / 4.d0) * CementPumpStroke * 3.0d0 * CementPumpVolumetricEfficiency / 9702.03d0 + a = dsqrt(CementPumpOutputBblStroke / a) + if (.not.IEEE_IS_FINITE(a) .or. IEEE_IS_NAN(a)) then + CementPumpLinerDiameter = 0.0 + else + CementPumpLinerDiameter = a + endif + call SetMudPump3LinerDiameterN(CementPumpLinerDiameter) + end subroutine + + + + subroutine CalcPump1OutputBblStroke() + implicit none + MudPump1OutputBblStroke = (MathPI / 4.d0) * (MudPump1LinerDiameter**2) * MudPump1Stroke * 3.0d0 * MudPump1VolumetricEfficiency / 9702.03d0 + call SetMudPump1OutputBblStrokeN(MudPump1OutputBblStroke) + end subroutine + + subroutine CalcPump2OutputBblStroke() + implicit none + MudPump2OutputBblStroke = (MathPI / 4.d0) * (MudPump2LinerDiameter**2) * MudPump2Stroke * 3.0d0 * MudPump2VolumetricEfficiency / 9702.03d0 + call SetMudPump2OutputBblStrokeN(MudPump2OutputBblStroke) + end subroutine + + subroutine CalcPump3OutputBblStroke() + implicit none + CementPumpOutputBblStroke = (MathPI / 4.d0) * (CementPumpLinerDiameter**2) * CementPumpStroke * 3.0d0 * CementPumpVolumetricEfficiency / 9702.03d0 + call SetMudPump3OutputBblStrokeN(CementPumpOutputBblStroke) + end subroutine + +end module CPumpsVariables \ No newline at end of file diff --git a/CSharp/BasicInputs/RigSpecifications/CRigSize.f90 b/CSharp/BasicInputs/RigSpecifications/CRigSize.f90 new file mode 100644 index 0000000..e10dff3 --- /dev/null +++ b/CSharp/BasicInputs/RigSpecifications/CRigSize.f90 @@ -0,0 +1,37 @@ +module CRigSize + use CRigSizeVariables + implicit none + public + contains + subroutine SetRigType(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRigType + !DEC$ ATTRIBUTES ALIAS: 'SetRigType' :: SetRigType + implicit none + integer, intent(in) :: v + RigType = v + end subroutine + + subroutine SetCrownHeight(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCrownHeight + !DEC$ ATTRIBUTES ALIAS: 'SetCrownHeight' :: SetCrownHeight + implicit none + real*8, intent(in) :: v + CrownHeight = v + end subroutine + + subroutine SetMonkeyBoandHeight(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMonkeyBoandHeight + !DEC$ ATTRIBUTES ALIAS: 'SetMonkeyBoandHeight' :: SetMonkeyBoandHeight + implicit none + real*8, intent(in) :: v + MonkeyBoandHeight = v + end subroutine + + subroutine SetRigFloorHeight(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRigFloorHeight + !DEC$ ATTRIBUTES ALIAS: 'SetRigFloorHeight' :: SetRigFloorHeight + implicit none + real*8, intent(in) :: v + RigFloorHeight = v + end subroutine +end module CRigSize \ No newline at end of file diff --git a/CSharp/BasicInputs/RigSpecifications/CRigSizeVariables.f90 b/CSharp/BasicInputs/RigSpecifications/CRigSizeVariables.f90 new file mode 100644 index 0000000..647bf16 --- /dev/null +++ b/CSharp/BasicInputs/RigSpecifications/CRigSizeVariables.f90 @@ -0,0 +1,13 @@ +module CRigSizeVariables + implicit none + public + !constants + integer :: Convensional_RigSize = 0 + + ! variables + integer :: RigType + real(8) :: CrownHeight + real(8) :: MonkeyBoandHeight + real(8) :: RigFloorHeight + contains +end module CRigSizeVariables \ No newline at end of file diff --git a/CSharp/BasicInputs/RigSpecifications/caccumulatorvariables.mod b/CSharp/BasicInputs/RigSpecifications/caccumulatorvariables.mod new file mode 100644 index 0000000000000000000000000000000000000000..b01733b25cad8593a073d9ec87f3c54b2bf487f8 GIT binary patch literal 520 zcmV+j0{8tNiwFP!000001I?CEZ<{a>$KU-a?#;33(}-@gAi3m2giKqel`l);us#YGO-8e*W5C7M0L zT8a$l`*<$JS4Oppmyth>1NJ@QS(zr<1h_)7*p0pO;j+-*PPb# zRO~vGmUWnr%S7^Il`{2iJtnBv>%&{Ts2TK;8Mb^j;N%%1ZS&fUa=hu~8%`y5>P!NLm`J98e++{OTZI-mHizqpE=r3VDa z6C?^fX9AGB;I;9T26;}c3POVy@al)sEK~gFtGGK_^cS@Iu&4vLmZR6=|7uZ>a+TKz~}%!~RDtkYm6`p{P;X z4eKgZ|7Gbd0$Axp>dU6I4k+!*#I!3+QT%o-|K--S1}`Bmvy{~hpxgORz&?4{5*VNp zXB#oHb1H8FL)5C>1a4ZSlECeeCJ`8+HVGgwK594uM_p*wUJD&;C*!k^R?j#Gee?^B Kp$P0G3IG6_GyER_ literal 0 HcmV?d00001 diff --git a/CSharp/BasicInputs/RigSpecifications/cbopstackvariables.mod b/CSharp/BasicInputs/RigSpecifications/cbopstackvariables.mod new file mode 100644 index 0000000000000000000000000000000000000000..cc48d2cd0646192c6412560ea4d24f8b8b1baf1e GIT binary patch literal 624 zcmV-$0+0P4iwFP!000001I?Gqj-o&mhWGUpXNN9&QlPZjJ9V518ASuOvtff+A|q0y zK>PLQC`}_5JMCm*D$&UK1LmXZuXFkNV{R?2p$P}RIfe{QOe6u1Kv8uCJi*+QZD1?- z0lXJyA^0EWrHQk$jhSPzH#;~SLpQ|-##}IGZ0}qVJ0mv4dzRzs&h>^T{xm6LSf9xUlBqJOE?1m>Oea`D71Q6QDpd z9&0k3LjN2CC6@pZFJT5uiEDP}X4(A>82(Z$g=n{3{_;2uTBBzaYHFlaE9k6o_B<;v)f7dIRYb z&e{C?>leM4|9r0Lx|0yH`wl7T zQNaS^3x13?A(od=LO?7m`ydQuJtVyhPu5(m_A@?7-G`+l=U6MhXoRW%lwE zbkZ~!QFyM6A{2V{=AS~JRN8F{gXTr0aOr%ndP-DOQtskV(i-|ElslzP1%+<8Hy|kK zrD}}AbGiPZ(z~uW8276={`^0KdRE2dr`0@$np(>oC~Bm7R#EKKPY0^qsvl9)+vG2u KHEp*?5&!_=Z6)mh literal 0 HcmV?d00001 diff --git a/CSharp/BasicInputs/WellProfile/CCasingLinerChoke.f90 b/CSharp/BasicInputs/WellProfile/CCasingLinerChoke.f90 new file mode 100644 index 0000000..cfcaeb3 --- /dev/null +++ b/CSharp/BasicInputs/WellProfile/CCasingLinerChoke.f90 @@ -0,0 +1,145 @@ +module CCasingLinerChoke + use CCasingLinerChokeVariables + implicit none + public + contains + + subroutine SetCasingDepth(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCasingDepth + !DEC$ ATTRIBUTES ALIAS: 'SetCasingDepth' :: SetCasingDepth + implicit none + real*8, intent(in) :: v + CasingDepth = v + end subroutine + + subroutine SetCasingId(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCasingId + !DEC$ ATTRIBUTES ALIAS: 'SetCasingId' :: SetCasingId + implicit none + real*8, intent(in) :: v + CasingId = v + end subroutine + + subroutine SetCasingOd(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCasingOd + !DEC$ ATTRIBUTES ALIAS: 'SetCasingOd' :: SetCasingOd + implicit none + real*8, intent(in) :: v + CasingOd = v + end subroutine + + subroutine SetCasingWeight(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCasingWeight + !DEC$ ATTRIBUTES ALIAS: 'SetCasingWeight' :: SetCasingWeight + implicit none + real*8, intent(in) :: v + CasingWeight = v + end subroutine + + subroutine SetCasingCollapsePressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCasingCollapsePressure + !DEC$ ATTRIBUTES ALIAS: 'SetCasingCollapsePressure' :: SetCasingCollapsePressure + implicit none + real*8, intent(in) :: v + CasingCollapsePressure = v + end subroutine + + subroutine SetCasingTensileStrength(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCasingTensileStrength + !DEC$ ATTRIBUTES ALIAS: 'SetCasingTensileStrength' :: SetCasingTensileStrength + implicit none + real*8, intent(in) :: v + CasingTensileStrength = v + end subroutine + + + + + + + + + subroutine SetLinerTopDepth(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLinerTopDepth + !DEC$ ATTRIBUTES ALIAS: 'SetLinerTopDepth' :: SetLinerTopDepth + implicit none + real*8, intent(in) :: v + LinerTopDepth = v + end subroutine + + subroutine SetLinerLength(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLinerLength + !DEC$ ATTRIBUTES ALIAS: 'SetLinerLength' :: SetLinerLength + implicit none + real*8, intent(in) :: v + LinerLength = v + end subroutine + + subroutine SetLinerId(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLinerId + !DEC$ ATTRIBUTES ALIAS: 'SetLinerId' :: SetLinerId + implicit none + real*8, intent(in) :: v + LinerId = v + end subroutine + + subroutine SetLinerOd(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLinerOd + !DEC$ ATTRIBUTES ALIAS: 'SetLinerOd' :: SetLinerOd + implicit none + real*8, intent(in) :: v + LinerOd = v + end subroutine + + subroutine SetLinerWeight(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLinerWeight + !DEC$ ATTRIBUTES ALIAS: 'SetLinerWeight' :: SetLinerWeight + implicit none + real*8, intent(in) :: v + LinerWeight = v + end subroutine + + subroutine SetLinerCollapsePressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLinerCollapsePressure + !DEC$ ATTRIBUTES ALIAS: 'SetLinerCollapsePressure' :: SetLinerCollapsePressure + implicit none + real*8, intent(in) :: v + LinerCollapsePressure = v + end subroutine + + subroutine SetLinerTensileStrength(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLinerTensileStrength + !DEC$ ATTRIBUTES ALIAS: 'SetLinerTensileStrength' :: SetLinerTensileStrength + implicit none + real*8, intent(in) :: v + LinerTensileStrength = v + end subroutine + + + + subroutine SetOpenHoleId(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetOpenHoleId + !DEC$ ATTRIBUTES ALIAS: 'SetOpenHoleId' :: SetOpenHoleId + implicit none + real*8, intent(in) :: v + OpenHoleId = v +#ifdef deb + print*, 'OpenHoleId=', OpenHoleId +#endif + end subroutine + + subroutine SetOpenHoleLength(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetOpenHoleLength + !DEC$ ATTRIBUTES ALIAS: 'SetOpenHoleLength' :: SetOpenHoleLength + implicit none + real*8, intent(in) :: v + OpenHoleLength = v +#ifdef deb + print*, 'OpenHoleLength=', OpenHoleLength +#endif + end subroutine + + + + +end module CCasingLinerChoke \ No newline at end of file diff --git a/CSharp/BasicInputs/WellProfile/CCasingLinerChokeVariables.f90 b/CSharp/BasicInputs/WellProfile/CCasingLinerChokeVariables.f90 new file mode 100644 index 0000000..605f5d6 --- /dev/null +++ b/CSharp/BasicInputs/WellProfile/CCasingLinerChokeVariables.f90 @@ -0,0 +1,24 @@ +module CCasingLinerChokeVariables + implicit none + public + ! variables + real(8) :: CasingDepth + real(8) :: CasingId + real(8) :: CasingOd + real(8) :: CasingWeight + real(8) :: CasingCollapsePressure + real(8) :: CasingTensileStrength + + real(8) :: LinerTopDepth + real(8) :: LinerLength + real(8) :: LinerId + real(8) :: LinerOd + real(8) :: LinerWeight + real(8) :: LinerCollapsePressure + real(8) :: LinerTensileStrength + + real(8) :: OpenHoleId + real(8) :: OpenHoleLength + + contains +end module CCasingLinerChokeVariables \ No newline at end of file diff --git a/CSharp/BasicInputs/WellProfile/CPathGeneration.f90 b/CSharp/BasicInputs/WellProfile/CPathGeneration.f90 new file mode 100644 index 0000000..862a383 --- /dev/null +++ b/CSharp/BasicInputs/WellProfile/CPathGeneration.f90 @@ -0,0 +1,59 @@ +module CPathGeneration + use CPathGenerationVariables + implicit none + public + contains + integer function SetPathGeneration(count, array) + !DEC$ ATTRIBUTES DLLEXPORT::SetPathGeneration + !DEC$ ATTRIBUTES ALIAS: 'SetPathGeneration' :: SetPathGeneration + implicit none + integer, intent(in) :: count + integer :: i + type(CPathGenerationItem), intent(inout), target :: array(count) + type(CPathGenerationItem), pointer :: item + PathGenerationCount = count + if(size(PathGenerations) > 0) then + deallocate(PathGenerations) + end if + if(count > 0) then + allocate(PathGenerations(count)) + do i = 1, count + item => array(i) + PathGenerations(i)%HoleType = item%HoleType + PathGenerations(i)%Angle = item%Angle + PathGenerations(i)%Length = item%Length + PathGenerations(i)%FinalAngle = item%FinalAngle + PathGenerations(i)%TotalLength = item%TotalLength + PathGenerations(i)%MeasuredDepth = item%MeasuredDepth + PathGenerations(i)%TotalVerticalDepth = item%TotalVerticalDepth + end do + end if + + SetPathGeneration = 0 + end function SetPathGeneration + + + integer function SetPathGenerationDataPoints(count, array) + !DEC$ ATTRIBUTES DLLEXPORT::SetPathGenerationDataPoints + !DEC$ ATTRIBUTES ALIAS: 'SetPathGenerationDataPoints' :: SetPathGenerationDataPoints + implicit none + integer, intent(in) :: count + integer :: i + type(CDataPointItem), intent(inout), target :: array(count) + type(CDataPointItem), pointer :: item + PathGenerationDataPointsCount = count + if(size(PathGenerationDataPoints) > 0) then + deallocate(PathGenerationDataPoints) + end if + if(count > 0) then + allocate(PathGenerationDataPoints(count)) + do i = 1, count + item => array(i) + PathGenerationDataPoints(i)%X = item%X + PathGenerationDataPoints(i)%Y = item%Y + end do + end if + + SetPathGenerationDataPoints = 0 + end function SetPathGenerationDataPoints +end module CPathGeneration \ No newline at end of file diff --git a/CSharp/BasicInputs/WellProfile/CPathGenerationVariables.f90 b/CSharp/BasicInputs/WellProfile/CPathGenerationVariables.f90 new file mode 100644 index 0000000..5b70248 --- /dev/null +++ b/CSharp/BasicInputs/WellProfile/CPathGenerationVariables.f90 @@ -0,0 +1,28 @@ +module CPathGenerationVariables + implicit none + public + + ! types + type, bind(c), public :: CPathGenerationItem + integer :: HoleType + real(8) :: Angle + real(8) :: Length + real(8) :: FinalAngle + real(8) :: TotalLength + real(8) :: MeasuredDepth + real(8) :: TotalVerticalDepth + end type CPathGenerationItem + + type, bind(c), public :: CDataPointItem + real(8) :: X + real(8) :: Y + end type CDataPointItem + + integer :: PathGenerationCount = 0 + type(CPathGenerationItem), allocatable :: PathGenerations(:) + + integer :: PathGenerationDataPointsCount = 0 + type(CDataPointItem), allocatable :: PathGenerationDataPoints(:) + + contains +end module CPathGenerationVariables \ No newline at end of file diff --git a/CSharp/BasicInputs/WellProfile/CWellSurveyData.f90 b/CSharp/BasicInputs/WellProfile/CWellSurveyData.f90 new file mode 100644 index 0000000..3678afe --- /dev/null +++ b/CSharp/BasicInputs/WellProfile/CWellSurveyData.f90 @@ -0,0 +1,34 @@ +module CWellSurveyData + use CWellSurveyDataVariables + implicit none + public + contains + integer function SetSurveyData(count, array) + !DEC$ ATTRIBUTES DLLEXPORT::SetSurveyData + !DEC$ ATTRIBUTES ALIAS: 'SetSurveyData' :: SetSurveyData + implicit none + integer, intent(in) :: count + integer :: i + type(CSurveyDataItem), intent(inout), target :: array(count) + type(CSurveyDataItem), pointer :: item + SurveyDataCount = count + if(size(WellSurveyData) > 0) then + deallocate(WellSurveyData) + end if + if(count > 0) then + allocate(WellSurveyData(count)) + do i = 1, count + item => array(i) + WellSurveyData(i)%MeasuredDepth = item%MeasuredDepth + WellSurveyData(i)%Inclination = item%Inclination + WellSurveyData(i)%Azimoth = item%Azimoth + WellSurveyData(i)%TotalVerticalDepth = item%TotalVerticalDepth + WellSurveyData(i)%X = item%X + WellSurveyData(i)%Y = item%Y + WellSurveyData(i)%Z = item%Z + end do + end if + + SetSurveyData = 0 + end function SetSurveyData +end module CWellSurveyData \ No newline at end of file diff --git a/CSharp/BasicInputs/WellProfile/CWellSurveyDataVariables.f90 b/CSharp/BasicInputs/WellProfile/CWellSurveyDataVariables.f90 new file mode 100644 index 0000000..3a998fe --- /dev/null +++ b/CSharp/BasicInputs/WellProfile/CWellSurveyDataVariables.f90 @@ -0,0 +1,20 @@ +module CWellSurveyDataVariables + implicit none + public + + ! types + type, bind(c), public :: CSurveyDataItem + real(8) :: MeasuredDepth + real(8) :: Inclination + real(8) :: Azimoth + real(8) :: TotalVerticalDepth + real(8) :: X + real(8) :: Y + real(8) :: Z + end type CSurveyDataItem + + integer :: SurveyDataCount = 0 + type(CSurveyDataItem), allocatable :: WellSurveyData(:) + + contains +end module CWellSurveyDataVariables \ No newline at end of file diff --git a/CSharp/BasicInputs/WellProfile/cpathgenerationvariables.mod b/CSharp/BasicInputs/WellProfile/cpathgenerationvariables.mod new file mode 100644 index 0000000000000000000000000000000000000000..b24e01b475c632160c6455f94f0232d98353930e GIT binary patch literal 1564 zcmV+%2IKi3iwFP!000001MON}bD~HTeeYk!Q#W&RHceyluXz% zY9X1O?62Po2mu6aBI9JIwh}8r?7rvpz4zSPjq^Lhv`tCJ&-=~G*2mxc@EGiOm|_G9 zuS4I9{0)8#_s@9!$HOw*|K+cv#JUmRjW3X0t zhZp$dXMekeVUNKUZZEy)Y3}d*Fd4G)!od5o^^doPE~#8%7A^qW9mDF2gp<;4U5Tr8YdU9B87Fz zX1&vJi#=3hZabg;3uB7#dU2 zKJvCCOYnmrFqnGwz2i&hZ#MqnCxKv3>j1?l3fA710Lc%Ci2l??6a|*&IA(|#kQdk8 z_>XP?y5crzid(53ZPn+bJ}b#orKzS6$+@~%0x{M8&5~A10#Pz;^$y;GHMJ#kuGlI5 zlcr(zwCI_}oiQ)a1(rM^%Z`QiCRDj@RE3!8x5)eQft;Dr!Yf;vmbo#bGP$HpY9Ti! zAoo*z*vwGu#&DD}gmT-b|1#qpTPxsmzf|HjfPrGA)`Q^AtTQac=BS3|^&wZR84WyiN7GQLQ>X%=Q#cp+qI$mLB*vgM+^=CvPT^Kd zZyiw#R++`_=(;O;b1Z6L{0_&Rw^{8ARxjI$aEm0u{l40CwR*GS$5!vGAI;T!@^jRi zqwCdMyrFt?Ouc$n+Q3_>H^do=>>dgtirh0Ru|JA#s-W-&(4yUpwUCx)I z^@wez$XaPF?i^jVRYS*fMTcaT%cmBdumf`O4CsFf{-hP?MGgyN=4kB%YBj%*z!_ph zhM0#MQAV}izw9Csu-P7y2=3V)GeuFVq^Md+8$mNw(0Q;EEi)q79ydcrlBOB5WG6Gs zRM2$`0;u&wr$mT>DQ3zYC_-{0*S``)wwWTahpyy#N`>}rr_o1Tl>m`zt_vz$@C<73 zOikxe^b9`p3@Q_2lhe1jhv@4_gXfF#)!G-I$ycHF5_cPE0lcViyny*pt#8@nSSRT) zdRv1r@fu8x*?rR*&X=#159>7_JlOSwiR9tLhgkcyZShV&I?2DHAghQ5>Y1X7`EiLI(H1mB8G`lcuAmGma|Z1t|{rC zY6=+ia$jB}-#tcQu<`4`cikZuSga(?QHrqJjt1zw3{_zYbn;v^05NJ=c=+whec8guA9PrG3tLprkFF2kd)Pi5m#0>P*T zgJabBIbu9)L^7PLhu0 OhUi~9>&4E7C;$NTA`3MD literal 0 HcmV?d00001 diff --git a/CSharp/Common/CCommon.f90 b/CSharp/Common/CCommon.f90 new file mode 100644 index 0000000..b5d74e6 --- /dev/null +++ b/CSharp/Common/CCommon.f90 @@ -0,0 +1,53 @@ +module CCommon + use CCommonVariables + implicit none + public + contains + + ! Input routines + subroutine SetStandRack(v) + implicit none + integer, intent(in) :: v + if(StandRack == v) return + StandRack = v + call OnStandRackChange%Run(v) +#ifdef deb + print*, 'StandRack=', StandRack +#endif + end subroutine + + + subroutine SetStandRack_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandRack_WN + !DEC$ ATTRIBUTES ALIAS: 'SetStandRack_WN' :: SetStandRack_WN + implicit none + integer, intent(in) :: v + call SetStandRack(v) + end subroutine + + + + ! Output routines + logical function GetDrillWatchOperationMode() + !DEC$ ATTRIBUTES DLLEXPORT :: GetDrillWatchOperationMode + !DEC$ ATTRIBUTES ALIAS: 'GetDrillWatchOperationMode' :: GetDrillWatchOperationMode + implicit none + GetDrillWatchOperationMode = DrillWatchOperationMode + end function + + integer function GetStandRack() + implicit none + GetStandRack = StandRack + end function + + integer function GetStandRack_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: GetStandRack_WN + !DEC$ ATTRIBUTES ALIAS: 'GetStandRack_WN' :: GetStandRack_WN + implicit none + GetStandRack_WN = StandRack + end function + + + + +end module CCommon \ No newline at end of file diff --git a/CSharp/Common/CCommonVariables.f90 b/CSharp/Common/CCommonVariables.f90 new file mode 100644 index 0000000..c898e63 --- /dev/null +++ b/CSharp/Common/CCommonVariables.f90 @@ -0,0 +1,15 @@ +module CCommonVariables + use CIntegerEventHandler + implicit none + public + + ! Input vars + integer :: StandRack + type(IntegerEventHandler) :: OnStandRackChange + + + ! Output vars + logical :: DrillWatchOperationMode + + contains +end module CCommonVariables \ No newline at end of file diff --git a/CSharp/Common/CIActionReference.f90 b/CSharp/Common/CIActionReference.f90 new file mode 100644 index 0000000..6d06572 --- /dev/null +++ b/CSharp/Common/CIActionReference.f90 @@ -0,0 +1,55 @@ +module CIActionReference + implicit none + abstract interface + subroutine ActionVoid() + end subroutine + + subroutine ActionBool(i) + logical, intent (in) :: i + end subroutine + + subroutine ActionInteger(i) + integer, intent (in) :: i + end subroutine + + subroutine ActionIntegerArray(arr) + integer, allocatable, intent (in) :: arr(:) + end subroutine + + subroutine ActionReal(i) + real, intent (in) :: i + end subroutine + + subroutine ActionDouble(i) + real(8), intent (in) :: i + end subroutine + + subroutine ActionDualDouble(a, b) + real(8), intent (in) :: a, b + end subroutine + + subroutine ActionString(c) + character(len=*), intent(in) :: c + end subroutine + + subroutine ActionStringInt(c, i) + character(len=*), intent(in) :: c + integer, intent (in) :: i + end subroutine + + subroutine ActionStringFloat(c, f) + character(len=*), intent(in) :: c + real, intent (in) :: f + end subroutine + + subroutine ActionStringDouble(c, d) + character(len=*), intent(in) :: c + real(8), intent (in) :: d + end subroutine + + subroutine ActionStringBool(c, b) + character(len=*), intent(in) :: c + logical, intent (in) :: b + end subroutine + end interface +end module CIActionReference \ No newline at end of file diff --git a/CSharp/Common/CLesson.f90 b/CSharp/Common/CLesson.f90 new file mode 100644 index 0000000..c7209fe --- /dev/null +++ b/CSharp/Common/CLesson.f90 @@ -0,0 +1,15 @@ +module CLesson + use CLessonVariables + implicit none + public + contains + subroutine SetWellProfileApproach(path, survey) + !DEC$ ATTRIBUTES DLLEXPORT :: SetWellProfileApproach + !DEC$ ATTRIBUTES ALIAS: 'SetWellProfileApproach' :: SetWellProfileApproach + implicit none + logical, intent(in) :: path + logical, intent(in) :: survey + IsPathGeneration = path + IsWellSurveyData = survey + end subroutine +end module CLesson \ No newline at end of file diff --git a/CSharp/Common/CLessonVariables.f90 b/CSharp/Common/CLessonVariables.f90 new file mode 100644 index 0000000..53065e6 --- /dev/null +++ b/CSharp/Common/CLessonVariables.f90 @@ -0,0 +1,9 @@ +module CLessonVariables + implicit none + public + + logical :: IsPathGeneration + logical :: IsWellSurveyData + + contains +end module CLessonVariables \ No newline at end of file diff --git a/CSharp/Common/CQuery.f90 b/CSharp/Common/CQuery.f90 new file mode 100644 index 0000000..34f5d6d --- /dev/null +++ b/CSharp/Common/CQuery.f90 @@ -0,0 +1,17 @@ +module CQuery + implicit none + public GetCurrentProcessorNumber + + interface + + function GetCurrentProcessorNumber() bind(C,Name='GetCurrentProcessorNumber') + use ifwinty + implicit none + !DEC$ ATTRIBUTES STDCALL :: GetCurrentProcessorNumber + integer(DWORD) :: GetCurrentProcessorNumber + end function GetCurrentProcessorNumber + + end interface + + contains +end module CQuery \ No newline at end of file diff --git a/CSharp/Common/CScaleRange.f90 b/CSharp/Common/CScaleRange.f90 new file mode 100644 index 0000000..cd08edf --- /dev/null +++ b/CSharp/Common/CScaleRange.f90 @@ -0,0 +1,16 @@ +module CScaleRange + implicit none + public + contains + + real function ScaleRange(x, toMin, toMax, fromMin, fromMax) + implicit none + real, intent(in) :: x + real, intent(in) :: toMin + real, intent(in) :: toMax + real, intent(in) :: fromMin + real, intent(in) :: fromMax + ScaleRange = ((toMax - toMin)*(x - fromMin)/(fromMax - fromMin)) + toMin + end function + +end module CScaleRange diff --git a/CSharp/Common/CTimer.f90 b/CSharp/Common/CTimer.f90 new file mode 100644 index 0000000..6c29943 --- /dev/null +++ b/CSharp/Common/CTimer.f90 @@ -0,0 +1,54 @@ +module CTimer + use ifwin, only: QueryPerformanceFrequency, QueryPerformanceCounter, T_LARGE_INTEGER + use ISO_C_BINDING + use ISO_FORTRAN_ENV + implicit none + public + type, public :: Timer + type(T_LARGE_INTEGER) :: StartTime + type(T_LARGE_INTEGER) :: EndTime + contains + procedure :: Start => Start + procedure :: Finish => Finish + procedure :: ElapsedTimeMs => ElapsedTime + end type Timer + contains + subroutine Start(this) + implicit none + class(Timer), intent(inout) :: this + integer :: ApiResult + ApiResult = QueryPerformanceCounter(this%StartTime) + end subroutine + subroutine Finish(this) + implicit none + class(Timer), intent(inout) :: this + integer :: ApiResult + ApiResult = QueryPerformanceCounter(this%EndTime) + end subroutine + integer function ElapsedTime(this) + implicit none + class(Timer), intent(inout) :: this + real(kind=REAL128) :: time + time = CalcTime(this%StartTime, this%EndTime) + ElapsedTime = int(time * 1000.0) + end function + real(kind=REAL128) function CalcTime(start, finish) + implicit none + type(T_LARGE_INTEGER), intent(in) :: start + type(T_LARGE_INTEGER), intent(in) :: finish + type(T_LARGE_INTEGER) :: freq + integer :: ApiResult + integer(kind=INT64) :: freq_64 + integer(kind=INT64) :: start_64 + integer(kind=INT64) :: finish_64 + start_64 = Make64(start) + finish_64 = Make64(finish) + ApiResult = QueryPerformanceFrequency(freq) + freq_64 = Make64( freq) + CalcTime = real(finish_64-start_64,kind=REAL128) / real(freq_64,kind=REAL128) + end function + integer(kind=INT64) function Make64(bit64_int) + type(T_LARGE_INTEGER), intent(in) :: bit64_int + Make64 = transfer(bit64_int, 0_INT64) + end function +end module CTimer \ No newline at end of file diff --git a/CSharp/Common/CTimerLegacy.f90 b/CSharp/Common/CTimerLegacy.f90 new file mode 100644 index 0000000..02cdcc9 --- /dev/null +++ b/CSharp/Common/CTimerLegacy.f90 @@ -0,0 +1,28 @@ +module CTimerLegacy + implicit none + public + type, public :: TimerLegacy + integer, dimension(8) :: StartTime + integer, dimension(8) :: EndTime + contains + procedure :: Start => Start + procedure :: Finish => Finish + procedure :: ElapsedTimeMs => ElapsedTime + end type TimerLegacy + contains + subroutine Start(this) + implicit none + class(TimerLegacy), intent(inout) :: this + call date_and_time(values=this%StartTime) + end subroutine + subroutine Finish(this) + implicit none + class(TimerLegacy), intent(inout) :: this + call date_and_time(values=this%EndTime) + end subroutine + integer function ElapsedTime(this) + implicit none + class(TimerLegacy), intent(inout) :: this + ElapsedTime = (this%EndTime(6)*60000+this%EndTime(7)*1000+this%EndTime(8)) - (this%StartTime(6)*60000+this%StartTime(7)*1000+this%StartTime(8)) + end function +end module CTimerLegacy \ No newline at end of file diff --git a/CSharp/Common/EventHandlers/CBoolEventHandler.f90 b/CSharp/Common/EventHandlers/CBoolEventHandler.f90 new file mode 100644 index 0000000..cdd2b1a --- /dev/null +++ b/CSharp/Common/EventHandlers/CBoolEventHandler.f90 @@ -0,0 +1,44 @@ +module CBoolEventHandler + use CIActionReference + implicit none + public + + type :: BoolEventHandler + procedure(ActionBool), pointer, nopass :: Delegate => null() + contains + procedure :: AssignTo => AssignTo + procedure :: MakeNull => MakeNull + procedure :: IsNull => IsNull + procedure :: Run => Run + end type BoolEventHandler + + contains + + subroutine AssignTo(this, proc) + implicit none + class(BoolEventHandler), intent(inout) :: this + procedure (ActionBool), pointer, intent(in) :: proc + this%Delegate => proc + end subroutine + + subroutine MakeNull(this) + implicit none + class(BoolEventHandler), intent(inout) :: this + this%Delegate => null() + end subroutine + + logical function IsNull(this) + implicit none + class(BoolEventHandler), intent(in) :: this + IsNull = .not.associated(this%Delegate) + end function + + subroutine Run(this, arg) + implicit none + class(BoolEventHandler), intent(inout) :: this + logical, intent(in) :: arg + !if(.not.this%IsNull()) + call this%Delegate(arg) + end subroutine + +end module CBoolEventHandler \ No newline at end of file diff --git a/CSharp/Common/EventHandlers/CBoolEventHandlerCollection.f90 b/CSharp/Common/EventHandlers/CBoolEventHandlerCollection.f90 new file mode 100644 index 0000000..92e0b14 --- /dev/null +++ b/CSharp/Common/EventHandlers/CBoolEventHandlerCollection.f90 @@ -0,0 +1,103 @@ +module CBoolEventHandlerCollection + use CBoolEventHandler + implicit none + public + type, public :: BoolEventHandlerCollection + type(BoolEventHandler), allocatable :: Delegates(:) + contains + procedure :: Length => Length + procedure :: Add => Add + procedure :: Remove => Remove + procedure :: Empty => Empty + procedure :: IsEmpty => IsEmpty + procedure :: RunAll => RunAll + end type BoolEventHandlerCollection + + contains + + integer function Length(this) + implicit none + class(BoolEventHandlerCollection), intent(in) :: this + if(allocated(this%Delegates)) then + Length = size(this%Delegates) + return + end if + Length = 0 + end function + + subroutine Add(this, proc) + implicit none + class(BoolEventHandlerCollection), intent(inout) :: this + type(BoolEventHandler), allocatable :: tempArr(:) + procedure (ActionBool), pointer, intent(in) :: proc + integer :: i, isize + + if(allocated(this%Delegates)) then + isize = size(this%Delegates) + allocate(tempArr(isize+1)) + do i=1,isize + tempArr(i) = this%Delegates(i) + end do + call tempArr(isize+1)%MakeNull() + call tempArr(isize+1)%AssignTo(proc) + deallocate(this%Delegates) + call move_alloc(tempArr, this%Delegates) + else + allocate(this%Delegates(1)) + call this%Delegates(1)%MakeNull() + call this%Delegates(1)%AssignTo(proc) + end if + + end subroutine + + subroutine Remove(this, index) + implicit none + class(BoolEventHandlerCollection), intent(inout) :: this + integer, intent(in) :: index + type(BoolEventHandler), allocatable :: tempArr(:) + integer :: i + logical :: found + + if(index <= 0 .or. index > size(this%Delegates)) return + if(.not.allocated(this%Delegates))return + allocate(tempArr(size(this%Delegates)-1)) + found = .false. + do i=1, size(this%Delegates) + if(i==index) then + found = .true. + cycle + end if + if(found) then + tempArr(i-1) = this%Delegates(i) + else + tempArr(i) = this%Delegates(i) + endif + end do + deallocate(this%Delegates) + call move_alloc(tempArr, this%Delegates) + end subroutine + + + subroutine Empty(this) + implicit none + class(BoolEventHandlerCollection), intent(inout) :: this + if(allocated(this%Delegates)) deallocate(this%Delegates) + end subroutine + + logical function IsEmpty(this) + implicit none + class(BoolEventHandlerCollection), intent(in) :: this + IsEmpty = .not.allocated(this%Delegates) + end function + + subroutine RunAll(this, arg) + implicit none + class(BoolEventHandlerCollection), intent(inout) :: this + logical, intent(in) :: arg + integer :: i + do i=1, size(this%Delegates) + call this%Delegates(i)%Run(arg) + end do + end subroutine + +end module CBoolEventHandlerCollection \ No newline at end of file diff --git a/CSharp/Common/EventHandlers/CDoubleEventHandler.f90 b/CSharp/Common/EventHandlers/CDoubleEventHandler.f90 new file mode 100644 index 0000000..620e2a8 --- /dev/null +++ b/CSharp/Common/EventHandlers/CDoubleEventHandler.f90 @@ -0,0 +1,43 @@ +module CDoubleEventHandler + use CIActionReference + implicit none + public + + type :: DoubleEventHandler + procedure(ActionDouble), pointer, nopass :: Delegate => null() + contains + procedure :: AssignTo => AssignTo + procedure :: MakeNull => MakeNull + procedure :: IsNull => IsNull + procedure :: Run => Run + end type DoubleEventHandler + + contains + + subroutine AssignTo(this, proc) + implicit none + class(DoubleEventHandler), intent(inout) :: this + procedure (ActionDouble), pointer, intent(in) :: proc + this%Delegate => proc + end subroutine + + subroutine MakeNull(this) + implicit none + class(DoubleEventHandler), intent(inout) :: this + this%Delegate => null() + end subroutine + + logical function IsNull(this) + implicit none + class(DoubleEventHandler), intent(in) :: this + IsNull = .not.associated(this%Delegate) + end function + + subroutine Run(this, arg) + implicit none + class(DoubleEventHandler), intent(inout) :: this + real(8), intent(in) :: arg + if(.not.this%IsNull()) call this%Delegate(arg) + end subroutine + +end module CDoubleEventHandler \ No newline at end of file diff --git a/CSharp/Common/EventHandlers/CDoubleEventHandlerCollection.f90 b/CSharp/Common/EventHandlers/CDoubleEventHandlerCollection.f90 new file mode 100644 index 0000000..c9fb123 --- /dev/null +++ b/CSharp/Common/EventHandlers/CDoubleEventHandlerCollection.f90 @@ -0,0 +1,103 @@ +module CDoubleEventHandlerCollection + use CDoubleEventHandler + implicit none + public + type, public :: DoubleEventHandlerCollection + type(DoubleEventHandler), allocatable :: Delegates(:) + contains + procedure :: Length => Length + procedure :: Add => Add + procedure :: Remove => Remove + procedure :: Empty => Empty + procedure :: IsEmpty => IsEmpty + procedure :: RunAll => RunAll + end type DoubleEventHandlerCollection + + contains + + integer function Length(this) + implicit none + class(DoubleEventHandlerCollection), intent(in) :: this + if(allocated(this%Delegates)) then + Length = size(this%Delegates) + return + end if + Length = 0 + end function + + subroutine Add(this, proc) + implicit none + class(DoubleEventHandlerCollection), intent(inout) :: this + type(DoubleEventHandler), allocatable :: tempArr(:) + procedure (ActionDouble), pointer, intent(in) :: proc + integer :: i, isize + + if(allocated(this%Delegates)) then + isize = size(this%Delegates) + allocate(tempArr(isize+1)) + do i=1,isize + tempArr(i) = this%Delegates(i) + end do + call tempArr(isize+1)%MakeNull() + call tempArr(isize+1)%AssignTo(proc) + deallocate(this%Delegates) + call move_alloc(tempArr, this%Delegates) + else + allocate(this%Delegates(1)) + call this%Delegates(1)%MakeNull() + call this%Delegates(1)%AssignTo(proc) + end if + + end subroutine + + subroutine Remove(this, index) + implicit none + class(DoubleEventHandlerCollection), intent(inout) :: this + integer, intent(in) :: index + type(DoubleEventHandler), allocatable :: tempArr(:) + integer :: i + logical :: found + + if(index <= 0 .or. index > size(this%Delegates)) return + if(.not.allocated(this%Delegates))return + allocate(tempArr(size(this%Delegates)-1)) + found = .false. + do i=1, size(this%Delegates) + if(i==index) then + found = .true. + cycle + end if + if(found) then + tempArr(i-1) = this%Delegates(i) + else + tempArr(i) = this%Delegates(i) + endif + end do + deallocate(this%Delegates) + call move_alloc(tempArr, this%Delegates) + end subroutine + + + subroutine Empty(this) + implicit none + class(DoubleEventHandlerCollection), intent(inout) :: this + if(allocated(this%Delegates)) deallocate(this%Delegates) + end subroutine + + logical function IsEmpty(this) + implicit none + class(DoubleEventHandlerCollection), intent(in) :: this + IsEmpty = .not.allocated(this%Delegates) + end function + + subroutine RunAll(this, arg) + implicit none + class(DoubleEventHandlerCollection), intent(inout) :: this + real(8), intent(in) :: arg + integer :: i + do i=1, size(this%Delegates) + call this%Delegates(i)%Run(arg) + end do + end subroutine + +end module CDoubleEventHandlerCollection \ No newline at end of file diff --git a/CSharp/Common/EventHandlers/CIntegerArrayEventHandler.f90 b/CSharp/Common/EventHandlers/CIntegerArrayEventHandler.f90 new file mode 100644 index 0000000..f300bc1 --- /dev/null +++ b/CSharp/Common/EventHandlers/CIntegerArrayEventHandler.f90 @@ -0,0 +1,44 @@ +module CIntegerArrayEventHandler + use CIActionReference + implicit none + public + + type :: IntegerArrayEventHandler + procedure(ActionIntegerArray), pointer, nopass :: Delegate => null() + contains + procedure :: AssignTo => AssignTo + procedure :: MakeNull => MakeNull + procedure :: IsNull => IsNull + procedure :: Run => Run + end type IntegerArrayEventHandler + + contains + + subroutine AssignTo(this, proc) + implicit none + class(IntegerArrayEventHandler), intent(inout) :: this + procedure (ActionIntegerArray), pointer, intent(in) :: proc + this%Delegate => proc + end subroutine + + subroutine MakeNull(this) + implicit none + class(IntegerArrayEventHandler), intent(inout) :: this + this%Delegate => null() + end subroutine + + logical function IsNull(this) + implicit none + class(IntegerArrayEventHandler), intent(in) :: this + IsNull = .not.associated(this%Delegate) + end function + + subroutine Run(this, arg) + implicit none + class(IntegerArrayEventHandler), intent(inout) :: this + integer, allocatable, intent (in) :: arg(:) + !if(.not.this%IsNull()) + call this%Delegate(arg) + end subroutine + +end module CIntegerArrayEventHandler \ No newline at end of file diff --git a/CSharp/Common/EventHandlers/CIntegerArrayEventHandlerCollection.f90 b/CSharp/Common/EventHandlers/CIntegerArrayEventHandlerCollection.f90 new file mode 100644 index 0000000..952aaf2 --- /dev/null +++ b/CSharp/Common/EventHandlers/CIntegerArrayEventHandlerCollection.f90 @@ -0,0 +1,103 @@ +module CIntegerArrayEventHandlerCollection + use CIntegerArrayEventHandler + implicit none + public + type, public :: IntegerArrayEventHandlerCollection + type(IntegerArrayEventHandler), allocatable :: Delegates(:) + contains + procedure :: Length => Length + procedure :: Add => Add + procedure :: Remove => Remove + procedure :: Empty => Empty + procedure :: IsEmpty => IsEmpty + procedure :: RunAll => RunAll_ + end type IntegerArrayEventHandlerCollection + + contains + + integer function Length(this) + implicit none + class(IntegerArrayEventHandlerCollection), intent(in) :: this + if(allocated(this%Delegates)) then + Length = size(this%Delegates) + return + end if + Length = 0 + end function + + subroutine Add(this, proc) + implicit none + class(IntegerArrayEventHandlerCollection), intent(inout) :: this + type(IntegerArrayEventHandler), allocatable :: tempArr(:) + procedure (ActionIntegerArray), pointer, intent(in) :: proc + integer :: i, isize + + if(allocated(this%Delegates)) then + isize = size(this%Delegates) + allocate(tempArr(isize+1)) + do i=1,isize + tempArr(i) = this%Delegates(i) + end do + call tempArr(isize+1)%MakeNull() + call tempArr(isize+1)%AssignTo(proc) + deallocate(this%Delegates) + call move_alloc(tempArr, this%Delegates) + else + allocate(this%Delegates(1)) + call this%Delegates(1)%MakeNull() + call this%Delegates(1)%AssignTo(proc) + end if + + end subroutine + + subroutine Remove(this, index) + implicit none + class(IntegerArrayEventHandlerCollection), intent(inout) :: this + integer, intent(in) :: index + type(IntegerArrayEventHandler), allocatable :: tempArr(:) + integer :: i + logical :: found + + if(index <= 0 .or. index > size(this%Delegates)) return + if(.not.allocated(this%Delegates))return + allocate(tempArr(size(this%Delegates)-1)) + found = .false. + do i=1, size(this%Delegates) + if(i==index) then + found = .true. + cycle + end if + if(found) then + tempArr(i-1) = this%Delegates(i) + else + tempArr(i) = this%Delegates(i) + endif + end do + deallocate(this%Delegates) + call move_alloc(tempArr, this%Delegates) + end subroutine + + + subroutine Empty(this) + implicit none + class(IntegerArrayEventHandlerCollection), intent(inout) :: this + if(allocated(this%Delegates)) deallocate(this%Delegates) + end subroutine + + logical function IsEmpty(this) + implicit none + class(IntegerArrayEventHandlerCollection), intent(in) :: this + IsEmpty = .not.allocated(this%Delegates) + end function + + subroutine RunAll_(this, arg) + implicit none + class(IntegerArrayEventHandlerCollection), intent(inout) :: this + integer, allocatable, intent (in) :: arg(:) + integer :: i + do i=1, size(this%Delegates) + call this%Delegates(i)%Run(arg) + end do + end subroutine + +end module CIntegerArrayEventHandlerCollection \ No newline at end of file diff --git a/CSharp/Common/EventHandlers/CIntegerEventHandler.f90 b/CSharp/Common/EventHandlers/CIntegerEventHandler.f90 new file mode 100644 index 0000000..bfe607d --- /dev/null +++ b/CSharp/Common/EventHandlers/CIntegerEventHandler.f90 @@ -0,0 +1,44 @@ +module CIntegerEventHandler + use CIActionReference + implicit none + public + + type :: IntegerEventHandler + procedure(ActionInteger), pointer, nopass :: Delegate => null() + contains + procedure :: AssignTo => AssignTo + procedure :: MakeNull => MakeNull + procedure :: IsNull => IsNull + procedure :: Run => Run + end type IntegerEventHandler + + contains + + subroutine AssignTo(this, proc) + implicit none + class(IntegerEventHandler), intent(inout) :: this + procedure (ActionInteger), pointer, intent(in) :: proc + this%Delegate => proc + end subroutine + + subroutine MakeNull(this) + implicit none + class(IntegerEventHandler), intent(inout) :: this + this%Delegate => null() + end subroutine + + logical function IsNull(this) + implicit none + class(IntegerEventHandler), intent(in) :: this + IsNull = .not.associated(this%Delegate) + end function + + subroutine Run(this, arg) + implicit none + class(IntegerEventHandler), intent(inout) :: this + integer, intent(in) :: arg + !if(.not.this%IsNull()) + call this%Delegate(arg) + end subroutine + +end module CIntegerEventHandler \ No newline at end of file diff --git a/CSharp/Common/EventHandlers/CIntegerEventHandlerCollection.f90 b/CSharp/Common/EventHandlers/CIntegerEventHandlerCollection.f90 new file mode 100644 index 0000000..7444525 --- /dev/null +++ b/CSharp/Common/EventHandlers/CIntegerEventHandlerCollection.f90 @@ -0,0 +1,103 @@ +module CIntegerEventHandlerCollection + use CIntegerEventHandler + implicit none + public + type, public :: IntegerEventHandlerCollection + type(IntegerEventHandler), allocatable :: Delegates(:) + contains + procedure :: Length => Length + procedure :: Add => Add + procedure :: Remove => Remove + procedure :: Empty => Empty + procedure :: IsEmpty => IsEmpty + procedure :: RunAll => RunAll + end type IntegerEventHandlerCollection + + contains + + integer function Length(this) + implicit none + class(IntegerEventHandlerCollection), intent(in) :: this + if(allocated(this%Delegates)) then + Length = size(this%Delegates) + return + end if + Length = 0 + end function + + subroutine Add(this, proc) + implicit none + class(IntegerEventHandlerCollection), intent(inout) :: this + type(IntegerEventHandler), allocatable :: tempArr(:) + procedure (ActionInteger), pointer, intent(in) :: proc + integer :: i, isize + + if(allocated(this%Delegates)) then + isize = size(this%Delegates) + allocate(tempArr(isize+1)) + do i=1,isize + tempArr(i) = this%Delegates(i) + end do + call tempArr(isize+1)%MakeNull() + call tempArr(isize+1)%AssignTo(proc) + deallocate(this%Delegates) + call move_alloc(tempArr, this%Delegates) + else + allocate(this%Delegates(1)) + call this%Delegates(1)%MakeNull() + call this%Delegates(1)%AssignTo(proc) + end if + + end subroutine + + subroutine Remove(this, index) + implicit none + class(IntegerEventHandlerCollection), intent(inout) :: this + integer, intent(in) :: index + type(IntegerEventHandler), allocatable :: tempArr(:) + integer :: i + logical :: found + + if(index <= 0 .or. index > size(this%Delegates)) return + if(.not.allocated(this%Delegates))return + allocate(tempArr(size(this%Delegates)-1)) + found = .false. + do i=1, size(this%Delegates) + if(i==index) then + found = .true. + cycle + end if + if(found) then + tempArr(i-1) = this%Delegates(i) + else + tempArr(i) = this%Delegates(i) + endif + end do + deallocate(this%Delegates) + call move_alloc(tempArr, this%Delegates) + end subroutine + + + subroutine Empty(this) + implicit none + class(IntegerEventHandlerCollection), intent(inout) :: this + if(allocated(this%Delegates)) deallocate(this%Delegates) + end subroutine + + logical function IsEmpty(this) + implicit none + class(IntegerEventHandlerCollection), intent(in) :: this + IsEmpty = .not.allocated(this%Delegates) + end function + + subroutine RunAll(this, arg) + implicit none + class(IntegerEventHandlerCollection), intent(inout) :: this + integer, intent(in) :: arg + integer :: i + do i=1, size(this%Delegates) + call this%Delegates(i)%Run(arg) + end do + end subroutine + +end module CIntegerEventHandlerCollection \ No newline at end of file diff --git a/CSharp/Common/EventHandlers/CRealEventHandler.f90 b/CSharp/Common/EventHandlers/CRealEventHandler.f90 new file mode 100644 index 0000000..b9625cd --- /dev/null +++ b/CSharp/Common/EventHandlers/CRealEventHandler.f90 @@ -0,0 +1,44 @@ +module CRealEventHandler + use CIActionReference + implicit none + public + + type :: RealEventHandler + procedure(ActionReal), pointer, nopass :: Delegate => null() + contains + procedure :: AssignTo => AssignTo + procedure :: MakeNull => MakeNull + procedure :: IsNull => IsNull + procedure :: Run => Run + end type RealEventHandler + + contains + + subroutine AssignTo(this, proc) + implicit none + class(RealEventHandler), intent(inout) :: this + procedure (ActionReal), pointer, intent(in) :: proc + this%Delegate => proc + end subroutine + + subroutine MakeNull(this) + implicit none + class(RealEventHandler), intent(inout) :: this + this%Delegate => null() + end subroutine + + logical function IsNull(this) + implicit none + class(RealEventHandler), intent(in) :: this + IsNull = .not.associated(this%Delegate) + end function + + subroutine Run(this, arg) + implicit none + class(RealEventHandler), intent(inout) :: this + real, intent(in) :: arg + !if(.not.this%IsNull()) + call this%Delegate(arg) + end subroutine + +end module CRealEventHandler \ No newline at end of file diff --git a/CSharp/Common/EventHandlers/CRealEventHandlerCollection.f90 b/CSharp/Common/EventHandlers/CRealEventHandlerCollection.f90 new file mode 100644 index 0000000..2e19aa6 --- /dev/null +++ b/CSharp/Common/EventHandlers/CRealEventHandlerCollection.f90 @@ -0,0 +1,103 @@ +module CRealEventHandlerCollection + use CRealEventHandler + implicit none + public + type, public :: RealEventHandlerCollection + type(RealEventHandler), allocatable :: Delegates(:) + contains + procedure :: Length => Length + procedure :: Add => Add + procedure :: Remove => Remove + procedure :: Empty => Empty + procedure :: IsEmpty => IsEmpty + procedure :: RunAll => RunAll + end type RealEventHandlerCollection + + contains + + integer function Length(this) + implicit none + class(RealEventHandlerCollection), intent(in) :: this + if(allocated(this%Delegates)) then + Length = size(this%Delegates) + return + end if + Length = 0 + end function + + subroutine Add(this, proc) + implicit none + class(RealEventHandlerCollection), intent(inout) :: this + type(RealEventHandler), allocatable :: tempArr(:) + procedure (ActionReal), pointer, intent(in) :: proc + integer :: i, isize + + if(allocated(this%Delegates)) then + isize = size(this%Delegates) + allocate(tempArr(isize+1)) + do i=1,isize + tempArr(i) = this%Delegates(i) + end do + call tempArr(isize+1)%MakeNull() + call tempArr(isize+1)%AssignTo(proc) + deallocate(this%Delegates) + call move_alloc(tempArr, this%Delegates) + else + allocate(this%Delegates(1)) + call this%Delegates(1)%MakeNull() + call this%Delegates(1)%AssignTo(proc) + end if + + end subroutine + + subroutine Remove(this, index) + implicit none + class(RealEventHandlerCollection), intent(inout) :: this + integer, intent(in) :: index + type(RealEventHandler), allocatable :: tempArr(:) + integer :: i + logical :: found + + if(index <= 0 .or. index > size(this%Delegates)) return + if(.not.allocated(this%Delegates))return + allocate(tempArr(size(this%Delegates)-1)) + found = .false. + do i=1, size(this%Delegates) + if(i==index) then + found = .true. + cycle + end if + if(found) then + tempArr(i-1) = this%Delegates(i) + else + tempArr(i) = this%Delegates(i) + endif + end do + deallocate(this%Delegates) + call move_alloc(tempArr, this%Delegates) + end subroutine + + + subroutine Empty(this) + implicit none + class(RealEventHandlerCollection), intent(inout) :: this + if(allocated(this%Delegates)) deallocate(this%Delegates) + end subroutine + + logical function IsEmpty(this) + implicit none + class(RealEventHandlerCollection), intent(in) :: this + IsEmpty = .not.allocated(this%Delegates) + end function + + subroutine RunAll(this, arg) + implicit none + class(RealEventHandlerCollection), intent(inout) :: this + real, intent(in) :: arg + integer :: i + do i=1, size(this%Delegates) + call this%Delegates(i)%Run(arg) + end do + end subroutine + +end module CRealEventHandlerCollection \ No newline at end of file diff --git a/CSharp/Common/EventHandlers/CVoidEventHandler.f90 b/CSharp/Common/EventHandlers/CVoidEventHandler.f90 new file mode 100644 index 0000000..cbe829b --- /dev/null +++ b/CSharp/Common/EventHandlers/CVoidEventHandler.f90 @@ -0,0 +1,44 @@ +module CVoidEventHandler + use CIActionReference + implicit none + public + + type :: VoidEventHandler + procedure(ActionVoid), pointer, nopass :: Delegate => null() + contains + procedure :: AssignTo => AssignTo + procedure :: MakeNull => MakeNull + procedure :: IsNull => IsNull + procedure :: Run => Run + end type VoidEventHandler + + contains + + subroutine AssignTo(this, proc) + implicit none + class(VoidEventHandler), intent(inout) :: this + procedure (ActionVoid), pointer, intent(in) :: proc + this%Delegate => proc + end subroutine + + subroutine MakeNull(this) + implicit none + class(VoidEventHandler), intent(inout) :: this + this%Delegate => null() + end subroutine + + logical function IsNull(this) + implicit none + class(VoidEventHandler), intent(in) :: this + IsNull = .not.associated(this%Delegate) + end function + + subroutine Run(this) + implicit none + class(VoidEventHandler), intent(inout) :: this + !if(.not.this%IsNull()) then + call this%Delegate() + !endif + end subroutine + +end module CVoidEventHandler \ No newline at end of file diff --git a/CSharp/Common/EventHandlers/CVoidEventHandlerCollection.f90 b/CSharp/Common/EventHandlers/CVoidEventHandlerCollection.f90 new file mode 100644 index 0000000..8cee66d --- /dev/null +++ b/CSharp/Common/EventHandlers/CVoidEventHandlerCollection.f90 @@ -0,0 +1,102 @@ +module CVoidEventHandlerCollection + use CVoidEventHandler + implicit none + public + type, public :: VoidEventHandlerCollection + type(VoidEventHandler), allocatable :: Delegates(:) + contains + procedure :: Length => Length + procedure :: Add => Add + procedure :: Remove => Remove + procedure :: Empty => Empty + procedure :: IsEmpty => IsEmpty + procedure :: RunAll => RunAll + end type VoidEventHandlerCollection + + contains + + integer function Length(this) + implicit none + class(VoidEventHandlerCollection), intent(in) :: this + if(allocated(this%Delegates)) then + Length = size(this%Delegates) + return + end if + Length = 0 + end function + + subroutine Add(this, proc) + implicit none + class(VoidEventHandlerCollection), intent(inout) :: this + type(VoidEventHandler), allocatable :: tempArr(:) + procedure (ActionVoid), pointer, intent(in) :: proc + integer :: i, isize + + if(allocated(this%Delegates)) then + isize = size(this%Delegates) + allocate(tempArr(isize+1)) + do i=1,isize + tempArr(i) = this%Delegates(i) + end do + call tempArr(isize+1)%MakeNull() + call tempArr(isize+1)%AssignTo(proc) + deallocate(this%Delegates) + call move_alloc(tempArr, this%Delegates) + else + allocate(this%Delegates(1)) + call this%Delegates(1)%MakeNull() + call this%Delegates(1)%AssignTo(proc) + end if + + end subroutine + + subroutine Remove(this, index) + implicit none + class(VoidEventHandlerCollection), intent(inout) :: this + integer, intent(in) :: index + type(VoidEventHandler), allocatable :: tempArr(:) + integer :: i + logical :: found + + if(index <= 0 .or. index > size(this%Delegates)) return + if(.not.allocated(this%Delegates))return + allocate(tempArr(size(this%Delegates)-1)) + found = .false. + do i=1, size(this%Delegates) + if(i==index) then + found = .true. + cycle + end if + if(found) then + tempArr(i-1) = this%Delegates(i) + else + tempArr(i) = this%Delegates(i) + endif + end do + deallocate(this%Delegates) + call move_alloc(tempArr, this%Delegates) + end subroutine + + + subroutine Empty(this) + implicit none + class(VoidEventHandlerCollection), intent(inout) :: this + if(allocated(this%Delegates)) deallocate(this%Delegates) + end subroutine + + logical function IsEmpty(this) + implicit none + class(VoidEventHandlerCollection), intent(in) :: this + IsEmpty = .not.allocated(this%Delegates) + end function + + subroutine RunAll(this) + implicit none + class(VoidEventHandlerCollection), intent(inout) :: this + integer :: i + do i=1, size(this%Delegates) + call this%Delegates(i)%Run() + end do + end subroutine + +end module CVoidEventHandlerCollection \ No newline at end of file diff --git a/CSharp/DownHole/CDownHole.f90 b/CSharp/DownHole/CDownHole.f90 new file mode 100644 index 0000000..b8cc7a8 --- /dev/null +++ b/CSharp/DownHole/CDownHole.f90 @@ -0,0 +1,278 @@ +module CDownHole + use CDownHoleVariables + implicit none + public + + !abstract interface + ! subroutine ActionFluid(array) + ! use CDownHoleVariables + ! type(CFluid), intent(inout), target :: array + ! end subroutine + !end interface + + contains + + + subroutine AnnalusDrillMud + !DEC$ ATTRIBUTES DLLEXPORT::AnnalusDrillMud + !DEC$ ATTRIBUTES ALIAS: 'AnnalusDrillMud' :: AnnalusDrillMud + implicit none + AnnDrillMud = .true. + end subroutine AnnalusDrillMud + + subroutine AnnalusCirculateMud + !DEC$ ATTRIBUTES DLLEXPORT::AnnalusCirculateMud + !DEC$ ATTRIBUTES ALIAS: 'AnnalusCirculateMud' :: AnnalusCirculateMud + implicit none + AnnCirculateMud = .true. + end subroutine AnnalusCirculateMud + + + !type(CFluid) function ActionFluid() !(array) + ! !use CDownHoleVariables + ! !integer, intent(in) :: count + ! !type(CFluid), intent(inout), target :: array !(count) + ! end function + + + integer function GetAnnalusFluidsCount() + !DEC$ ATTRIBUTES DLLEXPORT::GetAnnalusFluidsCount + !DEC$ ATTRIBUTES ALIAS: 'GetAnnalusFluidsCount' :: GetAnnalusFluidsCount + implicit none + GetAnnalusFluidsCount = size(AnnalusFluids) + !GetAnnalusFluidsCount = AnnalusFluidsCount + end function GetAnnalusFluidsCount + + subroutine GetAnnalusFluids(count, array) + !DEC$ ATTRIBUTES DLLEXPORT::GetAnnalusFluids + !DEC$ ATTRIBUTES ALIAS: 'GetAnnalusFluids' :: GetAnnalusFluids + implicit none + integer :: i + integer, intent(in) :: count + type(CFluid), intent(inout), target :: array(count) + type(CFluid), pointer :: item + if(.not.allocated(AnnalusFluids)) return + do i = 1, count + item => array(i) + item%StartMd = AnnalusFluids(i)%StartMd + item%EndMd = AnnalusFluids(i)%EndMd + item%Density = AnnalusFluids(i)%Density + item%MudType = AnnalusFluids(i)%MudType + end do + end subroutine GetAnnalusFluids + + + integer function GetStringFluidsCount() + !DEC$ ATTRIBUTES DLLEXPORT::GetStringFluidsCount + !DEC$ ATTRIBUTES ALIAS: 'GetStringFluidsCount' :: GetStringFluidsCount + implicit none + !GetStringFluidsCount = StringFluidsCount + GetStringFluidsCount = size(StringFluids) + end function GetStringFluidsCount + + subroutine GetStringFluids(count, array) + !DEC$ ATTRIBUTES DLLEXPORT::GetStringFluids + !DEC$ ATTRIBUTES ALIAS: 'GetStringFluids' :: GetStringFluids + implicit none + integer :: i + integer, intent(in) :: count + type(CFluid), intent(inout), target :: array(count) + type(CFluid), pointer :: item + if(.not.allocated(StringFluids)) return + do i = 1, count + item => array(i) + item%StartMd = StringFluids(i)%StartMd + item%EndMd = StringFluids(i)%EndMd + item%Density = StringFluids(i)%Density + item%MudType = StringFluids(i)%MudType + end do + end subroutine GetStringFluids + + + integer function GetStringCount() + !DEC$ ATTRIBUTES DLLEXPORT::GetStringCount + !DEC$ ATTRIBUTES ALIAS: 'GetStringCount' :: GetStringCount + implicit none + GetStringCount = StringCount + !GetStringCount = 4 + end function GetStringCount + + subroutine GetString(count, array) + !DEC$ ATTRIBUTES DLLEXPORT::GetString + !DEC$ ATTRIBUTES ALIAS: 'GetString' :: GetString + implicit none + integer :: i + integer, intent(in) :: count + type(CStringComponent), intent(inout), target :: array(count) + type(CStringComponent), pointer :: item + !do i = 1, count + ! item => array(i) + ! item%Length = String(i)%Length + ! item%TopDepth = String(i)%TopDepth + ! item%DownDepth = String(i)%DownDepth + ! item%Od = String(i)%Od + ! item%Id = String(i)%Id + ! item%ComponentType = String(i)%ComponentType + !end do + end subroutine GetString + + + + + + subroutine GetDownhole() + !DEC$ ATTRIBUTES DLLEXPORT::GetDownhole + !DEC$ ATTRIBUTES ALIAS: 'GetDownhole' :: GetDownhole + implicit none + + !BopElement + if(associated(BopElementsPtr)) call BopElementsPtr(BopElements) + + + !Annalus + if(associated(AnnalusMudCountPtr)) call AnnalusMudCountPtr(AnnalusFluidsCount) + if(associated(AnnalusMudArrayPtr)) call AnnalusMudArrayPtr(AnnalusFluids) + + + !string + if(associated(StringMudCountPtr)) call StringMudCountPtr(StringFluidsCount) + if(associated(StringMudArrayPtr)) call StringMudArrayPtr(StringFluids) + + + !components + if(associated(StringComponentCountPtr)) call StringComponentCountPtr(StringCount) + if(associated(StringComponentArrayPtr)) call StringComponentArrayPtr(String) + + + end subroutine GetDownhole + + + + + + + + + + + + + + + real(8) function GetDrillPipePressureH() + !DEC$ ATTRIBUTES DLLEXPORT :: GetDrillPipePressureH + !DEC$ ATTRIBUTES ALIAS: 'GetDrillPipePressureH' :: GetDrillPipePressureH + use PressureDisplayVARIABLES + implicit none + GetDrillPipePressureH = DrillPipePressure !real(PressureGauges(1), 8) ! + end function + + real(8) function GetCasingPressureH() + !DEC$ ATTRIBUTES DLLEXPORT :: GetCasingPressureH + !DEC$ ATTRIBUTES ALIAS: 'GetCasingPressureH' :: GetCasingPressureH + use FricPressDropVars + implicit none + !if (allocated(FinalFlowEl)) then + ! if(size(FinalFlowEl) > 0) then + ! CasingPressure = real(int(FinalFlowEl(AnnulusLastEl)%EndPress), 8) !CasingPressure + ! endif + !endif + GetCasingPressureH = CasingPressure + end function + + real(8) function GetShoePressure() + !DEC$ ATTRIBUTES DLLEXPORT :: GetShoePressure + !DEC$ ATTRIBUTES ALIAS: 'GetShoePressure' :: GetShoePressure + use PressureDisplayVARIABLES + implicit none + GetShoePressure = ShoePressure !real(PressureGauges(5), 8) ! + end function + + real(8) function GetBottomHolePressure() + !DEC$ ATTRIBUTES DLLEXPORT :: GetBottomHolePressure + !DEC$ ATTRIBUTES ALIAS: 'GetBottomHolePressure' :: GetBottomHolePressure + use PressureDisplayVARIABLES + implicit none + GetBottomHolePressure = BottomHolePressure !real(PressureGauges(3), 8) ! + end function + + real(8) function GetFormationPressure() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFormationPressure + !DEC$ ATTRIBUTES ALIAS: 'GetFormationPressure' :: GetFormationPressure + implicit none + GetFormationPressure = FormationPressure + end function + + real function GetInfluxRate() + !DEC$ ATTRIBUTES DLLEXPORT :: GetInfluxRate + !DEC$ ATTRIBUTES ALIAS: 'GetInfluxRate' :: GetInfluxRate + implicit none + GetInfluxRate = InfluxRate + end function + + real function GetKickVolume() + !DEC$ ATTRIBUTES DLLEXPORT :: GetKickVolume + !DEC$ ATTRIBUTES ALIAS: 'GetKickVolume' :: GetKickVolume + implicit none + + !KickVolume = KickVolume + 1 + + GetKickVolume = KickVolume + end function + + real function GetSecondKickVolume() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSecondKickVolume + !DEC$ ATTRIBUTES ALIAS: 'GetSecondKickVolume' :: GetSecondKickVolume + implicit none + + !SecondKickVolume = SecondKickVolume + 1 + + GetSecondKickVolume = SecondKickVolume + end function + + real function GetPermeabilityExposedHeight() + !DEC$ ATTRIBUTES DLLEXPORT :: GetPermeabilityExposedHeight + !DEC$ ATTRIBUTES ALIAS: 'GetPermeabilityExposedHeight' :: GetPermeabilityExposedHeight + implicit none + GetPermeabilityExposedHeight = PermeabilityExposedHeight + end function + + + + real(8) function GetDensityH() + !DEC$ ATTRIBUTES DLLEXPORT :: GetDensityH + !DEC$ ATTRIBUTES ALIAS: 'GetDensityH' :: GetDensityH + implicit none + GetDensityH = Density + end function + + real(8) function GetPressureH() + !DEC$ ATTRIBUTES DLLEXPORT :: GetPressureH + !DEC$ ATTRIBUTES ALIAS: 'GetPressureH' :: GetPressureH + implicit none + GetPressureH = Pressure + end function + + real(8) function GetTemperatureH() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTemperatureH + !DEC$ ATTRIBUTES ALIAS: 'GetTemperatureH' :: GetTemperatureH + implicit none + GetTemperatureH = Temperature + end function + + + real(8) function GetHeightH() + !DEC$ ATTRIBUTES DLLEXPORT :: GetHeightH + !DEC$ ATTRIBUTES ALIAS: 'GetHeightH' :: GetHeightH + implicit none + GetHeightH = Height + end function + + real(8) function GetVolumeH() + !DEC$ ATTRIBUTES DLLEXPORT :: GetVolumeH + !DEC$ ATTRIBUTES ALIAS: 'GetVolumeH' :: GetVolumeH + implicit none + GetVolumeH = Volume + end function + +end module CDownHole \ No newline at end of file diff --git a/CSharp/DownHole/CDownHoleActions.f90 b/CSharp/DownHole/CDownHoleActions.f90 new file mode 100644 index 0000000..e9063b7 --- /dev/null +++ b/CSharp/DownHole/CDownHoleActions.f90 @@ -0,0 +1,105 @@ +module CDownHoleActions + use CIActionReference + implicit none + public + + abstract interface + subroutine ActionFluid(array) + use CDownHoleTypes + type(CFluid), allocatable, intent(in), target :: array(:) + end subroutine + + subroutine ActionComponent(array) + use CDownHoleTypes + type(CStringComponent), allocatable, intent(in), target :: array(:) + end subroutine + + subroutine ActionBopElement(array) + use CDownHoleTypes + type(CBopElement), allocatable, intent(in), target :: array(:) + end subroutine + end interface + + procedure (ActionInteger), pointer :: AnnalusMudCountPtr + procedure (ActionFluid), pointer :: AnnalusMudArrayPtr + + procedure (ActionInteger), pointer :: StringMudCountPtr + procedure (ActionFluid), pointer :: StringMudArrayPtr + + procedure (ActionInteger), pointer :: StringComponentCountPtr + procedure (ActionComponent), pointer :: StringComponentArrayPtr + + procedure (ActionBopElement), pointer :: BopElementsPtr + + contains + + subroutine SubscribeAnnalusMudCount(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAnnalusMudCount + !DEC$ ATTRIBUTES ALIAS: 'SubscribeAnnalusMudCount' :: SubscribeAnnalusMudCount + implicit none + procedure (ActionInteger) :: a + AnnalusMudCountPtr => a + end subroutine + + subroutine SubscribeAnnalusMudArray(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAnnalusMudArray + !DEC$ ATTRIBUTES ALIAS: 'SubscribeAnnalusMudArray' :: SubscribeAnnalusMudArray + implicit none + procedure (ActionFluid) :: a + AnnalusMudArrayPtr => a + end subroutine + + + + + + + + + subroutine SubscribeStringMudCount(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeStringMudCount + !DEC$ ATTRIBUTES ALIAS: 'SubscribeStringMudCount' :: SubscribeStringMudCount + implicit none + procedure (ActionInteger) :: a + StringMudCountPtr => a + end subroutine + + subroutine SubscribeStringMudArray(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeStringMudArray + !DEC$ ATTRIBUTES ALIAS: 'SubscribeStringMudArray' :: SubscribeStringMudArray + implicit none + procedure (ActionFluid) :: a + StringMudArrayPtr => a + end subroutine + + + + + + + subroutine SubscribeStringComponentCount(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeStringComponentCount + !DEC$ ATTRIBUTES ALIAS: 'SubscribeStringComponentCount' :: SubscribeStringComponentCount + implicit none + procedure (ActionInteger) :: a + StringComponentCountPtr => a + end subroutine + + subroutine SubscribeStringComponentArray(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeStringComponentArray + !DEC$ ATTRIBUTES ALIAS: 'SubscribeStringComponentArray' :: SubscribeStringComponentArray + implicit none + procedure (ActionComponent) :: a + StringComponentArrayPtr => a + end subroutine + + + subroutine SubscribeBopElements(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeBopElements + !DEC$ ATTRIBUTES ALIAS: 'SubscribeBopElements' :: SubscribeBopElements + implicit none + procedure (ActionBopElement) :: a + BopElementsPtr => a + end subroutine + +end module CDownHoleActions \ No newline at end of file diff --git a/CSharp/DownHole/CDownHoleTypes.f90 b/CSharp/DownHole/CDownHoleTypes.f90 new file mode 100644 index 0000000..078b046 --- /dev/null +++ b/CSharp/DownHole/CDownHoleTypes.f90 @@ -0,0 +1,52 @@ +module CDownHoleTypes + implicit none + public + + !enums + enum, bind(c) + enumerator STRING_BIT !0 + enumerator STRING_STABILIZER !1 + enumerator STRING_COLLAR !2 + enumerator STRING_DRILLPIPE !3 + enumerator STRING_HEAVYWEIGHT !4 + end enum + + enum, bind(c) + enumerator FLUID_NORMAL_MUD !0 + enumerator FLUID_GAS_KICK !1 + enumerator FLUID_WATER_KICK !2 + enumerator FLUID_OIL_KICK !3 + enumerator FLUID_NO_MUD !4 + end enum + + ! new types + type, bind(c), public :: CFluid + real(8) :: StartMd + real(8) :: EndMd + real(8) :: Density + integer :: MudType + end type CFluid + + type, bind(c), public :: CStringComponents + real(8) :: Length + real(8) :: TopDepth + real(8) :: DownDepth + real(8) :: Od + real(8) :: Id + integer :: ComponentType + end type CStringComponents + + type, bind(c), public :: CStringComponent + real(8) :: StartMd + real(8) :: EndMd + integer :: ComponentType + end type CStringComponent + + type, bind(c), public :: CBopElement + integer :: ElementType + real :: ElementStart + real :: ElementEnd + end type CBopElement + + contains +end module CDownHoleTypes \ No newline at end of file diff --git a/CSharp/DownHole/CDownHoleVariables.f90 b/CSharp/DownHole/CDownHoleVariables.f90 new file mode 100644 index 0000000..fd16d14 --- /dev/null +++ b/CSharp/DownHole/CDownHoleVariables.f90 @@ -0,0 +1,292 @@ +module CDownHoleVariables + use CDownHoleTypes + use CStringConfigurationVariables + use CDownHoleActions + use CLog4 + implicit none + public + + logical :: AnnDrillMud + logical :: AnnCirculateMud + + integer :: AnnalusFluidsCount = 0 + integer :: StringFluidsCount = 0 + type(CFluid), allocatable, target :: AnnalusFluids(:) + type(CFluid), allocatable :: StringFluids(:) + + integer :: StringCount = 0 + type(CStringComponent), allocatable :: String(:) + + type(CBopElement), allocatable :: BopElements(:) + + real(8) :: DrillPipePressure + real(8) :: CasingPressure + real(8) :: ShoePressure + real(8) :: BottomHolePressure + real(8) :: FormationPressure + real :: InfluxRate + real :: KickVolume + real :: SecondKickVolume + real :: PermeabilityExposedHeight + + real(8) :: Density + real(8) :: Pressure + real(8) :: Temperature + real(8) :: Height + real(8) :: Volume + + contains + + subroutine SetAnnalusFluids(count, array) + implicit none + integer, intent(in) :: count + integer :: i, offset + type(CFluid), intent(inout), target :: array(count) + type(CFluid), pointer :: item + AnnalusFluidsCount = count + print*, 'AnnalusFluidsCount = ', count + if(size(AnnalusFluids) > 0) then + deallocate(AnnalusFluids) + end if + if(count > 0) then + offset = 0; + item => array(1) + if(item%StartMd > 0) then + AnnalusFluidsCount = AnnalusFluidsCount + 1 + offset = 1; + allocate(AnnalusFluids(AnnalusFluidsCount)) + AnnalusFluids(1)%StartMd = 0 + AnnalusFluids(1)%EndMd = item%StartMd + AnnalusFluids(1)%Density = 0 + AnnalusFluids(1)%MudType = FLUID_NO_MUD + endif + + !if(associated(AnnalusMudCountPtr)) then + ! call AnnalusMudCountPtr(AnnalusFluidsCount) + !end if + if(.not.allocated(AnnalusFluids))allocate(AnnalusFluids(AnnalusFluidsCount)) + !print*, '============START-AN============' + if(item%StartMd < 0) AnnalusFluids(1)%StartMd = 0 + do i = 1, count + item => array(i) + AnnalusFluids(i + offset)%StartMd = item%StartMd + if(i==1) AnnalusFluids(i)%StartMd = 0 + !print*, 'AnnalusFluids(',i,')%StartMd=', AnnalusFluids(i)%StartMd + AnnalusFluids(i + offset)%EndMd = item%EndMd + !print*, 'AnnalusFluids(',i,')%EndMd=', AnnalusFluids(i)%EndMd + AnnalusFluids(i + offset)%Density = item%Density + !print*, 'AnnalusFluids(',i,')%Density=', AnnalusFluids(i)%Density + AnnalusFluids(i + offset)%MudType = item%MudType + !print*, 'AnnalusFluids(',i,')%MudType=', AnnalusFluids(i)%MudType + !print*, '----------------------------' + end do + !print*, '============END-AN============' + !if(associated(AnnalusMudArrayPtr)) then + ! !AnnalusFluidsPtr => AnnalusFluids + ! call AnnalusMudArrayPtr(AnnalusFluids) + !end if + end if + end subroutine SetAnnalusFluids + + subroutine SetStringFluids(count, array) + implicit none + integer, intent(in) :: count + integer :: i, offset !, startArr + type(CFluid), intent(inout), target :: array(count) + type(CFluid), pointer :: item + StringFluidsCount = count + print*, 'StringFluidsCount = ', count + if(size(StringFluids) > 0) then + deallocate(StringFluids) + end if + + !startArr = 1 + + if(count > 0) then + offset = 0; + item => array(1) + ! + !if(item%StartMd <= 0 .and. item%EndMd <= 0) then + ! StringFluidsCount = StringFluidsCount - 1 + ! count = count - 1 + ! offset = offset + 1 + ! startArr = startArr + 1 + !endif + ! + !if(count <= 0) return + + if(item%StartMd > 0) then + StringFluidsCount = StringFluidsCount + 1 + offset = offset + 1 + allocate(StringFluids(StringFluidsCount)) + StringFluids(1)%StartMd = 0 + StringFluids(1)%EndMd = item%StartMd + StringFluids(1)%Density = 0 + StringFluids(1)%MudType = FLUID_NO_MUD + endif + + !if(associated(StringMudCountPtr)) then + ! call StringMudCountPtr(count) + !end if + if(.not.allocated(StringFluids))allocate(StringFluids(StringFluidsCount)) + !print*, '============START-ST============' + !print*, 'count=', count + do i = 1, count + item => array(i) + StringFluids(i + offset)%StartMd = item%StartMd + if(i==1) StringFluids(i)%StartMd = 0 + !print*, 'StringFluids(i)%StartMd=', StringFluids(i)%StartMd + StringFluids(i + offset)%EndMd = item%EndMd + !print*, 'StringFluids(i)%EndMd=', StringFluids(i)%EndMd + StringFluids(i + offset)%Density = item%Density + StringFluids(i + offset)%MudType = item%MudType + !print*, '----------------------------' + end do + !!if(item%StartMd < 0) StringFluids(1)%StartMd = 0 + !!print*, '============END-ST============' + !if(associated(StringMudArrayPtr)) then + ! call StringMudArrayPtr(StringFluids) + !end if + end if + end subroutine SetStringFluids + + subroutine SetString(count, array) + use CLog3 + implicit none + integer, intent(in) :: count + integer :: i !, j + type(CStringComponents), intent(inout), target :: array(count) + type(CStringComponents), pointer :: item + StringCount = count + if(size(String) > 0) then + deallocate(String) + end if + if(count > 0) then + !if(associated(StringComponentCountPtr)) then + ! call StringComponentCountPtr(count) + !end if + allocate(String(count)) + !j = 0 + !print*, '============CMP-ST============' + !call Log_3( '============CMP-ST============') + !do i = count, 1, -1 + do i = 1, count + item => array(i) + !String(i)%Length = item%Length + !String(i)%TopDepth = item%TopDepth + !String(i)%DownDepth = item%DownDepth + !String(i)%Od = item%Od + !String(i)%Id = item%Id + String(i)%ComponentType= item%ComponentType + !j = j + 1 + String(i)%StartMd = item%TopDepth + String(i)%EndMd = item%DownDepth + + String(i)%ComponentType=0 + !if(item%ComponentType > 4 ) then + ! String(i)%ComponentType=0 + ! String(i)%StartMd = 0 + !endif + if(item%ComponentType == 3) String(i)%ComponentType=0 + if(item%ComponentType == 4) String(i)%ComponentType=1 + if(item%ComponentType == 2) String(i)%ComponentType=2 + if(item%ComponentType == 1) String(i)%ComponentType=3 + !print*, 'item%ComponentType=', item%ComponentType + !print*, 'String(i)%ComponentType=', String(i)%ComponentType + !print*, 'String(i)%StartMd=', String(i)%StartMd + !print*, 'String(i)%EndMd=', String(i)%EndMd + !print*, '----------------------------' + + !call Log_3( 'item%ComponentType=', item%ComponentType) + !call Log_3( 'String(i)%ComponentType=', String(i)%ComponentType) + !call Log_3( 'String(i)%StartMd=', String(i)%StartMd) + !call Log_3( 'String(i)%EndMd=', String(i)%EndMd) + !call Log_3( '----------------------------') + + end do + !!print*, '============CMP-ST============' + !!call Log_3( '============CMP-ST============') + !if(associated(StringComponentArrayPtr)) then + ! call StringComponentArrayPtr(String) + !end if + end if + end subroutine SetString + + subroutine SetBopElements(array) + use CLog4 + implicit none + integer, parameter :: count = 4 + integer :: i = 1 !, j + type(CBopElement), intent(inout), target :: array(count) + type(CBopElement), pointer :: item + if(size(BopElements) > 0) deallocate(BopElements) + allocate(BopElements(count)) + + do i = 1, count + item => array(i) + !call Log_4('item%ElementStart', item%ElementStart) + !call Log_4('item%ElementEnd', item%ElementEnd) + !call Log_4('item%ElementType', item%ElementType) + !call Log_4('=====================================================') + + BopElements(i)%ElementStart = item%ElementStart + BopElements(i)%ElementEnd = item%ElementEnd + BopElements(i)%ElementType = item%ElementType + end do + + !if(associated(BopElementsPtr)) call BopElementsPtr(BopElements) + end subroutine SetBopElements + + subroutine GetAnnalusFluidInfo(md) + !DEC$ ATTRIBUTES DLLEXPORT::GetAnnalusFluidInfo + !DEC$ ATTRIBUTES ALIAS: 'GetAnnalusFluidInfo' :: GetAnnalusFluidInfo + !use ElementFinderVars + implicit none + integer, intent(in) :: md + + call AnnulusPropertyCalculator(md, Density, Pressure, Temperature) + + !ObservationPoint(2)%MeasureDepth = md + + !Density = md + Density - 10 + !Pressure = md + Pressure - 20 + !Temperature = md + Temperature - 30 + !Height = Height * 100.0 + !Volume = Volume * 200.0 + ! + !call Log_4('GetAnnalusFluidInfo=', md) + !call Log_4('A_Height=', Height) + !call Log_4('A_Volume=', Volume) + +#ifdef deb + print*, 'GetAnnalusFluidInfo=', md +#endif + + end subroutine GetAnnalusFluidInfo + + subroutine GetStringFluidInfo(md) + !DEC$ ATTRIBUTES DLLEXPORT::GetStringFluidInfo + !DEC$ ATTRIBUTES ALIAS: 'GetStringFluidInfo' :: GetStringFluidInfo + implicit none + integer, intent(in) :: md + + call StringPropertyCalculator(md, Density, Pressure, Temperature) + + !ObservationPoint(1)%MeasureDepth = md + + !Density = md + Density + 100 + !Pressure = md + Pressure + 200 + !Temperature = md + Temperature + 300 + !Height = Height * 100.0 + !Volume = Volume * 200.0 + ! + !call Log_4('GetStringFluidInfo=', md) + !call Log_4('S_Height=', Height) + !call Log_4('S_Volume=', Volume) + +#ifdef deb + print*, 'GetStringFluidInfo=', md +#endif + end subroutine GetStringFluidInfo + +end module CDownHoleVariables \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/CBopControlPanel.f90 b/CSharp/Equipments/ControlPanels/CBopControlPanel.f90 new file mode 100644 index 0000000..56077c2 --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CBopControlPanel.f90 @@ -0,0 +1,250 @@ +module CBopControlPanel + use CBopControlPanelVariables + implicit none + public + contains + + ! Input routines + subroutine SetAnnularRegulatorSetControl(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAnnularRegulatorSetControl + !DEC$ ATTRIBUTES ALIAS: 'SetAnnularRegulatorSetControl' :: SetAnnularRegulatorSetControl + implicit none + real*8, intent(in) :: v + AnnularRegulatorSetControl = v +#ifdef deb + print*, 'AnnularRegulatorSetControl=', AnnularRegulatorSetControl +#endif + end subroutine + + subroutine SetAirMasterValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAirMasterValve + !DEC$ ATTRIBUTES ALIAS: 'SetAirMasterValve' :: SetAirMasterValve + implicit none + real*8, intent(in) :: v + AirMasterValve = v +#ifdef deb + print*, 'AirMasterValve=', AirMasterValve +#endif + end subroutine + + subroutine SetByePassValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetByePassValve + !DEC$ ATTRIBUTES ALIAS: 'SetByePassValve' :: SetByePassValve + implicit none + real*8, intent(in) :: v + ByePassValve = v +#ifdef deb + print*, 'ByePassValve=', ByePassValve +#endif + end subroutine + + subroutine SetAnnularValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAnnularValve + !DEC$ ATTRIBUTES ALIAS: 'SetAnnularValve' :: SetAnnularValve + implicit none + real*8, intent(in) :: v + AnnularValve = v +#ifdef deb + print*, 'AnnularValve=', AnnularValve +#endif + end subroutine + + subroutine SetUpperRamsValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetUpperRamsValve + !DEC$ ATTRIBUTES ALIAS: 'SetUpperRamsValve' :: SetUpperRamsValve + implicit none + real*8, intent(in) :: v + UpperRamsValve = v +#ifdef deb + print*, 'UpperRamsValve=', UpperRamsValve +#endif + end subroutine + + subroutine SetMiddleRamsValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMiddleRamsValve + !DEC$ ATTRIBUTES ALIAS: 'SetMiddleRamsValve' :: SetMiddleRamsValve + implicit none + real*8, intent(in) :: v + MiddleRamsValve = v +#ifdef deb + print*, 'MiddleRamsValve=', MiddleRamsValve +#endif + end subroutine + + subroutine SetKillLineValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetKillLineValve + !DEC$ ATTRIBUTES ALIAS: 'SetKillLineValve' :: SetKillLineValve + implicit none + real*8, intent(in) :: v + KillLineValve = v +#ifdef deb + print*, 'KillLineValve=', KillLineValve +#endif + end subroutine + + subroutine SetChokeLineValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeLineValve + !DEC$ ATTRIBUTES ALIAS: 'SetChokeLineValve' :: SetChokeLineValve + implicit none + real*8, intent(in) :: v + ChokeLineValve = v +#ifdef deb + print*, 'ChokeLineValve=', ChokeLineValve +#endif + end subroutine + + subroutine SetLowerRamsValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLowerRamsValve + !DEC$ ATTRIBUTES ALIAS: 'SetLowerRamsValve' :: SetLowerRamsValve + implicit none + real*8, intent(in) :: v + LowerRamsValve = v +#ifdef deb + print*, 'LowerRamsValve=', LowerRamsValve +#endif + end subroutine + + + ! Output routines + real(8) function GetManifoldPressureGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetManifoldPressureGauge + !DEC$ ATTRIBUTES ALIAS: 'GetManifoldPressureGauge' :: GetManifoldPressureGauge + implicit none + GetManifoldPressureGauge = ManifoldPressureGauge + end function + + real(8) function GetAirSupplyPressureGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetAirSupplyPressureGauge + !DEC$ ATTRIBUTES ALIAS: 'GetAirSupplyPressureGauge' :: GetAirSupplyPressureGauge + implicit none + GetAirSupplyPressureGauge = AirSupplyPressureGauge + end function + + real(8) function GetAccumulatorPressureGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetAccumulatorPressureGauge + !DEC$ ATTRIBUTES ALIAS: 'GetAccumulatorPressureGauge' :: GetAccumulatorPressureGauge + implicit none + GetAccumulatorPressureGauge = AccumulatorPressureGauge + !GetAccumulatorPressureGauge = 2000.0d0 + end function + + real(8) function GetAnnularPressureGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetAnnularPressureGauge + !DEC$ ATTRIBUTES ALIAS: 'GetAnnularPressureGauge' :: GetAnnularPressureGauge + implicit none + GetAnnularPressureGauge = AnnularPressureGauge + end function + + integer function GetAnnularOpenLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetAnnularOpenLED + !DEC$ ATTRIBUTES ALIAS: 'GetAnnularOpenLED' :: GetAnnularOpenLED + implicit none + GetAnnularOpenLED = AnnularOpenLED + end function + + integer function GetAnnularCloseLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetAnnularCloseLED + !DEC$ ATTRIBUTES ALIAS: 'GetAnnularCloseLED' :: GetAnnularCloseLED + implicit none + GetAnnularCloseLED = AnnularCloseLED + end function + + integer function GetUpperRamsOpenLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetUpperRamsOpenLED + !DEC$ ATTRIBUTES ALIAS: 'GetUpperRamsOpenLED' :: GetUpperRamsOpenLED + implicit none + GetUpperRamsOpenLED = UpperRamsOpenLED + end function + + integer function GetUpperRamsCloseLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetUpperRamsCloseLED + !DEC$ ATTRIBUTES ALIAS: 'GetUpperRamsCloseLED' :: GetUpperRamsCloseLED + implicit none + GetUpperRamsCloseLED = UpperRamsCloseLED + end function + + integer function GetMiddleRamsOpenLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMiddleRamsOpenLED + !DEC$ ATTRIBUTES ALIAS: 'GetMiddleRamsOpenLED' :: GetMiddleRamsOpenLED + implicit none + GetMiddleRamsOpenLED = MiddleRamsOpenLED + end function + + integer function GetMiddleRamsCloseLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMiddleRamsCloseLED + !DEC$ ATTRIBUTES ALIAS: 'GetMiddleRamsCloseLED' :: GetMiddleRamsCloseLED + implicit none + GetMiddleRamsCloseLED = MiddleRamsCloseLED + end function + + integer function GetKillLineOpenLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetKillLineOpenLED + !DEC$ ATTRIBUTES ALIAS: 'GetKillLineOpenLED' :: GetKillLineOpenLED + implicit none + GetKillLineOpenLED = KillLineOpenLED + end function + + integer function GetKillLineCloseLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetKillLineCloseLED + !DEC$ ATTRIBUTES ALIAS: 'GetKillLineCloseLED' :: GetKillLineCloseLED + implicit none + GetKillLineCloseLED = KillLineCloseLED + end function + + integer function GetChokeLineOpenLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetChokeLineOpenLED + !DEC$ ATTRIBUTES ALIAS: 'GetChokeLineOpenLED' :: GetChokeLineOpenLED + implicit none + GetChokeLineOpenLED = ChokeLineOpenLED + end function + + integer function GetChokeLineCloseLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetChokeLineCloseLED + !DEC$ ATTRIBUTES ALIAS: 'GetChokeLineCloseLED' :: GetChokeLineCloseLED + implicit none + GetChokeLineCloseLED = ChokeLineCloseLED + end function + + integer function GetLowerRamsOpenLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetLowerRamsOpenLED + !DEC$ ATTRIBUTES ALIAS: 'GetLowerRamsOpenLED' :: GetLowerRamsOpenLED + implicit none + GetLowerRamsOpenLED = LowerRamsOpenLED + end function + + integer function GetLowerRamsCloseLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetLowerRamsCloseLED + !DEC$ ATTRIBUTES ALIAS: 'GetLowerRamsCloseLED' :: GetLowerRamsCloseLED + implicit none + GetLowerRamsCloseLED = LowerRamsCloseLED + end function + + real(8) function GetAnnularStatus() + !DEC$ ATTRIBUTES DLLEXPORT :: GetAnnularStatus + !DEC$ ATTRIBUTES ALIAS: 'GetAnnularStatus' :: GetAnnularStatus + implicit none + GetAnnularStatus = AnnularStatus + end function + + real(8) function GetUpperRamsStatus() + !DEC$ ATTRIBUTES DLLEXPORT :: GetUpperRamsStatus + !DEC$ ATTRIBUTES ALIAS: 'GetUpperRamsStatus' :: GetUpperRamsStatus + implicit none + GetUpperRamsStatus = UpperRamsStatus + end function + + real(8) function GetMiddleRamsStatus() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMiddleRamsStatus + !DEC$ ATTRIBUTES ALIAS: 'GetMiddleRamsStatus' :: GetMiddleRamsStatus + implicit none + GetMiddleRamsStatus = MiddleRamsStatus + end function + + real(8) function GetLowerRamsStatus() + !DEC$ ATTRIBUTES DLLEXPORT :: GetLowerRamsStatus + !DEC$ ATTRIBUTES ALIAS: 'GetLowerRamsStatus' :: GetLowerRamsStatus + implicit none + GetLowerRamsStatus = LowerRamsStatus + end function + + end module CBopControlPanel diff --git a/CSharp/Equipments/ControlPanels/CBopControlPanelVariables.f90 b/CSharp/Equipments/ControlPanels/CBopControlPanelVariables.f90 new file mode 100644 index 0000000..e1d2ef9 --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CBopControlPanelVariables.f90 @@ -0,0 +1,116 @@ +module CBopControlPanelVariables + implicit none + public + + ! Input vars + real(8) :: AnnularRegulatorSetControl + real(8) :: AirMasterValve + real(8) :: ByePassValve + real(8) :: AnnularValve + real(8) :: UpperRamsValve + real(8) :: MiddleRamsValve + real(8) :: KillLineValve + real(8) :: ChokeLineValve + real(8) :: LowerRamsValve + + ! Output vars + real(8) :: ManifoldPressureGauge + real(8) :: AirSupplyPressureGauge + real(8) :: AccumulatorPressureGauge + real(8) :: AnnularPressureGauge + integer :: AnnularOpenLED + integer :: AnnularCloseLED + integer :: UpperRamsOpenLED + integer :: UpperRamsCloseLED + integer :: MiddleRamsOpenLED + integer :: MiddleRamsCloseLED + integer :: KillLineOpenLED + integer :: KillLineCloseLED + integer :: ChokeLineOpenLED + integer :: ChokeLineCloseLED + integer :: LowerRamsOpenLED + integer :: LowerRamsCloseLED + real(8) :: AnnularStatus + real(8) :: UpperRamsStatus + real(8) :: MiddleRamsStatus + real(8) :: LowerRamsStatus + + contains + + 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 CBopControlPanelVariables diff --git a/CSharp/Equipments/ControlPanels/CChokeControlPanel.f90 b/CSharp/Equipments/ControlPanels/CChokeControlPanel.f90 new file mode 100644 index 0000000..3238dc0 --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CChokeControlPanel.f90 @@ -0,0 +1,161 @@ +module CChokeControlPanel + use CChokeControlPanelVariables + implicit none + public + contains + + ! Input routines + subroutine SetChokePanelPumpSelectorSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokePanelPumpSelectorSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetChokePanelPumpSelectorSwitch' :: SetChokePanelPumpSelectorSwitch + implicit none + integer, intent(in) :: v + ChokePanelPumpSelectorSwitch = v +#ifdef deb + print*, 'ChokePanelPumpSelectorSwitch=', ChokePanelPumpSelectorSwitch +#endif + end subroutine + + subroutine SetChokePanelStrokeResetSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokePanelStrokeResetSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetChokePanelStrokeResetSwitch' :: SetChokePanelStrokeResetSwitch + implicit none + logical, intent(in) :: v + ChokePanelStrokeResetSwitch = v +#ifdef deb + print*, 'ChokePanelStrokeResetSwitch=', ChokePanelStrokeResetSwitch +#endif + end subroutine + + subroutine SetChokeSelectorSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeSelectorSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetChokeSelectorSwitch' :: SetChokeSelectorSwitch + implicit none + logical, intent(in) :: v + ChokeSelectorSwitch = v +#ifdef deb + print*, 'ChokeSelectorSwitch=', 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 + + 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=', ChokeRateControlKnob +#endif + end subroutine + + subroutine SetChokeControlLever(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeControlLever + !DEC$ ATTRIBUTES ALIAS: 'SetChokeControlLever' :: SetChokeControlLever + implicit none + real*8, intent(in) :: v + ChokeControlLever = v +#ifdef deb + print*, 'ChokeControlLever=', ChokeControlLever +#endif + end subroutine + + subroutine SetChokePanelRigAirSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokePanelRigAirSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetChokePanelRigAirSwitch' :: SetChokePanelRigAirSwitch + implicit none + logical, intent(in) :: v + ChokePanelRigAirSwitch = v +#ifdef deb + print*, 'ChokePanelRigAirSwitch=', ChokePanelRigAirSwitch +#endif + end subroutine + + + subroutine SetEnableAutoChoke(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetEnableAutoChoke + !DEC$ ATTRIBUTES ALIAS: 'SetEnableAutoChoke' :: SetEnableAutoChoke + implicit none + logical, intent(in) :: v + EnableAutoChoke = v +#ifdef deb + print*, 'EnableAutoChoke=', EnableAutoChoke +#endif + end subroutine + + + + + + + + + + + + + ! Output routines + real(8) function GetStandPipePressure() + !DEC$ ATTRIBUTES DLLEXPORT :: GetStandPipePressure + !DEC$ ATTRIBUTES ALIAS: 'GetStandPipePressure' :: GetStandPipePressure + implicit none + GetStandPipePressure = StandPipePressure + end function + + real(8) function GetCasingPressure() + !DEC$ ATTRIBUTES DLLEXPORT :: GetCasingPressure + !DEC$ ATTRIBUTES ALIAS: 'GetCasingPressure' :: GetCasingPressure + implicit none + GetCasingPressure = CasingPressure + end function + + real(8) function GetChokePosition() + !DEC$ ATTRIBUTES DLLEXPORT :: GetChokePosition + !DEC$ ATTRIBUTES ALIAS: 'GetChokePosition' :: GetChokePosition + implicit none + GetChokePosition = ChokePosition + end function + + real(8) function GetChokePanelSPMCounter() + !DEC$ ATTRIBUTES DLLEXPORT :: GetChokePanelSPMCounter + !DEC$ ATTRIBUTES ALIAS: 'GetChokePanelSPMCounter' :: GetChokePanelSPMCounter + implicit none + !GetChokePanelSPMCounter = 0 + GetChokePanelSPMCounter = ChokePanelSPMCounter + end function + + real(8) function GetChokePanelTotalStrokeCounter() + !DEC$ ATTRIBUTES DLLEXPORT :: GetChokePanelTotalStrokeCounter + !DEC$ ATTRIBUTES ALIAS: 'GetChokePanelTotalStrokeCounter' :: GetChokePanelTotalStrokeCounter + implicit none + !GetChokePanelTotalStrokeCounter = 0 + GetChokePanelTotalStrokeCounter = ChokePanelTotalStrokeCounter + end function + + integer function GetChoke1LED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetChoke1LED + !DEC$ ATTRIBUTES ALIAS: 'GetChoke1LED' :: GetChoke1LED + implicit none + GetChoke1LED = Choke1LED + end function + + integer function GetChoke2LED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetChoke2LED + !DEC$ ATTRIBUTES ALIAS: 'GetChoke2LED' :: GetChoke2LED + implicit none + GetChoke2LED = Choke2LED + end function + + + + +end module CChokeControlPanel \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/CChokeControlPanelVariables.f90 b/CSharp/Equipments/ControlPanels/CChokeControlPanelVariables.f90 new file mode 100644 index 0000000..9f60359 --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CChokeControlPanelVariables.f90 @@ -0,0 +1,25 @@ +module CChokeControlPanelVariables + implicit none + public + + ! Input vars + integer :: ChokePanelPumpSelectorSwitch + logical :: ChokePanelStrokeResetSwitch + logical :: ChokeSelectorSwitch + real(8) :: ChokeRateControlKnob + real(8) :: ChokeControlLever + logical :: ChokePanelRigAirSwitch + + logical :: EnableAutoChoke + + ! Output vars + real(8) :: StandPipePressure + real(8) :: CasingPressure + real(8) :: ChokePosition + real(8) :: ChokePanelSPMCounter + real(8) :: ChokePanelTotalStrokeCounter + integer :: Choke1LED + integer :: Choke2LED + + contains +end module CChokeControlPanelVariables \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/CChokeManifold.f90 b/CSharp/Equipments/ControlPanels/CChokeManifold.f90 new file mode 100644 index 0000000..0c4bd3a --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CChokeManifold.f90 @@ -0,0 +1,212 @@ +module CChokeManifold + use CChokeManifoldVariables + use CLog2 + implicit none + public + contains + + ! Input routines + subroutine SetChokeManifoldValve1(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeManifoldValve1 + !DEC$ ATTRIBUTES ALIAS: 'SetChokeManifoldValve1' :: SetChokeManifoldValve1 + implicit none + logical, intent(in) :: v + ChokeManifoldValve1 = v + call ChangeValve(61, v) +#ifdef deb + !print*, 'ChokeManifoldValve1=', ChokeManifoldValve1 +#endif + end subroutine + + subroutine SetChokeManifoldValve2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeManifoldValve2 + !DEC$ ATTRIBUTES ALIAS: 'SetChokeManifoldValve2' :: SetChokeManifoldValve2 + implicit none + logical, intent(in) :: v + ChokeManifoldValve2 = v + call ChangeValve(64, v) +#ifdef deb + !print*, 'ChokeManifoldValve2=', ChokeManifoldValve2 +#endif + end subroutine + + subroutine SetLeftManualChoke(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLeftManualChoke + !DEC$ ATTRIBUTES ALIAS: 'SetLeftManualChoke' :: SetLeftManualChoke + implicit none + real*8, intent(in) :: v + !LeftManualChoke = abs(v-100) + LeftManualChoke = v + if(LeftManChokeOnProblem) then + call ChangeValve(32, .true.) + else + if(LeftManualChoke > 99.9) then + !call Log_2( 'valve 32 is closed=', LeftManualChoke) + call ChangeValve(32, .false.) + else + !call Log_2( 'valve 32 is open=', LeftManualChoke) + call ChangeValve(32, .true.) + endif + endif +#ifdef deb + !print*, 'LeftManualChoke=', LeftManualChoke +#endif + end subroutine + + subroutine SetChokeManifoldValve4(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeManifoldValve4 + !DEC$ ATTRIBUTES ALIAS: 'SetChokeManifoldValve4' :: SetChokeManifoldValve4 + implicit none + logical, intent(in) :: v + ChokeManifoldValve4 = v + call ChangeValve(62, v) + !WRITE (*,*) ' valve 62 ', v +#ifdef deb + !print*, 'ChokeManifoldValve4=', ChokeManifoldValve4 +#endif + end subroutine + + subroutine SetChokeManifoldValve5(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeManifoldValve5 + !DEC$ ATTRIBUTES ALIAS: 'SetChokeManifoldValve5' :: SetChokeManifoldValve5 + implicit none + logical, intent(in) :: v + ChokeManifoldValve5 = v + call ChangeValve(63, v) + !WRITE (*,*) ' valve 63 ', v +#ifdef deb + !print*, 'ChokeManifoldValve5=', ChokeManifoldValve5 +#endif + end subroutine + + subroutine SetRightManualChoke(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRightManualChoke + !DEC$ ATTRIBUTES ALIAS: 'SetRightManualChoke' :: SetRightManualChoke + implicit none + real*8, intent(in) :: v + !RightManualChoke = abs(v -100) + RightManualChoke = v + if(RightManChokeOnProblem) then + call ChangeValve(35, .true.) + else + if(RightManualChoke > 99.9) then + !call Log_2( 'valve 35 is closed=', RightManualChoke) + call ChangeValve(35, .false.) + else + !call Log_2( 'valve 35 is open=', RightManualChoke) + call ChangeValve(35, .true.) + endif + endif +#ifdef deb + !print*, 'RightManualChoke=', RightManualChoke +#endif + end subroutine + + subroutine SetChokeManifoldValve7(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeManifoldValve7 + !DEC$ ATTRIBUTES ALIAS: 'SetChokeManifoldValve7' :: SetChokeManifoldValve7 + implicit none + logical, intent(in) :: v + ChokeManifoldValve7 = v + call ChangeValve(27, v) +#ifdef deb + !print*, 'ChokeManifoldValve7=', ChokeManifoldValve7 +#endif + end subroutine + + subroutine SetChokeManifoldValve8(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeManifoldValve8 + !DEC$ ATTRIBUTES ALIAS: 'SetChokeManifoldValve8' :: SetChokeManifoldValve8 + implicit none + logical, intent(in) :: v + ChokeManifoldValve8 = v + call ChangeValve(28, v) + !WRITE (*,*) ' valve 28 ', v +#ifdef deb + !print*, 'ChokeManifoldValve8=', ChokeManifoldValve8 +#endif + end subroutine + + subroutine SetChokeManifoldValve9(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeManifoldValve9 + !DEC$ ATTRIBUTES ALIAS: 'SetChokeManifoldValve9' :: SetChokeManifoldValve9 + implicit none + logical, intent(in) :: v + ChokeManifoldValve9 = v + call ChangeValve(29, v) +#ifdef deb + !print*, 'ChokeManifoldValve9=', ChokeManifoldValve9 +#endif + end subroutine + + subroutine SetChokeManifoldValve10(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeManifoldValve10 + !DEC$ ATTRIBUTES ALIAS: 'SetChokeManifoldValve10' :: SetChokeManifoldValve10 + implicit none + logical, intent(in) :: v + ChokeManifoldValve10 = v + call ChangeValve(30, v) + !WRITE (*,*) ' valve 30 ', v +#ifdef deb + !print*, 'ChokeManifoldValve10=', ChokeManifoldValve10 +#endif + end subroutine + + subroutine SetChokeManifoldValve11(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeManifoldValve11 + !DEC$ ATTRIBUTES ALIAS: 'SetChokeManifoldValve11' :: SetChokeManifoldValve11 + implicit none + logical, intent(in) :: v + ChokeManifoldValve11 = v + call ChangeValve(31, v) +#ifdef deb + !print*, 'ChokeManifoldValve11=', ChokeManifoldValve11 +#endif + end subroutine + + subroutine SetChokeManifoldValve12(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeManifoldValve12 + !DEC$ ATTRIBUTES ALIAS: 'SetChokeManifoldValve12' :: SetChokeManifoldValve12 + implicit none + logical, intent(in) :: v + ChokeManifoldValve12 = v + call ChangeValve(25, v) +#ifdef deb + !print*, 'ChokeManifoldValve12=', ChokeManifoldValve12 +#endif + end subroutine + + subroutine SetChokeManifoldValve13(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokeManifoldValve13 + !DEC$ ATTRIBUTES ALIAS: 'SetChokeManifoldValve13' :: SetChokeManifoldValve13 + implicit none + logical, intent(in) :: v + ChokeManifoldValve13 = v + call ChangeValve(26, v) + !WRITE (*,*) ' valve 26 ', v +#ifdef deb + !print*, 'ChokeManifoldValve13=', ChokeManifoldValve13 +#endif + end subroutine + + + ! Output routines + + integer function GetHydraulicChock1() + !DEC$ ATTRIBUTES DLLEXPORT :: GetHydraulicChock1 + !DEC$ ATTRIBUTES ALIAS: 'GetHydraulicChock1' :: GetHydraulicChock1 + implicit none + GetHydraulicChock1 = HydraulicChock1 + !GetHydraulicChock1 = 23 + end function + + integer function GetHydraulicChock2() + !DEC$ ATTRIBUTES DLLEXPORT :: GetHydraulicChock2 + !DEC$ ATTRIBUTES ALIAS: 'GetHydraulicChock2' :: GetHydraulicChock2 + implicit none + GetHydraulicChock2 = HydraulicChock2 + !GetHydraulicChock2 = 54 + end function + + +end module CChokeManifold \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/CChokeManifoldVariables.f90 b/CSharp/Equipments/ControlPanels/CChokeManifoldVariables.f90 new file mode 100644 index 0000000..21c9baa --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CChokeManifoldVariables.f90 @@ -0,0 +1,65 @@ +module CChokeManifoldVariables + use CManifolds + implicit none + public + + ! Input vars + logical :: ChokeManifoldValve1 + logical :: ChokeManifoldValve2 + real(8) :: LeftManualChoke + logical :: ChokeManifoldValve4 + logical :: ChokeManifoldValve5 + real(8) :: RightManualChoke + logical :: ChokeManifoldValve7 + logical :: ChokeManifoldValve8 + logical :: ChokeManifoldValve9 + logical :: ChokeManifoldValve10 + logical :: ChokeManifoldValve11 + logical :: ChokeManifoldValve12 + logical :: ChokeManifoldValve13 + + ! Output vars + integer :: HydraulicChock1 + integer :: HydraulicChock2 + + ! Control vars + logical :: HyChock1OnProblem = .false. + logical :: HyChock2OnProblem = .false. + logical :: LeftManChokeOnProblem = .false. + logical :: RightManChokeOnProblem = .false. + + contains + + subroutine SetHydraulicChock1(v) + implicit none + integer, intent(in) :: v + HydraulicChock1 = v + if(HyChock1OnProblem) then + call ChangeValve(33, .true.) + else + if(v == 100) then + if(Valve(33)%Status) call ChangeValve(33, .false.) + else + if(.not.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 + HydraulicChock2 = v + if(HyChock2OnProblem) then + call ChangeValve(34, .true.) + else + if(v==100) then + if(Valve(34)%Status) call ChangeValve(34, .false.) + else + if(.not.Valve(34)%Status) call ChangeValve(34, .true.) + endif + endif + !WRITE (*,*) ' valve 34 ', Valve(34)%Status, ' arg ', v + end subroutine + +endmodule CChokeManifoldVariables \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/CDataDisplayConsole.f90 b/CSharp/Equipments/ControlPanels/CDataDisplayConsole.f90 new file mode 100644 index 0000000..d3eea8b --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CDataDisplayConsole.f90 @@ -0,0 +1,798 @@ +module CDataDisplayConsole + use CDataDisplayConsoleVariables + implicit none + public + contains + + + + !Portable + subroutine SetTripAlarmLow(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTripAlarmLow + !DEC$ ATTRIBUTES ALIAS: 'SetTripAlarmLow' :: SetTripAlarmLow + !use MudSystemVARIABLES, only: TripTank_MinVol_Allowded + implicit none + real*8, intent(in) :: v + TripAlarmLow = v + !TripTank_MinVol_Allowded = v +#ifdef deb + print*, 'TripAlarmLow=', TripAlarmLow +#endif + end subroutine + + subroutine SetTripAlarmHigh(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTripAlarmHigh + !DEC$ ATTRIBUTES ALIAS: 'SetTripAlarmHigh' :: SetTripAlarmHigh + !use MudSystemVARIABLES, only: TripTank_MaxVol_Allowded + implicit none + real*8, intent(in) :: v + TripAlarmHigh = v + !TripTank_MaxVol_Allowded = v +#ifdef deb + print*, 'TripAlarmHigh=', TripAlarmHigh +#endif + end subroutine + + + subroutine SetRetFlowAlarmLow(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRetFlowAlarmLow + !DEC$ ATTRIBUTES ALIAS: 'SetRetFlowAlarmLow' :: SetRetFlowAlarmLow + !use MudSystemVARIABLES, only: MFFI_MinPercent_Allowded + implicit none + real*8, intent(in) :: v + RetFlowAlarmLow = v + !MFFI_MinPercent_Allowded = v +#ifdef deb + print*, 'RetFlowAlarmLow=', RetFlowAlarmLow +#endif + end subroutine + + subroutine SetRetFlowAlarmHigh(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRetFlowAlarmHigh + !DEC$ ATTRIBUTES ALIAS: 'SetRetFlowAlarmHigh' :: SetRetFlowAlarmHigh + !use MudSystemVARIABLES, only: MFFI_MaxPercent_Allowded + implicit none + real*8, intent(in) :: v + RetFlowAlarmHigh = v + !MFFI_MaxPercent_Allowded = v +#ifdef deb + print*, 'RetFlowAlarmHigh=', RetFlowAlarmHigh +#endif + end subroutine + + + subroutine SetPitAlarmLow(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPitAlarmLow + !DEC$ ATTRIBUTES ALIAS: 'SetPitAlarmLow' :: SetPitAlarmLow + implicit none + real*8, intent(in) :: v + PitAlarmLow = v + !call Log_4('PitAlarmLow=', PitAlarmLow) +#ifdef deb + print*, 'PitAlarmLow=', PitAlarmLow +#endif + end subroutine + + subroutine SetPitAlarmHigh(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPitAlarmHigh + !DEC$ ATTRIBUTES ALIAS: 'SetPitAlarmHigh' :: SetPitAlarmHigh + implicit none + real*8, intent(in) :: v + PitAlarmHigh = v + !call Log_4('PitAlarmHigh=', PitAlarmHigh) +#ifdef deb + print*, 'PitAlarmHigh=', PitAlarmHigh +#endif + end subroutine + + + + + + + + + + + + + + + + + ! Input routines + subroutine SetTripTankSetAlarmLow(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTripTankSetAlarmLow + !DEC$ ATTRIBUTES ALIAS: 'SetTripTankSetAlarmLow' :: SetTripTankSetAlarmLow + implicit none + real*8, intent(in) :: v + TripTankSetAlarmLow = v +#ifdef deb + print*, 'TripTankSetAlarmLow=', TripTankSetAlarmLow +#endif + end subroutine + + subroutine SetTripTankSetAlarmHigh(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTripTankSetAlarmHigh + !DEC$ ATTRIBUTES ALIAS: 'SetTripTankSetAlarmHigh' :: SetTripTankSetAlarmHigh + implicit none + real*8, intent(in) :: v + TripTankSetAlarmHigh = v +#ifdef deb + print*, 'TripTankSetAlarmHigh=', TripTankSetAlarmHigh +#endif + end subroutine + + subroutine SetTripTankSetAlarmSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTripTankSetAlarmSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetTripTankSetAlarmSwitch' :: SetTripTankSetAlarmSwitch + implicit none + integer, intent(in) :: v + TripTankSetAlarmSwitch = v +#ifdef deb + print*, 'TripTankSetAlarmSwitch=', TripTankSetAlarmSwitch +#endif + end subroutine + + subroutine SetTripTankPowerSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTripTankPowerSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetTripTankPowerSwitch' :: SetTripTankPowerSwitch + use CTanksVariables, only: Set_ManualPumpPower + implicit none + logical, intent(in) :: v + TripTankPowerSwitch = v + if(TripTankPowerSwitch) call Set_ManualPumpPower(TripTankPumpSwitch) +#ifdef deb + print*, 'TripTankPowerSwitch=', TripTankPowerSwitch +#endif + end subroutine + + subroutine SetTripTankPumpSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTripTankPumpSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetTripTankPumpSwitch' :: SetTripTankPumpSwitch + use CTanksVariables, only: Set_ManualPumpPower + implicit none + logical, intent(in) :: v + TripTankPumpSwitch = v + if(TripTankPowerSwitch) call Set_ManualPumpPower(TripTankPumpSwitch) +#ifdef deb + print*, 'TripTankPumpSwitch=', TripTankPumpSwitch +#endif + end subroutine + + subroutine SetTripTankHornSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTripTankHornSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetTripTankHornSwitch' :: SetTripTankHornSwitch + implicit none + logical, intent(in) :: v + TripTankHornSwitch = v +#ifdef deb + print*, 'TripTankHornSwitch=', TripTankHornSwitch +#endif + end subroutine + + subroutine SetAcidGasDetectionHornSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAcidGasDetectionHornSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetAcidGasDetectionHornSwitch' :: SetAcidGasDetectionHornSwitch + implicit none + logical, intent(in) :: v + AcidGasDetectionHornSwitch = v +#ifdef deb + print*, 'AcidGasDetectionHornSwitch=', AcidGasDetectionHornSwitch +#endif + end subroutine + + subroutine SetTotalStrokeCounterResetSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTotalStrokeCounterResetSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetTotalStrokeCounterResetSwitch' :: SetTotalStrokeCounterResetSwitch + implicit none + logical, intent(in) :: v + TotalStrokeCounterResetSwitch = v +#ifdef deb + print*, 'TotalStrokeCounterResetSwitch=', TotalStrokeCounterResetSwitch +#endif + end subroutine + + subroutine SetDrillingTrippingSelectorSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetDrillingTrippingSelectorSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetDrillingTrippingSelectorSwitch' :: SetDrillingTrippingSelectorSwitch + use CCommonVariables + implicit none + logical, intent(in) :: v + DrillingTrippingSelectorSwitch = v + DrillWatchOperationMode = v +#ifdef deb + print*, 'DrillingTrippingSelectorSwitch=', DrillingTrippingSelectorSwitch +#endif + end subroutine + + subroutine SetMVTSetAlarmLowKnob(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMVTSetAlarmLowKnob + !DEC$ ATTRIBUTES ALIAS: 'SetMVTSetAlarmLowKnob' :: SetMVTSetAlarmLowKnob + implicit none + real*8, intent(in) :: v + MVTSetAlarmLowKnob = v +#ifdef deb + print*, 'MVTSetAlarmLowKnob=', MVTSetAlarmLowKnob +#endif + end subroutine + + subroutine SetMVTSetAlarmHighKnob(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMVTSetAlarmHighKnob + !DEC$ ATTRIBUTES ALIAS: 'SetMVTSetAlarmHighKnob' :: SetMVTSetAlarmHighKnob + implicit none + real*8, intent(in) :: v + MVTSetAlarmHighKnob = v +#ifdef deb + print*, 'MVTSetAlarmHighKnob=', MVTSetAlarmHighKnob +#endif + end subroutine + + subroutine SetMVTSetAlarmSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMVTSetAlarmSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetMVTSetAlarmSwitch' :: SetMVTSetAlarmSwitch + implicit none + integer, intent(in) :: v + MVTSetAlarmSwitch = v +#ifdef deb + print*, 'MVTSetAlarmSwitch=', MVTSetAlarmSwitch +#endif + end subroutine + + subroutine SetMudTank1Switch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMudTank1Switch + !DEC$ ATTRIBUTES ALIAS: 'SetMudTank1Switch' :: SetMudTank1Switch + implicit none + logical, intent(in) :: v + MudTank1Switch = v +#ifdef deb + print*, 'MudTank1Switch=', MudTank1Switch +#endif + end subroutine + + subroutine SetMudTank2Switch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMudTank2Switch + !DEC$ ATTRIBUTES ALIAS: 'SetMudTank2Switch' :: SetMudTank2Switch + implicit none + logical, intent(in) :: v + MudTank2Switch = v +#ifdef deb + print*, 'MudTank2Switch=', MudTank2Switch +#endif + end subroutine + + subroutine SetMudTank3Switch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMudTank3Switch + !DEC$ ATTRIBUTES ALIAS: 'SetMudTank3Switch' :: SetMudTank3Switch + implicit none + logical, intent(in) :: v + MudTank3Switch = v +#ifdef deb + print*, 'MudTank3Switch=', MudTank3Switch +#endif + end subroutine + + subroutine SetMudTank4Switch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMudTank4Switch + !DEC$ ATTRIBUTES ALIAS: 'SetMudTank4Switch' :: SetMudTank4Switch + implicit none + logical, intent(in) :: v + MudTank4Switch = v +#ifdef deb + print*, 'MudTank4Switch=', MudTank4Switch +#endif + end subroutine + + subroutine SetMVTFineKnob(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMVTFineKnob + !DEC$ ATTRIBUTES ALIAS: 'SetMVTFineKnob' :: SetMVTFineKnob + implicit none + real*8, intent(in) :: v + MVTFineKnob = v +#ifdef deb + print*, 'MVTFineKnob=', MVTFineKnob +#endif + end subroutine + + subroutine SetMVTCoarseKnob(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMVTCoarseKnob + !DEC$ ATTRIBUTES ALIAS: 'SetMVTCoarseKnob' :: SetMVTCoarseKnob + implicit none + real*8, intent(in) :: v + MVTCoarseKnob = v +#ifdef deb + print*, 'MVTCoarseKnob=', MVTCoarseKnob +#endif + end subroutine + + subroutine SetMVTHornSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMVTHornSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetMVTHornSwitch' :: SetMVTHornSwitch + implicit none + logical, intent(in) :: v + MVTHornSwitch = v +#ifdef deb + print*, 'MVTHornSwitch=', MVTHornSwitch +#endif + end subroutine + + subroutine SetMVTDeviationTripSelectionSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMVTDeviationTripSelectionSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetMVTDeviationTripSelectionSwitch' :: SetMVTDeviationTripSelectionSwitch + implicit none + logical, intent(in) :: v + MVTDeviationTripSelectionSwitch = v +#ifdef deb + print*, 'MVTDeviationTripSelectionSwitch=', MVTDeviationTripSelectionSwitch +#endif + end subroutine + + subroutine SetMVTPowerSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMVTPowerSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetMVTPowerSwitch' :: SetMVTPowerSwitch + implicit none + logical, intent(in) :: v + MVTPowerSwitch = v +#ifdef deb + print*, 'MVTPowerSwitch=', MVTPowerSwitch +#endif + end subroutine + + subroutine SetMFFIResetTotalStrokes(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMFFIResetTotalStrokes + !DEC$ ATTRIBUTES ALIAS: 'SetMFFIResetTotalStrokes' :: SetMFFIResetTotalStrokes + implicit none + logical, intent(in) :: v + MFFIResetTotalStrokes = v +#ifdef deb + print*, 'MFFIResetTotalStrokes=', MFFIResetTotalStrokes +#endif + end subroutine + + subroutine SetMFFIResetFillCounter(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMFFIResetFillCounter + !DEC$ ATTRIBUTES ALIAS: 'SetMFFIResetFillCounter' :: SetMFFIResetFillCounter + implicit none + logical, intent(in) :: v + MFFIResetFillCounter = v +#ifdef deb + print*, 'MFFIResetFillCounter=', MFFIResetFillCounter +#endif + end subroutine + + subroutine SetMFFIPumpSelectorSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMFFIPumpSelectorSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetMFFIPumpSelectorSwitch' :: SetMFFIPumpSelectorSwitch + implicit none + integer, intent(in) :: v + MFFIPumpSelectorSwitch = v +#ifdef deb + print*, 'MFFIPumpSelectorSwitch=', MFFIPumpSelectorSwitch +#endif + end subroutine + + subroutine SetMFFIFillSPMSelectorSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMFFIFillSPMSelectorSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetMFFIFillSPMSelectorSwitch' :: SetMFFIFillSPMSelectorSwitch + implicit none + logical, intent(in) :: v + MFFIFillSPMSelectorSwitch = v +#ifdef deb + print*, 'MFFIFillSPMSelectorSwitch=', MFFIFillSPMSelectorSwitch +#endif + end subroutine + + subroutine SetMFFISetAlarmLowKnob(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMFFISetAlarmLowKnob + !DEC$ ATTRIBUTES ALIAS: 'SetMFFISetAlarmLowKnob' :: SetMFFISetAlarmLowKnob + implicit none + real*8, intent(in) :: v + MFFISetAlarmLowKnob = v +#ifdef deb + print*, 'MFFISetAlarmLowKnob=', MFFISetAlarmLowKnob +#endif + end subroutine + + subroutine SetMFFISetAlarmHighKnob(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMFFISetAlarmHighKnob + !DEC$ ATTRIBUTES ALIAS: 'SetMFFISetAlarmHighKnob' :: SetMFFISetAlarmHighKnob + implicit none + real*8, intent(in) :: v + MFFISetAlarmHighKnob = v +#ifdef deb + print*, 'MFFISetAlarmHighKnob=', MFFISetAlarmHighKnob +#endif + end subroutine + + subroutine SetMFFISetAlarmSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMFFISetAlarmSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetMFFISetAlarmSwitch' :: SetMFFISetAlarmSwitch + implicit none + integer, intent(in) :: v + MFFISetAlarmSwitch = v +#ifdef deb + print*, 'MFFISetAlarmSwitch=', MFFISetAlarmSwitch +#endif + end subroutine + + subroutine SetMFFIPowerSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMFFIPowerSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetMFFIPowerSwitch' :: SetMFFIPowerSwitch + implicit none + logical, intent(in) :: v + MFFIPowerSwitch = v +#ifdef deb + print*, 'MFFIPowerSwitch=', MFFIPowerSwitch +#endif + end subroutine + + subroutine SetMFFIHornSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMFFIHornSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetMFFIHornSwitch' :: SetMFFIHornSwitch + implicit none + logical, intent(in) :: v + MFFIHornSwitch = v +#ifdef deb + print*, 'MFFIHornSwitch=', MFFIHornSwitch +#endif + end subroutine + + subroutine SetTotalWellDepth(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTotalWellDepth + !DEC$ ATTRIBUTES ALIAS: 'SetTotalWellDepth' :: SetTotalWellDepth + implicit none + real(8), intent(in) :: v + call Set_TotalDepth(v) +#ifdef deb + print*, 'TotalWellDepth=', v +#endif + end subroutine + + subroutine SetResetWob(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetResetWob + !DEC$ ATTRIBUTES ALIAS: 'SetResetWob' :: SetResetWob + implicit none + logical, intent(in) :: v + ResetWob = v +#ifdef deb + print*, 'ResetWob=', ResetWob +#endif + end subroutine + + subroutine SetClutch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetClutch + !DEC$ ATTRIBUTES ALIAS: 'SetClutch' :: SetClutch + implicit none + logical, intent(in) :: v + Clutch = v +#ifdef deb + print*, 'Clutch=', Clutch +#endif + end subroutine + + + ! Output routines + real(8) function GetWOBPointer() + !DEC$ ATTRIBUTES DLLEXPORT :: GetWOBPointer + !DEC$ ATTRIBUTES ALIAS: 'GetWOBPointer' :: GetWOBPointer + implicit none + GetWOBPointer = WOBPointer + end function + + real(8) function GetHookLoadPointer() + !DEC$ ATTRIBUTES DLLEXPORT :: GetHookLoadPointer + !DEC$ ATTRIBUTES ALIAS: 'GetHookLoadPointer' :: GetHookLoadPointer + implicit none + GetHookLoadPointer = HookLoadPointer + end function + + real(8) function GetTripTankGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTripTankGauge + !DEC$ ATTRIBUTES ALIAS: 'GetTripTankGauge' :: GetTripTankGauge + implicit none + GetTripTankGauge = TripTankGauge / 42.0 + !GetTripTankGauge = 23 + end function + + integer function GetTripTankAlarmLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTripTankAlarmLED + !DEC$ ATTRIBUTES ALIAS: 'GetTripTankAlarmLED' :: GetTripTankAlarmLED + implicit none + GetTripTankAlarmLED = TripTankAlarmLED + !GetTripTankAlarmLED = 1 + end function + + integer function GetTripTankPumpLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTripTankPumpLED + !DEC$ ATTRIBUTES ALIAS: 'GetTripTankPumpLED' :: GetTripTankPumpLED + implicit none + GetTripTankPumpLED = TripTankPumpLED + end function + + real(8) function GetStandPipePressureGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetStandPipePressureGauge + !DEC$ ATTRIBUTES ALIAS: 'GetStandPipePressureGauge' :: GetStandPipePressureGauge + implicit none + GetStandPipePressureGauge = StandPipePressureGauge + end function + + real(8) function GetCasingPressureGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetCasingPressureGauge + !DEC$ ATTRIBUTES ALIAS: 'GetCasingPressureGauge' :: GetCasingPressureGauge + implicit none + GetCasingPressureGauge = CasingPressureGauge + end function + + real(8) function GetMP1SPMGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMP1SPMGauge + !DEC$ ATTRIBUTES ALIAS: 'GetMP1SPMGauge' :: GetMP1SPMGauge + implicit none + GetMP1SPMGauge = MP1SPMGauge + end function + + real(8) function GetMP2SPMGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMP2SPMGauge + !DEC$ ATTRIBUTES ALIAS: 'GetMP2SPMGauge' :: GetMP2SPMGauge + implicit none + GetMP2SPMGauge = MP2SPMGauge + end function + + real(8) function GetReturnLineTempGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetReturnLineTempGauge + !DEC$ ATTRIBUTES ALIAS: 'GetReturnLineTempGauge' :: GetReturnLineTempGauge + implicit none + GetReturnLineTempGauge = ReturnLineTempGauge + end function + + real(8) function GetRotaryTorqueGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetRotaryTorqueGauge + !DEC$ ATTRIBUTES ALIAS: 'GetRotaryTorqueGauge' :: GetRotaryTorqueGauge + implicit none + GetRotaryTorqueGauge = RotaryTorqueGauge + end function + + real(8) function GetRotaryRPMGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetRotaryRPMGauge + !DEC$ ATTRIBUTES ALIAS: 'GetRotaryRPMGauge' :: GetRotaryRPMGauge + implicit none + GetRotaryRPMGauge = RotaryRPMGauge + end function + + integer function GetAcidGasDetectionLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetAcidGasDetectionLED + !DEC$ ATTRIBUTES ALIAS: 'GetAcidGasDetectionLED' :: GetAcidGasDetectionLED + implicit none + GetAcidGasDetectionLED = AcidGasDetectionLED + end function + + real(8) function GetTotalStrokeCounter() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTotalStrokeCounter + !DEC$ ATTRIBUTES ALIAS: 'GetTotalStrokeCounter' :: GetTotalStrokeCounter + implicit none + GetTotalStrokeCounter = TotalStrokeCounter + !GetTotalStrokeCounter = 456.9 + end function + + real(8) function GetPitGainLossGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetPitGainLossGauge + !DEC$ ATTRIBUTES ALIAS: 'GetPitGainLossGauge' :: GetPitGainLossGauge + implicit none + GetPitGainLossGauge = PitGainLossGauge + !GetPitGainLossGauge = 44 + end function + + real(8) function GetMudTanksVolumeGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMudTanksVolumeGauge + !DEC$ ATTRIBUTES ALIAS: 'GetMudTanksVolumeGauge' :: GetMudTanksVolumeGauge + implicit none + GetMudTanksVolumeGauge = MudTanksVolumeGauge / 42.0 + end function + + integer function GetMVTAlarmLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMVTAlarmLED + !DEC$ ATTRIBUTES ALIAS: 'GetMVTAlarmLED' :: GetMVTAlarmLED + implicit none + GetMVTAlarmLED = MVTAlarmLED + !GetMVTAlarmLED = 1 + end function + + real(8) function GetReturnMudFlowGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetReturnMudFlowGauge + !DEC$ ATTRIBUTES ALIAS: 'GetReturnMudFlowGauge' :: GetReturnMudFlowGauge + implicit none + GetReturnMudFlowGauge = ReturnMudFlowGauge + !GetReturnMudFlowGauge = 12 + end function + + real(8) function GetFillStrokeCounter() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFillStrokeCounter + !DEC$ ATTRIBUTES ALIAS: 'GetFillStrokeCounter' :: GetFillStrokeCounter + implicit none + GetFillStrokeCounter = FillStrokeCounter + end function + + real(8) function GetMFFITotalStrokeCounter() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMFFITotalStrokeCounter + !DEC$ ATTRIBUTES ALIAS: 'GetMFFITotalStrokeCounter' :: GetMFFITotalStrokeCounter + implicit none + GetMFFITotalStrokeCounter = MFFITotalStrokeCounter + end function + + integer function GetMFFIAlarmLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMFFIAlarmLED + !DEC$ ATTRIBUTES ALIAS: 'GetMFFIAlarmLED' :: GetMFFIAlarmLED + implicit none + GetMFFIAlarmLED = MFFIAlarmLED + !GetMFFIAlarmLED = 1 + end function + + integer function GetMFFIPumpLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMFFIPumpLED + !DEC$ ATTRIBUTES ALIAS: 'GetMFFIPumpLED' :: GetMFFIPumpLED + implicit none + GetMFFIPumpLED = MFFIPumpLED + end function + + real(8) function GetTotalWellDepth() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTotalWellDepth + !DEC$ ATTRIBUTES ALIAS: 'GetTotalWellDepth' :: GetTotalWellDepth + implicit none + GetTotalWellDepth = TotalWellDepth + end function + + real(8) function GetBitDepth() + !DEC$ ATTRIBUTES DLLEXPORT :: GetBitDepth + !DEC$ ATTRIBUTES ALIAS: 'GetBitDepth' :: GetBitDepth + implicit none + GetBitDepth = BitDepth + end function + + real(8) function GetHookLoad() + !DEC$ ATTRIBUTES DLLEXPORT :: GetHookLoad + !DEC$ ATTRIBUTES ALIAS: 'GetHookLoad' :: GetHookLoad + implicit none + GetHookLoad = HookLoad + end function + + real(8) function GetStandPipePressure2() + !DEC$ ATTRIBUTES DLLEXPORT :: GetStandPipePressure2 + !DEC$ ATTRIBUTES ALIAS: 'GetStandPipePressure2' :: GetStandPipePressure2 + implicit none + GetStandPipePressure2 = StandPipePressure + end function + + real(8) function GetCasingPressure2() + !DEC$ ATTRIBUTES DLLEXPORT :: GetCasingPressure2 + !DEC$ ATTRIBUTES ALIAS: 'GetCasingPressure2' :: GetCasingPressure2 + implicit none + GetCasingPressure2 = CasingPressure + end function + + real(8) function GetMP1SPM() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMP1SPM + !DEC$ ATTRIBUTES ALIAS: 'GetMP1SPM' :: GetMP1SPM + implicit none + GetMP1SPM = MP1SPM + end function + + real(8) function GetMP2SPM() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMP2SPM + !DEC$ ATTRIBUTES ALIAS: 'GetMP2SPM' :: GetMP2SPM + implicit none + GetMP2SPM = MP2SPM + end function + + real(8) function GetRTTorque() + !DEC$ ATTRIBUTES DLLEXPORT :: GetRTTorque + !DEC$ ATTRIBUTES ALIAS: 'GetRTTorque' :: GetRTTorque + implicit none + GetRTTorque = RTTorque + end function + + real(8) function GetRTRPM() + !DEC$ ATTRIBUTES DLLEXPORT :: GetRTRPM + !DEC$ ATTRIBUTES ALIAS: 'GetRTRPM' :: GetRTRPM + implicit none + GetRTRPM = RTRPM + end function + + real(8) function GetWOP() + !DEC$ ATTRIBUTES DLLEXPORT :: GetWOP + !DEC$ ATTRIBUTES ALIAS: 'GetWOP' :: GetWOP + implicit none + GetWOP = WOP + end function + + real(8) function GetROP() + !DEC$ ATTRIBUTES DLLEXPORT :: GetROP + !DEC$ ATTRIBUTES ALIAS: 'GetROP' :: GetROP + implicit none + GetROP = ROP + end function + + real(8) function GetMudWeightIn() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMudWeightIn + !DEC$ ATTRIBUTES ALIAS: 'GetMudWeightIn' :: GetMudWeightIn + implicit none + GetMudWeightIn = MudWeightIn + end function + + real(8) function GetMudWeightOut() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMudWeightOut + !DEC$ ATTRIBUTES ALIAS: 'GetMudWeightOut' :: GetMudWeightOut + implicit none + GetMudWeightOut = MudWeightOut + end function + + logical function GetBuzzer1() + !DEC$ ATTRIBUTES DLLEXPORT :: GetBuzzer1 + !DEC$ ATTRIBUTES ALIAS: 'GetBuzzer1' :: GetBuzzer1 + implicit none + GetBuzzer1 = Buzzer1 + !GetBuzzer1 = .true. + end function + + logical function GetBuzzer2() + !DEC$ ATTRIBUTES DLLEXPORT :: GetBuzzer2 + !DEC$ ATTRIBUTES ALIAS: 'GetBuzzer2' :: GetBuzzer2 + implicit none + GetBuzzer2 = Buzzer2 + !GetBuzzer2 = .true. + end function + + logical function GetBuzzer3() + !DEC$ ATTRIBUTES DLLEXPORT :: GetBuzzer3 + !DEC$ ATTRIBUTES ALIAS: 'GetBuzzer3' :: GetBuzzer3 + implicit none + GetBuzzer3 = Buzzer3 + !GetBuzzer3 = .true. + end function + + logical function GetBuzzer4() + !DEC$ ATTRIBUTES DLLEXPORT :: GetBuzzer4 + !DEC$ ATTRIBUTES ALIAS: 'GetBuzzer4' :: GetBuzzer4 + implicit none + GetBuzzer4 = Buzzer4 + !GetBuzzer4 = .true. + end function + + + + + + + + + + + !portable + real(8) function GetPortWeightOnBit() + !DEC$ ATTRIBUTES DLLEXPORT :: GetPortWeightOnBit + !DEC$ ATTRIBUTES ALIAS: 'GetPortWeightOnBit' :: GetPortWeightOnBit + implicit none + GetPortWeightOnBit = PortWeightOnBit + end function + + real(8) function GetPortHookLoad() + !DEC$ ATTRIBUTES DLLEXPORT :: GetPortHookLoad + !DEC$ ATTRIBUTES ALIAS: 'GetPortHookLoad' :: GetPortHookLoad + implicit none + GetPortHookLoad = PortHookLoad + end function + + real(8) function GetPortCasingPressure() + !DEC$ ATTRIBUTES DLLEXPORT :: GetPortCasingPressure + !DEC$ ATTRIBUTES ALIAS: 'GetPortCasingPressure' :: GetPortCasingPressure + implicit none + GetPortCasingPressure = PortCasingPressure + end function + + real(8) function GetPortPumpPressure() + !DEC$ ATTRIBUTES DLLEXPORT :: GetPortPumpPressure + !DEC$ ATTRIBUTES ALIAS: 'GetPortPumpPressure' :: GetPortPumpPressure + implicit none + GetPortPumpPressure = PortPumpPressure + end function + + +end module CDataDisplayConsole \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/CDataDisplayConsoleVariables.f90 b/CSharp/Equipments/ControlPanels/CDataDisplayConsoleVariables.f90 new file mode 100644 index 0000000..1bfdd32 --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CDataDisplayConsoleVariables.f90 @@ -0,0 +1,258 @@ +module CDataDisplayConsoleVariables + use CIActionReference + use CDoubleEventHandlerCollection + implicit none + public + + !portable + real(8) :: TripAlarmLow + real(8) :: TripAlarmHigh + real(8) :: RetFlowAlarmLow + real(8) :: RetFlowAlarmHigh + real(8) :: PitAlarmLow + real(8) :: PitAlarmHigh + + real(8) :: PortWeightOnBit + real(8) :: PortHookLoad + real(8) :: PortCasingPressure + real(8) :: PortPumpPressure + + + ! Input vars + real(8) :: TripTankSetAlarmLow + real(8) :: TripTankSetAlarmHigh + integer :: TripTankSetAlarmSwitch + logical :: TripTankPowerSwitch + logical :: TripTankPumpSwitch + logical :: TripTankHornSwitch + logical :: AcidGasDetectionHornSwitch + logical :: TotalStrokeCounterResetSwitch + logical :: DrillingTrippingSelectorSwitch + real(8) :: MVTSetAlarmLowKnob + real(8) :: MVTSetAlarmHighKnob + integer :: MVTSetAlarmSwitch + logical :: MudTank1Switch + logical :: MudTank2Switch + logical :: MudTank3Switch + logical :: MudTank4Switch + real(8) :: MVTFineKnob + real(8) :: MVTCoarseKnob + logical :: MVTHornSwitch + logical :: MVTDeviationTripSelectionSwitch + logical :: MVTPowerSwitch + logical :: MFFIResetTotalStrokes + logical :: MFFIResetFillCounter + integer :: MFFIPumpSelectorSwitch + logical :: MFFIFillSPMSelectorSwitch + real(8) :: MFFISetAlarmLowKnob + real(8) :: MFFISetAlarmHighKnob + integer :: MFFISetAlarmSwitch + logical :: MFFIPowerSwitch + logical :: MFFIHornSwitch + + logical :: ResetWob + logical :: Clutch + + ! Output vars + real(8) :: WOBPointer + real(8) :: HookLoadPointer + real(8) :: TripTankGauge + integer :: TripTankAlarmLED + integer :: TripTankPumpLED + real(8) :: StandPipePressureGauge + real(8) :: CasingPressureGauge + real(8) :: MP1SPMGauge + real(8) :: MP2SPMGauge + real(8) :: ReturnLineTempGauge + real(8) :: RotaryTorqueGauge + real(8) :: RotaryRPMGauge + type(DoubleEventHandlerCollection) :: OnRotaryRpmChange + integer :: AcidGasDetectionLED + real(8) :: TotalStrokeCounter + !real(8) :: TotalStrokeCounter_temp + real(8) :: PitGainLossGauge + real(8) :: MudTanksVolumeGauge + integer :: MVTAlarmLED + real(8) :: ReturnMudFlowGauge + real(8) :: FillStrokeCounter + real(8) :: MFFITotalStrokeCounter + integer :: MFFIAlarmLED + integer :: MFFIPumpLED + real(8) :: TotalWellDepth + real(8) :: BitDepth + real(8) :: HookLoad + real(8) :: StandPipePressure + real(8) :: CasingPressure + real(8) :: MP1SPM + real(8) :: MP2SPM + real(8) :: RTTorque + real(8) :: RTRPM + real(8) :: WOP + real(8) :: ROP + real(8) :: MudWeightIn + real(8) :: MudWeightOut + logical :: Buzzer1 + logical :: Buzzer2 + logical :: Buzzer3 + logical :: Buzzer4 + + ! events + procedure (ActionDualDouble), pointer :: PumpsSpmChanges => null() + + contains + + + subroutine Set_TotalDepth(v) + use CDrillWatchVariables, only: Depth + use CSimulationVariables, only: SetDistanceDrilled + implicit none + real(8), intent(in) :: v + TotalWellDepth = v + Depth = v + call SetDistanceDrilled(v) + end subroutine + + subroutine Set_BitPosition(v) + use CDrillWatchVariables, only: BitPosition + implicit none + real(8), intent(in) :: v + BitDepth = v + BitPosition = v + end subroutine + + subroutine Set_RotaryTorque(v) + use CDrillWatchVariables, only: Torque + implicit none + real(8), intent(in) :: v + RotaryTorqueGauge = v + Torque = v + RTTorque = v + end subroutine + + + subroutine Set_MudWeightIn(v) + use CDrillWatchVariables, only: MudWeightInDw => MudWeightIn + implicit none + real(8), intent(in) :: v + MudWeightIn = v + MudWeightInDw = v + end subroutine + + subroutine Set_MudWeightOut(v) + use CDrillWatchVariables, only: MudWeightOutDw => MudWeightOut + implicit none + real(8), intent(in) :: v + MudWeightOut = v + MudWeightOutDw = v + end subroutine + + subroutine Set_TripTankVolume(v) + use CDrillWatchVariables, only: TripTankVolume + implicit none + real(8), intent(in) :: v + TripTankVolume = v + end subroutine + + subroutine Set_FillVolume(v) + use CDrillWatchVariables, only: FillVolume + implicit none + real(8), intent(in) :: v + FillVolume = v + end subroutine + + + + + + + + + + subroutine Set_HookLoad(v) + use CDrillWatchVariables, only: HookLoadDw => HookLoad + implicit none + real(8), intent(in) :: v + HookLoadPointer = v + HookLoadDw = v * 1000 + HookLoad = v + end subroutine + + subroutine Set_WeightOnBit(v) + use CDrillWatchVariables, only: WeightOnBit + implicit none + real(8), intent(in) :: v + WOBPointer = v + WeightOnBit = v + WOP = v + end subroutine + + subroutine Set_ROP(v) + use CDrillWatchVariables, only: ROPDw => ROP + implicit none + real(8), intent(in) :: v + ROP = v + ROPDw = v + end subroutine + + subroutine Set_CasingPressure(v) + use CDrillWatchVariables, only: CasingPressureDw => CasingPressure + use CChokeControlPanelVariables, only: CasingPressureChoke => CasingPressure + implicit none + real(8), intent(in) :: v + CasingPressureGauge = v + CasingPressureDw = v + CasingPressureChoke = v + CasingPressure = v + end subroutine + + subroutine Set_StandPipePressure(v) + use CDrillWatchVariables, only: PumpPressure + use CChokeControlPanelVariables, only: StandPipePressureChoke => StandPipePressure + implicit none + real(8), intent(in) :: v + StandPipePressureGauge = v + PumpPressure = v + StandPipePressureChoke = v + StandPipePressure = v + + + + end subroutine + + + subroutine Set_RotaryRPMGauge(v) + use CDrillWatchVariables, only: RPM + implicit none + real(8), intent(in) :: v + RotaryRPMGauge = v + RPM = v + RTRPM = v + call OnRotaryRpmChange%RunAll(v) + end subroutine + + + + + subroutine Set_MP1SPMGauge(v) + implicit none + real(8), intent(in) :: v + MP1SPMGauge = v + MP1SPM = v + if(associated(PumpsSpmChanges)) call PumpsSpmChanges(MP1SPMGauge, MP2SPMGauge) +#ifdef deb + print*, 'MP1SPMGauge=', MP1SPMGauge +#endif + end subroutine + + subroutine Set_MP2SPMGauge(v) + implicit none + real(8), intent(in) :: v + MP2SPMGauge = v + MP2SPM = v + if(associated(PumpsSpmChanges)) call PumpsSpmChanges(MP1SPMGauge, MP2SPMGauge) +#ifdef deb + print*, 'MP2SPMGauge=', MP2SPMGauge +#endif + end subroutine + +end module CDataDisplayConsoleVariables \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/CDrillingConsole.f90 b/CSharp/Equipments/ControlPanels/CDrillingConsole.f90 new file mode 100644 index 0000000..08869eb --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CDrillingConsole.f90 @@ -0,0 +1,871 @@ +module CDrillingConsole + use CDrillingConsoleVariables + use CSimulationVariables + use CLog4 + use CLog3 + implicit none + public + contains + + ! Input routines + subroutine SetAssignmentSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAssignmentSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetAssignmentSwitch' :: SetAssignmentSwitch + implicit none + integer, intent(in) :: v + AssignmentSwitch = v +#ifdef deb + call Log_4( 'AssignmentSwitch=', AssignmentSwitch) +#endif + end subroutine + + subroutine SetEmergencySwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetEmergencySwitch + !DEC$ ATTRIBUTES ALIAS: 'SetEmergencySwitch' :: SetEmergencySwitch + implicit none + logical, intent(in) :: v + EmergencySwitch = v +#ifdef deb + print*, 'EmergencySwitch=', EmergencySwitch +#endif + end subroutine + + subroutine SetRTTorqueLimitKnob(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRTTorqueLimitKnob + !DEC$ ATTRIBUTES ALIAS: 'SetRTTorqueLimitKnob' :: SetRTTorqueLimitKnob + implicit none + real*8, intent(in) :: v + RTTorqueLimitKnob = v +#ifdef deb + print*, 'RTTorqueLimitKnob=', RTTorqueLimitKnob +#endif + end subroutine + + subroutine SetMP1CPSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMP1CPSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetMP1CPSwitch' :: SetMP1CPSwitch + implicit none + integer, intent(in) :: v + + if(MP1CPSwitch == v) return + + if(SimulationState == SimulationState_Started) then + MP1CPSwitchI = MP1CPSwitchI + 1 + if(MP1CPSwitchI >= 1) MP1CPSwitch = v + if(MP1CPSwitchI >= 100) MP1CPSwitchI = 1 + !call Log_3( "MP1CPSwitchI=", MP1CPSwitchI) + !call Log_3( "MP1CPSwitch=", MP1CPSwitch) + + !MP1CPSwitch = v + endif +! if(SimulationState == SimulationState_Started) then +! !call Log_3( 'MP1CPSwitc(s)h=', MP1CPSwitch) +! if(MP1CPSwitchT /= v) then +! MP1CPSwitchT = v +! MP1CPSwitch = v +!#ifdef deb +! !print*, 'MP1CPSwitch=', MP1CPSwitch +! !call Log_3( 'MP1CPSwitch=', MP1CPSwitch) +!#endif +! endif +! else +! MP1CPSwitchT = v +! endif + end subroutine + + subroutine SetMP1Throttle(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMP1Throttle + !DEC$ ATTRIBUTES ALIAS: 'SetMP1Throttle' :: SetMP1Throttle + implicit none + real*8, intent(in) :: v + if(MP1Throttle == v) return + if(SimulationState == SimulationState_Started) then + if( abs(v - MP1Throttle) > 0.1) MP1ThrottleUpdate = .true. + if(MP1ThrottleUpdate) MP1Throttle = v + + !call Log_3( 'v-mp1=', v) + !call Log_3( 'MP1Throttle=', MP1Throttle) + !call Log_3( 'MP1ThrottleUpdate=', MP1ThrottleUpdate) + + !MP1Throttle = v + endif +#ifdef deb + print*, 'MP1Throttle=', MP1Throttle +#endif + end subroutine + + subroutine SetMP2Switch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMP2Switch + !DEC$ ATTRIBUTES ALIAS: 'SetMP2Switch' :: SetMP2Switch + implicit none + logical, intent(in) :: v + !call Log_3( 'v=', MP2SwitchT) + + if(MP2Switch == v) return + + if(SimulationState == SimulationState_Started) then + MP2SwitchI = MP2SwitchI + 1 + if(MP2SwitchI >= 1) MP2Switch = v + if(MP2SwitchI >= 100) MP2SwitchI = 1 + !call Log_3( "MP1CPSwitchI=", MP1CPSwitchI) + !call Log_3( "MP2Switch=", MP2Switch) + + !MP2Switch = v + endif + +! if(SimulationState == SimulationState_Started) then +! !call Log_3( 'MP2Switch(s)=', MP2Switch) +! if(MP2SwitchT /= v) then +! MP2SwitchT = v +! MP2Switch = v +!#ifdef deb +! !print*, 'MP2Switch=', MP2Switch +! !call Log_3( 'MP2Switch=', MP2Switch) +!#endif +! endif +! else +! MP2SwitchT = v +! !call Log_3( 'MP2SwitchTMP2SwitchTMP2SwitchT=', MP2SwitchT) +! endif + end subroutine + + subroutine SetMP2Throttle(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMP2Throttle + !DEC$ ATTRIBUTES ALIAS: 'SetMP2Throttle' :: SetMP2Throttle + implicit none + real*8, intent(in) :: v + if(MP2Throttle == v) return + if(SimulationState == SimulationState_Started) then + if( abs(v - MP2Throttle) > 0.1) MP2ThrottleUpdate = .true. + if(MP2ThrottleUpdate) MP2Throttle = v + + !call Log_3( 'v-mp2=', v) + !call Log_3( 'MP2Throttle=', MP2Throttle) + !call Log_3( 'MP2ThrottleUpdate=', MP2ThrottleUpdate) + + !MP2Throttle = v + endif +#ifdef deb + print*, 'MP2Throttle=', MP2Throttle +#endif + end subroutine + + subroutine SetDWSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetDWSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetDWSwitch' :: SetDWSwitch + implicit none + integer, intent(in) :: v + DWSwitch = v +#ifdef deb + print*, 'DWSwitch=', DWSwitch +#endif + end subroutine + + subroutine SetDWThrottle(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetDWThrottle + !DEC$ ATTRIBUTES ALIAS: 'SetDWThrottle' :: SetDWThrottle + implicit none + real*8, intent(in) :: v + DWThrottle = v +#ifdef deb + print*, 'DWThrottle=', DWThrottle +#endif + end subroutine + + subroutine SetRTSwitch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRTSwitch + !DEC$ ATTRIBUTES ALIAS: 'SetRTSwitch' :: SetRTSwitch + implicit none + integer, intent(in) :: v + RTSwitch = v +#ifdef deb + print*, 'RTSwitch=', RTSwitch +#endif + end subroutine + + subroutine SetRTThrottle(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRTThrottle + !DEC$ ATTRIBUTES ALIAS: 'SetRTThrottle' :: SetRTThrottle + implicit none + real*8, intent(in) :: v + RTThrottle = v +#ifdef deb + print*, 'RTThrottle=', RTThrottle +#endif + end subroutine + + subroutine SetDWBreak(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetDWBreak + !DEC$ ATTRIBUTES ALIAS: 'SetDWBreak' :: SetDWBreak + implicit none + real*8, intent(in) :: v + !if(ForceBreak) return + PreviousDWBreak = DWBreak + DWBreak = v +#ifdef deb + print*, 'DWBreak=', DWBreak +#endif + end subroutine + + subroutine SetDWAcceleretor(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetDWAcceleretor + !DEC$ ATTRIBUTES ALIAS: 'SetDWAcceleretor' :: SetDWAcceleretor + implicit none + real*8, intent(in) :: v + DWAcceleretor = v +#ifdef deb + print*, 'DWAcceleretor=', DWAcceleretor +#endif + end subroutine + + subroutine SetDWTransmisionLever(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetDWTransmisionLever + !DEC$ ATTRIBUTES ALIAS: 'SetDWTransmisionLever' :: SetDWTransmisionLever + implicit none + real*8, intent(in) :: v + DWTransmisionLever = v +#ifdef deb + print*, 'DWTransmisionLever=', DWTransmisionLever +#endif + end subroutine + + subroutine SetDWPowerLever(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetDWPowerLever + !DEC$ ATTRIBUTES ALIAS: 'SetDWPowerLever' :: SetDWPowerLever + implicit none + real*8, intent(in) :: v + DWPowerLever = v +#ifdef deb + print*, 'DWPowerLever=', DWPowerLever +#endif + end subroutine + + subroutine SetTongLever(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTongLever + !DEC$ ATTRIBUTES ALIAS: 'SetTongLever' :: SetTongLever + implicit none + real*8, intent(in) :: v + if (TongLever == v) return + TongLever = v + + ! if(dint(TongLever) == 1.0) then + ! call OnBreakoutLeverPress%RunAll() +! #ifdef deb + ! print*, 'OnBreakoutLeverPress=', size(OnBreakoutLeverPress%Delegates) +! #endif + ! endif + ! if(dint(TongLever) == -1.0) then + ! call OnMakeupLeverPress%RunAll() + +! #ifdef deb +! print*, 'OnMakeupPress=', size(OnMakeupLeverPress%Delegates) +! #endif +! endif + ! if(dint(TongLever) == 0.0) then + ! call OnTongNeutralPress%RunAll() +! #ifdef deb +! print*, 'OnTongNeutralPress=', size(OnTongNeutralPress%Delegates) +! #endif +! endif + +#ifdef deb + print*, 'TongLever=', TongLever +#endif + end subroutine + + subroutine SetRTTransmissionLever(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRTTransmissionLever + !DEC$ ATTRIBUTES ALIAS: 'SetRTTransmissionLever' :: SetRTTransmissionLever + implicit none + real*8, intent(in) :: v + RTTransmissionLever = v +#ifdef deb + print*, 'RTTransmissionLever=', RTTransmissionLever +#endif + end subroutine + + subroutine SetDWClutchLever(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetDWClutchLever + !DEC$ ATTRIBUTES ALIAS: 'SetDWClutchLever' :: SetDWClutchLever + implicit none + real*8, intent(in) :: v + DWClutchLever = v +#ifdef deb + print*, 'DWClutchLever=', DWClutchLever +#endif + end subroutine + + subroutine SetEddyBreakLever(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetEddyBreakLever + !DEC$ ATTRIBUTES ALIAS: 'SetEddyBreakLever' :: SetEddyBreakLever + implicit none + real*8, intent(in) :: v + EddyBreakLever = v +#ifdef deb + print*, 'EddyBreakLever=', EddyBreakLever +#endif + end subroutine + + subroutine SetAutoDW(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAutoDW + !DEC$ ATTRIBUTES ALIAS: 'SetAutoDW' :: SetAutoDW + implicit none + logical, intent(in) :: v + AutoDW = v +#ifdef deb + print*, 'AutoDW=', AutoDW +#endif + end subroutine + + subroutine SetGEN1(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetGEN1 + !DEC$ ATTRIBUTES ALIAS: 'SetGEN1' :: SetGEN1 + implicit none + logical, intent(in) :: v + GEN1 = v +#ifdef deb + print*, 'GEN1=', GEN1 +#endif + end subroutine + + subroutine SetGEN2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetGEN2 + !DEC$ ATTRIBUTES ALIAS: 'SetGEN2' :: SetGEN2 + implicit none + logical, intent(in) :: v + GEN2 = v +#ifdef deb + print*, 'GEN2=', GEN2 +#endif + end subroutine + + subroutine SetGEN3(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetGEN3 + !DEC$ ATTRIBUTES ALIAS: 'SetGEN3' :: SetGEN3 + implicit none + logical, intent(in) :: v + GEN3 = v +#ifdef deb + print*, 'GEN3=', GEN3 +#endif + end subroutine + + subroutine SetGEN4(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetGEN4 + !DEC$ ATTRIBUTES ALIAS: 'SetGEN4' :: SetGEN4 + implicit none + logical, intent(in) :: v + GEN4 = v +#ifdef deb + print*, 'GEN4=', GEN4 +#endif + end subroutine + +! subroutine SetInstallSafetyValve(v) +! !DEC$ ATTRIBUTES DLLEXPORT :: SetInstallSafetyValve +! !DEC$ ATTRIBUTES ALIAS: 'SetInstallSafetyValve' :: SetInstallSafetyValve +! implicit none +! logical, intent(in) :: v +! InstallSafetyValve = v +!#ifdef deb +! print*, 'InstallSafetyValve=', InstallSafetyValve +!#endif +! end subroutine +! +! subroutine SetOpenSafetyValve(v) +! !DEC$ ATTRIBUTES DLLEXPORT :: SetOpenSafetyValve +! !DEC$ ATTRIBUTES ALIAS: 'SetOpenSafetyValve' :: SetOpenSafetyValve +! implicit none +! logical, intent(in) :: v +! OpenSafetyValve = v +!#ifdef deb +! print*, 'OpenSafetyValve=', OpenSafetyValve +!#endif +! end subroutine +! +! subroutine SetRemoveSafetyValve(v) +! !DEC$ ATTRIBUTES DLLEXPORT :: SetRemoveSafetyValve +! !DEC$ ATTRIBUTES ALIAS: 'SetRemoveSafetyValve' :: SetRemoveSafetyValve +! implicit none +! logical, intent(in) :: v +! RemoveSafetyValve = v +!#ifdef deb +! print*, 'RemoveSafetyValve=', RemoveSafetyValve +!#endif +! end subroutine +! +! subroutine SetCloseSafetyValve(v) +! !DEC$ ATTRIBUTES DLLEXPORT :: SetCloseSafetyValve +! !DEC$ ATTRIBUTES ALIAS: 'SetCloseSafetyValve' :: SetCloseSafetyValve +! implicit none +! logical, intent(in) :: v +! CloseSafetyValve = v +!#ifdef deb +! print*, 'CloseSafetyValve=', CloseSafetyValve +!#endif +! end subroutine +! +! subroutine SetMakeJoint(v) +! !DEC$ ATTRIBUTES DLLEXPORT :: SetMakeJoint +! !DEC$ ATTRIBUTES ALIAS: 'SetMakeJoint' :: SetMakeJoint +! implicit none +! logical, intent(in) :: v +! MakeJoint = v +!#ifdef deb +! print*, 'MakeJoint=', MakeJoint +!#endif +! end subroutine +! +! subroutine SetBreakJoint(v) +! !DEC$ ATTRIBUTES DLLEXPORT :: SetBreakJoint +! !DEC$ ATTRIBUTES ALIAS: 'SetBreakJoint' :: SetBreakJoint +! implicit none +! logical, intent(in) :: v +! BreakJoint = v +!#ifdef deb +! print*, 'BreakJoint=', BreakJoint +!#endif +! end subroutine + + subroutine SetOpenKellyCock(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetOpenKellyCock + !DEC$ ATTRIBUTES ALIAS: 'SetOpenKellyCock' :: SetOpenKellyCock + use CManifolds, OpenKellyCockSub => OpenKellyCock + implicit none + logical, intent(in) :: v + if (OpenKellyCock == v) return + OpenKellyCock = v + ! if (v) call OnOpenKellyCockPress%RunAll() + if(v .and. Permission_OpenKellyCock) call OpenKellyCockSub() +#ifdef deb + print*, 'OpenKellyCock=', OpenKellyCock +#endif + end subroutine + + subroutine SetCloseKellyCock(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCloseKellyCock + !DEC$ ATTRIBUTES ALIAS: 'SetCloseKellyCock' :: SetCloseKellyCock + use CManifolds, CloseKellyCockSub => CloseKellyCock + implicit none + logical, intent(in) :: v + if (CloseKellyCock == v) return + CloseKellyCock = v + ! if (v) call OnCloseKellyCockPress%RunAll() + if(v .and. Permission_CloseKellyCock) call CloseKellyCockSub() +#ifdef deb + print*, 'CloseKellyCock=', CloseKellyCock +#endif + end subroutine + + subroutine SetOpenSafetyValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetOpenSafetyValve + !DEC$ ATTRIBUTES ALIAS: 'SetOpenSafetyValve' :: SetOpenSafetyValve + !use CManifolds, OpenSafetyValveSub => OpenSafetyValve + implicit none + logical, intent(in) :: v + if (OpenSafetyValve == v) return + OpenSafetyValve = v + ! if (v) call OnOpenSafetyValvePress%RunAll() + !if(v .and. Permission_OpenSafetyValve) call OpenSafetyValveSub() +#ifdef deb + print*, 'OpenSafetyValve=', OpenSafetyValve +#endif + end subroutine + + subroutine SetCloseSafetyValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCloseSafetyValve + !DEC$ ATTRIBUTES ALIAS: 'SetCloseSafetyValve' :: SetCloseSafetyValve + !use CManifolds, CloseSafetyValveSub => CloseSafetyValve + implicit none + logical, intent(in) :: v + if (CloseSafetyValve == v) return + CloseSafetyValve = v + ! if (v) call OnCloseSafetyValvePress%RunAll() + !if(v .and. Permission_CloseSafetyValve) call CloseSafetyValveSub() +#ifdef deb + print*, 'CloseSafetyValve=', CloseSafetyValve +#endif + end subroutine + + subroutine SetIRSafetyValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetIRSafetyValve + !DEC$ ATTRIBUTES ALIAS: 'SetIRSafetyValve' :: SetIRSafetyValve + use CManifolds + implicit none + logical, intent(in) :: v + logical :: prev + if (IRSafetyValve == v) return + prev = IRSafetyValve + IRSafetyValve = v + ! if (v) call OnIRSafetyValvePress%RunAll() + !if(prev /= IRSafetyValve .and. v .and. Permission_IRSafetyValve) call ToggleSafetyValve() + !if(prev /= IRSafetyValve .and. v) call ToggleSafetyValve() +#ifdef deb + print*, 'IRSafetyValve=', IRSafetyValve +#endif + end subroutine + + subroutine SetIRIBop(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetIRIBop + !DEC$ ATTRIBUTES ALIAS: 'SetIRIBop' :: SetIRIBop + use CManifolds + implicit none + logical, intent(in) :: v + logical :: prev + if (IRIBop == v) return + prev = IRIBop + IRIBop = v + ! if (v) call OnIRIBopPress%RunAll() + !if(prev /= IRIBop .and. v .and. Permission_IRIBop) call ToggleIBop() + !if(prev /= IRIBop .and. v) call ToggleIBop() +#ifdef deb + print*, 'IRIBop=', IRIBop +#endif + end subroutine + + + + subroutine SetLatchPipe(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLatchPipe + !DEC$ ATTRIBUTES ALIAS: 'SetLatchPipe' :: SetLatchPipe + implicit none + logical, intent(in) :: v + if (LatchPipe .eqv. v) return + LatchPipe = v + ! if (v) call OnLatchPipePress%RunAll() +#ifdef deb + print*, 'LatchPipe=', LatchPipe +#endif + end subroutine + + subroutine SetUnlatchPipe(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetUnlatchPipe + !DEC$ ATTRIBUTES ALIAS: 'SetUnlatchPipe' :: SetUnlatchPipe + implicit none + logical, intent(in) :: v + if (UnlatchPipe .eqv. v) return + UnlatchPipe = v + ! if (v) call OnUnlatchPipePress%RunAll() +#ifdef deb + print*, 'UnlatchPipe=', UnlatchPipe +#endif + end subroutine + + subroutine SetSwing(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetSwing + !DEC$ ATTRIBUTES ALIAS: 'SetSwing' :: SetSwing + implicit none + logical, intent(in) :: v + if (Swing .eqv. v) return + Swing = v + ! if (v) call OnSwingPress%RunAll() +#ifdef deb + print*, 'Swing=', Swing +#endif + end subroutine + + subroutine SetFillMouseHole(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetFillMouseHole + !DEC$ ATTRIBUTES ALIAS: 'SetFillMouseHole' :: SetFillMouseHole + implicit none + logical, intent(in) :: v + if (FillMouseHole .eqv. v) return + FillMouseHole = v + ! if (v) call OnFillMouseHolePress%RunAll() +#ifdef deb + print*, 'FillMouseHole=', FillMouseHole +#endif + end subroutine + + subroutine SetSlips(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetSlips + !DEC$ ATTRIBUTES ALIAS: 'SetSlips' :: SetSlips + implicit none + logical, intent(in) :: v + if (Slips .eqv. v) return + Slips = v +#ifdef deb + print*, 'Slips=', Slips +#endif + ! if (v) call OnSlipsPress%RunAll() + end subroutine + + + subroutine SetBrakeLeverCoefficient(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetBrakeLeverCoefficient + !DEC$ ATTRIBUTES ALIAS: 'SetBrakeLeverCoefficient' :: SetBrakeLeverCoefficient + implicit none + real, intent(in) :: v + BrakeLeverCoefficient = v +#ifdef deb + print*, 'BrakeLeverCoefficient=', BrakeLeverCoefficient +#endif + end subroutine + + subroutine SetHideDrillingBrake(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetHideDrillingBrake + !DEC$ ATTRIBUTES ALIAS: 'SetHideDrillingBrake' :: SetHideDrillingBrake + implicit none + logical, intent(in) :: v + HideDrillingBrake = v +#ifdef deb + print*, 'HideDrillingBrake=', HideDrillingBrake +#endif + end subroutine + + + + + + + + + subroutine SetParkingBrake(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetParkingBrake + !DEC$ ATTRIBUTES ALIAS: 'SetParkingBrake' :: SetParkingBrake + implicit none + logical, intent(in) :: v + ParkingBrakeBtn = v +#ifdef deb + print*, 'ParkingBrakeBtn=', ParkingBrakeBtn +#endif + end subroutine + + + + + + + + + + + + + ! Output routines + + logical function GetParkingBrakeLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetParkingBrakeLed + !DEC$ ATTRIBUTES ALIAS: 'GetParkingBrakeLed' :: GetParkingBrakeLed + implicit none + GetParkingBrakeLed = ParkingBrakeLed + !GetParkingBrakeLed = .true. + end function + + + integer function GetGEN1LED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetGEN1LED + !DEC$ ATTRIBUTES ALIAS: 'GetGEN1LED' :: GetGEN1LED + implicit none + GetGEN1LED = 1 + !GetGEN1LED = GEN1LED + end function + + integer function GetGEN2LED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetGEN2LED + !DEC$ ATTRIBUTES ALIAS: 'GetGEN2LED' :: GetGEN2LED + implicit none + GetGEN2LED = 1 + !GetGEN2LED = GEN2LED + end function + + integer function GetGEN3LED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetGEN3LED + !DEC$ ATTRIBUTES ALIAS: 'GetGEN3LED' :: GetGEN3LED + implicit none + GetGEN3LED = 1 + !GetGEN3LED = GEN3LED + end function + + integer function GetGEN4LED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetGEN4LED + !DEC$ ATTRIBUTES ALIAS: 'GetGEN4LED' :: GetGEN4LED + implicit none + GetGEN4LED = 1 + !GetGEN4LED = GEN4LED + end function + + integer function GetSCR1LED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSCR1LED + !DEC$ ATTRIBUTES ALIAS: 'GetSCR1LED' :: GetSCR1LED + implicit none + GetSCR1LED = SCR1LED + end function + + integer function GetSCR2LED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSCR2LED + !DEC$ ATTRIBUTES ALIAS: 'GetSCR2LED' :: GetSCR2LED + implicit none + GetSCR2LED = SCR2LED + end function + + integer function GetSCR3LED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSCR3LED + !DEC$ ATTRIBUTES ALIAS: 'GetSCR3LED' :: GetSCR3LED + implicit none + GetSCR3LED = SCR3LED + end function + + integer function GetSCR4LED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSCR4LED + !DEC$ ATTRIBUTES ALIAS: 'GetSCR4LED' :: GetSCR4LED + implicit none + GetSCR4LED = SCR4LED + end function + + integer function GetMP1BLWR() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMP1BLWR + !DEC$ ATTRIBUTES ALIAS: 'GetMP1BLWR' :: GetMP1BLWR + implicit none + GetMP1BLWR = MP1BLWR + end function + + integer function GetMP2BLWR() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMP2BLWR + !DEC$ ATTRIBUTES ALIAS: 'GetMP2BLWR' :: GetMP2BLWR + implicit none + GetMP2BLWR = MP2BLWR + end function + + integer function GetDWBLWR() + !DEC$ ATTRIBUTES DLLEXPORT :: GetDWBLWR + !DEC$ ATTRIBUTES ALIAS: 'GetDWBLWR' :: GetDWBLWR + implicit none + GetDWBLWR = DWBLWR + end function + + integer function GetRTBLWR() + !DEC$ ATTRIBUTES DLLEXPORT :: GetRTBLWR + !DEC$ ATTRIBUTES ALIAS: 'GetRTBLWR' :: GetRTBLWR + implicit none + GetRTBLWR = RTBLWR + end function + + integer function GetPWRLIM() + !DEC$ ATTRIBUTES DLLEXPORT :: GetPWRLIM + !DEC$ ATTRIBUTES ALIAS: 'GetPWRLIM' :: GetPWRLIM + implicit none + GetPWRLIM = PWRLIM + end function + + real(8) function GetPWRLIMMTR() + !DEC$ ATTRIBUTES DLLEXPORT :: GetPWRLIMMTR + !DEC$ ATTRIBUTES ALIAS: 'GetPWRLIMMTR' :: GetPWRLIMMTR + implicit none + GetPWRLIMMTR = PWRLIMMTR + end function + + real(8) function GetRTTorqueLimitGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetRTTorqueLimitGauge + !DEC$ ATTRIBUTES ALIAS: 'GetRTTorqueLimitGauge' :: GetRTTorqueLimitGauge + implicit none + GetRTTorqueLimitGauge = RTTorqueLimitGauge + end function + + integer function GetAutoDWLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetAutoDWLED + !DEC$ ATTRIBUTES ALIAS: 'GetAutoDWLED' :: GetAutoDWLED + implicit none + GetAutoDWLED = AutoDWLED + end function + + integer function GetGEN1BTNLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetGEN1BTNLED + !DEC$ ATTRIBUTES ALIAS: 'GetGEN1BTNLED' :: GetGEN1BTNLED + implicit none + GetGEN1BTNLED = GEN1BTNLED + end function + + integer function GetGEN2BTNLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetGEN2BTNLED + !DEC$ ATTRIBUTES ALIAS: 'GetGEN2BTNLED' :: GetGEN2BTNLED + implicit none + GetGEN2BTNLED = GEN2BTNLED + end function + + integer function GetGEN3BTNLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetGEN3BTNLED + !DEC$ ATTRIBUTES ALIAS: 'GetGEN3BTNLED' :: GetGEN3BTNLED + implicit none + GetGEN3BTNLED = GEN3BTNLED + end function + + integer function GetGEN4BTNLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetGEN4BTNLED + !DEC$ ATTRIBUTES ALIAS: 'GetGEN4BTNLED' :: GetGEN4BTNLED + implicit none + GetGEN4BTNLED = GEN4BTNLED + end function + + integer function GetOpenKellyCockLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetOpenKellyCockLed + !DEC$ ATTRIBUTES ALIAS: 'GetOpenKellyCockLed' :: GetOpenKellyCockLed + implicit none + GetOpenKellyCockLed = OpenKellyCockLed + end function + + integer function GetCloseKellyCockLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetCloseKellyCockLed + !DEC$ ATTRIBUTES ALIAS: 'GetCloseKellyCockLed' :: GetCloseKellyCockLed + implicit none + GetCloseKellyCockLed = CloseKellyCockLed + end function + + integer function GetOpenSafetyValveLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetOpenSafetyValveLed + !DEC$ ATTRIBUTES ALIAS: 'GetOpenSafetyValveLed' :: GetOpenSafetyValveLed + implicit none + GetOpenSafetyValveLed = OpenSafetyValveLed + end function + + integer function GetCloseSafetyValveLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetCloseSafetyValveLed + !DEC$ ATTRIBUTES ALIAS: 'GetCloseSafetyValveLed' :: GetCloseSafetyValveLed + implicit none + GetCloseSafetyValveLed = CloseSafetyValveLed + end function + + integer function GetIRSafetyValveLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetIRSafetyValveLed + !DEC$ ATTRIBUTES ALIAS: 'GetIRSafetyValveLed' :: GetIRSafetyValveLed + implicit none + GetIRSafetyValveLed = IRSafetyValveLed + end function + + integer function GetIRIBopLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetIRIBopLed + !DEC$ ATTRIBUTES ALIAS: 'GetIRIBopLed' :: GetIRIBopLed + implicit none + GetIRIBopLed = IRIBopLed + end function + + + integer function GetLatchPipeLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetLatchPipeLED + !DEC$ ATTRIBUTES ALIAS: 'GetLatchPipeLED' :: GetLatchPipeLED + implicit none + GetLatchPipeLED = LatchPipeLED + end function + + integer function GetUnlatchPipeLED() + !DEC$ ATTRIBUTES DLLEXPORT :: GetUnlatchPipeLED + !DEC$ ATTRIBUTES ALIAS: 'GetUnlatchPipeLED' :: GetUnlatchPipeLED + implicit none + GetUnlatchPipeLED = UnlatchPipeLED + end function + + integer function GetSwingLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSwingLed + !DEC$ ATTRIBUTES ALIAS: 'GetSwingLed' :: GetSwingLed + implicit none + GetSwingLed = SwingLed + end function + + integer function GetFillMouseHoleLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFillMouseHoleLed + !DEC$ ATTRIBUTES ALIAS: 'GetFillMouseHoleLed' :: GetFillMouseHoleLed + implicit none + GetFillMouseHoleLed = FillMouseHoleLed + end function + +end module CDrillingConsole \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/CDrillingConsoleVariables.f90 b/CSharp/Equipments/ControlPanels/CDrillingConsoleVariables.f90 new file mode 100644 index 0000000..1f8a56d --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CDrillingConsoleVariables.f90 @@ -0,0 +1,132 @@ +module CDrillingConsoleVariables + use CVoidEventHandlerCollection + implicit none + public + + ! Input vars + integer :: AssignmentSwitch + logical :: EmergencySwitch + real(8) :: RTTorqueLimitKnob + integer :: MP1CPSwitchI = 0 !for not turning on pump1 on simulation start + integer :: MP1CPSwitchT !for not turning on pump1 on simulation start + integer :: MP1CPSwitch + logical :: MP1ThrottleUpdate = .false. + real(8) :: MP1Throttle = -1.0 + integer :: MP2SwitchI = 0 !for not turning on pump2 on simulation start + logical :: MP2SwitchT !for not turning on pump2 on simulation start + logical :: MP2Switch + logical :: MP2ThrottleUpdate = .false. + real(8) :: MP2Throttle = -1.0 + integer :: DWSwitch + real(8) :: DWThrottle + integer :: RTSwitch + real(8) :: RTThrottle + + real(8) :: DWBreak + real(8) :: PreviousDWBreak + logical :: ForceBreak = .false. + + real(8) :: DWAcceleretor + real(8) :: DWTransmisionLever + real(8) :: DWPowerLever + + real(8) :: TongLever + ! type(VoidEventHandlerCollection) :: OnBreakoutLeverPress + ! type(VoidEventHandlerCollection) :: OnMakeupLeverPress + ! type(VoidEventHandlerCollection) :: OnTongNeutralPress + + real(8) :: RTTransmissionLever + real(8) :: DWClutchLever + real(8) :: EddyBreakLever + logical :: AutoDW + logical :: GEN1 + logical :: GEN2 + logical :: GEN3 + logical :: GEN4 + logical :: Permission_OpenKellyCock = .false. + logical :: OpenKellyCock + ! type(VoidEventHandlerCollection) :: OnOpenKellyCockPress + + logical :: Permission_CloseKellyCock = .false. + logical :: CloseKellyCock + ! type(VoidEventHandlerCollection) :: OnCloseKellyCockPress + + logical :: Permission_OpenSafetyValve = .false. + logical :: OpenSafetyValve + ! typeVoidEventHandlerCollection) :: OnOpenSafetyValvePress + + logical :: Permission_CloseSafetyValve = .false. + logical :: CloseSafetyValve + ! typeVoidEventHandlerCollection) :: OnCloseSafetyValvePress + + logical :: Permission_IRSafetyValve = .false. + logical :: IRSafetyValve + ! typeVoidEventHandlerCollection) :: OnIRSafetyValvePress + + logical :: Permission_IRIBop = .false. + logical :: IRIBop + ! typeVoidEventHandlerCollection) :: OnIRIBopPress + + logical :: LatchPipe + ! typeVoidEventHandlerCollection) :: OnLatchPipePress + + logical :: UnlatchPipe + ! typeVoidEventHandlerCollection) :: OnUnlatchPipePress + + logical :: Swing + ! typeVoidEventHandlerCollection) :: OnSwingPress + + logical :: FillMouseHole + ! typeVoidEventHandlerCollection) :: OnFillMouseHolePress + + logical :: Slips + ! typeVoidEventHandlerCollection) :: OnSlipsPress + + !logical :: TopDriveIBop + ! + !logical :: TopDriveDrillTorque + !integer :: TopDriveRevOffFwd + !integer :: TopDriveDrillOffTilt + + real :: BrakeLeverCoefficient + logical :: HideDrillingBrake + + logical :: ParkingBrakeBtn + + ! Output vars + logical :: ParkingBrakeLed + integer :: GEN1LED + integer :: GEN2LED + integer :: GEN3LED + integer :: GEN4LED + integer :: SCR1LED + integer :: SCR2LED + integer :: SCR3LED + integer :: SCR4LED + integer :: MP1BLWR + integer :: MP2BLWR + integer :: DWBLWR + integer :: RTBLWR + integer :: PWRLIM + real(8) :: PWRLIMMTR + real(8) :: RTTorqueLimitGauge + integer :: AutoDWLED + integer :: GEN1BTNLED + integer :: GEN2BTNLED + integer :: GEN3BTNLED + integer :: GEN4BTNLED + integer :: OpenKellyCockLed + integer :: CloseKellyCockLed + integer :: OpenSafetyValveLed + integer :: CloseSafetyValveLed + integer :: IRSafetyValveLed + integer :: IRIBopLed + + integer :: LatchPipeLED + integer :: UnlatchPipeLED + integer :: SwingLed + integer :: FillMouseHoleLed + + + contains +end module CDrillingConsoleVariables \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/CEquipmentsConstants.f90 b/CSharp/Equipments/ControlPanels/CEquipmentsConstants.f90 new file mode 100644 index 0000000..7e5ab31 --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CEquipmentsConstants.f90 @@ -0,0 +1,11 @@ +module CEquipmentsConstants + implicit none + public + + ! LED State Types + integer :: LedOff = 0 + integer :: LedOn = 1 + integer :: LedBlinking = 2 + + contains +end module CEquipmentsConstants \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/CHook.f90 b/CSharp/Equipments/ControlPanels/CHook.f90 new file mode 100644 index 0000000..1804d5a --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CHook.f90 @@ -0,0 +1,6 @@ +module CHook + use CHookVariables + implicit none + public + contains + end module CHook diff --git a/CSharp/Equipments/ControlPanels/CHookActions.f90 b/CSharp/Equipments/ControlPanels/CHookActions.f90 new file mode 100644 index 0000000..5632712 --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CHookActions.f90 @@ -0,0 +1,16 @@ +module CHookActions + use CIActionReference + implicit none + public + procedure (ActionReal), pointer :: HookHeightPtr + contains + + subroutine SubscribeHookHeight(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeHookHeight + !DEC$ ATTRIBUTES ALIAS: 'SubscribeHookHeight' :: SubscribeHookHeight + implicit none + procedure (ActionReal) :: a + HookHeightPtr => a + end subroutine + +end module CHookActions \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/CHookVariables.f90 b/CSharp/Equipments/ControlPanels/CHookVariables.f90 new file mode 100644 index 0000000..06222ad --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CHookVariables.f90 @@ -0,0 +1,79 @@ +module CHookVariables + use CRealEventHandlerCollection + use CHookActions + implicit none + public + + real :: HookHeight_S = 0.0 + real :: HookHeight + type(RealEventHandlerCollection) :: OnHookHeightChange + + contains + + subroutine Set_HookHeight(v) + use CDrillingConsoleVariables + implicit none + real , intent(in) :: v + +#ifdef ExcludeExtraChanges + if(HookHeight == v) return +#endif + HookHeight = v + + if(associated(HookHeightPtr)) then + call HookHeightPtr(HookHeight) + end if + +#ifdef deb + print*, 'HookHeight=', HookHeight +#endif + + call OnHookHeightChange%RunAll(HookHeight) + end subroutine + + + subroutine Set_HookHeight_S(v) + implicit none + real , intent(in) :: v + + if(v == HookHeight) then + return + elseif (v > HookHeight) then + loop1: do + call Set_HookHeight(HookHeight + 0.2) + if(abs(v - HookHeight) <= 0.1) then + call Set_HookHeight(v) + exit loop1 + endif + call sleepqq(100) + enddo loop1 + else ! v < HookHeight + loop2: do + call Set_HookHeight(HookHeight - 0.2) + if(abs(HookHeight - v) <= 0.1) then + call Set_HookHeight(v) + exit loop2 + endif + call sleepqq(100) + enddo loop2 + endif + + end subroutine + + + subroutine Set_HookHeight_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_HookHeight_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_HookHeight_WN' :: Set_HookHeight_WN + implicit none + real , intent(in) :: v + !call Set_HookHeight(v) + HookHeight_S = v + end subroutine + + + subroutine Update_HookHeight_From_Snapshot() + implicit none + call Set_HookHeight_S(HookHeight_S) + end subroutine + +end module CHookVariables \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/CStandPipeManifold.f90 b/CSharp/Equipments/ControlPanels/CStandPipeManifold.f90 new file mode 100644 index 0000000..97d1b4a --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CStandPipeManifold.f90 @@ -0,0 +1,206 @@ +module CStandPipeManifold + use CStandPipeManifoldVariables + 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 + StandPipeManifoldValve1 = v + call ChangeValve(13, v) +#ifdef deb + print*, 'StandPipeManifoldValve1=', StandPipeManifoldValve1 +#endif + end subroutine + + subroutine SetStandPipeManifoldValve2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve2 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve2' :: SetStandPipeManifoldValve2 + implicit none + logical, intent(in) :: v + StandPipeManifoldValve2 = v + call ChangeValve(14, v) +#ifdef deb + print*, 'StandPipeManifoldValve2=', StandPipeManifoldValve2 +#endif + end subroutine + + subroutine SetStandPipeManifoldValve3(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve3 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve3' :: SetStandPipeManifoldValve3 + implicit none + logical, intent(in) :: v + StandPipeManifoldValve3 = v + call ChangeValve(15, v) +#ifdef deb + print*, 'StandPipeManifoldValve3=', StandPipeManifoldValve3 +#endif + end subroutine + + subroutine SetStandPipeManifoldValve4(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve4 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve4' :: SetStandPipeManifoldValve4 + implicit none + logical, intent(in) :: v + StandPipeManifoldValve4 = v + call ChangeValve(11, v) +#ifdef deb + print*, 'StandPipeManifoldValve4=', StandPipeManifoldValve4 +#endif + end subroutine + + subroutine SetStandPipeManifoldValve5(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve5 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve5' :: SetStandPipeManifoldValve5 + implicit none + logical, intent(in) :: v + StandPipeManifoldValve5 = v + call ChangeValve(12, v) +#ifdef deb + print*, 'StandPipeManifoldValve5=', StandPipeManifoldValve5 +#endif + end subroutine + + subroutine SetStandPipeManifoldValve6(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve6 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve6' :: SetStandPipeManifoldValve6 + implicit none + logical, intent(in) :: v + StandPipeManifoldValve6 = v + call ChangeValve(9, v) +#ifdef deb + print*, 'StandPipeManifoldValve6=', StandPipeManifoldValve6 +#endif + end subroutine + + subroutine SetStandPipeManifoldValve7(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve7 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve7' :: SetStandPipeManifoldValve7 + implicit none + logical, intent(in) :: v + StandPipeManifoldValve7 = v + call ChangeValve(10, v) +#ifdef deb + print*, 'StandPipeManifoldValve7=', StandPipeManifoldValve7 +#endif + end subroutine + + subroutine SetStandPipeManifoldValve8(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve8 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve8' :: SetStandPipeManifoldValve8 + implicit none + logical, intent(in) :: v + StandPipeManifoldValve8 = v + call ChangeValve(6, v) +#ifdef deb + print*, 'StandPipeManifoldValve8=', StandPipeManifoldValve8 +#endif + end subroutine + + subroutine SetStandPipeManifoldValve9(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve9 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve9' :: SetStandPipeManifoldValve9 + implicit none + logical, intent(in) :: v + StandPipeManifoldValve9 = v + call ChangeValve(7, v) +#ifdef deb + print*, 'StandPipeManifoldValve9=', StandPipeManifoldValve9 +#endif + end subroutine + + subroutine SetStandPipeManifoldValve10(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve10 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve10' :: SetStandPipeManifoldValve10 + implicit none + logical, intent(in) :: v + StandPipeManifoldValve10 = v + call ChangeValve(8, v) +#ifdef deb + print*, 'StandPipeManifoldValve10=', StandPipeManifoldValve10 +#endif + end subroutine + + subroutine SetStandPipeManifoldValve11(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve11 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve11' :: SetStandPipeManifoldValve11 + implicit none + logical, intent(in) :: v + StandPipeManifoldValve11 = v + call ChangeValve(1, v) +#ifdef deb + print*, 'StandPipeManifoldValve11=', StandPipeManifoldValve11 +#endif + end subroutine + + subroutine SetStandPipeManifoldValve12(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve12 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve12' :: SetStandPipeManifoldValve12 + implicit none + logical, intent(in) :: v + StandPipeManifoldValve12 = v + call ChangeValve(2, v) +#ifdef deb + print*, 'StandPipeManifoldValve12=', StandPipeManifoldValve12 +#endif + end subroutine + + subroutine SetStandPipeManifoldValve13(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve13 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve13' :: SetStandPipeManifoldValve13 + implicit none + logical, intent(in) :: v + StandPipeManifoldValve13 = v + call ChangeValve(3, v) +#ifdef deb + print*, 'StandPipeManifoldValve13=', StandPipeManifoldValve13 +#endif + end subroutine + + subroutine SetStandPipeManifoldValve14(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve14 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve14' :: SetStandPipeManifoldValve14 + implicit none + logical, intent(in) :: v + StandPipeManifoldValve14 = v + call ChangeValve(4, v) +#ifdef deb + print*, 'StandPipeManifoldValve14=', StandPipeManifoldValve14 +#endif + end subroutine + + subroutine SetStandPipeManifoldValve15(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipeManifoldValve15 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipeManifoldValve15' :: SetStandPipeManifoldValve15 + implicit none + logical, intent(in) :: v + StandPipeManifoldValve15 = v + call ChangeValve(5, v) +#ifdef deb + print*, 'StandPipeManifoldValve15=', StandPipeManifoldValve15 +#endif + end subroutine + + ! Output routines + real(8) function GetStandPipeGauge1() + !DEC$ ATTRIBUTES DLLEXPORT :: GetStandPipeGauge1 + !DEC$ ATTRIBUTES ALIAS: 'GetStandPipeGauge1' :: GetStandPipeGauge1 + implicit none + GetStandPipeGauge1 = StandPipeGauge1 + !GetStandPipeGauge1 = 567.4 + end function + + real(8) function GetStandPipeGauge2() + !DEC$ ATTRIBUTES DLLEXPORT :: GetStandPipeGauge2 + !DEC$ ATTRIBUTES ALIAS: 'GetStandPipeGauge2' :: GetStandPipeGauge2 + implicit none + GetStandPipeGauge2 = StandPipeGauge2 + !GetStandPipeGauge2 = 1564.0 + end function + +end module CStandPipeManifold \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/CStandPipeManifoldVariables.f90 b/CSharp/Equipments/ControlPanels/CStandPipeManifoldVariables.f90 new file mode 100644 index 0000000..cbab48f --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CStandPipeManifoldVariables.f90 @@ -0,0 +1,27 @@ +module CStandPipeManifoldVariables + implicit none + public + + ! Input vars + logical :: StandPipeManifoldValve1 + logical :: StandPipeManifoldValve2 + logical :: StandPipeManifoldValve3 + logical :: StandPipeManifoldValve4 + logical :: StandPipeManifoldValve5 + logical :: StandPipeManifoldValve6 + logical :: StandPipeManifoldValve7 + logical :: StandPipeManifoldValve8 + logical :: StandPipeManifoldValve9 + logical :: StandPipeManifoldValve10 + logical :: StandPipeManifoldValve11 + logical :: StandPipeManifoldValve12 + logical :: StandPipeManifoldValve13 + logical :: StandPipeManifoldValve14 + logical :: StandPipeManifoldValve15 + + ! Output vars + real(8) :: StandPipeGauge1 + real(8) :: StandPipeGauge2 + + contains +end module CStandPipeManifoldVariables \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/CTopDrivePanel.f90 b/CSharp/Equipments/ControlPanels/CTopDrivePanel.f90 new file mode 100644 index 0000000..413a3e7 --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CTopDrivePanel.f90 @@ -0,0 +1,211 @@ +module CTopDrivePanel + use CTopDrivePanelVariables + 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 + TopDriveTdsPowerState = v +#ifdef deb + call Log_3( 'TopDriveTdsPowerState=', TopDriveTdsPowerState) +#endif + end subroutine + + subroutine SetTopDriveTorqueWrench(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveTorqueWrench + !DEC$ ATTRIBUTES ALIAS: 'SetTopDriveTorqueWrench' :: SetTopDriveTorqueWrench + implicit none + logical, intent(in) :: v + TopDriveTorqueWrench = v +#ifdef deb + call Log_3( 'TopDriveTorqueWrench=', TopDriveTorqueWrench) +#endif + end subroutine + + subroutine SetTopDriveDrillTorqueState(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveDrillTorqueState + !DEC$ ATTRIBUTES ALIAS: 'SetTopDriveDrillTorqueState' :: SetTopDriveDrillTorqueState + implicit none + integer, intent(in) :: v + TopDriveDrillTorqueState = v +#ifdef deb + call Log_3( 'TopDriveDrillTorqueState=', TopDriveDrillTorqueState) +#endif + end subroutine + + subroutine SetTopDriveLinkTiltState(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveLinkTiltState + !DEC$ ATTRIBUTES ALIAS: 'SetTopDriveLinkTiltState' :: SetTopDriveLinkTiltState + implicit none + integer, intent(in) :: v + TopDriveLinkTiltState = v +#ifdef deb + call Log_3( 'TopDriveLinkTiltState=', TopDriveLinkTiltState) +#endif + end subroutine + + subroutine SetTopDriveIbop(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveIbop + !DEC$ ATTRIBUTES ALIAS: 'SetTopDriveIbop' :: SetTopDriveIbop + implicit none + logical, intent(in) :: v + TopDriveIbop = v +#ifdef deb + call Log_3( 'TopDriveIbop=', TopDriveIbop) +#endif + end subroutine + + subroutine SetTopDriveTorqueLimitKnob(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTopDriveTorqueLimitKnob + !DEC$ ATTRIBUTES ALIAS: 'SetTopDriveTorqueLimitKnob' :: SetTopDriveTorqueLimitKnob + use CSimulationVariables, only: IsPortable + use CDrillingConsoleVariables, only: RTSwitch, RTTorqueLimitKnob + use CWarningsVariables, only: Activate_TopdriveRotaryTableConfilict + use CScaleRange + implicit none + real, intent(in) :: v + if (IsPortable) then + if(TopDriveTdsPowerState /= 0 .and. RTSwitch /= 0) call Activate_TopdriveRotaryTableConfilict() + if(TopDriveTdsPowerState /= 0 .and. RTSwitch == 0) then + RTTorqueLimitKnob = 0 + TopDriveTorqueLimitKnob = v +#ifdef deb + call Log_3( 'RTTorqueLimitKnob=', RTTorqueLimitKnob ) + call Log_3( 'TopDriveTorqueLimitKnob=', TopDriveTorqueLimitKnob ) +#endif + endif + if(TopDriveTdsPowerState == 0 .and. RTSwitch /= 0) then + TopDriveTorqueLimitKnob = 0 + RTTorqueLimitKnob = real(ScaleRange(v, 0.0, 10.0, 0.0, 6000.0), 8) +#ifdef deb + call Log_3( 'RTTorqueLimitKnob=', RTTorqueLimitKnob ) + call Log_3( 'TopDriveTorqueLimitKnob=', TopDriveTorqueLimitKnob ) +#endif + endif + else + TopDriveTorqueLimitKnob = v +#ifdef deb + call Log_3( 'TopDriveTorqueLimitKnob=', TopDriveTorqueLimitKnob) +#endif + endif + + end subroutine + + subroutine SetRpmKnob(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRpmKnob + !DEC$ ATTRIBUTES ALIAS: 'SetRpmKnob' :: SetRpmKnob + use CSimulationVariables, only: IsPortable + use CDrillingConsoleVariables, only: RTSwitch, RTThrottle + use CWarningsVariables, only: Activate_TopdriveRotaryTableConfilict + use CScaleRange + implicit none + real, intent(in) :: v + if (IsPortable) then + if(TopDriveTdsPowerState /= 0 .and. RTSwitch /= 0) call Activate_TopdriveRotaryTableConfilict() + if(TopDriveTdsPowerState /= 0 .and. RTSwitch == 0) then + RTThrottle = 0 + RpmKnob = v +#ifdef deb + call Log_3( 'RTThrottle=', RTThrottle ) + call Log_3( 'RpmKnob=', RpmKnob ) +#endif + endif + if(TopDriveTdsPowerState == 0 .and. RTSwitch /= 0) then + RpmKnob = 0 + RTThrottle = real(ScaleRange(v, 0.0, 965.0, 0.0, 250.0), 8) +#ifdef deb + call Log_3( 'RpmKnob=', RpmKnob ) + call Log_3( 'RTThrottle=', RTThrottle ) +#endif + endif + else + RpmKnob = v + endif + + + + if (IsPortable) then + ! + else + RpmKnob = v +#ifdef deb + call Log_3( 'RpmKnob=', RpmKnob ) +#endif + endif + + end subroutine + + + ! Output routines + integer function GetTopDriveOperationFaultLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveOperationFaultLed + !DEC$ ATTRIBUTES ALIAS: 'GetTopDriveOperationFaultLed' :: GetTopDriveOperationFaultLed + implicit none + GetTopDriveOperationFaultLed = TopDriveOperationFaultLed + !GetTopDriveOperationFaultLed = 1 + end function + + integer function GetTopDriveTdsPowerLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveTdsPowerLed + !DEC$ ATTRIBUTES ALIAS: 'GetTopDriveTdsPowerLed' :: GetTopDriveTdsPowerLed + implicit none + GetTopDriveTdsPowerLed = TopDriveTdsPowerLed + !GetTopDriveTdsPowerLed = 1 + end function + + integer function GetTopDriveTorqueWrenchLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveTorqueWrenchLed + !DEC$ ATTRIBUTES ALIAS: 'GetTopDriveTorqueWrenchLed' :: GetTopDriveTorqueWrenchLed + implicit none + GetTopDriveTorqueWrenchLed = TopDriveTorqueWrenchLed + !GetTopDriveTorqueWrenchLed = 1 + end function + + integer function GetTopDriveLinkTiltLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveLinkTiltLed + !DEC$ ATTRIBUTES ALIAS: 'GetTopDriveLinkTiltLed' :: GetTopDriveLinkTiltLed + implicit none + GetTopDriveLinkTiltLed = TopDriveLinkTiltLed + !GetTopDriveLinkTiltLed = 1 + end function + + integer function GetTopDriveIbopLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveIbopLed + !DEC$ ATTRIBUTES ALIAS: 'GetTopDriveIbopLed' :: GetTopDriveIbopLed + implicit none + GetTopDriveIbopLed = TopDriveIbopLed + !GetTopDriveIbopLed = 1 + end function + + real function GetTopDriveTorqueGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveTorqueGauge + !DEC$ ATTRIBUTES ALIAS: 'GetTopDriveTorqueGauge' :: GetTopDriveTorqueGauge + implicit none + GetTopDriveTorqueGauge = TopDriveTorqueGauge + !GetTopDriveTorqueGauge = 340 + end function + + real function GetTopDriveTorqueLimitGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveTorqueLimitGauge + !DEC$ ATTRIBUTES ALIAS: 'GetTopDriveTorqueLimitGauge' :: GetTopDriveTorqueLimitGauge + implicit none + GetTopDriveTorqueLimitGauge = TopDriveTorqueLimitGauge + !GetTopDriveTorqueLimitGauge = 442 + end function + + real function GetTopDriveRpmGauge() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTopDriveRpmGauge + !DEC$ ATTRIBUTES ALIAS: 'GetTopDriveRpmGauge' :: GetTopDriveRpmGauge + implicit none + GetTopDriveRpmGauge = TopDriveRpmGauge + !GetTopDriveRpmGauge = 67 + end function + + + end module CTopDrivePanel diff --git a/CSharp/Equipments/ControlPanels/CTopDrivePanelVariables.f90 b/CSharp/Equipments/ControlPanels/CTopDrivePanelVariables.f90 new file mode 100644 index 0000000..a6fc0a0 --- /dev/null +++ b/CSharp/Equipments/ControlPanels/CTopDrivePanelVariables.f90 @@ -0,0 +1,43 @@ +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 + 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 + + contains + end module CTopDrivePanelVariables \ No newline at end of file diff --git a/CSharp/Equipments/ControlPanels/cequipmentsconstants.mod b/CSharp/Equipments/ControlPanels/cequipmentsconstants.mod new file mode 100644 index 0000000000000000000000000000000000000000..4214a04d8da348b0e9c4f2a9e65b50c439e1d711 GIT binary patch literal 312 zcmV-80muFyiwFP!000001I?1bQiCuMhVOZby#a?hX$uFvA!3IS0s|B;To8hykkkPB z`a&t7P8lyAI!Pw`?`AXK?(FW~^+R7LQ1PrSDSS{-7o35#)+9&;O&Xd(E_em$P3#H& zO4Fu}qrh@vLO+9|YRjbQ5)3YAYy>ZfIK<|ATO2CNx`zg5jo_u1Fj{tMj&y;#Njl>y zzs5+G75I;hMngfJdFE_DO6dfVju6tKTY@#nvg6+EZ4>Ru192b8$|9jjLKvmzyT&M{ z8v`C#zB&3ee$qo8Jp(eH%jh%F7NnA9Pi4X03ikXLU!?n%erucXlMtOHv>ea23@cm( zdSuR=eag=CK|PUjfbab)`i356(;&X~<~pn)>!4A`y_if;+ZlF% zW?Im{zXjUzu*cP8V|wC?uA=3mQq*hkb2OPvdJYcQI`JvqQNHz9h&8>b;T5NDOxJkB zS%6pH7h}%;&{e!$%%}F#!lC=A7bLzL!-hWNbkU!_xjb4}ABh(QG=vlTEQ~qx$8Jb{ zSj|}U$h{rS)^nG8?$W2*Z<{VbwOSqjk2ewrbp(f!kAbyS%%XM55v3eE!J%E!XjsR! z+SBOqd1#?$=a)13?L64d%yMQ}EXR{kUo1|)1d{_%L6E-0pQNanJxmzL$U>j@kdYd|B?D_Ev;Q9Uys8>Bf*H{#l zEPCNN>XdNZbC;FQphECBWH*D z_ti~a?`7;_0gNgIuoShCql(z9yhEGk%wNEvn+57DmniKQttzeW1zxN)a$AagWA}Mi z;!c%#&uO@NQ#xfET{*PsQ6n9ieU3-4QJPQ@+$ao!2sZP13rUABr?CdXE$Iw_;I^by zC%A(o9WlY(O5aIv-ijXEI}qumE(&h_*jE*r6_7QmJpstfYUvHKCc04Jg1%KPBth1e z)N7MTANBOd5m)vbl_ e0_wBqBc5f@b*ftnj|`~0b@Uf1vdjj-761U Init + procedure :: IsConnectedTo => IsConnectedTo + procedure :: IsSource => IsSource + procedure :: Length => Length + procedure :: AdjacentTo => AdjacentTo + procedure :: RemoveAdjacent => RemoveAdjacent + end type Arrangement + contains + + subroutine Init(this, value) + implicit none + class(Arrangement), intent(inout) :: this + integer, intent(in) :: value + if(allocated(this%Adjacent)) deallocate(this%Adjacent) + this%Status = .false. + this%IsTraversed = .false. + this%ValveType = Normal + this%Number = value + end subroutine + + integer function Length(this) + implicit none + class(Arrangement), intent(in) :: this + if(allocated(this%Adjacent)) then + Length = size(this%Adjacent) + return + end if + Length = 0 + end function + + subroutine AdjacentTo(this, value) + implicit none + class(Arrangement), intent(inout) :: this + integer, intent(in) :: value + integer, allocatable :: tempArr(:) + integer :: i, isize + + if(allocated(this%Adjacent)) then + isize = size(this%Adjacent) + + ! check to see if already AdjacentTo that valve# + do i=1,isize + if(this%Adjacent(i)==value) return + end do + + ! if value is a new entry then add it to the collection + allocate(tempArr(isize+1)) + do i=1,isize + tempArr(i) = this%Adjacent(i) + end do + tempArr(isize+1) = value + deallocate(this%Adjacent) + call move_alloc(tempArr, this%Adjacent) + else + allocate(this%Adjacent(1)) + this%Adjacent(1) = value + end if + end subroutine + + logical function IsConnectedTo(this, value) + implicit none + class(Arrangement), intent(in) :: this + integer, intent(in) :: value + if(.not.allocated(this%Adjacent)) then + IsConnectedTo = .false. + return + endif + IsConnectedTo = any(this%Adjacent == value) + return + end function + + logical function IsSource(this) + implicit none + class(Arrangement), intent(in) :: this + IsSource = this%ValveType > Relation + end function + + + + subroutine RemoveAdjacent(this, value) + implicit none + class(Arrangement), intent(inout) :: this + integer, intent(in) :: value + integer, allocatable :: tempArr(:) + integer :: i, index, isize + logical :: found + + if(.not.allocated(this%Adjacent))return + index = -1 + do i=1, size(this%Adjacent) + if(this%Adjacent(i)==value) then + index = i + exit + end if + end do + + if(index <= 0 .or. index > size(this%Adjacent)) return + + allocate(tempArr(size(this%Adjacent)-1)) + found = .false. + do i=1, size(this%Adjacent) + if(i==index) then + found = .true. + cycle + end if + if(found) then + tempArr(i-1) = this%Adjacent(i) + else + tempArr(i) = this%Adjacent(i) + endif + end do + deallocate(this%Adjacent) + call move_alloc(tempArr, this%Adjacent) + + + end subroutine + + +end module CArrangement \ No newline at end of file diff --git a/CSharp/Equipments/MudPathFinding/CManifolds.f90 b/CSharp/Equipments/MudPathFinding/CManifolds.f90 new file mode 100644 index 0000000..57e0959 --- /dev/null +++ b/CSharp/Equipments/MudPathFinding/CManifolds.f90 @@ -0,0 +1,1389 @@ +module CManifolds + use CStack + use CArrangement + use CPathChangeEvents + use CDrillingConsoleVariables, only: IRSafetyValveLed, IRIBopLed, OpenKellyCockLed, CloseKellyCockLed, OpenSafetyValveLed, CloseSafetyValveLed + implicit none + + public + integer, parameter :: ValveCount = 128 + integer, parameter :: MinSource = 71 + integer, parameter :: MaxSource = 90 + integer, parameter :: MinRelation = 91 + integer, parameter :: MaxRelation = 128 + type(Arrangement) :: Valve(ValveCount) + type(Path), allocatable :: OpenPaths(:) + type(Stack) :: Fringe + logical :: IsRepititveOutput + + logical :: IsSafetyValveInstalled + logical :: IsSafetyValveInstalled_KellyMode + logical :: IsSafetyValveInstalled_TripMode + logical :: IsSafetyValveInstalled_TopDrive + logical :: SafetyValve + logical :: IsIBopInstalled + logical :: IBop + logical :: IsKellyCockInstalled + logical :: KellyCock + logical :: IsTopDriveIBopInstalled + logical :: TopDriveIBop + logical :: IsFloatValveInstalled + logical :: FloatValve + + logical :: IsPathsDirty = .false. + + logical :: IsTraverse = .false. + + contains + + subroutine PathFinding_Setup() + use CSimulationVariables + implicit none + IsTraverse = .false. + call Setup() + !call OnSimulationInitialization%Add(PathFinding_Init) + !call OnSimulationStop%Add(PathFinding_Init) + !call OnPathFindingStep%Add(PathFinding_Step) + !call OnPathFindingOutput%Add(PathFinding_Output) + call OnPathFindingMain%Add(PathFindingMainBody) + end subroutine + + subroutine PathFinding_Init + implicit none + IsTraverse = .false. + call Setup() + end subroutine PathFinding_Init + + subroutine PathFinding_Step + implicit none + end subroutine PathFinding_Step + + subroutine PathFinding_Output + implicit none + end subroutine PathFinding_Output + + subroutine PathFindingMainBody + use CSimulationVariables + implicit none + loop : do + if(IsStopped) call Quit() + call sleepqq(50) + if (IsPathsDirty) then + IsPathsDirty = .false. + call Traverse() + endif + end do loop + end subroutine PathFindingMainBody + + subroutine Traverse() + use CLog5 + implicit none + integer :: i, Duration + integer, dimension(8) :: StartTime,EndTime !TODO: clean up + call DATE_AND_TIME(values=StartTime) !TODO: clean up + + call BeforeTraverse%RunAll() + + + if(allocated(OpenPaths)) deallocate(OpenPaths) + do i=MinSource, MaxSource + if(IsValveOpen(i)) then + call AddRootNode(i) + call AddChildren(Valve(i)) + endif + enddo + + call PostProcess(OpenPaths) + + call AfterTraverse%RunAll() + + IsTraverse = .true. + + !TODO: clean up +#ifdef Log5 + CALL DATE_AND_TIME(values=EndTime) + Duration= EndTime(8) - StartTime(8) + !print*, 'Duration= ', Duration, 'ms' + call Log_5('Duration= ', Duration) + call DisplayOpenPaths() + + call Log_5('==========================================') +#endif + + endsubroutine + + subroutine PostProcess(pathArr) + implicit none + type(Path), allocatable, intent(inout) :: pathArr(:) + integer :: i + + if(.not.allocated(pathArr)) return + + i = 1 + do + call pathArr(i)%Purge(MinRelation, MaxRelation) + + if(pathArr(i)%Length() <= 2) then + call RemovePath(pathArr, i) + else + i = i + 1 + endif + + if(i > size(pathArr)) exit + enddo + + end subroutine + + subroutine AddRootNode(valve) + implicit none + integer, intent(in) :: valve + call Fringe%Push(valve) + end subroutine + + recursive subroutine AddChildren(node) + implicit none + type(Arrangement), intent(inout) :: node + integer :: i,t + + do i=1, Valve(node%Number)%Length() + t = Valve(node%Number)%Adjacent(i) + + if(IsValveOpen(t)) then + + if(Fringe%DoesHave(t)) cycle + + call Fringe%Push(t) + + if(Valve(t)%IsSource()) then + call AddPath(OpenPaths, Fringe%List) + call Fringe%Pop() + cycle + endif + + call AddChildren(Valve(node%Adjacent(i))) + + end if + enddo + call Fringe%Pop() + end subroutine + + logical function IsValveOpen(no) + implicit none + integer, intent(in) :: no + + IsValveOpen = Valve(no)%Status + + end function + + subroutine AddPath(pathArr, p) + implicit none + type(Path), intent(in) :: p + type(Path), allocatable, intent(inout) :: pathArr(:) + type(Path), allocatable :: tempArr(:) + integer :: i, isize + + if(p%IsNull()) return + if(p%Length()<=1) return + + call OnPathOpen%RunAll(p%Valves) + + if(allocated(pathArr)) then + isize = size(pathArr) + + + ! check to see if already have a path same as p + do i=1,isize + if(pathArr(i)%First()==p%First() .and. pathArr(i)%Last()==p%Last()) then + ! if there is then + ! check to see if both have exacly a same length + if(pathArr(i)%Length()==p%Length())then + ! now they are the same so ignore adding this one + return + else + !if they have different lengths then choose the shorter one + if(pathArr(i)%Length()>p%Length())pathArr(i) = p + return + endif + + endif + end do + + + + !TODO: if p last valve is input source then ignore adding it + !TODO: if p start valve is output source then ignore adding it + + + + ! if p is a new entry then add it to the collections of found paths + allocate(tempArr(isize+1)) + do i=1,isize + tempArr(i) = pathArr(i) + end do + tempArr(isize+1) = p + deallocate(pathArr) + call move_alloc(tempArr, pathArr) + else + allocate(pathArr(1)) + pathArr(1) = p + end if + + endsubroutine + + subroutine RemovePath(pathArr, index) + implicit none + integer, intent(in) :: index + type(Path), allocatable, intent(inout) :: pathArr(:) + type(Path), allocatable :: tempArr(:) + integer :: i + logical :: found + + if(index <= 0 .or. index > size(pathArr)) return + if(.not.allocated(pathArr))return + allocate(tempArr(size(pathArr)-1)) + found = .false. + do i=1, size(pathArr) + if(i==index) then + found = .true. + cycle + end if + if(found) then + tempArr(i-1) = pathArr(i) + !call OnPathClose%RunAll(pathArr(i)%Valves) + else + tempArr(i) = pathArr(i) + endif + end do + deallocate(pathArr) + call move_alloc(tempArr, pathArr) + + endsubroutine + + subroutine Setup() + implicit none + integer :: i + + ! initialize all valves + do i = 1, ValveCount + call Valve(i)%init(i) + end do + + ! open source valves + do i = MinSource , MaxSource + Valve(i)%Status = .true. + Valve(i)%ValveType = InputOutput + end do + + do i = MinRelation , MaxRelation + Valve(i)%Status = .true. + Valve(i)%ValveType = Relation + end do + + + + ! make adjustments + call Valve(1)%AdjacentTo(91) + + call Valve(2)%AdjacentTo(92) + call Valve(2)%AdjacentTo(117) + + call Valve(3)%AdjacentTo(93) + call Valve(3)%AdjacentTo(118) + + call Valve(4)%AdjacentTo(94) + + call Valve(5)%AdjacentTo(95) + + call Valve(6)%AdjacentTo(91) + call Valve(6)%AdjacentTo(92) + + call Valve(7)%AdjacentTo(92) + call Valve(7)%AdjacentTo(93) + + call Valve(8)%AdjacentTo(93) + call Valve(8)%AdjacentTo(94) + + call Valve(9)%AdjacentTo(91) + call Valve(9)%AdjacentTo(96) + + call Valve(10)%AdjacentTo(94) + call Valve(10)%AdjacentTo(98) + + call Valve(11)%AdjacentTo(96) + call Valve(11)%AdjacentTo(97) + + call Valve(12)%AdjacentTo(97) + call Valve(12)%AdjacentTo(98) + + call Valve(13)%AdjacentTo(96) + call Valve(13)%AdjacentTo(99) + + call Valve(14)%AdjacentTo(78) + call Valve(14)%AdjacentTo(97) + !call Valve(14)%AdjacentTo(126) + + call Valve(15)%AdjacentTo(98) + call Valve(15)%AdjacentTo(99) + + call Valve(16)%AdjacentTo(121) + !call Valve(16)%AdjacentTo() + + call Valve(17)%AdjacentTo(122) + !call Valve(17)%AdjacentTo() + + call Valve(18)%AdjacentTo(123) + !call Valve(18)%AdjacentTo() + + call Valve(19)%AdjacentTo(101) + call Valve(19)%AdjacentTo(102) + + call Valve(20)%AdjacentTo(100) + + call Valve(21)%AdjacentTo(101) + + call Valve(22)%AdjacentTo(102) + + call Valve(23)%AdjacentTo(71) + + call Valve(24)%AdjacentTo(71) + + call Valve(25)%AdjacentTo(108) + call Valve(25)%AdjacentTo(118) + + call Valve(26)%AdjacentTo(109) + call Valve(26)%AdjacentTo(117) + + call Valve(27)%AdjacentTo(32) + call Valve(27)%AdjacentTo(108) + + call Valve(28)%AdjacentTo(33) + call Valve(28)%AdjacentTo(108) + + call Valve(29)%AdjacentTo(110) + call Valve(29)%AdjacentTo(113) + + call Valve(30)%AdjacentTo(34) + call Valve(30)%AdjacentTo(109) + + call Valve(31)%AdjacentTo(35) + call Valve(31)%AdjacentTo(109) + + call Valve(32)%AdjacentTo(27) + call Valve(32)%AdjacentTo(61) + + call Valve(33)%AdjacentTo(28) + call Valve(33)%AdjacentTo(62) + + call Valve(34)%AdjacentTo(30) + call Valve(34)%AdjacentTo(63) + + call Valve(35)%AdjacentTo(31) + call Valve(35)%AdjacentTo(64) + + call Valve(36)%AdjacentTo(116) + + call Valve(37)%AdjacentTo(78) + + call Valve(38)%AdjacentTo(71) + + call Valve(39)%AdjacentTo(77) + + !call Valve(40)%AdjacentTo(105) + call Valve(40)%AdjacentTo(80) + + call Valve(41)%AdjacentTo(77) + + call Valve(42)%AdjacentTo(71) + + call Valve(43)%AdjacentTo(106) + + call Valve(44)%AdjacentTo(77) + + call Valve(45)%AdjacentTo(71) + + call Valve(46)%AdjacentTo(104) + + call Valve(47)%AdjacentTo(104) + call Valve(47)%AdjacentTo(117) + + call Valve(48)%AdjacentTo(69) + call Valve(48)%AdjacentTo(79) + + call Valve(49)%AdjacentTo(104) + call Valve(49)%AdjacentTo(79) + + !call Valve(50)%AdjacentTo(48) + call Valve(50)%AdjacentTo(51) + !call Valve(50)%AdjacentTo(54) + call Valve(50)%AdjacentTo(104) + + call Valve(51)%AdjacentTo(50) + call Valve(51)%AdjacentTo(52) + + call Valve(52)%AdjacentTo(51) + !call Valve(52)%AdjacentTo(127) + call Valve(52)%AdjacentTo(80) + + !call Valve(53)%AdjacentTo(103) + !call Valve(53)%AdjacentTo(105) + call Valve(53)%AdjacentTo(80) + + !call Valve(54)%AdjacentTo(69) + !call Valve(54)%AdjacentTo(124) + + !call Valve(55)%AdjacentTo(103) + !call Valve(55)%AdjacentTo(124) + + call Valve(56)%AdjacentTo(128) + call Valve(56)%AdjacentTo(127) + + !call Valve(57)%AdjacentTo(14) + !call Valve(57)%AdjacentTo(103) + !call Valve(57)%AdjacentTo(126) + + call Valve(58)%AdjacentTo(78) + + call Valve(59)%AdjacentTo(78) + + call Valve(60)%AdjacentTo(78) + + call Valve(61)%AdjacentTo(32) + call Valve(61)%AdjacentTo(115) + + call Valve(62)%AdjacentTo(33) + call Valve(62)%AdjacentTo(114) + + call Valve(63)%AdjacentTo(112) + call Valve(63)%AdjacentTo(34) + + call Valve(64)%AdjacentTo(35) + call Valve(64)%AdjacentTo(111) + + call Valve(65)%AdjacentTo(120) + + call Valve(66)%AdjacentTo(120) + + call Valve(67)%AdjacentTo(73) + + call Valve(68)%AdjacentTo(125) + call Valve(68)%AdjacentTo(126) + + call Valve(69)%AdjacentTo(48) + call Valve(69)%AdjacentTo(124) + + !call Valve(70)%AdjacentTo() + !call Valve(70)%AdjacentTo() + + call Valve(71)%AdjacentTo(20) + call Valve(71)%AdjacentTo(44) + call Valve(71)%AdjacentTo(59) + + call Valve(72)%AdjacentTo(21) + call Valve(72)%AdjacentTo(23) + + call Valve(73)%AdjacentTo(22) + + call Valve(74)%AdjacentTo(24) + + !call Valve(75)%AdjacentTo() + + !call Valve(76)%AdjacentTo() + + call Valve(77)%AdjacentTo(43) + call Valve(77)%AdjacentTo(58) + + !call Valve(78)%AdjacentTo() + + call Valve(79)%AdjacentTo(48) + call Valve(79)%AdjacentTo(49) + + call Valve(80)%AdjacentTo(52) + call Valve(80)%AdjacentTo(107) + + call Valve(81)%AdjacentTo(53) + + call Valve(82)%AdjacentTo(16) + + call Valve(83)%AdjacentTo(17) + + call Valve(84)%AdjacentTo(18) + + !call Valve(85)%AdjacentTo() + + !call Valve(86)%AdjacentTo() + + !call Valve(87)%AdjacentTo() + + !call Valve(88)%AdjacentTo() + + !!call Valve(89)%AdjacentTo() + + !call Valve(90)%AdjacentTo() + + call Valve(91)%AdjacentTo(6) + call Valve(91)%AdjacentTo(9) + call Valve(91)%AdjacentTo(75) + + call Valve(92)%AdjacentTo(6) + call Valve(92)%AdjacentTo(7) + call Valve(92)%AdjacentTo(2) + + call Valve(93)%AdjacentTo(3) + call Valve(93)%AdjacentTo(7) + call Valve(93)%AdjacentTo(8) + + call Valve(94)%AdjacentTo(8) + call Valve(94)%AdjacentTo(10) + call Valve(94)%AdjacentTo(95) + + call Valve(95)%AdjacentTo(76) + call Valve(95)%AdjacentTo(94) + + call Valve(96)%AdjacentTo(9) + call Valve(96)%AdjacentTo(11) + call Valve(96)%AdjacentTo(13) + + call Valve(97)%AdjacentTo(11) + call Valve(97)%AdjacentTo(12) + call Valve(97)%AdjacentTo(14) + + call Valve(98)%AdjacentTo(10) + call Valve(98)%AdjacentTo(12) + call Valve(98)%AdjacentTo(15) + + call Valve(99)%AdjacentTo(13) + call Valve(99)%AdjacentTo(15) + call Valve(99)%AdjacentTo(125) + + !call Valve(100)%AdjacentTo(16) + call Valve(100)%AdjacentTo(82) + call Valve(100)%AdjacentTo(101) + + !call Valve(101)%AdjacentTo(17) + call Valve(101)%AdjacentTo(19) + call Valve(101)%AdjacentTo(83) + call Valve(101)%AdjacentTo(100) + + !call Valve(102)%AdjacentTo(18) + call Valve(102)%AdjacentTo(19) + call Valve(102)%AdjacentTo(84) + + !call Valve(103)%AdjacentTo(53) + !call Valve(103)%AdjacentTo(56) + call Valve(103)%AdjacentTo(124) + !call Valve(103)%AdjacentTo(56) + !call Valve(103)%AdjacentTo(78) + + call Valve(104)%AdjacentTo(46) + call Valve(104)%AdjacentTo(47) + call Valve(104)%AdjacentTo(49) + call Valve(104)%AdjacentTo(50) + + !call Valve(105)%AdjacentTo(53) + !call Valve(105)%AdjacentTo(107) + !call Valve(105)%AdjacentTo(127) + + call Valve(106)%AdjacentTo(40) + call Valve(106)%AdjacentTo(45) + + + call Valve(107)%AdjacentTo(41) + !call Valve(107)%AdjacentTo(105) + call Valve(107)%AdjacentTo(119) + !call Valve(107)%AdjacentTo(42) + + call Valve(108)%AdjacentTo(25) + call Valve(108)%AdjacentTo(27) + call Valve(108)%AdjacentTo(28) + call Valve(108)%AdjacentTo(110) + + call Valve(109)%AdjacentTo(26) + call Valve(109)%AdjacentTo(30) + call Valve(109)%AdjacentTo(31) + call Valve(109)%AdjacentTo(110) + + call Valve(110)%AdjacentTo(29) + call Valve(110)%AdjacentTo(85) + call Valve(110)%AdjacentTo(108) + call Valve(110)%AdjacentTo(109) + + call Valve(111)%AdjacentTo(37) + call Valve(111)%AdjacentTo(64) + call Valve(111)%AdjacentTo(112) + + call Valve(112)%AdjacentTo(63) + call Valve(112)%AdjacentTo(111) + call Valve(112)%AdjacentTo(113) + + call Valve(113)%AdjacentTo(29) + call Valve(113)%AdjacentTo(112) + call Valve(113)%AdjacentTo(114) + + call Valve(114)%AdjacentTo(62) + call Valve(114)%AdjacentTo(113) + call Valve(114)%AdjacentTo(115) + + call Valve(115)%AdjacentTo(36) + call Valve(115)%AdjacentTo(61) + call Valve(115)%AdjacentTo(114) + + call Valve(116)%AdjacentTo(38) + call Valve(116)%AdjacentTo(39) + + call Valve(117)%AdjacentTo(2) + call Valve(117)%AdjacentTo(26) + call Valve(117)%AdjacentTo(47) + + call Valve(118)%AdjacentTo(3) + call Valve(118)%AdjacentTo(25) + call Valve(118)%AdjacentTo(46) + + call Valve(119)%AdjacentTo(42) + call Valve(119)%AdjacentTo(60) + call Valve(119)%AdjacentTo(107) + + call Valve(120)%AdjacentTo(71) + + !call Valve(121)%AdjacentTo(16) + call Valve(121)%AdjacentTo(1) + call Valve(121)%AdjacentTo(65) + + !call Valve(122)%AdjacentTo(17) + call Valve(122)%AdjacentTo(4) + call Valve(122)%AdjacentTo(66) + + !call Valve(123)%AdjacentTo(18) + call Valve(123)%AdjacentTo(5) + call Valve(123)%AdjacentTo(67) + + !call Valve(124)%AdjacentTo(54) + !call Valve(124)%AdjacentTo(55) + call Valve(124)%AdjacentTo(69) + call Valve(124)%AdjacentTo(103) + + call Valve(125)%AdjacentTo(68) + call Valve(125)%AdjacentTo(99) + ! call Valve(125)%AdjacentTo(126) + + call Valve(126)%AdjacentTo(128) + call Valve(126)%AdjacentTo(68) + !call Valve(126)%AdjacentTo(125) + + call Valve(127)%AdjacentTo(56) + call Valve(127)%AdjacentTo(78) + !call Valve(127)%AdjacentTo(105) + + call Valve(128)%AdjacentTo(56) + call Valve(128)%AdjacentTo(126) + + + ! initialization + call ChangeValve(60, .true.) + call RemoveIBop() + call ToggleFillupHead(.false.) + call ToggleMudBox(.false.) + call RemoveTopDriveIBop() + call InstallSafetyValve_KellyMode() + call KellyDisconnected() + end subroutine + + + + subroutine KellyConnected() + !use CLog3 + implicit none + + call Valve(127)%RemoveAdjacent(78) + + call Valve(127)%AdjacentTo(103) + call Valve(103)%AdjacentTo(127) + +#ifdef deb + print*, 'KellyConnected()' + !call Log_3( 'KellyConnected()') +#endif + IsPathsDirty = .true. + end subroutine + + subroutine KellyDisconnected() + !use CLog3 + implicit none + + call Valve(127)%RemoveAdjacent(103) + call Valve(103)%RemoveAdjacent(127) + + call Valve(127)%AdjacentTo(78) + +#ifdef deb + print*, 'KellyDisconnected()' + !call Log_3( 'KellyDisconnected()') +#endif + + IsPathsDirty = .true. + + end subroutine + + + + + + + + + + subroutine InstallSafetyValve_KellyMode() + implicit none + IsSafetyValveInstalled_KellyMode = .true. + + call RemoveTopDriveIBop() + + ! Remove Safey Valve (54) + call Valve(124)%RemoveAdjacent(54) + call Valve(54)%RemoveAdjacent(124) + + call Valve(69)%RemoveAdjacent(54) + call Valve(54)%RemoveAdjacent(69) + + ! Remove 126-103 cnn + call Valve(128)%RemoveAdjacent(127) + call Valve(127)%RemoveAdjacent(128) + + ! now make cnn + call Valve(124)%AdjacentTo(69) + call Valve(69)%AdjacentTo(124) + + call Valve(128)%AdjacentTo(56) + + call Valve(56)%AdjacentTo(128) + call Valve(56)%AdjacentTo(127) + + call Valve(127)%AdjacentTo(56) + +#ifdef deb + print*, 'InstallSafetyValve_KellyMode()' +#endif + + IRSafetyValveLed = 1 + call OpenSafetyValve_KellyMode() + end subroutine + + subroutine RemoveSafetyValve_KellyMode() + implicit none + IsSafetyValveInstalled_KellyMode = .false. + + call Valve(128)%RemoveAdjacent(56) + call Valve(56)%RemoveAdjacent(128) + + call Valve(127)%RemoveAdjacent(56) + call Valve(56)%RemoveAdjacent(127) + + call Valve(127)%AdjacentTo(128) + call Valve(128)%AdjacentTo(127) + + IRSafetyValveLed = 0 + call CloseSafetyValve_KellyMode() + OpenSafetyValveLed = 0 + CloseSafetyValveLed = 0 + +#ifdef deb + print*, 'RemoveSafetyValve_KellyMode()' +#endif + + end subroutine + + subroutine OpenSafetyValve_KellyMode() + implicit none + if(.not.IsSafetyValveInstalled_KellyMode) return + OpenSafetyValveLed = 1 + CloseSafetyValveLed = 0 + SafetyValve = .true. + call ChangeValve(56, SafetyValve) + +#ifdef deb + print*, 'OpenSafetyValve_KellyMode()' +#endif + + end subroutine + + subroutine CloseSafetyValve_KellyMode() + implicit none + if(.not.IsSafetyValveInstalled_KellyMode) return + CloseSafetyValveLed = 1 + OpenSafetyValveLed = 0 + SafetyValve = .false. + call ChangeValve(56, SafetyValve) + +#ifdef deb + print*, 'CloseSafetyValve_KellyMode()' +#endif + + end subroutine + + + + + + + + + + + subroutine InstallSafetyValve_TripMode() + implicit none + IsSafetyValveInstalled_TripMode = .true. + + call Valve(128)%RemoveAdjacent(56) + call Valve(56)%RemoveAdjacent(128) + + call Valve(127)%RemoveAdjacent(56) + call Valve(56)%RemoveAdjacent(127) + + call Valve(69)%RemoveAdjacent(124) + call Valve(124)%RemoveAdjacent(69) + + + call Valve(127)%AdjacentTo(128) + call Valve(128)%AdjacentTo(127) + + call Valve(124)%AdjacentTo(54) + call Valve(54)%AdjacentTo(124) + + call Valve(54)%AdjacentTo(69) + call Valve(69)%AdjacentTo(54) + + IRSafetyValveLed = 1 + call OpenSafetyValve_TripMode() + +#ifdef deb + print*, 'InstallSafetyValve_TripMode()' +#endif + + end subroutine + + subroutine RemoveSafetyValve_TripMode() + implicit none + IsSafetyValveInstalled_TripMode = .false. + + call Valve(124)%RemoveAdjacent(54) + call Valve(54)%RemoveAdjacent(124) + + call Valve(54)%RemoveAdjacent(69) + call Valve(69)%RemoveAdjacent(54) + + call Valve(124)%AdjacentTo(69) + call Valve(69)%AdjacentTo(124) + + IRSafetyValveLed = 0 + call CloseSafetyValve_TripMode() + OpenSafetyValveLed = 0 + CloseSafetyValveLed = 0 + +#ifdef deb + print*, 'RemoveSafetyValve_TripMode()' +#endif + + end subroutine + + subroutine OpenSafetyValve_TripMode() + implicit none + if(.not.IsSafetyValveInstalled_TripMode) return + OpenSafetyValveLed = 1 + CloseSafetyValveLed = 0 + SafetyValve = .true. + call ChangeValve(54, SafetyValve) + +#ifdef deb + print*, 'OpenSafetyValve_TripMode()' +#endif + + end subroutine + + subroutine CloseSafetyValve_TripMode() + implicit none + if(.not.IsSafetyValveInstalled_TripMode) return + CloseSafetyValveLed = 1 + OpenSafetyValveLed = 0 + SafetyValve = .false. + call ChangeValve(54, SafetyValve) + +#ifdef deb + print*, 'CloseSafetyValve_TripMode()' +#endif + + end subroutine + + + + + + + + + subroutine InstallSafetyValve_TopDrive() + implicit none + IsSafetyValveInstalled_TopDrive = .true. + + call Valve(128)%RemoveAdjacent(56) + call Valve(56)%RemoveAdjacent(128) + + call Valve(127)%RemoveAdjacent(56) + call Valve(56)%RemoveAdjacent(127) + + call Valve(69)%RemoveAdjacent(124) + call Valve(124)%RemoveAdjacent(69) + + call Valve(124)%AdjacentTo(54) + call Valve(54)%AdjacentTo(124) + + call Valve(54)%AdjacentTo(69) + call Valve(69)%AdjacentTo(54) + + IRSafetyValveLed = 1 + call OpenSafetyValve_TopDrive() + +#ifdef deb + print*, 'InstallSafetyValve_TopDrive()' +#endif + + end subroutine + + subroutine RemoveSafetyValve_TopDrive() + implicit none + IsSafetyValveInstalled_TopDrive = .false. + + call Valve(124)%RemoveAdjacent(54) + call Valve(54)%RemoveAdjacent(124) + + call Valve(54)%RemoveAdjacent(69) + call Valve(69)%RemoveAdjacent(54) + + call Valve(124)%AdjacentTo(69) + call Valve(69)%AdjacentTo(124) + + IRSafetyValveLed = 0 + call CloseSafetyValve_TopDrive() + OpenSafetyValveLed = 0 + CloseSafetyValveLed = 0 + +#ifdef deb + print*, 'RemoveSafetyValve_TopDrive()' +#endif + + end subroutine + + subroutine OpenSafetyValve_TopDrive() + implicit none + if(.not.IsSafetyValveInstalled_TopDrive) return + OpenSafetyValveLed = 1 + CloseSafetyValveLed = 0 + SafetyValve = .true. + +#ifdef deb + print*, 'OpenSafetyValve_TopDrive()' +#endif + + call ChangeValve(54, SafetyValve) + end subroutine + + subroutine CloseSafetyValve_TopDrive() + implicit none + if(.not.IsSafetyValveInstalled_TopDrive) return + CloseSafetyValveLed = 1 + OpenSafetyValveLed = 0 + SafetyValve = .false. + +#ifdef deb + print*, 'CloseSafetyValve_TopDrive()' +#endif + + call ChangeValve(54, SafetyValve) + end subroutine + + + + + + + + + + subroutine InstallIBop() + implicit none + IsIBopInstalled = .true. + + call Valve(103)%RemoveAdjacent(124) + call Valve(124)%RemoveAdjacent(103) + + call Valve(55)%AdjacentTo(103) + call Valve(55)%AdjacentTo(124) + + call Valve(103)%AdjacentTo(55) + call Valve(124)%AdjacentTo(55) + +#ifdef deb + print*, 'InstallIBop()' +#endif + + IRIBopLed = 1 + call OpenIBop() + end subroutine + + subroutine RemoveIBop() + implicit none + IsIBopInstalled = .false. + + call Valve(55)%RemoveAdjacent(103) + call Valve(55)%RemoveAdjacent(124) + + call Valve(103)%RemoveAdjacent(55) + call Valve(124)%RemoveAdjacent(55) + + call Valve(103)%AdjacentTo(124) + call Valve(124)%AdjacentTo(103) + +#ifdef deb + print*, 'RemoveIBop()' +#endif + + IRIBopLed = 0 + IBop = .false. + call ChangeValve(55, IBop) + end subroutine + + subroutine OpenIBop() + implicit none + if(.not.IsIBopInstalled) return + IBop = .true. + +#ifdef deb + print*, 'OpenIBop()' +#endif + + call ChangeValve(55, IBop) + end subroutine + + subroutine CloseIBop() + implicit none + if(.not.IsIBopInstalled) return + IBop = .false. + +#ifdef deb + print*, 'CloseIBop()' +#endif + + call ChangeValve(55, IBop) + end subroutine + + + + + + + subroutine InstallKellyCock() + implicit none + IsKellyCockInstalled = .true. + + call Valve(125)%RemoveAdjacent(126) + call Valve(126)%RemoveAdjacent(125) + + call Valve(125)%AdjacentTo(68) + + call Valve(68)%AdjacentTo(125) + call Valve(68)%AdjacentTo(126) + + call Valve(126)%AdjacentTo(68) + +#ifdef deb + print*, 'InstallKellyCock()' +#endif + + call OpenKellyCock() + end subroutine + + subroutine RemoveKellyCock() + implicit none + IsKellyCockInstalled = .false. + + call Valve(125)%RemoveAdjacent(68) + call Valve(126)%RemoveAdjacent(68) + + call Valve(68)%RemoveAdjacent(125) + call Valve(68)%RemoveAdjacent(126) + + call Valve(125)%AdjacentTo(126) + call Valve(126)%AdjacentTo(125) + + KellyCock = .false. + call ChangeValve(68, KellyCock) + CloseKellyCockLed = 0 + OpenKellyCockLed = 0 + +#ifdef deb + print*, 'RemoveKellyCock()' +#endif + + end subroutine + + subroutine OpenKellyCock() + implicit none + if(.not.IsKellyCockInstalled) return + OpenKellyCockLed = 1 + CloseKellyCockLed = 0 + KellyCock = .true. + +#ifdef deb + print*, 'OpenKellyCock()' +#endif + + call ChangeValve(68, KellyCock) + end subroutine + + subroutine CloseKellyCock() + implicit none + if(.not.IsKellyCockInstalled) return + CloseKellyCockLed = 1 + OpenKellyCockLed = 0 + KellyCock = .false. + +#ifdef deb + print*, 'CloseKellyCock()' +#endif + + call ChangeValve(68, KellyCock) + end subroutine + + + + + + + + + subroutine InstallTopDriveIBop() + implicit none + IsTopDriveIBopInstalled = .true. + + call Valve(126)%RemoveAdjacent(128) + call Valve(128)%RemoveAdjacent(126) + + + call Valve(126)%AdjacentTo(70) + call Valve(70)%AdjacentTo(126) + + call Valve(128)%AdjacentTo(70) + call Valve(70)%AdjacentTo(128) + +#ifdef deb + print*, 'InstallTopDriveIBop()' +#endif + call OpenTopDriveIBop() + end subroutine + + subroutine RemoveTopDriveIBop() + implicit none + IsTopDriveIBopInstalled = .false. + + call Valve(126)%RemoveAdjacent(70) + call Valve(70)%RemoveAdjacent(126) + + call Valve(128)%RemoveAdjacent(70) + call Valve(70)%RemoveAdjacent(128) + + call Valve(126)%AdjacentTo(128) + call Valve(128)%AdjacentTo(126) + +#ifdef deb + print*, 'RemoveTopDriveIBop()' +#endif + TopDriveIBop = .false. + call ChangeValve(70, TopDriveIBop) + end subroutine + + subroutine OpenTopDriveIBop() + implicit none + if(.not.IsTopDriveIBopInstalled) return + TopDriveIBop = .true. + call ChangeValve(70, TopDriveIBop) +#ifdef deb + print*, 'OpenTopDriveIBop()' +#endif + end subroutine + + subroutine CloseTopDriveIBop() + implicit none + if(.not.IsTopDriveIBopInstalled) return + TopDriveIBop = .false. + call ChangeValve(70, TopDriveIBop) +#ifdef deb + print*, 'CloseTopDriveIBop()' +#endif + end subroutine + + + + + + + + + + subroutine InstallFloatValve() + implicit none + IsFloatValveInstalled = .true. + + call Valve(69)%RemoveAdjacent(79) + call Valve(79)%RemoveAdjacent(69) + + call Valve(48)%AdjacentTo(69) + call Valve(48)%AdjacentTo(79) + + call Valve(69)%AdjacentTo(48) + call Valve(79)%AdjacentTo(48) +#ifdef deb + print*, 'InstallFloatValve()' +#endif + call OpenFloatValve() + end subroutine + + subroutine RemoveFloatValve() + implicit none + IsFloatValveInstalled = .false. + + call Valve(48)%RemoveAdjacent(69) + call Valve(48)%RemoveAdjacent(79) + + call Valve(69)%RemoveAdjacent(48) + call Valve(79)%RemoveAdjacent(48) + + call Valve(69)%AdjacentTo(79) + call Valve(79)%AdjacentTo(69) +#ifdef deb + print*, 'RemoveFloatValve()' +#endif + FloatValve = .false. + call ChangeValve(48, FloatValve) + end subroutine + + subroutine OpenFloatValve() + implicit none + if(.not.IsFloatValveInstalled) return + FloatValve = .true. +#ifdef deb + print*, 'OpenFloatValve()' +#endif + call ChangeValve(48, FloatValve) + end subroutine + + subroutine CloseFloatValve() + implicit none + if(.not.IsFloatValveInstalled) return + FloatValve = .false. +#ifdef deb + print*, 'CloseFloatValve()' +#endif + call ChangeValve(48, FloatValve) + end subroutine + + + + + + + + subroutine ToggleFillupHead(v) + implicit none + logical, intent(in) :: v + if(v) then + call Valve(14)%RemoveAdjacent(78) + + call Valve(14)%AdjacentTo(57) + call Valve(57)%AdjacentTo(14) + call Valve(57)%AdjacentTo(103) + call Valve(103)%AdjacentTo(57) + + else + call Valve(14)%RemoveAdjacent(57) + call Valve(57)%RemoveAdjacent(14) + call Valve(57)%RemoveAdjacent(103) + call Valve(103)%RemoveAdjacent(57) + + call Valve(14)%AdjacentTo(78) + endif + IsPathsDirty = .true. + call ChangeValve(57, .true.) + end subroutine + + subroutine ToggleMudBox(v) + implicit none + logical, intent(in) :: v + call ChangeValve(53, v) + end subroutine + + + + + + + + + + subroutine ToggleMiddleRams(v) + implicit none + logical, intent(in) :: v + Valve(50)%Status = v + call ChangeValve(69, v) + end subroutine + + + + + + + + + subroutine ChangeValve(i, state) + implicit none + integer, intent(in) :: i + logical, intent(in) :: state + + if(Valve(i)%Status==state) return + Valve(i)%Status = state + if(i == 41 .or. i == 42) then + if(Valve(41)%Status == .false. .and. Valve(42)%Status == .false.) then + Valve(60)%Status = .true. + else + Valve(60)%Status = .false. + endif + endif +#ifdef deb + print*, 'Valve(', i, ') = ', state +#endif + !call Traverse() + IsPathsDirty = .true. + end subroutine + + + + + + subroutine DisplayOpenPaths() + implicit none + integer :: i + if(allocated(OpenPaths)) then + do i = 1, size(OpenPaths) + call OpenPaths(i)%Display() + end do + end if + end subroutine + + subroutine DisplayOpenPathsWrite() + implicit none + integer :: i + if(allocated(OpenPaths)) then + do i = 1, size(OpenPaths) + call OpenPaths(i)%DisplayWrite() + end do + end if + end subroutine + +end module CManifolds \ No newline at end of file diff --git a/CSharp/Equipments/MudPathFinding/CPath.f90 b/CSharp/Equipments/MudPathFinding/CPath.f90 new file mode 100644 index 0000000..a0f99b3 --- /dev/null +++ b/CSharp/Equipments/MudPathFinding/CPath.f90 @@ -0,0 +1,231 @@ +module CPath + use CLog5 + implicit none + public + + type, public :: Path + integer, allocatable :: Valves(:) + logical :: IsClosed + contains + procedure :: Display => Display + procedure :: DisplayWrite => DisplayWrite + procedure :: First => First + procedure :: Last => Last + procedure :: Length => Length + procedure :: Get => Get + procedure :: Add => Add + procedure :: Remove => Remove + procedure :: Purge => Purge + procedure :: Copy => Copy + procedure :: MakeNull => MakeNull + procedure :: IsNull => IsNull + procedure :: Equal => Equal + procedure :: Find => Find + end type Path + + contains + + + subroutine DisplayWrite(this) + implicit none + class(Path), intent(in) :: this + character(len=512) :: temp + integer :: i + if(allocated(this%valves)) then + write(temp, '(a1,i0,a3,i0,a4,9999(g0))') '(', this%First(), '<=>', this%Last(), ') : ', (this%Valves(i), ", ",i=1,size(this%Valves)) + write(*,*) temp + end if + end subroutine + + subroutine Display(this) + implicit none + class(Path), intent(in) :: this + character(len=512) :: temp + integer :: i + if(allocated(this%valves)) then + write(temp, '(a1,i0,a3,i0,a4,9999(g0))') '(', this%First(), '<=>', this%Last(), ') : ', (this%Valves(i), ", ",i=1,size(this%Valves)) + call Log_5(temp) + end if + end subroutine + + integer function First(this) + implicit none + class(Path), intent(in) :: this + if(allocated(this%Valves) .and. size(this%Valves) > 0) then + First = this%Valves(1) + return + end if + First = 0 + end function + + integer function Last(this) + implicit none + class(Path), intent(in) :: this + if(allocated(this%Valves) .and. size(this%Valves) > 0) then + Last = this%Valves(size(this%Valves)) + return + end if + Last = 0 + end function + + integer function Length(this) + implicit none + class(Path), intent(in) :: this + if(allocated(this%Valves)) then + Length = size(this%Valves) + return + end if + Length = 0 + end function + + integer function Get(this, index) + implicit none + class(Path), intent(in) :: this + integer, intent(in) :: index + if(allocated(this%Valves)) then + + if(index < 1 .or. index > size(this%Valves)) then + Get = -1 + return + endif + + Get = this%Valves(index) + return + end if + get = -1 + end function + + subroutine Add(this, value) + implicit none + class(Path), intent(inout) :: this + integer, allocatable :: tempArr(:) + integer, intent(in) :: value + integer :: i, isize + + if(allocated(this%Valves)) then + isize = size(this%Valves) + allocate(tempArr(isize+1)) + do i=1,isize + tempArr(i) = this%Valves(i) + end do + tempArr(isize+1) = value + deallocate(this%Valves) + call move_alloc(tempArr, this%Valves) + else + allocate(this%Valves(1)) + this%Valves(1) = value + end if + + end subroutine + + subroutine Remove(this, index) + implicit none + class(Path), intent(inout) :: this + integer, intent(in) :: index + integer, allocatable :: tempArr(:) + integer :: i + logical :: found + + if(index <= 0 .or. index > size(this%Valves)) return + if(.not.allocated(this%Valves))return + allocate(tempArr(size(this%Valves)-1)) + found = .false. + do i=1, size(this%Valves) + if(i==index) then + found = .true. + cycle + end if + if(found) then + tempArr(i-1) = this%Valves(i) + else + tempArr(i) = this%Valves(i) + endif + end do + deallocate(this%valves) + call move_alloc(tempArr, this%valves) + end subroutine + + + subroutine Purge(this, min, max) + implicit none + class(Path), intent(inout) :: this + integer, intent(in) :: min + integer, intent(in) :: max + integer :: i + + i = 1 + do + ! + if(this%Valves(i) >= min .and. this%Valves(i) <= max) then + call this%Remove(i) + else + i = i + 1 + endif + + if(i > this%Length()) exit + enddo + + end subroutine + + + subroutine Copy(this, from) + implicit none + class(Path), intent(inout) :: this + class(Path), intent(in) :: from + if(allocated(from%Valves)) then + if(allocated(this%Valves)) deallocate(this%Valves) + allocate(this%Valves(size(from%Valves))) + this%Valves(:) = from%Valves(:) + end if + end subroutine + + subroutine MakeNull(this) + implicit none + class(Path), intent(inout) :: this + if(allocated(this%Valves)) deallocate(this%Valves) + end subroutine + + logical function IsNull(this) + implicit none + class(Path), intent(in) :: this + IsNull = .not.allocated(this%Valves) + return + end function + + logical function Equal(this, otherPath) + implicit none + class(Path), intent(inout) :: this + class(Path), intent(in) :: otherPath + integer :: i, sizeThis, sizeOtherPath + + sizeThis = size(this%Valves) + sizeOtherPath = size(otherPath%Valves) + + if(sizeThis /= sizeOtherPath) then + Equal = .false. + return + end if + + do i = 1, sizeThis + if(this%Valves(i) /= otherPath%Valves(i)) then + Equal = .false. + return + end if + end do + + Equal = .true. + return + end function + + logical function Find(this, value) + implicit none + class(Path), intent(in) :: this + integer, intent(in) :: value + if(allocated(this%Valves)) then + Find = any(this%Valves == value) + return + end if + Find = .false. + end function + +end module CPath \ No newline at end of file diff --git a/CSharp/Equipments/MudPathFinding/CPathChangeEvents.f90 b/CSharp/Equipments/MudPathFinding/CPathChangeEvents.f90 new file mode 100644 index 0000000..819209f --- /dev/null +++ b/CSharp/Equipments/MudPathFinding/CPathChangeEvents.f90 @@ -0,0 +1,12 @@ +module CPathChangeEvents + use CIntegerArrayEventHandlerCollection + use CVoidEventHandlerCollection + implicit none + public + + type(VoidEventHandlerCollection) :: BeforeTraverse + type(VoidEventHandlerCollection) :: AfterTraverse + type(IntegerArrayEventHandlerCollection) :: OnPathOpen + + contains +end module CPathChangeEvents \ No newline at end of file diff --git a/CSharp/Equipments/MudPathFinding/CStack.f90 b/CSharp/Equipments/MudPathFinding/CStack.f90 new file mode 100644 index 0000000..7974679 --- /dev/null +++ b/CSharp/Equipments/MudPathFinding/CStack.f90 @@ -0,0 +1,42 @@ +module CStack + use CPath + implicit none + public + + type, public :: Stack + type(Path) :: List + contains + procedure :: Clear => Clear + procedure :: Push => Push + procedure :: Pop => Pop + procedure :: DoesHave => DoesHave + end type Stack + contains + + subroutine Clear(this) + implicit none + class(Stack), intent(inout) :: this + call this%List%MakeNull() + end subroutine + + subroutine Push(this, value) + implicit none + class(Stack), intent(inout) :: this + integer, intent(in) :: value + call this%List%Add(value) + end subroutine + + subroutine Pop(this) + implicit none + class(Stack), intent(inout) :: this + call this%List%Remove(this%List%Length()) + end subroutine + + logical function DoesHave(this, value) + implicit none + class(Stack), intent(in) :: this + integer, intent(in) :: value + DoesHave = this%List%Find(value) + end function + +end module CStack \ No newline at end of file diff --git a/CSharp/Equipments/Tanks/CTanks.f90 b/CSharp/Equipments/Tanks/CTanks.f90 new file mode 100644 index 0000000..551b9ad --- /dev/null +++ b/CSharp/Equipments/Tanks/CTanks.f90 @@ -0,0 +1,252 @@ + + module CTanks + use CTanksVariables + use CSimulationVariables + use CManifolds + implicit none + public + contains + + ! Input routines + subroutine SetWaterRate(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetWaterRate + !DEC$ ATTRIBUTES ALIAS: 'SetWaterRate' :: SetWaterRate + implicit none + real*8, intent(in) :: v + WaterRate = v +#ifdef deb + print*, 'WaterRate=', WaterRate +#endif + end subroutine + + subroutine SetCementTankVolume(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCementTankVolume + !DEC$ ATTRIBUTES ALIAS: 'SetCementTankVolume' :: SetCementTankVolume + implicit none + real*8, intent(in) :: v + CementTankVolume = v +#ifdef deb + print*, 'CementTankVolume=', CementTankVolume +#endif + end subroutine + + subroutine SetCementTankDensity(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCementTankDensity + !DEC$ ATTRIBUTES ALIAS: 'SetCementTankDensity' :: SetCementTankDensity + implicit none + real*8, intent(in) :: v + CementTankDensity = v +#ifdef deb + print*, 'CementTankDensity=', CementTankDensity +#endif + end subroutine + + subroutine SetTripTankVolume(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTripTankVolume + !DEC$ ATTRIBUTES ALIAS: 'SetTripTankVolume' :: SetTripTankVolume + implicit none + real*8, intent(in) :: v + TripTankVolume = v +#ifdef deb + print*, 'TripTankVolume=', TripTankVolume +#endif + end subroutine + + subroutine SetTripTankDensity(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTripTankDensity + !DEC$ ATTRIBUTES ALIAS: 'SetTripTankDensity' :: SetTripTankDensity + implicit none + real*8, intent(in) :: v + TripTankDensity = v +#ifdef deb + print*, 'TripTankDensity=', TripTankDensity +#endif + end subroutine + +! subroutine SetManualPumpPowerT(v) +! !DEC$ ATTRIBUTES DLLEXPORT :: SetManualPumpPowerT +! !DEC$ ATTRIBUTES ALIAS: 'SetManualPumpPowerT' :: SetManualPumpPowerT +! implicit none +! logical, intent(in) :: v +! ManualPumpPower = v +! call ChangeValve(43, v) +!#ifdef deb +! print*, 'ManualPumpPowerT=', ManualPumpPower +!#endif +! end subroutine + + subroutine SetValve1T(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetValve1T + !DEC$ ATTRIBUTES ALIAS: 'SetValve1T' :: SetValve1T + implicit none + logical, intent(in) :: v + Valve1 = v + call ChangeValve(40, v) +#ifdef deb + print*, 'Valve1T=', Valve1 +#endif + end subroutine + + subroutine SetValve2T(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetValve2T + !DEC$ ATTRIBUTES ALIAS: 'SetValve2T' :: SetValve2T + implicit none + logical, intent(in) :: v + Valve2 = v + call ChangeValve(41, v) +#ifdef deb + print*, 'Valve2T=', Valve2 +#endif + end subroutine + + subroutine SetValve3T(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetValve3T + !DEC$ ATTRIBUTES ALIAS: 'SetValve3T' :: SetValve3T + implicit none + logical, intent(in) :: v + Valve3 = v + call ChangeValve(45, v) +#ifdef deb + print*, 'Valve3T=', Valve3 +#endif + end subroutine + + subroutine SetValve4T(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetValve4T + !DEC$ ATTRIBUTES ALIAS: 'SetValve4T' :: SetValve4T + implicit none + logical, intent(in) :: v + Valve4 = v + call ChangeValve(58, v) +#ifdef deb + print*, 'Valve4T=', Valve4 +#endif + end subroutine + + subroutine SetValve5T(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetValve5T + !DEC$ ATTRIBUTES ALIAS: 'SetValve5T' :: SetValve5T + implicit none + logical, intent(in) :: v + Valve5 = v + call ChangeValve(42, v) +#ifdef deb + print*, 'Valve5T=', Valve5 +#endif + end subroutine + + + + + + + + + + + + + + + subroutine SetValve6(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetValve6 + !DEC$ ATTRIBUTES ALIAS: 'SetValve6' :: SetValve6 + implicit none + logical, intent(in) :: v + Valve6 = v + call ChangeValve(38, v) + !WRITE (*,*) ' valve 38 ', v +#ifdef deb + print*, 'Valve6=', Valve6 +#endif + end subroutine + + subroutine SetValve7(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetValve7 + !DEC$ ATTRIBUTES ALIAS: 'SetValve7' :: SetValve7 + implicit none + logical, intent(in) :: v + Valve7 = v + call ChangeValve(59, v) +#ifdef deb + print*, 'Valve7=', Valve7 +#endif + end subroutine + + subroutine SetValve8(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetValve8 + !DEC$ ATTRIBUTES ALIAS: 'SetValve8' :: SetValve8 + implicit none + logical, intent(in) :: v + Valve8 = v + call ChangeValve(39, v) +#ifdef deb + print*, 'Valve8=', Valve8 +#endif + end subroutine + + subroutine SetValve9(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetValve9 + !DEC$ ATTRIBUTES ALIAS: 'SetValve9' :: SetValve9 + implicit none + logical, intent(in) :: v + Valve9 = v + call ChangeValve(36, v) + !WRITE (*,*) ' valve 36 ', v +#ifdef deb + print*, 'Valve9=', Valve9 +#endif + end subroutine + + subroutine SetValve10(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetValve10 + !DEC$ ATTRIBUTES ALIAS: 'SetValve10' :: SetValve10 + implicit none + logical, intent(in) :: v + Valve10 = v + call ChangeValve(37, v) +#ifdef deb + print*, 'Valve10=', Valve10 +#endif + end subroutine + + subroutine SetValve11(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetValve11 + !DEC$ ATTRIBUTES ALIAS: 'SetValve11' :: SetValve11 + implicit none + logical, intent(in) :: v + Valve11 = v + call ChangeValve(44, v) +#ifdef deb + print*, 'Valve11=', Valve11 +#endif + end subroutine + + + ! Output routines + + real(8) function GetTripTankVolumeT() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTripTankVolumeT + !DEC$ ATTRIBUTES ALIAS: 'GetTripTankVolumeT' :: GetTripTankVolumeT + implicit none + GetTripTankVolumeT = TripTankVolume + !GetTripTankVolumeT = 50.0 + SimulationTime + end function + + real(8) function GetTripTankDensity() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTripTankDensity + !DEC$ ATTRIBUTES ALIAS: 'GetTripTankDensity' :: GetTripTankDensity + implicit none + GetTripTankDensity = TripTankDensity + !GetTripTankDensity = 13.0 + SimulationTime + end function + + logical function GetManualPumpPowerT() + !DEC$ ATTRIBUTES DLLEXPORT :: GetManualPumpPowerT + !DEC$ ATTRIBUTES ALIAS: 'GetManualPumpPowerT' :: GetManualPumpPowerT + implicit none + GetManualPumpPowerT = ManualPumpPower + !GetManualPumpPowerT = .true. + end function + +end module CTanks \ No newline at end of file diff --git a/CSharp/Equipments/Tanks/CTanksVariables.f90 b/CSharp/Equipments/Tanks/CTanksVariables.f90 new file mode 100644 index 0000000..5e6cb7d --- /dev/null +++ b/CSharp/Equipments/Tanks/CTanksVariables.f90 @@ -0,0 +1,41 @@ +module CTanksVariables + implicit none + public + + ! Input vars + real(8) :: WaterRate + real(8) :: CementTankVolume + real(8) :: CementTankDensity + real(8) :: TripTankVolume + real(8) :: TripTankDensity + logical :: ManualPumpPower + logical :: Valve1 + logical :: Valve2 + logical :: Valve3 + logical :: Valve4 + logical :: Valve5 + + logical :: Valve6 + logical :: Valve7 + logical :: Valve8 + logical :: Valve9 + logical :: Valve10 + logical :: Valve11 + + ! Output vars + + + contains + + subroutine Set_ManualPumpPower(v) + use CManifolds, only:ChangeValve + implicit none + logical, intent(in) :: v + ManualPumpPower = v + call ChangeValve(43, v) +#ifdef deb + print*, 'ManualPumpPower=', ManualPumpPower +#endif + end subroutine + +end module CTanksVariables \ No newline at end of file diff --git a/CSharp/ErrorLog/CError.f90 b/CSharp/ErrorLog/CError.f90 new file mode 100644 index 0000000..f6d379f --- /dev/null +++ b/CSharp/ErrorLog/CError.f90 @@ -0,0 +1,303 @@ +module CError + use CIActionReference + implicit none + public + interface Error + module procedure :: Error1, Error2, Error3, Error4, Error5 + end interface + + interface ErrorStop + module procedure :: ErrorStop1, ErrorStop2, ErrorStop3, ErrorStop4, ErrorStop5 + end interface + + procedure (ActionString), pointer :: ErrorMessagePtr + procedure (ActionStringInt), pointer :: ErrorMessageIntPtr + procedure (ActionStringFloat), pointer :: ErrorMessageFloatPtr + procedure (ActionStringDouble), pointer :: ErrorMessageDoublePtr + procedure (ActionStringBool), pointer :: ErrorMessageBoolPtr + + procedure (ActionString), pointer :: ErrorStopPtr + procedure (ActionStringInt), pointer :: ErrorStopIntPtr + procedure (ActionStringFloat), pointer :: ErrorStopFloatPtr + procedure (ActionStringDouble), pointer :: ErrorStopDoublePtr + procedure (ActionStringBool), pointer :: ErrorStopBoolPtr + contains + + subroutine Error1(message) + implicit none + character(len=*), intent(in) :: message + if(associated(ErrorMessagePtr)) call ErrorMessagePtr(message) + end subroutine + + subroutine Error2(message, value) + implicit none + character(len=*), intent(in) :: message + integer, intent(in) :: value + !character(len=256) :: temp + !temp(:)=' ' + !write(temp,*) value + !if(associated(ErrorMessagePtr)) call ErrorMessagePtr(trim(message//' '//adjustl(temp))) + if(associated(ErrorMessageIntPtr)) call ErrorMessageIntPtr(message, value) + end subroutine + + subroutine Error3(message, value) + implicit none + character(len=*), intent(in) :: message + real, intent(in) :: value + !character(len=256) :: temp + !temp(:)=' ' + !write(temp,*) value + !if(associated(ErrorMessagePtr)) call ErrorMessagePtr(trim(message//' '//adjustl(temp))) + if(associated(ErrorMessageFloatPtr)) call ErrorMessageFloatPtr(message, value) + end subroutine + + subroutine Error4(message, value) + implicit none + character(len=*), intent(in) :: message + real(8), intent(in) :: value + !character(len=256) :: temp + !temp(:)=' ' + !write(temp,*) value + !if(associated(ErrorMessagePtr)) call ErrorMessagePtr(trim(message//' '//adjustl(temp))) + if(associated(ErrorMessageDoublePtr)) call ErrorMessageDoublePtr(message, value) + end subroutine + + subroutine Error5(message, value) + implicit none + character(len=*), intent(in) :: message + logical, intent(in) :: value + !if(value) then + ! if(associated(ErrorMessagePtr)) call ErrorMessagePtr(message//' '//'TRUE') + !else + ! if(associated(ErrorMessagePtr)) call ErrorMessagePtr(message//' '//'FALSE') + !endif + if(associated(ErrorMessageBoolPtr)) call ErrorMessageBoolPtr(message, value) + end subroutine + + + + + + + + + + + + + + subroutine ErrorStop1(message) + !use ifmt + implicit none + character(len=*), intent(in) :: message + if(associated(ErrorStopPtr)) then + call ErrorStopPtr(message) + ! call ExitThread(0) + end if + end subroutine + + subroutine ErrorStop2(message, value) + !use ifmt + implicit none + character(len=*), intent(in) :: message + integer, intent(in) :: value + !character(len=256) :: temp + !temp(:)=' ' + !write(temp,*) value + !if(associated(ErrorStopPtr)) then + ! call ErrorStopPtr(trim(message//' '//adjustl(temp))) + ! ! call ExitThread(0) + !end if + if(associated(ErrorStopIntPtr)) then + call ErrorStopIntPtr(message, value) + ! call ExitThread(0) + end if + end subroutine + + subroutine ErrorStop3(message, value) + !use ifmt + implicit none + character(len=*), intent(in) :: message + real, intent(in) :: value + !character(len=256) :: temp + !temp(:)=' ' + !write(temp,*) value + !if(associated(ErrorStopPtr)) then + ! call ErrorStopPtr(trim(message//' '//adjustl(temp))) + ! ! call ExitThread(0) + !end if + if(associated(ErrorStopFloatPtr)) then + call ErrorStopFloatPtr(message, value) + ! ! call ExitThread(0) + end if + end subroutine + + subroutine ErrorStop4(message, value) + ! use ifmt + implicit none + character(len=*), intent(in) :: message + real(8), intent(in) :: value + !character(len=256) :: temp + !temp(:)=' ' + !write(temp,*) value + !if(associated(ErrorStopPtr)) then + ! call ErrorStopPtr(trim(message//' '//adjustl(temp))) + ! ! call ExitThread(0) + !end if + if(associated(ErrorStopDoublePtr)) then + call ErrorStopDoublePtr(message, value) + ! ! call ExitThread(0) + end if + end subroutine + + subroutine ErrorStop5(message, value) + !use ifmt + implicit none + character(len=*), intent(in) :: message + logical, intent(in) :: value + !if(value) then + ! if(associated(ErrorStopPtr)) then + ! call ErrorStopPtr(message//' '//'TRUE') + ! ! ! call ExitThread(0) + ! end if + !else + ! if(associated(ErrorStopPtr)) then + ! call ErrorStopPtr(message//' '//'FALSE') + ! ! ! call ExitThread(0) + ! end if + !endif + if(associated(ErrorStopBoolPtr)) then + call ErrorStopBoolPtr(message, value) + ! call ExitThread(0) + end if + end subroutine + + + + + + + + + + + + + + + subroutine SubscribeErrorMessage(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeErrorMessage + !DEC$ ATTRIBUTES ALIAS: 'SubscribeErrorMessage' :: SubscribeErrorMessage + implicit none + procedure (ActionString) :: a + ErrorMessagePtr => a + end subroutine + + + subroutine SubscribeErrorMessageInt(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeErrorMessageInt + !DEC$ ATTRIBUTES ALIAS: 'SubscribeErrorMessageInt' :: SubscribeErrorMessageInt + implicit none + procedure (ActionStringInt) :: a + ErrorMessageIntPtr => a + end subroutine + + subroutine SubscribeErrorMessageFloat(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeErrorMessageFloat + !DEC$ ATTRIBUTES ALIAS: 'SubscribeErrorMessageFloat' :: SubscribeErrorMessageFloat + implicit none + procedure (ActionStringFloat) :: a + ErrorMessageFloatPtr => a + end subroutine + + subroutine SubscribeErrorMessageDouble(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeErrorMessageDouble + !DEC$ ATTRIBUTES ALIAS: 'SubscribeErrorMessageDouble' :: SubscribeErrorMessageDouble + implicit none + procedure (ActionStringDouble) :: a + ErrorMessageDoublePtr => a + end subroutine + + subroutine SubscribeErrorMessageBool(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeErrorMessageBool + !DEC$ ATTRIBUTES ALIAS: 'SubscribeErrorMessageBool' :: SubscribeErrorMessageBool + implicit none + procedure (ActionStringBool) :: a + ErrorMessageBoolPtr => a + end subroutine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + subroutine SubscribeErrorStop(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeErrorStop + !DEC$ ATTRIBUTES ALIAS: 'SubscribeErrorStop' :: SubscribeErrorStop + implicit none + procedure (ActionString) :: a + ErrorStopPtr => a + end subroutine + + subroutine SubscribeErrorStopInt(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeErrorStopInt + !DEC$ ATTRIBUTES ALIAS: 'SubscribeErrorStopInt' :: SubscribeErrorStopInt + implicit none + procedure (ActionStringInt) :: a + ErrorStopIntPtr => a + end subroutine + + + subroutine SubscribeErrorStopFloat(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeErrorStopFloat + !DEC$ ATTRIBUTES ALIAS: 'SubscribeErrorStopFloat' :: SubscribeErrorStopFloat + implicit none + procedure (ActionStringFloat) :: a + ErrorStopFloatPtr => a + end subroutine + + subroutine SubscribeErrorStopDouble(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeErrorStopDouble + !DEC$ ATTRIBUTES ALIAS: 'SubscribeErrorStopDouble' :: SubscribeErrorStopDouble + implicit none + procedure (ActionStringDouble) :: a + ErrorStopDoublePtr => a + end subroutine + + subroutine SubscribeErrorStopBool(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeErrorStopBool + !DEC$ ATTRIBUTES ALIAS: 'SubscribeErrorStopBool' :: SubscribeErrorStopBool + implicit none + procedure (ActionStringBool) :: a + ErrorStopBoolPtr => a + end subroutine + +end module CError \ No newline at end of file diff --git a/CSharp/ErrorLog/CLog1.f90 b/CSharp/ErrorLog/CLog1.f90 new file mode 100644 index 0000000..a95afd6 --- /dev/null +++ b/CSharp/ErrorLog/CLog1.f90 @@ -0,0 +1,113 @@ +module CLog1 + use CIActionReference + implicit none + public + interface Log_1 + module procedure :: Log1Log1, Log1Log2, Log1Log3, Log1Log4, Log1Log5 + end interface + + procedure (ActionString), pointer :: Log1MsgPtr + procedure (ActionStringInt), pointer :: Log1MsgIntPtr + procedure (ActionStringFloat), pointer :: Log1MsgFloatPtr + procedure (ActionStringDouble), pointer :: Log1MsgDoublePtr + procedure (ActionStringBool), pointer :: Log1MsgBoolPtr + contains + + subroutine Log1Log1(message) + implicit none + character(len=*), intent(in) :: message +#ifdef Log1 + if(associated(Log1MsgPtr)) call Log1MsgPtr(message) +#endif + end subroutine + + subroutine Log1Log2(message, value) + implicit none + character(len=*), intent(in) :: message + integer, intent(in) :: value +#ifdef Log1 + if(associated(Log1MsgIntPtr)) call Log1MsgIntPtr(message, value) +#endif + end subroutine + + subroutine Log1Log3(message, value) + implicit none + character(len=*), intent(in) :: message + real, intent(in) :: value +#ifdef Log1 + if(associated(Log1MsgFloatPtr)) call Log1MsgFloatPtr(message, value) +#endif + end subroutine + + subroutine Log1Log4(message, value) + implicit none + character(len=*), intent(in) :: message + real(8), intent(in) :: value +#ifdef Log1 + if(associated(Log1MsgDoublePtr)) call Log1MsgDoublePtr(message, value) +#endif + end subroutine + + subroutine Log1Log5(message, value) + implicit none + character(len=*), intent(in) :: message + logical, intent(in) :: value +#ifdef Log1 + if(associated(Log1MsgBoolPtr)) call Log1MsgBoolPtr(message, value) +#endif + end subroutine + + + + + + + + + + + + + + + subroutine SubscribeLog1Message(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog1Message + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog1Message' :: SubscribeLog1Message + implicit none + procedure (ActionString) :: a + Log1MsgPtr => a + end subroutine + + subroutine SubscribeLog1MsgInt(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog1MsgInt + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog1MsgInt' :: SubscribeLog1MsgInt + implicit none + procedure (ActionStringInt) :: a + Log1MsgIntPtr => a + end subroutine + + subroutine SubscribeLog1MsgFloat(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog1MsgFloat + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog1MsgFloat' :: SubscribeLog1MsgFloat + implicit none + procedure (ActionStringFloat) :: a + Log1MsgFloatPtr => a + end subroutine + + subroutine SubscribeLog1MsgDouble(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog1MsgDouble + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog1MsgDouble' :: SubscribeLog1MsgDouble + implicit none + procedure (ActionStringDouble) :: a + Log1MsgDoublePtr => a + end subroutine + + subroutine SubscribeLog1MsgBool(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog1MsgBool + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog1MsgBool' :: SubscribeLog1MsgBool + implicit none + procedure (ActionStringBool) :: a + Log1MsgBoolPtr => a + end subroutine + +end module CLog1 \ No newline at end of file diff --git a/CSharp/ErrorLog/CLog2.f90 b/CSharp/ErrorLog/CLog2.f90 new file mode 100644 index 0000000..7db07dd --- /dev/null +++ b/CSharp/ErrorLog/CLog2.f90 @@ -0,0 +1,113 @@ +module CLog2 + use CIActionReference + implicit none + public + interface Log_2 + module procedure :: Log2Log1, Log2Log2, Log2Log3, Log2Log4, Log2Log5 + end interface + + procedure (ActionString), pointer :: Log2MsgPtr + procedure (ActionStringInt), pointer :: Log2MsgIntPtr + procedure (ActionStringFloat), pointer :: Log2MsgFloatPtr + procedure (ActionStringDouble), pointer :: Log2MsgDoublePtr + procedure (ActionStringBool), pointer :: Log2MsgBoolPtr + contains + + subroutine Log2Log1(message) + implicit none + character(len=*), intent(in) :: message +#ifdef Log2 + if(associated(Log2MsgPtr)) call Log2MsgPtr(message) +#endif + end subroutine + + subroutine Log2Log2(message, value) + implicit none + character(len=*), intent(in) :: message + integer, intent(in) :: value +#ifdef Log2 + if(associated(Log2MsgIntPtr)) call Log2MsgIntPtr(message, value) +#endif + end subroutine + + subroutine Log2Log3(message, value) + implicit none + character(len=*), intent(in) :: message + real, intent(in) :: value +#ifdef Log2 + if(associated(Log2MsgFloatPtr)) call Log2MsgFloatPtr(message, value) +#endif + end subroutine + + subroutine Log2Log4(message, value) + implicit none + character(len=*), intent(in) :: message + real(8), intent(in) :: value +#ifdef Log2 + if(associated(Log2MsgDoublePtr)) call Log2MsgDoublePtr(message, value) +#endif + end subroutine + + subroutine Log2Log5(message, value) + implicit none + character(len=*), intent(in) :: message + logical, intent(in) :: value +#ifdef Log2 + if(associated(Log2MsgBoolPtr)) call Log2MsgBoolPtr(message, value) +#endif + end subroutine + + + + + + + + + + + + + + + subroutine SubscribeLog2Message(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog2Message + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog2Message' :: SubscribeLog2Message + implicit none + procedure (ActionString) :: a + Log2MsgPtr => a + end subroutine + + subroutine SubscribeLog2MsgInt(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog2MsgInt + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog2MsgInt' :: SubscribeLog2MsgInt + implicit none + procedure (ActionStringInt) :: a + Log2MsgIntPtr => a + end subroutine + + subroutine SubscribeLog2MsgFloat(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog2MsgFloat + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog2MsgFloat' :: SubscribeLog2MsgFloat + implicit none + procedure (ActionStringFloat) :: a + Log2MsgFloatPtr => a + end subroutine + + subroutine SubscribeLog2MsgDouble(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog2MsgDouble + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog2MsgDouble' :: SubscribeLog2MsgDouble + implicit none + procedure (ActionStringDouble) :: a + Log2MsgDoublePtr => a + end subroutine + + subroutine SubscribeLog2MsgBool(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog2MsgBool + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog2MsgBool' :: SubscribeLog2MsgBool + implicit none + procedure (ActionStringBool) :: a + Log2MsgBoolPtr => a + end subroutine + +end module CLog2 \ No newline at end of file diff --git a/CSharp/ErrorLog/CLog3.f90 b/CSharp/ErrorLog/CLog3.f90 new file mode 100644 index 0000000..866aaa0 --- /dev/null +++ b/CSharp/ErrorLog/CLog3.f90 @@ -0,0 +1,113 @@ +module CLog3 + use CIActionReference + implicit none + public + interface Log_3 + module procedure :: Log3Log1, Log3Log2, Log3Log3, Log3Log4, Log3Log5 + end interface + + procedure (ActionString), pointer :: Log3MsgPtr + procedure (ActionStringInt), pointer :: Log3MsgIntPtr + procedure (ActionStringFloat), pointer :: Log3MsgFloatPtr + procedure (ActionStringDouble), pointer :: Log3MsgDoublePtr + procedure (ActionStringBool), pointer :: Log3MsgBoolPtr + contains + + subroutine Log3Log1(message) + implicit none + character(len=*), intent(in) :: message +#ifdef Log3 + if(associated(Log3MsgPtr)) call Log3MsgPtr(message) +#endif + end subroutine + + subroutine Log3Log2(message, value) + implicit none + character(len=*), intent(in) :: message + integer, intent(in) :: value +#ifdef Log3 + if(associated(Log3MsgIntPtr)) call Log3MsgIntPtr(message, value) +#endif + end subroutine + + subroutine Log3Log3(message, value) + implicit none + character(len=*), intent(in) :: message + real, intent(in) :: value +#ifdef Log3 + if(associated(Log3MsgFloatPtr)) call Log3MsgFloatPtr(message, value) +#endif + end subroutine + + subroutine Log3Log4(message, value) + implicit none + character(len=*), intent(in) :: message + real(8), intent(in) :: value +#ifdef Log3 + if(associated(Log3MsgDoublePtr)) call Log3MsgDoublePtr(message, value) +#endif + end subroutine + + subroutine Log3Log5(message, value) + implicit none + character(len=*), intent(in) :: message + logical, intent(in) :: value +#ifdef Log3 + if(associated(Log3MsgBoolPtr)) call Log3MsgBoolPtr(message, value) +#endif + end subroutine + + + + + + + + + + + + + + + subroutine SubscribeLog3Message(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog3Message + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog3Message' :: SubscribeLog3Message + implicit none + procedure (ActionString) :: a + Log3MsgPtr => a + end subroutine + + subroutine SubscribeLog3MsgInt(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog3MsgInt + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog3MsgInt' :: SubscribeLog3MsgInt + implicit none + procedure (ActionStringInt) :: a + Log3MsgIntPtr => a + end subroutine + + subroutine SubscribeLog3MsgFloat(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog3MsgFloat + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog3MsgFloat' :: SubscribeLog3MsgFloat + implicit none + procedure (ActionStringFloat) :: a + Log3MsgFloatPtr => a + end subroutine + + subroutine SubscribeLog3MsgDouble(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog3MsgDouble + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog3MsgDouble' :: SubscribeLog3MsgDouble + implicit none + procedure (ActionStringDouble) :: a + Log3MsgDoublePtr => a + end subroutine + + subroutine SubscribeLog3MsgBool(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog3MsgBool + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog3MsgBool' :: SubscribeLog3MsgBool + implicit none + procedure (ActionStringBool) :: a + Log3MsgBoolPtr => a + end subroutine + +end module CLog3 \ No newline at end of file diff --git a/CSharp/ErrorLog/CLog4.f90 b/CSharp/ErrorLog/CLog4.f90 new file mode 100644 index 0000000..16241bd --- /dev/null +++ b/CSharp/ErrorLog/CLog4.f90 @@ -0,0 +1,113 @@ +module CLog4 + use CIActionReference + implicit none + public + interface Log_4 + module procedure :: Log4Log1, Log4Log2, Log4Log3, Log4Log4, Log4Log5 + end interface + + procedure (ActionString), pointer :: Log4MsgPtr + procedure (ActionStringInt), pointer :: Log4MsgIntPtr + procedure (ActionStringFloat), pointer :: Log4MsgFloatPtr + procedure (ActionStringDouble), pointer :: Log4MsgDoublePtr + procedure (ActionStringBool), pointer :: Log4MsgBoolPtr + contains + + subroutine Log4Log1(message) + implicit none + character(len=*), intent(in) :: message +#ifdef Log4 + if(associated(Log4MsgPtr)) call Log4MsgPtr(message) +#endif + end subroutine + + subroutine Log4Log2(message, value) + implicit none + character(len=*), intent(in) :: message + integer, intent(in) :: value +#ifdef Log4 + if(associated(Log4MsgIntPtr)) call Log4MsgIntPtr(message, value) +#endif + end subroutine + + subroutine Log4Log3(message, value) + implicit none + character(len=*), intent(in) :: message + real, intent(in) :: value +#ifdef Log4 + if(associated(Log4MsgFloatPtr)) call Log4MsgFloatPtr(message, value) +#endif + end subroutine + + subroutine Log4Log4(message, value) + implicit none + character(len=*), intent(in) :: message + real(8), intent(in) :: value +#ifdef Log4 + if(associated(Log4MsgDoublePtr)) call Log4MsgDoublePtr(message, value) +#endif + end subroutine + + subroutine Log4Log5(message, value) + implicit none + character(len=*), intent(in) :: message + logical, intent(in) :: value +#ifdef Log4 + if(associated(Log4MsgBoolPtr)) call Log4MsgBoolPtr(message, value) +#endif + end subroutine + + + + + + + + + + + + + + + subroutine SubscribeLog4Message(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog4Message + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog4Message' :: SubscribeLog4Message + implicit none + procedure (ActionString) :: a + Log4MsgPtr => a + end subroutine + + subroutine SubscribeLog4MsgInt(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog4MsgInt + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog4MsgInt' :: SubscribeLog4MsgInt + implicit none + procedure (ActionStringInt) :: a + Log4MsgIntPtr => a + end subroutine + + subroutine SubscribeLog4MsgFloat(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog4MsgFloat + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog4MsgFloat' :: SubscribeLog4MsgFloat + implicit none + procedure (ActionStringFloat) :: a + Log4MsgFloatPtr => a + end subroutine + + subroutine SubscribeLog4MsgDouble(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog4MsgDouble + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog4MsgDouble' :: SubscribeLog4MsgDouble + implicit none + procedure (ActionStringDouble) :: a + Log4MsgDoublePtr => a + end subroutine + + subroutine SubscribeLog4MsgBool(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog4MsgBool + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog4MsgBool' :: SubscribeLog4MsgBool + implicit none + procedure (ActionStringBool) :: a + Log4MsgBoolPtr => a + end subroutine + +end module CLog4 \ No newline at end of file diff --git a/CSharp/ErrorLog/CLog5.f90 b/CSharp/ErrorLog/CLog5.f90 new file mode 100644 index 0000000..50c9ef1 --- /dev/null +++ b/CSharp/ErrorLog/CLog5.f90 @@ -0,0 +1,113 @@ +module CLog5 + use CIActionReference + implicit none + public + interface Log_5 + module procedure :: Log5Log1, Log5Log2, Log5Log3, Log5Log4, Log5Log5 + end interface + + procedure (ActionString), pointer :: Log5MsgPtr + procedure (ActionStringInt), pointer :: Log5MsgIntPtr + procedure (ActionStringFloat), pointer :: Log5MsgFloatPtr + procedure (ActionStringDouble), pointer :: Log5MsgDoublePtr + procedure (ActionStringBool), pointer :: Log5MsgBoolPtr + contains + + subroutine Log5Log1(message) + implicit none + character(len=*), intent(in) :: message +#ifdef Log5 + if(associated(Log5MsgPtr)) call Log5MsgPtr(message) +#endif + end subroutine + + subroutine Log5Log2(message, value) + implicit none + character(len=*), intent(in) :: message + integer, intent(in) :: value +#ifdef Log5 + if(associated(Log5MsgIntPtr)) call Log5MsgIntPtr(message, value) +#endif + end subroutine + + subroutine Log5Log3(message, value) + implicit none + character(len=*), intent(in) :: message + real, intent(in) :: value +#ifdef Log5 + if(associated(Log5MsgFloatPtr)) call Log5MsgFloatPtr(message, value) +#endif + end subroutine + + subroutine Log5Log4(message, value) + implicit none + character(len=*), intent(in) :: message + real(8), intent(in) :: value +#ifdef Log5 + if(associated(Log5MsgDoublePtr)) call Log5MsgDoublePtr(message, value) +#endif + end subroutine + + subroutine Log5Log5(message, value) + implicit none + character(len=*), intent(in) :: message + logical, intent(in) :: value +#ifdef Log5 + if(associated(Log5MsgBoolPtr)) call Log5MsgBoolPtr(message, value) +#endif + end subroutine + + + + + + + + + + + + + + + subroutine SubscribeLog5Message(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog5Message + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog5Message' :: SubscribeLog5Message + implicit none + procedure (ActionString) :: a + Log5MsgPtr => a + end subroutine + + subroutine SubscribeLog5MsgInt(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog5MsgInt + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog5MsgInt' :: SubscribeLog5MsgInt + implicit none + procedure (ActionStringInt) :: a + Log5MsgIntPtr => a + end subroutine + + subroutine SubscribeLog5MsgFloat(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog5MsgFloat + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog5MsgFloat' :: SubscribeLog5MsgFloat + implicit none + procedure (ActionStringFloat) :: a + Log5MsgFloatPtr => a + end subroutine + + subroutine SubscribeLog5MsgDouble(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog5MsgDouble + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog5MsgDouble' :: SubscribeLog5MsgDouble + implicit none + procedure (ActionStringDouble) :: a + Log5MsgDoublePtr => a + end subroutine + + subroutine SubscribeLog5MsgBool(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLog5MsgBool + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLog5MsgBool' :: SubscribeLog5MsgBool + implicit none + procedure (ActionStringBool) :: a + Log5MsgBoolPtr => a + end subroutine + +end module CLog5 \ No newline at end of file diff --git a/CSharp/OperationScenarios/Common/COperationScenariosMain.f90 b/CSharp/OperationScenarios/Common/COperationScenariosMain.f90 new file mode 100644 index 0000000..08bf13e --- /dev/null +++ b/CSharp/OperationScenarios/Common/COperationScenariosMain.f90 @@ -0,0 +1,716 @@ +module COperationScenariosMain + use CIActionReference + implicit none + public + procedure (ActionVoid), pointer :: UpdateUnityPtr + contains + + ! subroutine OperationScenarios_Setup() + ! use CSimulationVariables + ! implicit none + ! call OnSimulationInitialization%Add(OperationScenarios_Init) + ! call OnSimulationStop%Add(OperationScenarios_Init) + ! !call OnOperationScenariosStep%Add(OperationScenarios_Step) + ! !call OnOperationScenariosOutput%Add(OperationScenarios_Output) + ! call OnOperationScenariosMain%Add(OperationScenariosMainBody) + ! end subroutine + + ! subroutine OperationScenarios_Init + ! use COperationScenariosSettings, OperationScenariosInitialization => Initialization + ! implicit none + ! call OperationScenariosInitialization() + ! end subroutine OperationScenarios_Init + + subroutine OperationScenarios_Step + use CSimulationVariables + use CKellyConnectionEnum + use CElevatorConnectionEnum + use CCloseKellyCockLedNotification + use CCloseSafetyValveLedNotification + use CFillMouseHoleLedNotification + use CIrIBopLedNotification + use CIrSafetyValveLedNotification + use CLatchLedNotification + use COpenKellyCockLedNotification + use COpenSafetyValveLedNotification + use CSlipsNotification + use CSwingLedNotification + use CTongNotification + use CUnlatchLedNotification + use CInstallFillupHeadPermission + use CInstallMudBucketPermission + use CIrIbopPermission + use CIrSafetyValvePermission + use CRemoveFillupHeadPermission + use CRemoveMudBucketPermission + use CHookHeight + use CIbopHeight + use CNearFloorConnection + use CSafetyValveHeight + use CSlackOff + use CStandRack + use CStringPressure + use CZeroStringSpeed + use CUnityInputs, only: & + Get_ElevatorConnectionPossible, & + Get_JointConnectionPossible, & + Get_ElevatorPickup, & + Get_NearFloorPosition, & + Get_SingleSetInMouseHole + use CBucketEnum + use CElevatorEnum + use CHeadEnum + use CIbopEnum + use CKellyEnum + use CMouseHoleEnum + use COperationConditionEnum + use CSafetyValveEnum + use CSlipsEnum + use CSwingEnum + use CTongEnum + use CStringUpdate + use CFlowPipeDisconnectEnum + use CFlowKellyDisconnectEnum + use CFillupHeadPermission + use CSwingDrillPermission + use CSwingOffPermission + use CSwingTiltPermission + use CTdsStemJointHeight + use CTdsConnectionModesEnum + use CTdsElevatorModesEnum + use CTdsSpineEnum + use CTdsSwingEnum + use CTdsTongEnum + use CTdsBackupClamp + use CTdsIbopLedNotification + use CTdsPowerLedNotification + use CTdsTorqueWrenchLedNotification + + implicit none + + call Evaluate_KellyConnection() + call Evaluate_ElevatorConnection() + + call Evaluate_CloseKellyCockLed() + call Evaluate_CloseSafetyValveLed() + call Evaluate_FillMouseHoleLed() + call Evaluate_IrIBopLed() + call Evaluate_IrSafetyValveLed() + call Evaluate_LatchLed() + call Evaluate_OpenKellyCockLed() + call Evaluate_OpenSafetyValveLed() + call Evaluate_SlipsNotification() + call Evaluate_SwingLed() + call Evaluate_TongNotification() + call Evaluate_UnlatchLed() + + call Evaluate_InstallFillupHeadPermission() + call Evaluate_InstallMudBucketPermission() + call Evaluate_IrIbopPermission() + call Evaluate_IrSafetyValvePermission() + call Evaluate_RemoveFillupHeadPermission() + call Evaluate_RemoveMudBucketPermission() + + call Evaluate_MudBucket() + call Evaluate_Elevator() + call Evaluate_FillupHead() + call Evaluate_Ibop() + call Evaluate_Kelly() + call Evaluate_MouseHole() + call Evaluate_MouseHole() + call Evaluate_OperationCondition() + call Evaluate_SafetyValve() + call Evaluate_Slips() + call Evaluate_Swing() + call Evaluate_Tong() + + call Evaluate_StringUpdate() + + call Evaluate_FlowKellyDisconnect() + call Evaluate_FlowPipeDisconnect() + + !if(Get_FillMouseHoleLed()) then + ! call Set_MouseHole(MOUSE_HOLE_FILL) + !else + ! if((Get_KellyConnection() == KELLY_CONNECTION_SINGLE .or.& + ! Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE) .and.& + ! Get_HookHeight() >= 95.0 ) then + ! call Set_MouseHole(MOUSE_HOLE_NEUTRAL) + ! else + ! call Set_MouseHole(MOUSE_HOLE_EMPTY) + ! endif + !endif + + + + + + + + + !topdrive + call Evaluate_TdsElevatorModes() + call Evaluate_TdsConnectionModes() + call Evaluate_SwingTiltPermission() + call Evaluate_SwingOffPermission() + call Evaluate_SwingDrillPermission() + call Evaluate_FillupHeadPermission() + call Evaluate_TdsTong() + call Evaluate_TdsBackupClamp() + call Evaluate_TdsSwing() + call Evaluate_TdsSpine() + + call Evaluate_PowerLed() + call Evaluate_IbopLed() + + call Evaluate_TorqueWrenchLed() + + end subroutine OperationScenarios_Step + + subroutine OperationScenarios_Output + implicit none + end subroutine OperationScenarios_Output + + subroutine OperationScenariosMainBody + use CSimulationVariables + + use CKellyConnectionEnum + use CElevatorConnectionEnum + + use CCloseKellyCockLedNotification + use CCloseSafetyValveLedNotification + use CFillMouseHoleLedNotification + use CIrIBopLedNotification + use CIrSafetyValveLedNotification + use CLatchLedNotification + use COpenKellyCockLedNotification + use COpenSafetyValveLedNotification + use CSlipsNotification + use CSwingLedNotification + use CTongNotification + use CUnlatchLedNotification + + use CInstallFillupHeadPermission + use CInstallMudBucketPermission + use CIrIbopPermission + use CIrSafetyValvePermission + use CRemoveFillupHeadPermission + use CRemoveMudBucketPermission + + use CHookHeight + use CIbopHeight + use CNearFloorConnection + use CSafetyValveHeight + use CSlackOff + use CStandRack + use CStringPressure + use CZeroStringSpeed + + use CUnityInputs, only: & + Get_ElevatorConnectionPossible, & + Get_JointConnectionPossible, & + Get_ElevatorPickup, & + Get_NearFloorPosition, & + Get_SingleSetInMouseHole + + use CBucketEnum + use CElevatorEnum + use CHeadEnum + use CIbopEnum + use CKellyEnum + use CMouseHoleEnum + use COperationConditionEnum + use CSafetyValveEnum + use CSlipsEnum + use CSwingEnum + use CTongEnum + + use CStringUpdate + + use CFlowPipeDisconnectEnum + use CFlowKellyDisconnectEnum + + + use CFillupHeadPermission + use CSwingDrillPermission + use CSwingOffPermission + use CSwingTiltPermission + use CTdsStemJointHeight + use CTdsConnectionModesEnum + use CTdsElevatorModesEnum + use CTdsSpineEnum + use CTdsSwingEnum + use CTdsTongEnum + use CTdsBackupClamp + + use CTdsIbopLedNotification + use CTdsPowerLedNotification + + use CTdsTorqueWrenchLedNotification + + implicit none + loop1: do + call Evaluate_KellyConnection() + call Evaluate_ElevatorConnection() + + call Evaluate_CloseKellyCockLed() + call Evaluate_CloseSafetyValveLed() + call Evaluate_FillMouseHoleLed() + call Evaluate_IrIBopLed() + call Evaluate_IrSafetyValveLed() + call Evaluate_LatchLed() + call Evaluate_OpenKellyCockLed() + call Evaluate_OpenSafetyValveLed() + call Evaluate_SlipsNotification() + call Evaluate_SwingLed() + call Evaluate_TongNotification() + call Evaluate_UnlatchLed() + + call Evaluate_InstallFillupHeadPermission() + call Evaluate_InstallMudBucketPermission() + call Evaluate_IrIbopPermission() + call Evaluate_IrSafetyValvePermission() + call Evaluate_RemoveFillupHeadPermission() + call Evaluate_RemoveMudBucketPermission() + + call Evaluate_MudBucket() + call Evaluate_Elevator() + call Evaluate_FillupHead() + call Evaluate_Ibop() + call Evaluate_Kelly() + call Evaluate_MouseHole() + call Evaluate_MouseHole() + call Evaluate_OperationCondition() + call Evaluate_SafetyValve() + call Evaluate_Slips() + call Evaluate_Swing() + call Evaluate_Tong() + + call Evaluate_StringUpdate() + + call Evaluate_FlowKellyDisconnect() + call Evaluate_FlowPipeDisconnect() + + !if(Get_FillMouseHoleLed()) then + ! call Set_MouseHole(MOUSE_HOLE_FILL) + !else + ! if((Get_KellyConnection() == KELLY_CONNECTION_SINGLE .or.& + ! Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE) .and.& + ! Get_HookHeight() >= 95.0 ) then + ! call Set_MouseHole(MOUSE_HOLE_NEUTRAL) + ! else + ! call Set_MouseHole(MOUSE_HOLE_EMPTY) + ! endif + !endif + + + + + + + + + !topdrive + call Evaluate_TdsElevatorModes() + call Evaluate_TdsConnectionModes() + call Evaluate_SwingTiltPermission() + call Evaluate_SwingOffPermission() + call Evaluate_SwingDrillPermission() + call Evaluate_FillupHeadPermission() + call Evaluate_TdsTong() + call Evaluate_TdsBackupClamp() + call Evaluate_TdsSwing() + call Evaluate_TdsSpine() + + call Evaluate_PowerLed() + call Evaluate_IbopLed() + + call Evaluate_TorqueWrenchLed() + + !if (IsStopped==.true.) exit loop1 + if(IsStopped) call Quit() + call sleepqq(100) + enddo loop1 + end subroutine OperationScenariosMainBody + + + + + subroutine SubscribeUpdateUnity(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeUpdateUnity + !DEC$ ATTRIBUTES ALIAS: 'SubscribeUpdateUnity' :: SubscribeUpdateUnity + implicit none + procedure (ActionVoid) :: a + UpdateUnityPtr => a + end subroutine + + subroutine UpdateUnity() + implicit none + if(associated(UpdateUnityPtr)) call UpdateUnityPtr() + end subroutine + + subroutine PreProcessingSnapshot + !DEC$ ATTRIBUTES DLLEXPORT :: PreProcessingSnapshot + !DEC$ ATTRIBUTES ALIAS: 'PreProcessingSnapshot' :: PreProcessingSnapshot + use CSwingEnumVariables + use CSlipsEnumVariables + use CHookVariables + use CTongEnumVariables + use CHoistingVariables + use CKellyConnectionEnumVariables + use CElevatorConnectionEnumVariables + use COperationConditionEnumVariables + use CMouseHoleEnumVariables + implicit none + + if(DriveType == Kelly_DriveType) then ! kelly mode + + + if(Get_OperationCondition() == OPERATION_DRILL) then + + if(Get_KellyConnection() == KELLY_CONNECTION_NOTHING) then + call Kelly_ConnectionNothing() + + elseif (Get_KellyConnection() == KELLY_CONNECTION_STRING) then + call Kelly_ConnectionString() + + elseif (Get_KellyConnection() == KELLY_CONNECTION_SINGLE) then + call Kelly_ConnectionSingle() + + endif + + elseif (Get_OperationCondition() == OPERATION_TRIP) then + + if(Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING) then + call Elevator_ConnectionNothing() + + elseif (Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING) then + call Elevator_ConnectionString() + + elseif (Get_ElevatorConnection() == ELEVATOR_CONNECTION_STAND) then + call Elevator_ConnectionStand() + + elseif (Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE) then + call Elevator_ConnectionSingle() + + endif + + + endif + + + + + else ! Topdrive mode + ! + endif + + ! final adjustments + call Update_MouseHole_From_Snapshot() + + end subroutine PreProcessingSnapshot + + + + + subroutine Kelly_ConnectionNothing + use CSwingEnumVariables + use CSlipsEnumVariables + use CHookVariables + implicit none + + call Set_HookHeight(75.0) + call sleep(1) + + ! first wait for unity to get to starting point + loop1: do + if(Get_Swing() == SWING_WELL_END .and. Get_Slips() == SLIPS_SET_END) exit loop1 + call sleepqq(100) + enddo loop1 + call sleep(1) + + !TODO: possibly goto a position to activate swing + + ! goto preferred swing position + if(Swing_S == SWING_MOUSE_HOLE_END) then + call Set_Swing(SWING_MOUSE_HOLE_BEGIN) + call UpdateUnity() + loop2: do + if(Get_Swing() == SWING_MOUSE_HOLE_END) exit loop2 + call sleepqq(100) + enddo loop2 + elseif (Swing_S == SWING_RAT_HOLE_END) then + call Set_Swing(SWING_RAT_HOLE_BEGIN) + call UpdateUnity() + loop3: do + if(Get_Swing() == SWING_RAT_HOLE_END) exit loop3 + call sleepqq(100) + enddo loop3 + !elseif (Swing_S == SWING_WELL_END) then + ! call Set_Swing(SWING_WELL_BEGIN) + ! call UpdateUnity() + ! loop4: do + ! if(Get_Swing() == SWING_WELL_END) exit loop4 + ! call sleepqq(100) + ! enddo loop4 + endif + call sleep(3) + + ! move to final hook height + call Update_HookHeight_From_Snapshot() + call sleep(3) + + end subroutine Kelly_ConnectionNothing + + + + + + subroutine Kelly_ConnectionString + use CSwingEnumVariables + use CSlipsEnumVariables + use CHookVariables + use CTongEnumVariables + implicit none + + call Set_HookHeight(75.0) + call sleep(1) + + ! first wait for unity to get to starting point + loop1: do + if(Get_Swing() == SWING_WELL_END .and. Get_Slips() == SLIPS_SET_END) exit loop1 + call sleepqq(100) + enddo loop1 + call sleep(1) + + ! goto connection to string position + call Set_HookHeight_S(66.7) + call sleep(1) + + ! start tong makeup + call Set_Tong(TONG_MAKEUP_BEGIN) + call UpdateUnity() + loop2: do + if(Get_Tong() == TONG_MAKEUP_END) exit loop2 + call sleepqq(100) + enddo loop2 + call sleepqq(100) + + ! release slips + call Set_Slips(SLIPS_UNSET_BEGIN) + call UpdateUnity() + loop3: do + if(Get_Slips() == SLIPS_UNSET_END) exit loop3 + call sleepqq(100) + enddo loop3 + call sleepqq(100) + + ! move to final hook height + call Update_HookHeight_From_Snapshot() + call sleep(3) + + + ! put slips to saved position + if(Slips_S == SLIPS_SET_END) then + + call Set_Slips(SLIPS_SET_BEGIN) + call UpdateUnity() + loop4: do + if(Get_Slips() == SLIPS_SET_END) exit loop4 + call sleepqq(100) + enddo loop4 + call sleep(1) + endif + + + end subroutine Kelly_ConnectionString + + + + + subroutine Kelly_ConnectionSingle + use CSwingEnumVariables + use CSlipsEnumVariables + use CTongEnumVariables + use CHookVariables + implicit none + + call Set_HookHeight(75.0) + call sleep(1) + + ! first wait for unity to get to starting point + loop1: do + if(Get_Swing() == SWING_WELL_END .and. Get_Slips() == SLIPS_SET_END) exit loop1 + call sleepqq(100) + enddo loop1 + call sleep(1) + + + ! goto swing mouse hole position + call Set_HookHeight_S(70.0) + call sleep(1) + + ! swing mouse hole + call Set_Swing(SWING_MOUSE_HOLE_BEGIN) + call UpdateUnity() + loop2: do + if(Get_Swing() == SWING_MOUSE_HOLE_END) exit loop2 + call sleepqq(100) + enddo loop2 + call sleepqq(100) + + + ! goto makeup pipe location + call Set_HookHeight_S(65.0) + call sleep(1) + + + ! start tong makeup + call Set_Tong(TONG_MAKEUP_BEGIN) + call UpdateUnity() + loop3: do + if(Get_Tong() == TONG_MAKEUP_END) exit loop3 + call sleepqq(100) + enddo loop3 + call sleepqq(100) + + + + if (Swing_S == SWING_WELL_END) then ! already in mouse hole + + ! goto swing location + call Set_HookHeight_S(98.0) + call sleep(1) + + ! goto preferred swing position + call Set_Swing(SWING_WELL_BEGIN) + call UpdateUnity() + loop4: do + if(Get_Swing() == SWING_WELL_END) exit loop4 + call sleepqq(100) + enddo loop4 + call sleep(2) + + endif + + + ! move to final hook height + call Update_HookHeight_From_Snapshot() + call sleep(3) + + end subroutine Kelly_ConnectionSingle + + + + + + + subroutine Elevator_ConnectionNothing + use CSwingEnumVariables + use CSlipsEnumVariables + use CHookVariables + use CKellyEnumVariables + implicit none + + call Set_HookHeight(75.0) + call sleep(1) + + ! first wait for unity to get to starting point + loop1: do + if(Get_Swing() == SWING_WELL_END .and. Get_Slips() == SLIPS_SET_END) exit loop1 + call sleepqq(100) + enddo loop1 + call sleep(1) + + + !TODO: possibly goto a position to activate swing + + !! first goto mouse hole + !call Set_Swing(SWING_MOUSE_HOLE_BEGIN) + !call UpdateUnity() + !loop2: do + ! if(Get_Swing() == SWING_MOUSE_HOLE_END) exit loop2 + ! call sleepqq(100) + !enddo loop2 + !call sleep(1) + ! + !! then goto rat hole + !call Set_Swing(SWING_RAT_HOLE_BEGIN) + !call UpdateUnity() + !loop3: do + ! if(Get_Swing() == SWING_RAT_HOLE_END) exit loop3 + ! call sleepqq(100) + !enddo loop3 + !call sleep(1) + + ! kelly back + call Set_Kelly(KELLY_REMOVE) + call sleepqq(100) + + + + ! goto preferred swing position + if(Swing_S == SWING_MOUSE_HOLE_END) then + call Set_Swing(SWING_MOUSE_HOLE_BEGIN) + call UpdateUnity() + loop4: do + if(Get_Swing() == SWING_MOUSE_HOLE_END) exit loop4 + call sleepqq(100) + enddo loop4 + elseif (Swing_S == SWING_RAT_HOLE_END) then + call Set_Swing(SWING_RAT_HOLE_BEGIN) + call UpdateUnity() + loop5: do + if(Get_Swing() == SWING_RAT_HOLE_END) exit loop5 + call sleepqq(100) + enddo loop5 + elseif (Swing_S == SWING_WELL_END) then + call Set_Swing(SWING_WELL_BEGIN) + call UpdateUnity() + loop6: do + if(Get_Swing() == SWING_WELL_END) exit loop6 + call sleepqq(100) + enddo loop6 + endif + call sleepqq(100) + + + + ! move to final hook height + call Update_HookHeight_From_Snapshot() + call sleep(3) + + end subroutine Elevator_ConnectionNothing + + + + + + subroutine Elevator_ConnectionString + implicit none + end subroutine Elevator_ConnectionString + + + + + + + + subroutine Elevator_ConnectionStand + implicit none + end subroutine Elevator_ConnectionStand + + + + + + + subroutine Elevator_ConnectionSingle + implicit none + end subroutine Elevator_ConnectionSingle + + + + + +end module COperationScenariosMain \ No newline at end of file diff --git a/CSharp/OperationScenarios/Common/COperationScenariosSettings.f90 b/CSharp/OperationScenarios/Common/COperationScenariosSettings.f90 new file mode 100644 index 0000000..13a4f7c --- /dev/null +++ b/CSharp/OperationScenarios/Common/COperationScenariosSettings.f90 @@ -0,0 +1,488 @@ +module COperationScenariosSettings + implicit none + public + contains + + !subroutine Initialization() + ! use CSimulationVariables + ! use CUnityOutputs, only: SetupUnityOutputs => Setup + ! + ! use CBucketEnum + ! use CTongEnum + ! use CSwingEnum + ! use CSlipsEnum + ! use CSafetyValveEnum + ! use COperationConditionEnum + ! use CMouseHoleEnum + ! use CKellyEnum + ! use CKellyConnectionEnum + ! use CIbopEnum + ! use CHeadEnum + ! use CElevatorEnum + ! use CElevatorConnectionEnum + ! + ! use CInstallFillupHeadPermission + ! use CInstallMudBucketPermission + ! use CIrIbopPermission + ! use CIrSafetyValvePermission + ! use CRemoveFillupHeadPermission + ! use CRemoveMudBucketPermission + ! + ! use CCloseKellyCockLedNotification + ! use CCloseSafetyValveLedNotification + ! use CFillMouseHoleLedNotification + ! use CIrIBopLedNotification + ! use CIrSafetyValveLedNotification + ! use CLatchLedNotification + ! use COpenKellyCockLedNotification + ! use COpenSafetyValveLedNotification + ! use CSlipsNotification + ! use CSwingLedNotification + ! use CTongNotification + ! use CUnlatchLedNotification + ! + ! use CHookHeight + ! use CIbopHeight + ! use CNearFloorConnection + ! use CSafetyValveHeight + ! use CSlackOff + ! use CStandRack + ! use CStringPressure + ! use CZeroStringSpeed + ! + ! use CStringUpdate + ! + ! use CFlowPipeDisconnectEnum + ! use CFlowKellyDisconnectEnum + ! + ! use CFillupHeadPermission + ! use CSwingDrillPermission + ! use CSwingOffPermission + ! use CSwingTiltPermission + ! use CTdsStemJointHeight + ! use CTdsConnectionModesEnum + ! use CTdsElevatorModesEnum + ! use CTdsSpineEnum + ! use CTdsSwingEnum + ! use CTdsTongEnum + ! use CTdsBackupClamp + ! + ! use CTdsIbopLedNotification + ! use CTdsPowerLedNotification + ! + ! use CTdsTorqueWrenchLedNotification + ! + ! implicit none + ! + ! call SetupUnityOutputs() + ! + ! call Subscribe_Tong() + ! call Subscribe_MudBucket() + ! call Subscribe_ElevatorConnection() + ! call Subscribe_Elevator() + ! call Subscribe_FillupHead() + ! call Subscribe_Ibop() + ! call Subscribe_KellyConnection() + ! call Subscribe_Kelly() + ! call Subscribe_MouseHole() + ! call Subscribe_OperationCondition() + ! call Subscribe_SafetyValve() + ! call Subscribe_Slips() + ! call Subscribe_Swing() + ! + ! + ! call Subscribe_InstallFillupHeadPermission() + ! call Subscribe_InstallMudBucketPermission() + ! call Subscribe_IrIbopPermission() + ! call Subscribe_IrSafetyValvePermission() + ! call Subscribe_RemoveFillupHeadPermission() + ! call Subscribe_RemoveMudBucketPermission() + ! + ! call Subscribe_CloseKellyCockLed() + ! call Subscribe_CloseSafetyValveLed() + ! call Subscribe_FillMouseHoleLed() + ! call Subscribe_IrIBopLed() + ! call Subscribe_IrSafetyValveLed() + ! call Subscribe_LatchLed() + ! call Subscribe_OpenKellyCockLed() + ! call Subscribe_OpenSafetyValveLed() + ! call Subscribe_SlipsNotification() + ! call Subscribe_SwingLed() + ! call Subscribe_UnlatchLed() + ! + ! call Subscribe_HookHeight() + ! call Subscribe_IbopHeight() + ! call Subscribe_NearFloorConnection() + ! call Subscribe_SafetyValveHeight() + ! call Subscribe_SlackOff() + ! call Subscribe_StringPressure() + ! call Subscribe_ZeroStringSpeed() + ! call Subscribe_StandRack() + ! + ! call Subscribe_StringUpdate() + ! + ! call Subscribe_TongNotification() + ! + ! call Subscribe_FlowKellyDisconnect() + ! call Subscribe_FlowPipeDisconnect() + ! + ! + ! + ! + ! + ! !top drive + ! call Subscribe_TdsConnectionModes() + ! call Subscribe_TdsElevatorModes() + ! call Subscribe_FillupHeadPermission() + ! call Subscribe_SwingDrillPermission() + ! call Subscribe_SwingOffPermission() + ! call Subscribe_SwingTiltPermission() + ! call Subscribe_TdsStemJointHeight() + ! call Subscribe_TdsTong() + ! call Subscribe_TdsBackupClamp() + ! call Subscribe_TdsSwing() + ! call Subscribe_TdsSpine() + ! call Subscribe_PowerLed() + ! call Subscribe_IbopLed() + ! + ! call Subscribe_TorqueWrenchLed() + ! + ! + ! call OnSimulationStart%Add(SetDefaultValues) + ! + !end subroutine + + subroutine SetDefaultValues() + use COperationScenariosVariables + use CHoistingVariables, only: DriveType, TopDrive_DriveType + use CManifolds, only: RemoveSafetyValve_TripMode, RemoveSafetyValve_KellyMode + implicit none + + call Set_KellyConnection(KELLY_CONNECTION_NOTHING) + !Get_KellyConnection() + !KELLY_CONNECTION_NOTHING + !KELLY_CONNECTION_STRING + !KELLY_CONNECTION_SINGLE + call Set_ElevatorConnection(ELEVATOR_CONNECTION_NOTHING) + !Get_ElevatorConnection() + !ELEVATOR_CONNECTION_NOTHING + !ELEVATOR_CONNECTION_STRING + !ELEVATOR_CONNECTION_STAND + !ELEVATOR_CONNECTION_SINGLE + !ELEVATOR_LATCH_STRING + !ELEVATOR_LATCH_SINGLE + !ELEVATOR_LATCH_STAND + + + + + + + + + call Set_CloseKellyCockLed(.false.) !Get_CloseKellyCockLed() + call Set_CloseSafetyValveLed(.false.) !Get_CloseSafetyValveLed() + call Set_FillMouseHoleLed(.true.) !Get_FillMouseHoleLed() + call Set_IrIBopLed(.false.) !Get_IrIBopLed() + !call Set_IrSafetyValveLed(.true.) !Get_IrSafetyValveLed() + if(DriveType == TopDrive_DriveType) then + call RemoveSafetyValve_TripMode() + call RemoveSafetyValve_KellyMode() + call Set_IrSafetyValveLed(.false.) + else + call Set_IrSafetyValveLed(.true.) + endif + call Set_LatchLed(.false.) !Get_LatchLed() + call Set_OpenKellyCockLed(.true.) !Get_OpenKellyCockLed() + call Set_OpenSafetyValveLed(.true.) !Get_OpenSafetyValveLed() + call Set_SlipsNotification(.false.) !Get_SlipsNotification() + call Set_SwingLed(.false.) !Get_SwingLed() + call Set_TongNotification(.false.) !Get_TongNotification() + call Set_UnlatchLed(.false.) !Get_UnlatchLed() + + + + + + + + call Set_InstallFillupHeadPermission(.false.) !Get_InstallFillupHeadPermission() + call Set_InstallMudBucketPermission(.false.) !Get_InstallMudBucketPermission() + call Set_IrIbopPermission(.false.) !Get_IrIbopPermission() + call Set_IrSafetyValvePermission(.false.) !Get_IrSafetyValvePermission() + call Set_RemoveFillupHeadPermission(.false.) !Get_RemoveFillupHeadPermission() + call Set_RemoveMudBucketPermission(.false.) !Get_RemoveMudBucketPermission() + + + + + + + + + + !call Set_HookHeight(REAL(70.0, 8)) !Get_HookHeight() + call Set_IbopHeight(3.0) !Get_IbopHeight() + !call Set_NearFloorConnection(3.0) !Get_NearFloorConnection() + call Set_SafetyValveHeight(3.0) !Get_SafetyValveHeight() + call Set_SlackOff(.true.) !Get_SlackOff() + !call Set_StandRack(0.0) !Get_StandRack() + !call Set_StringPressure(0.0) !Get_StringPressure() + !call Set_ZeroStringSpeed(.true.) !Get_ZeroStringSpeed() + + + + + + + + + !Get_ElevatorConnected() + !Get_JointConnection() + !Get_NearMonkeyBoardPosition() + !Get_NearFloorPosition() + !Get_SingleSetInMouseHole() + !Get_SwingCenter() + + + + + + + call Set_MudBucket(MUD_BUCKET_REMOVE) + !Get_MudBucket() + !MUD_BUCKET_INSTALL + !MUD_BUCKET_REMOVE + + call Set_Elevator(ELEVATOR_NEUTRAL) + ! Get_Elevator() + !ELEVATOR_NEUTRAL + !ELEVATOR_LATCH_STRING_BEGIN + !ELEVATOR_LATCH_STRING_END + !ELEVATOR_UNLATCH_STRING_BEGIN + !ELEVATOR_UNLATCH_STRING_END + !ELEVATOR_LATCH_STAND_BEGIN + !ELEVATOR_LATCH_STAND_END + !ELEVATOR_UNLATCH_STAND_BEGIN + !ELEVATOR_UNLATCH_STAND_END + !ELEVATOR_LATCH_SINGLE_BEGIN + !ELEVATOR_LATCH_SINGLE_END + !ELEVATOR_UNLATCH_SINGLE_BEGIN + !ELEVATOR_UNLATCH_SINGLE_END + + call Set_FillupHead(FILLUP_HEAD_REMOVE) + !Get_FillupHead() + !FILLUP_HEAD_INSTALL + !FILLUP_HEAD_REMOVE + + call Set_Ibop(IBOP_REMOVE) + !Get_Ibop() + !IBOP_INSTALL + !IBOP_REMOVE + + call Set_Kelly(KELLY_INSTALL) + !Get_Kelly() + !KELLY_NEUTRAL + !KELLY_INSTALL + !KELLY_REMOVE + + call Set_MouseHole(MOUSE_HOLE_FILL) + !Get_MouseHole() + !MOUSE_HOLE_NEUTRAL + !MOUSE_HOLE_FILL + !MOUSE_HOLE_EMPTY + + call Set_OperationCondition(OPERATION_DRILL) + !Get_OperationCondition() + !OPERATION_DRILL + !OPERATION_TRIP + + + call Set_SafetyValve(SAFETY_VALVE_INSTALL) + !Get_SafetyValve() + !SAFETY_VALVE_INSTALL + !SAFETY_VALVE_REMOVE + if(DriveType == TopDrive_DriveType) call Set_SafetyValve(SAFETY_VALVE_REMOVE) + + call Set_Slips(SLIPS_SET_BEGIN) + !Get_Slips() + !SLIPS_NEUTRAL + !SLIPS_SET_BEGIN + !SLIPS_SET_END + !SLIPS_UNSET_BEGIN + !SLIPS_UNSET_END + + call Set_Swing(SWING_WELL_BEGIN) + !Get_Swing() + !SWING_NEUTRAL + !SWING_MOUSE_HOLE_BEGIN + !SWING_MOUSE_HOLE_END + !SWING_RAT_HOLE_BEGIN + !SWING_RAT_HOLE_END + !SWING_WELL_BEGIN + !SWING_WELL_END + + call Set_Tong(TONG_NEUTRAL) + !Get_Tong() + !TONG_NEUTRAL + !TONG_BREAKOUT_BEGIN + !TONG_BREAKOUT_END + !TONG_MAKEUP_BEGIN + !TONG_MAKEUP_END + + + call Set_StringUpdate(STRING_UPDATE_NEUTRAL) + !Get_StringUpdate() + !STRING_UPDATE_NEUTRAL + !STRING_UPDATE_ADD_SINGLE + !STRING_UPDATE_ADD_STAND + !STRING_UPDATE_REMOVE_SINGLE + !STRING_UPDATE_REMOVE_STAND + + + + + + + + + + + + + + + + + + + + + + + + + + + call Set_TdsElevatorModes(TDS_ELEVATOR_CONNECTION_NOTHING) + !Get_TdsElevatorModes() + !TDS_ELEVATOR_CONNECTION_NOTHING + !TDS_ELEVATOR_CONNECTION_STRING + !TDS_ELEVATOR_CONNECTION_SINGLE + !TDS_ELEVATOR_CONNECTION_STAND + !TDS_ELEVATOR_LATCH_STRING + !TDS_ELEVATOR_LATCH_SINGLE + !TDS_ELEVATOR_LATCH_STAND + + + + + + call Set_TdsConnectionModes(TDS_CONNECTION_NOTHING) + !Get_TdsConnectionModes() + !TDS_CONNECTION_NOTHING + !TDS_CONNECTION_STRING + !TDS_CONNECTION_SPINE + + + + + call Set_SwingTiltPermission(.false.) !Get_SwingTiltPermission() + call Set_SwingOffPermission(.false.) !Get_SwingOffPermission() + call Set_SwingDrillPermission(.false.) !Get_SwingDrillPermission() + call Set_FillupHeadPermission(.false.) !Get_FillupHeadPermission() + + call Set_PowerLed(.false.) + call Set_IbopLed(.false.) + + call Set_TorqueWrenchLed(0) !Get_TorqueWrenchLed() + + + !TdsPower_REV = 1 + !TdsPower_OFF = 0 + !TdsPower_FWD = -1 + ! + !TdsMu_TORQ = 1 + !TdsMu_SPINE = 0 + !TdsMu_DRILL = -1 + ! + !TdsLinkTilt_TILT = 1 + !TdsLinkTilt_OFF = 0 + !TdsLinkTilt_DRILL = -1 + + !TDS IBOP TopDriveIbop + !TDS LinkTilt TopDriveLinkTiltState + !TDS MU TopDriveDrillTorqueState + !TDS Power TopDriveTdsPowerState + + !TopDriveTorqueWrench PRESSED=True or UNPRESSED=Falses + + !Get_TdsConnectionPossible() + !Get_TdsStemIn() + + !call Set_TdsStemJointHeight(v) !Get_TdsStemJointHeight() + + + !Get_SwingDrillPermission() + !Get_SwingOffPermission() + !Get_SwingTiltPermission() + !Get_FillupHeadPermission() + + call Set_TdsTong(TDS_TONG_BREAKOUT_END) + !Get_TdsTong() + !TDS_TONG_BREAKOUT_BEGIN + !TDS_TONG_BREAKOUT_END + !TDS_TONG_MAKEUP_BEGIN + !TDS_TONG_MAKEUP_END + + + call Set_TdsBackupClamp(BACKUP_CLAMP_OFF_END) + !Get_TdsBackupClamp() + !BACKUP_CLAMP_OFF_END + !BACKUP_CLAMP_OFF_BEGIN + !BACKUP_CLAMP_FW_BEGIN + !BACKUP_CLAMP_FW_END + + + call Set_TdsSwing(TDS_SWING_OFF_END) + !Get_TdsSwing() + !TDS_SWING_NEUTRAL + !TDS_SWING_OFF_BEGIN + !TDS_SWING_OFF_END + !TDS_SWING_DRILL_BEGIN + !TDS_SWING_DRILL_END + !TDS_SWING_TILT_BEGIN + !TDS_SWING_TILT_END + + + + + + call Set_TdsSpine(TDS_SPINE_NEUTRAL) !TDS_SPINE_DISCONNECT_END + !Get_TdsSpine() + !TDS_SPINE_NEUTRAL + !TDS_SPINE_CONNECT_BEGIN + !TDS_SPINE_CONNECT_END + !TDS_SPINE_DISCONNECT_BEGIN + !TDS_SPINE_DISCONNECT_END + + + + + + + + + + + + end subroutine + + subroutine SetDefaults_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: SetDefaults_WN + !DEC$ ATTRIBUTES ALIAS: 'SetDefaults_WN' :: SetDefaults_WN + implicit none + call SetDefaultValues() + end subroutine + +end module COperationScenariosSettings \ No newline at end of file diff --git a/CSharp/OperationScenarios/Common/COperationScenariosVariables.f90 b/CSharp/OperationScenarios/Common/COperationScenariosVariables.f90 new file mode 100644 index 0000000..7cc1547 --- /dev/null +++ b/CSharp/OperationScenarios/Common/COperationScenariosVariables.f90 @@ -0,0 +1,116 @@ +module COperationScenariosVariables + + use CKellyConnectionEnumVariables + use CElevatorConnectionEnumVariables + + use CCloseKellyCockLedNotificationVariables + use CCloseSafetyValveLedNotificationVariables + use CFillMouseHoleLedNotificationVariables + use CIrIBopLedNotificationVariables + use CIrSafetyValveLedNotificationVariables + use CLatchLedNotificationVariables + use COpenKellyCockLedNotificationVariables + use COpenSafetyValveLedNotificationVariables + use CSlipsNotificationVariables + use CSwingLedNotificationVariables + use CTongNotificationVariables + use CUnlatchLedNotificationVariables + + use CInstallFillupHeadPermissionVariables + use CInstallMudBucketPermissionVariables + use CIrIbopPermissionVariables + use CIrSafetyValvePermissionVariables + use CRemoveFillupHeadPermissionVariables + use CRemoveMudBucketPermissionVariables + + use CHookHeight + use CIbopHeight + use CNearFloorConnection + use CSafetyValveHeight + use CSlackOff + use CStandRack + use CStringPressure + use CZeroStringSpeed + + use CStringUpdateVariables + + use CUnityInputs + !, only: Get_OutOfMouseHole,& + ! Get_Unlatch,& + ! Get_Latch,& + ! Get_SlipsUnSet,& + ! Get_SlipsSet,& + ! Get_BreakupTong,& + ! Get_MakeupTong,& + ! Get_NewHookHeight,& + ! Get_ElevatorConnectionPossible,& + ! Get_JointConnectionPossible,& + ! Get_NearMonkeyBoardPosition,& + ! Get_SingleSetInMouseHole,& + ! Get_SwingCenter + use CUnityOutputs, only: GetRotaryRpm + + use CBucketEnumVariables + use CElevatorEnumVariables + use CHeadEnumVariables + use CIbopEnumVariables + use CKellyEnumVariables + use CMouseHoleEnumVariables + use COperationConditionEnumVariables + use CSafetyValveEnumVariables + use CSlipsEnumVariables + use CSwingEnumVariables + use CTongEnumVariables + + use CFillupHeadPermissionVariables + use CSwingDrillPermissionVariables + use CSwingOffPermissionVariables + use CSwingTiltPermissionVariables + use CTdsStemJointHeight + use CTdsConnectionModesEnumVariables + use CTdsElevatorModesEnumVariables + use CTdsSpineEnumVariables + use CTdsSwingEnumVariables + use CTdsTongEnumVariables + use CTdsBackupClampVariables + + use CHoistingVariables + use CTopDrivePanelVariables + + use CTdsPowerLedNotificationVariables + use CTdsIbopLedNotificationVariables + + use CTdsTorqueWrenchLedNotificationVariables + + implicit none + public + + real :: HKL = 63.76 ! Hook And Kelly Length + real :: HL = 17.81 ! Hook Length + real :: PL = 30.0 ! Pipe Length + real :: SL = 90.0 ! Stand Length + real :: LG = 8.0 ! Limit Gap + real :: SG = 3.0 ! Slips Gap + real :: TG = 4.0 ! Tong Gap + real :: RE = 3.0 ! Release + real :: ECG = 2.3 ! Elevator Connection Gap + + contains + + real(8) function TJH() + use TD_DrillStemComponents + implicit none + TJH = TD_TopJointHeight + end function + + real function TL() + implicit none + TL = 26.97 + end function + + real function NFC() + implicit none + NFC = Get_NearFloorConnection() + end function + +end module COperationScenariosVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Enums/CElevatorConnectionEnum.f90 b/CSharp/OperationScenarios/Enums/CElevatorConnectionEnum.f90 new file mode 100644 index 0000000..2dcf844 --- /dev/null +++ b/CSharp/OperationScenarios/Enums/CElevatorConnectionEnum.f90 @@ -0,0 +1,618 @@ +module CElevatorConnectionEnum + use COperationScenariosVariables + use CLog3 + use CLog4 + implicit none + contains + + subroutine Evaluate_ElevatorConnection() + use CCommon, only: SetStandRack + implicit none + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_ElevatorConnection=TopDrive' +#endif + endif + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ElevatorConnection=Kelly' +#endif + + !!OPERATION-CODE=83 + !if (Get_OperationCondition() == OPERATION_TRIP .and.& + ! Get_ElevatorConnection() == ELEVATOR_LATCH_STRING .and.& + ! Get_ElevatorPickup() .and.& + ! Get_Slips() == SLIPS_SET_END) then + ! !call Log_4('OPERATION-CODE=83') + ! call Set_ElevatorConnection(ELEVATOR_CONNECTION_STRING) + ! return + !end if + + + + + + + + + + + + + !OPERATION-CODE=78 + if (Get_ElevatorPickup() == .false. .and.& + Get_Tong() == TONG_BREAKOUT_END .and.& + Get_HookHeight() <= (HL + Get_NearFloorConnection() + PL) .and.& + Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) then + call Set_ElevatorConnection(ELEVATOR_LATCH_SINGLE) + return + end if + + !OPERATION-CODE=79 + if (Get_ElevatorPickup() == .false. .and.& + Get_Tong() == TONG_BREAKOUT_END .and.& + Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL - LG) .and.& + Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) then + call Set_ElevatorConnection(ELEVATOR_LATCH_STAND) + return + end if + + + + !OPERATION-CODE=83 + if (Get_ElevatorPickup().and.& + Get_ElevatorConnection() == ELEVATOR_LATCH_SINGLE) then + call Set_ElevatorConnection(ELEVATOR_CONNECTION_SINGLE) + return + end if + + + !OPERATION-CODE=84 + if (Get_ElevatorPickup().and.& + Get_ElevatorConnection() == ELEVATOR_LATCH_STAND) then + call Set_ElevatorConnection(ELEVATOR_CONNECTION_STAND) + return + end if + + + + + + + + + + + !OPERATION-CODE=7 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + !GetRotaryRpm() == 0.0d0 .and.& + !Get_StandRack() > 0 .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + !Get_Swing() == SWING_WELL_END .and.& + !Get_Slips() == SLIPS_SET_END .and.& + !Get_LatchLed() .and. + Get_Elevator() == ELEVATOR_LATCH_STAND_END) then + !call Log_4('OPERATION-CODE=7') + call Set_ElevatorConnection(ELEVATOR_CONNECTION_STAND) + !call Set_UnlatchLed(.true.) + !call Set_LatchLed(.false.) + call SetStandRack(Get_StandRack() - 1) + call Set_Elevator(ELEVATOR_NEUTRAL) + return + end if + + !OPERATION-CODE=8 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + !Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL - RE) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + SL + LG) .and.& + !GetRotaryRpm() == 0.0d0 .and.& + !Get_StandRack() < 80 .and.& + !Get_ElevatorConnectionPossible() .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_STAND .and.& + !Get_Swing() == SWING_WELL_END .and.& + !Get_Slips() == SLIPS_SET_END .and.& + !Get_UnlatchLed() .and.& + Get_Elevator() == ELEVATOR_UNLATCH_STAND_END) then + call Set_ElevatorConnection(ELEVATOR_CONNECTION_NOTHING) + !call Set_UnlatchLed(.false.) + !call Set_LatchLed(.true.) + call SetStandRack(Get_StandRack() + 1) + call Set_Elevator(ELEVATOR_NEUTRAL) + !call Set_Elevator(ELEVATOR_UNLATCH_STAND_BEGIN) + call Log_3('OPERATION-CODE=8') + return + end if + + !OPERATION-CODE=9 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + !Get_HookHeight() >= 18.0 .and. Get_HookHeight() <= 22.0 .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + !Get_Swing() == SWING_WELL_END .and.& + !Get_Slips() == SLIPS_SET_END .and.& + !Get_LatchLed() .and.& + !Get_ElevatorPickup() .and.& + Get_Elevator() == ELEVATOR_LATCH_STRING_END) then + !call Log_4('OPERATION-CODE=9') + call Set_ElevatorConnection(ELEVATOR_LATCH_STRING) + call Set_Elevator(ELEVATOR_NEUTRAL) + !call Set_UnlatchLed(.true.) + !call Set_LatchLed(.false.) + !call Set_UnlatchLed(.false.) + !call Set_Elevator(ELEVATOR_LATCH_STRING_BEGIN) + return + end if + + !OPERATION-CODE=60 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + !Get_HookHeight() <= (HL + Get_NearFloorConnection() - ECG) .and.& + Get_ElevatorPickup() == .false. .and.& + Get_Slips() == SLIPS_SET_END .and.& + !Get_Tong() /= TONG_MAKEUP_END .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING) then + call Set_ElevatorConnection(ELEVATOR_LATCH_STRING) + !call Set_Elevator(ELEVATOR_NEUTRAL) + return + end if + + !OPERATION-CODE=49 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_ElevatorPickup() .and.& + Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) then + call Set_ElevatorConnection(ELEVATOR_CONNECTION_STRING) + return + end if + + !OPERATION-CODE=10 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + !GetRotaryRpm() == 0.0d0 .and.& + (Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .or. Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) .and.& + !Get_Swing() == SWING_WELL_END .and.& + !Get_Slips() == SLIPS_SET_END .and.& + !Get_UnlatchLed() .and.& + Get_Elevator() == ELEVATOR_UNLATCH_STRING_END) then + !call Log_4('OPERATION-CODE=10') + call Set_ElevatorConnection(ELEVATOR_CONNECTION_NOTHING) + call Set_Elevator(ELEVATOR_NEUTRAL) + !call Set_UnlatchLed(.false.) + !call Set_LatchLed(.true.) + !call Set_Elevator(ELEVATOR_UNLATCH_STRING_BEGIN) + return + end if + + !OPERATION-CODE=11 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + !Get_ElevatorConnectionPossible() .and.& + Get_ElevatorPickup().and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + !Get_Swing() == SWING_MOUSE_HOLE_END .and.& + !Get_LatchLed() .and.& + !Get_FillMouseHoleLed() .and.& + Get_Elevator() == ELEVATOR_LATCH_SINGLE_END) then + + call Set_ElevatorConnection(ELEVATOR_CONNECTION_SINGLE) + !call Set_UnlatchLed(.true.) + call Set_FillMouseHoleLed(.false.) + call Set_MouseHole(MOUSE_HOLE_NEUTRAL) + call Set_Elevator(ELEVATOR_NEUTRAL) + !call Set_Elevator(ELEVATOR_LATCH_SINGLE_BEGIN) + return + end if + + !OPERATION-CODE=12 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE .and.& + !Get_Swing() == SWING_MOUSE_HOLE_END .and.& + !Get_UnlatchLed() .and.& + !Get_FillMouseHoleLed() == .false. .and.& + Get_Elevator() == ELEVATOR_UNLATCH_SINGLE_END) then + !call Log_4('OPERATION-CODE=12') + call Set_ElevatorConnection(ELEVATOR_CONNECTION_NOTHING) + !call Set_UnlatchLed(.false.) + !call Set_LatchLed(.true.) + call Set_FillMouseHoleLed(.true.) + call Set_MouseHole(MOUSE_HOLE_NEUTRAL) + call Set_Elevator(ELEVATOR_NEUTRAL) + !call Set_Elevator(ELEVATOR_UNLATCH_SINGLE_BEGIN) + return + end if + + !OPERATION-CODE=13 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() <= (HL + Get_NearFloorConnection() + PL) .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .and.& + !Get_Swing() == SWING_WELL_END .and.& + !Get_TongNotification() .and.& + Get_ElevatorPickup().and.& + Get_Tong() == TONG_BREAKOUT_END) then + !call Log_4('OPERATION-CODE=13') + call Set_ElevatorConnection(ELEVATOR_CONNECTION_SINGLE) + call Set_StringUpdate(STRING_UPDATE_REMOVE_SINGLE) + !call Set_StringUpdate(STRING_UPDATE_ADD_SINGLE) + call Set_Tong(TONG_NEUTRAL) + return + end if + + !OPERATION-CODE=14 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() <= (HL + Get_NearFloorConnection() + PL) .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE .and.& + !Get_Swing() == SWING_WELL_END .and.& + !Get_TongNotification() .and.& + Get_ElevatorPickup().and.& + Get_Tong() == TONG_MAKEUP_END) then + !call Log_4('OPERATION-CODE=14') + call Set_Tong(TONG_NEUTRAL) + call Set_ElevatorConnection(ELEVATOR_CONNECTION_STRING) + call Set_StringUpdate(STRING_UPDATE_ADD_SINGLE) + return + end if + + + !OPERATION-CODE=15 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL - LG) .and.& + !Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL - RE) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + SL + LG) .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .and.& + !Get_Swing() == SWING_WELL_END .and.& + !Get_TongNotification() .and.& + Get_ElevatorPickup().and.& + Get_Tong() == TONG_BREAKOUT_END) then + call Set_Tong(TONG_NEUTRAL) + call Set_ElevatorConnection(ELEVATOR_CONNECTION_STAND) + call Set_StringUpdate(STRING_UPDATE_REMOVE_STAND) + return + end if + + !OPERATION-CODE=16 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + !Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL - RE) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + SL + LG) .and.& + !Get_JointConnectionPossible() .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_STAND .and.& + !Get_Swing() == SWING_WELL_END .and.& + !Get_TongNotification() .and.& + Get_ElevatorPickup().and.& + Get_Tong() == TONG_MAKEUP_END) then + !call Log_4('OPERATION-CODE=16') + call Set_Tong(TONG_NEUTRAL) + call Set_ElevatorConnection(ELEVATOR_CONNECTION_STRING) + call Set_StringUpdate(STRING_UPDATE_ADD_STAND) + return + end if + + + + + + !OPERATION-CODE=75 + if (Get_ElevatorPickup() == .false. .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE) then + call Set_ElevatorConnection(ELEVATOR_LATCH_SINGLE) + return + end if + + + !OPERATION-CODE=76 + if (Get_ElevatorPickup() == .false. .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_STAND) then + call Set_ElevatorConnection(ELEVATOR_LATCH_STAND) + return + end if + + + + + + + endif + + + + end subroutine + + ! subroutine Subscribe_ElevatorConnection() + ! use CDrillingConsoleVariables + ! implicit none + ! call OnLatchPipePress%Add(ButtonPress_Latch_ElevatorConnection) + ! call OnUnlatchPipePress%Add(ButtonPress_Unlatch_ElevatorConnection) + ! call OnBreakoutLeverPress%Add(ButtonPress_Breakout_ElevatorConnection) + ! call OnMakeupLeverPress%Add(ButtonPress_Makeup_ElevatorConnection) + ! end subroutine + + subroutine ButtonPress_Latch_ElevatorConnection() + use CCommon, only: SetStandRack + implicit none + + + + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_Latch_ElevatorConnection=TopDrive' +#endif + + + + + !TOPDRIVE-CODE=73 + if ((Get_HookHeight() >= (TL() + SL - ECG + NFC()) .and. Get_HookHeight() <= (TL() + SL - ECG + NFC() + TG)) .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + Get_LatchLed()) then + + call Set_Elevator(ELEVATOR_LATCH_STAND_BEGIN) + call Set_LatchLed(.false.) + return + end if + + + + + + + + !TOPDRIVE-CODE=74 + if (Get_HookHeight() <= (TL() + NFC() - ECG) .and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_ElevatorConnectionPossible() .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + Get_LatchLed()) then + + call Set_Elevator(ELEVATOR_LATCH_STRING_BEGIN) + call Set_LatchLed(.false.) + return + end if + + + + + + + + !TOPDRIVE-CODE=75 + if (Get_ElevatorConnectionPossible() .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_TILT_END .and.& + Get_LatchLed() .and.& + Get_FillMouseHoleLed()) then + + call Set_Elevator(ELEVATOR_LATCH_SINGLE_BEGIN) + call Set_LatchLed(.false.) + return + end if + + + + + + + + endif + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_Latch_ElevatorConnection=Kelly' +#endif + + !OPERATION-CODE=86 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() <= (HL + Get_NearFloorConnection() - ECG) .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + Get_LatchLed() .and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_ElevatorConnectionPossible() .and.& + Get_HookHeight() <= (HL + Get_NearFloorConnection())) then + + !call Log_4("OPERATION-CODE=ELEVATOR_LATCH_STRING_BEGIN") + call Set_Elevator(ELEVATOR_LATCH_STRING_BEGIN) + call Set_LatchLed(.false.) + return + endif + + !OPERATION-CODE=85 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() >= (HL + SL - ECG + Get_NearFloorConnection()) .and. Get_HookHeight() <= (HL + SL - ECG + Get_NearFloorConnection() + LG) .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + Get_LatchLed() .and.& + Get_Swing() == SWING_WELL_END) then + !Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL + RE) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + SL + LG) + + call Set_Elevator(ELEVATOR_LATCH_STAND_BEGIN) + call Set_LatchLed(.false.) + return + endif + + !OPERATION-CODE=87 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + Get_LatchLed() .and.& + Get_FillMouseHoleLed() .and.& + Get_ElevatorConnectionPossible() .and.& + Get_Swing() == SWING_MOUSE_HOLE_END) then + + call Set_Elevator(ELEVATOR_LATCH_SINGLE_BEGIN) + call Set_LatchLed(.false.) + return + endif + + + endif + + + + + + + + + + + + + end subroutine + + subroutine ButtonPress_Unlatch_ElevatorConnection() + use CCommon, only: SetStandRack + implicit none + + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_Unlatch_ElevatorConnection=TopDrive' +#endif + + + + !TOPDRIVE-CODE=76 + if ((Get_HookHeight() >= (TL() + SL - ECG + NFC()) .and. Get_HookHeight() <= (TL() + SL - ECG + NFC() + TG)) .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STAND .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + Get_UnlatchLed()) then + + call Set_Elevator(ELEVATOR_UNLATCH_STAND_BEGIN) + call Set_UnlatchLed(.false.) + return + end if + + + + + + + + + !TOPDRIVE-CODE=77 + if (Get_HookHeight() <= (TL() + NFC() - ECG) .and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 6.0 .and.& + (Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_STRING .or. Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STRING) .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + Get_UnlatchLed()) then + + call Set_Elevator(ELEVATOR_UNLATCH_STRING_BEGIN) + call Set_UnlatchLed(.false.) + return + end if + + + + + + + + !TOPDRIVE-CODE=78 + if ((Get_HookHeight() > TL() .and. Get_HookHeight() < (TL() + NFC() + SG)) .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_SINGLE .and.& + Get_TdsSwing() == TDS_SWING_TILT_END .and.& + Get_UnlatchLed() .and.& + Get_FillMouseHoleLed() == .false.) then + + call Set_Elevator(ELEVATOR_UNLATCH_SINGLE_BEGIN) + call Set_UnlatchLed(.false.) + return + end if + + + + + + endif + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_Unlatch_ElevatorConnection=Kelly' +#endif + !OPERATION-CODE=89 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() <= (HL + Get_NearFloorConnection() - ECG) .and.& + (Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .or. Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) .and.& + Get_HookHeight() <= (HL + Get_NearFloorConnection()) .and.& + Get_UnlatchLed() .and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 6.0) then + !Get_HookHeight() >= (HL + Get_NearFloorConnection() - 4.0) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() - 2.0)) then + + call Set_Elevator(ELEVATOR_UNLATCH_STRING_BEGIN) + call Set_UnlatchLed(.false.) + return + endif + + !OPERATION-CODE=88 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() >= (HL + SL - ECG + Get_NearFloorConnection()) .and. Get_HookHeight() <= (HL + SL - ECG + Get_NearFloorConnection() + LG) .and.& + !Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL + RE) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + SL + LG) + Get_ElevatorConnection() == ELEVATOR_CONNECTION_STAND .and.& + Get_UnlatchLed() .and.& + Get_Swing() == SWING_WELL_END) then + + call Set_Elevator(ELEVATOR_UNLATCH_STAND_BEGIN) + call Set_UnlatchLed(.false.) + return + endif + + !OPERATION-CODE=90 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE .and.& + Get_UnlatchLed() .and.& + Get_HookHeight() >= HL .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + SG) .and.& + !Get_JointConnectionPossible() .and.& + Get_Swing() == SWING_MOUSE_HOLE_END) then + + call Set_Elevator(ELEVATOR_UNLATCH_SINGLE_BEGIN) + call Set_UnlatchLed(.false.) + return + endif + + endif + + + + + + + + end subroutine + + subroutine ButtonPress_Breakout_ElevatorConnection() + implicit none + + end subroutine + + subroutine ButtonPress_Makeup_ElevatorConnection() + implicit none + + end subroutine + +end module CElevatorConnectionEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/Enums/CElevatorConnectionEnumVariables.f90 b/CSharp/OperationScenarios/Enums/CElevatorConnectionEnumVariables.f90 new file mode 100644 index 0000000..eb0158f --- /dev/null +++ b/CSharp/OperationScenarios/Enums/CElevatorConnectionEnumVariables.f90 @@ -0,0 +1,64 @@ +module CElevatorConnectionEnumVariables + use CVoidEventHandlerCollection + implicit none + integer :: ElevatorConnection = 0 + + public + + type(VoidEventHandlerCollection) :: OnElevatorConnectionChange + + enum, bind(c) + enumerator ELEVATOR_CONNECTION_NOTHING + enumerator ELEVATOR_CONNECTION_STRING + enumerator ELEVATOR_CONNECTION_STAND + enumerator ELEVATOR_CONNECTION_SINGLE + enumerator ELEVATOR_LATCH_STRING + enumerator ELEVATOR_LATCH_SINGLE + enumerator ELEVATOR_LATCH_STAND + end enum + + private :: ElevatorConnection + contains + + subroutine Set_ElevatorConnection(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(ElevatorConnection == v) return +#endif + ElevatorConnection = v + +#ifdef deb + print*, 'ElevatorConnection=', ElevatorConnection +#endif + call OnElevatorConnectionChange%RunAll() + end subroutine + + integer function Get_ElevatorConnection() + implicit none + Get_ElevatorConnection = ElevatorConnection + end function + + + + + + + + subroutine Set_ElevatorConnection_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_ElevatorConnection_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_ElevatorConnection_WN' :: Set_ElevatorConnection_WN + implicit none + integer , intent(in) :: v + call Set_ElevatorConnection(v) + end subroutine + + integer function Get_ElevatorConnection_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_ElevatorConnection_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_ElevatorConnection_WN' :: Get_ElevatorConnection_WN + implicit none + Get_ElevatorConnection_WN = ElevatorConnection + end function + + +end module CElevatorConnectionEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Enums/CKellyConnectionEnum.f90 b/CSharp/OperationScenarios/Enums/CKellyConnectionEnum.f90 new file mode 100644 index 0000000..62f53e5 --- /dev/null +++ b/CSharp/OperationScenarios/Enums/CKellyConnectionEnum.f90 @@ -0,0 +1,175 @@ +module CKellyConnectionEnum + use COperationScenariosVariables + use CLog4 + implicit none + contains + + subroutine Evaluate_KellyConnection() + implicit none + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_KellyConnection=TopDrive' +#endif + endif + + + + + + + + + + + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_KellyConnection=Kelly' +#endif + + + + + !!OPERATION-CODE=4 + !if (Get_OperationCondition() == OPERATION_DRILL .and.& + ! Get_KellyConnection() == KELLY_CONNECTION_SINGLE .and.& + ! Get_Swing() == SWING_MOUSE_HOLE_END .and.& + ! Get_TongNotification() .and.& + ! Get_FillMouseHoleLed() == .false. .and.& + ! Get_Tong() == TONG_BREAKOUT_END) then + ! + ! call Set_FillMouseHoleLed(.true.) + ! return + !end if + + + + !OPERATION-CODE=1 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + !Get_JointConnectionPossible() .and.& + Get_KellyConnection() == KELLY_CONNECTION_NOTHING .and.& + Get_Swing() == SWING_WELL_END .and.& + !Get_TongNotification() .and.& + Get_Tong() == TONG_MAKEUP_END) then + !call Log_4('KELLY_CONNECTION_STRING') + call Set_Tong(TONG_NEUTRAL) + call Set_KellyConnection(KELLY_CONNECTION_STRING) + return + end if + + !OPERATION-CODE=2 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_StringPressure() == 0 .and.& + Get_HookHeight() <= (HKL + Get_NearFloorConnection()) .and.& + Get_KellyConnection() == KELLY_CONNECTION_STRING .and.& + Get_Swing() == SWING_WELL_END .and.& + !Get_TongNotification() .and.& + Get_Tong() == TONG_BREAKOUT_END) then + call Set_Tong(TONG_NEUTRAL) + call Set_KellyConnection(KELLY_CONNECTION_NOTHING) + call Set_SwingLed(.true.) + return + end if + + + !OPERATION-CODE=3 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + !Get_JointConnectionPossible() .and.& + Get_KellyConnection() == KELLY_CONNECTION_NOTHING .and.& + Get_Swing() == SWING_MOUSE_HOLE_END .and.& + !Get_TongNotification() .and.& + Get_FillMouseHoleLed() .and.& + Get_Tong() == TONG_MAKEUP_END) then + call Set_Tong(TONG_NEUTRAL) + call Set_KellyConnection(KELLY_CONNECTION_SINGLE) + call Set_SwingLed(.false.) + call Set_FillMouseHoleLed(.false.) + call Set_MouseHole(MOUSE_HOLE_NEUTRAL) + return + end if + + + !OPERATION-CODE=4 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_KellyConnection() == KELLY_CONNECTION_SINGLE .and.& + Get_Swing() == SWING_MOUSE_HOLE_END .and.& + !Get_TongNotification() .and.& + Get_FillMouseHoleLed() == .false. .and.& + Get_Tong() == TONG_BREAKOUT_END) then + call Set_Tong(TONG_NEUTRAL) + call Set_KellyConnection(KELLY_CONNECTION_NOTHING) + call Set_FillMouseHoleLed(.true.) + call Set_MouseHole(MOUSE_HOLE_NEUTRAL) + return + end if + + !OPERATION-CODE=5 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + !Get_JointConnectionPossible() .and.& + Get_KellyConnection() == KELLY_CONNECTION_SINGLE .and.& + Get_Swing() == SWING_WELL_END .and.& + !Get_TongNotification() .and.& + Get_Tong() == TONG_MAKEUP_END) then + call Set_Tong(TONG_NEUTRAL) + call Set_KellyConnection(KELLY_CONNECTION_STRING) + call Set_StringUpdate(STRING_UPDATE_ADD_SINGLE) + call Set_SwingLed(.false.) + return + end if + + !OPERATION-CODE=6 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_StringPressure() == 0 .and.& + Get_HookHeight() > 70.0 .and.& + Get_KellyConnection() == KELLY_CONNECTION_STRING .and.& + !Get_TongNotification() .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_Tong() == TONG_BREAKOUT_END) then + call Set_Tong(TONG_NEUTRAL) + call Set_KellyConnection(KELLY_CONNECTION_SINGLE) + call Set_StringUpdate(STRING_UPDATE_REMOVE_SINGLE) + return + end if + + endif + + + + + + end subroutine + + ! subroutine Subscribe_KellyConnection() + ! use CDrillingConsoleVariables + ! implicit none + + ! call OnBreakoutLeverPress%Add(ButtonPress_Breakout) + ! call OnMakeupLeverPress%Add(ButtonPress_Makeup) + ! end subroutine + + subroutine ButtonPress_Breakout() + implicit none +#ifdef deb + print*, 'ButtonPress_Breakout on ======> CKellyConnectionEnum' +#endif + end subroutine + + subroutine ButtonPress_Makeup() + implicit none +#ifdef deb + print*, 'ButtonPress_Makeup on ======> CKellyConnectionEnum' +#endif + end subroutine + +end module CKellyConnectionEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/Enums/CKellyConnectionEnumVariables.f90 b/CSharp/OperationScenarios/Enums/CKellyConnectionEnumVariables.f90 new file mode 100644 index 0000000..a05792e --- /dev/null +++ b/CSharp/OperationScenarios/Enums/CKellyConnectionEnumVariables.f90 @@ -0,0 +1,66 @@ +module CKellyConnectionEnumVariables + use CVoidEventHandlerCollection + implicit none + integer :: KellyConnection = 0 + + public + + type(VoidEventHandlerCollection) :: OnKellyConnectionChange + + enum, bind(c) + enumerator KELLY_CONNECTION_NOTHING + enumerator KELLY_CONNECTION_STRING + enumerator KELLY_CONNECTION_SINGLE + end enum + + private :: KellyConnection + contains + + subroutine Set_KellyConnection(v) + use CManifolds, Only: KellyConnected, KellyDisconnected + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(KellyConnection == v) return +#endif + + KellyConnection = v + + if(KellyConnection /= KELLY_CONNECTION_STRING) then + call KellyDisconnected() + else + call KellyConnected() + endif + +#ifdef deb + print*, 'KellyConnection=', KellyConnection +#endif + call OnKellyConnectionChange%RunAll() + end subroutine + + integer function Get_KellyConnection() + implicit none + Get_KellyConnection = KellyConnection + end function + + + + + + + subroutine Set_KellyConnection_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_KellyConnection_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_KellyConnection_WN' :: Set_KellyConnection_WN + implicit none + integer , intent(in) :: v + call Set_KellyConnection(v) + end subroutine + + integer function Get_KellyConnection_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_KellyConnection_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_KellyConnection_WN' :: Get_KellyConnection_WN + implicit none + Get_KellyConnection_WN = KellyConnection + end function + +end module CKellyConnectionEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Enums/CTdsConnectionModesEnum.f90 b/CSharp/OperationScenarios/Enums/CTdsConnectionModesEnum.f90 new file mode 100644 index 0000000..e0bd44a --- /dev/null +++ b/CSharp/OperationScenarios/Enums/CTdsConnectionModesEnum.f90 @@ -0,0 +1,81 @@ +module CTdsConnectionModesEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_TdsConnectionModes() + implicit none + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_TdsConnectionModes=TopDrive' +#endif + + !TOPDRIVE-CODE=3 + if (Get_TdsStemIn() .and.& + Get_TdsSpine() == TDS_SPINE_CONNECT_END .and.& + !TopDriveDrillTorqueState == TdsMu_SPINE + Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING) then + + call Set_TdsConnectionModes(TDS_CONNECTION_SPINE) + return + end if + + + !TOPDRIVE-CODE=4 + if (Get_TdsTong() == TDS_TONG_MAKEUP_END .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_SPINE ) then + + call Set_TdsConnectionModes(TDS_CONNECTION_STRING) + TopDriveTorqueWrenchLed = LED_OFF + return + end if + + + !TOPDRIVE-CODE=5 + if (Get_TdsTong() == TDS_TONG_BREAKOUT_END .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_STRING ) then + + call Set_TdsConnectionModes(TDS_CONNECTION_SPINE) + TopDriveTorqueWrenchLed = LED_OFF + return + end if + + + + !TOPDRIVE-CODE=6 + if (Get_TdsSpine() == TDS_SPINE_DISCONNECT_END .and.& + !Get_TdsStemIn() == .false. .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_SPINE) then + + call Set_TdsConnectionModes(TDS_CONNECTION_NOTHING) + return + end if + + + endif + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_TdsConnectionModes=Kelly' +#endif + endif + + + + + + + end subroutine + + subroutine Subscribe_TdsConnectionModes() + use CDrillingConsoleVariables + implicit none + end subroutine + +end module CTdsConnectionModesEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/Enums/CTdsConnectionModesEnumVariables.f90 b/CSharp/OperationScenarios/Enums/CTdsConnectionModesEnumVariables.f90 new file mode 100644 index 0000000..a1d429d --- /dev/null +++ b/CSharp/OperationScenarios/Enums/CTdsConnectionModesEnumVariables.f90 @@ -0,0 +1,68 @@ +module CTdsConnectionModesEnumVariables + use CVoidEventHandlerCollection + implicit none + integer :: TdsConnectionModes = 0 + + public + + type(VoidEventHandlerCollection) :: OnTdsConnectionModesChange + + enum, bind(c) + enumerator TDS_CONNECTION_NOTHING + enumerator TDS_CONNECTION_STRING + enumerator TDS_CONNECTION_SPINE + end enum + + private :: TdsConnectionModes + contains + + subroutine Set_TdsConnectionModes(v) + use CManifolds, Only: KellyConnected, KellyDisconnected + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(TdsConnectionModes == v) return +#endif + TdsConnectionModes = v + + if(TdsConnectionModes == TDS_CONNECTION_NOTHING) then + call KellyDisconnected() + else + call KellyConnected() + endif + +#ifdef deb + print*, 'TdsConnectionModes=', TdsConnectionModes +#endif + call OnTdsConnectionModesChange%RunAll() + end subroutine + + integer function Get_TdsConnectionModes() + implicit none + Get_TdsConnectionModes = TdsConnectionModes + end function + + + + + subroutine Set_TdsConnectionModes_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_TdsConnectionModes_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_TdsConnectionModes_WN' :: Set_TdsConnectionModes_WN + implicit none + integer , intent(in) :: v + call Set_TdsConnectionModes(v) + end subroutine + + + integer function Get_TdsConnectionModes_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_TdsConnectionModes_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_TdsConnectionModes_WN' :: Get_TdsConnectionModes_WN + implicit none + Get_TdsConnectionModes_WN = TdsConnectionModes + end function + + + + + +end module CTdsConnectionModesEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Enums/CTdsElevatorModesEnum.f90 b/CSharp/OperationScenarios/Enums/CTdsElevatorModesEnum.f90 new file mode 100644 index 0000000..09ed31d --- /dev/null +++ b/CSharp/OperationScenarios/Enums/CTdsElevatorModesEnum.f90 @@ -0,0 +1,330 @@ +module CTdsElevatorModesEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_TdsElevatorModes() + use CCommon, only: SetStandRack + implicit none + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_TdsElevatorModes=TopDrive' +#endif + + + !TOPDRIVE-CODE=7 + if (Get_Elevator() == ELEVATOR_LATCH_STRING_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_OFF_END ) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_LATCH_STRING) + call Set_Elevator(ELEVATOR_NEUTRAL) + return + end if + + + + !TOPDRIVE-CODE=8 + if (Get_HookHeight() <= (TL() + TJH() - ECG) .and.& + Get_ElevatorPickup() == .false. .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STRING) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_LATCH_STRING) + return + end if + + + + !TOPDRIVE-CODE=9 + if (Get_ElevatorPickup() .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_STRING) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_CONNECTION_STRING) + return + end if + + + !TOPDRIVE-CODE=10 + if (Get_Elevator() == ELEVATOR_UNLATCH_STRING_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_STRING) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_CONNECTION_NOTHING) + call Set_Elevator(ELEVATOR_NEUTRAL) + return + end if + + + + + !TOPDRIVE-CODE=11 + if (Get_Elevator() == ELEVATOR_UNLATCH_STRING_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_STRING .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_STRING) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_CONNECTION_NOTHING) + call Set_Elevator(ELEVATOR_NEUTRAL) + return + end if + + + + + + !TOPDRIVE-CODE=12 + if (Get_Elevator() == ELEVATOR_LATCH_STAND_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_CONNECTION_STAND) + call Set_Elevator(ELEVATOR_NEUTRAL) + call SetStandRack(Get_StandRack() - 1) + return + end if + + + + + !TOPDRIVE-CODE=13 + if (Get_Elevator() == ELEVATOR_UNLATCH_STAND_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STAND) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_CONNECTION_NOTHING) + call Set_Elevator(ELEVATOR_NEUTRAL) + call SetStandRack(Get_StandRack() + 1) + return + end if + + + + + !TOPDRIVE-CODE=14 + if (Get_Elevator() == ELEVATOR_LATCH_SINGLE_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_TILT_END .and.& + Get_FillMouseHoleLed()) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_CONNECTION_SINGLE) + call Set_Elevator(ELEVATOR_NEUTRAL) + call Set_UnlatchLed(.true.) + call Set_FillMouseHoleLed(.false.) + call Set_MouseHole(MOUSE_HOLE_NEUTRAL) + return + end if + + + + + + !TOPDRIVE-CODE=15 + if (Get_Elevator() == ELEVATOR_UNLATCH_SINGLE_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_SINGLE .and.& + Get_TdsSwing() == TDS_SWING_TILT_END .and.& + Get_FillMouseHoleLed() == .false.) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_CONNECTION_NOTHING) + call Set_Elevator(ELEVATOR_NEUTRAL) + call Set_UnlatchLed(.false.) + call Set_FillMouseHoleLed(.true.) + call Set_MouseHole(MOUSE_HOLE_NEUTRAL) + return + end if + + + + !TOPDRIVE-CODE=16 + if (Get_HookHeight() <= (TL() + NFC() + PL - ECG) .and.& + Get_Tong() == TONG_BREAKOUT_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_STRING .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_LATCH_SINGLE) + call Set_Tong(TONG_NEUTRAL) + call Set_StringUpdate(STRING_UPDATE_REMOVE_SINGLE) + return + end if + + + + + !TOPDRIVE-CODE=17 + if (Get_HookHeight() <= (TL() + NFC() + PL - ECG) .and.& + Get_Tong() == TONG_BREAKOUT_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STRING .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_CONNECTION_SINGLE) + call Set_Tong(TONG_NEUTRAL) + call Set_StringUpdate(STRING_UPDATE_REMOVE_SINGLE) + return + end if + + + + !TOPDRIVE-CODE=18 + if (Get_ElevatorPickup() .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_SINGLE) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_CONNECTION_SINGLE) + return + end if + + + + + !TOPDRIVE-CODE=19 + if (Get_HookHeight() <= (TL() + NFC() + PL - ECG) .and.& + Get_ElevatorPickup() == .false. .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_SINGLE) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_LATCH_SINGLE) + + return + end if + + + + + + + !TOPDRIVE-CODE=20 + if (Get_Tong() == TONG_MAKEUP_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_SINGLE) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_CONNECTION_STRING) + call Set_Tong(TONG_NEUTRAL) + call Set_StringUpdate(STRING_UPDATE_ADD_SINGLE) + return + end if + + + + + !TOPDRIVE-CODE=21 + if (Get_Tong() == TONG_MAKEUP_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_SINGLE) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_LATCH_STRING) + call Set_Tong(TONG_NEUTRAL) + call Set_StringUpdate(STRING_UPDATE_ADD_SINGLE) + return + end if + + + + !TOPDRIVE-CODE=22 + if (Get_HookHeight() <= (TL() + NFC() + SL - ECG) .and.& + Get_Tong() == TONG_BREAKOUT_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_STRING .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_LATCH_STAND) + call Set_Tong(TONG_NEUTRAL) + call Set_StringUpdate(STRING_UPDATE_REMOVE_STAND) + return + end if + + + + !TOPDRIVE-CODE=23 + if (Get_HookHeight() <= (TL() + NFC() + SL - ECG) .and.& + Get_Tong() == TONG_BREAKOUT_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STRING .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_CONNECTION_STAND) + call Set_Tong(TONG_NEUTRAL) + call Set_StringUpdate(STRING_UPDATE_REMOVE_STAND) + return + end if + + + + !TOPDRIVE-CODE=24 + if (Get_ElevatorPickup() .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_STAND) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_CONNECTION_STAND) + return + end if + + + + + + !TOPDRIVE-CODE=25 + if (Get_HookHeight() <= (TL() + NFC() + SL - ECG) .and.& + Get_ElevatorPickup() == .false. .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STAND) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_LATCH_STAND) + return + end if + + + + + !TOPDRIVE-CODE=26 + if (Get_Tong() == TONG_MAKEUP_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STAND) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_CONNECTION_STRING) + call Set_Tong(TONG_NEUTRAL) + call Set_StringUpdate(STRING_UPDATE_ADD_STAND) + return + end if + + + + + + + + + + !TOPDRIVE-CODE=27 + if (Get_Tong() == TONG_MAKEUP_END .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_STAND) then + + call Set_TdsElevatorModes(TDS_ELEVATOR_LATCH_STRING) + call Set_Tong(TONG_NEUTRAL) + call Set_StringUpdate(STRING_UPDATE_ADD_STAND) + return + end if + + + + + + + + + + + + endif + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_TdsElevatorModes=Kelly' +#endif + endif + + + + + end subroutine + + subroutine Subscribe_TdsElevatorModes() + use CDrillingConsoleVariables + implicit none + end subroutine + +end module CTdsElevatorModesEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/Enums/CTdsElevatorModesEnumVariables.f90 b/CSharp/OperationScenarios/Enums/CTdsElevatorModesEnumVariables.f90 new file mode 100644 index 0000000..e52213e --- /dev/null +++ b/CSharp/OperationScenarios/Enums/CTdsElevatorModesEnumVariables.f90 @@ -0,0 +1,62 @@ +module CTdsElevatorModesEnumVariables + use CVoidEventHandlerCollection + implicit none + integer :: TdsElevatorModes = 0 + + public + + type(VoidEventHandlerCollection) :: OnTdsElevatorModesChange + + enum, bind(c) + enumerator TDS_ELEVATOR_CONNECTION_NOTHING + enumerator TDS_ELEVATOR_CONNECTION_STRING + enumerator TDS_ELEVATOR_CONNECTION_SINGLE + enumerator TDS_ELEVATOR_CONNECTION_STAND + enumerator TDS_ELEVATOR_LATCH_STRING + enumerator TDS_ELEVATOR_LATCH_SINGLE + enumerator TDS_ELEVATOR_LATCH_STAND + end enum + + private :: TdsElevatorModes + contains + + subroutine Set_TdsElevatorModes(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(TdsElevatorModes == v) return +#endif + TdsElevatorModes = v + call OnTdsElevatorModesChange%RunAll() + end subroutine + + integer function Get_TdsElevatorModes() + implicit none + Get_TdsElevatorModes = TdsElevatorModes + end function + + + + + + + subroutine Set_TdsElevatorModes_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_TdsElevatorModes_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_TdsElevatorModes_WN' :: Set_TdsElevatorModes_WN + implicit none + integer , intent(in) :: v + call Set_TdsElevatorModes(v) + end subroutine + + integer function Get_TdsElevatorModes_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_TdsElevatorModes_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_TdsElevatorModes_WN' :: Get_TdsElevatorModes_WN + implicit none + Get_TdsElevatorModes_WN = TdsElevatorModes + end function + + + + + +end module CTdsElevatorModesEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CCloseKellyCockLedNotification.f90 b/CSharp/OperationScenarios/Notifications/CCloseKellyCockLedNotification.f90 new file mode 100644 index 0000000..0d702db --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CCloseKellyCockLedNotification.f90 @@ -0,0 +1,83 @@ +module CCloseKellyCockLedNotification + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_CloseKellyCockLed() + implicit none + + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_CloseKellyCockLed=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_CloseKellyCockLed=Kelly' +!#endif +! endif + + + end subroutine + + ! subroutine Subscribe_CloseKellyCockLed() + ! use CDrillingConsoleVariables + ! implicit none + ! call OnCloseKellyCockPress%Add(ButtonPress_CloseKellyCock) + ! end subroutine + + subroutine ButtonPress_CloseKellyCock() + implicit none + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_CloseKellyCockLed=TopDrive' +#endif + endif + + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_CloseKellyCockLed=Kelly' +#endif + + !OPERATION-CODE=66 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_CloseKellyCockLed() == .false. .and.& + Get_OpenKellyCockLed()) then + call Set_OpenKellyCockLed(.false.) + call Set_CloseKellyCockLed(.true.) + return + end if + + + endif + + + + + + + end subroutine + +end module CCloseKellyCockLedNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CCloseKellyCockLedNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/CCloseKellyCockLedNotificationVariables.f90 new file mode 100644 index 0000000..bce6bf9 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CCloseKellyCockLedNotificationVariables.f90 @@ -0,0 +1,67 @@ +module CCloseKellyCockLedNotificationVariables + use CVoidEventHandlerCollection + implicit none + logical :: CloseKellyCockLed = .false. + + public + + type(VoidEventHandlerCollection) :: OnCloseKellyCockLedChange + + private :: CloseKellyCockLed + + contains + + subroutine Set_CloseKellyCockLed(v) + use CDrillingConsoleVariables, only: CloseKellyCockLedHw => CloseKellyCockLed + use CManifolds, only: CloseKellyCock + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(CloseKellyCockLed == v) return +#endif + CloseKellyCockLed = v + + if(CloseKellyCockLed) then + call CloseKellyCock() + endif + + !if(CloseKellyCockLed) then + ! CloseKellyCockLedHw = 1 + !else + ! CloseKellyCockLedHw = 0 + !endif + call OnCloseKellyCockLedChange%RunAll() + end subroutine + + logical function Get_CloseKellyCockLed() + implicit none + Get_CloseKellyCockLed = CloseKellyCockLed + end function + + + + + + + + + + + + subroutine Set_CloseKellyCockLed_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_CloseKellyCockLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_CloseKellyCockLed_WN' :: Set_CloseKellyCockLed_WN + implicit none + logical , intent(in) :: v + call Set_CloseKellyCockLed(v) + end subroutine + + + logical function Get_CloseKellyCockLed_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_CloseKellyCockLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_CloseKellyCockLed_WN' :: Get_CloseKellyCockLed_WN + implicit none + Get_CloseKellyCockLed_WN = CloseKellyCockLed + end function + +end module CCloseKellyCockLedNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CCloseSafetyValveLedNotification.f90 b/CSharp/OperationScenarios/Notifications/CCloseSafetyValveLedNotification.f90 new file mode 100644 index 0000000..b49c748 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CCloseSafetyValveLedNotification.f90 @@ -0,0 +1,109 @@ +module CCloseSafetyValveLedNotification + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_CloseSafetyValveLed() + implicit none + + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_CloseSafetyValveLed=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_CloseSafetyValveLed=Kelly' +!#endif +! endif + + + end subroutine + + ! subroutine Subscribe_CloseSafetyValveLed() + ! use CDrillingConsoleVariables + ! implicit none + ! call OnCloseSafetyValvePress%Add(ButtonPress_CloseSafetyValve) + ! call OnOperationConditionChangeInt%Add(Set_Operation_CloseSafetyValveLed) + ! end subroutine + + subroutine Set_Operation_CloseSafetyValveLed(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(operation_CloseSafetyValveLed == v) return +#endif + operation_CloseSafetyValveLed = v +#ifdef deb + print*, 'operation_CloseSafetyValveLed=', operation_CloseSafetyValveLed +#endif + end subroutine + + subroutine ButtonPress_CloseSafetyValve() + implicit none + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_CloseSafetyValveLed=TopDrive' +#endif + + + !TOPDRIVE-CODE=57 + if (Get_SafetyValveHeight() >= 3.0 .and. Get_SafetyValveHeight() <= 12.0 .and.& + Get_CloseSafetyValveLed() == .false. .and.& + Get_OpenSafetyValveLed()) then + + call Set_OpenSafetyValveLed(.false.) + call Set_CloseSafetyValveLed(.true.) + return + end if + + + endif + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_CloseSafetyValveLed=Kelly' +#endif + + !OPERATION-CODE=59 + if (Get_SafetyValveHeight() >= 3.0 .and. Get_SafetyValveHeight() <= 12.0 .and.& + Get_CloseSafetyValveLed() == .false. .and.& + Get_OpenSafetyValveLed()) then + call Set_OpenSafetyValveLed(.false.) + call Set_CloseSafetyValveLed(.true.) + return + end if + + + endif + + + + + + + end subroutine + +end module CCloseSafetyValveLedNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CCloseSafetyValveLedNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/CCloseSafetyValveLedNotificationVariables.f90 new file mode 100644 index 0000000..71571cb --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CCloseSafetyValveLedNotificationVariables.f90 @@ -0,0 +1,67 @@ +module CCloseSafetyValveLedNotificationVariables + use CVoidEventHandlerCollection + implicit none + logical :: CloseSafetyValveLed = .false. + integer :: operation_CloseSafetyValveLed = 0 + + public + type(VoidEventHandlerCollection) :: OnCloseSafetyValveLedChange + + private :: CloseSafetyValveLed + + contains + + subroutine Set_CloseSafetyValveLed(v) + use CDrillingConsoleVariables, only: CloseSafetyValveLedHw => CloseSafetyValveLed + use CManifolds, only: CloseSafetyValve_TopDrive, CloseSafetyValve_KellyMode, CloseSafetyValve_TripMode + use CHoistingVariables, only: DriveType, TopDrive_DriveType, Kelly_DriveType + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(CloseSafetyValveLed == v) return +#endif + CloseSafetyValveLed = v + + if(CloseSafetyValveLed) then + !!call CloseSafetyValve() + if(DriveType == TopDrive_DriveType) call CloseSafetyValve_TopDrive() + if(DriveType == Kelly_DriveType .and. operation_CloseSafetyValveLed == 0) call CloseSafetyValve_KellyMode() + if(DriveType == Kelly_DriveType .and. operation_CloseSafetyValveLed == 1) call CloseSafetyValve_TripMode() + endif + + !if(CloseSafetyValveLed) then + ! CloseSafetyValveLedHw = 1 + !else + ! CloseSafetyValveLedHw = 0 + !endif + call OnCloseSafetyValveLedChange%RunAll() + end subroutine + + logical function Get_CloseSafetyValveLed() + implicit none + Get_CloseSafetyValveLed = CloseSafetyValveLed + end function + + + + + + + subroutine Set_CloseSafetyValveLed_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_CloseSafetyValveLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_CloseSafetyValveLed_WN' :: Set_CloseSafetyValveLed_WN + implicit none + logical , intent(in) :: v + call Set_CloseSafetyValveLed(v) + end subroutine + + logical function Get_CloseSafetyValveLed_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_CloseSafetyValveLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_CloseSafetyValveLed_WN' :: Get_CloseSafetyValveLed_WN + implicit none + Get_CloseSafetyValveLed_WN = CloseSafetyValveLed + end function + + + +end module CCloseSafetyValveLedNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CFillMouseHoleLedNotification.f90 b/CSharp/OperationScenarios/Notifications/CFillMouseHoleLedNotification.f90 new file mode 100644 index 0000000..ec194ba --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CFillMouseHoleLedNotification.f90 @@ -0,0 +1,114 @@ +module CFillMouseHoleLedNotification + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_FillMouseHoleLed() + implicit none + + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_FillMouseHoleLed=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_FillMouseHoleLed=Kelly' +!#endif +! endif + + + + end subroutine + + ! subroutine Subscribe_FillMouseHoleLed() + ! use CDrillingConsoleVariables + ! implicit none + ! call OnFillMouseHolePress%Add(ButtonPress_FillMouseHole) + ! end subroutine + + subroutine ButtonPress_FillMouseHole() + implicit none + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_FillMouseHoleLed=TopDrive' +#endif + + + + + !TOPDRIVE-CODE=71 + if (Get_FillMouseHoleLed()) then + + call Set_FillMouseHoleLed(.false.) + call Set_MouseHole(MOUSE_HOLE_NEUTRAL) + return + end if + + + !TOPDRIVE-CODE=72 + if (Get_TdsElevatorModes() /= TDS_ELEVATOR_CONNECTION_STRING .and.& + Get_FillMouseHoleLed() == .false.) then + + call Set_FillMouseHoleLed(.true.) + return + end if + + + + + + endif + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_FillMouseHoleLed=Kelly' +#endif + + + !OPERATION-CODE=81 + if (Get_FillMouseHoleLed()) then + call Set_FillMouseHoleLed(.false.) + call Set_MouseHole(MOUSE_HOLE_EMPTY) + return + end if + + !OPERATION-CODE=82 + if (Get_KellyConnection() /= KELLY_CONNECTION_SINGLE .and.& + Get_ElevatorConnection() /= ELEVATOR_CONNECTION_SINGLE .and.& + Get_FillMouseHoleLed() == .false.) then + call Set_FillMouseHoleLed(.true.) + call Set_MouseHole(MOUSE_HOLE_FILL) + return + end if + + + endif + + + + + + + end subroutine + +end module CFillMouseHoleLedNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CFillMouseHoleLedNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/CFillMouseHoleLedNotificationVariables.f90 new file mode 100644 index 0000000..93270cf --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CFillMouseHoleLedNotificationVariables.f90 @@ -0,0 +1,61 @@ +module CFillMouseHoleLedNotificationVariables + use CVoidEventHandlerCollection + implicit none + logical :: FillMouseHoleLed = .false. + + public + + type(VoidEventHandlerCollection) :: OnFillMouseHoleLedChange + + private :: FillMouseHoleLed + + contains + + subroutine Set_FillMouseHoleLed(v) + use CDrillingConsoleVariables, only: FillMouseHoleLedHw => FillMouseHoleLed + use CMouseHoleEnumVariables + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(FillMouseHoleLed == v) return +#endif + FillMouseHoleLed = v + if(FillMouseHoleLed) then + FillMouseHoleLedHw = 1 + !call Set_MouseHole(MOUSE_HOLE_FILL) + else + FillMouseHoleLedHw = 0 + !call Set_MouseHole(MOUSE_HOLE_EMPTY) + endif + call OnFillMouseHoleLedChange%RunAll() + end subroutine + + logical function Get_FillMouseHoleLed() + implicit none + Get_FillMouseHoleLed = FillMouseHoleLed + end function + + + + + + + subroutine Set_FillMouseHoleLed_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_FillMouseHoleLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_FillMouseHoleLed_WN' :: Set_FillMouseHoleLed_WN + implicit none + logical , intent(in) :: v + call Set_FillMouseHoleLed(v) + end subroutine + + + logical function Get_FillMouseHoleLed_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_FillMouseHoleLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_FillMouseHoleLed_WN' :: Get_FillMouseHoleLed_WN + implicit none + Get_FillMouseHoleLed_WN = FillMouseHoleLed + end function + + + +end module CFillMouseHoleLedNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CIrIBopLedNotification.f90 b/CSharp/OperationScenarios/Notifications/CIrIBopLedNotification.f90 new file mode 100644 index 0000000..d9a532e --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CIrIBopLedNotification.f90 @@ -0,0 +1,116 @@ +module CIrIBopLedNotification + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_IrIBopLed() + implicit none + + + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_IrIBopLed=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_IrIBopLed=Kelly' +!#endif +! endif + + + + + end subroutine + + ! subroutine Subscribe_IrIBopLed() + ! use CDrillingConsoleVariables + ! implicit none + ! call OnIRIBopPress%Add(ButtonPress_IrIBop) + ! end subroutine + + subroutine ButtonPress_IrIBop() + implicit none + + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_IrIBopLed=TopDrive' +#endif + + + + !TOPDRIVE-CODE=59 + if (Get_IrIbopPermission() .and.& + Get_IrIBopLed() == .false.) then + + call Set_IrIBopLed(.true.) + return + end if + + + + + !TOPDRIVE-CODE=60 + if (Get_IrIbopPermission() .and.& + Get_IrIBopLed() == .true. .and.& + TopDriveTdsPowerState == TdsPower_OFF) then + + call Set_IrIBopLed(.false.) + return + end if + + + + endif + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_IrIBopLed=Kelly' +#endif + + !OPERATION-CODE=63 + if (Get_IrIbopPermission() .and.& + Get_IrIBopLed() == .false.) then + call Set_IrIBopLed(.true.) + return + end if + + + !OPERATION-CODE=64 + if (Get_IrIbopPermission() .and.& + Get_IrIBopLed()) then + call Set_IrIBopLed(.false.) + return + end if + + endif + + + + + + + + end subroutine + +end module CIrIBopLedNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CIrIBopLedNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/CIrIBopLedNotificationVariables.f90 new file mode 100644 index 0000000..e9f0809 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CIrIBopLedNotificationVariables.f90 @@ -0,0 +1,63 @@ +module CIrIBopLedNotificationVariables + use CVoidEventHandlerCollection + implicit none + logical :: IrIBopLed = .false. + + public + + type(VoidEventHandlerCollection) :: OnIrIBopLedChange + + private :: IrIBopLed + + contains + + subroutine Set_IrIBopLed(v) + use CDrillingConsoleVariables, only: IRIBopLedHw => IRIBopLed + use CManifolds, only: InstallIBop, RemoveIBop + use CIbopEnumVariables, only: Set_Ibop_Install, Set_Ibop_Remove + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(IrIBopLed == v) return +#endif + IrIBopLed = v + if(IrIBopLed) then + IRIBopLedHw = 1 + call InstallIBop() + call Set_Ibop_Install() + else + IRIBopLedHw = 0 + call RemoveIBop() + call Set_Ibop_Remove() + endif + call OnIrIBopLedChange%RunAll() + end subroutine + + logical function Get_IrIBopLed() + implicit none + Get_IrIBopLed = IrIBopLed + end function + + + + + + subroutine Set_IrIBopLed_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_IrIBopLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_IrIBopLed_WN' :: Set_IrIBopLed_WN + implicit none + logical , intent(in) :: v + call Set_IrIBopLed(v) + end subroutine + + + logical function Get_IrIBopLed_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_IrIBopLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_IrIBopLed_WN' :: Get_IrIBopLed_WN + implicit none + Get_IrIBopLed_WN = IrIBopLed + end function + + + +end module CIrIBopLedNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CIrSafetyValveLedNotification.f90 b/CSharp/OperationScenarios/Notifications/CIrSafetyValveLedNotification.f90 new file mode 100644 index 0000000..c5bd6f9 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CIrSafetyValveLedNotification.f90 @@ -0,0 +1,162 @@ +module CIrSafetyValveLedNotification + use COperationScenariosVariables + !use COperationConditionEnumVariables + implicit none + contains + + subroutine Evaluate_IrSafetyValveLed() + implicit none + + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_IrSafetyValveLed=TopDrive' +#endif + + + + + + + + + endif + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_IrSafetyValveLed=Kelly' +#endif + + !OPERATION-CODE=56 + if (Get_OperationCondition() == OPERATION_DRILL) then + call Set_IrSafetyValveLed(.true.) + return + end if + + + + + !call Set_IrSafetyValveLed(.false.) + + endif + + + + + + + + + + + + + end subroutine + + ! subroutine Subscribe_IrSafetyValveLed() + ! use CDrillingConsoleVariables + ! implicit none + ! call OnIRSafetyValvePress%Add(ButtonPress_IrSafetyValve) + ! call OnOperationConditionChangeInt%Add(Set_Operation_IrSafetyValveLed) + ! end subroutine + + subroutine Set_Operation_IrSafetyValveLed(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(operation_IrSafetyValveLed == v) return +#endif + operation_IrSafetyValveLed = v +#ifdef deb + print*, 'operation_IrSafetyValveLed=', operation_IrSafetyValveLed +#endif + end subroutine + + subroutine ButtonPress_IrSafetyValve() + implicit none + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_IrSafetyValveLed=TopDrive' +#endif + + + + !TOPDRIVE-CODE=53 + if (Get_IrSafetyValvePermission() .and.& + Get_IrSafetyValveLed()) then + + call Set_IrSafetyValveLed(.false.) + return + end if + + + + + + + + + !TOPDRIVE-CODE=54 + if (Get_IrSafetyValvePermission() .and.& + Get_IrSafetyValveLed() == .false.) then + + call Set_IrSafetyValveLed(.true.) + return + end if + + + endif + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_IrSafetyValveLed=Kelly' +#endif + + !OPERATION-CODE=54 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_IrSafetyValvePermission() .and.& + Get_IrSafetyValveLed()) then + call Set_IrSafetyValveLed(.false.) + return + end if + + + !OPERATION-CODE=55 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_IrSafetyValvePermission() .and.& + Get_IrSafetyValveLed() == .false. ) then + call Set_IrSafetyValveLed(.true.) + return + end if + + endif + + + + + + + + + end subroutine + +end module CIrSafetyValveLedNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CIrSafetyValveLedNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/CIrSafetyValveLedNotificationVariables.f90 new file mode 100644 index 0000000..1aaae43 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CIrSafetyValveLedNotificationVariables.f90 @@ -0,0 +1,90 @@ +module CIrSafetyValveLedNotificationVariables + use CVoidEventHandlerCollection + implicit none + logical :: IrSafetyValveLed = .false. + integer :: operation_IrSafetyValveLed = 0 + + public + + type(VoidEventHandlerCollection) :: OnIrSafetyValveLedChange + + private :: IrSafetyValveLed + contains + + subroutine Set_IrSafetyValveLed(v) + use CDrillingConsoleVariables, only: IRSafetyValveLedHw => IRSafetyValveLed + use CManifolds, only: & + InstallSafetyValve_TopDrive, & + InstallSafetyValve_KellyMode, & + InstallSafetyValve_TripMode, & + RemoveSafetyValve_TopDrive, & + RemoveSafetyValve_KellyMode, & + RemoveSafetyValve_TripMode + use CSafetyValveEnumVariables, only: Set_SafetyValve_Install, Set_SafetyValve_Remove + use CHoistingVariables, only: DriveType, TopDrive_DriveType, Kelly_DriveType + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(IrSafetyValveLed == v) return +#endif + IrSafetyValveLed = v + + if(IrSafetyValveLed) then + IRSafetyValveLedHw = 1 + + if(DriveType == TopDrive_DriveType) call InstallSafetyValve_TopDrive() + if(DriveType == Kelly_DriveType .and. operation_IrSafetyValveLed == 0) call InstallSafetyValve_KellyMode() + if(DriveType == Kelly_DriveType .and. operation_IrSafetyValveLed == 1) call InstallSafetyValve_TripMode() + + call Set_SafetyValve_Install() + else + IRSafetyValveLedHw = 0 + + if(DriveType == TopDrive_DriveType) call RemoveSafetyValve_TopDrive() + if(DriveType == Kelly_DriveType .and. operation_IrSafetyValveLed == 0) call RemoveSafetyValve_KellyMode() + if(DriveType == Kelly_DriveType .and. operation_IrSafetyValveLed == 1) call RemoveSafetyValve_TripMode() + + call Set_SafetyValve_Remove() + endif + + call OnIrSafetyValveLedChange%RunAll() + end subroutine + + logical function Get_IrSafetyValveLed() + implicit none + Get_IrSafetyValveLed = IrSafetyValveLed + end function + + + + + + subroutine Set_IrSafetyValveLed_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_IrSafetyValveLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_IrSafetyValveLed_WN' :: Set_IrSafetyValveLed_WN + implicit none + logical , intent(in) :: v + call Set_IrSafetyValveLed(v) + end subroutine + + + logical function Get_IrSafetyValveLed_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_IrSafetyValveLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_IrSafetyValveLed_WN' :: Get_IrSafetyValveLed_WN + implicit none + Get_IrSafetyValveLed_WN = IrSafetyValveLed + end function + + + subroutine Set_IrSafetyValveLed_off() + implicit none + call Set_IrSafetyValveLed(.false.) + end subroutine + + subroutine Set_IrSafetyValveLed_on() + implicit none + call Set_IrSafetyValveLed(.true.) + end subroutine + + +end module CIrSafetyValveLedNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CLatchLedNotification.f90 b/CSharp/OperationScenarios/Notifications/CLatchLedNotification.f90 new file mode 100644 index 0000000..97d3639 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CLatchLedNotification.f90 @@ -0,0 +1,251 @@ +module CLatchLedNotification + use COperationScenariosVariables + use CLog4 + implicit none + contains + + subroutine Evaluate_LatchLed() + use CCommon + implicit none + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_LatchLed=TopDrive' +#endif + + + !TOPDRIVE-CODE=44 + if (Get_HookHeight() <= (TL() + NFC() - ECG) .and.& + Get_ElevatorConnectionPossible() .and.& + (Get_Elevator() /= ELEVATOR_LATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_SINGLE_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_SINGLE_BEGIN) .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_LatchLed(.true.) + return + end if + + + + + + + + !TOPDRIVE-CODE=45 + if ((Get_HookHeight() >= (TL() + SL - ECG + NFC()) .and. Get_HookHeight() <= (TL() + SL - ECG + NFC() + TG)) .and.& + GetStandRack() > 0 .and.& + Get_JointConnectionPossible() == .false. .and.& + (Get_Elevator() /= ELEVATOR_LATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_SINGLE_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_SINGLE_BEGIN) .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_LatchLed(.true.) + return + end if + + + + + + + !TOPDRIVE-CODE=46 + if ((Get_HookHeight() >= (TL() + SL - ECG + NFC()) .and. Get_HookHeight() <= (TL() + SL - ECG + NFC() + TG)) .and.& + Get_ElevatorConnectionPossible() .and.& + (Get_Elevator() /= ELEVATOR_LATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_SINGLE_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_SINGLE_BEGIN) .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_TILT_END .and.& + Get_FillMouseHoleLed()) then + + call Set_LatchLed(.true.) + return + end if + + + + + + + + + + + + + + + + + + + + endif + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_LatchLed=Kelly' +#endif + + !OPERATION-CODE=36 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() <= (HL + Get_NearFloorConnection() - ECG) .and.& + Get_ElevatorConnectionPossible() .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + (Get_Elevator() /= ELEVATOR_LATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_SINGLE_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_SINGLE_BEGIN) .and.& + !Get_Elevator() == ELEVATOR_UNLATCH_STRING_END .and.& + !Get_UnlatchLed() .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_Slips() == SLIPS_SET_END) then + + !call Log_4("OPERATION-CODE=36") + call Set_LatchLed(.true.) + !call Set_UnlatchLed(.false.) + return + end if + + + !OPERATION-CODE=37 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_StandRack() > 0 .and.& + Get_HookHeight() >= (HL + SL - ECG + Get_NearFloorConnection()) .and. Get_HookHeight() <= (HL + SL - ECG + Get_NearFloorConnection() + LG) .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + (Get_Elevator() /= ELEVATOR_LATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_SINGLE_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_SINGLE_BEGIN) .and.& + !Get_Elevator() == ELEVATOR_UNLATCH_STAND_END .and.& + Get_ElevatorConnectionPossible() == .false. .and.& + !Get_UnlatchLed() .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_Slips() == SLIPS_SET_END) then + + !call Log_4("OPERATION-CODE=37") + call Set_LatchLed(.true.) + !call Set_UnlatchLed(.false.) + return + end if + + + + + + + + + + + + + + !OPERATION-CODE=38 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_ElevatorConnectionPossible() .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + (Get_Elevator() /= ELEVATOR_LATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_SINGLE_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_SINGLE_BEGIN) .and.& + !Get_Elevator() == ELEVATOR_UNLATCH_SINGLE_END .and.& + !Get_UnlatchLed() .and.& + Get_Swing() == SWING_MOUSE_HOLE_END .and.& + Get_FillMouseHoleLed()) then + + !call Log_4("OPERATION-CODE=38") + call Set_LatchLed(.true.) + !call Set_UnlatchLed(.false.) + return + end if + + + + + + + !OPERATION-CODE=39 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() >= 27.41 .and.& + (Get_Elevator() /= ELEVATOR_LATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_SINGLE_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_SINGLE_BEGIN) .and.& + !Get_UnlatchLed() .and.& + Get_Swing() == SWING_RAT_HOLE_END) then + + !call Log_4("OPERATION-CODE=39") + call Set_LatchLed(.true.) + !call Set_UnlatchLed(.false.) + return + end if + + + + call Set_LatchLed(.false.) + + endif + + + + + + + + end subroutine + + ! subroutine Subscribe_LatchLed() + ! use COperationConditionEnumVariables + ! use CStandRack + ! use CUnityInputs, OnElevatorConnectionChangePosibility => OnElevatorConnectionPossibleChange + ! use CSwingEnumVariables + ! use CSlipsEnumVariables + ! use CFillMouseHoleLedNotificationVariables + ! implicit none + + ! call OnOperationConditionChange%Add(Evaluate_LatchLed) + ! call OnStandRackChanged%Add(Evaluate_LatchLed) + ! call OnElevatorConnectionChangePosibility%Add(Evaluate_LatchLed) + ! call OnElevatorPickupChange%Add(Evaluate_LatchLed) + ! call OnNearFloorPositionChange%Add(Evaluate_LatchLed) + ! call OnSwingChange%Add(Evaluate_LatchLed) + ! call OnSlipsChange%Add(Evaluate_LatchLed) + ! call OnFillMouseHoleLedChange%Add(Evaluate_LatchLed) + + + ! end subroutine + +end module CLatchLedNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CLatchLedNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/CLatchLedNotificationVariables.f90 new file mode 100644 index 0000000..880ab81 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CLatchLedNotificationVariables.f90 @@ -0,0 +1,58 @@ +module CLatchLedNotificationVariables + use CVoidEventHandlerCollection + implicit none + logical :: LatchLed = .false. + + public + + type(VoidEventHandlerCollection) :: OnLatchLedChange + + private :: LatchLed + + contains + + subroutine Set_LatchLed(v) + use CDrillingConsoleVariables, only: LatchPipeLED + !use CUnlatchLedNotification + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(LatchLed == v) return +#endif + LatchLed = v + if(LatchLed) then + LatchPipeLED = 1 + !call Set_UnlatchLed(.false.) + else + LatchPipeLED = 0 + endif + call OnLatchLedChange%RunAll() + end subroutine + + logical function Get_LatchLed() + implicit none + Get_LatchLed = LatchLed + end function + + + + + + + + subroutine Set_LatchLed_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_LatchLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_LatchLed_WN' :: Set_LatchLed_WN + implicit none + logical , intent(in) :: v + call Set_LatchLed(v) + end subroutine + + logical function Get_LatchLed_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_LatchLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_LatchLed_WN' :: Get_LatchLed_WN + implicit none + Get_LatchLed_WN = LatchLed + end function + +end module CLatchLedNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/COpenKellyCockLedNotification.f90 b/CSharp/OperationScenarios/Notifications/COpenKellyCockLedNotification.f90 new file mode 100644 index 0000000..4a7149b --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/COpenKellyCockLedNotification.f90 @@ -0,0 +1,62 @@ +module COpenKellyCockLedNotification + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_OpenKellyCockLed() + implicit none + + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_OpenKellyCockLed=TopDrive' +!#endif +! endif +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_OpenKellyCockLed=Kelly' +!#endif +! endif + + + + end subroutine + + ! subroutine Subscribe_OpenKellyCockLed() + ! use CDrillingConsoleVariables + ! implicit none + ! call OnOpenKellyCockPress%Add(ButtonPress_OpenKellyCock) + ! end subroutine + + subroutine ButtonPress_OpenKellyCock() + implicit none + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_OpenKellyCock=TopDrive' +#endif + endif + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_OpenKellyCock=Kelly' +#endif + !OPERATION-CODE=65 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_OpenKellyCockLed() == .false. .and.& + Get_CloseKellyCockLed()) then + call Set_OpenKellyCockLed(.true.) + call Set_CloseKellyCockLed(.false.) + return + end if + endif + + + + end subroutine + +end module COpenKellyCockLedNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/COpenKellyCockLedNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/COpenKellyCockLedNotificationVariables.f90 new file mode 100644 index 0000000..991ce97 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/COpenKellyCockLedNotificationVariables.f90 @@ -0,0 +1,63 @@ +module COpenKellyCockLedNotificationVariables + use CVoidEventHandlerCollection + implicit none + logical :: OpenKellyCockLed = .false. + + public + + type(VoidEventHandlerCollection) :: OnOpenKellyCockLedChange + + private :: OpenKellyCockLed + + contains + + subroutine Set_OpenKellyCockLed(v) + use CDrillingConsoleVariables, only: OpenKellyCockLedHw => OpenKellyCockLed + use CManifolds, only: OpenKellyCock + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(OpenKellyCockLed == v) return +#endif + OpenKellyCockLed = v + + if(OpenKellyCockLed) then + call OpenKellyCock() + endif + + ! HAS BEEN IMPLEMENTED IN CMANIFOLD + + !if(OpenKellyCockLed) then + ! OpenKellyCockLedHw = 1 + !else + ! OpenKellyCockLedHw = 0 + !endif + + call OnOpenKellyCockLedChange%RunAll() + end subroutine + + logical function Get_OpenKellyCockLed() + implicit none + Get_OpenKellyCockLed = OpenKellyCockLed + end function + + + + + + subroutine Set_OpenKellyCockLed_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_OpenKellyCockLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_OpenKellyCockLed_WN' :: Set_OpenKellyCockLed_WN + implicit none + logical , intent(in) :: v + call Set_OpenKellyCockLed(v) + end subroutine + + logical function Get_OpenKellyCockLed_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_OpenKellyCockLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_OpenKellyCockLed_WN' :: Get_OpenKellyCockLed_WN + implicit none + Get_OpenKellyCockLed_WN = OpenKellyCockLed + end function + +end module COpenKellyCockLedNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/COpenSafetyValveLedNotification.f90 b/CSharp/OperationScenarios/Notifications/COpenSafetyValveLedNotification.f90 new file mode 100644 index 0000000..62b4fa3 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/COpenSafetyValveLedNotification.f90 @@ -0,0 +1,106 @@ +module COpenSafetyValveLedNotification + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_OpenSafetyValveLed() + implicit none + + + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_OpenSafetyValveLed=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_OpenSafetyValveLed=Kelly' +!#endif +! endif + + + + end subroutine + + ! subroutine Subscribe_OpenSafetyValveLed() + ! use CDrillingConsoleVariables + ! implicit none + ! call OnOpenSafetyValvePress%Add(ButtonPress_OpenSafetyValve) + ! call OnOperationConditionChangeInt%Add(Set_Operation_OpenSafetyValveLed) + ! end subroutine + + + subroutine Set_Operation_OpenSafetyValveLed(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(operation_OpenSafetyValveLed == v) return +#endif + operation_OpenSafetyValveLed = v +#ifdef deb + print*, 'operation_OpenSafetyValveLed=', operation_OpenSafetyValveLed +#endif + end subroutine + + + subroutine ButtonPress_OpenSafetyValve() + implicit none + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_OpenSafetyValve=TopDrive' +#endif + + !TOPDRIVE-CODE=56 + if (Get_SafetyValveHeight() >= 3.0 .and. Get_SafetyValveHeight() <= 12.0 .and.& + Get_OpenSafetyValveLed() == .false. .and.& + Get_CloseSafetyValveLed()) then + + call Set_CloseSafetyValveLed(.false.) + call Set_OpenSafetyValveLed(.true.) + return + end if + + endif + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_OpenSafetyValve=Kelly' +#endif + + + !OPERATION-CODE=58 + if (Get_SafetyValveHeight() >= 3.0 .and. Get_SafetyValveHeight() <= 12.0 .and.& + Get_OpenSafetyValveLed() == .false. .and.& + Get_CloseSafetyValveLed()) then + call Set_OpenSafetyValveLed(.true.) + call Set_CloseSafetyValveLed(.false.) + return + end if + + + endif + + + + + end subroutine + +end module COpenSafetyValveLedNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/COpenSafetyValveLedNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/COpenSafetyValveLedNotificationVariables.f90 new file mode 100644 index 0000000..573bf47 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/COpenSafetyValveLedNotificationVariables.f90 @@ -0,0 +1,65 @@ +module COpenSafetyValveLedNotificationVariables + use CVoidEventHandlerCollection + implicit none + logical :: OpenSafetyValveLed = .false. + integer :: operation_OpenSafetyValveLed = 0 + + public + type(VoidEventHandlerCollection) :: OnOpenSafetyValveLedChange + + private :: OpenSafetyValveLed + + contains + + subroutine Set_OpenSafetyValveLed(v) + use CDrillingConsoleVariables, only: OpenSafetyValveLedHw => OpenSafetyValveLed + use CManifolds, only: OpenSafetyValve_TopDrive, OpenSafetyValve_KellyMode, OpenSafetyValve_TripMode + use CHoistingVariables, only: DriveType, TopDrive_DriveType, Kelly_DriveType + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(OpenSafetyValveLed == v) return +#endif + OpenSafetyValveLed = v + + if(OpenSafetyValveLed) then + !!call OpenSafetyValve() + if(DriveType == TopDrive_DriveType) call OpenSafetyValve_TopDrive() + if(DriveType == Kelly_DriveType .and. operation_OpenSafetyValveLed == 0) call OpenSafetyValve_KellyMode() + if(DriveType == Kelly_DriveType .and. operation_OpenSafetyValveLed == 1) call OpenSafetyValve_TripMode() + endif + + !if(OpenSafetyValveLed) then + ! OpenSafetyValveLedHw = 1 + !else + ! OpenSafetyValveLedHw = 0 + !endif + + call OnOpenSafetyValveLedChange%RunAll() + end subroutine + + logical function Get_OpenSafetyValveLed() + implicit none + Get_OpenSafetyValveLed = OpenSafetyValveLed + end function + + + + subroutine Set_OpenSafetyValveLed_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_OpenSafetyValveLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_OpenSafetyValveLed_WN' :: Set_OpenSafetyValveLed_WN + implicit none + logical , intent(in) :: v + call Set_OpenSafetyValveLed(v) + end subroutine + + logical function Get_OpenSafetyValveLed_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_OpenSafetyValveLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_OpenSafetyValveLed_WN' :: Get_OpenSafetyValveLed_WN + implicit none + Get_OpenSafetyValveLed_WN = OpenSafetyValveLed + end function + + + +end module COpenSafetyValveLedNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CSlipsNotification.f90 b/CSharp/OperationScenarios/Notifications/CSlipsNotification.f90 new file mode 100644 index 0000000..9f9ec08 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CSlipsNotification.f90 @@ -0,0 +1,134 @@ +module CSlipsNotification + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_SlipsNotification() + implicit none + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_SlipsNotification=TopDrive' +#endif + + !TOPDRIVE-CODE=28 + if (Get_ZeroStringSpeed() .and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_Slips() == SLIPS_UNSET_END .and.& + Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 6.0) then + + call Set_SlipsNotification(.true.) + return + end if + + + + !TOPDRIVE-CODE=29 + if (Get_ZeroStringSpeed() .and.& + GetRotaryRpm() == 0.0d0 .and.& + (Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STRING .or.& + Get_TdsConnectionModes() == TDS_CONNECTION_STRING) .and.& + Get_Slips() == SLIPS_SET_END .and.& + Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 6.0) then + + call Set_SlipsNotification(.true.) + return + end if + + + + + endif + + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_SlipsNotification=Kelly' +#endif + + !OPERATION-CODE=53 + if (Get_ZeroStringSpeed() .and.& + GetRotaryRpm() == 0.0d0 .and.& + !Get_KellyConnection() == KELLY_CONNECTION_STRING + Get_Slips() == SLIPS_UNSET_END .and.& + Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 6.0) then + call Set_SlipsNotification(.true.) + return + end if + + + + + + !OPERATION-CODE=77 + if (Get_ZeroStringSpeed() .and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_Slips() == SLIPS_SET_END .and.& + Get_IsKellyBushingSetInTable() == .false. .and.& + Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 6.0 .and.& + (Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .or. Get_KellyConnection() == KELLY_CONNECTION_STRING)) then + call Set_SlipsNotification(.true.) + + return + end if + + + + + + !if (Get_OperationCondition() == OPERATION_DRILL .and.& + ! Get_ZeroStringSpeed() .and.& + ! Get_SlackOff() .and.& + ! Get_KellyConnection() == KELLY_CONNECTION_STRING) then + ! call Set_SlipsNotification(.true.) + ! return + !end if + ! + ! + !if (Get_OperationCondition() == OPERATION_TRIP .and.& + ! Get_ZeroStringSpeed() .and.& + ! Get_NearFloorConnection() >= 21 .and. Get_NearFloorConnection() <= 25 .and.& + ! Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING) then + ! call Set_SlipsNotification(.true.) + ! return + !end if + + + + + call Set_SlipsNotification(.false.) + + endif + + + + + + + end subroutine + + ! subroutine Subscribe_SlipsNotification() + ! implicit none + + ! call OnOperationConditionChange%Add(Evaluate_SlipsNotification) + ! call OnSlackOffChange%Add(Evaluate_SlipsNotification) + ! call OnZeroStringSpeedChange%Add(Evaluate_SlipsNotification) + ! call OnNearFloorConnectionChange%Add(Evaluate_SlipsNotification) + ! call OnElevatorConnectionChange%Add(Evaluate_SlipsNotification) + ! call OnKellyConnectionChange%Add(Evaluate_SlipsNotification) + ! call OnSlipsChange%Add(Evaluate_SlipsNotification) + + ! end subroutine + +end module CSlipsNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CSlipsNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/CSlipsNotificationVariables.f90 new file mode 100644 index 0000000..c042d95 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CSlipsNotificationVariables.f90 @@ -0,0 +1,65 @@ +module CSlipsNotificationVariables + use CVoidEventHandlerCollection + use CIActionReference + implicit none + logical :: SlipsNotification = .false. + procedure (ActionBool), pointer :: SlipsNotificationPtr + + public + + type(VoidEventHandlerCollection) :: OnSlipsNotificationChange + + private :: SlipsNotification + + contains + + subroutine Set_SlipsNotification(v) + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(SlipsNotification == v) return +#endif + SlipsNotification = v + if(associated(SlipsNotificationPtr)) call SlipsNotificationPtr(SlipsNotification) +#ifdef deb + print*, 'SlipsNotification=', SlipsNotification +#endif + call OnSlipsNotificationChange%RunAll() + end subroutine + + logical function Get_SlipsNotification() + implicit none + Get_SlipsNotification = SlipsNotification + end function + + + + + + subroutine Set_SlipsNotification_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_SlipsNotification_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_SlipsNotification_WN' :: Set_SlipsNotification_WN + implicit none + logical , intent(in) :: v + call Set_SlipsNotification(v) + end subroutine + + logical function Get_SlipsNotification_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_SlipsNotification_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_SlipsNotification_WN' :: Get_SlipsNotification_WN + implicit none + Get_SlipsNotification_WN = SlipsNotification + end function + + + + + subroutine SubscribeSlipsNotification(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSlipsNotification + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSlipsNotification' :: SubscribeSlipsNotification + implicit none + procedure (ActionBool) :: a + SlipsNotificationPtr => a + end subroutine + +end module CSlipsNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CSwingLedNotification.f90 b/CSharp/OperationScenarios/Notifications/CSwingLedNotification.f90 new file mode 100644 index 0000000..ba47973 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CSwingLedNotification.f90 @@ -0,0 +1,122 @@ +module CSwingLedNotification + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_SwingLed() + implicit none + + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_SwingLed=TopDrive' +#endif + + + + endif + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_SwingLed=Kelly' +#endif + + + !OPERATION-CODE=22 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() >= (HL + Get_NearFloorConnection()) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + LG) .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + Get_JointConnectionPossible() == .false. .and.& + (Get_Swing() /= SWING_WELL_BEGIN .and.& + Get_Swing() /= SWING_MOUSE_HOLE_BEGIN .and.& + Get_Swing() /= SWING_RAT_HOLE_BEGIN) .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_SwingLed(.true.) + return + end if + + + !OPERATION-CODE=23 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() >= (HL + Get_NearFloorConnection() + PL) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + LG + PL) .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE .and.& + Get_JointConnectionPossible() == .false. .and.& + (Get_Swing() /= SWING_WELL_BEGIN .and.& + Get_Swing() /= SWING_MOUSE_HOLE_BEGIN .and.& + Get_Swing() /= SWING_RAT_HOLE_BEGIN) .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_SwingLed(.true.) + return + end if + + + !OPERATION-CODE=24 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_HookHeight() >= (HKL + Get_NearFloorConnection()) .and. Get_HookHeight() <= (HKL + Get_NearFloorConnection() + LG) .and.& + Get_JointConnectionPossible() == .false. .and.& + Get_KellyConnection() == KELLY_CONNECTION_NOTHING .and.& + (Get_Swing() /= SWING_WELL_BEGIN .and.& + Get_Swing() /= SWING_MOUSE_HOLE_BEGIN .and.& + Get_Swing() /= SWING_RAT_HOLE_BEGIN) .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_SwingLed(.true.) + return + end if + + !OPERATION-CODE=25 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_HookHeight() >= (HKL + Get_NearFloorConnection() + PL) .and. Get_HookHeight() <= (HKL + Get_NearFloorConnection() + LG + PL) .and.& + Get_KellyConnection() == KELLY_CONNECTION_SINGLE .and.& + Get_JointConnectionPossible() == .false. .and.& + (Get_Swing() /= SWING_WELL_BEGIN .and.& + Get_Swing() /= SWING_MOUSE_HOLE_BEGIN .and.& + Get_Swing() /= SWING_RAT_HOLE_BEGIN) .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_SwingLed(.true.) + return + end if + + + call Set_SwingLed(.false.) + + + endif + + + + + + + + + end subroutine + + ! subroutine Subscribe_SwingLed() + ! implicit none + + ! call OnOperationConditionChange%Add(Evaluate_SwingLed) + ! call OnHookHeightChange%Add(Evaluate_SwingLed) + ! call OnElevatorConnectionChange%Add(Evaluate_SwingLed) + ! call OnKellyConnectionChange%Add(Evaluate_SwingLed) + ! call OnSwingChange%Add(Evaluate_SwingLed) + ! call OnSlipsChange%Add(Evaluate_SwingLed) + ! call OnFillMouseHoleLedChange%Add(Evaluate_SwingLed) + + ! end subroutine + +end module CSwingLedNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CSwingLedNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/CSwingLedNotificationVariables.f90 new file mode 100644 index 0000000..0e2640b --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CSwingLedNotificationVariables.f90 @@ -0,0 +1,55 @@ +module CSwingLedNotificationVariables + use CVoidEventHandlerCollection + implicit none + logical :: SwingLed = .false. + + public + + type(VoidEventHandlerCollection) :: OnSwingLedChange + + private :: SwingLed + + contains + + subroutine Set_SwingLed(v) + use CDrillingConsoleVariables, only: SwingLedHw => SwingLed + implicit none + logical , intent(in) :: v + +#ifdef ExcludeExtraChanges + if(SwingLed == v) return +#endif + SwingLed = v + if(SwingLed) then + SwingLedHw = 1 + else + SwingLedHw = 0 + endif + call OnSwingLedChange%RunAll() + end subroutine + + logical function Get_SwingLed() + implicit none + Get_SwingLed = SwingLed + end function + + + + + + subroutine Set_SwingLed_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_SwingLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_SwingLed_WN' :: Set_SwingLed_WN + implicit none + logical , intent(in) :: v + call Set_SwingLed(v) + end subroutine + + logical function Get_SwingLed_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_SwingLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_SwingLed_WN' :: Get_SwingLed_WN + implicit none + Get_SwingLed_WN = SwingLed + end function + +end module CSwingLedNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CTdsIbopLedNotification.f90 b/CSharp/OperationScenarios/Notifications/CTdsIbopLedNotification.f90 new file mode 100644 index 0000000..abda1a2 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CTdsIbopLedNotification.f90 @@ -0,0 +1,72 @@ +module CTdsIbopLedNotification + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_IbopLed() + use CCommon + implicit none + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_IbopLed=TopDrive' +#endif + + + + + !TOPDRIVE-CODE=61 + if (Get_IbopLed() == .false. .and.& + TopDriveTdsPowerState == TdsPower_OFF .and.& + TopDriveIbop == .false.) then + + call Set_IbopLed(.true.) + TopDriveLinkTiltLed = LED_OFF + return + end if + + + + + !TOPDRIVE-CODE=62 + if (Get_IbopLed() .and.& + TopDriveTdsPowerState == TdsPower_OFF .and.& + TopDriveIbop) then + + call Set_IbopLed(.false.) + TopDriveLinkTiltLed = LED_ON + return + end if + + + + + + endif + + + + + + + + +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_IbopLed=Kelly' +!#endif +! +! endif + + + + + + end subroutine + + ! subroutine Subscribe_IbopLed() + ! implicit none + ! end subroutine + +end module CTdsIbopLedNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CTdsIbopLedNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/CTdsIbopLedNotificationVariables.f90 new file mode 100644 index 0000000..81b19cb --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CTdsIbopLedNotificationVariables.f90 @@ -0,0 +1,60 @@ +module CTdsIbopLedNotificationVariables + use CVoidEventHandlerCollection + implicit none + logical :: IbopLed = .false. + + public + + type(VoidEventHandlerCollection) :: OnIbopLedChange + + private :: IbopLed + + contains + + subroutine Set_IbopLed(v) + use CTopDrivePanelVariables, only: TopDriveIbopLed + use CManifolds, Only: OpenTopDriveIBop, CloseTopDriveIBop + !use CLatchLedNotification + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(IbopLed == v) return +#endif + IbopLed = v + + if(IbopLed) then + TopDriveIbopLed = 1 + call CloseTopDriveIBop() + else + TopDriveIbopLed = 0 + call OpenTopDriveIBop() + endif + + call OnIbopLedChange%RunAll() + end subroutine + + logical function Get_IbopLed() + implicit none + Get_IbopLed = IbopLed + end function + + + + + + subroutine Set_IbopLed_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_IbopLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_IbopLed_WN' :: Set_IbopLed_WN + implicit none + logical , intent(in) :: v + call Set_IbopLed(v) + end subroutine + + logical function Get_IbopLed_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_IbopLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_IbopLed_WN' :: Get_IbopLed_WN + implicit none + Get_IbopLed_WN = IbopLed + end function + +end module CTdsIbopLedNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CTdsPowerLedNotification.f90 b/CSharp/OperationScenarios/Notifications/CTdsPowerLedNotification.f90 new file mode 100644 index 0000000..8cc002a --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CTdsPowerLedNotification.f90 @@ -0,0 +1,48 @@ +module CTdsPowerLedNotification + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_PowerLed() + use CCommon + implicit none + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_PowerLed=TopDrive' +#endif + + !TOPDRIVE-CODE=63 + if (TopDriveTdsPowerState == TdsPower_OFF) then + call Set_PowerLed(.true.) + return + end if + + endif + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_PowerLed=Kelly' +#endif + + endif + + + + + + end subroutine + + ! subroutine Subscribe_PowerLed() + ! implicit none + ! end subroutine + +end module CTdsPowerLedNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CTdsPowerLedNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/CTdsPowerLedNotificationVariables.f90 new file mode 100644 index 0000000..dd39783 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CTdsPowerLedNotificationVariables.f90 @@ -0,0 +1,57 @@ +module CTdsPowerLedNotificationVariables + use CVoidEventHandlerCollection + implicit none + logical :: PowerLed = .false. + + public + + type(VoidEventHandlerCollection) :: OnPowerLedChange + + private :: PowerLed + + contains + + subroutine Set_PowerLed(v) + use CTopDrivePanelVariables, only: TopDriveTdsPowerLed + !use CLatchLedNotification + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(PowerLed == v) return +#endif + PowerLed = v + + if(PowerLed) then + TopDriveTdsPowerLed = 1 + !call Set_LatchLed(.false.) + else + TopDriveTdsPowerLed = 0 + endif + + call OnPowerLedChange%RunAll() + end subroutine + + logical function Get_PowerLed() + implicit none + Get_PowerLed = PowerLed + end function + + + + + subroutine Set_PowerLed_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_PowerLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_PowerLed_WN' :: Set_PowerLed_WN + implicit none + logical , intent(in) :: v + call Set_PowerLed(v) + end subroutine + + logical function Get_PowerLed_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_PowerLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_PowerLed_WN' :: Get_PowerLed_WN + implicit none + Get_PowerLed_WN = PowerLed + end function + +end module CTdsPowerLedNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CTdsTorqueWrenchLedNotification.f90 b/CSharp/OperationScenarios/Notifications/CTdsTorqueWrenchLedNotification.f90 new file mode 100644 index 0000000..de3ddf9 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CTdsTorqueWrenchLedNotification.f90 @@ -0,0 +1,59 @@ +module CTdsTorqueWrenchLedNotification + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_TorqueWrenchLed() + implicit none + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_TorqueWrenchLed=TopDrive' +#endif + + !TOPDRIVE-CODE=81 + if((Get_TdsBackupClamp() == BACKUP_CLAMP_OFF_BEGIN .or.& + Get_TdsBackupClamp() == BACKUP_CLAMP_FW_BEGIN) .and.& + TopDriveTdsPowerState /= TdsPower_OFF) then + call Set_TorqueWrenchLed(LED_BLINK) + return + endif + + !TOPDRIVE-CODE=81 + if(Get_TdsBackupClamp() == BACKUP_CLAMP_FW_END .and.& + TopDriveTdsPowerState /= TdsPower_OFF) then + call Set_TorqueWrenchLed(LED_ON) + return + endif + + + call Set_TorqueWrenchLed(LED_OFF) + + endif + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_SwingLed=Kelly' +#endif + + + endif + + + + end subroutine + + ! subroutine Subscribe_TorqueWrenchLed() + ! implicit none + + ! end subroutine + +end module CTdsTorqueWrenchLedNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CTdsTorqueWrenchLedNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/CTdsTorqueWrenchLedNotificationVariables.f90 new file mode 100644 index 0000000..7df9d67 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CTdsTorqueWrenchLedNotificationVariables.f90 @@ -0,0 +1,50 @@ +module CTdsTorqueWrenchLedNotificationVariables + use CVoidEventHandlerCollection + implicit none + integer :: TorqueWrenchLed = 0 + + public + + type(VoidEventHandlerCollection) :: OnTorqueWrenchLedChange + + private :: TorqueWrenchLed + + contains + + subroutine Set_TorqueWrenchLed(v) + use CTopDrivePanelVariables, only: TopDriveTorqueWrenchLed + implicit none + integer , intent(in) :: v + +#ifdef ExcludeExtraChanges + if(TorqueWrenchLed == v) return +#endif + TorqueWrenchLed = v + TopDriveTorqueWrenchLed = v + call OnTorqueWrenchLedChange%RunAll() + end subroutine + + logical function Get_TorqueWrenchLed() + implicit none + Get_TorqueWrenchLed = TorqueWrenchLed + end function + + + + + subroutine Set_TorqueWrenchLed_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_TorqueWrenchLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_TorqueWrenchLed_WN' :: Set_TorqueWrenchLed_WN + implicit none + integer , intent(in) :: v + call Set_TorqueWrenchLed(v) + end subroutine + + logical function Get_TorqueWrenchLed_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_TorqueWrenchLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_TorqueWrenchLed_WN' :: Get_TorqueWrenchLed_WN + implicit none + Get_TorqueWrenchLed_WN = TorqueWrenchLed + end function + +end module CTdsTorqueWrenchLedNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CTongNotification.f90 b/CSharp/OperationScenarios/Notifications/CTongNotification.f90 new file mode 100644 index 0000000..4104cff --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CTongNotification.f90 @@ -0,0 +1,287 @@ +module CTongNotification + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_TongNotification() + implicit none + + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_TongNotification=TopDrive' +#endif + + + + + !TOPDRIVE-CODE=50 + if (((Get_HookHeight() >= (TL() + PL - ECG + NFC() - RE) .and. Get_HookHeight() <= (TL() + NFC() + PL - ECG + TG)) .or.& + (Get_HookHeight() >= (TL() + SL - ECG + NFC() - RE) .and. Get_HookHeight() <= (TL() + NFC() + SL - ECG + TG))).and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 6.0 .and.& + ((Get_Tong() /= TONG_BREAKOUT_BEGIN .and.& + Get_Tong() /= TONG_MAKEUP_BEGIN) .or.& + Get_Tong() == TONG_NEUTRAL ) .and.& + (Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_STRING .or. Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STRING) .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_TongNotification(.true.) + return + end if + + + + + + !TOPDRIVE-CODE=51 + if (GetRotaryRpm() == 0.0d0 .and.& + Get_JointConnectionPossible() .and.& + (Get_Tong() /= TONG_BREAKOUT_BEGIN .and.& + Get_Tong() /= TONG_MAKEUP_BEGIN) .and.& + (Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_SINGLE .or. Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_SINGLE) .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_TongNotification(.true.) + return + end if + + + + + + + + + !TOPDRIVE-CODE=52 + if (GetRotaryRpm() == 0.0d0 .and.& + Get_JointConnectionPossible() .and.& + (Get_Tong() /= TONG_BREAKOUT_BEGIN .and.& + Get_Tong() /= TONG_MAKEUP_BEGIN) .and.& + (Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_STAND .or. Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STAND) .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_TongNotification(.true.) + return + end if + + + + + + endif + + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_TongNotification=Kelly' +#endif + + !OPERATION-CODE=44 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + !((Get_HookHeight() >= 65.0 .and. Get_HookHeight() <= 70.0) .or.& + ! (Get_HookHeight() >= 96.0 .and. Get_HookHeight() <= 101.0)).and.& + ((Get_HookHeight() >= (HKL + Get_NearFloorConnection() - RE) .and. Get_HookHeight() <= (HKL + Get_NearFloorConnection() + TG)) .or.& + (Get_HookHeight() >= (HKL + Get_NearFloorConnection() + PL -RE) .and. Get_HookHeight() <= (HKL + Get_NearFloorConnection() + TG + PL))).and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_KellyConnection() == KELLY_CONNECTION_STRING .and.& + Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 6.0 .and.& + Get_Swing() == SWING_WELL_END .and.& + (Get_Tong() /= TONG_BREAKOUT_BEGIN .and.& + Get_Tong() /= TONG_MAKEUP_BEGIN) .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_TongNotification(.true.) + return + end if + + + + + !OPERATION-CODE=45 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_HookHeight() >= 66 .and. Get_HookHeight() <= 69 .and.& + Get_KellyConnection() == KELLY_CONNECTION_SINGLE .and.& + (Get_Tong() /= TONG_BREAKOUT_BEGIN .and.& + Get_Tong() /= TONG_MAKEUP_BEGIN) .and.& + Get_Swing() == SWING_MOUSE_HOLE_END) then + + call Set_TongNotification(.true.) + return + end if + + + + !OPERATION-CODE=46 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_JointConnectionPossible() .and.& + Get_KellyConnection() == KELLY_CONNECTION_NOTHING .and.& + (Get_Tong() /= TONG_BREAKOUT_BEGIN .and.& + Get_Tong() /= TONG_MAKEUP_BEGIN) .and.& + Get_Swing() == SWING_MOUSE_HOLE_END) then + + call Set_TongNotification(.true.) + return + end if + + + + + !OPERATION-CODE=47 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_JointConnectionPossible() .and.& + Get_KellyConnection() == KELLY_CONNECTION_NOTHING .and.& + (Get_Tong() /= TONG_BREAKOUT_BEGIN .and.& + Get_Tong() /= TONG_MAKEUP_BEGIN) .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_TongNotification(.true.) + return + end if + + + + + + !OPERATION-CODE=48 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_JointConnectionPossible() .and.& + Get_KellyConnection() == KELLY_CONNECTION_SINGLE .and.& + (Get_Tong() /= TONG_BREAKOUT_BEGIN .and.& + Get_Tong() /= TONG_MAKEUP_BEGIN) .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_TongNotification(.true.) + return + end if + + + + + + + + + + + + + + + + !OPERATION-CODE=50 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + ((Get_HookHeight() >= (HL + PL - ECG + Get_NearFloorConnection() - RE) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + PL - ECG + TG)) .or.& + (Get_HookHeight() >= (HL + SL - ECG + Get_NearFloorConnection() - RE) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + TG - ECG + SL))).and.& + Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 6.0 .and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .and.& + (Get_Tong() /= TONG_BREAKOUT_BEGIN .and.& + Get_Tong() /= TONG_MAKEUP_BEGIN) .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_TongNotification(.true.) + return + end if + + + + + + !OPERATION-CODE=51 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_JointConnectionPossible() .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE .and.& + (Get_Tong() /= TONG_BREAKOUT_BEGIN .and.& + Get_Tong() /= TONG_MAKEUP_BEGIN) .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_TongNotification(.true.) + return + end if + + + + + + !OPERATION-CODE=52 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_JointConnectionPossible() .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_STAND .and.& + (Get_Tong() /= TONG_BREAKOUT_BEGIN .and.& + Get_Tong() /= TONG_MAKEUP_BEGIN) .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_TongNotification(.true.) + return + end if + + + + + !if (Get_OperationCondition() == OPERATION_DRILL .and.& + ! Get_KellyConnection() == KELLY_CONNECTION_STRING .and.& + ! Get_Swing() == SWING_WELL_END .and.& + ! Get_Slips() == SLIPS_SET_END) then + ! + ! call Set_TongNotification(.true.) + ! return + !end if + ! + + + call Set_TongNotification(.false.) + + endif + + + + + + + + + + + end subroutine + + subroutine Subscribe_TongNotification() + implicit none + + call OnOperationConditionChange%Add(Evaluate_TongNotification) + call OnHookHeightChange%Add(Evaluate_TongNotification) + call OnJointConnectionPossibleChange%Add(Evaluate_TongNotification) + call OnSingleSetInMouseHoleChange%Add(Evaluate_TongNotification) + call OnElevatorConnectionChange%Add(Evaluate_TongNotification) + call OnKellyConnectionChange%Add(Evaluate_TongNotification) + call OnSwingChange%Add(Evaluate_TongNotification) + call OnSlipsChange%Add(Evaluate_TongNotification) + + end subroutine + + + +end module CTongNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CTongNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/CTongNotificationVariables.f90 new file mode 100644 index 0000000..b9d0893 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CTongNotificationVariables.f90 @@ -0,0 +1,69 @@ +module CTongNotificationVariables + use CVoidEventHandlerCollection + use CIActionReference + implicit none + logical :: TongNotification = .false. + procedure (ActionBool), pointer :: TongNotificationPtr + + public + + type(VoidEventHandlerCollection) :: OnTongNotificationChange + + private :: TongNotification + + contains + + subroutine Set_TongNotification(v) + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(TongNotification == v) return +#endif + TongNotification = v + if(associated(TongNotificationPtr)) call TongNotificationPtr(TongNotification) +#ifdef deb + print*, 'TongNotification=', TongNotification +#endif + call OnTongNotificationChange%RunAll() + end subroutine + + logical function Get_TongNotification() + implicit none + Get_TongNotification = TongNotification + end function + + + + + subroutine Set_TongNotification_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_TongNotification_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_TongNotification_WN' :: Set_TongNotification_WN + implicit none + logical , intent(in) :: v + call Set_TongNotification(v) + end subroutine + + logical function Get_TongNotification_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_TongNotification_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_TongNotification_WN' :: Get_TongNotification_WN + implicit none + Get_TongNotification_WN = TongNotification + end function + + + + + + + + + + subroutine SubscribeTongNotification(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeTongNotification + !DEC$ ATTRIBUTES ALIAS: 'SubscribeTongNotification' :: SubscribeTongNotification + implicit none + procedure (ActionBool) :: a + TongNotificationPtr => a + end subroutine + +end module CTongNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CUnlatchLedNotification.f90 b/CSharp/OperationScenarios/Notifications/CUnlatchLedNotification.f90 new file mode 100644 index 0000000..1c6e71c --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CUnlatchLedNotification.f90 @@ -0,0 +1,221 @@ +module CUnlatchLedNotification + use COperationScenariosVariables + use CLog4 + implicit none + contains + + subroutine Evaluate_UnlatchLed() + use CCommon + implicit none + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_UnlatchLed=TopDrive' +#endif + + + + !TOPDRIVE-CODE=47 + if (Get_HookHeight() <= (TL() + NFC() - ECG) .and.& + Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 6.0 .and.& + (Get_Elevator() /= ELEVATOR_LATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_SINGLE_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_SINGLE_BEGIN) .and.& + Get_ElevatorPickup() == .false. .and.& + (Get_TdsElevatorModes() == TDS_ELEVATOR_LATCH_STRING .or. Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STRING) .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_UnlatchLed(.true.) + return + end if + + + + + !TOPDRIVE-CODE=48 + if ((Get_HookHeight() >= (TL() + SL - ECG + NFC()) .and. Get_HookHeight() <= (TL() + SL - ECG + NFC() + TG)) .and.& + GetStandRack() > 80 .and.& + Get_JointConnectionPossible() == .false. .and.& + (Get_Elevator() /= ELEVATOR_LATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_SINGLE_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_SINGLE_BEGIN) .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STAND .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_UnlatchLed(.true.) + return + end if + + + + + + + !TOPDRIVE-CODE=49 + if ((Get_HookHeight() >= TL() .and. Get_HookHeight() <= (TL() + NFC() + SG)) .and.& + (Get_Elevator() /= ELEVATOR_LATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_SINGLE_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_SINGLE_BEGIN) .and.& + (Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STRING .or. Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_SINGLE) .and.& + Get_TdsSwing() == TDS_SWING_TILT_END .and.& + Get_FillMouseHoleLed() == .false.) then + + call Set_UnlatchLed(.true.) + return + end if + + + + + + + + + endif + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_UnlatchLed=Kelly' +#endif + + + + !OPERATION-CODE=40 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() <= (HL + Get_NearFloorConnection() - ECG) .and.& + Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 6.0 .and.& + (Get_Elevator() /= ELEVATOR_LATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_SINGLE_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_SINGLE_BEGIN) .and.& + !Get_Elevator() == ELEVATOR_LATCH_STRING_END .and.& + (Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) .and.& + !(Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .or. Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) .and.& + !Get_LatchLed() == .false. + Get_Swing() == SWING_WELL_END .and.& + Get_Slips() == SLIPS_SET_END ) then + + call Set_UnlatchLed(.true.) + !call Set_LatchLed(.false.) + return + end if + + + + + + + + + !OPERATION-CODE=41 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() >= (HL + SL - ECG + Get_NearFloorConnection()) .and. Get_HookHeight() <= (HL + SL - ECG + Get_NearFloorConnection() + LG) .and.& + !Get_HookHeight() >= (HL + Get_NearFloorConnection() + SL + RE) .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + SL + LG) .and.& + (Get_Elevator() /= ELEVATOR_LATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_SINGLE_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_SINGLE_BEGIN) .and.& + Get_StandRack() < 80 .and.& + Get_JointConnectionPossible() == .false. .and.& + !Get_Elevator() == ELEVATOR_UNLATCH_STAND_END .and.& + !Get_LatchLed() == .false. + Get_ElevatorConnection() == ELEVATOR_CONNECTION_STAND .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_UnlatchLed(.true.) + !call Set_LatchLed(.false.) + return + end if + + + + + + !OPERATION-CODE=42 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() >= HL .and. Get_HookHeight() <= (HL + Get_NearFloorConnection() + SG) .and.& + (Get_Elevator() /= ELEVATOR_LATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STRING_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_STAND_BEGIN .and.& + Get_Elevator() /= ELEVATOR_LATCH_SINGLE_BEGIN .and.& + Get_Elevator() /= ELEVATOR_UNLATCH_SINGLE_BEGIN) .and.& + !Get_Elevator() == ELEVATOR_UNLATCH_SINGLE_END .and.& + Get_Swing() == SWING_MOUSE_HOLE_END .and.& + !Get_LatchLed() == .false. .and.& + Get_FillMouseHoleLed() == .false.) then + + call Set_UnlatchLed(.true.) + !call Set_LatchLed(.false.) + return + end if + + + + + + !call Log_4('OPERATION-CODE=43-OPERATION_DRILL=', Get_OperationCondition() == OPERATION_DRILL) + !call Log_4('OPERATION-CODE=43-Get_HookHeight=', Get_HookHeight() >= 27.41) + !call Log_4('OPERATION-CODE=43-Get_Swing()=', Get_Swing() == SWING_RAT_HOLE_END) + !call Log_4('OPERATION-CODE=43-Get_LatchLed()=', Get_LatchLed() == .false.) + !OPERATION-CODE=43 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_HookHeight() >= 27.41 .and.& + !Get_LatchLed() == .false. + Get_Swing() == SWING_RAT_HOLE_END) then + !call Log_4('OPERATION-CODE=43-call Set_UnlatchLed(.true.)') + call Set_UnlatchLed(.true.) + !call Set_LatchLed(.false.) + return + end if + + + + call Set_UnlatchLed(.false.) + + endif + + + + + + end subroutine + + subroutine Subscribe_UnlatchLed() + implicit none + + call OnOperationConditionChange%Add(Evaluate_UnlatchLed) + call OnHookHeightChange%Add(Evaluate_UnlatchLed) + call OnStandRackChanged%Add(Evaluate_UnlatchLed) + call OnElevatorConnectionChange%Add(Evaluate_UnlatchLed) + call OnSwingChange%Add(Evaluate_UnlatchLed) + call OnSlipsChange%Add(Evaluate_UnlatchLed) + call OnLatchLedChange%Add(Evaluate_UnlatchLed) + call OnFillMouseHoleLedChange%Add(Evaluate_UnlatchLed) + end subroutine + +end module CUnlatchLedNotification \ No newline at end of file diff --git a/CSharp/OperationScenarios/Notifications/CUnlatchLedNotificationVariables.f90 b/CSharp/OperationScenarios/Notifications/CUnlatchLedNotificationVariables.f90 new file mode 100644 index 0000000..79cd0a0 --- /dev/null +++ b/CSharp/OperationScenarios/Notifications/CUnlatchLedNotificationVariables.f90 @@ -0,0 +1,62 @@ +module CUnlatchLedNotificationVariables + use CVoidEventHandlerCollection + implicit none + logical :: UnlatchLed = .false. + + public + + type(VoidEventHandlerCollection) :: OnUnlatchLedChange + + private :: UnlatchLed + + contains + + subroutine Set_UnlatchLed(v) + use CDrillingConsoleVariables, only: UnlatchPipeLED + !use CLatchLedNotification + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(UnlatchLed == v) return +#endif + UnlatchLed = v + + if(UnlatchLed) then + UnlatchPipeLED = 1 + !call Set_LatchLed(.false.) + else + UnlatchPipeLED = 0 + endif + + call OnUnlatchLedChange%RunAll() + end subroutine + + logical function Get_UnlatchLed() + implicit none + Get_UnlatchLed = UnlatchLed + end function + + + + + + + subroutine Set_UnlatchLed_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_UnlatchLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_UnlatchLed_WN' :: Set_UnlatchLed_WN + implicit none + logical , intent(in) :: v + call Set_UnlatchLed(v) + end subroutine + + logical function Get_UnlatchLed_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_UnlatchLed_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_UnlatchLed_WN' :: Get_UnlatchLed_WN + implicit none + Get_UnlatchLed_WN = UnlatchLed + end function + + + + +end module CUnlatchLedNotificationVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CFillupHeadPermission.f90 b/CSharp/OperationScenarios/Permissions/CFillupHeadPermission.f90 new file mode 100644 index 0000000..4b4df41 --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CFillupHeadPermission.f90 @@ -0,0 +1,55 @@ +module CFillupHeadPermission + use COperationScenariosVariables + implicit none + + contains + + subroutine Evaluate_FillupHeadPermission() + implicit none + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_FillupHeadPermission=TopDrive' +#endif + + + !TOPDRIVE-CODE=66 + if (Get_NearFloorConnection() >= 3 .and. Get_NearFloorConnection() <= 10 .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING) then + + call Set_FillupHeadPermission(.true.) + return + end if + + + call Set_FillupHeadPermission(.false.) + + + endif + + + + + + + + + +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_FillupHeadPermission=Kelly' +!#endif +! endif + + + + end subroutine + + subroutine Subscribe_FillupHeadPermission() + implicit none + end subroutine + +end module CFillupHeadPermission \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CFillupHeadPermissionVariables.f90 b/CSharp/OperationScenarios/Permissions/CFillupHeadPermissionVariables.f90 new file mode 100644 index 0000000..6d6261b --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CFillupHeadPermissionVariables.f90 @@ -0,0 +1,50 @@ +module CFillupHeadPermissionVariables + use CVoidEventHandlerCollection + implicit none + logical :: FillupHeadPermission = .false. + + public + + type(VoidEventHandlerCollection) :: OnFillupHeadPermissionChange + + private :: FillupHeadPermission + + contains + + subroutine Set_FillupHeadPermission(v) + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(FillupHeadPermission == v) return +#endif + FillupHeadPermission = v +#ifdef deb + print*, 'FillupHeadPermission=', FillupHeadPermission +#endif + call OnFillupHeadPermissionChange%RunAll() + end subroutine + + logical function Get_FillupHeadPermission() + implicit none + Get_FillupHeadPermission = FillupHeadPermission + end function + + + + + subroutine Set_FillupHeadPermission_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_FillupHeadPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_FillupHeadPermission_WN' :: Set_FillupHeadPermission_WN + implicit none + logical , intent(in) :: v + call Set_FillupHeadPermission(v) + end subroutine + + logical function Get_FillupHeadPermission_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_FillupHeadPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_FillupHeadPermission_WN' :: Get_FillupHeadPermission_WN + implicit none + Get_FillupHeadPermission_WN = FillupHeadPermission + end function + +end module CFillupHeadPermissionVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CInstallFillupHeadPermission.f90 b/CSharp/OperationScenarios/Permissions/CInstallFillupHeadPermission.f90 new file mode 100644 index 0000000..aa429ee --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CInstallFillupHeadPermission.f90 @@ -0,0 +1,76 @@ +module CInstallFillupHeadPermission + use COperationScenariosVariables + implicit none + + contains + + subroutine Evaluate_InstallFillupHeadPermission() + use TD_DrillStemComponents + implicit none + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_InstallFillupHeadPermission=TopDrive' +#endif + endif + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_InstallFillupHeadPermission=Kelly' +#endif + + + !!OPERATION-CODE=69 + !if (Get_OperationCondition() == OPERATION_DRILL .and.& + ! Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 6.0 .and.& + ! Get_JointConnectionPossible() == .false. .and.& + ! Get_KellyConnection() /= KELLY_CONNECTION_STRING .and.& + ! Get_Slips() == SLIPS_SET_END) then + ! + ! call Set_InstallFillupHeadPermission(.true.) + ! return + !end if + + + + !OPERATION-CODE=70 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + TD_TopJointHeight >= 3.0 .and. TD_TopJointHeight <= 9.0 .and.& + Get_JointConnectionPossible() == .false. .and.& + !Get_ElevatorConnectionPossible() == .false. .and.& + !Get_ElevatorConnection() /= ELEVATOR_CONNECTION_STRING .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING) then + + call Set_InstallFillupHeadPermission(.true.) + return + end if + + + + + call Set_InstallFillupHeadPermission(.false.) + + endif + + + + + + end subroutine + + subroutine Subscribe_InstallFillupHeadPermission() + implicit none + ! imp me... + end subroutine + +end module CInstallFillupHeadPermission \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CInstallFillupHeadPermissionVariables.f90 b/CSharp/OperationScenarios/Permissions/CInstallFillupHeadPermissionVariables.f90 new file mode 100644 index 0000000..f57497e --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CInstallFillupHeadPermissionVariables.f90 @@ -0,0 +1,53 @@ +module CInstallFillupHeadPermissionVariables + use CVoidEventHandlerCollection + implicit none + logical :: InstallFillupHeadPermission = .false. + + public + + type(VoidEventHandlerCollection) :: OnInstallFillupHeadPermissionChange + + private :: InstallFillupHeadPermission + + contains + + subroutine Set_InstallFillupHeadPermission(v) + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(InstallFillupHeadPermission == v) return +#endif + InstallFillupHeadPermission = v +#ifdef deb + print*, 'InstallFillupHeadPermission=', InstallFillupHeadPermission +#endif + call OnInstallFillupHeadPermissionChange%RunAll() + end subroutine + + logical function Get_InstallFillupHeadPermission() + implicit none + Get_InstallFillupHeadPermission = InstallFillupHeadPermission + end function + + + + subroutine Set_InstallFillupHeadPermission_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_InstallFillupHeadPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_InstallFillupHeadPermission_WN' :: Set_InstallFillupHeadPermission_WN + implicit none + logical , intent(in) :: v + call Set_InstallFillupHeadPermission(v) + end subroutine + + + logical function Get_InstallFillupHeadPermission_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_InstallFillupHeadPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_InstallFillupHeadPermission_WN' :: Get_InstallFillupHeadPermission_WN + implicit none + Get_InstallFillupHeadPermission_WN = InstallFillupHeadPermission + end function + + + + +end module CInstallFillupHeadPermissionVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CInstallMudBucketPermission.f90 b/CSharp/OperationScenarios/Permissions/CInstallMudBucketPermission.f90 new file mode 100644 index 0000000..56a4a4d --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CInstallMudBucketPermission.f90 @@ -0,0 +1,36 @@ +module CInstallMudBucketPermission + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_InstallMudBucketPermission() + implicit none + + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_InstallMudBucketPermission=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_InstallMudBucketPermission=Kelly' +!#endif +! endif + + + end subroutine + + subroutine Subscribe_InstallMudBucketPermission() + implicit none + ! imp me... + end subroutine + +end module CInstallMudBucketPermission \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CInstallMudBucketPermissionVariables.f90 b/CSharp/OperationScenarios/Permissions/CInstallMudBucketPermissionVariables.f90 new file mode 100644 index 0000000..6f716f0 --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CInstallMudBucketPermissionVariables.f90 @@ -0,0 +1,51 @@ +module CInstallMudBucketPermissionVariables + use CVoidEventHandlerCollection + implicit none + logical :: InstallMudBucketPermission = .false. + + public + + type(VoidEventHandlerCollection) :: OnInstallMudBucketPermissionChange + + private :: InstallMudBucketPermission + + contains + + subroutine Set_InstallMudBucketPermission(v) + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(InstallMudBucketPermission == v) return +#endif + InstallMudBucketPermission = v +#ifdef deb + print*, 'InstallMudBucketPermission=', InstallMudBucketPermission +#endif + call OnInstallMudBucketPermissionChange%RunAll() + end subroutine + + logical function Get_InstallMudBucketPermission() + implicit none + Get_InstallMudBucketPermission = InstallMudBucketPermission + end function + + + + + subroutine Set_InstallMudBucketPermission_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_InstallMudBucketPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_InstallMudBucketPermission_WN' :: Set_InstallMudBucketPermission_WN + implicit none + logical , intent(in) :: v + call Set_InstallMudBucketPermission(v) + end subroutine + + + logical function Get_InstallMudBucketPermission_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_InstallMudBucketPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_InstallMudBucketPermission_WN' :: Get_InstallMudBucketPermission_WN + implicit none + Get_InstallMudBucketPermission_WN = InstallMudBucketPermission + end function + +end module CInstallMudBucketPermissionVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CIrIbopPermission.f90 b/CSharp/OperationScenarios/Permissions/CIrIbopPermission.f90 new file mode 100644 index 0000000..a603ca9 --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CIrIbopPermission.f90 @@ -0,0 +1,92 @@ +module CIrIbopPermission + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_IrIbopPermission() + use TD_DrillStemComponents + use CStudentStationVariables, only: FillupHeadInstallation + implicit none + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_IrIbopPermission=TopDrive' +#endif + + + !TOPDRIVE-CODE=58 + if (GetRotaryRpm() == 0.0d0 .and.& + Get_NearFloorConnection() >= 3 .and. Get_NearFloorConnection() <= 10 .and.& + Get_JointConnectionPossible() == .false. .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING .and.& + FillupHeadInstallation == .false.) then + + call Set_IrIbopPermission(.true.) + return + end if + + + + + call Set_IrIbopPermission(.false.) + + + + endif + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_IrIbopPermission=Kelly' +#endif + + !OPERATION-CODE=62 + if (GetRotaryRpm() == 0.0d0 .and.& + Get_OperationCondition() == OPERATION_TRIP .and.& + !(Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .or. Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) .and.& + TD_TopJointHeight >= 3.0 .and. TD_TopJointHeight <= 10.0 .and.& + !Get_IbopHeight() >= 22.0 .and. Get_IbopHeight() <= 35.0 .and.& + Get_JointConnectionPossible() == .false. .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_FillupHead() == FILLUP_HEAD_REMOVE) then + call Set_IrIbopPermission(.true.) + return + end if + + + !if (Get_OperationCondition() == OPERATION_DRILL .and.& + ! Get_IbopHeight() >= 1 .and. Get_IbopHeight() <= 8 .and.& + ! Get_NearFloorConnection() >= 1 .and. Get_NearFloorConnection() <= 8 .and.& + ! Get_JointConnectionPossible() == .false. .and.& + ! Get_KellyConnection() /= KELLY_CONNECTION_STRING .and.& + ! Get_Swing() == SWING_WELL_END .and.& + ! Get_Slips() == SLIPS_SET_END) then + ! call Set_IrIbopPermission(.true.) + ! return + !end if + + + + + call Set_IrIbopPermission(.false.) + + + + endif + + + + + + + end subroutine + + subroutine Subscribe_IrIbopPermission() + implicit none + end subroutine + +end module CIrIbopPermission \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CIrIbopPermissionVariables.f90 b/CSharp/OperationScenarios/Permissions/CIrIbopPermissionVariables.f90 new file mode 100644 index 0000000..a86ca3c --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CIrIbopPermissionVariables.f90 @@ -0,0 +1,49 @@ +module CIrIbopPermissionVariables + use CVoidEventHandlerCollection + implicit none + logical :: IrIbopPermission = .false. + + public + + type(VoidEventHandlerCollection) :: OnIrIbopPermissionChange + + private :: IrIbopPermission + + contains + + subroutine Set_IrIbopPermission(v) + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(IrIbopPermission == v) return +#endif + IrIbopPermission = v +#ifdef deb + print*, 'IrIbopPermission=', IrIbopPermission +#endif + call OnIrIbopPermissionChange%RunAll() + end subroutine + + logical function Get_IrIbopPermission() + implicit none + Get_IrIbopPermission = IrIbopPermission + end function + + + + subroutine Set_IrIbopPermission_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_IrIbopPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_IrIbopPermission_WN' :: Set_IrIbopPermission_WN + implicit none + logical , intent(in) :: v + call Set_IrIbopPermission(v) + end subroutine + + logical function Get_IrIbopPermission_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_IrIbopPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_IrIbopPermission_WN' :: Get_IrIbopPermission_WN + implicit none + Get_IrIbopPermission_WN = IrIbopPermission + end function + +end module CIrIbopPermissionVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CIrSafetyValvePermission.f90 b/CSharp/OperationScenarios/Permissions/CIrSafetyValvePermission.f90 new file mode 100644 index 0000000..fc930e9 --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CIrSafetyValvePermission.f90 @@ -0,0 +1,87 @@ +module CIrSafetyValvePermission + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_IrSafetyValvePermission() + use TD_DrillStemComponents + use CStudentStationVariables, only: FillupHeadInstallation + implicit none + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_IrSafetyValvePermission=TopDrive' +#endif + + + + !TOPDRIVE-CODE=55 + if (GetRotaryRpm() == 0.0d0 .and.& + (Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 10.0) .and.& + Get_JointConnectionPossible() == .false. .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING .and.& + FillupHeadInstallation == .false.) then + + call Set_IrSafetyValvePermission(.true.) + return + end if + + + + endif + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_IrSafetyValvePermission=Kelly' +#endif + + + !OPERATION-CODE=57 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + GetRotaryRpm() == 0.0d0 .and.& + !(Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .or. Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) .and.& + !Get_NearFloorConnection() >= 3.0 .and. Get_NearFloorConnection() <= 10.0 .and.& + TD_TopJointHeight >= 3.0 .and. TD_TopJointHeight <= 10.0 .and.& + !Get_SafetyValveHeight() >= 22.0 .and. Get_SafetyValveHeight() <= 35.0 .and.& + Get_JointConnectionPossible() == .false. .and.& + Get_FillupHead() == FILLUP_HEAD_REMOVE .and.& + Get_Swing() == SWING_WELL_END) then + call Set_IrSafetyValvePermission(.true.) + return + end if + + + + + + call Set_IrSafetyValvePermission(.false.) + + endif + + + + + + + + + + + end subroutine + + subroutine Subscribe_IrSafetyValvePermission() + implicit none + ! imp me... + end subroutine + +end module CIrSafetyValvePermission \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CIrSafetyValvePermissionVariables.f90 b/CSharp/OperationScenarios/Permissions/CIrSafetyValvePermissionVariables.f90 new file mode 100644 index 0000000..ad65d98 --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CIrSafetyValvePermissionVariables.f90 @@ -0,0 +1,51 @@ +module CIrSafetyValvePermissionVariables + use CVoidEventHandlerCollection + implicit none + logical :: IrSafetyValvePermission = .false. + + public + + type(VoidEventHandlerCollection) :: OnIrSafetyValvePermissionChange + + private :: IrSafetyValvePermission + + contains + + subroutine Set_IrSafetyValvePermission(v) + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(IrSafetyValvePermission == v) return +#endif + IrSafetyValvePermission = v +#ifdef deb + print*, 'IrSafetyValvePermission=', IrSafetyValvePermission +#endif + call OnIrSafetyValvePermissionChange%RunAll() + end subroutine + + logical function Get_IrSafetyValvePermission() + implicit none + Get_IrSafetyValvePermission = IrSafetyValvePermission + end function + + + + + subroutine Set_IrSafetyValvePermission_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_IrSafetyValvePermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_IrSafetyValvePermission_WN' :: Set_IrSafetyValvePermission_WN + implicit none + logical , intent(in) :: v + call Set_IrSafetyValvePermission(v) + end subroutine + + logical function Get_IrSafetyValvePermission_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_IrSafetyValvePermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_IrSafetyValvePermission_WN' :: Get_IrSafetyValvePermission_WN + implicit none + Get_IrSafetyValvePermission_WN = IrSafetyValvePermission + end function + + +end module CIrSafetyValvePermissionVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CRemoveFillupHeadPermission.f90 b/CSharp/OperationScenarios/Permissions/CRemoveFillupHeadPermission.f90 new file mode 100644 index 0000000..3317c23 --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CRemoveFillupHeadPermission.f90 @@ -0,0 +1,36 @@ +module CRemoveFillupHeadPermission + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_RemoveFillupHeadPermission() + implicit none + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_RemoveFillupHeadPermission=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_RemoveFillupHeadPermission=Kelly' +!#endif +! endif + + end subroutine + + subroutine Subscribe_RemoveFillupHeadPermission() + implicit none + ! imp me... + end subroutine + +end module CRemoveFillupHeadPermission \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CRemoveFillupHeadPermissionVariables.f90 b/CSharp/OperationScenarios/Permissions/CRemoveFillupHeadPermissionVariables.f90 new file mode 100644 index 0000000..ff22333 --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CRemoveFillupHeadPermissionVariables.f90 @@ -0,0 +1,51 @@ +module CRemoveFillupHeadPermissionVariables + use CVoidEventHandlerCollection + implicit none + logical :: RemoveFillupHeadPermission = .false. + + public + + type(VoidEventHandlerCollection) :: OnRemoveFillupHeadPermissionChange + + private :: RemoveFillupHeadPermission + + contains + + subroutine Set_RemoveFillupHeadPermission(v) + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(RemoveFillupHeadPermission == v) return +#endif + RemoveFillupHeadPermission = v +#ifdef deb + print*, 'RemoveFillupHeadPermission=', RemoveFillupHeadPermission +#endif + call OnRemoveFillupHeadPermissionChange%RunAll() + end subroutine + + logical function Get_RemoveFillupHeadPermission() + implicit none + Get_RemoveFillupHeadPermission = RemoveFillupHeadPermission + end function + + + + + subroutine Set_RemoveFillupHeadPermission_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_RemoveFillupHeadPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_RemoveFillupHeadPermission_WN' :: Set_RemoveFillupHeadPermission_WN + implicit none + logical , intent(in) :: v + call Set_RemoveFillupHeadPermission(v) + end subroutine + + logical function Get_RemoveFillupHeadPermission_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_RemoveFillupHeadPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_RemoveFillupHeadPermission_WN' :: Get_RemoveFillupHeadPermission_WN + implicit none + Get_RemoveFillupHeadPermission_WN = RemoveFillupHeadPermission + end function + + +end module CRemoveFillupHeadPermissionVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CRemoveMudBucketPermission.f90 b/CSharp/OperationScenarios/Permissions/CRemoveMudBucketPermission.f90 new file mode 100644 index 0000000..4f1ab9b --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CRemoveMudBucketPermission.f90 @@ -0,0 +1,34 @@ +module CRemoveMudBucketPermission + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_RemoveMudBucketPermission() + implicit none + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_RemoveMudBucketPermission=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_RemoveMudBucketPermission=Kelly' +!#endif +! endif + + end subroutine + + subroutine Subscribe_RemoveMudBucketPermission() + implicit none + ! imp me... + end subroutine + +end module CRemoveMudBucketPermission \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CRemoveMudBucketPermissionVariables.f90 b/CSharp/OperationScenarios/Permissions/CRemoveMudBucketPermissionVariables.f90 new file mode 100644 index 0000000..a2bd728 --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CRemoveMudBucketPermissionVariables.f90 @@ -0,0 +1,51 @@ +module CRemoveMudBucketPermissionVariables + use CVoidEventHandlerCollection + implicit none + logical :: RemoveMudBucketPermission = .false. + + public + + type(VoidEventHandlerCollection) :: OnRemoveMudBucketPermissionChange + + private :: RemoveMudBucketPermission + + contains + + subroutine Set_RemoveMudBucketPermission(v) + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(RemoveMudBucketPermission == v) return +#endif + RemoveMudBucketPermission = v +#ifdef deb + print*, 'RemoveMudBucketPermission=', RemoveMudBucketPermission +#endif + call OnRemoveMudBucketPermissionChange%RunAll() + end subroutine + + logical function Get_RemoveMudBucketPermission() + implicit none + Get_RemoveMudBucketPermission = RemoveMudBucketPermission + end function + + + + + subroutine Set_RemoveMudBucketPermission_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_RemoveMudBucketPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_RemoveMudBucketPermission_WN' :: Set_RemoveMudBucketPermission_WN + implicit none + logical , intent(in) :: v + call Set_RemoveMudBucketPermission(v) + end subroutine + + logical function Get_RemoveMudBucketPermission_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_RemoveMudBucketPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_RemoveMudBucketPermission_WN' :: Get_RemoveMudBucketPermission_WN + implicit none + Get_RemoveMudBucketPermission_WN = RemoveMudBucketPermission + end function + + +end module CRemoveMudBucketPermissionVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CSwingDrillPermission.f90 b/CSharp/OperationScenarios/Permissions/CSwingDrillPermission.f90 new file mode 100644 index 0000000..5b98892 --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CSwingDrillPermission.f90 @@ -0,0 +1,59 @@ +module CSwingDrillPermission + use COperationScenariosVariables + implicit none + + contains + + subroutine Evaluate_SwingDrillPermission() + implicit none + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_SwingDrillPermission=TopDrive' +#endif + + !TOPDRIVE-CODE=33 + if (Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + TopDriveTdsPowerState /= TdsPower_OFF) then + + call Set_SwingDrillPermission(.true.) + return + end if + + + + + + + call Set_SwingDrillPermission(.false.) + + + + + + endif + + + + + + + + + +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_SwingDrillPermission=Kelly' +!#endif +! endif + + + end subroutine + + subroutine Subscribe_SwingDrillPermission() + implicit none + end subroutine + +end module CSwingDrillPermission \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CSwingDrillPermissionVariables.f90 b/CSharp/OperationScenarios/Permissions/CSwingDrillPermissionVariables.f90 new file mode 100644 index 0000000..2905b52 --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CSwingDrillPermissionVariables.f90 @@ -0,0 +1,49 @@ +module CSwingDrillPermissionVariables + use CVoidEventHandlerCollection + implicit none + logical :: SwingDrillPermission = .false. + + public + + type(VoidEventHandlerCollection) :: OnSwingDrillPermissionChange + + private :: SwingDrillPermission + + contains + + subroutine Set_SwingDrillPermission(v) + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(SwingDrillPermission == v) return +#endif + SwingDrillPermission = v +#ifdef deb + print*, 'SwingDrillPermission=', SwingDrillPermission +#endif + call OnSwingDrillPermissionChange%RunAll() + end subroutine + + logical function Get_SwingDrillPermission() + implicit none + Get_SwingDrillPermission = SwingDrillPermission + end function + + + + subroutine Set_SwingDrillPermission_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_SwingDrillPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_SwingDrillPermission_WN' :: Set_SwingDrillPermission_WN + implicit none + logical , intent(in) :: v + call Set_SwingDrillPermission(v) + end subroutine + + logical function Get_SwingDrillPermission_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_SwingDrillPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_SwingDrillPermission_WN' :: Get_SwingDrillPermission_WN + implicit none + Get_SwingDrillPermission_WN = SwingDrillPermission + end function + +end module CSwingDrillPermissionVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CSwingOffPermission.f90 b/CSharp/OperationScenarios/Permissions/CSwingOffPermission.f90 new file mode 100644 index 0000000..c219d50 --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CSwingOffPermission.f90 @@ -0,0 +1,67 @@ +module CSwingOffPermission + use COperationScenariosVariables + implicit none + + contains + + subroutine Evaluate_SwingOffPermission() + implicit none + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_SwingOffPermission=TopDrive' +#endif + + + + !TOPDRIVE-CODE=35 + if (Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_TILT_END .and.& + Get_Slips() == SLIPS_SET_END .and.& + TopDriveTdsPowerState /= TdsPower_OFF) then + + call Set_SwingOffPermission(.true.) + return + end if + + + + + !TOPDRIVE-CODE=36 + if (Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_DRILL_END .and.& + TopDriveTdsPowerState /= TdsPower_OFF) then + + call Set_SwingOffPermission(.true.) + return + end if + + + + call Set_SwingOffPermission(.false.) + + endif + + + + + + + + +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_SwingOffPermission=Kelly' +!#endif +! endif + + end subroutine + + subroutine Subscribe_SwingOffPermission() + implicit none + end subroutine + +end module CSwingOffPermission \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CSwingOffPermissionVariables.f90 b/CSharp/OperationScenarios/Permissions/CSwingOffPermissionVariables.f90 new file mode 100644 index 0000000..edf39aa --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CSwingOffPermissionVariables.f90 @@ -0,0 +1,48 @@ +module CSwingOffPermissionVariables + use CVoidEventHandlerCollection + implicit none + logical :: SwingOffPermission = .false. + + public + + type(VoidEventHandlerCollection) :: OnSwingOffPermissionChange + + private :: SwingOffPermission + + contains + + subroutine Set_SwingOffPermission(v) + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(SwingOffPermission == v) return +#endif + SwingOffPermission = v +#ifdef deb + print*, 'SwingOffPermission=', SwingOffPermission +#endif + call OnSwingOffPermissionChange%RunAll() + end subroutine + + logical function Get_SwingOffPermission() + implicit none + Get_SwingOffPermission = SwingOffPermission + end function + + + subroutine Set_SwingOffPermission_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_SwingOffPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_SwingOffPermission_WN' :: Set_SwingOffPermission_WN + implicit none + logical , intent(in) :: v + call Set_SwingOffPermission(v) + end subroutine + + logical function Get_SwingOffPermission_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_SwingOffPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_SwingOffPermission_WN' :: Get_SwingOffPermission_WN + implicit none + Get_SwingOffPermission_WN = SwingOffPermission + end function + +end module CSwingOffPermissionVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CSwingTiltPermission.f90 b/CSharp/OperationScenarios/Permissions/CSwingTiltPermission.f90 new file mode 100644 index 0000000..8aca7c9 --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CSwingTiltPermission.f90 @@ -0,0 +1,52 @@ +module CSwingTiltPermission + use COperationScenariosVariables + implicit none + + contains + + subroutine Evaluate_SwingTiltPermission() + implicit none + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_SwingTiltPermission=TopDrive' +#endif + + + !TOPDRIVE-CODE=34 + if (Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + Get_Slips() == SLIPS_SET_END .and.& + TopDriveTdsPowerState /= TdsPower_OFF) then + + call Set_SwingTiltPermission(.true.) + return + end if + + + call Set_SwingTiltPermission(.false.) + + endif + + + + + + + + + +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_SwingTiltPermission=Kelly' +!#endif +! endif + + end subroutine + + subroutine Subscribe_SwingTiltPermission() + implicit none + end subroutine + +end module CSwingTiltPermission \ No newline at end of file diff --git a/CSharp/OperationScenarios/Permissions/CSwingTiltPermissionVariables.f90 b/CSharp/OperationScenarios/Permissions/CSwingTiltPermissionVariables.f90 new file mode 100644 index 0000000..3253480 --- /dev/null +++ b/CSharp/OperationScenarios/Permissions/CSwingTiltPermissionVariables.f90 @@ -0,0 +1,50 @@ +module CSwingTiltPermissionVariables + use CVoidEventHandlerCollection + implicit none + logical :: SwingTiltPermission = .false. + + public + + type(VoidEventHandlerCollection) :: OnSwingTiltPermissionChange + + private :: SwingTiltPermission + + contains + + subroutine Set_SwingTiltPermission(v) + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(SwingTiltPermission == v) return +#endif + SwingTiltPermission = v +#ifdef deb + print*, 'SwingTiltPermission=', SwingTiltPermission +#endif + call OnSwingTiltPermissionChange%RunAll() + end subroutine + + logical function Get_SwingTiltPermission() + implicit none + Get_SwingTiltPermission = SwingTiltPermission + end function + + + + subroutine Set_SwingTiltPermission_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_SwingTiltPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_SwingTiltPermission_WN' :: Set_SwingTiltPermission_WN + implicit none + logical , intent(in) :: v + call Set_SwingTiltPermission(v) + end subroutine + + + logical function Get_SwingTiltPermission_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_SwingTiltPermission_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_SwingTiltPermission_WN' :: Get_SwingTiltPermission_WN + implicit none + Get_SwingTiltPermission_WN = SwingTiltPermission + end function + +end module CSwingTiltPermissionVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/SoftwareInputs/CHookHeight.f90 b/CSharp/OperationScenarios/SoftwareInputs/CHookHeight.f90 new file mode 100644 index 0000000..360e7d7 --- /dev/null +++ b/CSharp/OperationScenarios/SoftwareInputs/CHookHeight.f90 @@ -0,0 +1,37 @@ +module CHookHeight + use CVoidEventHandlerCollection + implicit none + real :: HookHeight = 0 + + public + type(VoidEventHandlerCollection) :: OnHookHeightChange + + private :: HookHeight + + contains + + subroutine Set_HookHeight(v) + implicit none + real , intent(in) :: v +#ifdef ExcludeExtraChanges + if(HookHeight == v) return +#endif + HookHeight = v +#ifdef deb + print*, 'HookHeight=', HookHeight +#endif + call OnHookHeightChange%RunAll() + end subroutine + + real function Get_HookHeight() + implicit none + Get_HookHeight = HookHeight + end function + + subroutine Subscribe_HookHeight() + use CHookVariables, only: OnHookHeight => OnHookHeightChange + implicit none + call OnHookHeight%Add(Set_HookHeight) + end subroutine + +end module CHookHeight \ No newline at end of file diff --git a/CSharp/OperationScenarios/SoftwareInputs/CIbopHeight.f90 b/CSharp/OperationScenarios/SoftwareInputs/CIbopHeight.f90 new file mode 100644 index 0000000..b0d62a4 --- /dev/null +++ b/CSharp/OperationScenarios/SoftwareInputs/CIbopHeight.f90 @@ -0,0 +1,58 @@ +module CIbopHeight + use CVoidEventHandlerCollection + implicit none + real :: IbopHeight = 0 + + public + + type(VoidEventHandlerCollection) :: OnIbopHeightChange + + private :: IbopHeight + + contains + + + subroutine Set_IbopHeight(v) + implicit none + real , intent(in) :: v +#ifdef ExcludeExtraChanges + if(IbopHeight == v) return +#endif + IbopHeight = v +#ifdef deb + print*, 'IbopHeight=', IbopHeight +#endif + call OnIbopHeightChange%RunAll() + end subroutine + + real function Get_IbopHeight() + implicit none + Get_IbopHeight = IbopHeight + !Get_IbopHeight = 23.0 + end function + + + + + subroutine Set_IbopHeight_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_IbopHeight_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_IbopHeight_WN' :: Set_IbopHeight_WN + implicit none + real , intent(in) :: v + call Set_IbopHeight(v) + end subroutine + real function Get_IbopHeight_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_IbopHeight_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_IbopHeight_WN' :: Get_IbopHeight_WN + implicit none + Get_IbopHeight_WN = IbopHeight + !Get_IbopHeight_WN = 23.0 + end function + + + subroutine Subscribe_IbopHeight() + implicit none + end subroutine + + +end module CIbopHeight \ No newline at end of file diff --git a/CSharp/OperationScenarios/SoftwareInputs/CNearFloorConnection.f90 b/CSharp/OperationScenarios/SoftwareInputs/CNearFloorConnection.f90 new file mode 100644 index 0000000..336b4e4 --- /dev/null +++ b/CSharp/OperationScenarios/SoftwareInputs/CNearFloorConnection.f90 @@ -0,0 +1,60 @@ +module CNearFloorConnection + use CVoidEventHandlerCollection + implicit none + real :: NearFloorConnection = 0 + + public + + type(VoidEventHandlerCollection) :: OnNearFloorConnectionChange + + private :: NearFloorConnection + + contains + + + subroutine Set_NearFloorConnection(v) + implicit none + real , intent(in) :: v +#ifdef ExcludeExtraChanges + if(NearFloorConnection == v) return +#endif + NearFloorConnection = v +#ifdef deb + print*, 'NearFloorConnection=', NearFloorConnection +#endif + call OnNearFloorConnectionChange%RunAll() + end subroutine + + real function Get_NearFloorConnection() + implicit none + Get_NearFloorConnection = NearFloorConnection + !Get_NearFloorConnection = 4 + end function + + + + + subroutine Set_NearFloorConnection_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_NearFloorConnection_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_NearFloorConnection_WN' :: Set_NearFloorConnection_WN + implicit none + real , intent(in) :: v + call Set_NearFloorConnection(v) + end subroutine + + + real function Get_NearFloorConnection_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_NearFloorConnection_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_NearFloorConnection_WN' :: Get_NearFloorConnection_WN + implicit none + Get_NearFloorConnection_WN = NearFloorConnection + !Get_NearFloorConnection_WN = 4 + end function + + + + subroutine Subscribe_NearFloorConnection() + implicit none + end subroutine + +end module CNearFloorConnection \ No newline at end of file diff --git a/CSharp/OperationScenarios/SoftwareInputs/CSafetyValveHeight.f90 b/CSharp/OperationScenarios/SoftwareInputs/CSafetyValveHeight.f90 new file mode 100644 index 0000000..6941606 --- /dev/null +++ b/CSharp/OperationScenarios/SoftwareInputs/CSafetyValveHeight.f90 @@ -0,0 +1,59 @@ +module CSafetyValveHeight + use CVoidEventHandlerCollection + implicit none + real :: SafetyValveHeight = 0 + + public + + type(VoidEventHandlerCollection) :: OnSafetyValveHeightChange + + private :: SafetyValveHeight + + contains + + + subroutine Set_SafetyValveHeight(v) + implicit none + real , intent(in) :: v +#ifdef ExcludeExtraChanges + if(SafetyValveHeight == v) return +#endif + SafetyValveHeight = v +#ifdef deb + print*, 'SafetyValveHeight=', SafetyValveHeight +#endif + call OnSafetyValveHeightChange%RunAll() + end subroutine + + real function Get_SafetyValveHeight() + implicit none + Get_SafetyValveHeight = SafetyValveHeight + !Get_SafetyValveHeight = 23 + end function + + + + + + subroutine Set_SafetyValveHeight_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_SafetyValveHeight_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_SafetyValveHeight_WN' :: Set_SafetyValveHeight_WN + implicit none + real , intent(in) :: v + call Set_SafetyValveHeight(v) + end subroutine + + real function Get_SafetyValveHeight_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_SafetyValveHeight_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_SafetyValveHeight_WN' :: Get_SafetyValveHeight_WN + implicit none + Get_SafetyValveHeight_WN = SafetyValveHeight + !Get_SafetyValveHeight_WN = 23 + end function + + + subroutine Subscribe_SafetyValveHeight() + implicit none + end subroutine + +end module CSafetyValveHeight \ No newline at end of file diff --git a/CSharp/OperationScenarios/SoftwareInputs/CSlackOff.f90 b/CSharp/OperationScenarios/SoftwareInputs/CSlackOff.f90 new file mode 100644 index 0000000..f6c0cbc --- /dev/null +++ b/CSharp/OperationScenarios/SoftwareInputs/CSlackOff.f90 @@ -0,0 +1,54 @@ +module CSlackOff + use CVoidEventHandlerCollection + implicit none + logical :: SlackOff = .false. + + public + + type(VoidEventHandlerCollection) :: OnSlackOffChange + + private :: SlackOff + + contains + + + subroutine Set_SlackOff(v) + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(SlackOff == v) return +#endif + SlackOff = v +#ifdef deb + print*, 'SlackOff=', SlackOff +#endif + call OnSlackOffChange%RunAll() + end subroutine + + logical function Get_SlackOff() + implicit none + Get_SlackOff = SlackOff + end function + + + + subroutine Set_SlackOff_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_SlackOff_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_SlackOff_WN' :: Set_SlackOff_WN + implicit none + logical , intent(in) :: v + call Set_SlackOff(v) + end subroutine + + logical function Get_SlackOff_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_SlackOff_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_SlackOff_WN' :: Get_SlackOff_WN + implicit none + Get_SlackOff_WN = SlackOff + end function + + subroutine Subscribe_SlackOff() + implicit none + end subroutine + +end module CSlackOff \ No newline at end of file diff --git a/CSharp/OperationScenarios/SoftwareInputs/CStandRack.f90 b/CSharp/OperationScenarios/SoftwareInputs/CStandRack.f90 new file mode 100644 index 0000000..cc6b70d --- /dev/null +++ b/CSharp/OperationScenarios/SoftwareInputs/CStandRack.f90 @@ -0,0 +1,38 @@ +module CStandRack + use CVoidEventHandlerCollection + implicit none + integer :: StandRack = 0 + + public + + type(VoidEventHandlerCollection) :: OnStandRackChanged + + private :: StandRack + + contains + + subroutine Set_StandRack(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(StandRack == v) return +#endif + StandRack = v +#ifdef deb + print*, 'StandRack=', StandRack +#endif + call OnStandRackChanged%RunAll() + end subroutine + + integer function Get_StandRack() + implicit none + Get_StandRack = StandRack + end function + + subroutine Subscribe_StandRack() + use CCommonVariables + implicit none + call OnStandRackChange%AssignTo(Set_StandRack) + end subroutine + +end module CStandRack \ No newline at end of file diff --git a/CSharp/OperationScenarios/SoftwareInputs/CStringPressure.f90 b/CSharp/OperationScenarios/SoftwareInputs/CStringPressure.f90 new file mode 100644 index 0000000..6fbda76 --- /dev/null +++ b/CSharp/OperationScenarios/SoftwareInputs/CStringPressure.f90 @@ -0,0 +1,57 @@ +module CStringPressure + use CVoidEventHandlerCollection + implicit none + real :: StringPressure = 0 + + public + + type(VoidEventHandlerCollection) :: OnStringPressureChange + + private :: StringPressure + + contains + + + subroutine Set_StringPressure(v) + implicit none + real , intent(in) :: v +#ifdef ExcludeExtraChanges + if(StringPressure == v) return +#endif + StringPressure = v +#ifdef deb + print*, 'StringPressure=', StringPressure +#endif + call OnStringPressureChange%RunAll() + end subroutine + + real function Get_StringPressure() + implicit none + Get_StringPressure = StringPressure + end function + + + + + subroutine Set_StringPressure_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_StringPressure_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_StringPressure_WN' :: Set_StringPressure_WN + implicit none + real , intent(in) :: v + call Set_StringPressure(v) + end subroutine + + real function Get_StringPressure_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_StringPressure_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_StringPressure_WN' :: Get_StringPressure_WN + implicit none + Get_StringPressure_WN = StringPressure + end function + + + + subroutine Subscribe_StringPressure() + implicit none + end subroutine + +end module CStringPressure \ No newline at end of file diff --git a/CSharp/OperationScenarios/SoftwareInputs/CTdsStemJointHeight.f90 b/CSharp/OperationScenarios/SoftwareInputs/CTdsStemJointHeight.f90 new file mode 100644 index 0000000..ae5f883 --- /dev/null +++ b/CSharp/OperationScenarios/SoftwareInputs/CTdsStemJointHeight.f90 @@ -0,0 +1,55 @@ +module CTdsStemJointHeight + use CVoidEventHandlerCollection + implicit none + real :: TdsStemJointHeight = 0 + + public + type(VoidEventHandlerCollection) :: OnTdsStemJointHeightChange + + private :: TdsStemJointHeight + + contains + + subroutine Set_TdsStemJointHeight(v) + implicit none + real , intent(in) :: v +#ifdef ExcludeExtraChanges + if(TdsStemJointHeight == v) return +#endif + TdsStemJointHeight = v +#ifdef deb + print*, 'TdsStemJointHeight=', TdsStemJointHeight +#endif + call OnTdsStemJointHeightChange%RunAll() + end subroutine + + real function Get_TdsStemJointHeight() + implicit none + Get_TdsStemJointHeight = TdsStemJointHeight + end function + + + + + subroutine Set_TdsStemJointHeight_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_TdsStemJointHeight_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_TdsStemJointHeight_WN' :: Set_TdsStemJointHeight_WN + implicit none + real , intent(in) :: v + call Set_TdsStemJointHeight(v) + end subroutine + + real function Get_TdsStemJointHeight_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_TdsStemJointHeight_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_TdsStemJointHeight_WN' :: Get_TdsStemJointHeight_WN + implicit none + Get_TdsStemJointHeight_WN = TdsStemJointHeight + end function + + + + subroutine Subscribe_TdsStemJointHeight() + implicit none + end subroutine + +end module CTdsStemJointHeight \ No newline at end of file diff --git a/CSharp/OperationScenarios/SoftwareInputs/CZeroStringSpeed.f90 b/CSharp/OperationScenarios/SoftwareInputs/CZeroStringSpeed.f90 new file mode 100644 index 0000000..d62ca14 --- /dev/null +++ b/CSharp/OperationScenarios/SoftwareInputs/CZeroStringSpeed.f90 @@ -0,0 +1,60 @@ +module CZeroStringSpeed + use CVoidEventHandlerCollection + implicit none + logical :: ZeroStringSpeed = .false. + + public + + type(VoidEventHandlerCollection) :: OnZeroStringSpeedChange + + private :: ZeroStringSpeed + + contains + + + subroutine Set_ZeroStringSpeed(v) + implicit none + logical , intent(in) :: v +#ifdef ExcludeExtraChanges + if(ZeroStringSpeed == v) return +#endif + ZeroStringSpeed = v +#ifdef deb + print*, 'ZeroStringSpeed=', ZeroStringSpeed +#endif + call OnZeroStringSpeedChange%RunAll() + end subroutine + + logical function Get_ZeroStringSpeed() + implicit none + Get_ZeroStringSpeed = ZeroStringSpeed + !Get_ZeroStringSpeed = .true. + end function + + + + + subroutine Set_ZeroStringSpeed_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_ZeroStringSpeed_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_ZeroStringSpeed_WN' :: Set_ZeroStringSpeed_WN + implicit none + logical , intent(in) :: v + call Set_ZeroStringSpeed(v) + end subroutine + + logical function Get_ZeroStringSpeed_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_ZeroStringSpeed_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_ZeroStringSpeed_WN' :: Get_ZeroStringSpeed_WN + implicit none + Get_ZeroStringSpeed_WN = ZeroStringSpeed + !Get_ZeroStringSpeed_WN = .true. + end function + + + + subroutine Subscribe_ZeroStringSpeed() + implicit none + + end subroutine + +end module CZeroStringSpeed \ No newline at end of file diff --git a/CSharp/OperationScenarios/SoftwareOutputs/CStringUpdate.f90 b/CSharp/OperationScenarios/SoftwareOutputs/CStringUpdate.f90 new file mode 100644 index 0000000..0b97c52 --- /dev/null +++ b/CSharp/OperationScenarios/SoftwareOutputs/CStringUpdate.f90 @@ -0,0 +1,33 @@ +module CStringUpdate + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_StringUpdate() + implicit none + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_StringUpdate=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_StringUpdate=Kelly' +!#endif +! endif +! + end subroutine + + subroutine Subscribe_StringUpdate() + implicit none + end subroutine + +end module CStringUpdate \ No newline at end of file diff --git a/CSharp/OperationScenarios/SoftwareOutputs/CStringUpdateVariables.f90 b/CSharp/OperationScenarios/SoftwareOutputs/CStringUpdateVariables.f90 new file mode 100644 index 0000000..ed1a071 --- /dev/null +++ b/CSharp/OperationScenarios/SoftwareOutputs/CStringUpdateVariables.f90 @@ -0,0 +1,70 @@ +module CStringUpdateVariables + use CIntegerEventHandlerCollection + implicit none + integer :: StringUpdate = 0 + + public + + type(IntegerEventHandlerCollection) :: OnStringUpdateChange + + enum, bind(c) + enumerator STRING_UPDATE_NEUTRAL + enumerator STRING_UPDATE_ADD_SINGLE + enumerator STRING_UPDATE_ADD_STAND + enumerator STRING_UPDATE_REMOVE_SINGLE + enumerator STRING_UPDATE_REMOVE_STAND + end enum + + private :: StringUpdate + + contains + + subroutine Set_StringUpdate(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(StringUpdate == v) return +#endif + StringUpdate = v +#ifdef deb + !if(StringUpdate==STRING_UPDATE_NEUTRAL) then + ! print*, 'StringUpdate=STRING_UPDATE_NEUTRAL' + !else if(StringUpdate==STRING_UPDATE_ADD_SINGLE) then + ! print*, 'StringUpdate=STRING_UPDATE_ADD_SINGLE' + !else if(StringUpdate==STRING_UPDATE_ADD_STAND) then + ! print*, 'StringUpdate=STRING_UPDATE_ADD_STAND' + !else if(StringUpdate==STRING_UPDATE_REMOVE_SINGLE) then + ! print*, 'StringUpdate=STRING_UPDATE_REMOVE_SINGLE' + !else if(StringUpdate==STRING_UPDATE_REMOVE_STAND) then + ! print*, 'StringUpdate=STRING_UPDATE_REMOVE_STAND' + !endif + !print*, 'StringUpdate=', StringUpdate +#endif + call OnStringUpdateChange%RunAll(v) + end subroutine + + integer function Get_StringUpdate() + implicit none + Get_StringUpdate = StringUpdate + end function + + + + + subroutine Set_StringUpdate_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_StringUpdate_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_StringUpdate_WN' :: Set_StringUpdate_WN + implicit none + integer , intent(in) :: v + call Set_StringUpdate(v) + end subroutine + + integer function Get_StringUpdate_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_StringUpdate_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_StringUpdate_WN' :: Get_StringUpdate_WN + implicit none + Get_StringUpdate_WN = StringUpdate + end function + + +end module CStringUpdateVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Test/TestOperationScenarios.f90 b/CSharp/OperationScenarios/Test/TestOperationScenarios.f90 new file mode 100644 index 0000000..903a2ff --- /dev/null +++ b/CSharp/OperationScenarios/Test/TestOperationScenarios.f90 @@ -0,0 +1,831 @@ +module TestOperationScenarios + use CKellyConnectionEnumVariables + use CElevatorConnectionEnumVariables + + use CCloseKellyCockLedNotificationVariables + use CCloseSafetyValveLedNotificationVariables + use CFillMouseHoleLedNotificationVariables + use CIrIBopLedNotificationVariables + use CIrSafetyValveLedNotificationVariables + use CLatchLedNotificationVariables + use COpenKellyCockLedNotificationVariables + use COpenSafetyValveLedNotificationVariables + use CSlipsNotificationVariables + use CSwingLedNotificationVariables + use CTongNotificationVariables + use CUnlatchLedNotificationVariables + + use CInstallFillupHeadPermissionVariables + use CInstallMudBucketPermissionVariables + use CIrIbopPermissionVariables + use CIrSafetyValvePermissionVariables + use CRemoveFillupHeadPermissionVariables + use CRemoveMudBucketPermissionVariables + + use CHookHeight + use CIbopHeight + use CNearFloorConnection + use CSafetyValveHeight + use CSlackOff + use CStandRack + use CStringPressure + use CZeroStringSpeed + + use CUnityInputs + !, only: & + ! Get_ElevatorConnectionPossible, & + ! Get_JointConnectionPossible, & + ! Get_NearMonkeyBoardPosition, & + ! Get_NearFloorPosition, & + ! Get_SingleSetInMouseHole, & + ! Get_SwingCenter, & + ! Get_NewHookHeight + use CUnityOutputs + + use CBucketEnumVariables + use CElevatorEnumVariables + use CHeadEnumVariables + use CIbopEnumVariables + use CKellyEnumVariables + use CMouseHoleEnumVariables + use COperationConditionEnumVariables + use CSafetyValveEnumVariables + use CSlipsEnumVariables + use CSwingEnumVariables + use CTongEnumVariables + + use CRigSizeVariables + use CHoistingVariables + + use CFlowPipeDisconnectEnumVariables + use CFlowKellyDisconnectEnumVariables + + use CStringUpdateVariables + + implicit none + public + contains + + + integer function GetElevatorConnection() + !DEC$ ATTRIBUTES DLLEXPORT :: GetElevatorConnection + !DEC$ ATTRIBUTES ALIAS: 'GetElevatorConnection' :: GetElevatorConnection + implicit none + GetElevatorConnection = Get_ElevatorConnection() + + end function + + integer function GetKellyConnection() + !DEC$ ATTRIBUTES DLLEXPORT :: GetKellyConnection + !DEC$ ATTRIBUTES ALIAS: 'GetKellyConnection' :: GetKellyConnection + implicit none + GetKellyConnection = Get_KellyConnection() + end function + + + + logical function GetCloseKellyCockLedU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetCloseKellyCockLedU + !DEC$ ATTRIBUTES ALIAS: 'GetCloseKellyCockLedU' :: GetCloseKellyCockLedU + implicit none + GetCloseKellyCockLedU = Get_CloseKellyCockLed() + end function + + logical function GetCloseSafetyValveLedU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetCloseSafetyValveLedU + !DEC$ ATTRIBUTES ALIAS: 'GetCloseSafetyValveLedU' :: GetCloseSafetyValveLedU + implicit none + GetCloseSafetyValveLedU = Get_CloseSafetyValveLed() + end function + + logical function GetFillMouseHoleLedU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFillMouseHoleLedU + !DEC$ ATTRIBUTES ALIAS: 'GetFillMouseHoleLedU' :: GetFillMouseHoleLedU + implicit none + GetFillMouseHoleLedU = Get_FillMouseHoleLed() + end function + + logical function GetIrIBopLedU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetIrIBopLedU + !DEC$ ATTRIBUTES ALIAS: 'GetIrIBopLedU' :: GetIrIBopLedU + implicit none + GetIrIBopLedU = Get_IrIBopLed() + end function + + logical function GetIrSafetyValveLedU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetIrSafetyValveLedU + !DEC$ ATTRIBUTES ALIAS: 'GetIrSafetyValveLedU' :: GetIrSafetyValveLedU + implicit none + GetIrSafetyValveLedU = Get_IrSafetyValveLed() + end function + + logical function GetLatchLedU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetLatchLedU + !DEC$ ATTRIBUTES ALIAS: 'GetLatchLedU' :: GetLatchLedU + implicit none + GetLatchLedU = Get_LatchLed() + end function + + logical function GetOpenKellyCockLedU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetOpenKellyCockLedU + !DEC$ ATTRIBUTES ALIAS: 'GetOpenKellyCockLedU' :: GetOpenKellyCockLedU + implicit none + GetOpenKellyCockLedU = Get_OpenKellyCockLed() + end function + + logical function GetOpenSafetyValveLedU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetOpenSafetyValveLedU + !DEC$ ATTRIBUTES ALIAS: 'GetOpenSafetyValveLedU' :: GetOpenSafetyValveLedU + implicit none + GetOpenSafetyValveLedU = Get_OpenSafetyValveLed() + end function + + logical function GetSlipsNotification() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSlipsNotification + !DEC$ ATTRIBUTES ALIAS: 'GetSlipsNotification' :: GetSlipsNotification + implicit none + GetSlipsNotification = Get_SlipsNotification() + end function + + logical function GetSwingLedU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSwingLedU + !DEC$ ATTRIBUTES ALIAS: 'GetSwingLedU' :: GetSwingLedU + implicit none + GetSwingLedU = Get_SwingLed() + end function + + logical function GetTongNotification() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTongNotification + !DEC$ ATTRIBUTES ALIAS: 'GetTongNotification' :: GetTongNotification + implicit none + GetTongNotification = Get_TongNotification() + end function + + logical function GetUnlatchLed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetUnlatchLed + !DEC$ ATTRIBUTES ALIAS: 'GetUnlatchLed' :: GetUnlatchLed + implicit none + GetUnlatchLed = Get_UnlatchLed() + end function + + logical function GetInstallFillupHeadPermission() + !DEC$ ATTRIBUTES DLLEXPORT :: GetInstallFillupHeadPermission + !DEC$ ATTRIBUTES ALIAS: 'GetInstallFillupHeadPermission' :: GetInstallFillupHeadPermission + implicit none + GetInstallFillupHeadPermission = Get_InstallFillupHeadPermission() + end function + + logical function GetInstallMudBucketPermission() + !DEC$ ATTRIBUTES DLLEXPORT :: GetInstallMudBucketPermission + !DEC$ ATTRIBUTES ALIAS: 'GetInstallMudBucketPermission' :: GetInstallMudBucketPermission + implicit none + GetInstallMudBucketPermission = Get_InstallMudBucketPermission() + end function + + logical function GetIrIbopPermission() + !DEC$ ATTRIBUTES DLLEXPORT :: GetIrIbopPermission + !DEC$ ATTRIBUTES ALIAS: 'GetIrIbopPermission' :: GetIrIbopPermission + implicit none + GetIrIbopPermission = Get_IrIbopPermission() + end function + + logical function GetIrSafetyValvePermission() + !DEC$ ATTRIBUTES DLLEXPORT :: GetIrSafetyValvePermission + !DEC$ ATTRIBUTES ALIAS: 'GetIrSafetyValvePermission' :: GetIrSafetyValvePermission + implicit none + GetIrSafetyValvePermission = Get_IrSafetyValvePermission() + end function + + logical function GetRemoveFillupHeadPermission() + !DEC$ ATTRIBUTES DLLEXPORT :: GetRemoveFillupHeadPermission + !DEC$ ATTRIBUTES ALIAS: 'GetRemoveFillupHeadPermission' :: GetRemoveFillupHeadPermission + implicit none + GetRemoveFillupHeadPermission = Get_RemoveFillupHeadPermission() + end function + + logical function GetRemoveMudBucketPermission() + !DEC$ ATTRIBUTES DLLEXPORT :: GetRemoveMudBucketPermission + !DEC$ ATTRIBUTES ALIAS: 'GetRemoveMudBucketPermission' :: GetRemoveMudBucketPermission + implicit none + GetRemoveMudBucketPermission = Get_RemoveMudBucketPermission() + end function + + real function GetHookHeightU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetHookHeightU + !DEC$ ATTRIBUTES ALIAS: 'GetHookHeightU' :: GetHookHeightU + implicit none + GetHookHeightU = Get_HookHeight() + end function + + real(8) function GetIbopHeight() + !DEC$ ATTRIBUTES DLLEXPORT :: GetIbopHeight + !DEC$ ATTRIBUTES ALIAS: 'GetIbopHeight' :: GetIbopHeight + implicit none + GetIbopHeight = Get_IbopHeight() + end function + + real(8) function GetNearFloorConnection() + !DEC$ ATTRIBUTES DLLEXPORT :: GetNearFloorConnection + !DEC$ ATTRIBUTES ALIAS: 'GetNearFloorConnection' :: GetNearFloorConnection + implicit none + GetNearFloorConnection = Get_NearFloorConnection() + end function + + real(8) function GetSafetyValveHeight() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSafetyValveHeight + !DEC$ ATTRIBUTES ALIAS: 'GetSafetyValveHeight' :: GetSafetyValveHeight + implicit none + GetSafetyValveHeight = Get_SafetyValveHeight() + end function + + logical function GetSlackOff() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSlackOff + !DEC$ ATTRIBUTES ALIAS: 'GetSlackOff' :: GetSlackOff + implicit none + GetSlackOff = Get_SlackOff() + end function + + integer function GetStandRackU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetStandRackU + !DEC$ ATTRIBUTES ALIAS: 'GetStandRackU' :: GetStandRackU + implicit none + GetStandRackU = Get_StandRack() + end function + + real(8) function GetRotaryRpmU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetRotaryRpmU + !DEC$ ATTRIBUTES ALIAS: 'GetRotaryRpmU' :: GetRotaryRpmU + implicit none + GetRotaryRpmU = GetRotaryRpm() + end function + + real(8) function GetStringPressure() + !DEC$ ATTRIBUTES DLLEXPORT :: GetStringPressure + !DEC$ ATTRIBUTES ALIAS: 'GetStringPressure' :: GetStringPressure + implicit none + GetStringPressure = Get_StringPressure() + end function + + logical function GetZeroStringSpeed() + !DEC$ ATTRIBUTES DLLEXPORT :: GetZeroStringSpeed + !DEC$ ATTRIBUTES ALIAS: 'GetZeroStringSpeed' :: GetZeroStringSpeed + implicit none + GetZeroStringSpeed = Get_ZeroStringSpeed() + end function + + real(8) function GetFlowRateU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFlowRateU + !DEC$ ATTRIBUTES ALIAS: 'GetFlowRateU' :: GetFlowRateU + implicit none + GetFlowRateU = GetFlowRate() + end function + + real(8) function GetPedalU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetPedalU + !DEC$ ATTRIBUTES ALIAS: 'GetPedalU' :: GetPedalU + implicit none + GetPedalU = GetPedal() + end function + + real(8) function GetFloorHeightU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFloorHeightU + !DEC$ ATTRIBUTES ALIAS: 'GetFloorHeightU' :: GetFloorHeightU + implicit none + GetFloorHeightU = RigFloorHeight + end function + + real(8) function GetCrownHeightU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetCrownHeightU + !DEC$ ATTRIBUTES ALIAS: 'GetCrownHeightU' :: GetCrownHeightU + implicit none + GetCrownHeightU = CrownHeight + end function + + real(8) function GetKellyHoseVibrationRateU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetKellyHoseVibrationRateU + !DEC$ ATTRIBUTES ALIAS: 'GetKellyHoseVibrationRateU' :: GetKellyHoseVibrationRateU + implicit none + GetKellyHoseVibrationRateU = GetKellyHoseVibrationRate() + end function + + integer function GetDriveTypeU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetDriveTypeU + !DEC$ ATTRIBUTES ALIAS: 'GetDriveTypeU' :: GetDriveTypeU + implicit none + + GetDriveTypeU = DriveType + end function + + logical function GetElevatorConnectionPossibility() + !DEC$ ATTRIBUTES DLLEXPORT :: GetElevatorConnectionPossibility + !DEC$ ATTRIBUTES ALIAS: 'GetElevatorConnectionPossibility' :: GetElevatorConnectionPossibility + implicit none + GetElevatorConnectionPossibility = Get_ElevatorConnectionPossible() + end function + + logical function GetJointConnectionPossibility() + !DEC$ ATTRIBUTES DLLEXPORT :: GetJointConnectionPossibility + !DEC$ ATTRIBUTES ALIAS: 'GetJointConnectionPossibility' :: GetJointConnectionPossibility + implicit none + GetJointConnectionPossibility = Get_JointConnectionPossible() + end function + + logical function GetElevatorPickup() + !DEC$ ATTRIBUTES DLLEXPORT :: GetElevatorPickup + !DEC$ ATTRIBUTES ALIAS: 'GetElevatorPickup' :: GetElevatorPickup + implicit none + GetElevatorPickup = Get_ElevatorPickup() + end function + + logical function GetNearFloorPosition() + !DEC$ ATTRIBUTES DLLEXPORT :: GetNearFloorPosition + !DEC$ ATTRIBUTES ALIAS: 'GetNearFloorPosition' :: GetNearFloorPosition + implicit none + GetNearFloorPosition = Get_NearFloorPosition() + end function + + logical function GetSingleSetInMouseHole() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSingleSetInMouseHole + !DEC$ ATTRIBUTES ALIAS: 'GetSingleSetInMouseHole' :: GetSingleSetInMouseHole + implicit none + GetSingleSetInMouseHole = Get_SingleSetInMouseHole() + end function + + logical function GetSwingCenter() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSwingCenter + !DEC$ ATTRIBUTES ALIAS: 'GetSwingCenter' :: GetSwingCenter + implicit none + !GetSwingCenter = Get_SwingCenter() + GetSwingCenter = .false. + end function + + integer function GetMudBucket() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMudBucket + !DEC$ ATTRIBUTES ALIAS: 'GetMudBucket' :: GetMudBucket + implicit none + GetMudBucket = Get_MudBucket() + end function + + integer function GetElevator() + !DEC$ ATTRIBUTES DLLEXPORT :: GetElevator + !DEC$ ATTRIBUTES ALIAS: 'GetElevator' :: GetElevator + implicit none + GetElevator = Get_Elevator() + end function + + integer function GetFlow() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFlow + !DEC$ ATTRIBUTES ALIAS: 'GetFlow' :: GetFlow + implicit none + GetFlow = 0 + end function + + integer function GetFillupHead() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFillupHead + !DEC$ ATTRIBUTES ALIAS: 'GetFillupHead' :: GetFillupHead + implicit none + GetFillupHead = Get_FillupHead() + end function + + integer function GetIbop() + !DEC$ ATTRIBUTES DLLEXPORT :: GetIbop + !DEC$ ATTRIBUTES ALIAS: 'GetIbop' :: GetIbop + implicit none + GetIbop = Get_Ibop() + end function + + integer function GetKelly() + !DEC$ ATTRIBUTES DLLEXPORT :: GetKelly + !DEC$ ATTRIBUTES ALIAS: 'GetKelly' :: GetKelly + implicit none + GetKelly = Get_Kelly() + end function + + integer function GetMouseHole() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMouseHole + !DEC$ ATTRIBUTES ALIAS: 'GetMouseHole' :: GetMouseHole + implicit none + GetMouseHole = Get_MouseHole() + end function + + integer function GetOperationCondition() + !DEC$ ATTRIBUTES DLLEXPORT :: GetOperationCondition + !DEC$ ATTRIBUTES ALIAS: 'GetOperationCondition' :: GetOperationCondition + implicit none + GetOperationCondition = Get_OperationCondition() + end function + + integer function GetSafetyValve() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSafetyValve + !DEC$ ATTRIBUTES ALIAS: 'GetSafetyValve' :: GetSafetyValve + implicit none + GetSafetyValve = Get_SafetyValve() + end function + + integer function GetSlips() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSlips + !DEC$ ATTRIBUTES ALIAS: 'GetSlips' :: GetSlips + implicit none + GetSlips = Get_Slips() + end function + + integer function GetSwing() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSwing + !DEC$ ATTRIBUTES ALIAS: 'GetSwing' :: GetSwing + implicit none + GetSwing = Get_Swing() + end function + + + + + integer function GetTong() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTong + !DEC$ ATTRIBUTES ALIAS: 'GetTong' :: GetTong + implicit none + GetTong = Get_Tong() + end function + + integer function GetStringUpdateU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetStringUpdateU + !DEC$ ATTRIBUTES ALIAS: 'GetStringUpdateU' :: GetStringUpdateU + implicit none + GetStringUpdateU = Get_StringUpdate() + end function + + + + real(8) function GetNewHookHeightU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetNewHookHeightU + !DEC$ ATTRIBUTES ALIAS: 'GetNewHookHeightU' :: GetNewHookHeightU + implicit none + !GetNewHookHeightU = Get_NewHookHeight() + GetNewHookHeightU = 0d0 + end function + + real(8) function GetBlowoutFromStringPercentU() + !DEC$ ATTRIBUTES DLLEXPORT :: GetBlowoutFromStringPercentU + !DEC$ ATTRIBUTES ALIAS: 'GetBlowoutFromStringPercentU' :: GetBlowoutFromStringPercentU + implicit none + GetBlowoutFromStringPercentU = GetBlowoutFromStringPercent() + end function + + + + + + logical function GetMakeupTong() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMakeupTong + !DEC$ ATTRIBUTES ALIAS: 'GetMakeupTong' :: GetMakeupTong + implicit none + !GetMakeupTong = Get_MakeupTong() + GetMakeupTong = .false. + end function + + logical function GetBreakupTong() + !DEC$ ATTRIBUTES DLLEXPORT :: GetBreakupTong + !DEC$ ATTRIBUTES ALIAS: 'GetBreakupTong' :: GetBreakupTong + implicit none + !GetBreakupTong = Get_BreakupTong() + GetBreakupTong = .false. + end function + + logical function GetSlipsSet() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSlipsSet + !DEC$ ATTRIBUTES ALIAS: 'GetSlipsSet' :: GetSlipsSet + implicit none + !GetSlipsSet = Get_SlipsSetU() + GetSlipsSet = .false. + end function + + logical function GetSlipsUnSet() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSlipsUnSet + !DEC$ ATTRIBUTES ALIAS: 'GetSlipsUnSet' :: GetSlipsUnSet + implicit none + !GetSlipsUnSet = Get_SlipsUnSetU() + GetSlipsUnSet = .false. + end function + + logical function GetLatch() + !DEC$ ATTRIBUTES DLLEXPORT :: GetLatch + !DEC$ ATTRIBUTES ALIAS: 'GetLatch' :: GetLatch + implicit none + !GetLatch = Get_Latch() + GetLatch = .false. + end function + + logical function GetUnlatch() + !DEC$ ATTRIBUTES DLLEXPORT :: GetUnlatch + !DEC$ ATTRIBUTES ALIAS: 'GetUnlatch' :: GetUnlatch + implicit none + !GetUnlatch = Get_Unlatch() + GetUnlatch = .false. + end function + + logical function GetOutOfMouseHole() + !DEC$ ATTRIBUTES DLLEXPORT :: GetOutOfMouseHole + !DEC$ ATTRIBUTES ALIAS: 'GetOutOfMouseHole' :: GetOutOfMouseHole + implicit none + !GetOutOfMouseHole = Get_OutOfMouseHole() + GetOutOfMouseHole = .false. + end function + + logical function GetIsKellyBushingSetInTable() + !DEC$ ATTRIBUTES DLLEXPORT :: GetIsKellyBushingSetInTable + !DEC$ ATTRIBUTES ALIAS: 'GetIsKellyBushingSetInTable' :: GetIsKellyBushingSetInTable + implicit none + GetIsKellyBushingSetInTable = Get_IsKellyBushingSetInTable() + end function + + + + + + + + + + ! TempVars + logical function GetSignal1U() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal1U + !DEC$ ATTRIBUTES ALIAS: 'GetSignal1U' :: GetSignal1U + implicit none + !GetSignal1U = GetSignal1() + GetSignal1U = .false. + end function + + logical function GetSignal2U() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal2U + !DEC$ ATTRIBUTES ALIAS: 'GetSignal2U' :: GetSignal2U + implicit none + !GetSignal2U = GetSignal2() + GetSignal2U = .false. + end function + + logical function GetSignal3U() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal3U + !DEC$ ATTRIBUTES ALIAS: 'GetSignal3U' :: GetSignal3U + implicit none + !GetSignal3U = GetSignal3() + GetSignal3U = .false. + end function + + logical function GetSignal4U() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal4U + !DEC$ ATTRIBUTES ALIAS: 'GetSignal4U' :: GetSignal4U + implicit none + !GetSignal4U = GetSignal4() + GetSignal4U = .false. + end function + + logical function GetSignal5U() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal5U + !DEC$ ATTRIBUTES ALIAS: 'GetSignal5U' :: GetSignal5U + implicit none + !GetSignal5U = GetSignal5() + GetSignal5U = .false. + end function + + logical function GetSignal6U() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal6U + !DEC$ ATTRIBUTES ALIAS: 'GetSignal6U' :: GetSignal6U + implicit none + !GetSignal6U = GetSignal6() + GetSignal6U = .false. + end function + + logical function GetSignal7U() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal7U + !DEC$ ATTRIBUTES ALIAS: 'GetSignal7U' :: GetSignal7U + implicit none + !GetSignal7U = GetSignal7() + GetSignal7U = .false. + end function + + logical function GetSignal8U() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal8U + !DEC$ ATTRIBUTES ALIAS: 'GetSignal8U' :: GetSignal8U + implicit none + !GetSignal8U = GetSignal8() + GetSignal8U = .false. + end function + + logical function GetSignal9U() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal9U + !DEC$ ATTRIBUTES ALIAS: 'GetSignal9U' :: GetSignal9U + implicit none + !GetSignal9U = GetSignal9() + GetSignal9U = .false. + end function + + logical function GetSignal10U() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal10U + !DEC$ ATTRIBUTES ALIAS: 'GetSignal10U' :: GetSignal10U + implicit none + !GetSignal10U = GetSignal10() + GetSignal10U = .false. + end function + + + real(8) function GetTopJiontHeight() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTopJiontHeight + !DEC$ ATTRIBUTES ALIAS: 'GetTopJiontHeight' :: GetTopJiontHeight + use TD_DrillStemComponents + implicit none + GetTopJiontHeight = TD_TopJointHeight + end function + + + + logical function GetBlowoutFromStringT() + !DEC$ ATTRIBUTES DLLEXPORT :: GetBlowoutFromStringT + !DEC$ ATTRIBUTES ALIAS: 'GetBlowoutFromStringT' :: GetBlowoutFromStringT + implicit none + GetBlowoutFromStringT = Get_BlowoutFromString() + end function + + logical function GetBlowoutFromAnnularT() + !DEC$ ATTRIBUTES DLLEXPORT :: GetBlowoutFromAnnularT + !DEC$ ATTRIBUTES ALIAS: 'GetBlowoutFromAnnularT' :: GetBlowoutFromAnnularT + implicit none + GetBlowoutFromAnnularT = Get_BlowoutFromAnnular() + end function + + logical function GetFlowFromReturnLineT() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFlowFromReturnLineT + !DEC$ ATTRIBUTES ALIAS: 'GetFlowFromReturnLineT' :: GetFlowFromReturnLineT + implicit none + GetFlowFromReturnLineT = Get_FlowFromReturnLine() + end function + + real function GetFlowFromKellyT() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFlowFromKellyT + !DEC$ ATTRIBUTES ALIAS: 'GetFlowFromKellyT' :: GetFlowFromKellyT + implicit none + GetFlowFromKellyT = Get_FlowFromKelly() + end function + + logical function GetFlowKellyDisconnectT() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFlowKellyDisconnectT + !DEC$ ATTRIBUTES ALIAS: 'GetFlowKellyDisconnectT' :: GetFlowKellyDisconnectT + implicit none + GetFlowKellyDisconnectT = Get_FlowKellyDisconnect() + end function + + logical function GetFlowPipeDisconnectT() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFlowPipeDisconnectT + !DEC$ ATTRIBUTES ALIAS: 'GetFlowPipeDisconnectT' :: GetFlowPipeDisconnectT + implicit none + GetFlowPipeDisconnectT = Get_FlowPipeDisconnect() + end function + + + !integer function GetFlowKellyDisconnectT2() + !!DEC$ ATTRIBUTES DLLEXPORT :: GetFlowKellyDisconnectT2 + !!DEC$ ATTRIBUTES ALIAS: 'GetFlowKellyDisconnectT2' :: GetFlowKellyDisconnectT2 + ! implicit none + ! GetFlowKellyDisconnectT2 = Get_FlowKellyDisconnect2() + !end function + + !integer function GetFlowPipeDisconnectT2() + !!DEC$ ATTRIBUTES DLLEXPORT :: GetFlowPipeDisconnectT2 + !!DEC$ ATTRIBUTES ALIAS: 'GetFlowPipeDisconnectT2' :: GetFlowPipeDisconnectT2 + ! implicit none + ! GetFlowPipeDisconnectT2 = Get_FlowPipeDisconnect2() + !end function + + + logical function GetSingleOutOfMouseHole() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSingleOutOfMouseHole + !DEC$ ATTRIBUTES ALIAS: 'GetSingleOutOfMouseHole' :: GetSingleOutOfMouseHole + implicit none + GetSingleOutOfMouseHole = .true. !Get_SingleOutOfMouseHole() + end function + + + + + + + + + + + + + + + + + + integer function GetTdsSwing() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTdsSwing + !DEC$ ATTRIBUTES ALIAS: 'GetTdsSwing' :: GetTdsSwing + use CTdsSwingEnumVariables + implicit none + GetTdsSwing = Get_TdsSwing() + end function + + integer function GetTdsSpine() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTdsSpine + !DEC$ ATTRIBUTES ALIAS: 'GetTdsSpine' :: GetTdsSpine + use CTdsSpineEnumVariables + implicit none + GetTdsSpine = Get_TdsSpine() + end function + + integer function GetTdsTong() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTdsTong + !DEC$ ATTRIBUTES ALIAS: 'GetTdsTong' :: GetTdsTong + use CTdsTongEnumVariables + implicit none + GetTdsTong = Get_TdsTong() + end function + + integer function GetTdsBackupClamp() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTdsBackupClamp + !DEC$ ATTRIBUTES ALIAS: 'GetTdsBackupClamp' :: GetTdsBackupClamp + use CTdsBackupClampVariables + implicit none + GetTdsBackupClamp = Get_TdsBackupClamp() + end function + + + + + + logical function GetTdsConnectionPossibility() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTdsConnectionPossibility + !DEC$ ATTRIBUTES ALIAS: 'GetTdsConnectionPossibility' :: GetTdsConnectionPossibility + implicit none + GetTdsConnectionPossibility = Get_TdsConnectionPossible() + end function + + logical function GetTdsStemIn() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTdsStemIn + !DEC$ ATTRIBUTES ALIAS: 'GetTdsStemIn' :: GetTdsStemIn + implicit none + GetTdsStemIn = Get_TdsStemIn() + end function + + + + logical function GetFillupHeadPermission() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFillupHeadPermission + !DEC$ ATTRIBUTES ALIAS: 'GetFillupHeadPermission' :: GetFillupHeadPermission + use CFillupHeadPermissionVariables + implicit none + GetFillupHeadPermission = Get_FillupHeadPermission() + end function + + logical function GetSwingDrillPermission() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSwingDrillPermission + !DEC$ ATTRIBUTES ALIAS: 'GetSwingDrillPermission' :: GetSwingDrillPermission + use CSwingDrillPermissionVariables + implicit none + GetSwingDrillPermission = Get_SwingDrillPermission() + end function + + logical function GetSwingOffPermission() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSwingOffPermission + !DEC$ ATTRIBUTES ALIAS: 'GetSwingOffPermission' :: GetSwingOffPermission + use CSwingOffPermissionVariables + implicit none + GetSwingOffPermission = Get_SwingOffPermission() + end function + + logical function GetSwingTiltPermission() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSwingTiltPermission + !DEC$ ATTRIBUTES ALIAS: 'GetSwingTiltPermission' :: GetSwingTiltPermission + use CSwingTiltPermissionVariables + implicit none + GetSwingTiltPermission = Get_SwingTiltPermission() + end function + + + real(8) function GetTdsStemJointHeight() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTdsStemJointHeight + !DEC$ ATTRIBUTES ALIAS: 'GetTdsStemJointHeight' :: GetTdsStemJointHeight + implicit none + GetTdsStemJointHeight = 10.0 + end function + + + + integer function GetTdsConnectionModes() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTdsConnectionModes + !DEC$ ATTRIBUTES ALIAS: 'GetTdsConnectionModes' :: GetTdsConnectionModes + use CTdsConnectionModesEnumVariables + implicit none + GetTdsConnectionModes = Get_TdsConnectionModes() + end function + + integer function GetTdsElevatorModes() + !DEC$ ATTRIBUTES DLLEXPORT :: GetTdsElevatorModes + !DEC$ ATTRIBUTES ALIAS: 'GetTdsElevatorModes' :: GetTdsElevatorModes + use CTdsElevatorModesEnumVariables + implicit none + GetTdsElevatorModes = Get_TdsElevatorModes() + end function + +end module TestOperationScenarios \ No newline at end of file diff --git a/CSharp/OperationScenarios/Test/TestOperationScenariosVariables.f90 b/CSharp/OperationScenarios/Test/TestOperationScenariosVariables.f90 new file mode 100644 index 0000000..06b1f52 --- /dev/null +++ b/CSharp/OperationScenarios/Test/TestOperationScenariosVariables.f90 @@ -0,0 +1,96 @@ +module TestOperationScenariosVariables + implicit none + public + + ! Input vars + + ! Output vars + integer :: ElevatorConnection + integer :: KellyConnection + logical :: CloseKellyCockLed + logical :: CloseSafetyValveLed + logical :: FillMouseHoleLed + logical :: IrIBopLed + logical :: IrSafetyValveLed + logical :: LatchLed + logical :: OpenKellyCockLed + logical :: OpenSafetyValveLed + logical :: SlipsNotification + logical :: SwingLed + logical :: TongNotification + logical :: UnlatchLed + logical :: InstallFillupHeadPermission + logical :: InstallMudBucketPermission + logical :: IrIbopPermission + logical :: IrSafetyValvePermission + logical :: RemoveFillupHeadPermission + logical :: RemoveMudBucketPermission + real(8) :: HookHeightU + real(8) :: IbopHeight + real(8) :: NearFloorConnection + real(8) :: SafetyValveHeight + logical :: SlackOff + integer :: StandRackU + real(8) :: RotaryRpmU + real(8) :: StringPressure + logical :: ZeroStringSpeed + real(8) :: FlowRateU + real(8) :: PedalU + real(8) :: FloorHeightU + real(8) :: CrownHeightU + real(8) :: KellyHoseVibrationRateU + integer :: DriveTypeU + logical :: ElevatorConnected + logical :: JointConnectionPossibility + logical :: NearMonkeyBoardPosition + logical :: NearFloorPosition + logical :: SingleSetInMouseHole + logical :: SwingCenter + integer :: MudBucket + integer :: Elevator + integer :: Flow + integer :: FillupHead + integer :: Ibop + integer :: Kelly + integer :: MouseHole + integer :: OperationCondition + integer :: SafetyValve + integer :: Slips + integer :: Swing + integer :: Tong + integer :: StringUpdateU + integer :: NewHookHeightU + integer :: BlowoutFromStringPercentU + logical :: MakeupTong + logical :: BreakupTong + logical :: SlipsSet + logical :: SlipsUnSet + logical :: Latch + logical :: Unlatch + logical :: OutOfMouseHole + logical :: IsKellyBushingSetInTable + + + logical :: Signal1U + logical :: Signal2U + logical :: Signal3U + logical :: Signal4U + logical :: Signal5U + logical :: Signal6U + logical :: Signal7U + logical :: Signal8U + logical :: Signal9U + logical :: Signal10U + + logical :: BlowoutFromStringT + logical :: BlowoutFromAnnularT + logical :: FlowFromReturnLineT + logical :: FlowFromKellyT + logical :: FlowKellyDisconnectT + logical :: FlowPipeDisconnectT + + logical :: SingleOutOfMouseHole + + + contains +end module TestOperationScenariosVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/Unity/CUnityInputs.f90 b/CSharp/OperationScenarios/Unity/CUnityInputs.f90 new file mode 100644 index 0000000..2025c2a --- /dev/null +++ b/CSharp/OperationScenarios/Unity/CUnityInputs.f90 @@ -0,0 +1,632 @@ +module CUnityInputs + use CVoidEventHandlerCollection + implicit none + + logical :: ElevatorConnectionPossible + logical :: JointConnectionPossible + logical :: IsKellyBushingSetInTable + logical :: ElevatorPickup + logical :: NearFloorPosition + logical :: SingleSetInMouseHole + !logical :: SwingCenter + !logical :: MakeupTong + !logical :: BreakupTong + !logical :: SlipsSet + !logical :: SlipsUnSet + !logical :: Latch + !logical :: Unlatch + !logical :: OutOfMouseHole + !real(8) :: NewHookHeight + logical :: TdsConnectionPossible + logical :: TdsStemIn + + + private :: ElevatorConnectionPossible + private :: JointConnectionPossible + private :: IsKellyBushingSetInTable + private :: ElevatorPickup + private :: NearFloorPosition + private :: singleSetInMouseHole + !private :: SwingCenter + !private :: MakeupTong + !private :: BreakupTong + !private :: SlipsSet + !private :: SlipsUnSet + !private :: Latch + !private :: Unlatch + !private :: OutOfMouseHole + !private :: NewHookHeight + private :: TdsConnectionPossible + private :: TdsStemIn + + public + + type(VoidEventHandlerCollection) :: OnElevatorConnectionPossibleChange + type(VoidEventHandlerCollection) :: OnJointConnectionPossibleChange + type(VoidEventHandlerCollection) :: OnIsKellyBushingSetInTableChange + type(VoidEventHandlerCollection) :: OnElevatorPickupChange + type(VoidEventHandlerCollection) :: OnNearFloorPositionChange + type(VoidEventHandlerCollection) :: OnSingleSetInMouseHoleChange + !type(VoidEventHandlerCollection) :: OnSwingCenterChange + !type(VoidEventHandlerCollection) :: OnNewHookHeightChange + + !type(VoidEventHandlerCollection) :: OnMakeupTongChange + !type(VoidEventHandlerCollection) :: OnBreakupTongChange + !type(VoidEventHandlerCollection) :: OnSlipsSetChange + !type(VoidEventHandlerCollection) :: OnSlipsUnSetChange + !type(VoidEventHandlerCollection) :: OnLatchChange + !type(VoidEventHandlerCollection) :: OnUnlatchChange + !type(VoidEventHandlerCollection) :: OnOutOfMouseHoleChange + + type(VoidEventHandlerCollection) :: OnTdsConnectionPossibleChange + type(VoidEventHandlerCollection) :: OnTdsStemInChange + + contains + + ! Input routines + + + subroutine Set_OutOfMouseHole(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_OutOfMouseHole + !DEC$ ATTRIBUTES ALIAS: 'Set_OutOfMouseHole' :: Set_OutOfMouseHole + implicit none + logical, intent(in) :: v +!#ifdef ExcludeExtraChanges +! if(OutOfMouseHole == v) return +!#endif +! OutOfMouseHole = v +! call OnOutOfMouseHoleChange%RunAll() +!#ifdef deb +! print*, 'OutOfMouseHole=', OutOfMouseHole +!#endif + end subroutine + + !logical function Get_OutOfMouseHole() + ! implicit none + ! Get_OutOfMouseHole = OutOfMouseHole + !end function + + + + + + + + + + + + + subroutine Set_Unlatch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_Unlatch + !DEC$ ATTRIBUTES ALIAS: 'Set_Unlatch' :: Set_Unlatch + implicit none + logical, intent(in) :: v +!#ifdef ExcludeExtraChanges +! if(Unlatch == v) return +!#endif +! Unlatch = v +! call OnUnlatchChange%RunAll() +!#ifdef deb +! print*, 'Unlatch=', Unlatch +!#endif + end subroutine + + !logical function Get_Unlatch() + ! implicit none + ! Get_Unlatch = Unlatch + !end function + + + + + + + + + + + + + + + subroutine Set_Latch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_Latch + !DEC$ ATTRIBUTES ALIAS: 'Set_Latch' :: Set_Latch + implicit none + logical, intent(in) :: v +!#ifdef ExcludeExtraChanges +! if(Latch == v) return +!#endif +! Latch = v +! call OnLatchChange%RunAll() +!#ifdef deb +! print*, 'Latch=', Latch +!#endif + end subroutine + + !logical function Get_Latch() + ! implicit none + ! Get_Latch = Latch + !end function + + + + + + + + + + + + + + + + + subroutine Set_SlipsUnSet(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_SlipsUnSet + !DEC$ ATTRIBUTES ALIAS: 'Set_SlipsUnSet' :: Set_SlipsUnSet + implicit none + logical, intent(in) :: v +!#ifdef ExcludeExtraChanges +! if(SlipsUnSet == v) return +!#endif +! SlipsUnSet = v +! call OnSlipsUnSetChange%RunAll() +!#ifdef deb +! print*, 'SlipsUnSet=', SlipsUnSet +!#endif + end subroutine + + !logical function Get_SlipsUnSet() + ! implicit none + ! Get_SlipsUnSet = SlipsUnSet + !end function + + + + + + + + + + + + + + subroutine Set_SlipsSet(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_SlipsSet + !DEC$ ATTRIBUTES ALIAS: 'Set_SlipsSet' :: Set_SlipsSet + implicit none + logical, intent(in) :: v +!#ifdef ExcludeExtraChanges +! if(SlipsSet == v) return +!#endif +! SlipsSet = v +! call OnSlipsSetChange%RunAll() +!#ifdef deb +! print*, 'SlipsSet=', SlipsSet +!#endif + end subroutine + + !logical function Get_SlipsSet() + ! implicit none + ! Get_SlipsSet = SlipsSet + !end function + + + + + + + + + + + + subroutine Set_BreakupTong(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_BreakupTong + !DEC$ ATTRIBUTES ALIAS: 'Set_BreakupTong' :: Set_BreakupTong + implicit none + logical, intent(in) :: v +!#ifdef ExcludeExtraChanges +! if(BreakupTong == v) return +!#endif +! BreakupTong = v +! call OnBreakupTongChange%RunAll() +!#ifdef deb +! print*, 'BreakupTong=', BreakupTong +!#endif + end subroutine + + !logical function Get_BreakupTong() + ! implicit none + ! Get_BreakupTong = BreakupTong + !end function + + + + + + + + + + subroutine Set_MakeupTong(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_MakeupTong + !DEC$ ATTRIBUTES ALIAS: 'Set_MakeupTong' :: Set_MakeupTong + implicit none + logical, intent(in) :: v +!#ifdef ExcludeExtraChanges +! if(MakeupTong == v) return +!#endif +! MakeupTong = v +! call OnMakeupTongChange%RunAll() +!#ifdef deb +! print*, 'MakeupTong=', MakeupTong +!#endif + end subroutine + + !logical function Get_MakeupTong() + ! implicit none + ! Get_MakeupTong = MakeupTong + !end function + + + + + + + + + + + + + + + + + + + + + + subroutine Set_NewHookHeight(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_NewHookHeight + !DEC$ ATTRIBUTES ALIAS: 'Set_NewHookHeight' :: Set_NewHookHeight + implicit none + real(8), intent(in) :: v +!#ifdef ExcludeExtraChanges +! if(NewHookHeight == v) return +!#endif +! NewHookHeight = v +! call OnNewHookHeightChange%RunAll() +!#ifdef deb +! print*, 'NewHookHeight=', NewHookHeight +!#endif + end subroutine + + !real(8) function Get_NewHookHeight() + ! implicit none + ! Get_NewHookHeight = NewHookHeight + !end function + + + + + + + + + + subroutine Set_ElevatorConnectionPossible(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_ElevatorConnectionPossible + !DEC$ ATTRIBUTES ALIAS: 'Set_ElevatorConnectionPossible' :: Set_ElevatorConnectionPossible + implicit none + logical, intent(in) :: v +#ifdef ExcludeExtraChanges + if(ElevatorConnectionPossible == v) return +#endif + ElevatorConnectionPossible = v + call OnElevatorConnectionPossibleChange%RunAll() +#ifdef deb + print*, 'ElevatorConnectionPossible=', ElevatorConnectionPossible +#endif + end subroutine + + logical function Get_ElevatorConnectionPossible() + implicit none + Get_ElevatorConnectionPossible = ElevatorConnectionPossible + end function + + logical function Get_ElevatorConnectionPossible_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_ElevatorConnectionPossible_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_ElevatorConnectionPossible_WN' :: Get_ElevatorConnectionPossible_WN + implicit none + Get_ElevatorConnectionPossible_WN = ElevatorConnectionPossible + !Get_ElevatorConnectionPossible_WN = .true. + end function + + + + + + + + + subroutine Set_JointConnectionPossible(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_JointConnectionPossible + !DEC$ ATTRIBUTES ALIAS: 'Set_JointConnectionPossible' :: Set_JointConnectionPossible + implicit none + logical, intent(in) :: v +#ifdef ExcludeExtraChanges + if(JointConnectionPossible == v) return +#endif + JointConnectionPossible = v + call OnJointConnectionPossibleChange%RunAll() +#ifdef deb + print*, 'JointConnectionPossible=', JointConnectionPossible +#endif + end subroutine + + logical function Get_JointConnectionPossible() + implicit none + Get_JointConnectionPossible = JointConnectionPossible + end function + + + logical function Get_JointConnectionPossible_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_JointConnectionPossible_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_JointConnectionPossible_WN' :: Get_JointConnectionPossible_WN + implicit none + Get_JointConnectionPossible_WN = JointConnectionPossible + end function + + + + + + subroutine Set_IsKellyBushingSetInTable(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_IsKellyBushingSetInTable + !DEC$ ATTRIBUTES ALIAS: 'Set_IsKellyBushingSetInTable' :: Set_IsKellyBushingSetInTable + implicit none + logical, intent(in) :: v +#ifdef ExcludeExtraChanges + if(IsKellyBushingSetInTable == v) return +#endif + IsKellyBushingSetInTable = v + call OnIsKellyBushingSetInTableChange%RunAll() +#ifdef deb + print*, 'IsKellyBushingSetInTable=', IsKellyBushingSetInTable +#endif + end subroutine + + logical function Get_IsKellyBushingSetInTable() + implicit none + Get_IsKellyBushingSetInTable = IsKellyBushingSetInTable + end function + + logical function Get_IsKellyBushingSetInTable_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_IsKellyBushingSetInTable_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_IsKellyBushingSetInTable_WN' :: Get_IsKellyBushingSetInTable_WN + implicit none + Get_IsKellyBushingSetInTable_WN = IsKellyBushingSetInTable + end function + + + + + + + + subroutine Set_ElevatorPickup(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_ElevatorPickup + !DEC$ ATTRIBUTES ALIAS: 'Set_ElevatorPickup' :: Set_ElevatorPickup + implicit none + logical, intent(in) :: v +#ifdef ExcludeExtraChanges + if(ElevatorPickup == v) return +#endif + ElevatorPickup = v + call OnElevatorPickupChange%RunAll() +#ifdef deb + print*, 'ElevatorPickup =', ElevatorPickup +#endif + end subroutine + + logical function Get_ElevatorPickup() + implicit none + Get_ElevatorPickup = ElevatorPickup + end function + + + logical function Get_ElevatorPickup_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_ElevatorPickup_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_ElevatorPickup_WN' :: Get_ElevatorPickup_WN + implicit none + Get_ElevatorPickup_WN = ElevatorPickup + end function + + + + + + + + subroutine Set_NearFloorPosition(v) + implicit none + logical, intent(in) :: v +#ifdef ExcludeExtraChanges + if(NearFloorPosition == v) return +#endif + NearFloorPosition = v + call OnNearFloorPositionChange%RunAll() +#ifdef deb + print*, 'NearFloorPosition =', NearFloorPosition +#endif + end subroutine + + subroutine Set_NearFloorPosition_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_NearFloorPosition_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_NearFloorPosition_WN' :: Set_NearFloorPosition_WN + implicit none + logical, intent(in) :: v + call Set_NearFloorPosition(v) + end subroutine + + logical function Get_NearFloorPosition() + implicit none + Get_NearFloorPosition = NearFloorPosition + end function + + + logical function Get_NearFloorPosition_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_NearFloorPosition_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_NearFloorPosition_WN' :: Get_NearFloorPosition_WN + implicit none + Get_NearFloorPosition_WN = NearFloorPosition + end function + + + + + + + + + + subroutine Set_SingleSetInMouseHole(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_SingleSetInMouseHole + !DEC$ ATTRIBUTES ALIAS: 'Set_SingleSetInMouseHole' :: Set_SingleSetInMouseHole + implicit none + logical, intent(in) :: v +#ifdef ExcludeExtraChanges + if(SingleSetInMouseHole == v) return +#endif + SingleSetInMouseHole = v + call OnSingleSetInMouseHoleChange%RunAll() +#ifdef deb + print*, 'singleSetInMouseHole=', SingleSetInMouseHole +#endif + end subroutine + + logical function Get_SingleSetInMouseHole() + implicit none + Get_SingleSetInMouseHole = SingleSetInMouseHole + end function + + + logical function Get_SingleSetInMouseHole_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_SingleSetInMouseHole_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_SingleSetInMouseHole_WN' :: Get_SingleSetInMouseHole_WN + implicit none + Get_SingleSetInMouseHole_WN = SingleSetInMouseHole + end function + + + + + + + + + subroutine Set_SwingCenter(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_SwingCenter + !DEC$ ATTRIBUTES ALIAS: 'Set_SwingCenter' :: Set_SwingCenter + !USE CSwingEnum + implicit none + logical, intent(in) :: v +!#ifdef ExcludeExtraChanges +! if(SwingCenter == v) return +!#endif +! SwingCenter = v +! call OnSwingCenterChange%RunAll() +! !if(SwingCenter .and. Get_Swing() /= SWING_WELL ) call Set_Swing(SWING_WELL) +!#ifdef deb +! print*, 'SwingCenter=', SwingCenter +!#endif + end subroutine + + !logical function Get_SwingCenter() + ! implicit none + ! Get_SwingCenter = SwingCenter + !end function + + + + + + + + + + + + + !top drive + subroutine Set_TdsConnectionPossible(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_TdsConnectionPossible + !DEC$ ATTRIBUTES ALIAS: 'Set_TdsConnectionPossible' :: Set_TdsConnectionPossible + implicit none + logical, intent(in) :: v +#ifdef ExcludeExtraChanges + if(TdsConnectionPossible == v) return +#endif + TdsConnectionPossible = v + call OnTdsConnectionPossibleChange%RunAll() +#ifdef deb + print*, 'TdsConnectionPossible=', TdsConnectionPossible +#endif + end subroutine + + logical function Get_TdsConnectionPossible() + implicit none + Get_TdsConnectionPossible = TdsConnectionPossible + end function + + logical function Get_TdsConnectionPossible_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_TdsConnectionPossible_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_TdsConnectionPossible_WN' :: Get_TdsConnectionPossible_WN + implicit none + Get_TdsConnectionPossible_WN = TdsConnectionPossible + !Get_TdsConnectionPossible_WN = .true. + end function + + + + subroutine Set_TdsStemIn(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_TdsStemIn + !DEC$ ATTRIBUTES ALIAS: 'Set_TdsStemIn' :: Set_TdsStemIn + implicit none + logical, intent(in) :: v +#ifdef ExcludeExtraChanges + if(TdsStemIn == v) return +#endif + TdsStemIn = v + call OnTdsStemInChange%RunAll() +#ifdef deb + print*, 'TdsStemIn=', TdsStemIn +#endif + end subroutine + + logical function Get_TdsStemIn() + implicit none + Get_TdsStemIn = TdsStemIn + end function + + logical function Get_TdsStemIn_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_TdsStemIn_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_TdsStemIn_WN' :: Get_TdsStemIn_WN + implicit none + Get_TdsStemIn_WN = TdsStemIn + !Get_TdsStemIn_WN = .true. + end function + + + + +end module CUnityInputs diff --git a/CSharp/OperationScenarios/Unity/CUnityOutputs.f90 b/CSharp/OperationScenarios/Unity/CUnityOutputs.f90 new file mode 100644 index 0000000..60e559a --- /dev/null +++ b/CSharp/OperationScenarios/Unity/CUnityOutputs.f90 @@ -0,0 +1,627 @@ +module CUnityOutputs + implicit none + + real(8) :: KellyHoseVibrationRate + real(8) :: BlowoutFromStringPercent + real(8) :: Pedal + real(8) :: FlowRate + real(8) :: RotaryRpm + !logical :: Signal1 + !logical :: Signal2 + !logical :: Signal3 + !logical :: Signal4 + !logical :: Signal5 + !logical :: Signal6 + !logical :: Signal7 + !logical :: Signal8 + !logical :: Signal9 + !logical :: Signal10 + logical :: BlowoutFromString + logical :: BlowoutFromAnnular + logical :: FlowFromReturnLine + real :: FlowFromKelly + real :: FlowFromFillupHead + logical :: FlowKellyDisconnect + logical :: FlowPipeDisconnect + + + private :: KellyHoseVibrationRate + private :: BlowoutFromStringPercent + private :: Pedal + private :: FlowRate + private :: RotaryRpm + !private :: Signal1 + !private :: Signal2 + !private :: Signal3 + !private :: Signal4 + !private :: Signal5 + !private :: Signal6 + !private :: Signal7 + !private :: Signal8 + !private :: Signal9 + !private :: Signal10 + private :: BlowoutFromString + private :: BlowoutFromAnnular + private :: FlowFromReturnLine + private :: FlowFromKelly + private :: FlowFromFillupHead + private :: FlowKellyDisconnect + private :: FlowPipeDisconnect + + public + + contains + + subroutine Setup() + use CDataDisplayConsoleVariables + implicit none + PumpsSpmChanges => Calc_KellyHoseVibrationRate + call OnRotaryRpmChange%Add(Set_RotaryRpm) + end subroutine + + + + + + + + + + + subroutine Set_BlowoutFromString(v) + implicit none + logical, intent (in) :: v + BlowoutFromString = v +#ifdef deb + print*, 'BlowoutFromString=', v +#endif + end subroutine + + logical function Get_BlowoutFromString() + implicit none + Get_BlowoutFromString = BlowoutFromString + end function + + subroutine Set_BlowoutFromString_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_BlowoutFromString_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_BlowoutFromString_WN' :: Set_BlowoutFromString_WN + implicit none + logical, intent (in) :: v + call Set_BlowoutFromString(v) + end subroutine + + logical function Get_BlowoutFromString_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_BlowoutFromString_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_BlowoutFromString_WN' :: Get_BlowoutFromString_WN + implicit none + Get_BlowoutFromString_WN = BlowoutFromString + !Get_BlowoutFromString = .TRUE. + end function + + + + subroutine Set_BlowoutFromAnnular(v) + implicit none + logical, intent (in) :: v + BlowoutFromAnnular = v +#ifdef deb + print*, 'BlowoutFromAnnular=', v +#endif + end subroutine + + logical function Get_BlowoutFromAnnular() + implicit none + Get_BlowoutFromAnnular = BlowoutFromAnnular + end function + + subroutine Set_BlowoutFromAnnular_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_BlowoutFromAnnular_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_BlowoutFromAnnular_WN' :: Set_BlowoutFromAnnular_WN + implicit none + logical, intent (in) :: v + call Set_BlowoutFromAnnular(v) + end subroutine + + logical function Get_BlowoutFromAnnular_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_BlowoutFromAnnular_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_BlowoutFromAnnular_WN' :: Get_BlowoutFromAnnular_WN + implicit none + Get_BlowoutFromAnnular_WN = BlowoutFromAnnular + end function + + + + + + subroutine Set_FlowFromReturnLine(v) + implicit none + logical, intent (in) :: v + FlowFromReturnLine = v +#ifdef deb + print*, 'FlowFromReturnLine=', v +#endif + end subroutine + + logical function Get_FlowFromReturnLine() + implicit none + Get_FlowFromReturnLine = FlowFromReturnLine + end function + + + subroutine Set_FlowFromReturnLine_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_FlowFromReturnLine_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_FlowFromReturnLine_WN' :: Set_FlowFromReturnLine_WN + implicit none + logical, intent (in) :: v + call Set_FlowFromReturnLine(v) + end subroutine + + logical function Get_FlowFromReturnLine_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_FlowFromReturnLine_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_FlowFromReturnLine_WN' :: Get_FlowFromReturnLine_WN + implicit none + Get_FlowFromReturnLine_WN = FlowFromReturnLine + !Get_FlowFromReturnLine_WN = .FALSE. + end function + + + + subroutine Set_FlowFromKelly(v) + implicit none + real, intent (in) :: v + FlowFromKelly = v +#ifdef deb + print*, 'FlowFromKelly=', v +#endif + end subroutine + + real function Get_FlowFromKelly() + implicit none + Get_FlowFromKelly = FlowFromKelly + end function + + + subroutine Set_FlowFromKelly_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_FlowFromKelly_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_FlowFromKelly_WN' :: Set_FlowFromKelly_WN + implicit none + real, intent (in) :: v + call Set_FlowFromKelly(v) + end subroutine + + real function Get_FlowFromKelly_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_FlowFromKelly_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_FlowFromKelly_WN' :: Get_FlowFromKelly_WN + implicit none +#ifdef deb + print*, 'FlowFromKellyR=', FlowFromKelly +#endif + Get_FlowFromKelly_WN = FlowFromKelly + !Get_FlowFromKelly = .FALSE. + end function + + + + + subroutine Set_FlowFromFillupHead(v) + implicit none + real, intent (in) :: v + FlowFromFillupHead = v +#ifdef deb + print*, 'FlowFromFillupHead=', v +#endif + end subroutine + + real function Get_FlowFromFillupHead() + implicit none + Get_FlowFromFillupHead = FlowFromFillupHead + end function + + + subroutine Set_FlowFromFillupHead_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_FlowFromFillupHead_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_FlowFromFillupHead_WN' :: Set_FlowFromFillupHead_WN + implicit none + real, intent (in) :: v + call Set_FlowFromFillupHead(v) + end subroutine + + real function Get_FlowFromFillupHead_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_FlowFromFillupHead_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_FlowFromFillupHead_WN' :: Get_FlowFromFillupHead_WN + implicit none +#ifdef deb + print*, 'FlowFromFillupHeadR=', FlowFromFillupHead +#endif + Get_FlowFromFillupHead_WN = FlowFromFillupHead + !Get_FlowFromFillupHead = .FALSE. + end function + + + + + + subroutine Set_FlowKellyDisconnect(v) + implicit none + logical, intent (in) :: v + FlowKellyDisconnect = v +#ifdef deb + print*, 'FlowKellyDisconnect=', v +#endif + end subroutine + + logical function Get_FlowKellyDisconnect() + implicit none + Get_FlowKellyDisconnect = FlowKellyDisconnect + end function + + + subroutine Set_FlowKellyDisconnect_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_FlowKellyDisconnect_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_FlowKellyDisconnect_WN' :: Set_FlowKellyDisconnect_WN + implicit none + logical, intent (in) :: v + call Set_FlowKellyDisconnect(v) + end subroutine + + logical function Get_FlowKellyDisconnect_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_FlowKellyDisconnect_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_FlowKellyDisconnect_WN' :: Get_FlowKellyDisconnect_WN + implicit none + Get_FlowKellyDisconnect_WN = FlowKellyDisconnect + !Get_FlowKellyDisconnect_WN = .false. + end function + + + + + subroutine Set_FlowPipeDisconnect(v) + implicit none + logical, intent (in) :: v + FlowPipeDisconnect = v +#ifdef deb + print*, 'FlowPipeDisconnect=', v +#endif + end subroutine + + logical function Get_FlowPipeDisconnect() + implicit none + Get_FlowPipeDisconnect = FlowPipeDisconnect + end function + + + subroutine Set_FlowPipeDisconnect_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_FlowPipeDisconnect_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_FlowPipeDisconnect_WN' :: Set_FlowPipeDisconnect_WN + implicit none + logical, intent (in) :: v + call Set_FlowPipeDisconnect(v) + end subroutine + + logical function Get_FlowPipeDisconnect_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_FlowPipeDisconnect_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_FlowPipeDisconnect_WN' :: Get_FlowPipeDisconnect_WN + implicit none + Get_FlowPipeDisconnect_WN = FlowPipeDisconnect + !Get_FlowPipeDisconnect_WN = .false. + end function + + + + + + + + + + + + + + + + + + + + + + + + + + + + subroutine Set_BlowoutFromStringPercent(v) + implicit none + real(8), intent (in) :: v + BlowoutFromStringPercent = v +#ifdef deb + print*, 'BlowoutFromStringPercent=', v +#endif + end subroutine + + real(8) function GetBlowoutFromStringPercent() + implicit none + GetBlowoutFromStringPercent = BlowoutFromStringPercent + end function + + + + subroutine Set_BlowoutFromStringPercent_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_BlowoutFromStringPercent_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_BlowoutFromStringPercent_WN' :: Set_BlowoutFromStringPercent_WN + implicit none + real(8), intent (in) :: v + call Set_BlowoutFromStringPercent(v) + end subroutine + + real(8) function GetBlowoutFromStringPercent_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: GetBlowoutFromStringPercent_WN + !DEC$ ATTRIBUTES ALIAS: 'GetBlowoutFromStringPercent_WN' :: GetBlowoutFromStringPercent_WN + implicit none + GetBlowoutFromStringPercent_WN = BlowoutFromStringPercent + !GetBlowoutFromStringPercent_WN = 0d0 + end function + + + + + + + + + subroutine Calc_KellyHoseVibrationRate(spm1, spm2) + use CScaleRange + implicit none + real(8), intent (in) :: spm1, spm2 + real :: total + total = (spm1 + spm2)/2 + KellyHoseVibrationRate = ScaleRange(total, 0.0, 10.0, 0.0, 120.0) +#ifdef deb + print*, 'KellyHoseVibrationRate=', KellyHoseVibrationRate +#endif + end subroutine + + real(8) function GetKellyHoseVibrationRate() + implicit none + GetKellyHoseVibrationRate = KellyHoseVibrationRate + end function + + real(8) function GetKellyHoseVibrationRate_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: GetKellyHoseVibrationRate_WN + !DEC$ ATTRIBUTES ALIAS: 'GetKellyHoseVibrationRate_WN' :: GetKellyHoseVibrationRate_WN + implicit none + GetKellyHoseVibrationRate_WN = KellyHoseVibrationRate + end function + + + + + subroutine Set_Pedal(v) + implicit none + real(8), intent (in) :: v + Pedal = v +#ifdef deb + print*, 'Pedal=', v +#endif + end subroutine + + real(8) function GetPedal() + implicit none + GetPedal = Pedal + end function + + subroutine Set_Pedal_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_Pedal_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_Pedal_WN' :: Set_Pedal_WN + implicit none + real(8), intent (in) :: v + call Set_Pedal(v) + end subroutine + + real(8) function GetPedal_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: GetPedal_WN + !DEC$ ATTRIBUTES ALIAS: 'GetPedal_WN' :: GetPedal_WN + implicit none + GetPedal_WN = Pedal + !GetPedal = 50d0 + end function + + + + + + subroutine Set_FlowRate(v) + implicit none + real(8), intent (in) :: v + FlowRate = v +#ifdef deb + print*, 'FlowRate=', v +#endif + end subroutine + + + real(8) function GetFlowRate() + implicit none + GetFlowRate = FlowRate + end function + + + subroutine Set_FlowRate_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_FlowRate_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_FlowRate_WN' :: Set_FlowRate_WN + implicit none + real(8), intent (in) :: v + call Set_FlowRate(v) + end subroutine + + real(8) function GetFlowRate_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFlowRate_WN + !DEC$ ATTRIBUTES ALIAS: 'GetFlowRate_WN' :: GetFlowRate_WN + implicit none + GetFlowRate_WN = FlowRate + !GetFlowRate_WN = 50d0 + end function + + + + + subroutine Set_RotaryRpm(v) + implicit none + real(8), intent (in) :: v + RotaryRpm = v +#ifdef deb + print*, 'RotaryRpm=', v +#endif + end subroutine + + real(8) function GetRotaryRpm() + implicit none + GetRotaryRpm = RotaryRpm + end function + + + subroutine Set_RotaryRpm_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_RotaryRpm_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_RotaryRpm_WN' :: Set_RotaryRpm_WN + implicit none + real(8), intent (in) :: v + call Set_RotaryRpm(v) + end subroutine + + real(8) function GetRotaryRpm_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: GetRotaryRpm_WN + !DEC$ ATTRIBUTES ALIAS: 'GetRotaryRpm_WN' :: GetRotaryRpm_WN + implicit none + GetRotaryRpm_WN = RotaryRpm + end function + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + logical function GetSignal1() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal1 + !DEC$ ATTRIBUTES ALIAS: 'GetSignal1' :: GetSignal1 + implicit none + !GetSignal1 = Signal1 + GetSignal1 = .false. + end function + + logical function GetSignal2() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal2 + !DEC$ ATTRIBUTES ALIAS: 'GetSignal2' :: GetSignal2 + implicit none + !GetSignal2 = Signal2 + GetSignal2 = .false. + end function + + logical function GetSignal3() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal3 + !DEC$ ATTRIBUTES ALIAS: 'GetSignal3' :: GetSignal3 + implicit none + !GetSignal3 = Signal3 + GetSignal3 = .false. + end function + + logical function GetSignal4() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal4 + !DEC$ ATTRIBUTES ALIAS: 'GetSignal4' :: GetSignal4 + implicit none + !GetSignal4 = Signal4 + GetSignal4 = .false. + end function + + logical function GetSignal5() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal5 + !DEC$ ATTRIBUTES ALIAS: 'GetSignal5' :: GetSignal5 + implicit none + !GetSignal5 = Signal5 + GetSignal5 = .false. + end function + + logical function GetSignal6() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal6 + !DEC$ ATTRIBUTES ALIAS: 'GetSignal6' :: GetSignal6 + implicit none + !GetSignal6 = Signal6 + GetSignal6 = .false. + end function + + logical function GetSignal7() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal7 + !DEC$ ATTRIBUTES ALIAS: 'GetSignal7' :: GetSignal7 + implicit none + !GetSignal7 = Signal7 + GetSignal7 = .false. + end function + + logical function GetSignal8() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal8 + !DEC$ ATTRIBUTES ALIAS: 'GetSignal8' :: GetSignal8 + implicit none + !GetSignal8 = Signal8 + GetSignal8 = .false. + end function + + logical function GetSignal9() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal9 + !DEC$ ATTRIBUTES ALIAS: 'GetSignal9' :: GetSignal9 + implicit none + !GetSignal9 = Signal9 + GetSignal9 = .false. + end function + + logical function GetSignal10() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSignal10 + !DEC$ ATTRIBUTES ALIAS: 'GetSignal10' :: GetSignal10 + implicit none + !GetSignal10 = Signal10 + GetSignal10 = .false. + end function + + + +end module CUnityOutputs diff --git a/CSharp/OperationScenarios/UnitySignals/CBucketEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CBucketEnum.f90 new file mode 100644 index 0000000..fbaf3fb --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CBucketEnum.f90 @@ -0,0 +1,93 @@ +module CBucketEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_MudBucket() + use CStudentStationVariables, only: MudBoxInstallation + implicit none + + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_MudBucket=TopDrive' +!#endif +! endif +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_MudBucket=Kelly' +!#endif +! endif + + + if (Get_MudBucket() == MUD_BUCKET_INSTALL) then + MudBoxInstallation = .true. + else if (Get_MudBucket() == MUD_BUCKET_REMOVE) then + MudBoxInstallation = .false. + endif + + end subroutine + + ! subroutine Subscribe_MudBucket() + ! use CStudentStationVariables + ! implicit none + ! call OnMudBoxInstallationPress%Add(ButtonPress_MudBoxInstallation) + ! call OnMudBoxRemovePress%Add(ButtonPress_MudBoxRemove) + ! end subroutine + + subroutine ButtonPress_MudBoxInstallation() + implicit none + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_MudBoxInstallation=TopDrive' +#endif + endif + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_MudBoxInstallation=Kelly' +#endif + + + call Set_MudBucket(MUD_BUCKET_INSTALL) + + endif + + + + + + end subroutine + + subroutine ButtonPress_MudBoxRemove() + implicit none + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_MudBoxRemove=TopDrive' +#endif + endif + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_MudBoxRemove=Kelly' +#endif + + + call Set_MudBucket(MUD_BUCKET_REMOVE) + + endif + + + + + + + end subroutine + +end module CBucketEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CBucketEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CBucketEnumVariables.f90 new file mode 100644 index 0000000..7b3e5be --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CBucketEnumVariables.f90 @@ -0,0 +1,79 @@ +module CBucketEnumVariables + use CVoidEventHandlerCollection + implicit none + integer :: MudBucket = 0 + + public + + type(VoidEventHandlerCollection) :: OnMudBucketChange + + enum, bind(c) + !enumerator MUD_BUCKET_NEUTRAL + enumerator MUD_BUCKET_REMOVE + enumerator MUD_BUCKET_INSTALL + end enum + + private :: MudBucket + + contains + + subroutine Set_MudBucket(v) + use CManifolds, only: ToggleMudBox + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(MudBucket == v) return +#endif + MudBucket = v + if (MudBucket == MUD_BUCKET_INSTALL) then + call ToggleMudBox(.true.) + else if (MudBucket == MUD_BUCKET_REMOVE) then + call ToggleMudBox(.false.) + endif +#ifdef deb + print*, 'MudBucket=', MudBucket +#endif + call OnMudBucketChange%RunAll() + end subroutine + + integer function Get_MudBucket() + implicit none + Get_MudBucket = MudBucket + end function + + + + subroutine Set_MudBucket_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_MudBucket_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_MudBucket_WN' :: Set_MudBucket_WN + implicit none + integer , intent(in) :: v + call Set_MudBucket(v) + end subroutine + + integer function Get_MudBucket_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_MudBucket_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_MudBucket_WN' :: Get_MudBucket_WN + implicit none + Get_MudBucket_WN = MudBucket + end function + + + + + + logical function Get_RemoveMudBucket() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_RemoveMudBucket + !DEC$ ATTRIBUTES ALIAS: 'Get_RemoveMudBucket' :: Get_RemoveMudBucket + implicit none + Get_RemoveMudBucket = .false. ! MudBucket == REMOVE_MUD_BUCKET + end function + + logical function Get_InstallMudBucket() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_InstallMudBucket + !DEC$ ATTRIBUTES ALIAS: 'Get_InstallMudBucket' :: Get_InstallMudBucket + implicit none + Get_InstallMudBucket = .false. ! MudBucket == INSTALL_MUD_BUCKET + end function + +end module CBucketEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CElevatorEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CElevatorEnum.f90 new file mode 100644 index 0000000..7f7a0c0 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CElevatorEnum.f90 @@ -0,0 +1,48 @@ +module CElevatorEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_Elevator() + implicit none + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_Elevator=TopDrive' +!#endif +! +! +! +! +! +! +! +! +! +! +! +! +! +! +! +! +! +! endif +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_Elevator=Kelly' +!#endif +! endif + + end subroutine + + subroutine Subscribe_Elevator() + implicit none + ! imp me... + end subroutine + +end module CElevatorEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CElevatorEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CElevatorEnumVariables.f90 new file mode 100644 index 0000000..c42bcc6 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CElevatorEnumVariables.f90 @@ -0,0 +1,220 @@ +module CElevatorEnumVariables + use CVoidEventHandlerCollection + implicit none + integer :: Elevator = 0 + + public + + type(VoidEventHandlerCollection) :: OnElevatorChange + + enum, bind(c) + enumerator ELEVATOR_NEUTRAL + + enumerator ELEVATOR_LATCH_STRING_BEGIN + enumerator ELEVATOR_LATCH_STRING_END + + enumerator ELEVATOR_UNLATCH_STRING_BEGIN + enumerator ELEVATOR_UNLATCH_STRING_END + + enumerator ELEVATOR_LATCH_STAND_BEGIN + enumerator ELEVATOR_LATCH_STAND_END + + enumerator ELEVATOR_UNLATCH_STAND_BEGIN + enumerator ELEVATOR_UNLATCH_STAND_END + + enumerator ELEVATOR_LATCH_SINGLE_BEGIN + enumerator ELEVATOR_LATCH_SINGLE_END + + enumerator ELEVATOR_UNLATCH_SINGLE_BEGIN + enumerator ELEVATOR_UNLATCH_SINGLE_END + end enum + + private :: Elevator + contains + + subroutine Set_Elevator(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(Elevator == v) return +#endif + Elevator = v +#ifdef deb + print*, 'Elevator=', Elevator +#endif + call OnElevatorChange%RunAll() + end subroutine + + integer function Get_Elevator() + implicit none + Get_Elevator = Elevator + end function + + + subroutine Set_Elevator_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_Elevator_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_Elevator_WN' :: Set_Elevator_WN + implicit none + integer , intent(in) :: v + call Set_Elevator(v) + end subroutine + + integer function Get_Elevator_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_Elevator_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_Elevator_WN' :: Get_Elevator_WN + implicit none + Get_Elevator_WN = Elevator + end function + + + + + + + + + + subroutine ElevatorLatchStringEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: ElevatorLatchStringEnd + !DEC$ ATTRIBUTES ALIAS: 'ElevatorLatchStringEnd' :: ElevatorLatchStringEnd + implicit none +#ifdef deb + print*, 'ElevatorLatchStringEnd' +#endif + !if(Elevator /= ELEVATOR_LATCH_STRING_END) Elevator = ELEVATOR_LATCH_STRING_END + call Set_Elevator(ELEVATOR_LATCH_STRING_END) + end subroutine + + + subroutine ElevatorUnLatchStringEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: ElevatorUnLatchStringEnd + !DEC$ ATTRIBUTES ALIAS: 'ElevatorUnLatchStringEnd' :: ElevatorUnLatchStringEnd + implicit none +#ifdef deb + print*, 'ElevatorUnLatchStringEnd' +#endif + !if(Elevator /= ELEVATOR_UNLATCH_STRING_END) Elevator = ELEVATOR_UNLATCH_STRING_END + call Set_Elevator(ELEVATOR_UNLATCH_STRING_END) + end subroutine + + + subroutine ElevatorLatchStandEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: ElevatorLatchStandEnd + !DEC$ ATTRIBUTES ALIAS: 'ElevatorLatchStandEnd' :: ElevatorLatchStandEnd + !use CCommon, only: SetStandRack + !use CStandRack + implicit none +#ifdef deb + print*, 'ElevatorLatchStandEnd' +#endif + !if(Elevator /= ELEVATOR_LATCH_STAND_END) then + ! Elevator = ELEVATOR_LATCH_STAND_END + ! !call SetStandRack(Get_StandRack() - 1) + !endif + call Set_Elevator(ELEVATOR_LATCH_STAND_END) + end subroutine + + subroutine ElevatorUnLatchStandEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: ElevatorUnLatchStandEnd + !DEC$ ATTRIBUTES ALIAS: 'ElevatorUnLatchStandEnd' :: ElevatorUnLatchStandEnd + !use CCommon, only: SetStandRack + !use CStandRack + implicit none +#ifdef deb + print*, 'ElevatorUnLatchStandEnd' +#endif + !if(Elevator /= ELEVATOR_UNLATCH_STAND_END) then + ! Elevator = ELEVATOR_UNLATCH_STAND_END + ! !call SetStandRack(Get_StandRack() + 1) + !endif + call Set_Elevator(ELEVATOR_UNLATCH_STAND_END) + end subroutine + + subroutine ElevatorLatchSingleEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: ElevatorLatchSingleEnd + !DEC$ ATTRIBUTES ALIAS: 'ElevatorLatchSingleEnd' :: ElevatorLatchSingleEnd + implicit none +#ifdef deb + print*, 'ElevatorLatchSingleEnd' +#endif + !if(Elevator /= ELEVATOR_LATCH_SINGLE_END) Elevator = ELEVATOR_LATCH_SINGLE_END + call Set_Elevator(ELEVATOR_LATCH_SINGLE_END) + end subroutine + + subroutine ElevatorUnLatchSingleEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: ElevatorUnLatchSingleEnd + !DEC$ ATTRIBUTES ALIAS: 'ElevatorUnLatchSingleEnd' :: ElevatorUnLatchSingleEnd + implicit none +#ifdef deb + print*, 'ElevatorUnLatchSingleEnd' +#endif + !if(Elevator /= ELEVATOR_UNLATCH_SINGLE_END) Elevator = ELEVATOR_UNLATCH_SINGLE_END + call Set_Elevator(ELEVATOR_UNLATCH_SINGLE_END) + end subroutine + + + + + + + + + + + + + + + + + + + + + + + + + logical function Get_EvelatorLatchString() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_EvelatorLatchString + !DEC$ ATTRIBUTES ALIAS: 'Get_EvelatorLatchString' :: Get_EvelatorLatchString + implicit none + Get_EvelatorLatchString = .false. ! Elevator == ELEVATOR_LATCH_STRING + end function + + logical function Get_EvelatorLatchStand() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_EvelatorLatchStand + !DEC$ ATTRIBUTES ALIAS: 'Get_EvelatorLatchStand' :: Get_EvelatorLatchStand + implicit none + Get_EvelatorLatchStand = .false. ! Elevator == ELEVATOR_LATCH_STAND + end function + + logical function Get_EvelatorLatchSingle() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_EvelatorLatchSingle + !DEC$ ATTRIBUTES ALIAS: 'Get_EvelatorLatchSingle' :: Get_EvelatorLatchSingle + implicit none + Get_EvelatorLatchSingle = .false. ! Elevator == ELEVATOR_LATCH_SINGLE + end function + + logical function Get_EvelatorUnlatchString() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_EvelatorUnlatchString + !DEC$ ATTRIBUTES ALIAS: 'Get_EvelatorUnlatchString' :: Get_EvelatorUnlatchString + implicit none + Get_EvelatorUnlatchString = .false. ! Elevator == ELEVATOR_UNLATCH_STRING + end function + + logical function Get_EvelatorUnlatchStand() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_EvelatorUnlatchStand + !DEC$ ATTRIBUTES ALIAS: 'Get_EvelatorUnlatchStand' :: Get_EvelatorUnlatchStand + implicit none + Get_EvelatorUnlatchStand = .false. ! Elevator == ELEVATOR_UNLATCH_STAND + end function + + logical function Get_EvelatorUnlatchSingle() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_EvelatorUnlatchSingle + !DEC$ ATTRIBUTES ALIAS: 'Get_EvelatorUnlatchSingle' :: Get_EvelatorUnlatchSingle + implicit none + Get_EvelatorUnlatchSingle = .false. ! Elevator == ELEVATOR_UNLATCH_SINGLE + end function + +end module CElevatorEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CFlowKellyDisconnectEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CFlowKellyDisconnectEnum.f90 new file mode 100644 index 0000000..dee6e29 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CFlowKellyDisconnectEnum.f90 @@ -0,0 +1,29 @@ +module CFlowKellyDisconnectEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_FlowKellyDisconnect() + implicit none + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_FlowKellyDisconnect=TopDrive' +!#endif +! endif +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_FlowKellyDisconnect=Kelly' +!#endif +! endif + + end subroutine + + subroutine Subscribe_FlowKellyDisconnect() + implicit none + end subroutine + +end module CFlowKellyDisconnectEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CFlowKellyDisconnectEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CFlowKellyDisconnectEnumVariables.f90 new file mode 100644 index 0000000..15a5f46 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CFlowKellyDisconnectEnumVariables.f90 @@ -0,0 +1,60 @@ +module CFlowKellyDisconnectEnumVariables + use CVoidEventHandlerCollection + implicit none +! integer :: FlowKellyDisconnect = 0 +! +! public +! +! type(VoidEventHandlerCollection) :: OnFlowKellyDisconnectChange +! +! enum, bind(c) +! enumerator FLOW_KELLY_DISCONNECT_NEUTRAL +! enumerator FLOW_KELLY_DISCONNECT_BEGIN +! enumerator FLOW_KELLY_DISCONNECT_END +! end enum +! +! private :: FlowKellyDisconnect +! +! contains +! +! subroutine Set_FlowKellyDisconnect(v) +! implicit none +! integer , intent(in) :: v +!#ifdef ExcludeExtraChanges +! if(FlowKellyDisconnect == v) return +!#endif +! FlowKellyDisconnect = v +!#ifdef deb +! print*, 'FlowKellyDisconnect=', FlowKellyDisconnect +!#endif +! call OnFlowKellyDisconnectChange%RunAll() +! end subroutine +! +! integer function Get_FlowKellyDisconnect2() +! implicit none +! Get_FlowKellyDisconnect2 = FlowKellyDisconnect +! end function + + + +! integer function Get_FlowKellyDisconnect_deprecated() +! !DEC$ ATTRIBUTES DLLEXPORT :: Get_FlowKellyDisconnect_deprecated +! !DEC$ ATTRIBUTES ALIAS: 'Get_FlowKellyDisconnect_deprecated' :: Get_FlowKellyDisconnect_deprecated +! implicit none +! !Get_FlowKellyDisconnect_WN = FlowKellyDisconnect +! end function +! +! +! subroutine FlowKellyDisconnectEnd() +! !DEC$ ATTRIBUTES DLLEXPORT :: FlowKellyDisconnectEnd +! !DEC$ ATTRIBUTES ALIAS: 'FlowKellyDisconnectEnd' :: FlowKellyDisconnectEnd +! implicit none +! call Set_FlowKellyDisconnect(FLOW_KELLY_DISCONNECT_END) +!#ifdef deb +! print*, 'FLOW_KELLY_DISCONNECT_END' +!#endif +! end subroutine + + + +end module CFlowKellyDisconnectEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CFlowPipeDisconnectEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CFlowPipeDisconnectEnum.f90 new file mode 100644 index 0000000..95c8572 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CFlowPipeDisconnectEnum.f90 @@ -0,0 +1,29 @@ +module CFlowPipeDisconnectEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_FlowPipeDisconnect() + implicit none + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_FlowPipeDisconnect=TopDrive' +!#endif +! endif +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_FlowPipeDisconnect=Kelly' +!#endif +! endif + + end subroutine + + subroutine Subscribe_FlowPipeDisconnect() + implicit none + end subroutine + +end module CFlowPipeDisconnectEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CFlowPipeDisconnectEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CFlowPipeDisconnectEnumVariables.f90 new file mode 100644 index 0000000..e022c90 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CFlowPipeDisconnectEnumVariables.f90 @@ -0,0 +1,70 @@ +module CFlowPipeDisconnectEnumVariables + use CVoidEventHandlerCollection + implicit none +! integer :: FlowPipeDisconnect = 0 +! +! public +! +! type(VoidEventHandlerCollection) :: OnFlowPipeDisconnectChange +! +! enum, bind(c) +! enumerator FLOW_PIPE_DISCONNECT_NEUTRAL +! enumerator FLOW_PIPE_DISCONNECT_BEGIN +! enumerator FLOW_PIPE_DISCONNECT_END +! end enum +! +! private :: FlowPipeDisconnect +! +! contains +! +! subroutine Set_FlowPipeDisconnect(v) +! implicit none +! integer , intent(in) :: v +!#ifdef ExcludeExtraChanges +! if(FlowPipeDisconnect == v) return +!#endif +! FlowPipeDisconnect = v +!#ifdef deb +! print*, 'FlowPipeDisconnect=', FlowPipeDisconnect +!#endif +! call OnFlowPipeDisconnectChange%RunAll() +! end subroutine +! +! integer function Get_FlowPipeDisconnect2() +! implicit none +! Get_FlowPipeDisconnect2 = FlowPipeDisconnect +! end function + + + +! subroutine Set_FlowPipeDisconnect_deprecated(v) +! !DEC$ ATTRIBUTES DLLEXPORT :: Set_FlowPipeDisconnect_deprecated +! !DEC$ ATTRIBUTES ALIAS: 'Set_FlowPipeDisconnect_deprecated' :: Set_FlowPipeDisconnect_deprecated +! implicit none +! integer , intent(in) :: v +! call Set_FlowPipeDisconnect(v) +! end subroutine +! +! +! integer function Get_FlowPipeDisconnect_deprecated() +! !DEC$ ATTRIBUTES DLLEXPORT :: Get_FlowPipeDisconnect_deprecated +! !DEC$ ATTRIBUTES ALIAS: 'Get_FlowPipeDisconnect_deprecated' :: Get_FlowPipeDisconnect_deprecated +! implicit none +! Get_FlowPipeDisconnect_WN = FlowPipeDisconnect +! end function +! +! +! +! subroutine FlowPipeDisconnectEnd() +! !DEC$ ATTRIBUTES DLLEXPORT :: FlowPipeDisconnectEnd +! !DEC$ ATTRIBUTES ALIAS: 'FlowPipeDisconnectEnd' :: FlowPipeDisconnectEnd +! implicit none +! call Set_FlowPipeDisconnect(FLOW_PIPE_DISCONNECT_END) +!#ifdef deb +! print*, 'FLOW_PIPE_DISCONNECT_END' +!#endif +! end subroutine + + + +end module CFlowPipeDisconnectEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CHeadEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CHeadEnum.f90 new file mode 100644 index 0000000..869e1f4 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CHeadEnum.f90 @@ -0,0 +1,150 @@ +module CHeadEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_FillupHead() + use CStudentStationVariables, only: FillupHeadInstallation + implicit none + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_FillupHead=TopDrive' +#endif + endif + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_FillupHead=Kelly' +#endif + endif + + + if (Get_FillupHead() == FILLUP_HEAD_INSTALL) then + FillupHeadInstallation = .true. + else if (Get_FillupHead() == FILLUP_HEAD_REMOVE) then + FillupHeadInstallation = .false. + endif + + end subroutine + + ! subroutine Subscribe_FillupHead() + ! use CStudentStationVariables + ! implicit none + ! call OnFillupHeadInstallationPress%Add(ButtonPress_FillupHeadInstallation) + ! call OnFillupHeadRemovePress%Add(ButtonPress_FillupHeadRemove) + ! end subroutine + + subroutine ButtonPress_FillupHeadInstallation() + implicit none + + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_FillupHeadInstallation=TopDrive' +#endif + + + + !TOPDRIVE-CODE=67 + if (Get_FillupHeadPermission()) then + call Set_FillupHead(FILLUP_HEAD_INSTALL) + + return + end if + + + endif + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_FillupHeadInstallation=Kelly' +#endif + + + !OPERATION-CODE=71 + if (Get_InstallFillupHeadPermission()) then + call Set_FillupHead(FILLUP_HEAD_INSTALL) + + return + end if + + + endif + + + + + + + + end subroutine + + + subroutine ButtonPress_FillupHeadRemove() + implicit none + + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_FillupHeadRemove=TopDrive' +#endif + + + !TOPDRIVE-CODE=68 + if (Get_FillupHeadPermission()) then + call Set_FillupHead(FILLUP_HEAD_REMOVE) + + return + end if + + + endif + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_FillupHeadRemove=Kelly' +#endif + + + !OPERATION-CODE=72 + if (Get_InstallFillupHeadPermission()) then + call Set_FillupHead(FILLUP_HEAD_REMOVE) + return + end if + + + + + endif + + + + + + + end subroutine + +end module CHeadEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CHeadEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CHeadEnumVariables.f90 new file mode 100644 index 0000000..280a6d8 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CHeadEnumVariables.f90 @@ -0,0 +1,90 @@ +module CHeadEnumVariables + use CVoidEventHandlerCollection + implicit none + integer :: FillupHead = 0 + + public + + type(VoidEventHandlerCollection) :: OnFillupHeadChange + + enum, bind(c) + !enumerator FILLUP_HEAD_NEUTRAL + enumerator FILLUP_HEAD_REMOVE + enumerator FILLUP_HEAD_INSTALL + end enum + + private :: FillupHead + + contains + + subroutine Set_FillupHead(v) + use CManifolds, only: ToggleFillupHead + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(FillupHead == v) return +#endif + FillupHead = v + + if (FillupHead == FILLUP_HEAD_INSTALL) then + call ToggleFillupHead(.true.) + else if (FillupHead == FILLUP_HEAD_REMOVE) then + call ToggleFillupHead(.false.) + endif + +#ifdef deb + print*, 'FillupHead=', FillupHead +#endif + call OnFillupHeadChange%RunAll() + end subroutine + + integer function Get_FillupHead() + implicit none + Get_FillupHead = FillupHead + end function + + + + + subroutine Set_FillupHead_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_FillupHead_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_FillupHead_WN' :: Set_FillupHead_WN + implicit none + integer , intent(in) :: v + call Set_FillupHead(v) + end subroutine + + integer function Get_FillupHead_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_FillupHead_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_FillupHead_WN' :: Get_FillupHead_WN + implicit none + Get_FillupHead_WN = FillupHead + end function + + + + + + + + + + + + + + logical function Get_RemoveFillupHead() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_RemoveFillupHead + !DEC$ ATTRIBUTES ALIAS: 'Get_RemoveFillupHead' :: Get_RemoveFillupHead + implicit none + Get_RemoveFillupHead = .false. ! FillupHead == REMOVE_FILLUP_HEAD + end function + + logical function Get_InstallFillupHead() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_InstallFillupHead + !DEC$ ATTRIBUTES ALIAS: 'Get_InstallFillupHead' :: Get_InstallFillupHead + implicit none + Get_InstallFillupHead = .false. ! FillupHead == INSTALL_FILLUP_HEAD + end function + +end module CHeadEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CIbopEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CIbopEnum.f90 new file mode 100644 index 0000000..8962f07 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CIbopEnum.f90 @@ -0,0 +1,33 @@ +module CIbopEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_Ibop() + implicit none + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_Ibop=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_Ibop=Kelly' +!#endif +! endif + + end subroutine + + subroutine Subscribe_Ibop() + implicit none + ! imp me... + end subroutine + +end module CIbopEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CIbopEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CIbopEnumVariables.f90 new file mode 100644 index 0000000..89449d2 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CIbopEnumVariables.f90 @@ -0,0 +1,85 @@ +module CIbopEnumVariables + use CVoidEventHandlerCollection + implicit none + integer :: Ibop = 0 + + public + + type(VoidEventHandlerCollection) :: OnIbopChange + + enum, bind(c) + !enumerator IBOP_NEUTRAL + enumerator IBOP_REMOVE + enumerator IBOP_INSTALL + end enum + + private :: Ibop + + contains + + subroutine Set_Ibop(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(Ibop == v) return +#endif + Ibop = v +#ifdef deb + print*, 'Ibop=', Ibop +#endif + call OnIbopChange%RunAll() + end subroutine + + integer function Get_Ibop() + implicit none + Get_Ibop = Ibop + end function + + + + + subroutine Set_Ibop_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_Ibop_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_Ibop_WN' :: Set_Ibop_WN + implicit none + integer , intent(in) :: v + call Set_Ibop(v) + end subroutine + + integer function Get_Ibop_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_Ibop_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_Ibop_WN' :: Get_Ibop_WN + implicit none + Get_Ibop_WN = Ibop + end function + + + + subroutine Set_Ibop_Install() + implicit none + call Set_Ibop(IBOP_INSTALL) + end subroutine + + subroutine Set_Ibop_Remove() + implicit none + call Set_Ibop(IBOP_REMOVE) + end subroutine + + + + + logical function Get_RemoveIbop() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_RemoveIbop + !DEC$ ATTRIBUTES ALIAS: 'Get_RemoveIbop' :: Get_RemoveIbop + implicit none + Get_RemoveIBop = .false. ! Ibop == REMOVE_IBOP + end function + + logical function Get_InstallIbop() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_InstallIbop + !DEC$ ATTRIBUTES ALIAS: 'Get_InstallIbop' :: Get_InstallIbop + implicit none + Get_InstallIbop = .false. ! Ibop == INSTALL_IBOP + end function + +end module CIbopEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CKellyEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CKellyEnum.f90 new file mode 100644 index 0000000..b348d7b --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CKellyEnum.f90 @@ -0,0 +1,69 @@ +module CKellyEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_Kelly() + !use COperationConditionEnum + implicit none + + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_Kelly=TopDrive' +!#endif +! endif +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_Kelly=Kelly' +!#endif +! endif + + + + + +! if(OperationCondition == OPERATION_DRILL) then +! call Set_Kelly(INSTALL_KELLY) +!#ifdef deb +! print*, 'KELLY=INSTALL_KELLY' +!#endif +! endif +! if(OperationCondition == OPERATION_TRIP) then +! call Set_Kelly(KELLY_BACK) +!#ifdef deb +! print*, 'KELLY=KELLY_BACK' +!#endif +! endif + + end subroutine + + subroutine Subscribe_Kelly() + implicit none + !call OnOperationConditionChangeInt%Add(On_OperationCondition) + end subroutine +! +! subroutine On_OperationCondition(v) +! implicit none +! integer , intent(in) :: v +! if(v == OPERATION_DRILL) then +! call Set_Kelly(KELLY_INSTALL) +!#ifdef deb +! print*, 'KELLY=INSTALL_KELLY' +!#endif +! endif +! if(v == OPERATION_TRIP) then +! call Set_Kelly(KELLY_REMOVE) +!#ifdef deb +! print*, 'KELLY=KELLY_BACK' +!#endif +! endif +! +! end subroutine + +end module CKellyEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CKellyEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CKellyEnumVariables.f90 new file mode 100644 index 0000000..2391a50 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CKellyEnumVariables.f90 @@ -0,0 +1,79 @@ +module CKellyEnumVariables + use CVoidEventHandlerCollection + implicit none + integer :: Kelly = 0 + integer :: Kelly_S = 0 + + public + + type(VoidEventHandlerCollection) :: OnKellyChange + + enum, bind(c) + enumerator KELLY_NEUTRAL + enumerator KELLY_INSTALL + enumerator KELLY_REMOVE + end enum + + private :: Kelly + + contains + + subroutine Set_Kelly(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(Kelly == v) return +#endif + Kelly = v +#ifdef deb + print*, 'Kelly=', Kelly +#endif + call OnKellyChange%RunAll() + end subroutine + + integer function Get_Kelly() + implicit none + Get_Kelly = Kelly + end function + + + + + subroutine Set_Kelly_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_Kelly_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_Kelly_WN' :: Set_Kelly_WN + implicit none + integer , intent(in) :: v + !call Set_Kelly(v) + Kelly_S = v + end subroutine + + integer function Get_Kelly_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_Kelly_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_Kelly_WN' :: Get_Kelly_WN + implicit none + Get_Kelly_WN = Kelly + end function + + + + + + + + + logical function Get_KellyBack() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_KellyBack + !DEC$ ATTRIBUTES ALIAS: 'Get_KellyBack' :: Get_KellyBack + implicit none + Get_KellyBack = .false. ! Kelly == KELLY_BACK + end function + + logical function Get_InstallKelly() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_InstallKelly + !DEC$ ATTRIBUTES ALIAS: 'Get_InstallKelly' :: Get_InstallKelly + implicit none + Get_InstallKelly = .false. ! Kelly == INSTALL_KELLY + end function + +end module CKellyEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CMouseHoleEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CMouseHoleEnum.f90 new file mode 100644 index 0000000..24d85f5 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CMouseHoleEnum.f90 @@ -0,0 +1,39 @@ +module CMouseHoleEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_MouseHole() + implicit none + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_MouseHole=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_MouseHole=Kelly' +!#endif +! endif + + end subroutine + + subroutine Subscribe_MouseHole() + !use CDrillingConsoleVariables + implicit none + !call OnFillMouseHolePress%Add(ButtonPress_MouseHole) + end subroutine + + !subroutine ButtonPress_MouseHole() + ! implicit none + ! print*, 'ButtonPress_MouseHole' + !end subroutine + +end module CMouseHoleEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CMouseHoleEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CMouseHoleEnumVariables.f90 new file mode 100644 index 0000000..8cc5539 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CMouseHoleEnumVariables.f90 @@ -0,0 +1,83 @@ +module CMouseHoleEnumVariables + use CVoidEventHandlerCollection + implicit none + integer :: MouseHole = 0 + integer :: MouseHole_S = 0 + + public + + type(VoidEventHandlerCollection) :: OnMouseHoleChange + + enum, bind(c) + enumerator MOUSE_HOLE_NEUTRAL + enumerator MOUSE_HOLE_FILL + enumerator MOUSE_HOLE_EMPTY + end enum + + private :: MouseHole + + contains + + subroutine Set_MouseHole(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(MouseHole == v) return +#endif + !call sleep(2) + MouseHole = v +#ifdef deb + print*, 'MouseHole=', MouseHole +#endif + call OnMouseHoleChange%RunAll() + end subroutine + + integer function Get_MouseHole() + implicit none + Get_MouseHole = MouseHole + end function + + + subroutine Update_MouseHole_From_Snapshot() + implicit none + call Set_MouseHole(MouseHole_S) + end subroutine + + subroutine Set_MouseHole_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_MouseHole_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_MouseHole_WN' :: Set_MouseHole_WN + implicit none + integer , intent(in) :: v + !call Set_MouseHole(v) + MouseHole_S = v + end subroutine + + integer function Get_MouseHole_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_MouseHole_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_MouseHole_WN' :: Get_MouseHole_WN + implicit none + Get_MouseHole_WN = MouseHole + end function + + + + + + + + + logical function Get_EmptyMouseHole() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_EmptyMouseHole + !DEC$ ATTRIBUTES ALIAS: 'Get_EmptyMouseHole' :: Get_EmptyMouseHole + implicit none + Get_EmptyMouseHole = .false. ! MouseHole == EMPTY_MOUSE_HOLE + end function + + logical function Get_FillMouseHole() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_FillMouseHole + !DEC$ ATTRIBUTES ALIAS: 'Get_FillMouseHole' :: Get_FillMouseHole + implicit none + Get_FillMouseHole = .false. ! MouseHole == FILL_MOUSE_HOLE + end function + +end module CMouseHoleEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/COperationConditionEnum.f90 b/CSharp/OperationScenarios/UnitySignals/COperationConditionEnum.f90 new file mode 100644 index 0000000..0719827 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/COperationConditionEnum.f90 @@ -0,0 +1,147 @@ +module COperationConditionEnum + use CLog4 + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_OperationCondition() + implicit none + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_OperationCondition=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_OperationCondition=Kelly' +!#endif +! endif + + end subroutine + + ! subroutine Subscribe_OperationCondition() + ! use CDrillingConsoleVariables + ! implicit none + ! call OnLatchPipePress%Add(ButtonPress_Latch_OperationCondition) + ! call OnUnlatchPipePress%Add(ButtonPress_Unlatch_OperationCondition) + ! end subroutine + + subroutine ButtonPress_Latch_OperationCondition() + use CHoistingVariables, only: DriveType, Kelly_DriveType + use CManifolds, only: InstallKellyCock + implicit none + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_Latch_OperationCondition=TopDrive' +#endif + endif + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_Latch_OperationCondition=Kelly' +#endif + + !OPERATION-CODE=17 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + Get_KellyConnection() == KELLY_CONNECTION_NOTHING .and.& + Get_Swing() == SWING_RAT_HOLE_END .and.& + Get_LatchLed() .and.& + Get_UnlatchLed() == .false.) then + + call Set_OperationCondition(OPERATION_DRILL) + call Set_LatchLed(.false.) + call Set_UnlatchLed(.true.) + call Set_Kelly(KELLY_INSTALL) + if(DriveType == Kelly_DriveType) then + call InstallKellyCock() !drill mode + endif + return + end if + + endif + + + + + + + + + + end subroutine + + subroutine ButtonPress_Unlatch_OperationCondition() + use CHoistingVariables, only: DriveType, Kelly_DriveType + use CManifolds, only: RemoveKellyCock + implicit none + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_Unlatch_OperationCondition=TopDrive' +#endif + endif + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_Unlatch_OperationConditions=Kelly' +#endif + + + !OPERATION-CODE=18 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + Get_KellyConnection() == KELLY_CONNECTION_NOTHING .and.& + Get_Swing() == SWING_RAT_HOLE_END .and.& + Get_LatchLed() == .false. .and.& + Get_UnlatchLed()) then + + call Set_Kelly(KELLY_REMOVE) + call Set_Swing(SWING_WELL_BEGIN) + call Set_OperationCondition(OPERATION_TRIP) + call Set_LatchLed(.true.) + call Set_UnlatchLed(.false.) + call Set_IrSafetyValveLed(.false.) + if(DriveType == Kelly_DriveType) then ! top drive mode + call RemoveKellyCock() !trip mode + endif + return + end if + + + + endif + + + + + + + end subroutine + +end module COperationConditionEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/COperationConditionEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/COperationConditionEnumVariables.f90 new file mode 100644 index 0000000..6090d02 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/COperationConditionEnumVariables.f90 @@ -0,0 +1,84 @@ +module COperationConditionEnumVariables + use CIntegerEventHandlerCollection + use CVoidEventHandlerCollection + implicit none + integer :: OperationCondition = 0 + + public + + type(VoidEventHandlerCollection) :: OnOperationConditionChange + type(IntegerEventHandlerCollection) :: OnOperationConditionChangeInt + + enum, bind(c) + enumerator OPERATION_DRILL + enumerator OPERATION_TRIP + end enum + + private :: OperationCondition + + contains + + subroutine Set_OperationCondition(v) + use CKellyEnumVariables + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(OperationCondition == v) return +#endif + OperationCondition = v +#ifdef deb + print*, 'OperationCondition=', OperationCondition +#endif + call OnOperationConditionChange%RunAll() + call OnOperationConditionChangeInt%RunAll(OperationCondition) + end subroutine + + integer function Get_OperationCondition() + implicit none + Get_OperationCondition = OperationCondition + end function + + + + + + subroutine Set_OperationCondition_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_OperationCondition_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_OperationCondition_WN' :: Set_OperationCondition_WN + implicit none + integer , intent(in) :: v + call Set_OperationCondition(v) + end subroutine + + integer function Get_OperationCondition_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_OperationCondition_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_OperationCondition_WN' :: Get_OperationCondition_WN + implicit none + Get_OperationCondition_WN = OperationCondition + end function + + + + + + + + + + + + logical function Get_DrillCondition() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_DrillCondition + !DEC$ ATTRIBUTES ALIAS: 'Get_DrillCondition' :: Get_DrillCondition + implicit none + Get_DrillCondition = OperationCondition == OPERATION_DRILL + end function + + logical function Get_TripCondition() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_TripCondition + !DEC$ ATTRIBUTES ALIAS: 'Get_TripCondition' :: Get_TripCondition + implicit none + Get_TripCondition = OperationCondition == OPERATION_TRIP + end function + +end module COperationConditionEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CSafetyValveEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CSafetyValveEnum.f90 new file mode 100644 index 0000000..a260d0b --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CSafetyValveEnum.f90 @@ -0,0 +1,32 @@ +module CSafetyValveEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_SafetyValve() + implicit none + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_SafetyValve=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_SafetyValve=Kelly' +!#endif +! endif + + end subroutine + + subroutine Subscribe_SafetyValve() + implicit none + end subroutine + +end module CSafetyValveEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CSafetyValveEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CSafetyValveEnumVariables.f90 new file mode 100644 index 0000000..7902e9c --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CSafetyValveEnumVariables.f90 @@ -0,0 +1,101 @@ +module CSafetyValveEnumVariables + use CVoidEventHandlerCollection + implicit none + integer :: SafetyValve = 0 + integer :: operation = 0 + + public + + type(VoidEventHandlerCollection) :: OnSafetyValveChange + + enum, bind(c) + enumerator SAFETY_VALVE_NEUTRAL + enumerator SAFETY_VALVE_REMOVE + enumerator SAFETY_VALVE_INSTALL + end enum + + private :: SafetyValve + + contains + + subroutine Set_Operation(i) + implicit none + integer, intent (in) :: i + operation = i + end subroutine + + subroutine Set_SafetyValve(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(SafetyValve == v) return +#endif + SafetyValve = v +#ifdef deb + if(SafetyValve == SAFETY_VALVE_NEUTRAL) then + print*, 'SafetyValve=SAFETY_VALVE_NEUTRAL' + else if (SafetyValve == SAFETY_VALVE_INSTALL) then + print*, 'SafetyValve=SAFETY_VALVE_INSTALL' + else if (SafetyValve == SAFETY_VALVE_INSTALL) then + print*, 'SafetyValve=SAFETY_VALVE_REMOVE' + endif +#endif + call OnSafetyValveChange%RunAll() + end subroutine + + integer function Get_SafetyValve() + implicit none + Get_SafetyValve = SafetyValve + end function + + + + + subroutine Set_SafetyValve_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_SafetyValve_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_SafetyValve_WN' :: Set_SafetyValve_WN + implicit none + integer , intent(in) :: v + call Set_SafetyValve(v) + end subroutine + + integer function Get_SafetyValve_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_SafetyValve_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_SafetyValve_WN' :: Get_SafetyValve_WN + implicit none + Get_SafetyValve_WN = SafetyValve + end function + + + + + + subroutine Set_SafetyValve_Install() + implicit none + call Set_SafetyValve(SAFETY_VALVE_INSTALL) + end subroutine + + subroutine Set_SafetyValve_Remove() + implicit none + call Set_SafetyValve(SAFETY_VALVE_REMOVE) + end subroutine + + + + + + logical function Get_RemoveSafetyValve() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_RemoveSafetyValve + !DEC$ ATTRIBUTES ALIAS: 'Get_RemoveSafetyValve' :: Get_RemoveSafetyValve + implicit none + Get_RemoveSafetyValve = .false. ! SafetyValve == REMOVE_SAFETY_VALVE + end function + + logical function Get_InstallSafetyValve() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_InstallSafetyValve + !DEC$ ATTRIBUTES ALIAS: 'Get_InstallSafetyValve' :: Get_InstallSafetyValve + implicit none + Get_InstallSafetyValve = .false. ! SafetyValve == INSTALL_SAFETY_VALVE + end function + +end module CSafetyValveEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CSlipsEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CSlipsEnum.f90 new file mode 100644 index 0000000..da01d13 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CSlipsEnum.f90 @@ -0,0 +1,152 @@ +module CSlipsEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_Slips() + implicit none + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_Slips=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_Slips=Kelly' +!#endif +! endif + + end subroutine + + ! subroutine Subscribe_Slips() + ! use CDrillingConsoleVariables + ! implicit none + + ! !call Set_Slips(SLIPS_SET) + + ! call OnSlipsPress%Add(ButtonPress_Slips) + ! end subroutine + + subroutine ButtonPress_Slips() + implicit none + + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_Slips=TopDrive' +#endif + + + !TOPDRIVE-CODE=30 + if (Get_Slips() == SLIPS_UNSET_END .and.& + Get_SlipsNotification()) then + + call Set_Slips(SLIPS_SET_BEGIN) + return + end if + + + + + + + !TOPDRIVE-CODE=31 + if (Get_TdsConnectionModes() == TDS_CONNECTION_STRING .and.& + Get_Slips() == SLIPS_SET_END .and.& + Get_SlipsNotification()) then + + call Set_Slips(SLIPS_UNSET_BEGIN) + return + end if + + + + + + + !TOPDRIVE-CODE=32 + if (Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_STRING .and.& + Get_Slips() == SLIPS_SET_END .and.& + Get_SlipsNotification()) then + + call Set_Slips(SLIPS_UNSET_BEGIN) + return + end if + + + + endif + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_Slips=Kelly' +#endif + + !OPERATION-CODE=19 + if (Get_Slips() == SLIPS_UNSET_END .and.& + Get_SlipsNotification()) then + + call Set_Slips(SLIPS_SET_BEGIN) + return + end if + + !OPERATION-CODE=20 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_KellyConnection() == KELLY_CONNECTION_STRING .and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_SlipsNotification() .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_Slips(SLIPS_UNSET_BEGIN) + return + end if + + + !OPERATION-CODE=21 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .and.& + GetRotaryRpm() == 0.0d0 .and.& + Get_SlipsNotification() .and.& + Get_Slips() == SLIPS_SET_END) then + + call Set_Slips(SLIPS_UNSET_BEGIN) + return + end if + + + + + + + endif + + + + + + + + + + end subroutine + +end module CSlipsEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CSlipsEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CSlipsEnumVariables.f90 new file mode 100644 index 0000000..2c5fc71 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CSlipsEnumVariables.f90 @@ -0,0 +1,108 @@ +module CSlipsEnumVariables + use CVoidEventHandlerCollection + implicit none + integer :: Slips = 0 + integer :: Slips_S = 0 + + public + + type(VoidEventHandlerCollection) :: OnSlipsChange + + enum, bind(c) + enumerator SLIPS_NEUTRAL + enumerator SLIPS_SET_BEGIN + enumerator SLIPS_SET_END + enumerator SLIPS_UNSET_BEGIN + enumerator SLIPS_UNSET_END + end enum + + private :: Slips + + contains + + subroutine Set_Slips(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(Slips == v) return +#endif + Slips = v +#ifdef deb + print*, 'Slips=', Slips +#endif + call OnSlipsChange%RunAll() + end subroutine + + integer function Get_Slips() + implicit none + Get_Slips = Slips + end function + + + + subroutine Set_Slips_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_Slips_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_Slips_WN' :: Set_Slips_WN + implicit none + integer , intent(in) :: v + !call Set_Slips(v) + Slips_S = v + end subroutine + + integer function Get_Slips_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_Slips_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_Slips_WN' :: Get_Slips_WN + implicit none + Get_Slips_WN = Slips + end function + + + + subroutine SlipsSetEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: SlipsSetEnd + !DEC$ ATTRIBUTES ALIAS: 'SlipsSetEnd' :: SlipsSetEnd + implicit none + !if(Slips /= SLIPS_SET_END) Slips = SLIPS_SET_END + call Set_Slips(SLIPS_SET_END) +#ifdef deb + print*, 'SlipsSetEnd' +#endif + end subroutine + + subroutine SlipsUnsetEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: SlipsUnsetEnd + !DEC$ ATTRIBUTES ALIAS: 'SlipsUnsetEnd' :: SlipsUnsetEnd + implicit none + !if(Slips /= SLIPS_UNSET_END) Slips = SLIPS_UNSET_END + call Set_Slips(SLIPS_UNSET_END) +#ifdef deb + print*, 'SlipsUnsetEnd' +#endif + end subroutine + + + + + + + + + + + + + logical function Get_SlipsUnset() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_SlipsUnset + !DEC$ ATTRIBUTES ALIAS: 'Get_SlipsUnset' :: Get_SlipsUnset + implicit none + Get_SlipsUnset = .false. ! Slips == SLIPS_UNSET + end function + + logical function Get_SlipsSet() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_SlipsSet + !DEC$ ATTRIBUTES ALIAS: 'Get_SlipsSet' :: Get_SlipsSet + implicit none + Get_SlipsSet = .false. ! Slips == SLIPS_SET + end function + +end module CSlipsEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CSwingEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CSwingEnum.f90 new file mode 100644 index 0000000..9bdf9bd --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CSwingEnum.f90 @@ -0,0 +1,233 @@ +module CSwingEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_Swing() + implicit none + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_Swing=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_Swing=Kelly' +!#endif +! endif + + end subroutine + + ! subroutine Subscribe_Swing() + ! use CDrillingConsoleVariables + ! implicit none + ! call OnSwingPress%Add(ButtonPress_Swing) + ! end subroutine + + subroutine ButtonPress_Swing() + implicit none + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_Swing=TopDrive' +#endif + endif + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_Swing=Kelly' +#endif + + + !!OPERATION-CODE=84 + !if (Get_OperationCondition() == OPERATION_DRILL .and.& + ! Get_HookHeight() >= (HKL + Get_NearFloorConnection() + RE) .and.& + ! Get_Swing() == SWING_RAT_HOLE_END) then + ! call Set_Swing(SWING_WELL_BEGIN) + ! return + !endif + + !OPERATION-CODE=26 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_HookHeight() >= (HKL + Get_NearFloorConnection() + PL) .and.& + Get_KellyConnection() == KELLY_CONNECTION_SINGLE .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_SwingLed() .and.& + Get_FillMouseHoleLed() == .false.) then + + call Set_Swing(SWING_MOUSE_HOLE_BEGIN) + return + endif + + + + + !OPERATION-CODE=27 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_HookHeight() >= (HKL + Get_NearFloorConnection() + PL) .and.& + Get_KellyConnection() == KELLY_CONNECTION_SINGLE .and.& + Get_Swing() == SWING_MOUSE_HOLE_END .and.& + Get_SwingLed()) then + + call Set_Swing(SWING_WELL_BEGIN) + return + endif + + + + + !OPERATION-CODE=28 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_HookHeight() >= (HKL + Get_NearFloorConnection()) .and.& + Get_KellyConnection() == KELLY_CONNECTION_NOTHING .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_SwingLed()) then + + call Set_Swing(SWING_MOUSE_HOLE_BEGIN) + return + endif + + + + !OPERATION-CODE=29 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_HookHeight() >= (HKL + SG) .and.& + Get_KellyConnection() == KELLY_CONNECTION_NOTHING .and.& + Get_Swing() == SWING_MOUSE_HOLE_END .and.& + Get_SwingLed()) then + + call Set_Swing(SWING_RAT_HOLE_BEGIN) + return + endif + + + !OPERATION-CODE=30 + if (Get_OperationCondition() == OPERATION_DRILL .and.& + Get_HookHeight() >= (HKL + Get_NearFloorConnection()) .and.& + Get_Swing() == SWING_RAT_HOLE_END .and.& + Get_SwingLed()) then + + call Set_Swing(SWING_WELL_BEGIN) + return + endif + + + + !OPERATION-CODE=31 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() >= (HL + Get_NearFloorConnection()) .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_SwingLed()) then + + call Set_Swing(SWING_MOUSE_HOLE_BEGIN) + return + endif + + + + !OPERATION-CODE=32 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() >= 27.41 .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + !Get_Swing() == SWING_WELL_END .and.& + Get_Swing() == SWING_MOUSE_HOLE_END .and.& + Get_SwingLed()) then + + call Set_Swing(SWING_RAT_HOLE_BEGIN) + return + endif + + + + !OPERATION-CODE=33 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + (Get_HookHeight() >= (HL + Get_NearFloorConnection()) .and. Get_HookHeight() <= 27.41) .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + Get_Swing() == SWING_MOUSE_HOLE_END .and.&!Get_Swing() == SWING_MOUSE_HOLE_END .and.&!Get_Swing() /= SWING_WELL_END + Get_SwingLed()) then + + call Set_Swing(SWING_WELL_BEGIN) + return + endif + + + + !OPERATION-CODE=34 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() >= (HL + Get_NearFloorConnection() + PL - ECG) .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE .and.& + Get_Swing() == SWING_WELL_END .and.& + Get_SwingLed()) then + + call Set_Swing(SWING_MOUSE_HOLE_BEGIN) + return + endif + + + + + + !OPERATION-CODE=35 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() >= (HL + Get_NearFloorConnection() + PL - ECG + RE) .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE .and.& + Get_Swing() == SWING_MOUSE_HOLE_END .and.& + Get_SwingLed()) then + + call Set_Swing(SWING_WELL_BEGIN) + return + endif + + !OPERATION-CODE=80 + if (Get_OperationCondition() == OPERATION_TRIP .and.& + Get_HookHeight() >= 27.41 .and. Get_HookHeight() <= (27.41 + 10) .and.& + Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING .and.& + Get_Swing() == SWING_RAT_HOLE_END .and.& + Get_SwingLed()) then + + call Set_Swing(SWING_WELL_BEGIN) + return + end if + + + + + endif + + + + + + + + + + + + + + end subroutine + +end module CSwingEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CSwingEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CSwingEnumVariables.f90 new file mode 100644 index 0000000..27ca75c --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CSwingEnumVariables.f90 @@ -0,0 +1,135 @@ +module CSwingEnumVariables + use CVoidEventHandlerCollection + use CLog4 + implicit none + integer :: Swing = 0 + integer :: Swing_S = 0 + + public + + type(VoidEventHandlerCollection) :: OnSwingChange + + enum, bind(c) + enumerator SWING_NEUTRAL + enumerator SWING_MOUSE_HOLE_BEGIN + enumerator SWING_MOUSE_HOLE_END + enumerator SWING_RAT_HOLE_BEGIN + enumerator SWING_RAT_HOLE_END + enumerator SWING_WELL_BEGIN + enumerator SWING_WELL_END + end enum + + private :: Swing + + contains + + subroutine Set_Swing(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(Swing == v) return +#endif + Swing = v +#ifdef deb + print*, 'Swing=', Swing +#endif + call OnSwingChange%RunAll() + end subroutine + + integer function Get_Swing() + implicit none + Get_Swing = Swing + end function + + + subroutine Set_Swing_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_Swing_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_Swing_WN' :: Set_Swing_WN + implicit none + integer , intent(in) :: v + !call Set_Swing(v) + Swing_S = v + end subroutine + + integer function Get_Swing_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_Swing_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_Swing_WN' :: Get_Swing_WN + implicit none + Get_Swing_WN = Swing + end function + + + + + + + + subroutine SwingMouseHoleEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: SwingMouseHoleEnd + !DEC$ ATTRIBUTES ALIAS: 'SwingMouseHoleEnd' :: SwingMouseHoleEnd + implicit none + !if(Swing /= SWING_MOUSE_HOLE_END) Swing = SWING_MOUSE_HOLE_END + call Set_Swing(SWING_MOUSE_HOLE_END) +#ifdef deb + print*, 'SWING_MOUSE_HOLE_END' +#endif + end subroutine + + + subroutine SwingRatHoleEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: SwingRatHoleEnd + !DEC$ ATTRIBUTES ALIAS: 'SwingRatHoleEnd' :: SwingRatHoleEnd + implicit none + !if(Swing /= SWING_RAT_HOLE_END) Swing = SWING_RAT_HOLE_END + call Set_Swing(SWING_RAT_HOLE_END) +#ifdef deb + print*, 'SWING_RAT_HOLE_END' +#endif + end subroutine + + + subroutine SwingWellEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: SwingWellEnd + !DEC$ ATTRIBUTES ALIAS: 'SwingWellEnd' :: SwingWellEnd + implicit none + !if(Swing /= SWING_WELL_END) Swing = SWING_WELL_END + call Set_Swing(SWING_WELL_END) +#ifdef deb + print*, 'SWING_WELL_END' +#endif + end subroutine + + + + + + + + + + + + + + logical function Get_SwingMouseHole() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_SwingMouseHole + !DEC$ ATTRIBUTES ALIAS: 'Get_SwingMouseHole' :: Get_SwingMouseHole + implicit none + Get_SwingMouseHole = .false. ! Swing == SWING_MOUSE_HOLE + end function + + logical function Get_SwingRatHole() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_SwingRatHole + !DEC$ ATTRIBUTES ALIAS: 'Get_SwingRatHole' :: Get_SwingRatHole + implicit none + Get_SwingRatHole = .false. ! Swing == SWING_RAT_HOLE + end function + + logical function Get_SwingWell() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_SwingWell + !DEC$ ATTRIBUTES ALIAS: 'Get_SwingWell' :: Get_SwingWell + implicit none + Get_SwingWell = .false. ! Swing == SWING_WELL + end function + +end module CSwingEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CTdsBackupClamp.f90 b/CSharp/OperationScenarios/UnitySignals/CTdsBackupClamp.f90 new file mode 100644 index 0000000..62dcb4c --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CTdsBackupClamp.f90 @@ -0,0 +1,57 @@ +module CTdsBackupClamp + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_TdsBackupClamp() + implicit none + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_TdsBackupClamp=TopDrive' +#endif + + !TOPDRIVE-CODE=79 + if(Get_TdsBackupClamp() == BACKUP_CLAMP_OFF_END .and.& + TopDriveTdsPowerState /= TdsPower_OFF .and.& + TopDriveTorqueWrench) then + + call Set_TdsBackupClamp(BACKUP_CLAMP_FW_BEGIN) + + endif + + !TOPDRIVE-CODE=80 + if(Get_TdsBackupClamp() /= BACKUP_CLAMP_OFF_END .and.& + Get_TdsBackupClamp() /= BACKUP_CLAMP_OFF_BEGIN .and.& + TopDriveTdsPowerState /= TdsPower_OFF .and.& + TopDriveTorqueWrench == .false.) then + + call Set_TdsBackupClamp(BACKUP_CLAMP_OFF_BEGIN) + + endif + + + endif + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_TdsBackupClamp=Kelly' +#endif + endif + + end subroutine + + subroutine Subscribe_TdsBackupClamp() + use CDrillingConsoleVariables + implicit none + end subroutine + +end module CTdsBackupClamp \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CTdsBackupClampVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CTdsBackupClampVariables.f90 new file mode 100644 index 0000000..f8ed662 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CTdsBackupClampVariables.f90 @@ -0,0 +1,83 @@ +module CTdsBackupClampVariables + use CVoidEventHandlerCollection + implicit none + integer :: TdsBackupClamp = 0 + + public + + type(VoidEventHandlerCollection) :: OnTdsBackupClampChange + + enum, bind(c) + enumerator BACKUP_CLAMP_OFF_END + enumerator BACKUP_CLAMP_OFF_BEGIN + enumerator BACKUP_CLAMP_FW_BEGIN + enumerator BACKUP_CLAMP_FW_END + end enum + + private :: TdsBackupClamp + contains + + subroutine Set_TdsBackupClamp(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(TdsBackupClamp == v) return +#endif + TdsBackupClamp = v +#ifdef deb + print*, 'TdsBackupClamp=', TdsBackupClamp +#endif + call OnTdsBackupClampChange%RunAll() + end subroutine + + integer function Get_TdsBackupClamp() + implicit none + Get_TdsBackupClamp = TdsBackupClamp + end function + + + + subroutine Set_TdsBackupClamp_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_TdsBackupClamp_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_TdsBackupClamp_WN' :: Set_TdsBackupClamp_WN + implicit none + integer , intent(in) :: v + call Set_TdsBackupClamp(v) + end subroutine + + integer function Get_TdsBackupClamp_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_TdsBackupClamp_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_TdsBackupClamp_WN' :: Get_TdsBackupClamp_WN + implicit none + Get_TdsBackupClamp_WN = TdsBackupClamp + end function + + + + + + subroutine TdsBackupClampFwEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: TdsBackupClampFwEnd + !DEC$ ATTRIBUTES ALIAS: 'TdsBackupClampFwEnd' :: TdsBackupClampFwEnd + implicit none + call Set_TdsBackupClamp(BACKUP_CLAMP_FW_END) +#ifdef deb + print*, 'BACKUP_CLAMP_FW_END' +#endif + end subroutine + + + subroutine TdsBackupClampOffEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: TdsBackupClampOffEnd + !DEC$ ATTRIBUTES ALIAS: 'TdsBackupClampOffEnd' :: TdsBackupClampOffEnd + implicit none + call Set_TdsBackupClamp(BACKUP_CLAMP_OFF_END) +#ifdef deb + print*, 'BACKUP_CLAMP_OFF_END' +#endif + end subroutine + + + + +end module CTdsBackupClampVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CTdsSpineEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CTdsSpineEnum.f90 new file mode 100644 index 0000000..ded19cc --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CTdsSpineEnum.f90 @@ -0,0 +1,61 @@ +module CTdsSpineEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_TdsSpine() + implicit none + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_TdsSpine=TopDrive' +#endif + + !TOPDRIVE-CODE=83 + if (Get_TdsStemIn() .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING .and.& + !Get_TdsConnectionPossible() .and.& + TopDriveTdsPowerState == TdsPower_FWD .and.& + TopDriveDrillTorqueState == TdsMu_SPINE) then + + call Set_TdsSpine(TDS_SPINE_CONNECT_BEGIN) + return + end if + + !TOPDRIVE-CODE=84 + if (Get_TdsStemIn() .and.& + Get_TdsTong() == TDS_TONG_BREAKOUT_END .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_SPINE .and.& + TopDriveTdsPowerState == TdsPower_REV .and.& + TopDriveDrillTorqueState == TdsMu_SPINE) then + + call Set_TdsSpine(TDS_SPINE_DISCONNECT_BEGIN) + return + end if + + + + endif + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_TdsSpine=Kelly' +#endif + endif + + end subroutine + + subroutine Subscribe_TdsSpine() + use CDrillingConsoleVariables + implicit none + end subroutine + +end module CTdsSpineEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CTdsSpineEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CTdsSpineEnumVariables.f90 new file mode 100644 index 0000000..0d67708 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CTdsSpineEnumVariables.f90 @@ -0,0 +1,84 @@ +module CTdsSpineEnumVariables + use CVoidEventHandlerCollection + use CLog4 + implicit none + integer :: TdsSpine = 0 + + public + + type(VoidEventHandlerCollection) :: OnTdsSpineChange + + enum, bind(c) + enumerator TDS_SPINE_NEUTRAL + enumerator TDS_SPINE_CONNECT_BEGIN + enumerator TDS_SPINE_CONNECT_END + enumerator TDS_SPINE_DISCONNECT_BEGIN + enumerator TDS_SPINE_DISCONNECT_END + end enum + + private :: TdsSpine + contains + + subroutine Set_TdsSpine(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(TdsSpine == v) return +#endif + TdsSpine = v +#ifdef deb + print*, 'TdsSpine=', TdsSpine +#endif + call OnTdsSpineChange%RunAll() + end subroutine + + integer function Get_TdsSpine() + implicit none + Get_TdsSpine = TdsSpine + end function + + + + subroutine Set_TdsSpine_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_TdsSpine_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_TdsSpine_WN' :: Set_TdsSpine_WN + implicit none + integer , intent(in) :: v + call Set_TdsSpine(v) + end subroutine + + integer function Get_TdsSpine_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_TdsSpine_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_TdsSpine_WN' :: Get_TdsSpine_WN + implicit none + Get_TdsSpine_WN = TdsSpine + end function + + + + + subroutine TdsSpineConnectEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: TdsSpineConnectEnd + !DEC$ ATTRIBUTES ALIAS: 'TdsSpineConnectEnd' :: TdsSpineConnectEnd + implicit none + !if(TdsSpine /= TDS_SPINE_CONNECT_END) TdsSpine = TDS_SPINE_CONNECT_END + call Set_TdsSpine(TDS_SPINE_CONNECT_END) +#ifdef deb + print*, 'TDS_SPINE_CONNECT_END' +#endif + end subroutine + + + subroutine TdsSpineDisconnectEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: TdsSpineDisconnectEnd + !DEC$ ATTRIBUTES ALIAS: 'TdsSpineDisconnectEnd' :: TdsSpineDisconnectEnd + implicit none + !if(TdsSpine /= TDS_SPINE_DISCONNECT_END) TdsSpine = TDS_SPINE_DISCONNECT_END + call Set_TdsSpine(TDS_SPINE_DISCONNECT_END) +#ifdef deb + print*, 'TDS_SPINE_DISCONNECT_END' +#endif + end subroutine + + +end module CTdsSpineEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CTdsSwingEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CTdsSwingEnum.f90 new file mode 100644 index 0000000..c8fe34c --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CTdsSwingEnum.f90 @@ -0,0 +1,140 @@ +module CTdsSwingEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_TdsSwing() + implicit none + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_TdsSwing=TopDrive' +#endif + + + !TOPDRIVE-CODE=37 + if (Get_SwingDrillPermission() .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + Get_FillMouseHoleLed() == .false. .and.& + TopDriveLinkTiltState == TdsLinkTilt_DRILL) then + + call Set_TdsSwing(TDS_SWING_DRILL_BEGIN) + TopDriveLinkTiltLed = LED_ON + return + end if + + + + !TOPDRIVE-CODE=38 + if (Get_SwingTiltPermission() .and.& + Get_TdsSwing() == TDS_SWING_TILT_END .and.& + TopDriveLinkTiltState == TdsLinkTilt_TILT) then + + call Set_TdsSwing(TDS_SWING_TILT_BEGIN) + TopDriveLinkTiltLed = LED_ON + return + end if + + + + !TOPDRIVE-CODE=39 + if (Get_SwingOffPermission() .and.& + Get_TdsConnectionModes() == TDS_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + TopDriveLinkTiltState == TdsLinkTilt_OFF) then + + call Set_TdsSwing(TDS_SWING_OFF_BEGIN) + TopDriveLinkTiltLed = LED_ON + return + end if + + + + + + !TOPDRIVE-CODE=40 + if (Get_SwingTiltPermission() .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + TopDriveLinkTiltState == TdsLinkTilt_TILT) then + + call Set_TdsSwing(TDS_SWING_TILT_BEGIN) + TopDriveLinkTiltLed = LED_ON + return + end if + + + + + + !TOPDRIVE-CODE=41 + if (Get_SwingOffPermission() .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_NOTHING .and.& + Get_TdsSwing() == TDS_SWING_TILT_END .and.& + TopDriveLinkTiltState == TdsLinkTilt_OFF) then + + call Set_TdsSwing(TDS_SWING_OFF_BEGIN) + TopDriveLinkTiltLed = LED_ON + return + end if + + + + + + !TOPDRIVE-CODE=42 + if (Get_HookHeight() > (TL() + NFC() + PL - ECG) .and.& + Get_SwingTiltPermission() .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_SINGLE .and.& + Get_TdsSwing() == TDS_SWING_OFF_END .and.& + TopDriveLinkTiltState == TdsLinkTilt_TILT) then + + call Set_TdsSwing(TDS_SWING_TILT_BEGIN) + TopDriveLinkTiltLed = LED_ON + return + end if + + + + + !TOPDRIVE-CODE=43 + if (Get_HookHeight() > (TL() + NFC() + PL - ECG) .and.& + Get_SwingOffPermission() .and.& + Get_TdsElevatorModes() == TDS_ELEVATOR_CONNECTION_SINGLE .and.& + Get_TdsSwing() == TDS_SWING_TILT_END .and.& + TopDriveLinkTiltState == TdsLinkTilt_OFF) then + + call Set_TdsSwing(TDS_SWING_OFF_BEGIN) + TopDriveLinkTiltLed = LED_ON + return + end if + + + + endif + + + + + + + + + + + + +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_TdsSwing=Kelly' +!#endif +! endif + + end subroutine + + subroutine Subscribe_TdsSwing() + use CDrillingConsoleVariables + implicit none + end subroutine + +end module CTdsSwingEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CTdsSwingEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CTdsSwingEnumVariables.f90 new file mode 100644 index 0000000..c931f63 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CTdsSwingEnumVariables.f90 @@ -0,0 +1,97 @@ +module CTdsSwingEnumVariables + use CVoidEventHandlerCollection + use CLog4 + implicit none + integer :: TdsSwing = 0 + + public + + type(VoidEventHandlerCollection) :: OnTdsSwingChange + + enum, bind(c) + enumerator TDS_SWING_NEUTRAL + enumerator TDS_SWING_OFF_BEGIN + enumerator TDS_SWING_OFF_END + enumerator TDS_SWING_DRILL_BEGIN + enumerator TDS_SWING_DRILL_END + enumerator TDS_SWING_TILT_BEGIN + enumerator TDS_SWING_TILT_END + end enum + + private :: TdsSwing + contains + + subroutine Set_TdsSwing(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(TdsSwing == v) return +#endif + TdsSwing = v +#ifdef deb + print*, 'TdsSwing=', TdsSwing +#endif + call OnTdsSwingChange%RunAll() + end subroutine + + integer function Get_TdsSwing() + implicit none + Get_TdsSwing = TdsSwing + end function + + + + + subroutine Set_TdsSwing_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_TdsSwing_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_TdsSwing_WN' :: Set_TdsSwing_WN + implicit none + integer , intent(in) :: v + call Set_TdsSwing(v) + end subroutine + + integer function Get_TdsSwing_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_TdsSwing_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_TdsSwing_WN' :: Get_TdsSwing_WN + implicit none + Get_TdsSwing_WN = TdsSwing + end function + + + + subroutine TdsSwingOffEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: TdsSwingOffEnd + !DEC$ ATTRIBUTES ALIAS: 'TdsSwingOffEnd' :: TdsSwingOffEnd + implicit none + !if(TdsSwing /= TDS_SWING_OFF_END) TdsSwing = TDS_SWING_OFF_END + call Set_TdsSwing(TDS_SWING_OFF_END) +#ifdef deb + print*, 'TDS_SWING_OFF_END' +#endif + end subroutine + + + subroutine TdsSwingDrillEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: TdsSwingDrillEnd + !DEC$ ATTRIBUTES ALIAS: 'TdsSwingDrillEnd' :: TdsSwingDrillEnd + implicit none + !if(TdsSwing /= TDS_SWING_DRILL_END) TdsSwing = TDS_SWING_DRILL_END + call Set_TdsSwing(TDS_SWING_DRILL_END) +#ifdef deb + print*, 'TDS_SWING_DRILL_END' +#endif + end subroutine + + + subroutine TdsSwingTiltEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: TdsSwingTiltEnd + !DEC$ ATTRIBUTES ALIAS: 'TdsSwingTiltEnd' :: TdsSwingTiltEnd + implicit none + !if(TdsSwing /= TDS_SWING_TILT_END) TdsSwing = TDS_SWING_TILT_END + call Set_TdsSwing(TDS_SWING_TILT_END) +#ifdef deb + print*, 'TDS_SWING_TILT_END' +#endif + end subroutine + +end module CTdsSwingEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CTdsTongEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CTdsTongEnum.f90 new file mode 100644 index 0000000..9fc4dae --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CTdsTongEnum.f90 @@ -0,0 +1,64 @@ +module CTdsTongEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_TdsTong() + implicit none + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'Evaluate_TdsTong=TopDrive' +#endif + + + + !TOPDRIVE-CODE=1 + if (Get_TdsConnectionModes() == TDS_CONNECTION_SPINE .and.& + Get_TdsBackupClamp() == BACKUP_CLAMP_FW_END .and.& + TopDriveTdsPowerState == TdsPower_FWD .and.& + TopDriveDrillTorqueState == TdsMu_TORQ) then + + call Set_TdsTong(TDS_TONG_MAKEUP_BEGIN) + !TopDriveTorqueWrenchLed = LED_ON + return + end if + + + + !TOPDRIVE-CODE=2 + if (Get_TdsConnectionModes() == TDS_CONNECTION_STRING .and.& + Get_TdsBackupClamp() == BACKUP_CLAMP_FW_END .and.& + TopDriveTdsPowerState == TdsPower_REV .and.& + TopDriveDrillTorqueState == TdsMu_TORQ) then + + call Set_TdsTong(TDS_TONG_BREAKOUT_BEGIN) + !TopDriveTorqueWrenchLed = LED_ON + return + end if + + + endif + + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'Evaluate_TdsTong=Kelly' +#endif + endif + + end subroutine + + subroutine Subscribe_TdsTong() + use CDrillingConsoleVariables + implicit none + end subroutine + +end module CTdsTongEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CTdsTongEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CTdsTongEnumVariables.f90 new file mode 100644 index 0000000..b814a21 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CTdsTongEnumVariables.f90 @@ -0,0 +1,86 @@ +module CTdsTongEnumVariables + use CVoidEventHandlerCollection + implicit none + integer :: TdsTong = 0 + + public + + type(VoidEventHandlerCollection) :: OnTdsTongChange + + enum, bind(c) + enumerator TDS_TONG_BREAKOUT_END + enumerator TDS_TONG_BREAKOUT_BEGIN + enumerator TDS_TONG_MAKEUP_BEGIN + enumerator TDS_TONG_MAKEUP_END + end enum + + private :: TdsTong + contains + + subroutine Set_TdsTong(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(TdsTong == v) return +#endif + TdsTong = v +#ifdef deb + print*, 'TdsTong=', TdsTong +#endif + call OnTdsTongChange%RunAll() + end subroutine + + integer function Get_TdsTong() + implicit none + Get_TdsTong = TdsTong + end function + + + + + subroutine Set_TdsTong_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_TdsTong_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_TdsTong_WN' :: Set_TdsTong_WN + implicit none + integer , intent(in) :: v + call Set_TdsTong(v) + end subroutine + + integer function Get_TdsTong_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_TdsTong_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_TdsTong_WN' :: Get_TdsTong_WN + implicit none + Get_TdsTong_WN = TdsTong + end function + + + + + + subroutine TdsTongBreakoutEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: TdsTongBreakoutEnd + !DEC$ ATTRIBUTES ALIAS: 'TdsTongBreakoutEnd' :: TdsTongBreakoutEnd + implicit none + !if(TdsTong /= TDS_TONG_BREAKOUT_END) TdsTong = TDS_TONG_BREAKOUT_END + call Set_TdsTong(TDS_TONG_BREAKOUT_END) +#ifdef deb + print*, 'TDS_TONG_BREAKOUT_END' +#endif + end subroutine + + + subroutine TdsTongMakeupEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: TdsTongMakeupEnd + !DEC$ ATTRIBUTES ALIAS: 'TdsTongMakeupEnd' :: TdsTongMakeupEnd + implicit none + !if(TdsTong /= TDS_TONG_MAKEUP_END) TdsTong = TDS_TONG_MAKEUP_END + call Set_TdsTong(TDS_TONG_MAKEUP_END) +#ifdef deb + print*, 'TDS_TONG_MAKEUP_END' +#endif + end subroutine + + + + +end module CTdsTongEnumVariables \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CTongEnum.f90 b/CSharp/OperationScenarios/UnitySignals/CTongEnum.f90 new file mode 100644 index 0000000..edfb28d --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CTongEnum.f90 @@ -0,0 +1,189 @@ +module CTongEnum + use COperationScenariosVariables + implicit none + contains + + subroutine Evaluate_Tong() + implicit none + +! if (DriveType == TopDrive_DriveType) then +!#ifdef OST +! print*, 'Evaluate_Tong=TopDrive' +!#endif +! endif +! +! +! +! +! +! +! +! +! if (DriveType == Kelly_DriveType) then +!#ifdef OST +! print*, 'Evaluate_Tong=Kelly' +!#endif +! endif + + end subroutine + + ! subroutine Subscribe_Tong() + ! use CDrillingConsoleVariables + ! implicit none + + ! call OnBreakoutLeverPress%Add(ButtonPress_Breakout_TongNotification) + ! call OnMakeupLeverPress%Add(ButtonPress_Makeup_TongNotification) + ! call OnTongNeutralPress%Add(ButtonPress_Neutral_TongNotification) + + ! end subroutine + + + + subroutine ButtonPress_Breakout_TongNotification() + implicit none + + + + + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_Breakout_TongNotification=TopDrive' +#endif + + !TOPDRIVE-CODE=70 + if (Get_TongNotification()) then + + call Set_Tong(TONG_BREAKOUT_BEGIN) + return + end if + + + endif + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_Breakout_TongNotification=Kelly' +#endif + + + !OPERATION-CODE=74 + if (Get_TongNotification()) then + call Set_Tong(TONG_BREAKOUT_BEGIN) + endif + + + + + + endif + + + + + + + + + + + + end subroutine + + + + + + + + subroutine ButtonPress_Makeup_TongNotification() + use CTongNotificationVariables + implicit none + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_Makeup_TongNotification=TopDrive' +#endif + + + !TOPDRIVE-CODE=69 + if (Get_TongNotification()) then + + call Set_Tong(TONG_MAKEUP_BEGIN) + return + end if + + endif + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_Makeup_TongNotification=Kelly' +#endif + + + !OPERATION-CODE=73 + if (Get_TongNotification()) then + call Set_Tong(TONG_MAKEUP_BEGIN) + endif + + endif + + + + + + + + + end subroutine + + subroutine ButtonPress_Neutral_TongNotification() + implicit none + + + + if (DriveType == TopDrive_DriveType) then +#ifdef OST + print*, 'ButtonPress_Neutral_TongNotification=TopDrive' +#endif + endif + + + + + + + + + if (DriveType == Kelly_DriveType) then +#ifdef OST + print*, 'ButtonPress_Neutral_TongNotification=Kelly' +#endif + + call Set_Tong(TONG_NEUTRAL) + + + endif + + + end subroutine + +end module CTongEnum \ No newline at end of file diff --git a/CSharp/OperationScenarios/UnitySignals/CTongEnumVariables.f90 b/CSharp/OperationScenarios/UnitySignals/CTongEnumVariables.f90 new file mode 100644 index 0000000..a3ec977 --- /dev/null +++ b/CSharp/OperationScenarios/UnitySignals/CTongEnumVariables.f90 @@ -0,0 +1,129 @@ +module CTongEnumVariables + use CVoidEventHandlerCollection + use CLog4 + implicit none + integer :: Tong = 0 + integer :: Tong_S = 0 + + public + + type(VoidEventHandlerCollection) :: OnTongChange + + enum, bind(c) + enumerator TONG_NEUTRAL + enumerator TONG_BREAKOUT_BEGIN + enumerator TONG_BREAKOUT_END + enumerator TONG_MAKEUP_BEGIN + enumerator TONG_MAKEUP_END + end enum + + private :: Tong + + contains + + subroutine Set_Tong(v) + implicit none + integer , intent(in) :: v +#ifdef ExcludeExtraChanges + if(Tong == v) return +#endif + Tong = v +#ifdef deb + !if(Tong==TONG_NEUTRAL) then + ! print*, 'Tong=TONG_NEUTRAL' + !else if(Tong==TONG_BREAKOUT) then + ! print*, 'Tong=TONG_BREAKOUT' + !else if(Tong==TONG_MAKEUP) then + ! print*, 'Tong=TONG_MAKEUP' + !endif + print*, 'Tong=', Tong +#endif + call OnTongChange%RunAll() + end subroutine + + integer function Get_Tong() + implicit none + Get_Tong = Tong + end function + + + + subroutine Set_Tong_WN(v) + !DEC$ ATTRIBUTES DLLEXPORT :: Set_Tong_WN + !DEC$ ATTRIBUTES ALIAS: 'Set_Tong_WN' :: Set_Tong_WN + implicit none + integer , intent(in) :: v + !call Set_Tong(v) + Tong_S = v + end subroutine + + integer function Get_Tong_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_Tong_WN + !DEC$ ATTRIBUTES ALIAS: 'Get_Tong_WN' :: Get_Tong_WN + implicit none + Get_Tong_WN = Tong + end function + + + + + + + + + + subroutine TongBreakoutEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: TongBreakoutEnd + !DEC$ ATTRIBUTES ALIAS: 'TongBreakoutEnd' :: TongBreakoutEnd + implicit none + !if(Tong /= TONG_BREAKOUT_END) then + ! Tong = TONG_BREAKOUT_END + !endif + call Set_Tong(TONG_BREAKOUT_END) +#ifdef deb + print*, 'TONG_BREAKOUT_END' +#endif + end subroutine + + + subroutine TongMakeupEnd() + !DEC$ ATTRIBUTES DLLEXPORT :: TongMakeupEnd + !DEC$ ATTRIBUTES ALIAS: 'TongMakeupEnd' :: TongMakeupEnd + implicit none + !if(Tong /= TONG_MAKEUP_END) then + ! Tong = TONG_MAKEUP_END + ! + !endif + call Set_Tong(TONG_MAKEUP_END) +#ifdef deb + print*, 'TONG_MAKEUP_END' +#endif + end subroutine + + + + + + + + + + + + + + logical function Get_TongBreakout() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_TongBreakout + !DEC$ ATTRIBUTES ALIAS: 'Get_TongBreakout' :: Get_TongBreakout + implicit none + Get_TongBreakout = .false. ! Tong == TONG_BREAKOUT + end function + + logical function Get_TongMakeup() + !DEC$ ATTRIBUTES DLLEXPORT :: Get_TongMakeup + !DEC$ ATTRIBUTES ALIAS: 'Get_TongMakeup' :: Get_TongMakeup + implicit none + Get_TongMakeup = .false. ! Tong == TONG_MAKEUP + end function + +end module CTongEnumVariables \ No newline at end of file diff --git a/CSharp/Problems/CBitProblems.f90 b/CSharp/Problems/CBitProblems.f90 new file mode 100644 index 0000000..8b38696 --- /dev/null +++ b/CSharp/Problems/CBitProblems.f90 @@ -0,0 +1,65 @@ +module CBitProblems + use CBitProblemsVariables + implicit none + public + contains + + ! Input routines + subroutine SetPlugJets(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPlugJets + !DEC$ ATTRIBUTES ALIAS: 'SetPlugJets' :: SetPlugJets + implicit none + type(CProblem), intent(in) :: v + PlugJets = SetDue(v, ChangePlugJets) +#ifdef deb + !print*, 'PlugJets%ProblemType=', PlugJets%ProblemType + !print*, 'PlugJets%StatusType=', PlugJets%StatusType + !print*, 'PlugJets%Value=', PlugJets%Value + !print*, 'PlugJets%DueValue=', PlugJets%DueValue + + call Log_3("==============================") + call Log_3("PlugJets%ProblemType=", PlugJets%ProblemType) + call Log_3("PlugJets%StatusType=", PlugJets%StatusType) + call Log_3("PlugJets%Value=", PlugJets%Value) + call Log_3("PlugJets%DueValue=", PlugJets%DueValue) + call Log_3("==============================") +#endif + end subroutine + + subroutine SetJetWashout(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetJetWashout + !DEC$ ATTRIBUTES ALIAS: 'SetJetWashout' :: SetJetWashout + implicit none + type(CProblem), intent(in) :: v + JetWashout = SetDue(v, ChangeJetWashout) +#ifdef deb + print*, 'JetWashout%ProblemType=', JetWashout%ProblemType + print*, 'JetWashout%StatusType=', JetWashout%StatusType + print*, 'JetWashout%Value=', JetWashout%Value + print*, 'JetWashout%DueValue=', JetWashout%DueValue +#endif + end subroutine + + subroutine SetPlugJetsCount(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPlugJetsCount + !DEC$ ATTRIBUTES ALIAS: 'SetPlugJetsCount' :: SetPlugJetsCount + implicit none + integer, intent(in) :: v + PlugJetsCount = v +#ifdef deb + print*, 'PlugJetsCount=', PlugJetsCount +#endif + end subroutine + + subroutine SetJetWashoutCount(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetJetWashoutCount + !DEC$ ATTRIBUTES ALIAS: 'SetJetWashoutCount' :: SetJetWashoutCount + implicit none + integer, intent(in) :: v + JetWashoutCount = v +#ifdef deb + print*, 'JetWashoutCount=', JetWashoutCount +#endif + end subroutine + +end module CBitProblems \ No newline at end of file diff --git a/CSharp/Problems/CBitProblemsVariables.f90 b/CSharp/Problems/CBitProblemsVariables.f90 new file mode 100644 index 0000000..512a901 --- /dev/null +++ b/CSharp/Problems/CBitProblemsVariables.f90 @@ -0,0 +1,95 @@ +module CBitProblemsVariables + use CProblemDifinition + use CLog3 + implicit none + public + + ! Input vars + type(CProblem) :: PlugJets + type(CProblem) :: JetWashout + integer :: PlugJetsCount + integer :: JetWashoutCount + + procedure (ActionInteger), pointer :: PlugJetsPtr + procedure (ActionInteger), pointer :: JetWashoutPtr + + contains + subroutine ProcessBitProblemsDueTime(time) + implicit none + integer :: time + if(PlugJets%ProblemType == Time_ProblemType) call ProcessDueTime(PlugJets, ChangePlugJets, time) + if(JetWashout%ProblemType == Time_ProblemType) call ProcessDueTime(JetWashout, ChangeJetWashout, time) + + end subroutine + + subroutine ProcessBitProblemsDuePumpStrokes(strokes) + implicit none + integer :: strokes + + if(PlugJets%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(PlugJets, ChangePlugJets, strokes) + if(JetWashout%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(JetWashout, ChangeJetWashout, strokes) + + end subroutine + + subroutine ProcessBitProblemsDueVolumePumped(volume) + implicit none + real(8) :: volume + + if(PlugJets%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(PlugJets, ChangePlugJets, volume) + if(JetWashout%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(JetWashout, ChangeJetWashout, volume) + + end subroutine + + subroutine ProcessBitProblemsDueDistanceDrilled(distance) + implicit none + real(8) :: distance + + if(PlugJets%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(PlugJets, ChangePlugJets, distance) + if(JetWashout%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(JetWashout, ChangeJetWashout, distance) + + end subroutine + + subroutine ChangePlugJets(status) + USE FricPressDropVars + implicit none + integer, intent (in) :: status + if(associated(PlugJetsPtr)) call PlugJetsPtr(status) + if(status == Clear_StatusType) BitJetsPlugged = 0 + if(status == Executed_StatusType) BitJetsPlugged = 1 + endsubroutine + + subroutine ChangeJetWashout(status) + USE FricPressDropVars + implicit none + integer, intent (in) :: status + if(associated(JetWashoutPtr)) call JetWashoutPtr(status) + if(status == Clear_StatusType) BitJetsWashedOut = 0 + if(status == Executed_StatusType) BitJetsWashedOut = 1 + endsubroutine + + + + + + + + + + + subroutine SubscribePlugJets(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePlugJets + !DEC$ ATTRIBUTES ALIAS: 'SubscribePlugJets' :: SubscribePlugJets + implicit none + procedure (ActionInteger) :: v + PlugJetsPtr => v + end subroutine + + subroutine SubscribeJetWashout(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeJetWashout + !DEC$ ATTRIBUTES ALIAS: 'SubscribeJetWashout' :: SubscribeJetWashout + implicit none + procedure (ActionInteger) :: v + JetWashoutPtr => v + end subroutine + +end module CBitProblemsVariables \ No newline at end of file diff --git a/CSharp/Problems/CBopProblems.f90 b/CSharp/Problems/CBopProblems.f90 new file mode 100644 index 0000000..5fc1b12 --- /dev/null +++ b/CSharp/Problems/CBopProblems.f90 @@ -0,0 +1,217 @@ +module CBopProblems + use CBopProblemsVariables + implicit none + public + contains + + ! Input routines + + subroutine SetAnnularWash(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAnnularWash + !DEC$ ATTRIBUTES ALIAS: 'SetAnnularWash' :: SetAnnularWash + implicit none + type(CProblem), intent(in) :: v + AnnularWash = SetDue(v, ChangeAnnularWash) +#ifdef deb + print*, 'AnnularWash%ProblemType=', AnnularWash%ProblemType + print*, 'AnnularWash%StatusType=', AnnularWash%StatusType + print*, 'AnnularWash%Value=', AnnularWash%Value +#endif + end subroutine + + subroutine SetAnnularFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAnnularFail + !DEC$ ATTRIBUTES ALIAS: 'SetAnnularFail' :: SetAnnularFail + implicit none + type(CProblem), intent(in) :: v + AnnularFail = SetDue(v, ChangeAnnularFail) +#ifdef deb + print*, 'AnnularFail%ProblemType=', AnnularFail%ProblemType + print*, 'AnnularFail%StatusType=', AnnularFail%StatusType + print*, 'AnnularFail%Value=', AnnularFail%Value +#endif + end subroutine + + subroutine SetAnnularLeak(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAnnularLeak + !DEC$ ATTRIBUTES ALIAS: 'SetAnnularLeak' :: SetAnnularLeak + implicit none + type(CProblem), intent(in) :: v + AnnularLeak = SetDue(v, ChangeAnnularLeak) +#ifdef deb + print*, 'AnnularLeak%ProblemType=', AnnularLeak%ProblemType + print*, 'AnnularLeak%StatusType=', AnnularLeak%StatusType + print*, 'AnnularLeak%Value=', AnnularLeak%Value +#endif + end subroutine + + subroutine SetUpperRamWash(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetUpperRamWash + !DEC$ ATTRIBUTES ALIAS: 'SetUpperRamWash' :: SetUpperRamWash + implicit none + type(CProblem), intent(in) :: v + UpperRamWash = SetDue(v, ChangeUpperRamWash) +#ifdef deb + print*, 'UpperRamWash%ProblemType=', UpperRamWash%ProblemType + print*, 'UpperRamWash%StatusType=', UpperRamWash%StatusType + print*, 'UpperRamWash%Value=', UpperRamWash%Value +#endif + end subroutine + + subroutine SetUpperRamFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetUpperRamFail + !DEC$ ATTRIBUTES ALIAS: 'SetUpperRamFail' :: SetUpperRamFail + implicit none + type(CProblem), intent(in) :: v + UpperRamFail = SetDue(v, ChangeUpperRamFail) +#ifdef deb + print*, 'UpperRamFail%ProblemType=', UpperRamFail%ProblemType + print*, 'UpperRamFail%StatusType=', UpperRamFail%StatusType + print*, 'UpperRamFail%Value=', UpperRamFail%Value +#endif + end subroutine + + subroutine SetUpperRamLeak(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetUpperRamLeak + !DEC$ ATTRIBUTES ALIAS: 'SetUpperRamLeak' :: SetUpperRamLeak + implicit none + type(CProblem), intent(in) :: v + UpperRamLeak = SetDue(v, ChangeUpperRamLeak) +#ifdef deb + print*, 'UpperRamLeak%ProblemType=', UpperRamLeak%ProblemType + print*, 'UpperRamLeak%StatusType=', UpperRamLeak%StatusType + print*, 'UpperRamLeak%Value=', UpperRamLeak%Value +#endif + end subroutine + + subroutine SetMiddleRamWash(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMiddleRamWash + !DEC$ ATTRIBUTES ALIAS: 'SetMiddleRamWash' :: SetMiddleRamWash + implicit none + type(CProblem), intent(in) :: v + MiddleRamWash = SetDue(v, ChangeMiddleRamWash) +#ifdef deb + print*, 'MiddleRamWash%ProblemType=', MiddleRamWash%ProblemType + print*, 'MiddleRamWash%StatusType=', MiddleRamWash%StatusType + print*, 'MiddleRamWash%Value=', MiddleRamWash%Value +#endif + end subroutine + + subroutine SetMiddleRamFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMiddleRamFail + !DEC$ ATTRIBUTES ALIAS: 'SetMiddleRamFail' :: SetMiddleRamFail + implicit none + type(CProblem), intent(in) :: v + MiddleRamFail = SetDue(v, ChangeMiddleRamFail) +#ifdef deb + print*, 'MiddleRamFail%ProblemType=', MiddleRamFail%ProblemType + print*, 'MiddleRamFail%StatusType=', MiddleRamFail%StatusType + print*, 'MiddleRamFail%Value=', MiddleRamFail%Value +#endif + end subroutine + + subroutine SetMiddleRamLeak(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMiddleRamLeak + !DEC$ ATTRIBUTES ALIAS: 'SetMiddleRamLeak' :: SetMiddleRamLeak + implicit none + type(CProblem), intent(in) :: v + MiddleRamLeak = SetDue(v, ChangeMiddleRamLeak) +#ifdef deb + print*, 'MiddleRamLeak%ProblemType=', MiddleRamLeak%ProblemType + print*, 'MiddleRamLeak%StatusType=', MiddleRamLeak%StatusType + print*, 'MiddleRamLeak%Value=', MiddleRamLeak%Value +#endif + end subroutine + + subroutine SetLowerRamWash(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLowerRamWash + !DEC$ ATTRIBUTES ALIAS: 'SetLowerRamWash' :: SetLowerRamWash + implicit none + type(CProblem), intent(in) :: v + LowerRamWash = SetDue(v, ChangeLowerRamWash) +#ifdef deb + print*, 'LowerRamWash%ProblemType=', LowerRamWash%ProblemType + print*, 'LowerRamWash%StatusType=', LowerRamWash%StatusType + print*, 'LowerRamWash%Value=', LowerRamWash%Value +#endif + end subroutine + + subroutine SetLowerRamFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLowerRamFail + !DEC$ ATTRIBUTES ALIAS: 'SetLowerRamFail' :: SetLowerRamFail + implicit none + type(CProblem), intent(in) :: v + LowerRamFail = SetDue(v, ChangeLowerRamFail) +#ifdef deb + print*, 'LowerRamFail%ProblemType=', LowerRamFail%ProblemType + print*, 'LowerRamFail%StatusType=', LowerRamFail%StatusType + print*, 'LowerRamFail%Value=', LowerRamFail%Value +#endif + end subroutine + + subroutine SetLowerRamLeak(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLowerRamLeak + !DEC$ ATTRIBUTES ALIAS: 'SetLowerRamLeak' :: SetLowerRamLeak + implicit none + type(CProblem), intent(in) :: v + LowerRamLeak = SetDue(v, ChangeLowerRamLeak) +#ifdef deb + print*, 'LowerRamLeak%ProblemType=', LowerRamLeak%ProblemType + print*, 'LowerRamLeak%StatusType=', LowerRamLeak%StatusType + print*, 'LowerRamLeak%Value=', LowerRamLeak%Value +#endif + end subroutine + + subroutine SetAccumulatorPumpFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAccumulatorPumpFail + !DEC$ ATTRIBUTES ALIAS: 'SetAccumulatorPumpFail' :: SetAccumulatorPumpFail + implicit none + type(CProblem), intent(in) :: v + AccumulatorPumpFail = SetDue(v, ChangeAccumulatorPumpFail) +#ifdef deb + print*, 'AccumulatorPumpFail%ProblemType=', AccumulatorPumpFail%ProblemType + print*, 'AccumulatorPumpFail%StatusType=', AccumulatorPumpFail%StatusType + print*, 'AccumulatorPumpFail%Value=', AccumulatorPumpFail%Value +#endif + end subroutine + + subroutine SetAccumulatorPumpLeak(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAccumulatorPumpLeak + !DEC$ ATTRIBUTES ALIAS: 'SetAccumulatorPumpLeak' :: SetAccumulatorPumpLeak + implicit none + type(CProblem), intent(in) :: v + AccumulatorPumpLeak = SetDue(v, ChangeAccumulatorPumpLeak) +#ifdef deb + print*, 'AccumulatorPumpLeak%ProblemType=', AccumulatorPumpLeak%ProblemType + print*, 'AccumulatorPumpLeak%StatusType=', AccumulatorPumpLeak%StatusType + print*, 'AccumulatorPumpLeak%Value=', AccumulatorPumpLeak%Value +#endif + end subroutine + + subroutine SetAccumulatorSystemFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAccumulatorSystemFail + !DEC$ ATTRIBUTES ALIAS: 'SetAccumulatorSystemFail' :: SetAccumulatorSystemFail + implicit none + type(CProblem), intent(in) :: v + AccumulatorSystemFail = SetDue(v, ChangeAccumulatorSystemFail) +#ifdef deb + print*, 'AccumulatorSystemFail%ProblemType=', AccumulatorSystemFail%ProblemType + print*, 'AccumulatorSystemFail%StatusType=', AccumulatorSystemFail%StatusType + print*, 'AccumulatorSystemFail%Value=', AccumulatorSystemFail%Value +#endif + end subroutine + + subroutine SetAccumulatorSystemLeak(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAccumulatorSystemLeak + !DEC$ ATTRIBUTES ALIAS: 'SetAccumulatorSystemLeak' :: SetAccumulatorSystemLeak + implicit none + type(CProblem), intent(in) :: v + AccumulatorSystemLeak = SetDue(v, ChangeAccumulatorSystemLeak) +#ifdef deb + print*, 'AccumulatorSystemLeak%ProblemType=', AccumulatorSystemLeak%ProblemType + print*, 'AccumulatorSystemLeak%StatusType=', AccumulatorSystemLeak%StatusType + print*, 'AccumulatorSystemLeak%Value=', AccumulatorSystemLeak%Value +#endif + end subroutine + +end module CBopProblems \ No newline at end of file diff --git a/CSharp/Problems/CBopProblemsVariables.f90 b/CSharp/Problems/CBopProblemsVariables.f90 new file mode 100644 index 0000000..3af9260 --- /dev/null +++ b/CSharp/Problems/CBopProblemsVariables.f90 @@ -0,0 +1,417 @@ +module CBopProblemsVariables + use CProblemDifinition + implicit none + public + + ! Input vars + type(CProblem) :: AnnularWash + type(CProblem) :: AnnularFail + type(CProblem) :: AnnularLeak + type(CProblem) :: UpperRamWash + type(CProblem) :: UpperRamFail + type(CProblem) :: UpperRamLeak + type(CProblem) :: MiddleRamWash + type(CProblem) :: MiddleRamFail + type(CProblem) :: MiddleRamLeak + type(CProblem) :: LowerRamWash + type(CProblem) :: LowerRamFail + type(CProblem) :: LowerRamLeak + type(CProblem) :: AccumulatorPumpFail + type(CProblem) :: AccumulatorPumpLeak + type(CProblem) :: AccumulatorSystemFail + type(CProblem) :: AccumulatorSystemLeak + + + procedure (ActionInteger), pointer :: AnnularWashPtr + procedure (ActionInteger), pointer :: AnnularFailPtr + procedure (ActionInteger), pointer :: AnnularLeakPtr + procedure (ActionInteger), pointer :: UpperRamWashPtr + procedure (ActionInteger), pointer :: UpperRamFailPtr + procedure (ActionInteger), pointer :: UpperRamLeakPtr + procedure (ActionInteger), pointer :: MiddleRamWashPtr + procedure (ActionInteger), pointer :: MiddleRamFailPtr + procedure (ActionInteger), pointer :: MiddleRamLeakPtr + procedure (ActionInteger), pointer :: LowerRamWashPtr + procedure (ActionInteger), pointer :: LowerRamFailPtr + procedure (ActionInteger), pointer :: LowerRamLeakPtr + procedure (ActionInteger), pointer :: AccumulatorPumpFailPtr + procedure (ActionInteger), pointer :: AccumulatorPumpLeakPtr + procedure (ActionInteger), pointer :: AccumulatorSystemFailPtr + procedure (ActionInteger), pointer :: AccumulatorSystemLeakPtr + + contains + + subroutine ProcessBopProblemsDueTime(time) + implicit none + integer :: time + if(AnnularWash%ProblemType == Time_ProblemType) call ProcessDueTime(AnnularWash, ChangeAnnularWash, time) + if(AnnularFail%ProblemType == Time_ProblemType) call ProcessDueTime(AnnularFail, ChangeAnnularFail, time) + if(AnnularLeak%ProblemType == Time_ProblemType) call ProcessDueTime(AnnularLeak, ChangeAnnularLeak, time) + if(UpperRamWash%ProblemType == Time_ProblemType) call ProcessDueTime(UpperRamWash, ChangeUpperRamWash, time) + if(UpperRamFail%ProblemType == Time_ProblemType) call ProcessDueTime(UpperRamFail, ChangeUpperRamFail, time) + if(UpperRamLeak%ProblemType == Time_ProblemType) call ProcessDueTime(UpperRamLeak, ChangeUpperRamLeak, time) + if(MiddleRamWash%ProblemType == Time_ProblemType) call ProcessDueTime(MiddleRamWash, ChangeMiddleRamWash, time) + if(MiddleRamFail%ProblemType == Time_ProblemType) call ProcessDueTime(MiddleRamFail, ChangeMiddleRamFail, time) + if(MiddleRamLeak%ProblemType == Time_ProblemType) call ProcessDueTime(MiddleRamLeak, ChangeMiddleRamLeak, time) + if(LowerRamWash%ProblemType == Time_ProblemType) call ProcessDueTime(LowerRamWash, ChangeLowerRamWash, time) + if(LowerRamFail%ProblemType == Time_ProblemType) call ProcessDueTime(LowerRamFail, ChangeLowerRamFail, time) + if(LowerRamLeak%ProblemType == Time_ProblemType) call ProcessDueTime(LowerRamLeak, ChangeLowerRamLeak, time) + if(AccumulatorPumpFail%ProblemType == Time_ProblemType) call ProcessDueTime(AccumulatorPumpFail, ChangeAccumulatorPumpFail, time) + if(AccumulatorPumpLeak%ProblemType == Time_ProblemType) call ProcessDueTime(AccumulatorPumpLeak, ChangeAccumulatorPumpLeak, time) + if(AccumulatorSystemFail%ProblemType == Time_ProblemType) call ProcessDueTime(AccumulatorSystemFail, ChangeAccumulatorSystemFail, time) + if(AccumulatorSystemLeak%ProblemType == Time_ProblemType) call ProcessDueTime(AccumulatorSystemLeak, ChangeAccumulatorSystemLeak, time) + end subroutine + + subroutine ProcessBopProblemsDuePumpStrokes(strokes) + implicit none + integer :: strokes + if(AnnularWash%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AnnularWash, ChangeAnnularWash, strokes) + if(AnnularFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AnnularFail, ChangeAnnularFail, strokes) + if(AnnularLeak%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AnnularLeak, ChangeAnnularLeak, strokes) + if(UpperRamWash%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(UpperRamWash, ChangeUpperRamWash, strokes) + if(UpperRamFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(UpperRamFail, ChangeUpperRamFail, strokes) + if(UpperRamLeak%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(UpperRamLeak, ChangeUpperRamLeak, strokes) + if(MiddleRamWash%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(MiddleRamWash, ChangeMiddleRamWash, strokes) + if(MiddleRamFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(MiddleRamFail, ChangeMiddleRamFail, strokes) + if(MiddleRamLeak%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(MiddleRamLeak, ChangeMiddleRamLeak, strokes) + if(LowerRamWash%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(LowerRamWash, ChangeLowerRamWash, strokes) + if(LowerRamFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(LowerRamFail, ChangeLowerRamFail, strokes) + if(LowerRamLeak%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(LowerRamLeak, ChangeLowerRamLeak, strokes) + if(AccumulatorPumpFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AccumulatorPumpFail, ChangeAccumulatorPumpFail, strokes) + if(AccumulatorPumpLeak%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AccumulatorPumpLeak, ChangeAccumulatorPumpLeak, strokes) + if(AccumulatorSystemFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AccumulatorSystemFail, ChangeAccumulatorSystemFail, strokes) + if(AccumulatorSystemLeak%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AccumulatorSystemLeak, ChangeAccumulatorSystemLeak, strokes) + end subroutine + + subroutine ProcessBopProblemsDueVolumePumped(volume) + implicit none + real(8) :: volume + if(AnnularWash%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AnnularWash, ChangeAnnularWash, volume) + if(AnnularFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AnnularFail, ChangeAnnularFail, volume) + if(AnnularLeak%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AnnularLeak, ChangeAnnularLeak, volume) + if(UpperRamWash%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(UpperRamWash, ChangeUpperRamWash, volume) + if(UpperRamFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(UpperRamFail, ChangeUpperRamFail, volume) + if(UpperRamLeak%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(UpperRamLeak, ChangeUpperRamLeak, volume) + if(MiddleRamWash%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(MiddleRamWash, ChangeMiddleRamWash, volume) + if(MiddleRamFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(MiddleRamFail, ChangeMiddleRamFail, volume) + if(MiddleRamLeak%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(MiddleRamLeak, ChangeMiddleRamLeak, volume) + if(LowerRamWash%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(LowerRamWash, ChangeLowerRamWash, volume) + if(LowerRamFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(LowerRamFail, ChangeLowerRamFail, volume) + if(LowerRamLeak%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(LowerRamLeak, ChangeLowerRamLeak, volume) + if(AccumulatorPumpFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AccumulatorPumpFail, ChangeAccumulatorPumpFail, volume) + if(AccumulatorPumpLeak%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AccumulatorPumpLeak, ChangeAccumulatorPumpLeak, volume) + if(AccumulatorSystemFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AccumulatorSystemFail, ChangeAccumulatorSystemFail,volume) + if(AccumulatorSystemLeak%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AccumulatorSystemLeak, ChangeAccumulatorSystemLeak, volume) + end subroutine + + subroutine ProcessBopProblemsDueDistanceDrilled(distance) + implicit none + real(8) :: distance + if(AnnularWash%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AnnularWash, ChangeAnnularWash, distance) + if(AnnularFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AnnularFail, ChangeAnnularFail, distance) + if(AnnularLeak%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AnnularLeak, ChangeAnnularLeak, distance) + if(UpperRamWash%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(UpperRamWash, ChangeUpperRamWash, distance) + if(UpperRamFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(UpperRamFail, ChangeUpperRamFail, distance) + if(UpperRamLeak%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(UpperRamLeak, ChangeUpperRamLeak, distance) + if(MiddleRamWash%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(MiddleRamWash, ChangeMiddleRamWash, distance) + if(MiddleRamFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(MiddleRamFail, ChangeMiddleRamFail, distance) + if(MiddleRamLeak%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(MiddleRamLeak, ChangeMiddleRamLeak, distance) + if(LowerRamWash%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(LowerRamWash, ChangeLowerRamWash, distance) + if(LowerRamFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(LowerRamFail, ChangeLowerRamFail, distance) + if(LowerRamLeak%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(LowerRamLeak, ChangeLowerRamLeak, distance) + if(AccumulatorPumpFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AccumulatorPumpFail, ChangeAccumulatorPumpFail, distance) + if(AccumulatorPumpLeak%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AccumulatorPumpLeak, ChangeAccumulatorPumpLeak, distance) + if(AccumulatorSystemFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AccumulatorSystemFail, ChangeAccumulatorSystemFail, distance) + if(AccumulatorSystemLeak%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AccumulatorSystemLeak, ChangeAccumulatorSystemLeak, distance) + end subroutine + + + subroutine ChangeAnnularWash(status) + implicit none + integer, intent (in) :: status + if(associated(AnnularWashPtr)) call AnnularWashPtr(status) + !if(status == Clear_StatusType) print*,'On_AnnularWash_Clear' + !if(status == Executed_StatusType) print*,'On_AnnularWash_Execute' + endsubroutine + + subroutine ChangeAnnularFail(status) + USE VARIABLES + implicit none + integer, intent (in) :: status + if(associated(AnnularFailPtr)) call AnnularFailPtr(status) + if(status == Clear_StatusType) AnnularFailureMalf = 0 + if(status == Executed_StatusType) AnnularFailureMalf = 1 + endsubroutine + + subroutine ChangeAnnularLeak(status) + USE VARIABLES + implicit none + integer, intent (in) :: status + if(associated(AnnularLeakPtr)) call AnnularLeakPtr(status) + if(status == Clear_StatusType) AnnularLeakMalf = 0 + if(status == Executed_StatusType) AnnularLeakMalf = 1 + endsubroutine + + + + subroutine ChangeUpperRamWash(status) + implicit none + integer, intent (in) :: status + if(associated(UpperRamWashPtr)) call UpperRamWashPtr(status) + !if(status == Clear_StatusType) print*,'On_UpperRamWash_Clear' + !if(status == Executed_StatusType) print*,'On_UpperRamWash_Execute' + endsubroutine + + subroutine ChangeUpperRamFail(status) + USE VARIABLES + implicit none + integer, intent (in) :: status + if(associated(UpperRamFailPtr)) call UpperRamFailPtr(status) + if(status == Clear_StatusType) UpperRamsFailureMalf = 0 + if(status == Executed_StatusType) UpperRamsFailureMalf = 1 + endsubroutine + + subroutine ChangeUpperRamLeak(status) + USE VARIABLES + implicit none + integer, intent (in) :: status + if(associated(UpperRamLeakPtr)) call UpperRamLeakPtr(status) + if(status == Clear_StatusType) UpperRamsLeakMalf = 0 + if(status == Executed_StatusType) UpperRamsLeakMalf = 1 + endsubroutine + + + subroutine ChangeMiddleRamWash(status) + implicit none + integer, intent (in) :: status + if(associated(MiddleRamWashPtr)) call MiddleRamWashPtr(status) + !if(status == Clear_StatusType) print*,'On_MiddleRamWash_Clear' + !if(status == Executed_StatusType) print*,'On_MiddleRamWash_Execute' + endsubroutine + + subroutine ChangeMiddleRamFail(status) + USE VARIABLES + implicit none + integer, intent (in) :: status + if(associated(MiddleRamFailPtr)) call MiddleRamFailPtr(status) + if(status == Clear_StatusType) MiddleRamsFailureMalf = 0 + if(status == Executed_StatusType) MiddleRamsFailureMalf = 1 + endsubroutine + + subroutine ChangeMiddleRamLeak(status) + USE VARIABLES + implicit none + integer, intent (in) :: status + if(associated(MiddleRamLeakPtr)) call MiddleRamLeakPtr(status) + if(status == Clear_StatusType) MiddleRamsLeakMalf = 0 + if(status == Executed_StatusType) MiddleRamsLeakMalf = 1 + endsubroutine + + + + subroutine ChangeLowerRamWash(status) + implicit none + integer, intent (in) :: status + if(associated(LowerRamWashPtr)) call LowerRamWashPtr(status) + !if(status == Clear_StatusType) print*,'On_LowerRamWash_Clear' + !if(status == Executed_StatusType) print*,'On_LowerRamWash_Execute' + endsubroutine + + subroutine ChangeLowerRamFail(status) + USE VARIABLES + implicit none + integer, intent (in) :: status + if(associated(LowerRamFailPtr)) call LowerRamFailPtr(status) + if(status == Clear_StatusType) LowerRamsFailureMalf = 0 + if(status == Executed_StatusType) LowerRamsFailureMalf = 1 + endsubroutine + + subroutine ChangeLowerRamLeak(status) + USE VARIABLES + implicit none + integer, intent (in) :: status + if(associated(LowerRamLeakPtr)) call LowerRamLeakPtr(status) + if(status == Clear_StatusType) LowerRamsLeakMalf = 0 + if(status == Executed_StatusType) LowerRamsLeakMalf = 1 + endsubroutine + + subroutine ChangeAccumulatorPumpFail(status) + USE VARIABLES + implicit none + integer, intent (in) :: status + if(associated(AccumulatorPumpFailPtr)) call AccumulatorPumpFailPtr(status) + if(status == Clear_StatusType) AccPupmsFailMalf = 0 + if(status == Executed_StatusType) AccPupmsFailMalf = 1 + endsubroutine + + subroutine ChangeAccumulatorPumpLeak(status) + implicit none + integer, intent (in) :: status + if(associated(AccumulatorPumpLeakPtr)) call AccumulatorPumpLeakPtr(status) + !if(status == Clear_StatusType) print*,'On_AccumulatorPumpLeak_Clear' + !if(status == Executed_StatusType) print*,'On_AccumulatorPumpLeak_Execute' + endsubroutine + + subroutine ChangeAccumulatorSystemFail(status) + implicit none + integer, intent (in) :: status + if(associated(AccumulatorSystemFailPtr)) call AccumulatorSystemFailPtr(status) + !if(status == Clear_StatusType) print*,'On_AccumulatorSystemFail_Clear' + !if(status == Executed_StatusType) print*,'On_AccumulatorSystemFail_Execute' + endsubroutine + + subroutine ChangeAccumulatorSystemLeak(status) + implicit none + integer, intent (in) :: status + if(associated(AccumulatorSystemLeakPtr)) call AccumulatorSystemLeakPtr(status) + !if(status == Clear_StatusType) print*,'On_AccumulatorSystemLeak_Clear' + !if(status == Executed_StatusType) print*,'On_AccumulatorSystemLeak_Execute' + endsubroutine + + + + + + + + + + + + + subroutine SubscribeAnnularWash(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAnnularWash + !DEC$ ATTRIBUTES ALIAS: 'SubscribeAnnularWash' :: SubscribeAnnularWash + implicit none + procedure (ActionInteger) :: v + AnnularWashPtr => v + end subroutine + + subroutine SubscribeAnnularFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAnnularFail + !DEC$ ATTRIBUTES ALIAS: 'SubscribeAnnularFail' :: SubscribeAnnularFail + implicit none + procedure (ActionInteger) :: v + AnnularFailPtr => v + end subroutine + + subroutine SubscribeAnnularLeak(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAnnularLeak + !DEC$ ATTRIBUTES ALIAS: 'SubscribeAnnularLeak' :: SubscribeAnnularLeak + implicit none + procedure (ActionInteger) :: v + AnnularLeakPtr => v + end subroutine + + + subroutine SubscribeUpperRamWash(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeUpperRamWash + !DEC$ ATTRIBUTES ALIAS: 'SubscribeUpperRamWash' :: SubscribeUpperRamWash + implicit none + procedure (ActionInteger) :: v + UpperRamWashPtr => v + end subroutine + + subroutine SubscribeUpperRamFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeUpperRamFail + !DEC$ ATTRIBUTES ALIAS: 'SubscribeUpperRamFail' :: SubscribeUpperRamFail + implicit none + procedure (ActionInteger) :: v + UpperRamFailPtr => v + end subroutine + + subroutine SubscribeUpperRamLeak(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeUpperRamLeak + !DEC$ ATTRIBUTES ALIAS: 'SubscribeUpperRamLeak' :: SubscribeUpperRamLeak + implicit none + procedure (ActionInteger) :: v + UpperRamLeakPtr => v + end subroutine + + + subroutine SubscribeMiddleRamWash(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMiddleRamWash + !DEC$ ATTRIBUTES ALIAS: 'SubscribeMiddleRamWash' :: SubscribeMiddleRamWash + implicit none + procedure (ActionInteger) :: v + MiddleRamWashPtr => v + end subroutine + + subroutine SubscribeMiddleRamFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMiddleRamFail + !DEC$ ATTRIBUTES ALIAS: 'SubscribeMiddleRamFail' :: SubscribeMiddleRamFail + implicit none + procedure (ActionInteger) :: v + MiddleRamFailPtr => v + end subroutine + + subroutine SubscribeMiddleRamLeak(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMiddleRamLeak + !DEC$ ATTRIBUTES ALIAS: 'SubscribeMiddleRamLeak' :: SubscribeMiddleRamLeak + implicit none + procedure (ActionInteger) :: v + MiddleRamLeakPtr => v + end subroutine + + + subroutine SubscribeLowerRamWash(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLowerRamWash + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLowerRamWash' :: SubscribeLowerRamWash + implicit none + procedure (ActionInteger) :: v + LowerRamWashPtr => v + end subroutine + + subroutine SubscribeLowerRamFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLowerRamFail + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLowerRamFail' :: SubscribeLowerRamFail + implicit none + procedure (ActionInteger) :: v + LowerRamFailPtr => v + end subroutine + + subroutine SubscribeLowerRamLeak(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLowerRamLeak + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLowerRamLeak' :: SubscribeLowerRamLeak + implicit none + procedure (ActionInteger) :: v + LowerRamLeakPtr => v + end subroutine + + subroutine SubscribeAccumulatorPumpFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAccumulatorPumpFail + !DEC$ ATTRIBUTES ALIAS: 'SubscribeAccumulatorPumpFail' :: SubscribeAccumulatorPumpFail + implicit none + procedure (ActionInteger) :: v + AccumulatorPumpFailPtr => v + end subroutine + + subroutine SubscribeAccumulatorPumpLeak(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAccumulatorPumpLeak + !DEC$ ATTRIBUTES ALIAS: 'SubscribeAccumulatorPumpLeak' :: SubscribeAccumulatorPumpLeak + implicit none + procedure (ActionInteger) :: v + AccumulatorPumpLeakPtr => v + end subroutine + + subroutine SubscribeAccumulatorSystemFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAccumulatorSystemFail + !DEC$ ATTRIBUTES ALIAS: 'SubscribeAccumulatorSystemFail' :: SubscribeAccumulatorSystemFail + implicit none + procedure (ActionInteger) :: v + AccumulatorSystemFailPtr => v + end subroutine + + subroutine SubscribeAccumulatorSystemLeak(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAccumulatorSystemLeak + !DEC$ ATTRIBUTES ALIAS: 'SubscribeAccumulatorSystemLeak' :: SubscribeAccumulatorSystemLeak + implicit none + procedure (ActionInteger) :: v + AccumulatorSystemLeakPtr => v + end subroutine + + + + + +end module CBopProblemsVariables \ No newline at end of file diff --git a/CSharp/Problems/CChokeProblems.f90 b/CSharp/Problems/CChokeProblems.f90 new file mode 100644 index 0000000..a70aaad --- /dev/null +++ b/CSharp/Problems/CChokeProblems.f90 @@ -0,0 +1,221 @@ +module CChokeProblems + use CChokeProblemsVariables + implicit none + public + contains + + ! Input routines + subroutine SetHydraulicChoke1Plugged(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetHydraulicChoke1Plugged + !DEC$ ATTRIBUTES ALIAS: 'SetHydraulicChoke1Plugged' :: SetHydraulicChoke1Plugged + implicit none + type(CProblem), intent(in) :: v + HydraulicChoke1Plugged = SetDue(v, ChangeHydraulicChoke1Plugged) +#ifdef deb + print*, 'HydraulicChoke1Plugged%ProblemType=', HydraulicChoke1Plugged%ProblemType + print*, 'HydraulicChoke1Plugged%StatusType=', HydraulicChoke1Plugged%StatusType + print*, 'HydraulicChoke1Plugged%Value=', HydraulicChoke1Plugged%Value +#endif + end subroutine + + subroutine SetHydraulicChoke1Fail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetHydraulicChoke1Fail + !DEC$ ATTRIBUTES ALIAS: 'SetHydraulicChoke1Fail' :: SetHydraulicChoke1Fail + implicit none + type(CProblem), intent(in) :: v + HydraulicChoke1Fail = SetDue(v, ChangeHydraulicChoke1Fail) +#ifdef deb + print*, 'HydraulicChoke1Fail%ProblemType=', HydraulicChoke1Fail%ProblemType + print*, 'HydraulicChoke1Fail%StatusType=', HydraulicChoke1Fail%StatusType + print*, 'HydraulicChoke1Fail%Value=', HydraulicChoke1Fail%Value +#endif + end subroutine + + subroutine SetHydraulicChoke1Washout(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetHydraulicChoke1Washout + !DEC$ ATTRIBUTES ALIAS: 'SetHydraulicChoke1Washout' :: SetHydraulicChoke1Washout + implicit none + type(CProblem), intent(in) :: v + HydraulicChoke1Washout = SetDue(v, ChangeHydraulicChoke1Washout) +#ifdef deb + print*, 'HydraulicChoke1Washout%ProblemType=', HydraulicChoke1Washout%ProblemType + print*, 'HydraulicChoke1Washout%StatusType=', HydraulicChoke1Washout%StatusType + print*, 'HydraulicChoke1Washout%Value=', HydraulicChoke1Washout%Value +#endif + end subroutine + + subroutine SetHydraulicChoke1PluggedPercent(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetHydraulicChoke1PluggedPercent + !DEC$ ATTRIBUTES ALIAS: 'SetHydraulicChoke1PluggedPercent' :: SetHydraulicChoke1PluggedPercent + implicit none + integer, intent(in) :: v + HydraulicChoke1PluggedPercent = v +#ifdef deb + print*, 'HydraulicChoke1PluggedPercent=', HydraulicChoke1PluggedPercent +#endif + end subroutine + + subroutine SetHydraulicChoke2Plugged(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetHydraulicChoke2Plugged + !DEC$ ATTRIBUTES ALIAS: 'SetHydraulicChoke2Plugged' :: SetHydraulicChoke2Plugged + implicit none + type(CProblem), intent(in) :: v + HydraulicChoke2Plugged = SetDue(v, ChangeHydraulicChoke2Plugged) +#ifdef deb + print*, 'HydraulicChoke2Plugged%ProblemType=', HydraulicChoke2Plugged%ProblemType + print*, 'HydraulicChoke2Plugged%StatusType=', HydraulicChoke2Plugged%StatusType + print*, 'HydraulicChoke2Plugged%Value=', HydraulicChoke2Plugged%Value +#endif + end subroutine + + subroutine SetHydraulicChoke2Fail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetHydraulicChoke2Fail + !DEC$ ATTRIBUTES ALIAS: 'SetHydraulicChoke2Fail' :: SetHydraulicChoke2Fail + implicit none + type(CProblem), intent(in) :: v + HydraulicChoke2Fail = SetDue(v, ChangeHydraulicChoke2Fail) +#ifdef deb + print*, 'HydraulicChoke2Fail%ProblemType=', HydraulicChoke2Fail%ProblemType + print*, 'HydraulicChoke2Fail%StatusType=', HydraulicChoke2Fail%StatusType + print*, 'HydraulicChoke2Fail%Value=', HydraulicChoke2Fail%Value +#endif + end subroutine + + subroutine SetHydraulicChoke2Washout(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetHydraulicChoke2Washout + !DEC$ ATTRIBUTES ALIAS: 'SetHydraulicChoke2Washout' :: SetHydraulicChoke2Washout + implicit none + type(CProblem), intent(in) :: v + HydraulicChoke2Washout = SetDue(v, ChangeHydraulicChoke2Washout) +#ifdef deb + print*, 'HydraulicChoke2Washout%ProblemType=', HydraulicChoke2Washout%ProblemType + print*, 'HydraulicChoke2Washout%StatusType=', HydraulicChoke2Washout%StatusType + print*, 'HydraulicChoke2Washout%Value=', HydraulicChoke2Washout%Value +#endif + end subroutine + + subroutine SetHydraulicChoke2PluggedPercent(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetHydraulicChoke2PluggedPercent + !DEC$ ATTRIBUTES ALIAS: 'SetHydraulicChoke2PluggedPercent' :: SetHydraulicChoke2PluggedPercent + implicit none + integer, intent(in) :: v + HydraulicChoke2PluggedPercent = v +#ifdef deb + print*, 'HydraulicChoke2PluggedPercent=', HydraulicChoke2PluggedPercent +#endif + end subroutine + + subroutine SetManualChoke1Plugged(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetManualChoke1Plugged + !DEC$ ATTRIBUTES ALIAS: 'SetManualChoke1Plugged' :: SetManualChoke1Plugged + implicit none + type(CProblem), intent(in) :: v + ManualChoke1Plugged = SetDue(v, ChangeManualChoke1Plugged) +#ifdef deb + print*, 'ManualChoke1Plugged%ProblemType=', ManualChoke1Plugged%ProblemType + print*, 'ManualChoke1Plugged%StatusType=', ManualChoke1Plugged%StatusType + print*, 'ManualChoke1Plugged%Value=', ManualChoke1Plugged%Value +#endif + end subroutine + + subroutine SetManualChoke1Fail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetManualChoke1Fail + !DEC$ ATTRIBUTES ALIAS: 'SetManualChoke1Fail' :: SetManualChoke1Fail + implicit none + type(CProblem), intent(in) :: v + ManualChoke1Fail = SetDue(v, ChangeManualChoke1Fail) +#ifdef deb + print*, 'ManualChoke1Fail%ProblemType=', ManualChoke1Fail%ProblemType + print*, 'ManualChoke1Fail%StatusType=', ManualChoke1Fail%StatusType + print*, 'ManualChoke1Fail%Value=', ManualChoke1Fail%Value +#endif + end subroutine + + subroutine SetManualChoke1Washout(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetManualChoke1Washout + !DEC$ ATTRIBUTES ALIAS: 'SetManualChoke1Washout' :: SetManualChoke1Washout + implicit none + type(CProblem), intent(in) :: v + ManualChoke1Washout = SetDue(v, ChangeManualChoke1Washout) +#ifdef deb + print*, 'ManualChoke1Washout%ProblemType=', ManualChoke1Washout%ProblemType + print*, 'ManualChoke1Washout%StatusType=', ManualChoke1Washout%StatusType + print*, 'ManualChoke1Washout%Value=', ManualChoke1Washout%Value +#endif + end subroutine + + subroutine SetManualChoke1PluggedPercent(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetManualChoke1PluggedPercent + !DEC$ ATTRIBUTES ALIAS: 'SetManualChoke1PluggedPercent' :: SetManualChoke1PluggedPercent + implicit none + integer, intent(in) :: v + ManualChoke1PluggedPercent = v +#ifdef deb + print*, 'ManualChoke1PluggedPercent=', ManualChoke1PluggedPercent +#endif + end subroutine + + subroutine SetManualChoke2Plugged(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetManualChoke2Plugged + !DEC$ ATTRIBUTES ALIAS: 'SetManualChoke2Plugged' :: SetManualChoke2Plugged + implicit none + type(CProblem), intent(in) :: v + ManualChoke2Plugged = SetDue(v, ChangeManualChoke2Plugged) +#ifdef deb + print*, 'ManualChoke2Plugged%ProblemType=', ManualChoke2Plugged%ProblemType + print*, 'ManualChoke2Plugged%StatusType=', ManualChoke2Plugged%StatusType + print*, 'ManualChoke2Plugged%Value=', ManualChoke2Plugged%Value +#endif + end subroutine + + subroutine SetManualChoke2Fail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetManualChoke2Fail + !DEC$ ATTRIBUTES ALIAS: 'SetManualChoke2Fail' :: SetManualChoke2Fail + implicit none + type(CProblem), intent(in) :: v + ManualChoke2Fail = SetDue(v, ChangeManualChoke2Fail) +#ifdef deb + print*, 'ManualChoke2Fail%ProblemType=', ManualChoke2Fail%ProblemType + print*, 'ManualChoke2Fail%StatusType=', ManualChoke2Fail%StatusType + print*, 'ManualChoke2Fail%Value=', ManualChoke2Fail%Value +#endif + end subroutine + + subroutine SetManualChoke2Washout(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetManualChoke2Washout + !DEC$ ATTRIBUTES ALIAS: 'SetManualChoke2Washout' :: SetManualChoke2Washout + implicit none + type(CProblem), intent(in) :: v + ManualChoke2Washout = SetDue(v, ChangeManualChoke2Washout) +#ifdef deb + print*, 'ManualChoke2Washout%ProblemType=', ManualChoke2Washout%ProblemType + print*, 'ManualChoke2Washout%StatusType=', ManualChoke2Washout%StatusType + print*, 'ManualChoke2Washout%Value=', ManualChoke2Washout%Value +#endif + end subroutine + + subroutine SetManualChoke2PluggedPercent(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetManu alChoke2PluggedPercent + !DEC$ ATTRIBUTES ALIAS: 'SetManualChoke2PluggedPercent' :: SetManualChoke2PluggedPercent + implicit none + integer, intent(in) :: v + ManualChoke2PluggedPercent = v +#ifdef deb + print*, 'ManualChoke2PluggedPercent=', ManualChoke2PluggedPercent +#endif + end subroutine + + subroutine SetChokePanelAirFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokePanelAirFail + !DEC$ ATTRIBUTES ALIAS: 'SetChokePanelAirFail' :: SetChokePanelAirFail + implicit none + type(CProblem), intent(in) :: v + ChokePanelAirFail = SetDue(v, ChangeChokePanelAirFail) +#ifdef deb + print*, 'ChokePanelAirFail%ProblemType=', ChokePanelAirFail%ProblemType + print*, 'ChokePanelAirFail%StatusType=', ChokePanelAirFail%StatusType + print*, 'ChokePanelAirFail%Value=', ChokePanelAirFail%Value +#endif + end subroutine + +end module CChokeProblems \ No newline at end of file diff --git a/CSharp/Problems/CChokeProblemsVariables.f90 b/CSharp/Problems/CChokeProblemsVariables.f90 new file mode 100644 index 0000000..72ae275 --- /dev/null +++ b/CSharp/Problems/CChokeProblemsVariables.f90 @@ -0,0 +1,367 @@ +module CChokeProblemsVariables + use CProblemDifinition + + implicit none + public + + ! Input vars + type(CProblem) :: HydraulicChoke1Plugged + type(CProblem) :: HydraulicChoke1Fail + type(CProblem) :: HydraulicChoke1Washout + integer :: HydraulicChoke1PluggedPercent + type(CProblem) :: HydraulicChoke2Plugged + type(CProblem) :: HydraulicChoke2Fail + type(CProblem) :: HydraulicChoke2Washout + integer :: HydraulicChoke2PluggedPercent + type(CProblem) :: ManualChoke1Plugged + type(CProblem) :: ManualChoke1Fail + type(CProblem) :: ManualChoke1Washout + integer :: ManualChoke1PluggedPercent + type(CProblem) :: ManualChoke2Plugged + type(CProblem) :: ManualChoke2Fail + type(CProblem) :: ManualChoke2Washout + integer :: ManualChoke2PluggedPercent + type(CProblem) :: ChokePanelAirFail + + procedure (ActionInteger), pointer :: HydraulicChoke1PluggedPtr + procedure (ActionInteger), pointer :: HydraulicChoke1FailPtr + procedure (ActionInteger), pointer :: HydraulicChoke1WashoutPtr + procedure (ActionInteger), pointer :: HydraulicChoke2PluggedPtr + procedure (ActionInteger), pointer :: HydraulicChoke2FailPtr + procedure (ActionInteger), pointer :: HydraulicChoke2WashoutPtr + procedure (ActionInteger), pointer :: ManualChoke1PluggedPtr + procedure (ActionInteger), pointer :: ManualChoke1FailPtr + procedure (ActionInteger), pointer :: ManualChoke1WashoutPtr + procedure (ActionInteger), pointer :: ManualChoke2PluggedPtr + procedure (ActionInteger), pointer :: ManualChoke2FailPtr + procedure (ActionInteger), pointer :: ManualChoke2WashoutPtr + procedure (ActionInteger), pointer :: ChokePanelAirFailPtr + + contains + + subroutine ProcessChokeProblemsDueTime(time) + implicit none + integer :: time + if(HydraulicChoke1Plugged%ProblemType == Time_ProblemType) call ProcessDueTime(HydraulicChoke1Plugged, ChangeHydraulicChoke1Plugged, time) + if(HydraulicChoke1Fail%ProblemType == Time_ProblemType) call ProcessDueTime(HydraulicChoke1Fail, ChangeHydraulicChoke1Fail, time) + if(HydraulicChoke1Washout%ProblemType == Time_ProblemType) call ProcessDueTime(HydraulicChoke1Washout, ChangeHydraulicChoke1Washout, time) + if(HydraulicChoke2Plugged%ProblemType == Time_ProblemType) call ProcessDueTime(HydraulicChoke2Plugged, ChangeHydraulicChoke2Plugged, time) + if(HydraulicChoke2Fail%ProblemType == Time_ProblemType) call ProcessDueTime(HydraulicChoke2Fail, ChangeHydraulicChoke2Fail, time) + if(HydraulicChoke2Washout%ProblemType == Time_ProblemType) call ProcessDueTime(HydraulicChoke2Washout, ChangeHydraulicChoke2Washout, time) + if(ManualChoke1Plugged%ProblemType == Time_ProblemType) call ProcessDueTime(ManualChoke1Plugged, ChangeManualChoke1Plugged, time) + if(ManualChoke1Fail%ProblemType == Time_ProblemType) call ProcessDueTime(ManualChoke1Fail, ChangeManualChoke1Fail, time) + if(ManualChoke1Washout%ProblemType == Time_ProblemType) call ProcessDueTime(ManualChoke1Washout, ChangeManualChoke1Washout, time) + if(ManualChoke2Plugged%ProblemType == Time_ProblemType) call ProcessDueTime(ManualChoke2Plugged, ChangeManualChoke2Plugged, time) + if(ManualChoke2Fail%ProblemType == Time_ProblemType) call ProcessDueTime(ManualChoke2Fail, ChangeManualChoke2Fail, time) + if(ManualChoke2Washout%ProblemType == Time_ProblemType) call ProcessDueTime(ManualChoke2Washout, ChangeManualChoke2Washout, time) + if(ChokePanelAirFail%ProblemType == Time_ProblemType) call ProcessDueTime(ChokePanelAirFail, ChangeChokePanelAirFail, time) + end subroutine + + subroutine ProcessChokeProblemsDuePumpStrokes(strokes) + implicit none + integer :: strokes + if(HydraulicChoke1Plugged%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(HydraulicChoke1Plugged, ChangeHydraulicChoke1Plugged, strokes) + if(HydraulicChoke1Fail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(HydraulicChoke1Fail, ChangeHydraulicChoke1Fail, strokes) + if(HydraulicChoke1Washout%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(HydraulicChoke1Washout, ChangeHydraulicChoke1Washout, strokes) + if(HydraulicChoke2Plugged%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(HydraulicChoke2Plugged, ChangeHydraulicChoke2Plugged, strokes) + if(HydraulicChoke2Fail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(HydraulicChoke2Fail, ChangeHydraulicChoke2Fail, strokes) + if(HydraulicChoke2Washout%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(HydraulicChoke2Washout, ChangeHydraulicChoke2Washout, strokes) + if(ManualChoke1Plugged%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ManualChoke1Plugged, ChangeManualChoke1Plugged, strokes) + if(ManualChoke1Fail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ManualChoke1Fail, ChangeManualChoke1Fail, strokes) + if(ManualChoke1Washout%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ManualChoke1Washout, ChangeManualChoke1Washout, strokes) + if(ManualChoke2Plugged%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ManualChoke2Plugged, ChangeManualChoke2Plugged, strokes) + if(ManualChoke2Fail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ManualChoke2Fail, ChangeManualChoke2Fail, strokes) + if(ManualChoke2Washout%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ManualChoke2Washout, ChangeManualChoke2Washout, strokes) + if(ChokePanelAirFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ChokePanelAirFail, ChangeChokePanelAirFail, strokes) + end subroutine + + subroutine ProcessChokeProblemsDueVolumePumped(volume) + implicit none + real(8) :: volume + if(HydraulicChoke1Plugged%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(HydraulicChoke1Plugged, ChangeHydraulicChoke1Plugged, volume) + if(HydraulicChoke1Fail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(HydraulicChoke1Fail, ChangeHydraulicChoke1Fail, volume) + if(HydraulicChoke1Washout%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(HydraulicChoke1Washout, ChangeHydraulicChoke1Washout, volume) + if(HydraulicChoke2Plugged%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(HydraulicChoke2Plugged, ChangeHydraulicChoke2Plugged, volume) + if(HydraulicChoke2Fail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(HydraulicChoke2Fail, ChangeHydraulicChoke2Fail, volume) + if(HydraulicChoke2Washout%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(HydraulicChoke2Washout, ChangeHydraulicChoke2Washout, volume) + if(ManualChoke1Plugged%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ManualChoke1Plugged, ChangeManualChoke1Plugged, volume) + if(ManualChoke1Fail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ManualChoke1Fail, ChangeManualChoke1Fail, volume) + if(ManualChoke1Washout%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ManualChoke1Washout, ChangeManualChoke1Washout, volume) + if(ManualChoke2Plugged%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ManualChoke2Plugged, ChangeManualChoke2Plugged, volume) + if(ManualChoke2Fail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ManualChoke2Fail, ChangeManualChoke2Fail, volume) + if(ManualChoke2Washout%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ManualChoke2Washout, ChangeManualChoke2Washout, volume) + if(ChokePanelAirFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ChokePanelAirFail, ChangeChokePanelAirFail, volume) + end subroutine + + subroutine ProcessChokeProblemsDueDistanceDrilled(distance) + implicit none + real(8) :: distance + if(HydraulicChoke1Plugged%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(HydraulicChoke1Plugged, ChangeHydraulicChoke1Plugged, distance) + if(HydraulicChoke1Fail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(HydraulicChoke1Fail, ChangeHydraulicChoke1Fail, distance) + if(HydraulicChoke1Washout%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(HydraulicChoke1Washout, ChangeHydraulicChoke1Washout, distance) + if(HydraulicChoke2Plugged%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(HydraulicChoke2Plugged, ChangeHydraulicChoke2Plugged, distance) + if(HydraulicChoke2Fail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(HydraulicChoke2Fail, ChangeHydraulicChoke2Fail, distance) + if(HydraulicChoke2Washout%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(HydraulicChoke2Washout, ChangeHydraulicChoke2Washout, distance) + if(ManualChoke1Plugged%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ManualChoke1Plugged, ChangeManualChoke1Plugged, distance) + if(ManualChoke1Fail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ManualChoke1Fail, ChangeManualChoke1Fail, distance) + if(ManualChoke1Washout%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ManualChoke1Washout, ChangeManualChoke1Washout, distance) + if(ManualChoke2Plugged%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ManualChoke2Plugged, ChangeManualChoke2Plugged, distance) + if(ManualChoke2Fail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ManualChoke2Fail, ChangeManualChoke2Fail, distance) + if(ManualChoke2Washout%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ManualChoke2Washout, ChangeManualChoke2Washout, distance) + if(ChokePanelAirFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ChokePanelAirFail, ChangeChokePanelAirFail, distance) + end subroutine + + + + + subroutine ChangeHydraulicChoke1Plugged(status) + USE CHOKEVARIABLES + implicit none + integer, intent (in) :: status + if(associated(HydraulicChoke1PluggedPtr)) call HydraulicChoke1PluggedPtr(status) + if(status == Clear_StatusType) CHOOKE(1)%PlugMalf = 0 + if(status == Executed_StatusType) CHOOKE(1)%PlugMalf = 1 + endsubroutine + + subroutine ChangeHydraulicChoke1Fail(status) + USE CHOKEVARIABLES + implicit none + integer, intent (in) :: status + if(associated(HydraulicChoke1FailPtr)) call HydraulicChoke1FailPtr(status) + if(status == Clear_StatusType) CHOOKE(1)%FailMalf = 0 + if(status == Executed_StatusType) CHOOKE(1)%FailMalf = 1 + endsubroutine + + subroutine ChangeHydraulicChoke1Washout(status) + USE CHOKEVARIABLES + use CChokeManifoldVariables + implicit none + integer, intent (in) :: status + if(associated(HydraulicChoke1WashoutPtr)) call HydraulicChoke1WashoutPtr(status) + if(status == Clear_StatusType) CHOOKE(1)%WashoutMalf = 0 + if(status == Executed_StatusType) CHOOKE(1)%WashoutMalf = 1 + + if(status == Clear_StatusType) HyChock1OnProblem = .false. + if(status == Executed_StatusType) HyChock1OnProblem = .true. + endsubroutine + + subroutine ChangeHydraulicChoke2Plugged(status) + USE CHOKEVARIABLES + implicit none + integer, intent (in) :: status + if(associated(HydraulicChoke2PluggedPtr)) call HydraulicChoke2PluggedPtr(status) + if(status == Clear_StatusType) CHOOKE(2)%PlugMalf = 0 + if(status == Executed_StatusType) CHOOKE(2)%PlugMalf = 1 + endsubroutine + + subroutine ChangeHydraulicChoke2Fail(status) + USE CHOKEVARIABLES + implicit none + integer, intent (in) :: status + if(associated(HydraulicChoke2FailPtr)) call HydraulicChoke2FailPtr(status) + if(status == Clear_StatusType) CHOOKE(2)%FailMalf = 0 + if(status == Executed_StatusType) CHOOKE(2)%FailMalf = 1 + endsubroutine + + subroutine ChangeHydraulicChoke2Washout(status) + USE CHOKEVARIABLES + use CChokeManifoldVariables + implicit none + integer, intent (in) :: status + if(associated(HydraulicChoke2WashoutPtr)) call HydraulicChoke2WashoutPtr(status) + if(status == Clear_StatusType) CHOOKE(2)%WashoutMalf = 0 + if(status == Executed_StatusType) CHOOKE(2)%WashoutMalf = 1 + + if(status == Clear_StatusType) HyChock2OnProblem = .false. + if(status == Executed_StatusType) HyChock2OnProblem = .true. + endsubroutine + + subroutine ChangeManualChoke1Plugged(status) + USE FricPressDropVars + implicit none + integer, intent (in) :: status + if(associated(ManualChoke1PluggedPtr)) call ManualChoke1PluggedPtr(status) + if(status == Clear_StatusType) ManChoke1Plug = 0 + if(status == Executed_StatusType) ManChoke1Plug = 1 + endsubroutine + + subroutine ChangeManualChoke1Fail(status) + implicit none + integer, intent (in) :: status + if(associated(ManualChoke1FailPtr)) call ManualChoke1FailPtr(status) + !if(status == Clear_StatusType) print*,'On_ManualChoke1Fail_Clear' + !if(status == Executed_StatusType) print*,'On_ManualChoke1Fail_Execute' + endsubroutine + + subroutine ChangeManualChoke1Washout(status) + USE FricPressDropVars + use CChokeManifoldVariables + implicit none + integer, intent (in) :: status + if(associated(ManualChoke1WashoutPtr)) call ManualChoke1WashoutPtr(status) + if(status == Clear_StatusType) ManChoke1Washout = 0 + if(status == Executed_StatusType) ManChoke1Washout = 1 + + if(status == Clear_StatusType) LeftManChokeOnProblem = .false. + if(status == Executed_StatusType) LeftManChokeOnProblem = .true. + endsubroutine + + subroutine ChangeManualChoke2Plugged(status) + USE FricPressDropVars + implicit none + integer, intent (in) :: status + if(associated(ManualChoke2PluggedPtr)) call ManualChoke2PluggedPtr(status) + if(status == Clear_StatusType) ManChoke2Plug = 0 + if(status == Executed_StatusType) ManChoke2Plug = 1 + endsubroutine + + subroutine ChangeManualChoke2Fail(status) + implicit none + integer, intent (in) :: status + if(associated(ManualChoke2FailPtr)) call ManualChoke2FailPtr(status) + !if(status == Clear_StatusType) print*,'On_ManualChoke2Fail_Clear' + !if(status == Executed_StatusType) print*,'On_ManualChoke2Fail_Execute' + endsubroutine + + subroutine ChangeManualChoke2Washout(status) + USE FricPressDropVars + use CChokeManifoldVariables + implicit none + integer, intent (in) :: status + if(associated(ManualChoke2WashoutPtr)) call ManualChoke2WashoutPtr(status) + if(status == Clear_StatusType) ManChoke2Washout = 0 + if(status == Executed_StatusType) ManChoke2Washout = 1 + + if(status == Clear_StatusType) RightManChokeOnProblem = .false. + if(status == Executed_StatusType) RightManChokeOnProblem = .true. + endsubroutine + + subroutine ChangeChokePanelAirFail(status) + USE CHOKEVARIABLES + implicit none + integer, intent (in) :: status + if(associated(ChokePanelAirFailPtr)) call ChokePanelAirFailPtr(status) + if(status == Clear_StatusType) ChokeAirFail = 0 + if(status == Executed_StatusType) ChokeAirFail = 1 + endsubroutine + + + + + + + + + + + + + + + + + subroutine SubscribeHydraulicChoke1Plugged(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeHydraulicChoke1Plugged + !DEC$ ATTRIBUTES ALIAS: 'SubscribeHydraulicChoke1Plugged' :: SubscribeHydraulicChoke1Plugged + implicit none + procedure (ActionInteger) :: v + HydraulicChoke1PluggedPtr => v + end subroutine + + subroutine SubscribeHydraulicChoke1Fail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeHydraulicChoke1Fail + !DEC$ ATTRIBUTES ALIAS: 'SubscribeHydraulicChoke1Fail' :: SubscribeHydraulicChoke1Fail + implicit none + procedure (ActionInteger) :: v + HydraulicChoke1FailPtr => v + end subroutine + + subroutine SubscribeHydraulicChoke1Washout(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeHydraulicChoke1Washout + !DEC$ ATTRIBUTES ALIAS: 'SubscribeHydraulicChoke1Washout' :: SubscribeHydraulicChoke1Washout + implicit none + procedure (ActionInteger) :: v + HydraulicChoke1WashoutPtr => v + end subroutine + + subroutine SubscribeHydraulicChoke2Plugged(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeHydraulicChoke2Plugged + !DEC$ ATTRIBUTES ALIAS: 'SubscribeHydraulicChoke2Plugged' :: SubscribeHydraulicChoke2Plugged + implicit none + procedure (ActionInteger) :: v + HydraulicChoke2PluggedPtr => v + end subroutine + + subroutine SubscribeHydraulicChoke2Fail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeHydraulicChoke2Fail + !DEC$ ATTRIBUTES ALIAS: 'SubscribeHydraulicChoke2Fail' :: SubscribeHydraulicChoke2Fail + implicit none + procedure (ActionInteger) :: v + HydraulicChoke2FailPtr => v + end subroutine + + subroutine SubscribeHydraulicChoke2Washout(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeHydraulicChoke2Washout + !DEC$ ATTRIBUTES ALIAS: 'SubscribeHydraulicChoke2Washout' :: SubscribeHydraulicChoke2Washout + implicit none + procedure (ActionInteger) :: v + HydraulicChoke2WashoutPtr => v + end subroutine + + subroutine SubscribeManualChoke1Plugged(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeManualChoke1Plugged + !DEC$ ATTRIBUTES ALIAS: 'SubscribeManualChoke1Plugged' :: SubscribeManualChoke1Plugged + implicit none + procedure (ActionInteger) :: v + ManualChoke1PluggedPtr => v + end subroutine + + subroutine SubscribeManualChoke1Fail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeManualChoke1Fail + !DEC$ ATTRIBUTES ALIAS: 'SubscribeManualChoke1Fail' :: SubscribeManualChoke1Fail + implicit none + procedure (ActionInteger) :: v + ManualChoke1FailPtr => v + end subroutine + + subroutine SubscribeManualChoke1Washout(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeManualChoke1Washout + !DEC$ ATTRIBUTES ALIAS: 'SubscribeManualChoke1Washout' :: SubscribeManualChoke1Washout + implicit none + procedure (ActionInteger) :: v + ManualChoke1WashoutPtr => v + end subroutine + + subroutine SubscribeManualChoke2Plugged(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeManualChoke2Plugged + !DEC$ ATTRIBUTES ALIAS: 'SubscribeManualChoke2Plugged' :: SubscribeManualChoke2Plugged + implicit none + procedure (ActionInteger) :: v + ManualChoke2PluggedPtr => v + end subroutine + + subroutine SubscribeManualChoke2Fail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeManualChoke2Fail + !DEC$ ATTRIBUTES ALIAS: 'SubscribeManualChoke2Fail' :: SubscribeManualChoke2Fail + implicit none + procedure (ActionInteger) :: v + ManualChoke2FailPtr => v + end subroutine + + subroutine SubscribeManualChoke2Washout(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeManualChoke2Washout + !DEC$ ATTRIBUTES ALIAS: 'SubscribeManualChoke2Washout' :: SubscribeManualChoke2Washout + implicit none + procedure (ActionInteger) :: v + ManualChoke2WashoutPtr => v + end subroutine + + subroutine SubscribeChokePanelAirFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeChokePanelAirFail + !DEC$ ATTRIBUTES ALIAS: 'SubscribeChokePanelAirFail' :: SubscribeChokePanelAirFail + implicit none + procedure (ActionInteger) :: v + ChokePanelAirFailPtr => v + end subroutine + +end module CChokeProblemsVariables \ No newline at end of file diff --git a/CSharp/Problems/CDrillStemProblems.f90 b/CSharp/Problems/CDrillStemProblems.f90 new file mode 100644 index 0000000..c6aa4ff --- /dev/null +++ b/CSharp/Problems/CDrillStemProblems.f90 @@ -0,0 +1,69 @@ +module CDrillStemProblems + use CDrillStemProblemsVariables + implicit none + public + contains + + ! Input routines + subroutine SetStringDragIncrease(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStringDragIncrease + !DEC$ ATTRIBUTES ALIAS: 'SetStringDragIncrease' :: SetStringDragIncrease + implicit none + type(CProblem), intent(in) :: v + StringDragIncrease = SetDue(v, ChangeStringDragIncrease) +#ifdef deb + print*, 'StringDragIncrease%ProblemType=', StringDragIncrease%ProblemType + print*, 'StringDragIncrease%StatusType=', StringDragIncrease%StatusType + print*, 'StringDragIncrease%Value=', StringDragIncrease%Value +#endif + end subroutine + + subroutine SetStringTorqueIncrease(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStringTorqueIncrease + !DEC$ ATTRIBUTES ALIAS: 'SetStringTorqueIncrease' :: SetStringTorqueIncrease + implicit none + type(CProblem), intent(in) :: v + StringTorqueIncrease = SetDue(v, ChangeStringTorqueIncrease) +#ifdef deb + print*, 'StringTorqueIncrease%ProblemType=', StringTorqueIncrease%ProblemType + print*, 'StringTorqueIncrease%StatusType=', StringTorqueIncrease%StatusType + print*, 'StringTorqueIncrease%Value=', StringTorqueIncrease%Value +#endif + end subroutine + + subroutine SetStringTorqueFluctuation(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStringTorqueFluctuation + !DEC$ ATTRIBUTES ALIAS: 'SetStringTorqueFluctuation' :: SetStringTorqueFluctuation + implicit none + type(CProblem), intent(in) :: v + StringTorqueFluctuation = SetDue(v, ChangeStringTorqueFluctuation) +#ifdef deb + print*, 'StringTorqueFluctuation%ProblemType=', StringTorqueFluctuation%ProblemType + print*, 'StringTorqueFluctuation%StatusType=', StringTorqueFluctuation%StatusType + print*, 'StringTorqueFluctuation%Value=', StringTorqueFluctuation%Value +#endif + end subroutine + + subroutine SetStringDragIncreaseTime(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStringDragIncreaseTime + !DEC$ ATTRIBUTES ALIAS: 'SetStringDragIncreaseTime' :: SetStringDragIncreaseTime + implicit none + real(8), intent(in) :: v + StringDragIncreaseTime = v +#ifdef deb + print*, 'StringDragIncreaseTime=', StringDragIncreaseTime +#endif + end subroutine + + subroutine SetStringTorqueIncreaseTime(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStringTorqueIncreaseTime + !DEC$ ATTRIBUTES ALIAS: 'SetStringTorqueIncreaseTime' :: SetStringTorqueIncreaseTime + implicit none + real(8), intent(in) :: v + StringTorqueIncreaseTime = v +#ifdef deb + print*, 'StringTorqueIncreaseTime=', StringTorqueIncreaseTime +#endif + end subroutine + +end module CDrillStemProblems \ No newline at end of file diff --git a/CSharp/Problems/CDrillStemProblemsVariables.f90 b/CSharp/Problems/CDrillStemProblemsVariables.f90 new file mode 100644 index 0000000..9c2cb1c --- /dev/null +++ b/CSharp/Problems/CDrillStemProblemsVariables.f90 @@ -0,0 +1,113 @@ +module CDrillStemProblemsVariables + use CProblemDifinition + implicit none + public + + ! Input vars + type(CProblem) :: StringDragIncrease + type(CProblem) :: StringTorqueIncrease + type(CProblem) :: StringTorqueFluctuation + real(8) :: StringDragIncreaseTime + real(8) :: StringTorqueIncreaseTime + + + procedure (ActionInteger), pointer :: StringDragIncreasePtr + procedure (ActionInteger), pointer :: StringTorqueIncreasePtr + procedure (ActionInteger), pointer :: StringTorqueFluctuationPtr + + contains + + subroutine ProcessDrillStemProblemsDueTime(time) + implicit none + integer :: time + if(StringDragIncrease%ProblemType == Time_ProblemType) call ProcessDueTime(StringDragIncrease, ChangeStringDragIncrease, time) + if(StringTorqueIncrease%ProblemType == Time_ProblemType) call ProcessDueTime(StringTorqueIncrease, ChangeStringTorqueIncrease, time) + if(StringTorqueFluctuation%ProblemType == Time_ProblemType) call ProcessDueTime(StringTorqueFluctuation, ChangeStringTorqueFluctuation, time) + end subroutine + + subroutine ProcessDrillStemProblemsDuePumpStrokes(strokes) + implicit none + integer :: strokes + if(StringDragIncrease%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(StringDragIncrease, ChangeStringDragIncrease, strokes) + if(StringTorqueIncrease%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(StringTorqueIncrease, ChangeStringTorqueIncrease, strokes) + if(StringTorqueFluctuation%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(StringTorqueFluctuation, ChangeStringTorqueFluctuation, strokes) + end subroutine + + subroutine ProcessDrillStemProblemsDueVolumePumped(volume) + implicit none + real(8) :: volume + if(StringDragIncrease%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(StringDragIncrease, ChangeStringDragIncrease, volume) + if(StringTorqueIncrease%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(StringTorqueIncrease, ChangeStringTorqueIncrease, volume) + if(StringTorqueFluctuation%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(StringTorqueFluctuation, ChangeStringTorqueFluctuation, volume) + end subroutine + + subroutine ProcessDrillStemProblemsDueDistanceDrilled(distance) + implicit none + real(8) :: distance + if(StringDragIncrease%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(StringDragIncrease, ChangeStringDragIncrease, distance) + if(StringTorqueIncrease%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(StringTorqueIncrease, ChangeStringTorqueIncrease, distance) + if(StringTorqueFluctuation%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(StringTorqueFluctuation, ChangeStringTorqueFluctuation, distance) + end subroutine + + + + subroutine ChangeStringDragIncrease(status) + implicit none + integer, intent (in) :: status + if(associated(StringDragIncreasePtr)) call StringDragIncreasePtr(status) + !if(status == Clear_StatusType) print*,'On_StringDragIncrease_Clear' + !if(status == Executed_StatusType) print*,'On_StringDragIncrease_Execute' + endsubroutine + + subroutine ChangeStringTorqueIncrease(status) + implicit none + integer, intent (in) :: status + if(associated(StringTorqueIncreasePtr)) call StringTorqueIncreasePtr(status) + !if(status == Clear_StatusType) print*,'On_StringTorqueIncrease_Clear' + !if(status == Executed_StatusType) print*,'On_StringTorqueIncrease_Execute' + endsubroutine + + subroutine ChangeStringTorqueFluctuation(status) + implicit none + integer, intent (in) :: status + if(associated(StringTorqueFluctuationPtr)) call StringTorqueFluctuationPtr(status) + !if(status == Clear_StatusType) print*,'On_StringTorqueFluctuation_Clear' + !if(status == Executed_StatusType) print*,'On_StringTorqueFluctuation_Execute' + endsubroutine + + + + + + + + + + subroutine SubscribeStringDragIncrease(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeStringDragIncrease + !DEC$ ATTRIBUTES ALIAS: 'SubscribeStringDragIncrease' :: SubscribeStringDragIncrease + implicit none + procedure (ActionInteger) :: v + StringDragIncreasePtr => v + end subroutine + + subroutine SubscribeStringTorqueIncrease(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeStringTorqueIncrease + !DEC$ ATTRIBUTES ALIAS: 'SubscribeStringTorqueIncrease' :: SubscribeStringTorqueIncrease + implicit none + procedure (ActionInteger) :: v + StringTorqueIncreasePtr => v + end subroutine + + subroutine SubscribeStringTorqueFluctuation(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeStringTorqueFluctuation + !DEC$ ATTRIBUTES ALIAS: 'SubscribeStringTorqueFluctuation' :: SubscribeStringTorqueFluctuation + implicit none + procedure (ActionInteger) :: v + StringTorqueFluctuationPtr => v + end subroutine + + + + +end module CDrillStemProblemsVariables \ No newline at end of file diff --git a/CSharp/Problems/CGaugesProblems.f90 b/CSharp/Problems/CGaugesProblems.f90 new file mode 100644 index 0000000..30bd0d8 --- /dev/null +++ b/CSharp/Problems/CGaugesProblems.f90 @@ -0,0 +1,307 @@ +module CGaugesProblems + use CGaugesProblemsVariables + implicit none + public + contains + + ! Input routines + subroutine SetWeightIndicator(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetWeightIndicator + !DEC$ ATTRIBUTES ALIAS: 'SetWeightIndicator' :: SetWeightIndicator + implicit none + type(CProblem), intent(in) :: v + WeightIndicator = SetDue(v, ChangeWeightIndicator) +#ifdef deb + print*, 'WeightIndicator%ProblemType=', WeightIndicator%ProblemType + print*, 'WeightIndicator%StatusType=', WeightIndicator%StatusType + print*, 'WeightIndicator%Value=', WeightIndicator%Value +#endif + end subroutine + + subroutine SetRotaryRpm(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRotaryRpm + !DEC$ ATTRIBUTES ALIAS: 'SetRotaryRpm' :: SetRotaryRpm + implicit none + type(CProblem), intent(in) :: v + RotaryRpm = SetDue(v, ChangeRotaryRpm) +#ifdef deb + print*, 'RotaryRpm%ProblemType=', RotaryRpm%ProblemType + print*, 'RotaryRpm%StatusType=', RotaryRpm%StatusType + print*, 'RotaryRpm%Value=', RotaryRpm%Value +#endif + end subroutine + + subroutine SetRotaryTorque(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRotaryTorque + !DEC$ ATTRIBUTES ALIAS: 'SetRotaryTorque' :: SetRotaryTorque + implicit none + type(CProblem), intent(in) :: v + RotaryTorque = SetDue(v, ChangeRotaryTorque) +#ifdef deb + print*, 'RotaryTorque%ProblemType=', RotaryTorque%ProblemType + print*, 'RotaryTorque%StatusType=', RotaryTorque%StatusType + print*, 'RotaryTorque%Value=', RotaryTorque%Value +#endif + end subroutine + + subroutine SetStandPipePressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipePressure + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipePressure' :: SetStandPipePressure + implicit none + type(CProblem), intent(in) :: v + StandPipePressure = SetDue(v, ChangeStandPipePressure) +#ifdef deb + print*, 'StandPipePressure%ProblemType=', StandPipePressure%ProblemType + print*, 'StandPipePressure%StatusType=', StandPipePressure%StatusType + print*, 'StandPipePressure%Value=', StandPipePressure%Value +#endif + end subroutine + + subroutine SetCasingPressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCasingPressure + !DEC$ ATTRIBUTES ALIAS: 'SetCasingPressure' :: SetCasingPressure + implicit none + type(CProblem), intent(in) :: v + CasingPressure = SetDue(v, ChangeCasingPressure) +#ifdef deb + print*, 'CasingPressure%ProblemType=', CasingPressure%ProblemType + print*, 'CasingPressure%StatusType=', CasingPressure%StatusType + print*, 'CasingPressure%Value=', CasingPressure%Value +#endif + end subroutine + + subroutine SetPump1Strokes(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPump1Strokes + !DEC$ ATTRIBUTES ALIAS: 'SetPump1Strokes' :: SetPump1Strokes + implicit none + type(CProblem), intent(in) :: v + Pump1Strokes = SetDue(v, ChangePump1Strokes) +#ifdef deb + print*, 'Pump1Strokes%ProblemType=', Pump1Strokes%ProblemType + print*, 'Pump1Strokes%StatusType=', Pump1Strokes%StatusType + print*, 'Pump1Strokes%Value=', Pump1Strokes%Value +#endif + end subroutine + + subroutine SetPump2Strokes(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPump2Strokes + !DEC$ ATTRIBUTES ALIAS: 'SetPump2Strokes' :: SetPump2Strokes + implicit none + type(CProblem), intent(in) :: v + Pump2Strokes = SetDue(v, ChangePump2Strokes) +#ifdef deb + print*, 'Pump2Strokes%ProblemType=', Pump2Strokes%ProblemType + print*, 'Pump2Strokes%StatusType=', Pump2Strokes%StatusType + print*, 'Pump2Strokes%Value=', Pump2Strokes%Value +#endif + end subroutine + + subroutine SetReturnLineTemperature(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetReturnLineTemperature + !DEC$ ATTRIBUTES ALIAS: 'SetReturnLineTemperature' :: SetReturnLineTemperature + implicit none + type(CProblem), intent(in) :: v + ReturnLineTemperature = SetDue(v, ChangeReturnLineTemperature) +#ifdef deb + print*, 'ReturnLineTemperature%ProblemType=', ReturnLineTemperature%ProblemType + print*, 'ReturnLineTemperature%StatusType=', ReturnLineTemperature%StatusType + print*, 'ReturnLineTemperature%Value=', ReturnLineTemperature%Value +#endif + end subroutine + + subroutine SetTripTank(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTripTank + !DEC$ ATTRIBUTES ALIAS: 'SetTripTank' :: SetTripTank + implicit none + type(CProblem), intent(in) :: v + TripTank = SetDue(v, ChangeTripTank) +#ifdef deb + print*, 'TripTank%ProblemType=', TripTank%ProblemType + print*, 'TripTank%StatusType=', TripTank%StatusType + print*, 'TripTank%Value=', TripTank%Value +#endif + end subroutine + + subroutine SetPitGainLoss(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPitGainLoss + !DEC$ ATTRIBUTES ALIAS: 'SetPitGainLoss' :: SetPitGainLoss + implicit none + type(CProblem), intent(in) :: v + PitGainLoss = SetDue(v, ChangePitGainLoss) +#ifdef deb + print*, 'PitGainLoss%ProblemType=', PitGainLoss%ProblemType + print*, 'PitGainLoss%StatusType=', PitGainLoss%StatusType + print*, 'PitGainLoss%Value=', PitGainLoss%Value +#endif + end subroutine + + subroutine SetMudTankVolume(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMudTankVolume + !DEC$ ATTRIBUTES ALIAS: 'SetMudTankVolume' :: SetMudTankVolume + implicit none + type(CProblem), intent(in) :: v + MudTankVolume = SetDue(v, ChangeMudTankVolume) +#ifdef deb + print*, 'MudTankVolume%ProblemType=', MudTankVolume%ProblemType + print*, 'MudTankVolume%StatusType=', MudTankVolume%StatusType + print*, 'MudTankVolume%Value=', MudTankVolume%Value +#endif + end subroutine + + subroutine SetReturnMudFlow(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetReturnMudFlow + !DEC$ ATTRIBUTES ALIAS: 'SetReturnMudFlow' :: SetReturnMudFlow + implicit none + type(CProblem), intent(in) :: v + ReturnMudFlow = SetDue(v, ChangeReturnMudFlow) +#ifdef deb + print*, 'ReturnMudFlow%ProblemType=', ReturnMudFlow%ProblemType + print*, 'ReturnMudFlow%StatusType=', ReturnMudFlow%StatusType + print*, 'ReturnMudFlow%Value=', ReturnMudFlow%Value +#endif + end subroutine + + subroutine SetTorqueLimit(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTorqueLimit + !DEC$ ATTRIBUTES ALIAS: 'SetTorqueLimit' :: SetTorqueLimit + implicit none + type(CProblem), intent(in) :: v + TorqueLimit = SetDue(v, ChangeTorqueLimit) +#ifdef deb + print*, 'TorqueLimit%ProblemType=', TorqueLimit%ProblemType + print*, 'TorqueLimit%StatusType=', TorqueLimit%StatusType + print*, 'TorqueLimit%Value=', TorqueLimit%Value +#endif + end subroutine + + subroutine SetPowerLimit(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPowerLimit + !DEC$ ATTRIBUTES ALIAS: 'SetPowerLimit' :: SetPowerLimit + implicit none + type(CProblem), intent(in) :: v + PowerLimit = SetDue(v, ChangePowerLimit) +#ifdef deb + print*, 'PowerLimit%ProblemType=', PowerLimit%ProblemType + print*, 'PowerLimit%StatusType=', PowerLimit%StatusType + print*, 'PowerLimit%Value=', PowerLimit%Value +#endif + end subroutine + + subroutine SetAccumulatorPressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAccumulatorPressure + !DEC$ ATTRIBUTES ALIAS: 'SetAccumulatorPressure' :: SetAccumulatorPressure + implicit none + type(CProblem), intent(in) :: v + AccumulatorPressure = SetDue(v, ChangeAccumulatorPressure) +#ifdef deb + print*, 'AccumulatorPressure%ProblemType=', AccumulatorPressure%ProblemType + print*, 'AccumulatorPressure%StatusType=', AccumulatorPressure%StatusType + print*, 'AccumulatorPressure%Value=', AccumulatorPressure%Value +#endif + end subroutine + + subroutine SetManifoldPressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetManifoldPressure + !DEC$ ATTRIBUTES ALIAS: 'SetManifoldPressure' :: SetManifoldPressure + implicit none + type(CProblem), intent(in) :: v + ManifoldPressure = SetDue(v, ChangeManifoldPressure) +#ifdef deb + print*, 'ManifoldPressure%ProblemType=', ManifoldPressure%ProblemType + print*, 'ManifoldPressure%StatusType=', ManifoldPressure%StatusType + print*, 'ManifoldPressure%Value=', ManifoldPressure%Value +#endif + end subroutine + + subroutine SetAnnularPressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAnnularPressure + !DEC$ ATTRIBUTES ALIAS: 'SetAnnularPressure' :: SetAnnularPressure + implicit none + type(CProblem), intent(in) :: v + AnnularPressure = SetDue(v, ChangeAnnularPressure) +#ifdef deb + print*, 'AnnularPressure%ProblemType=', AnnularPressure%ProblemType + print*, 'AnnularPressure%StatusType=', AnnularPressure%StatusType + print*, 'AnnularPressure%Value=', AnnularPressure%Value +#endif + end subroutine + + subroutine SetRigAirPressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRigAirPressure + !DEC$ ATTRIBUTES ALIAS: 'SetRigAirPressure' :: SetRigAirPressure + implicit none + type(CProblem), intent(in) :: v + RigAirPressure = SetDue(v, ChangeRigAirPressure) +#ifdef deb + print*, 'RigAirPressure%ProblemType=', RigAirPressure%ProblemType + print*, 'RigAirPressure%StatusType=', RigAirPressure%StatusType + print*, 'RigAirPressure%Value=', RigAirPressure%Value +#endif + end subroutine + + subroutine SetStandPipe1(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipe1 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipe1' :: SetStandPipe1 + implicit none + type(CProblem), intent(in) :: v + StandPipe1 = SetDue(v, ChangeStandPipe1) +#ifdef deb + print*, 'StandPipe1%ProblemType=', StandPipe1%ProblemType + print*, 'StandPipe1%StatusType=', StandPipe1%StatusType + print*, 'StandPipe1%Value=', StandPipe1%Value +#endif + end subroutine + + subroutine SetStandPipe2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetStandPipe2 + !DEC$ ATTRIBUTES ALIAS: 'SetStandPipe2' :: SetStandPipe2 + implicit none + type(CProblem), intent(in) :: v + StandPipe2 = SetDue(v, ChangeStandPipe2) +#ifdef deb + print*, 'StandPipe2%ProblemType=', StandPipe2%ProblemType + print*, 'StandPipe2%StatusType=', StandPipe2%StatusType + print*, 'StandPipe2%Value=', StandPipe2%Value +#endif + end subroutine + + subroutine SetDrillPipePressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetDrillPipePressure + !DEC$ ATTRIBUTES ALIAS: 'SetDrillPipePressure' :: SetDrillPipePressure + implicit none + type(CProblem), intent(in) :: v + DrillPipePressure = SetDue(v, ChangeDrillPipePressure) +#ifdef deb + print*, 'DrillPipePressure%ProblemType=', DrillPipePressure%ProblemType + print*, 'DrillPipePressure%StatusType=', DrillPipePressure%StatusType + print*, 'DrillPipePressure%Value=', DrillPipePressure%Value +#endif + end subroutine + + subroutine SetChokePosition(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetChokePosition + !DEC$ ATTRIBUTES ALIAS: 'SetChokePosition' :: SetChokePosition + implicit none + type(CProblem), intent(in) :: v + ChokePosition = SetDue(v, ChangeChokePosition) +#ifdef deb + print*, 'ChokePosition%ProblemType=', ChokePosition%ProblemType + print*, 'ChokePosition%StatusType=', ChokePosition%StatusType + print*, 'ChokePosition%Value=', ChokePosition%Value +#endif + end subroutine + + subroutine SetCasingPressure2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCasingPressure2 + !DEC$ ATTRIBUTES ALIAS: 'SetCasingPressure2' :: SetCasingPressure2 + implicit none + type(CProblem), intent(in) :: v + CasingPressure2 = SetDue(v, ChangeCasingPressure2) +#ifdef deb + print*, 'CasingPressure2%ProblemType=', CasingPressure2%ProblemType + print*, 'CasingPressure2%StatusType=', CasingPressure2%StatusType + print*, 'CasingPressure2%Value=', CasingPressure2%Value +#endif + end subroutine + +end module CGaugesProblems \ No newline at end of file diff --git a/CSharp/Problems/CGaugesProblemsVariables.f90 b/CSharp/Problems/CGaugesProblemsVariables.f90 new file mode 100644 index 0000000..43723c6 --- /dev/null +++ b/CSharp/Problems/CGaugesProblemsVariables.f90 @@ -0,0 +1,585 @@ +module CGaugesProblemsVariables + use CProblemDifinition + implicit none + public + + type(CProblem) :: WeightIndicator + type(CProblem) :: RotaryRpm + type(CProblem) :: RotaryTorque + type(CProblem) :: StandPipePressure + type(CProblem) :: CasingPressure + type(CProblem) :: Pump1Strokes + type(CProblem) :: Pump2Strokes + type(CProblem) :: ReturnLineTemperature + type(CProblem) :: TripTank + type(CProblem) :: PitGainLoss + type(CProblem) :: MudTankVolume + type(CProblem) :: ReturnMudFlow + type(CProblem) :: TorqueLimit + type(CProblem) :: PowerLimit + type(CProblem) :: AccumulatorPressure + type(CProblem) :: ManifoldPressure + type(CProblem) :: AnnularPressure + type(CProblem) :: RigAirPressure + type(CProblem) :: StandPipe1 + type(CProblem) :: StandPipe2 + type(CProblem) :: DrillPipePressure + type(CProblem) :: ChokePosition + type(CProblem) :: CasingPressure2 + + + + + procedure (ActionInteger), pointer :: WeightIndicatorPtr + procedure (ActionInteger), pointer :: RotaryRpmPtr + procedure (ActionInteger), pointer :: RotaryTorquePtr + procedure (ActionInteger), pointer :: StandPipePressurePtr + procedure (ActionInteger), pointer :: CasingPressurePtr + procedure (ActionInteger), pointer :: Pump1StrokesPtr + procedure (ActionInteger), pointer :: Pump2StrokesPtr + procedure (ActionInteger), pointer :: ReturnLineTemperaturePtr + procedure (ActionInteger), pointer :: TripTankPtr + procedure (ActionInteger), pointer :: PitGainLossPtr + procedure (ActionInteger), pointer :: MudTankVolumePtr + procedure (ActionInteger), pointer :: ReturnMudFlowPtr + procedure (ActionInteger), pointer :: TorqueLimitPtr + procedure (ActionInteger), pointer :: PowerLimitPtr + procedure (ActionInteger), pointer :: AccumulatorPressurePtr + procedure (ActionInteger), pointer :: ManifoldPressurePtr + procedure (ActionInteger), pointer :: AnnularPressurePtr + procedure (ActionInteger), pointer :: RigAirPressurePtr + procedure (ActionInteger), pointer :: StandPipe1Ptr + procedure (ActionInteger), pointer :: StandPipe2Ptr + procedure (ActionInteger), pointer :: DrillPipePressurePtr + procedure (ActionInteger), pointer :: ChokePositionPtr + procedure (ActionInteger), pointer :: CasingPressure2Ptr + + + contains + + subroutine ProcessGaugesProblemsDueTime(time) + implicit none + integer :: time + if(WeightIndicator%ProblemType == Time_ProblemType) call ProcessDueTime(WeightIndicator, ChangeWeightIndicator, time) + if(RotaryRpm%ProblemType == Time_ProblemType) call ProcessDueTime(RotaryRpm, ChangeRotaryRpm, time) + if(RotaryTorque%ProblemType == Time_ProblemType) call ProcessDueTime(RotaryTorque, ChangeRotaryTorque, time) + if(StandPipePressure%ProblemType == Time_ProblemType) call ProcessDueTime(StandPipePressure, ChangeStandPipePressure, time) + if(CasingPressure%ProblemType == Time_ProblemType) call ProcessDueTime(CasingPressure, ChangeCasingPressure, time) + if(Pump1Strokes%ProblemType == Time_ProblemType) call ProcessDueTime(Pump1Strokes, ChangePump1Strokes, time) + if(Pump2Strokes%ProblemType == Time_ProblemType) call ProcessDueTime(Pump2Strokes, ChangePump2Strokes, time) + if(ReturnLineTemperature%ProblemType == Time_ProblemType) call ProcessDueTime(ReturnLineTemperature, ChangeReturnLineTemperature, time) + if(TripTank%ProblemType == Time_ProblemType) call ProcessDueTime(TripTank, ChangeTripTank, time) + if(PitGainLoss%ProblemType == Time_ProblemType) call ProcessDueTime(PitGainLoss, ChangePitGainLoss, time) + if(MudTankVolume%ProblemType == Time_ProblemType) call ProcessDueTime(MudTankVolume, ChangeMudTankVolume, time) + if(ReturnMudFlow%ProblemType == Time_ProblemType) call ProcessDueTime(ReturnMudFlow, ChangeReturnMudFlow, time) + if(TorqueLimit%ProblemType == Time_ProblemType) call ProcessDueTime(TorqueLimit, ChangeTorqueLimit, time) + if(PowerLimit%ProblemType == Time_ProblemType) call ProcessDueTime(PowerLimit, ChangePowerLimit, time) + if(AccumulatorPressure%ProblemType == Time_ProblemType) call ProcessDueTime(AccumulatorPressure, ChangeAccumulatorPressure, time) + if(ManifoldPressure%ProblemType == Time_ProblemType) call ProcessDueTime(ManifoldPressure, ChangeManifoldPressure, time) + if(AnnularPressure%ProblemType == Time_ProblemType) call ProcessDueTime(AnnularPressure, ChangeAnnularPressure, time) + if(RigAirPressure%ProblemType == Time_ProblemType) call ProcessDueTime(RigAirPressure, ChangeRigAirPressure, time) + if(StandPipe1%ProblemType == Time_ProblemType) call ProcessDueTime(StandPipe1, ChangeStandPipe1, time) + if(StandPipe2%ProblemType == Time_ProblemType) call ProcessDueTime(StandPipe2, ChangeStandPipe2, time) + if(DrillPipePressure%ProblemType == Time_ProblemType) call ProcessDueTime(DrillPipePressure, ChangeDrillPipePressure, time) + if(ChokePosition%ProblemType == Time_ProblemType) call ProcessDueTime(ChokePosition, ChangeChokePosition, time) + if(CasingPressure2%ProblemType == Time_ProblemType) call ProcessDueTime(CasingPressure2, ChangeCasingPressure2, time) + end subroutine + + subroutine ProcessGaugesProblemsDuePumpStrokes(strokes) + implicit none + integer :: strokes + if(WeightIndicator%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(WeightIndicator, ChangeWeightIndicator, strokes) + if(RotaryRpm%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(RotaryRpm, ChangeRotaryRpm, strokes) + if(RotaryTorque%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(RotaryTorque, ChangeRotaryTorque, strokes) + if(StandPipePressure%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(StandPipePressure, ChangeStandPipePressure, strokes) + if(CasingPressure%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(CasingPressure, ChangeCasingPressure, strokes) + if(Pump1Strokes%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Pump1Strokes, ChangePump1Strokes, strokes) + if(Pump2Strokes%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Pump2Strokes, ChangePump2Strokes, strokes) + if(ReturnLineTemperature%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ReturnLineTemperature, ChangeReturnLineTemperature, strokes) + if(TripTank%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(TripTank, ChangeTripTank, strokes) + if(PitGainLoss%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(PitGainLoss, ChangePitGainLoss, strokes) + if(MudTankVolume%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(MudTankVolume, ChangeMudTankVolume, strokes) + if(ReturnMudFlow%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ReturnMudFlow, ChangeReturnMudFlow, strokes) + if(TorqueLimit%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(TorqueLimit, ChangeTorqueLimit, strokes) + if(PowerLimit%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(PowerLimit, ChangePowerLimit, strokes) + if(AccumulatorPressure%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AccumulatorPressure, ChangeAccumulatorPressure, strokes) + if(ManifoldPressure%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ManifoldPressure, ChangeManifoldPressure, strokes) + if(AnnularPressure%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(AnnularPressure, ChangeAnnularPressure, strokes) + if(RigAirPressure%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(RigAirPressure, ChangeRigAirPressure, strokes) + if(StandPipe1%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(StandPipe1, ChangeStandPipe1, strokes) + if(StandPipe2%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(StandPipe2, ChangeStandPipe2, strokes) + if(DrillPipePressure%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(DrillPipePressure, ChangeDrillPipePressure, strokes) + if(ChokePosition%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ChokePosition, ChangeChokePosition, strokes) + if(CasingPressure2%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(CasingPressure2, ChangeCasingPressure2, strokes) + end subroutine + + subroutine ProcessGaugesProblemsDueVolumePumped(volume) + implicit none + real(8) :: volume + if(WeightIndicator%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(WeightIndicator, ChangeWeightIndicator, volume) + if(RotaryRpm%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(RotaryRpm, ChangeRotaryRpm, volume) + if(RotaryTorque%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(RotaryTorque, ChangeRotaryTorque, volume) + if(StandPipePressure%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(StandPipePressure, ChangeStandPipePressure, volume) + if(CasingPressure%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(CasingPressure, ChangeCasingPressure, volume) + if(Pump1Strokes%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Pump1Strokes, ChangePump1Strokes, volume) + if(Pump2Strokes%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Pump2Strokes, ChangePump2Strokes, volume) + if(ReturnLineTemperature%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ReturnLineTemperature, ChangeReturnLineTemperature, volume) + if(TripTank%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(TripTank, ChangeTripTank, volume) + if(PitGainLoss%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(PitGainLoss, ChangePitGainLoss, volume) + if(MudTankVolume%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(MudTankVolume, ChangeMudTankVolume, volume) + if(ReturnMudFlow%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ReturnMudFlow, ChangeReturnMudFlow, volume) + if(TorqueLimit%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(TorqueLimit, ChangeTorqueLimit, volume) + if(PowerLimit%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(PowerLimit, ChangePowerLimit, volume) + if(AccumulatorPressure%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AccumulatorPressure, ChangeAccumulatorPressure, volume) + if(ManifoldPressure%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ManifoldPressure, ChangeManifoldPressure, volume) + if(AnnularPressure%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(AnnularPressure, ChangeAnnularPressure, volume) + if(RigAirPressure%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(RigAirPressure, ChangeRigAirPressure, volume) + if(StandPipe1%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(StandPipe1, ChangeStandPipe1, volume) + if(StandPipe2%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(StandPipe2, ChangeStandPipe2, volume) + if(DrillPipePressure%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(DrillPipePressure, ChangeDrillPipePressure, volume) + if(ChokePosition%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ChokePosition, ChangeChokePosition, volume) + if(CasingPressure2%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(CasingPressure2, ChangeCasingPressure2, volume) + end subroutine + + subroutine ProcessGaugesProblemsDueDistanceDrilled(distance) + implicit none + real(8) :: distance + if(WeightIndicator%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(WeightIndicator, ChangeWeightIndicator, distance) + if(RotaryRpm%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(RotaryRpm, ChangeRotaryRpm, distance) + if(RotaryTorque%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(RotaryTorque, ChangeRotaryTorque, distance) + if(StandPipePressure%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(StandPipePressure, ChangeStandPipePressure, distance) + if(CasingPressure%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(CasingPressure, ChangeCasingPressure, distance) + if(Pump1Strokes%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Pump1Strokes, ChangePump1Strokes, distance) + if(Pump2Strokes%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Pump2Strokes, ChangePump2Strokes, distance) + if(ReturnLineTemperature%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ReturnLineTemperature, ChangeReturnLineTemperature, distance) + if(TripTank%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(TripTank, ChangeTripTank, distance) + if(PitGainLoss%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(PitGainLoss, ChangePitGainLoss, distance) + if(MudTankVolume%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(MudTankVolume, ChangeMudTankVolume, distance) + if(ReturnMudFlow%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ReturnMudFlow, ChangeReturnMudFlow, distance) + if(TorqueLimit%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(TorqueLimit, ChangeTorqueLimit, distance) + if(PowerLimit%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(PowerLimit, ChangePowerLimit, distance) + if(AccumulatorPressure%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AccumulatorPressure, ChangeAccumulatorPressure, distance) + if(ManifoldPressure%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ManifoldPressure, ChangeManifoldPressure, distance) + if(AnnularPressure%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(AnnularPressure, ChangeAnnularPressure, distance) + if(RigAirPressure%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(RigAirPressure, ChangeRigAirPressure, distance) + if(StandPipe1%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(StandPipe1, ChangeStandPipe1, distance) + if(StandPipe2%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(StandPipe2, ChangeStandPipe2, distance) + if(DrillPipePressure%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(DrillPipePressure, ChangeDrillPipePressure, distance) + if(ChokePosition%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ChokePosition, ChangeChokePosition, distance) + if(CasingPressure2%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(CasingPressure2, ChangeCasingPressure2, distance) + end subroutine + + + + + + + + + + subroutine ChangeWeightIndicator(status) + use TD_GeneralData + implicit none + integer, intent (in) :: status + if(associated(WeightIndicatorPtr)) call WeightIndicatorPtr(status) + if(status == Clear_StatusType) TD_WeightIndicatorMalf = 0 + if(status == Executed_StatusType) TD_WeightIndicatorMalf = 1 + endsubroutine + + subroutine ChangeRotaryRpm(status) + use RTable_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(RotaryRpmPtr)) call RotaryRpmPtr(status) + if(status == Clear_StatusType) RTable%RpmGaugeMalf = 0 + if(status == Executed_StatusType) RTable%RpmGaugeMalf = 1 + endsubroutine + + subroutine ChangeRotaryTorque(status) + use RTable_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(RotaryTorquePtr)) call RotaryTorquePtr(status) + if(status == Clear_StatusType) RTable%TorqueGaugeMalf = 0 + if(status == Executed_StatusType) RTable%TorqueGaugeMalf = 1 + endsubroutine + + subroutine ChangeStandPipePressure(status) + use MudSystemVARIABLES + implicit none + integer, intent (in) :: status + if(associated(StandPipePressurePtr)) call StandPipePressurePtr(status) + if(status == Clear_StatusType) StandPipePressure_DataDisplayMalf = 0 + if(status == Executed_StatusType) StandPipePressure_DataDisplayMalf = 1 + endsubroutine + + subroutine ChangeCasingPressure(status) + USE FricPressDropVars + implicit none + integer, intent (in) :: status + if(associated(CasingPressurePtr)) call CasingPressurePtr(status) + if(status == Clear_StatusType) CasingPressure_DataDisplayMalF = 0 + if(status == Executed_StatusType) CasingPressure_DataDisplayMalF = 1 + endsubroutine + + subroutine ChangePump1Strokes(status) + use Pump_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(Pump1StrokesPtr)) call Pump1StrokesPtr(status) + if(status == Clear_StatusType) PUMP(1)%SPMGaugeMalf = 0 + if(status == Executed_StatusType) PUMP(1)%SPMGaugeMalf = 1 + endsubroutine + + subroutine ChangePump2Strokes(status) + use Pump_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(Pump2StrokesPtr)) call Pump2StrokesPtr(status) + if(status == Clear_StatusType) PUMP(2)%SPMGaugeMalf = 0 + if(status == Executed_StatusType) PUMP(2)%SPMGaugeMalf = 1 + endsubroutine + + subroutine ChangeReturnLineTemperature(status) + implicit none + integer, intent (in) :: status + if(associated(ReturnLineTemperaturePtr)) call ReturnLineTemperaturePtr(status) + !if(status == Clear_StatusType) print*,'On_ReturnLineTemperature_Clear' + !if(status == Executed_StatusType) print*,'On_ReturnLineTemperature_Execute' + endsubroutine + + subroutine ChangeTripTank(status) + USE MudSystemVARIABLES + implicit none + integer, intent (in) :: status + if(associated(TripTankPtr)) call TripTankPtr(status) + if(status == Clear_StatusType) TripTankPressure_DataDisplayMalf = 0 + if(status == Executed_StatusType) TripTankPressure_DataDisplayMalf = 1 + endsubroutine + + subroutine ChangePitGainLoss(status) + USE MudSystemVARIABLES + implicit none + integer, intent (in) :: status + if(associated(PitGainLossPtr)) call PitGainLossPtr(status) + if(status == Clear_StatusType) PitGainLossGaugeMalf = 0 + if(status == Executed_StatusType) PitGainLossGaugeMalf = 1 + endsubroutine + + subroutine ChangeMudTankVolume(status) + implicit none + integer, intent (in) :: status + if(associated(MudTankVolumePtr)) call MudTankVolumePtr(status) + !if(status == Clear_StatusType) print*,'On_MudTankVolume_Clear' + !if(status == Executed_StatusType) print*,'On_MudTankVolume_Execute' + endsubroutine + + subroutine ChangeReturnMudFlow(status) + implicit none + integer, intent (in) :: status + if(associated(ReturnMudFlowPtr)) call ReturnMudFlowPtr(status) + !if(status == Clear_StatusType) print*,'On_ReturnMudFlow_Clear' + !if(status == Executed_StatusType) print*,'On_ReturnMudFlow_Execute' + endsubroutine + + subroutine ChangeTorqueLimit(status) + use RTable_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(TorqueLimitPtr)) call TorqueLimitPtr(status) + if(status == Clear_StatusType) RTable%TorqueLimitGaugeMalf = 0 + if(status == Executed_StatusType) RTable%TorqueLimitGaugeMalf = 1 + endsubroutine + + subroutine ChangePowerLimit(status) + implicit none + integer, intent (in) :: status + if(associated(PowerLimitPtr)) call PowerLimitPtr(status) + !if(status == Clear_StatusType) print*,'On_PowerLimit_Clear' + !if(status == Executed_StatusType) print*,'On_PowerLimit_Execute' + endsubroutine + + subroutine ChangeAccumulatorPressure(status) + USE VARIABLES + implicit none + integer, intent (in) :: status + if(associated(AccumulatorPressurePtr)) call AccumulatorPressurePtr(status) + if(status == Clear_StatusType) AccumulatorPressureGaugeMalf = 0 + if(status == Executed_StatusType) AccumulatorPressureGaugeMalf = 1 + endsubroutine + + subroutine ChangeManifoldPressure(status) + USE VARIABLES + implicit none + integer, intent (in) :: status + if(associated(ManifoldPressurePtr)) call ManifoldPressurePtr(status) + if(status == Clear_StatusType) ManifoldPressureGaugeMalf = 0 + if(status == Executed_StatusType) ManifoldPressureGaugeMalf = 1 + endsubroutine + + subroutine ChangeAnnularPressure(status) + USE VARIABLES + implicit none + integer, intent (in) :: status + if(associated(AnnularPressurePtr)) call AnnularPressurePtr(status) + if(status == Clear_StatusType) AnnularPressureGaugeMalf = 0 + if(status == Executed_StatusType) AnnularPressureGaugeMalf = 1 + endsubroutine + + subroutine ChangeRigAirPressure(status) + USE VARIABLES + implicit none + integer, intent (in) :: status + if(associated(RigAirPressurePtr)) call RigAirPressurePtr(status) + if(status == Clear_StatusType) AirSupplyPressureGaugeMalf = 0 + if(status == Executed_StatusType) AirSupplyPressureGaugeMalf = 1 + endsubroutine + + subroutine ChangeStandPipe1(status) + use MudSystemVARIABLES + implicit none + integer, intent (in) :: status + if(associated(StandPipe1Ptr)) call StandPipe1Ptr(status) + if(status == Clear_StatusType) StandPipeGauge1Malf = 0 + if(status == Executed_StatusType) StandPipeGauge1Malf = 1 + endsubroutine + + subroutine ChangeStandPipe2(status) + use MudSystemVARIABLES + implicit none + integer, intent (in) :: status + if(associated(StandPipe2Ptr)) call StandPipe2Ptr(status) + if(status == Clear_StatusType) StandPipeGauge2Malf = 0 + if(status == Executed_StatusType) StandPipeGauge2Malf = 1 + endsubroutine + + subroutine ChangeDrillPipePressure(status) + use MudSystemVARIABLES + implicit none + integer, intent (in) :: status + if(associated(DrillPipePressurePtr)) call DrillPipePressurePtr(status) + if(status == Clear_StatusType) DrillPipePressureMalf = 0 + if(status == Executed_StatusType) DrillPipePressureMalf = 1 + endsubroutine + + subroutine ChangeChokePosition(status) + USE CHOKEVARIABLES + implicit none + integer, intent (in) :: status + if(associated(ChokePositionPtr)) call ChokePositionPtr(status) + if(status == Clear_StatusType) GaugeChokePositionMailf = 0 + if(status == Executed_StatusType) GaugeChokePositionMailf = 1 + endsubroutine + + subroutine ChangeCasingPressure2(status) + use FricPressDropVars + implicit none + integer, intent (in) :: status + if(associated(CasingPressure2Ptr)) call CasingPressure2Ptr(status) + if(status == Clear_StatusType) CasingPressure_ChokeMalF = 0 + if(status == Executed_StatusType) CasingPressure_ChokeMalF = 1 + endsubroutine + + + + + + + + + + + + + + + + + subroutine SubscribeWeightIndicator(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeWeightIndicator + !DEC$ ATTRIBUTES ALIAS: 'SubscribeWeightIndicator' :: SubscribeWeightIndicator + implicit none + procedure (ActionInteger) :: v + WeightIndicatorPtr => v + end subroutine + + subroutine SubscribeRotaryRpm(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeRotaryRpm + !DEC$ ATTRIBUTES ALIAS: 'SubscribeRotaryRpm' :: SubscribeRotaryRpm + implicit none + procedure (ActionInteger) :: v + RotaryRpmPtr => v + end subroutine + + subroutine SubscribeRotaryTorque(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeRotaryTorque + !DEC$ ATTRIBUTES ALIAS: 'SubscribeRotaryTorque' :: SubscribeRotaryTorque + implicit none + procedure (ActionInteger) :: v + RotaryTorquePtr => v + end subroutine + + subroutine SubscribeStandPipePressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeStandPipePressure + !DEC$ ATTRIBUTES ALIAS: 'SubscribeStandPipePressure' :: SubscribeStandPipePressure + implicit none + procedure (ActionInteger) :: v + StandPipePressurePtr => v + end subroutine + + subroutine SubscribeCasingPressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeCasingPressure + !DEC$ ATTRIBUTES ALIAS: 'SubscribeCasingPressure' :: SubscribeCasingPressure + implicit none + procedure (ActionInteger) :: v + CasingPressurePtr => v + end subroutine + + subroutine SubscribePump1Strokes(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePump1Strokes + !DEC$ ATTRIBUTES ALIAS: 'SubscribePump1Strokes' :: SubscribePump1Strokes + implicit none + procedure (ActionInteger) :: v + Pump1StrokesPtr => v + end subroutine + + subroutine SubscribePump2Strokes(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePump2Strokes + !DEC$ ATTRIBUTES ALIAS: 'SubscribePump2Strokes' :: SubscribePump2Strokes + implicit none + procedure (ActionInteger) :: v + Pump2StrokesPtr => v + end subroutine + + subroutine SubscribeReturnLineTemperature(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeReturnLineTemperature + !DEC$ ATTRIBUTES ALIAS: 'SubscribeReturnLineTemperature' :: SubscribeReturnLineTemperature + implicit none + procedure (ActionInteger) :: v + ReturnLineTemperaturePtr => v + end subroutine + + subroutine SubscribeTripTank(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeTripTank + !DEC$ ATTRIBUTES ALIAS: 'SubscribeTripTank' :: SubscribeTripTank + implicit none + procedure (ActionInteger) :: v + TripTankPtr => v + end subroutine + + subroutine SubscribePitGainLoss(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePitGainLoss + !DEC$ ATTRIBUTES ALIAS: 'SubscribePitGainLoss' :: SubscribePitGainLoss + implicit none + procedure (ActionInteger) :: v + PitGainLossPtr => v + end subroutine + + subroutine SubscribeMudTankVolume(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMudTankVolume + !DEC$ ATTRIBUTES ALIAS: 'SubscribeMudTankVolume' :: SubscribeMudTankVolume + implicit none + procedure (ActionInteger) :: v + MudTankVolumePtr => v + end subroutine + + subroutine SubscribeReturnMudFlow(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeReturnMudFlow + !DEC$ ATTRIBUTES ALIAS: 'SubscribeReturnMudFlow' :: SubscribeReturnMudFlow + implicit none + procedure (ActionInteger) :: v + ReturnMudFlowPtr => v + end subroutine + + subroutine SubscribeTorqueLimit(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeTorqueLimit + !DEC$ ATTRIBUTES ALIAS: 'SubscribeTorqueLimit' :: SubscribeTorqueLimit + implicit none + procedure (ActionInteger) :: v + TorqueLimitPtr => v + end subroutine + + subroutine SubscribePowerLimit(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePowerLimit + !DEC$ ATTRIBUTES ALIAS: 'SubscribePowerLimit' :: SubscribePowerLimit + implicit none + procedure (ActionInteger) :: v + PowerLimitPtr => v + end subroutine + + subroutine SubscribeAccumulatorPressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAccumulatorPressure + !DEC$ ATTRIBUTES ALIAS: 'SubscribeAccumulatorPressure' :: SubscribeAccumulatorPressure + implicit none + procedure (ActionInteger) :: v + AccumulatorPressurePtr => v + end subroutine + + subroutine SubscribeManifoldPressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeManifoldPressure + !DEC$ ATTRIBUTES ALIAS: 'SubscribeManifoldPressure' :: SubscribeManifoldPressure + implicit none + procedure (ActionInteger) :: v + ManifoldPressurePtr => v + end subroutine + + subroutine SubscribeAnnularPressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeAnnularPressure + !DEC$ ATTRIBUTES ALIAS: 'SubscribeAnnularPressure' :: SubscribeAnnularPressure + implicit none + procedure (ActionInteger) :: v + AnnularPressurePtr => v + end subroutine + + subroutine SubscribeRigAirPressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeRigAirPressure + !DEC$ ATTRIBUTES ALIAS: 'SubscribeRigAirPressure' :: SubscribeRigAirPressure + implicit none + procedure (ActionInteger) :: v + RigAirPressurePtr => v + end subroutine + + subroutine SubscribeStandPipe1(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeStandPipe1 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeStandPipe1' :: SubscribeStandPipe1 + implicit none + procedure (ActionInteger) :: v + StandPipe1Ptr => v + end subroutine + + subroutine SubscribeStandPipe2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeStandPipe2 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeStandPipe2' :: SubscribeStandPipe2 + implicit none + procedure (ActionInteger) :: v + StandPipe2Ptr => v + end subroutine + + subroutine SubscribeDrillPipePressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeDrillPipePressure + !DEC$ ATTRIBUTES ALIAS: 'SubscribeDrillPipePressure' :: SubscribeDrillPipePressure + implicit none + procedure (ActionInteger) :: v + DrillPipePressurePtr => v + end subroutine + + subroutine SubscribeChokePosition(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeChokePosition + !DEC$ ATTRIBUTES ALIAS: 'SubscribeChokePosition' :: SubscribeChokePosition + implicit none + procedure (ActionInteger) :: v + ChokePositionPtr => v + end subroutine + + subroutine SubscribeCasingPressure2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeCasingPressure2 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeCasingPressure2' :: SubscribeCasingPressure2 + implicit none + procedure (ActionInteger) :: v + CasingPressure2Ptr => v + end subroutine + + + + +end module CGaugesProblemsVariables \ No newline at end of file diff --git a/CSharp/Problems/CHoistingProblems.f90 b/CSharp/Problems/CHoistingProblems.f90 new file mode 100644 index 0000000..295d536 --- /dev/null +++ b/CSharp/Problems/CHoistingProblems.f90 @@ -0,0 +1,47 @@ +module CHoistingProblems + use CHoistingProblemsVariables + implicit none + public + contains + + ! Input routines + subroutine SetMotorFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMotorFail + !DEC$ ATTRIBUTES ALIAS: 'SetMotorFail' :: SetMotorFail + implicit none + type(CProblem), intent(in) :: v + MotorFail = SetDue(v, ChangeMotorFail) +#ifdef deb + print*, 'MotorFail%ProblemType=', MotorFail%ProblemType + print*, 'MotorFail%StatusType=', MotorFail%StatusType + print*, 'MotorFail%Value=', MotorFail%Value +#endif + end subroutine + + subroutine SetClutchEngage(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetClutchEngage + !DEC$ ATTRIBUTES ALIAS: 'SetClutchEngage' :: SetClutchEngage + implicit none + type(CProblem), intent(in) :: v + ClutchEngage = SetDue(v, ChangeClutchEngage) +#ifdef deb + print*, 'ClutchEngage%ProblemType=', ClutchEngage%ProblemType + print*, 'ClutchEngage%StatusType=', ClutchEngage%StatusType + print*, 'ClutchEngage%Value=', ClutchEngage%Value +#endif + end subroutine + + subroutine SetClutchDisengage(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetClutchDisengage + !DEC$ ATTRIBUTES ALIAS: 'SetClutchDisengage' :: SetClutchDisengage + implicit none + type(CProblem), intent(in) :: v + ClutchDisengage = SetDue(v, ChangeClutchDisengage) +#ifdef deb + print*, 'ClutchDisengage%ProblemType=', ClutchDisengage%ProblemType + print*, 'ClutchDisengage%StatusType=', ClutchDisengage%StatusType + print*, 'ClutchDisengage%Value=', ClutchDisengage%Value +#endif + end subroutine + +end module CHoistingProblems \ No newline at end of file diff --git a/CSharp/Problems/CHoistingProblemsVariables.f90 b/CSharp/Problems/CHoistingProblemsVariables.f90 new file mode 100644 index 0000000..fa98360 --- /dev/null +++ b/CSharp/Problems/CHoistingProblemsVariables.f90 @@ -0,0 +1,116 @@ +module CHoistingProblemsVariables + use CProblemDifinition + implicit none + public + + ! Input vars + type(CProblem) :: MotorFail + type(CProblem) :: ClutchEngage + type(CProblem) :: ClutchDisengage + + procedure (ActionInteger), pointer :: MotorFailPtr + procedure (ActionInteger), pointer :: ClutchEngagePtr + procedure (ActionInteger), pointer :: ClutchDisengagePtr + + + contains + + subroutine ProcessHoistingProblemsDueTime(time) + implicit none + integer :: time + if(MotorFail%ProblemType == Time_ProblemType) call ProcessDueTime(MotorFail, ChangeMotorFail, time) + if(ClutchEngage%ProblemType == Time_ProblemType) call ProcessDueTime(ClutchEngage, ChangeClutchEngage, time) + if(ClutchDisengage%ProblemType == Time_ProblemType) call ProcessDueTime(ClutchDisengage, ChangeClutchDisengage, time) + end subroutine + + subroutine ProcessHoistingProblemsDuePumpStrokes(strokes) + implicit none + integer :: strokes + if(MotorFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(MotorFail, ChangeMotorFail, strokes) + if(ClutchEngage%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ClutchEngage, ChangeClutchEngage, strokes) + if(ClutchDisengage%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ClutchDisengage, ChangeClutchDisengage, strokes) + end subroutine + + subroutine ProcessHoistingProblemsDueVolumePumped(volume) + implicit none + real(8) :: volume + if(MotorFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(MotorFail, ChangeMotorFail, volume) + if(ClutchEngage%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ClutchEngage, ChangeClutchEngage, volume) + if(ClutchDisengage%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ClutchDisengage, ChangeClutchDisengage, volume) + end subroutine + + subroutine ProcessHoistingProblemsDueDistanceDrilled(distance) + implicit none + real(8) :: distance + if(MotorFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(MotorFail, ChangeMotorFail, distance) + if(ClutchEngage%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ClutchEngage, ChangeClutchEngage, distance) + if(ClutchDisengage%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ClutchDisengage, ChangeClutchDisengage, distance) + end subroutine + + + + + + + subroutine ChangeMotorFail(status) + use Drawworks_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(MotorFailPtr)) call MotorFailPtr(status) + if(status == Clear_StatusType) Drawworks%MotorFaileMalf=0 + if(status == Executed_StatusType) Drawworks%MotorFaileMalf=1 + endsubroutine + + subroutine ChangeClutchEngage(status) + use Drawworks_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(ClutchEngagePtr)) call ClutchEngagePtr(status) + if(status == Clear_StatusType) Drawworks%ClutchEngageMalf=0 + if(status == Executed_StatusType) Drawworks%ClutchEngageMalf=1 + endsubroutine + + subroutine ChangeClutchDisengage(status) + use Drawworks_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(ClutchDisengagePtr)) call ClutchDisengagePtr(status) + if(status == Clear_StatusType) Drawworks%ClutchDisengageMalf=0 + if(status == Executed_StatusType) Drawworks%ClutchDisengageMalf=1 + endsubroutine + + + + + + + + + + + subroutine SubscribeMotorFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMotorFail + !DEC$ ATTRIBUTES ALIAS: 'SubscribeMotorFail' :: SubscribeMotorFail + implicit none + procedure (ActionInteger) :: v + MotorFailPtr => v + end subroutine + + subroutine SubscribeClutchEngage(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeClutchEngage + !DEC$ ATTRIBUTES ALIAS: 'SubscribeClutchEngage' :: SubscribeClutchEngage + implicit none + procedure (ActionInteger) :: v + ClutchEngagePtr => v + end subroutine + + subroutine SubscribeClutchDisengage(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeClutchDisengage + !DEC$ ATTRIBUTES ALIAS: 'SubscribeClutchDisengage' :: SubscribeClutchDisengage + implicit none + procedure (ActionInteger) :: v + ClutchDisengagePtr => v + end subroutine + + +end module CHoistingProblemsVariables \ No newline at end of file diff --git a/CSharp/Problems/CKickProblems.f90 b/CSharp/Problems/CKickProblems.f90 new file mode 100644 index 0000000..e4b913b --- /dev/null +++ b/CSharp/Problems/CKickProblems.f90 @@ -0,0 +1,76 @@ +module CKickProblems + use CKickProblemsVariables + implicit none + public + contains + + ! Input routines + subroutine SetKick(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetKick + !DEC$ ATTRIBUTES ALIAS: 'SetKick' :: SetKick + implicit none + type(CProblem), intent(in) :: v + Kick = SetDue(v, ChangeKick) +#ifdef deb + print*, 'Kick%ProblemType=', Kick%ProblemType + print*, 'Kick%StatusType=', Kick%StatusType + print*, 'Kick%Value=', Kick%Value +#endif + end subroutine + + subroutine SetFluidTypeP(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetFluidTypeP + !DEC$ ATTRIBUTES ALIAS: 'SetFluidTypeP' :: SetFluidTypeP + implicit none + integer, intent(in) :: v + FluidType = v +#ifdef deb + print*, 'FluidType=', FluidType +#endif + end subroutine + + subroutine SetFlowRateP(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetFlowRateP + !DEC$ ATTRIBUTES ALIAS: 'SetFlowRateP' :: SetFlowRateP + implicit none + real*8, intent(in) :: v + FlowRate = v +#ifdef deb + print*, 'FlowRate=', FlowRate +#endif + end subroutine + + subroutine SetOverBalancePressure(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetOverBalancePressure + !DEC$ ATTRIBUTES ALIAS: 'SetOverBalancePressure' :: SetOverBalancePressure + implicit none + real*8, intent(in) :: v + OverBalancePressure = v +#ifdef deb + print*, 'OverBalancePressure=', OverBalancePressure +#endif + end subroutine + + subroutine SetIsAutoMigrationRateSelectedP(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetIsAutoMigrationRateSelectedP + !DEC$ ATTRIBUTES ALIAS: 'SetIsAutoMigrationRateSelectedP' :: SetIsAutoMigrationRateSelectedP + implicit none + logical, intent(in) :: v + IsAutoMigrationRateSelected = v +#ifdef deb + print*, 'IsAutoMigrationRateSelected=', IsAutoMigrationRateSelected +#endif + end subroutine + + subroutine SetAutoMigrationRateP(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetAutoMigrationRateP + !DEC$ ATTRIBUTES ALIAS: 'SetAutoMigrationRateP' :: SetAutoMigrationRateP + implicit none + real*8, intent(in) :: v + AutoMigrationRate = v +#ifdef deb + print*, 'AutoMigrationRate=', AutoMigrationRate +#endif + end subroutine + +end module CKickProblems \ No newline at end of file diff --git a/CSharp/Problems/CKickProblemsVariables.f90 b/CSharp/Problems/CKickProblemsVariables.f90 new file mode 100644 index 0000000..3eae2d9 --- /dev/null +++ b/CSharp/Problems/CKickProblemsVariables.f90 @@ -0,0 +1,86 @@ +module CKickProblemsVariables + use CProblemDifinition + implicit none + public + + !constants + integer :: Gas_FluidType = 0 + integer :: Oil_FluidType = 1 + integer :: Water_FluidType = 2 + + + ! Input vars + type(CProblem) :: Kick + integer :: FluidType + integer :: FlowRate + integer :: OverBalancePressure + logical :: IsAutoMigrationRateSelected + real(8) :: AutoMigrationRate + + procedure (ActionInteger), pointer :: KickPtr + + contains + + + subroutine ProcessKickProblemsDueTime(time) + implicit none + integer :: time + + if(Kick%ProblemType == Time_ProblemType) call ProcessDueTime(Kick, ChangeKick, time) + + end subroutine + + subroutine ProcessKickProblemsDuePumpStrokes(strokes) + implicit none + integer :: strokes + + if(Kick%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Kick, ChangeKick, strokes) + + end subroutine + + subroutine ProcessKickProblemsDueVolumePumped(volume) + implicit none + real(8) :: volume + + if(Kick%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Kick, ChangeKick, volume) + + end subroutine + + subroutine ProcessKickProblemsDueDistanceDrilled(distance) + implicit none + real(8) :: distance + + if(Kick%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Kick, ChangeKick, distance) + + end subroutine + + subroutine ChangeKick(status) + implicit none + integer, intent (in) :: status + if(associated(KickPtr)) call KickPtr(status) + !if(status == Clear_StatusType) print*,'On_Kick_Clear' + !if(status == Executed_StatusType) print*,'On_Kick_Execute' + endsubroutine + + + + + + + + + + + + + subroutine SubscribeKick(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeKick + !DEC$ ATTRIBUTES ALIAS: 'SubscribeKick' :: SubscribeKick + implicit none + procedure (ActionInteger) :: v + KickPtr => v + end subroutine + + + +end module CKickProblemsVariables \ No newline at end of file diff --git a/CSharp/Problems/CLostProblems.f90 b/CSharp/Problems/CLostProblems.f90 new file mode 100644 index 0000000..fd28a11 --- /dev/null +++ b/CSharp/Problems/CLostProblems.f90 @@ -0,0 +1,32 @@ +module CLostProblems + use CLostProblemsVariables + implicit none + public + contains + + ! Input routines + subroutine SetLostCirculation(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetLostCirculation + !DEC$ ATTRIBUTES ALIAS: 'SetLostCirculation' :: SetLostCirculation + implicit none + type(CProblem), intent(in) :: v + LostCirculation = SetDue(v, ChangeLostCirculation) +#ifdef deb + print*, 'LostCirculation%ProblemType=', LostCirculation%ProblemType + print*, 'LostCirculation%StatusType=', LostCirculation%StatusType + print*, 'LostCirculation%Value=', LostCirculation%Value +#endif + end subroutine + + subroutine SetFlowRate(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetFlowRate + !DEC$ ATTRIBUTES ALIAS: 'SetFlowRate' :: SetFlowRate + implicit none + real*8, intent(in) :: v + FlowRate = v +#ifdef deb + print*, 'FlowRate=', FlowRate +#endif + end subroutine + +end module CLostProblems \ No newline at end of file diff --git a/CSharp/Problems/CLostProblemsVariables.f90 b/CSharp/Problems/CLostProblemsVariables.f90 new file mode 100644 index 0000000..aae9ca9 --- /dev/null +++ b/CSharp/Problems/CLostProblemsVariables.f90 @@ -0,0 +1,73 @@ +module CLostProblemsVariables + use CProblemDifinition + implicit none + public + + ! Input vars + type(CProblem) :: LostCirculation + real(8) :: FlowRate + + procedure (ActionInteger), pointer :: LostCirculationPtr + + contains + + subroutine ProcessLostProblemsDueTime(time) + implicit none + integer :: time + + if(LostCirculation%ProblemType == Time_ProblemType) call ProcessDueTime(LostCirculation, ChangeLostCirculation, time) + + end subroutine + + subroutine ProcessLostProblemsDuePumpStrokes(strokes) + implicit none + integer :: strokes + + if(LostCirculation%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(LostCirculation, ChangeLostCirculation, strokes) + + end subroutine + + subroutine ProcessLostProblemsDueVolumePumped(volume) + implicit none + real(8) :: volume + + if(LostCirculation%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(LostCirculation, ChangeLostCirculation, volume) + + end subroutine + + subroutine ProcessLostProblemsDueDistanceDrilled(distance) + implicit none + real(8) :: distance + + if(LostCirculation%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(LostCirculation, ChangeLostCirculation, distance) + + end subroutine + + + + + subroutine ChangeLostCirculation(status) + implicit none + integer, intent (in) :: status + if(associated(LostCirculationPtr)) call LostCirculationPtr(status) + !if(status == Clear_StatusType) print*,'On_LostCirculation_Clear' + !if(status == Executed_StatusType) print*,'On_LostCirculation_Execute' + endsubroutine + + + + + + + + + + subroutine SubscribeLostCirculation(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeLostCirculation + !DEC$ ATTRIBUTES ALIAS: 'SubscribeLostCirculation' :: SubscribeLostCirculation + implicit none + procedure (ActionInteger) :: v + LostCirculationPtr => v + end subroutine + +end module CLostProblemsVariables \ No newline at end of file diff --git a/CSharp/Problems/CMudTreatmentProblems.f90 b/CSharp/Problems/CMudTreatmentProblems.f90 new file mode 100644 index 0000000..2b1f5bd --- /dev/null +++ b/CSharp/Problems/CMudTreatmentProblems.f90 @@ -0,0 +1,60 @@ +module CMudTreatmentProblems + use CMudTreatmentProblemsVariables + implicit none + public + contains + + ! Input routines + subroutine SetDegasser(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetDegasser + !DEC$ ATTRIBUTES ALIAS: 'SetDegasser' :: SetDegasser + implicit none + type(CProblem), intent(in) :: v + Degasser = SetDue(v, ChangeDegasser) +#ifdef deb + print*, 'Degasser%ProblemType=', V%ProblemType + print*, 'Degasser%StatusType=', V%StatusType + print*, 'Degasser%Value=', V%Value +#endif + end subroutine + + subroutine SetShaleShaker(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetShaleShaker + !DEC$ ATTRIBUTES ALIAS: 'SetShaleShaker' :: SetShaleShaker + implicit none + type(CProblem), intent(in) :: v + ShaleShaker = SetDue(v, ChangeShaleShaker) +#ifdef deb + print*, 'ShaleShaker%ProblemType=', V%ProblemType + print*, 'ShaleShaker%StatusType=', V%StatusType + print*, 'ShaleShaker%Value=', V%Value +#endif + end subroutine + + subroutine SetDesander(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetDesander + !DEC$ ATTRIBUTES ALIAS: 'SetDesander' :: SetDesander + implicit none + type(CProblem), intent(in) :: v + Desander = SetDue(v, ChangeDesander) +#ifdef deb + print*, 'Desander%ProblemType=', V%ProblemType + print*, 'Desander%StatusType=', V%StatusType + print*, 'Desander%Value=', V%Value +#endif + end subroutine + + subroutine SetDesilter(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetDesilter + !DEC$ ATTRIBUTES ALIAS: 'SetDesilter' :: SetDesilter + implicit none + type(CProblem), intent(in) :: v + Desilter = SetDue(v, ChangeDesilter) +#ifdef deb + print*, 'Desilter%ProblemType=', V%ProblemType + print*, 'Desilter%StatusType=', V%StatusType + print*, 'Desilter%Value=', V%Value +#endif + end subroutine + +end module CMudTreatmentProblems \ No newline at end of file diff --git a/CSharp/Problems/CMudTreatmentProblemsVariables.f90 b/CSharp/Problems/CMudTreatmentProblemsVariables.f90 new file mode 100644 index 0000000..9be98eb --- /dev/null +++ b/CSharp/Problems/CMudTreatmentProblemsVariables.f90 @@ -0,0 +1,154 @@ +module CMudTreatmentProblemsVariables + use CProblemDifinition + implicit none + public + + ! Input vars + type(CProblem) :: Degasser + type(CProblem) :: ShaleShaker + type(CProblem) :: Desander + type(CProblem) :: Desilter + + + procedure (ActionInteger), pointer :: DegasserPtr + procedure (ActionInteger), pointer :: ShaleShakerPtr + procedure (ActionInteger), pointer :: DesanderPtr + procedure (ActionInteger), pointer :: DesilterPtr + + contains + + subroutine ProcessMudTreatmentProblemsDueTime(time) + implicit none + integer :: time + + if(Degasser%ProblemType == Time_ProblemType) call ProcessDueTime(Degasser, ChangeDegasser, time) + if(ShaleShaker%ProblemType == Time_ProblemType) call ProcessDueTime(ShaleShaker, ChangeShaleShaker, time) + if(Desander%ProblemType == Time_ProblemType) call ProcessDueTime(Desander, ChangeDesander, time) + if(Desilter%ProblemType == Time_ProblemType) call ProcessDueTime(Desilter, ChangeDesilter, time) + + end subroutine + + + subroutine ProcessMudTreatmentProblemsDuePumpStrokes(strokes) + implicit none + integer :: strokes + + if(Degasser%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Degasser, ChangeDegasser, strokes) + if(ShaleShaker%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(ShaleShaker, ChangeShaleShaker, strokes) + if(Desander%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Desander, ChangeDesander, strokes) + if(Desilter%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Desilter, ChangeDesilter, strokes) + + end subroutine + + + subroutine ProcessMudTreatmentProblemsDueVolumePumped(volume) + implicit none + real(8) :: volume + + if(Degasser%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Degasser, ChangeDegasser, volume) + if(ShaleShaker%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(ShaleShaker, ChangeShaleShaker, volume) + if(Desander%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Desander, ChangeDesander, volume) + if(Desilter%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Desilter, ChangeDesilter, volume) + + end subroutine + + subroutine ProcessMudTreatmentProblemsDueDistanceDrilled(distance) + implicit none + real(8) :: distance + + if(Degasser%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Degasser, ChangeDegasser, distance) + if(ShaleShaker%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(ShaleShaker, ChangeShaleShaker, distance) + if(Desander%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Desander, ChangeDesander, distance) + if(Desilter%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Desilter, ChangeDesilter, distance) + + end subroutine + + + + + + + + subroutine ChangeDegasser(status) + implicit none + integer, intent (in) :: status + if(associated(DegasserPtr)) call DegasserPtr(status) + !if(status == Clear_StatusType) print*,'On_Degasser_Clear' + !if(status == Executed_StatusType) print*,'On_Degasser_Execute' + endsubroutine + + subroutine ChangeShaleShaker(status) + implicit none + integer, intent (in) :: status + if(associated(ShaleShakerPtr)) call ShaleShakerPtr(status) + !if(status == Clear_StatusType) print*,'On_ShaleShaker_Clear' + !if(status == Executed_StatusType) print*,'On_ShaleShaker_Execute' + endsubroutine + + subroutine ChangeDesander(status) + implicit none + integer, intent (in) :: status + if(associated(DesanderPtr)) call DesanderPtr(status) + !if(status == Clear_StatusType) print*,'On_Desander_Clear' + !if(status == Executed_StatusType) print*,'On_Desander_Execute' + endsubroutine + + subroutine ChangeDesilter(status) + implicit none + integer, intent (in) :: status + if(associated(DesilterPtr)) call DesilterPtr(status) + !if(status == Clear_StatusType) print*,'On_Desilter_Clear' + !if(status == Executed_StatusType) print*,'On_Desilter_Execute' + endsubroutine + + + + + + + + + + + + + + + + + subroutine SubscribeDegasser(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeDegasser + !DEC$ ATTRIBUTES ALIAS: 'SubscribeDegasser' :: SubscribeDegasser + implicit none + procedure (ActionInteger) :: v + DegasserPtr => v + end subroutine + + subroutine SubscribeShaleShaker(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeShaleShaker + !DEC$ ATTRIBUTES ALIAS: 'SubscribeShaleShaker' :: SubscribeShaleShaker + implicit none + procedure (ActionInteger) :: v + ShaleShakerPtr => v + end subroutine + + subroutine SubscribeDesander(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeDesander + !DEC$ ATTRIBUTES ALIAS: 'SubscribeDesander' :: SubscribeDesander + implicit none + procedure (ActionInteger) :: v + DesanderPtr => v + end subroutine + + subroutine SubscribeDesilter(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeDesilter + !DEC$ ATTRIBUTES ALIAS: 'SubscribeDesilter' :: SubscribeDesilter + implicit none + procedure (ActionInteger) :: v + DesilterPtr => v + end subroutine + + + + +end module CMudTreatmentProblemsVariables \ No newline at end of file diff --git a/CSharp/Problems/COtherProblems.f90 b/CSharp/Problems/COtherProblems.f90 new file mode 100644 index 0000000..4dd4a5b --- /dev/null +++ b/CSharp/Problems/COtherProblems.f90 @@ -0,0 +1,151 @@ +module COtherProblems + use COtherProblemsVariables + implicit none + public + contains + + ! Input routines + subroutine SetRigAlarm(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRigAlarm + !DEC$ ATTRIBUTES ALIAS: 'SetRigAlarm' :: SetRigAlarm + implicit none + type(CProblem), intent(in) :: v + RigAlarm = SetDue(v, ChangeRigAlarm) +#ifdef deb + print*, 'RigAlarm%ProblemType=', V%ProblemType + print*, 'RigAlarm%StatusType=', V%StatusType + print*, 'RigAlarm%Value=', V%Value +#endif + end subroutine + + subroutine SetRigWaterSupply(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRigWaterSupply + !DEC$ ATTRIBUTES ALIAS: 'SetRigWaterSupply' :: SetRigWaterSupply + implicit none + type(CProblem), intent(in) :: v + RigWaterSupply = SetDue(v, ChangeRigWaterSupply) +#ifdef deb + print*, 'RigWaterSupply%ProblemType=', V%ProblemType + print*, 'RigWaterSupply%StatusType=', V%StatusType + print*, 'RigWaterSupply%Value=', V%Value +#endif + end subroutine + + subroutine SetRigAir(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetRigAir + !DEC$ ATTRIBUTES ALIAS: 'SetRigAir' :: SetRigAir + implicit none + type(CProblem), intent(in) :: v + RigAir = SetDue(v, ChangeRigAir) +#ifdef deb + print*, 'RigAir%ProblemType=', V%ProblemType + print*, 'RigAir%StatusType=', V%StatusType + print*, 'RigAir%Value=', V%Value +#endif + end subroutine + + subroutine SetGen1(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetGen1 + !DEC$ ATTRIBUTES ALIAS: 'SetGen1' :: SetGen1 + implicit none + type(CProblem), intent(in) :: v + Gen1 = SetDue(v, ChangeGen1) +#ifdef deb + print*, 'Gen1%ProblemType=', V%ProblemType + print*, 'Gen1%StatusType=', V%StatusType + print*, 'Gen1%Value=', V%Value +#endif + end subroutine + + subroutine SetGen2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetGen2 + !DEC$ ATTRIBUTES ALIAS: 'SetGen2' :: SetGen2 + implicit none + type(CProblem), intent(in) :: v + Gen2 = SetDue(v, ChangeGen2) +#ifdef deb + print*, 'Gen2%ProblemType=', V%ProblemType + print*, 'Gen2%StatusType=', V%StatusType + print*, 'Gen2%Value=', V%Value +#endif + end subroutine + + subroutine SetGen3(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetGen3 + !DEC$ ATTRIBUTES ALIAS: 'SetGen3' :: SetGen3 + implicit none + type(CProblem), intent(in) :: v + Gen3 = SetDue(v, ChangeGen3) +#ifdef deb + print*, 'Gen3%ProblemType=', V%ProblemType + print*, 'Gen3%StatusType=', V%StatusType + print*, 'Gen3%Value=', V%Value +#endif + end subroutine + + subroutine SetGen4(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetGen4 + !DEC$ ATTRIBUTES ALIAS: 'SetGen4' :: SetGen4 + implicit none + type(CProblem), intent(in) :: v + Gen4 = SetDue(v, ChangeGen4) +#ifdef deb + print*, 'Gen4%ProblemType=', V%ProblemType + print*, 'Gen4%StatusType=', V%StatusType + print*, 'Gen4%Value=', V%Value +#endif + end subroutine + + subroutine SetScr1(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetScr1 + !DEC$ ATTRIBUTES ALIAS: 'SetScr1' :: SetScr1 + implicit none + type(CProblem), intent(in) :: v + Scr1 = SetDue(v, ChangeScr1) +#ifdef deb + print*, 'Scr1%ProblemType=', V%ProblemType + print*, 'Scr1%StatusType=', V%StatusType + print*, 'Scr1%Value=', V%Value +#endif + end subroutine + + subroutine SetScr2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetScr2 + !DEC$ ATTRIBUTES ALIAS: 'SetScr2' :: SetScr2 + implicit none + type(CProblem), intent(in) :: v + Scr2 = SetDue(v, ChangeScr2) +#ifdef deb + print*, 'Scr2%ProblemType=', V%ProblemType + print*, 'Scr2%StatusType=', V%StatusType + print*, 'Scr2%Value=', V%Value +#endif + end subroutine + + subroutine SetScr3(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetScr3 + !DEC$ ATTRIBUTES ALIAS: 'SetScr3' :: SetScr3 + implicit none + type(CProblem), intent(in) :: v + Scr3 = SetDue(v, ChangeScr3) +#ifdef deb + print*, 'Scr3%ProblemType=', V%ProblemType + print*, 'Scr3%StatusType=', V%StatusType + print*, 'Scr3%Value=', V%Value +#endif + end subroutine + + subroutine SetScr4(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetScr4 + !DEC$ ATTRIBUTES ALIAS: 'SetScr4' :: SetScr4 + implicit none + type(CProblem), intent(in) :: v + Scr4 = SetDue(v, ChangeScr4) +#ifdef deb + print*, 'Scr4%ProblemType=', V%ProblemType + print*, 'Scr4%StatusType=', V%StatusType + print*, 'Scr4%Value=', V%Value +#endif + end subroutine + +end module COtherProblems \ No newline at end of file diff --git a/CSharp/Problems/COtherProblemsVariables.f90 b/CSharp/Problems/COtherProblemsVariables.f90 new file mode 100644 index 0000000..f3a158d --- /dev/null +++ b/CSharp/Problems/COtherProblemsVariables.f90 @@ -0,0 +1,300 @@ +module COtherProblemsVariables + use CProblemDifinition + implicit none + public + + ! Input vars + type(CProblem) :: RigAlarm + type(CProblem) :: RigWaterSupply + type(CProblem) :: RigAir + type(CProblem) :: Gen1 + type(CProblem) :: Gen2 + type(CProblem) :: Gen3 + type(CProblem) :: Gen4 + type(CProblem) :: Scr1 + type(CProblem) :: Scr2 + type(CProblem) :: Scr3 + type(CProblem) :: Scr4 + + procedure (ActionInteger), pointer :: RigAlarmPtr + procedure (ActionInteger), pointer :: RigWaterSupplyPtr + procedure (ActionInteger), pointer :: RigAirPtr + procedure (ActionInteger), pointer :: Gen1Ptr + procedure (ActionInteger), pointer :: Gen2Ptr + procedure (ActionInteger), pointer :: Gen3Ptr + procedure (ActionInteger), pointer :: Gen4Ptr + procedure (ActionInteger), pointer :: Scr1Ptr + procedure (ActionInteger), pointer :: Scr2Ptr + procedure (ActionInteger), pointer :: Scr3Ptr + procedure (ActionInteger), pointer :: Scr4Ptr + + contains + + subroutine ProcessOtherProblemsDueTime(time) + implicit none + integer :: time + + if(RigAlarm%ProblemType == Time_ProblemType) call ProcessDueTime(RigAlarm, ChangeRigAlarm, time) + if(RigWaterSupply%ProblemType == Time_ProblemType) call ProcessDueTime(RigWaterSupply, ChangeRigWaterSupply, time) + if(RigAir%ProblemType == Time_ProblemType) call ProcessDueTime(RigAir, ChangeRigAir, time) + if(Gen1%ProblemType == Time_ProblemType) call ProcessDueTime(Gen1, ChangeGen1, time) + if(Gen2%ProblemType == Time_ProblemType) call ProcessDueTime(Gen2, ChangeGen2, time) + if(Gen3%ProblemType == Time_ProblemType) call ProcessDueTime(Gen3, ChangeGen3, time) + if(Gen4%ProblemType == Time_ProblemType) call ProcessDueTime(Gen4, ChangeGen4, time) + if(Scr1%ProblemType == Time_ProblemType) call ProcessDueTime(Scr1, ChangeScr1, time) + if(Scr2%ProblemType == Time_ProblemType) call ProcessDueTime(Scr2, ChangeScr2, time) + if(Scr3%ProblemType == Time_ProblemType) call ProcessDueTime(Scr3, ChangeScr3, time) + if(Scr4%ProblemType == Time_ProblemType) call ProcessDueTime(Scr4, ChangeScr4, time) + + end subroutine + + subroutine ProcessOtherProblemsDuePumpStrokes(strokes) + implicit none + integer :: strokes + + if(RigAlarm%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(RigAlarm, ChangeRigAlarm, strokes) + if(RigWaterSupply%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(RigWaterSupply, ChangeRigWaterSupply, strokes) + if(RigAir%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(RigAir, ChangeRigAir, strokes) + if(Gen1%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Gen1, ChangeGen1, strokes) + if(Gen2%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Gen2, ChangeGen2, strokes) + if(Gen3%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Gen3, ChangeGen3, strokes) + if(Gen4%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Gen4, ChangeGen4, strokes) + if(Scr1%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Scr1, ChangeScr1, strokes) + if(Scr2%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Scr2, ChangeScr2, strokes) + if(Scr3%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Scr3, ChangeScr3, strokes) + if(Scr4%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Scr4, ChangeScr4, strokes) + + end subroutine + + subroutine ProcessOtherProblemsDueVolumePumped(volume) + implicit none + real(8) :: volume + + if(RigAlarm%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(RigAlarm, ChangeRigAlarm, volume) + if(RigWaterSupply%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(RigWaterSupply, ChangeRigWaterSupply, volume) + if(RigAir%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(RigAir, ChangeRigAir, volume) + if(Gen1%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Gen1, ChangeGen1, volume) + if(Gen2%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Gen2, ChangeGen2, volume) + if(Gen3%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Gen3, ChangeGen3, volume) + if(Gen4%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Gen4, ChangeGen4, volume) + if(Scr1%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Scr1, ChangeScr1, volume) + if(Scr2%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Scr2, ChangeScr2, volume) + if(Scr3%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Scr3, ChangeScr3, volume) + if(Scr4%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Scr4, ChangeScr4, volume) + + end subroutine + + subroutine ProcessOtherProblemsDueDistanceDrilled(distance) + implicit none + real(8) :: distance + + if(RigAlarm%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(RigAlarm, ChangeRigAlarm, distance) + if(RigWaterSupply%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(RigWaterSupply, ChangeRigWaterSupply, distance) + if(RigAir%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(RigAir, ChangeRigAir, distance) + if(Gen1%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Gen1, ChangeGen1, distance) + if(Gen2%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Gen2, ChangeGen2, distance) + if(Gen3%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Gen3, ChangeGen3, distance) + if(Gen4%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Gen4, ChangeGen4, distance) + if(Scr1%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Scr1, ChangeScr1, distance) + if(Scr2%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Scr2, ChangeScr2, distance) + if(Scr3%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Scr3, ChangeScr3, distance) + if(Scr4%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Scr4, ChangeScr4, distance) + + end subroutine + + + subroutine ChangeRigAlarm(status) + implicit none + integer, intent (in) :: status + if(associated(RigAlarmPtr)) call RigAlarmPtr(status) + !if(status == Clear_StatusType) print*,'On_RigAlarm_Clear' + !if(status == Executed_StatusType) print*,'On_RigAlarm_Execute' + endsubroutine + + subroutine ChangeRigWaterSupply(status) + implicit none + integer, intent (in) :: status + if(associated(RigWaterSupplyPtr)) call RigWaterSupplyPtr(status) + !if(status == Clear_StatusType) print*,'On_RigWaterSupply_Clear' + !if(status == Executed_StatusType) print*,'On_RigWaterSupply_Execute' + endsubroutine + + subroutine ChangeRigAir(status) + use VARIABLES + implicit none + integer, intent (in) :: status + if(associated(RigAirPtr)) call RigAirPtr(status) + if(status == Clear_StatusType) RigAirMalf = 0 + if(status == Executed_StatusType) RigAirMalf = 1 + endsubroutine + + subroutine ChangeGen1(status) + implicit none + integer, intent (in) :: status + if(associated(Gen1Ptr)) call Gen1Ptr(status) + !if(status == Clear_StatusType) print*,'On_Gen1_Clear' + !if(status == Executed_StatusType) print*,'On_Gen1_Execute' + endsubroutine + + subroutine ChangeGen2(status) + implicit none + integer, intent (in) :: status + if(associated(Gen2Ptr)) call Gen2Ptr(status) + !if(status == Clear_StatusType) print*,'On_Gen2_Clear' + !if(status == Executed_StatusType) print*,'On_Gen2_Execute' + endsubroutine + + subroutine ChangeGen3(status) + implicit none + integer, intent (in) :: status + if(associated(Gen3Ptr)) call Gen3Ptr(status) + !if(status == Clear_StatusType) print*,'On_Gen3_Clear' + !if(status == Executed_StatusType) print*,'On_Gen3_Execute' + endsubroutine + + subroutine ChangeGen4(status) + implicit none + integer, intent (in) :: status + if(associated(Gen4Ptr)) call Gen4Ptr(status) + !if(status == Clear_StatusType) print*,'On_Gen4_Clear' + !if(status == Executed_StatusType) print*,'On_Gen4_Execute' + endsubroutine + + subroutine ChangeScr1(status) + implicit none + integer, intent (in) :: status + if(associated(Scr1Ptr)) call Scr1Ptr(status) + !if(status == Clear_StatusType) print*,'On_Scr1_Clear' + !if(status == Executed_StatusType) print*,'On_Scr1_Execute' + endsubroutine + + subroutine ChangeScr2(status) + implicit none + integer, intent (in) :: status + if(associated(Scr2Ptr)) call Scr2Ptr(status) + !if(status == Clear_StatusType) print*,'On_Scr2_Clear' + !if(status == Executed_StatusType) print*,'On_Scr2_Execute' + endsubroutine + + subroutine ChangeScr3(status) + implicit none + integer, intent (in) :: status + if(associated(Scr3Ptr)) call Scr3Ptr(status) + !if(status == Clear_StatusType) print*,'On_Scr3_Clear' + !if(status == Executed_StatusType) print*,'On_Scr3_Execute' + endsubroutine + + subroutine ChangeScr4(status) + implicit none + integer, intent (in) :: status + if(associated(Scr4Ptr)) call Scr4Ptr(status) + !if(status == Clear_StatusType) print*,'On_Scr4_Clear' + !if(status == Executed_StatusType) print*,'On_Scr4_Execute' + endsubroutine + + + + + + + + + + + + + subroutine SubscribeRigAlarm(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeRigAlarm + !DEC$ ATTRIBUTES ALIAS: 'SubscribeRigAlarm' :: SubscribeRigAlarm + implicit none + procedure (ActionInteger) :: v + RigAlarmPtr => v + end subroutine + + subroutine SubscribeRigWaterSupply(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeRigWaterSupply + !DEC$ ATTRIBUTES ALIAS: 'SubscribeRigWaterSupply' :: SubscribeRigWaterSupply + implicit none + procedure (ActionInteger) :: v + RigWaterSupplyPtr => v + end subroutine + + subroutine SubscribeRigAir(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeRigAir + !DEC$ ATTRIBUTES ALIAS: 'SubscribeRigAir' :: SubscribeRigAir + implicit none + procedure (ActionInteger) :: v + RigAirPtr => v + end subroutine + + subroutine SubscribeGen1(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeGen1 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeGen1' :: SubscribeGen1 + implicit none + procedure (ActionInteger) :: v + Gen1Ptr => v + end subroutine + + subroutine SubscribeGen2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeGen2 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeGen2' :: SubscribeGen2 + implicit none + procedure (ActionInteger) :: v + Gen2Ptr => v + end subroutine + + subroutine SubscribeGen3(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeGen3 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeGen3' :: SubscribeGen3 + implicit none + procedure (ActionInteger) :: v + Gen3Ptr => v + end subroutine + + subroutine SubscribeGen4(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeGen4 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeGen4' :: SubscribeGen4 + implicit none + procedure (ActionInteger) :: v + Gen4Ptr => v + end subroutine + + subroutine SubscribeScr1(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeScr1 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeScr1' :: SubscribeScr1 + implicit none + procedure (ActionInteger) :: v + Scr1Ptr => v + end subroutine + + subroutine SubscribeScr2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeScr2 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeScr2' :: SubscribeScr2 + implicit none + procedure (ActionInteger) :: v + Scr2Ptr => v + end subroutine + + subroutine SubscribeScr3(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeScr3 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeScr3' :: SubscribeScr3 + implicit none + procedure (ActionInteger) :: v + Scr3Ptr => v + end subroutine + + subroutine SubscribeScr4(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeScr4 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeScr4' :: SubscribeScr4 + implicit none + procedure (ActionInteger) :: v + Scr4Ptr => v + end subroutine + + + + + + + +end module COtherProblemsVariables \ No newline at end of file diff --git a/CSharp/Problems/CProblemDifinition.f90 b/CSharp/Problems/CProblemDifinition.f90 new file mode 100644 index 0000000..ea23d40 --- /dev/null +++ b/CSharp/Problems/CProblemDifinition.f90 @@ -0,0 +1,154 @@ +module CProblemDifinition + use CIActionReference + implicit none + public + + procedure (ActionInteger), pointer :: Nil => null() + + integer, parameter :: Time_ProblemType = 0 + integer, parameter :: PumpStrokes_ProblemType = 1 + integer, parameter :: VolumePumped_ProblemType = 2 + integer, parameter :: DistanceDrilled_ProblemType = 3 + + integer, parameter :: Clear_StatusType = 0 + integer, parameter :: Now_StatusType = 1 + integer, parameter :: Later_StatusType = 2 + integer, parameter :: Executed_StatusType = 3 + + type, bind(c), public :: CProblem + integer :: ProblemType + integer :: StatusType + real(8) :: Value + real(8) :: DueValue + end type CProblem + + contains + + subroutine Execute(problem, action) + type(CProblem), intent(inout) :: problem + procedure (ActionInteger), pointer, intent(in) :: action + problem%StatusType = Executed_StatusType + if(problem%StatusType == Executed_StatusType .and. associated(action)) call action(Executed_StatusType) + end subroutine + + type(CProblem) function SetDue(problem, action) + use CSimulationVariables + + implicit none + type(CProblem), intent(in) :: problem + procedure (ActionInteger), pointer, intent(in) :: action + real(8) :: CurrentTime + real(8) :: CurrentPumpStrokes + real(8) :: CurrentVolumePumped + real(8) :: CurrentDistanceDrilled + real(8) :: Due + + CurrentTime = 0 + CurrentPumpStrokes = 0 + CurrentVolumePumped = 0 + CurrentDistanceDrilled = 0 + + SetDue = problem + + if(problem%StatusType == Clear_StatusType .and. associated(action)) then + call action(Clear_StatusType) + SetDue%DueValue = 0 + return + endif + + select case (problem%ProblemType) + case(Time_ProblemType) + select case (SimulationState) + case(SimulationState_Stopped) + CurrentTime = 0 + case(SimulationState_Started) + CurrentTime = dble(SimulationTime) + case(SimulationState_Paused) + CurrentTime = dble(SimulationTime) + end select + Due = problem%Value + CurrentTime + case(PumpStrokes_ProblemType) + select case (SimulationState) + case(SimulationState_Stopped) + CurrentPumpStrokes = 0 + case(SimulationState_Started) + CurrentPumpStrokes = TotalPumpStrokes + case(SimulationState_Paused) + CurrentPumpStrokes = TotalPumpStrokes + end select + Due = problem%Value + CurrentPumpStrokes + case(VolumePumped_ProblemType) + select case (SimulationState) + case(SimulationState_Stopped) + CurrentVolumePumped = 0 + case(SimulationState_Started) + CurrentVolumePumped = TotalVolumePumped + case(SimulationState_Paused) + CurrentVolumePumped = TotalVolumePumped + end select + Due = problem%Value + CurrentVolumePumped + case(DistanceDrilled_ProblemType) + select case (SimulationState) + case(SimulationState_Stopped) + CurrentDistanceDrilled = 0 + case(SimulationState_Started) + CurrentDistanceDrilled = DistanceDrilled + case(SimulationState_Paused) + CurrentDistanceDrilled = DistanceDrilled + end select + Due = problem%Value + CurrentDistanceDrilled + end select + + SetDue%DueValue = Due + + + end function SetDue + + + subroutine ProcessDueTime(problem, action, time) + use CSimulationVariables + use CLog3 + implicit none + type(CProblem) :: problem + procedure (ActionInteger), pointer, intent(in) :: action + integer :: time + if(problem%ProblemType == Time_ProblemType .and. problem%StatusType /= Executed_StatusType .and. problem%StatusType /= Clear_StatusType) then + if(time >= int(problem%DueValue)) call Execute(problem, action) + end if + end subroutine + + subroutine ProcessDuePumpStrokes(problem, action, strokes) + use CSimulationVariables + implicit none + type(CProblem) :: problem + procedure (ActionInteger), pointer, intent(in) :: action + integer :: strokes + if(problem%ProblemType == PumpStrokes_ProblemType .and. problem%StatusType /= Executed_StatusType .and. problem%StatusType /= Clear_StatusType) then + if(strokes >= int(problem%DueValue)) call Execute(problem, action) + end if + end subroutine + + subroutine ProcessDueVolumePumped(problem, action, volume) + use CSimulationVariables + implicit none + type(CProblem) :: problem + procedure (ActionInteger), pointer, intent(in) :: action + real(8) :: volume + if(problem%ProblemType == VolumePumped_ProblemType .and. problem%StatusType /= Executed_StatusType .and. problem%StatusType /= Clear_StatusType) then + if(volume >= problem%DueValue) call Execute(problem, action) + end if + end subroutine + + subroutine ProcessDueDistanceDrilled(problem, action, distance) + use CSimulationVariables + implicit none + type(CProblem) :: problem + procedure (ActionInteger), pointer, intent(in) :: action + real(8) :: distance + if(problem%ProblemType == DistanceDrilled_ProblemType .and. problem%StatusType /= Executed_StatusType .and. problem%StatusType /= Clear_StatusType) then + if(distance >= problem%DueValue) call Execute(problem, action) + end if + end subroutine + + +end module CProblemDifinition \ No newline at end of file diff --git a/CSharp/Problems/CPumpProblems.f90 b/CSharp/Problems/CPumpProblems.f90 new file mode 100644 index 0000000..e79c161 --- /dev/null +++ b/CSharp/Problems/CPumpProblems.f90 @@ -0,0 +1,86 @@ +module CPumpProblems + use CPumpProblemsVariables + implicit none + public + contains + + ! Input routines + subroutine SetPump1PowerFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPump1PowerFail + !DEC$ ATTRIBUTES ALIAS: 'SetPump1PowerFail' :: SetPump1PowerFail + implicit none + type(CProblem), intent(in) :: v + Pump1PowerFail = SetDue(v, ChangePump1PowerFail) +#ifdef deb + print*, 'Pump1PowerFail%ProblemType=', V%ProblemType + print*, 'Pump1PowerFail%StatusType=', V%StatusType + print*, 'Pump1PowerFail%Value=', V%Value +#endif + end subroutine + + subroutine SetPump1BlowPopOffValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPump1BlowPopOffValve + !DEC$ ATTRIBUTES ALIAS: 'SetPump1BlowPopOffValve' :: SetPump1BlowPopOffValve + implicit none + type(CProblem), intent(in) :: v + Pump1BlowPopOffValve = SetDue(v, ChangePump1BlowPopOffValve) +#ifdef deb + print*, 'Pump1BlowPopOffValve%ProblemType=', V%ProblemType + print*, 'Pump1BlowPopOffValve%StatusType=', V%StatusType + print*, 'Pump1BlowPopOffValve%Value=', V%Value +#endif + end subroutine + + subroutine SetPump2PowerFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPump2PowerFail + !DEC$ ATTRIBUTES ALIAS: 'SetPump2PowerFail' :: SetPump2PowerFail + implicit none + type(CProblem), intent(in) :: v + Pump2PowerFail = SetDue(v, ChangePump2PowerFail) +#ifdef deb + print*, 'Pump2PowerFail%ProblemType=', V%ProblemType + print*, 'Pump2PowerFail%StatusType=', V%StatusType + print*, 'Pump2PowerFail%Value=', V%Value +#endif + end subroutine + + subroutine SetPump2BlowPopOffValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPump2BlowPopOffValve + !DEC$ ATTRIBUTES ALIAS: 'SetPump2BlowPopOffValve' :: SetPump2BlowPopOffValve + implicit none + type(CProblem), intent(in) :: v + Pump2BlowPopOffValve = SetDue(v, ChangePump2BlowPopOffValve) +#ifdef deb + print*, 'Pump2BlowPopOffValve%ProblemType=', V%ProblemType + print*, 'Pump2BlowPopOffValve%StatusType=', V%StatusType + print*, 'Pump2BlowPopOffValve%Value=', V%Value +#endif + end subroutine + + subroutine SetCementPumpPowerFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCementPumpPowerFail + !DEC$ ATTRIBUTES ALIAS: 'SetCementPumpPowerFail' :: SetCementPumpPowerFail + implicit none + type(CProblem), intent(in) :: v + CementPumpPowerFail = SetDue(v, ChangeCementPumpPowerFail) +#ifdef deb + print*, 'CementPumpPowerFail%ProblemType=', V%ProblemType + print*, 'CementPumpPowerFail%StatusType=', V%StatusType + print*, 'CementPumpPowerFail%Value=', V%Value +#endif + end subroutine + + subroutine SetCementPumpBlowPopOffValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetCementPumpBlowPopOffValve + !DEC$ ATTRIBUTES ALIAS: 'SetCementPumpBlowPopOffValve' :: SetCementPumpBlowPopOffValve + implicit none + type(CProblem), intent(in) :: v + CementPumpBlowPopOffValve = SetDue(v, ChangeCementPumpBlowPopOffValve) +#ifdef deb + print*, 'CementPumpBlowPopOffValve%ProblemType=', V%ProblemType + print*, 'CementPumpBlowPopOffValve%StatusType=', V%StatusType + print*, 'CementPumpBlowPopOffValve%Value=', V%Value +#endif + end subroutine + +end module CPumpProblems \ No newline at end of file diff --git a/CSharp/Problems/CPumpProblemsVariables.f90 b/CSharp/Problems/CPumpProblemsVariables.f90 new file mode 100644 index 0000000..fc82247 --- /dev/null +++ b/CSharp/Problems/CPumpProblemsVariables.f90 @@ -0,0 +1,208 @@ +module CPumpProblemsVariables + use CProblemDifinition + implicit none + public + + ! Input vars + type(CProblem) :: Pump1PowerFail + type(CProblem) :: Pump1BlowPopOffValve + type(CProblem) :: Pump2PowerFail + type(CProblem) :: Pump2BlowPopOffValve + type(CProblem) :: CementPumpPowerFail + type(CProblem) :: CementPumpBlowPopOffValve + + procedure (ActionInteger), pointer :: Pump1PowerFailPtr + procedure (ActionInteger), pointer :: Pump1BlowPopOffValvePtr + procedure (ActionInteger), pointer :: Pump2PowerFailPtr + procedure (ActionInteger), pointer :: Pump2BlowPopOffValvePtr + procedure (ActionInteger), pointer :: CementPumpPowerFailPtr + procedure (ActionInteger), pointer :: CementPumpBlowPopOffValvePtr + + + contains + + subroutine ProcessPumpProblemsDueTime(time) + implicit none + integer :: time + + if(Pump1PowerFail%ProblemType == Time_ProblemType) call ProcessDueTime(Pump1PowerFail, ChangePump1PowerFail, time) + if(Pump1BlowPopOffValve%ProblemType == Time_ProblemType) call ProcessDueTime(Pump1BlowPopOffValve, ChangePump1BlowPopOffValve, time) + if(Pump2PowerFail%ProblemType == Time_ProblemType) call ProcessDueTime(Pump2PowerFail, ChangePump2PowerFail, time) + if(Pump2BlowPopOffValve%ProblemType == Time_ProblemType) call ProcessDueTime(Pump2BlowPopOffValve, ChangePump2BlowPopOffValve, time) + if(CementPumpPowerFail%ProblemType == Time_ProblemType) call ProcessDueTime(CementPumpPowerFail, ChangeCementPumpPowerFail, time) + if(CementPumpBlowPopOffValve%ProblemType == Time_ProblemType) call ProcessDueTime(CementPumpBlowPopOffValve, ChangeCementPumpBlowPopOffValve, time) + + end subroutine + + subroutine ProcessPumpProblemsDuePumpStrokes(strokes) + implicit none + integer :: strokes + + if(Pump1PowerFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Pump1PowerFail, ChangePump1PowerFail, strokes) + if(Pump1BlowPopOffValve%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Pump1BlowPopOffValve, ChangePump1BlowPopOffValve, strokes) + if(Pump2PowerFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Pump2PowerFail, ChangePump2PowerFail, strokes) + if(Pump2BlowPopOffValve%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(Pump2BlowPopOffValve, ChangePump2BlowPopOffValve, strokes) + if(CementPumpPowerFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(CementPumpPowerFail, ChangeCementPumpPowerFail, strokes) + if(CementPumpBlowPopOffValve%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(CementPumpBlowPopOffValve, ChangeCementPumpBlowPopOffValve, strokes) + + end subroutine + + subroutine ProcessPumpProblemsDueVolumePumped(volume) + implicit none + real(8) :: volume + + if(Pump1PowerFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Pump1PowerFail, ChangePump1PowerFail, volume) + if(Pump1BlowPopOffValve%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Pump1BlowPopOffValve, ChangePump1BlowPopOffValve, volume) + if(Pump2PowerFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Pump2PowerFail, ChangePump2PowerFail, volume) + if(Pump2BlowPopOffValve%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(Pump2BlowPopOffValve, ChangePump2BlowPopOffValve, volume) + if(CementPumpPowerFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(CementPumpPowerFail, ChangeCementPumpPowerFail, volume) + if(CementPumpBlowPopOffValve%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(CementPumpBlowPopOffValve, ChangeCementPumpBlowPopOffValve, volume) + + end subroutine + + subroutine ProcessPumpProblemsDueDistanceDrilled(distance) + implicit none + real(8) :: distance + + if(Pump1PowerFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Pump1PowerFail, ChangePump1PowerFail, distance) + if(Pump1BlowPopOffValve%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Pump1BlowPopOffValve, ChangePump1BlowPopOffValve, distance) + if(Pump2PowerFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Pump2PowerFail, ChangePump2PowerFail, distance) + if(Pump2BlowPopOffValve%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(Pump2BlowPopOffValve, ChangePump2BlowPopOffValve, distance) + if(CementPumpPowerFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(CementPumpPowerFail, ChangeCementPumpPowerFail, distance) + if(CementPumpBlowPopOffValve%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(CementPumpBlowPopOffValve, ChangeCementPumpBlowPopOffValve, distance) + + end subroutine + + + + + + + + + + + + subroutine ChangePump1PowerFail(status) + Use Pump_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(Pump1PowerFailPtr)) call Pump1PowerFailPtr(status) + if(status == Clear_StatusType) PUMP(1)%PowerFailMalf=0 + if(status == Executed_StatusType) PUMP(1)%PowerFailMalf=1 + endsubroutine + + subroutine ChangePump1BlowPopOffValve(status) + Use Pump_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(Pump1BlowPopOffValvePtr)) call Pump1BlowPopOffValvePtr(status) + if(status == Clear_StatusType) PUMP(1)%BlowPopOffMalf=0 + if(status == Executed_StatusType) PUMP(1)%BlowPopOffMalf=1 + endsubroutine + + subroutine ChangePump2PowerFail(status) + Use Pump_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(Pump2PowerFailPtr)) call Pump2PowerFailPtr(status) + if(status == Clear_StatusType) PUMP(2)%PowerFailMalf=0 + if(status == Executed_StatusType) PUMP(2)%PowerFailMalf=1 + endsubroutine + + subroutine ChangePump2BlowPopOffValve(status) + Use Pump_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(Pump2BlowPopOffValvePtr)) call Pump2BlowPopOffValvePtr(status) + if(status == Clear_StatusType) PUMP(2)%BlowPopOffMalf=0 + if(status == Executed_StatusType) PUMP(2)%BlowPopOffMalf=1 + endsubroutine + + subroutine ChangeCementPumpPowerFail(status) + Use Pump_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(CementPumpPowerFailPtr)) call CementPumpPowerFailPtr(status) + if(status == Clear_StatusType) PUMP(3)%PowerFailMalf=0 + if(status == Executed_StatusType) PUMP(3)%PowerFailMalf=1 + endsubroutine + + subroutine ChangeCementPumpBlowPopOffValve(status) + Use Pump_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(CementPumpBlowPopOffValvePtr)) call CementPumpBlowPopOffValvePtr(status) + if(status == Clear_StatusType) PUMP(3)%BlowPopOffMalf=0 + if(status == Executed_StatusType) PUMP(3)%BlowPopOffMalf=1 + endsubroutine + + + + + + + + + + + + + + + + subroutine SubscribePump1PowerFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePump1PowerFail + !DEC$ ATTRIBUTES ALIAS: 'SubscribePump1PowerFail' :: SubscribePump1PowerFail + implicit none + procedure (ActionInteger) :: v + Pump1PowerFailPtr => v + end subroutine + + subroutine SubscribePump1BlowPopOffValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePump1BlowPopOffValve + !DEC$ ATTRIBUTES ALIAS: 'SubscribePump1BlowPopOffValve' :: SubscribePump1BlowPopOffValve + implicit none + procedure (ActionInteger) :: v + Pump1BlowPopOffValvePtr => v + end subroutine + + subroutine SubscribePump2PowerFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePump2PowerFail + !DEC$ ATTRIBUTES ALIAS: 'SubscribePump2PowerFail' :: SubscribePump2PowerFail + implicit none + procedure (ActionInteger) :: v + Pump2PowerFailPtr => v + end subroutine + + subroutine SubscribePump2BlowPopOffValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePump2BlowPopOffValve + !DEC$ ATTRIBUTES ALIAS: 'SubscribePump2BlowPopOffValve' :: SubscribePump2BlowPopOffValve + implicit none + procedure (ActionInteger) :: v + Pump2BlowPopOffValvePtr => v + end subroutine + + subroutine SubscribeCementPumpPowerFail(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeCementPumpPowerFail + !DEC$ ATTRIBUTES ALIAS: 'SubscribeCementPumpPowerFail' :: SubscribeCementPumpPowerFail + implicit none + procedure (ActionInteger) :: v + CementPumpPowerFailPtr => v + end subroutine + + subroutine SubscribeCementPumpBlowPopOffValve(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeCementPumpBlowPopOffValve + !DEC$ ATTRIBUTES ALIAS: 'SubscribeCementPumpBlowPopOffValve' :: SubscribeCementPumpBlowPopOffValve + implicit none + procedure (ActionInteger) :: v + CementPumpBlowPopOffValvePtr => v + end subroutine + + + + + + + +end module CPumpProblemsVariables \ No newline at end of file diff --git a/CSharp/Problems/CRotaryProblems.f90 b/CSharp/Problems/CRotaryProblems.f90 new file mode 100644 index 0000000..1b83828 --- /dev/null +++ b/CSharp/Problems/CRotaryProblems.f90 @@ -0,0 +1,34 @@ +module CRotaryProblems + use CRotaryProblemsVariables + implicit none + public + contains + + ! Input routines + subroutine SetMotorFail2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMotorFail2 + !DEC$ ATTRIBUTES ALIAS: 'SetMotorFail2' :: SetMotorFail2 + implicit none + type(CProblem), intent(in) :: v + MotorFail = SetDue(v, ChangeMotorFail) +#ifdef deb + print*, 'MotorFail%ProblemType=', V%ProblemType + print*, 'MotorFail%StatusType=', V%StatusType + print*, 'MotorFail%Value=', V%Value +#endif + end subroutine + + subroutine SetOverideTorqueLimit2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetOverideTorqueLimit2 + !DEC$ ATTRIBUTES ALIAS: 'SetOverideTorqueLimit2' :: SetOverideTorqueLimit2 + implicit none + type(CProblem), intent(in) :: v + OverideTorqueLimit = SetDue(v, ChangeOverideTorqueLimit) +#ifdef deb + print*, 'OverideTorqueLimit%ProblemType=', V%ProblemType + print*, 'OverideTorqueLimit%StatusType=', V%StatusType + print*, 'OverideTorqueLimit%Value=', V%Value +#endif + end subroutine + +end module CRotaryProblems \ No newline at end of file diff --git a/CSharp/Problems/CRotaryProblemsVariables.f90 b/CSharp/Problems/CRotaryProblemsVariables.f90 new file mode 100644 index 0000000..1564942 --- /dev/null +++ b/CSharp/Problems/CRotaryProblemsVariables.f90 @@ -0,0 +1,106 @@ +module CRotaryProblemsVariables + use CProblemDifinition + implicit none + public + + ! Input vars + type(CProblem) :: MotorFail + type(CProblem) :: OverideTorqueLimit + + procedure (ActionInteger), pointer :: MotorFailPtr + procedure (ActionInteger), pointer :: OverideTorqueLimitPtr + + contains + + subroutine ProcessRotaryProblemsDueTime(time) + implicit none + integer :: time + + if(MotorFail%ProblemType == Time_ProblemType) call ProcessDueTime(MotorFail, ChangeMotorFail, time) + if(OverideTorqueLimit%ProblemType == Time_ProblemType) call ProcessDueTime(OverideTorqueLimit, ChangeOverideTorqueLimit, time) + + end subroutine + + subroutine ProcessRotaryProblemsDuePumpStrokes(strokes) + implicit none + integer :: strokes + + if(MotorFail%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(MotorFail, ChangeMotorFail, strokes) + if(OverideTorqueLimit%ProblemType == PumpStrokes_ProblemType) call ProcessDuePumpStrokes(OverideTorqueLimit, ChangeOverideTorqueLimit, strokes) + + end subroutine + + subroutine ProcessRotaryProblemsDueVolumePumped(volume) + implicit none + real(8) :: volume + + if(MotorFail%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(MotorFail, ChangeMotorFail, volume) + if(OverideTorqueLimit%ProblemType == VolumePumped_ProblemType) call ProcessDueVolumePumped(OverideTorqueLimit, ChangeOverideTorqueLimit, volume) + + end subroutine + + subroutine ProcessRotaryProblemsDueDistanceDrilled(distance) + implicit none + real(8) :: distance + + if(MotorFail%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(MotorFail, ChangeMotorFail, distance) + if(OverideTorqueLimit%ProblemType == DistanceDrilled_ProblemType) call ProcessDueDistanceDrilled(OverideTorqueLimit, ChangeOverideTorqueLimit, distance) + + end subroutine + + + + + + + + subroutine ChangeMotorFail(status) + use RTable_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(MotorFailPtr)) call MotorFailPtr(status) + if(status == Clear_StatusType) RTable%MotorFaileMalf=0 + if(status == Executed_StatusType) RTable%MotorFaileMalf=1 + endsubroutine + + subroutine ChangeOverideTorqueLimit(status) + use RTable_VARIABLES + implicit none + integer, intent (in) :: status + if(associated(OverideTorqueLimitPtr)) call OverideTorqueLimitPtr(status) + if(status == Clear_StatusType) RTable%OverideTorqueLimitMalf=0 + if(status == Executed_StatusType) RTable%OverideTorqueLimitMalf=1 + endsubroutine + + + + + + + + + + + + + + + subroutine SubscribeMotorFail2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMotorFail2 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeMotorFail2' :: SubscribeMotorFail2 + implicit none + procedure (ActionInteger) :: v + MotorFailPtr => v + end subroutine + + subroutine SubscribeOverideTorqueLimit(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeOverideTorqueLimit + !DEC$ ATTRIBUTES ALIAS: 'SubscribeOverideTorqueLimit' :: SubscribeOverideTorqueLimit + implicit none + procedure (ActionInteger) :: v + OverideTorqueLimitPtr => v + end subroutine + + + +end module CRotaryProblemsVariables \ No newline at end of file diff --git a/CSharp/Simulation/CSimulation.f90 b/CSharp/Simulation/CSimulation.f90 new file mode 100644 index 0000000..101aaa2 --- /dev/null +++ b/CSharp/Simulation/CSimulation.f90 @@ -0,0 +1,1080 @@ +module CSimulation + use CSimulationVariables + use CSimulationThreads + use ifcore + use ifmt + implicit none + public + + + contains + + subroutine InitThreads + implicit none + +#ifdef EnableSimulation + !BopStack + BopStackThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + BopStackThread, & + loc(BopStackThreadParam), & + CREATE_SUSPENDED, & + BopStackThreadId ) + + !Pumps + Pump1ThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + Pump1Thread, & + loc(Pump1ThreadParam), & + CREATE_SUSPENDED, & + Pump1ThreadId ) + Pump2ThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + Pump2Thread, & + loc(Pump2ThreadParam), & + CREATE_SUSPENDED, & + Pump2ThreadId ) + Pump3ThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + Pump3Thread, & + loc(Pump3ThreadParam), & + CREATE_SUSPENDED, & + Pump3ThreadId ) + + + !ChokeControl + ChokeControlThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + ChokeControlThread, & + loc(ChokeControlThreadParam), & + CREATE_SUSPENDED, & + ChokeControlThreadId ) + + !ROP + RopThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + RopThread, & + loc(RopThreadParam), & + CREATE_SUSPENDED, & + RopThreadId ) + + !Geo + GeoThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + GeoThread, & + loc(GeoThreadParam), & + CREATE_SUSPENDED, & + GeoThreadId ) + + !RotaryTable + RotaryTableThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + RotaryTableThread, & + loc(RotaryTableThreadParam), & + CREATE_SUSPENDED, & + RotaryTableThreadId ) + + + !Drawworks + DrawworksThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + DrawworksThread, & + loc(DrawworksThreadParam), & + CREATE_SUSPENDED, & + DrawworksThreadId ) + + !FluidFlow + FluidFlowThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + FluidFlowThread, & + loc(FluidFlowThreadParam), & + CREATE_SUSPENDED, & + FluidFlowThreadId ) + + + !TorqueDrag + TorqueDragThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + TorqueDragThread, & + loc(TorqueDragThreadParam), & + CREATE_SUSPENDED, & + TorqueDragThreadId ) + + !TopDrive + TopDriveThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + TopDriveThread, & + loc(TopDriveThreadParam), & + CREATE_SUSPENDED, & + TopDriveThreadId ) + + !MudSystem + MudSystemThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + MudSystemThread, & + loc(MudSystemThreadParam), & + CREATE_SUSPENDED, & + MudSystemThreadId ) + + !PipeRams1 + PipeRams1ThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + PipeRams1Thread, & + loc(PipeRams1ThreadParam), & + CREATE_SUSPENDED, & + PipeRams1ThreadId ) + + !PipeRams2 + PipeRams2ThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + PipeRams2Thread, & + loc(PipeRams2ThreadParam), & + CREATE_SUSPENDED, & + PipeRams2ThreadId ) + + !KillLine + KillLineThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + KillLineThread, & + loc(KillLineThreadParam), & + CREATE_SUSPENDED, & + KillLineThreadId ) + + !ChokeLine + ChokeLineThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + ChokeLineThread, & + loc(ChokeLineThreadParam), & + CREATE_SUSPENDED, & + ChokeLineThreadId ) + + !BlindRams + BlindRamsThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + BlindRamsThread, & + loc(BlindRamsThreadParam), & + CREATE_SUSPENDED, & + BlindRamsThreadId ) + + !Annular + AnnularThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + AnnularThread, & + loc(AnnularThreadParam), & + CREATE_SUSPENDED, & + AnnularThreadId ) + + + !OperationScenarios + OperationScenariosThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + OperationScenariosThread, & + loc(OperationScenariosThreadParam), & + CREATE_SUSPENDED, & + OperationScenariosThreadId ) + + !PathFinding + PathFindingThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + PathFindingThread, & + loc(PathFindingThreadParam), & + CREATE_SUSPENDED, & + PathFindingThreadId ) + + + !Sample + SampleThreadHandle = CreateThread( & + ThreadSecurity, & + ThreadStackSize, & + SampleThread, & + loc(SampleThreadParam), & + CREATE_SUSPENDED, & + SampleThreadId ) + +#endif + + end subroutine InitThreads + + subroutine StopThreads + implicit none + +#ifdef EnableSimulation + !BopStack +#ifdef HardStop + ApiResult = TerminateThread(BopStackThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(BopStackThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(BopStackThreadHandle) + + + + + !Pump 1 +#ifdef HardStop + ApiResult = TerminateThread(Pump1ThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(Pump1ThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(Pump1ThreadHandle) + + !Pump 2 +#ifdef HardStop + ApiResult = TerminateThread(Pump2ThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(Pump2ThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(Pump2ThreadHandle) + + !Pump 3 +#ifdef HardStop + ApiResult = TerminateThread(Pump3ThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(Pump3ThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(Pump3ThreadHandle) + + + !ChokeControl +#ifdef HardStop + ApiResult = TerminateThread(ChokeControlThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(ChokeControlThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(ChokeControlThreadHandle) + + !ROP +#ifdef HardStop + ApiResult = TerminateThread(RopThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(RopThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(RopThreadHandle) + + !Geo +#ifdef HardStop + ApiResult = TerminateThread(GeoThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(GeoThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(GeoThreadHandle) + + !RotaryTable +#ifdef HardStop + ApiResult = TerminateThread(RotaryTableThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(RotaryTableThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(RotaryTableThreadHandle) + + + !Drawworks +#ifdef HardStop + ApiResult = TerminateThread(DrawworksThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(DrawworksThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(DrawworksThreadHandle) + + !FluidFlow +#ifdef HardStop + ApiResult = TerminateThread(FluidFlowThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(FluidFlowThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(FluidFlowThreadHandle) + + + !TorqueDrag +#ifdef HardStop + ApiResult = TerminateThread(TorqueDragThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(TorqueDragThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(TorqueDragThreadHandle) + + + !TopDrive +#ifdef HardStop + ApiResult = TerminateThread(TopDriveThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(TopDriveThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(TopDriveThreadHandle) + + + + !MudSystem +#ifdef HardStop + ApiResult = TerminateThread(MudSystemThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(MudSystemThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(MudSystemThreadHandle) + + !PipeRams1 +#ifdef HardStop + ApiResult = TerminateThread(PipeRams1ThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(PipeRams1ThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(PipeRams1ThreadHandle) + + !PipeRams2 +#ifdef HardStop + ApiResult = TerminateThread(PipeRams2ThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(PipeRams2ThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(PipeRams2ThreadHandle) + + !KillLine +#ifdef HardStop + ApiResult = TerminateThread(KillLineThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(KillLineThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(KillLineThreadHandle) + + !ChokeLine +#ifdef HardStop + ApiResult = TerminateThread(ChokeLineThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(ChokeLineThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(ChokeLineThreadHandle) + + !BlindRams +#ifdef HardStop + ApiResult = TerminateThread(BlindRamsThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(BlindRamsThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(BlindRamsThreadHandle) + + !Annular +#ifdef HardStop + ApiResult = TerminateThread(AnnularThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(AnnularThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(AnnularThreadHandle) + + + !OperationScenarios +#ifdef HardStop + ApiResult = TerminateThread(OperationScenariosThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(OperationScenariosThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(OperationScenariosThreadHandle) + + !PathFinding +#ifdef HardStop + ApiResult = TerminateThread(PathFindingThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(PathFindingThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(PathFindingThreadHandle) + + + + + + + !Sample +#ifdef HardStop + ApiResult = TerminateThread(SampleThreadHandle, 0) +#else + !ApiResult = WaitForSingleObject(SampleThreadHandle, WaitForStopMs) +#endif + ApiResult = CloseHandle(SampleThreadHandle) + +#endif + + + + + + + + + + + + + end subroutine StopThreads + + subroutine Initialization(portable) + !DEC$ ATTRIBUTES DLLEXPORT::Initialization + !DEC$ ATTRIBUTES ALIAS: 'Initialization' :: Initialization + use BopStackMain + use PumpsMain + use ChokeControlMain + use RopMain + use RotaryTableMain + use DrawworksMain + use FluidFlowMain + use TorqueDragMain + use MudSystemMain + use PipeRams1Main + use PipeRams2Main + use KillLineMain + use ChokeLineMain + use BlindRamsMain + use AnnularMain + use TopDriveMain + use GeoMain + + use COperationScenariosMain + use CManifolds + implicit none + logical, intent(in) :: portable + IsPortable = portable + if(portable) then + IsPortableInt = 1 + !print*, 'IsPortableInt=', IsPortableInt + else + IsPortableInt = 0 + !print*, 'IsPortableInt=', IsPortableInt + endif + + call BopStack_Setup() + call Pump1_Setup() + call Pump2_Setup() + call Pump3_Setup() + call ChokeControl_Setup() + call Rop_Setup() + call RotaryTable_Setup() + call Drawworks_Setup() + call FluidFlow_Setup() + call TorqueDrag_Setup() + call MudSystem_Setup() + call PipeRams1_Setup() + call PipeRams2_Setup() + call KillLine_Setup() + call ChokeLine_Setup() + call BlindRams_Setup() + call Annular_Setup() + call TopDrive_Setup() + call Geo_Setup() + + call OperationScenarios_Setup() + call PathFinding_Setup() + + call Sample_Setup() + + call OnSimulationInitialization%RunAll() + + call InitThreads() + + + call OnBopStackPause%Add(BopStack_Thread) + call OnPump1Pause%Add(Pump1_Thread) + call OnPump2Pause%Add(Pump2_Thread) + call OnPump3Pause%Add(Pump3_Thread) + call OnChokeControlPause%Add(ChokeControl_Thread) + call OnRopPause%Add(Rop_Thread) + call OnRotaryTablePause%Add(RotaryTable_Thread) + call OnDrawworksPause%Add(Drawworks_Thread) + call OnFluidFlowPause%Add(FluidFlow_Thread) + call OnTorqueDragPause%Add(TorqueDrag_Thread) + call OnMudSystemPause%Add(MudSystem_Thread) + call OnPipeRams1Pause%Add(PipeRams1_Thread) + call OnPipeRams2Pause%Add(PipeRams2_Thread) + call OnKillLinePause%Add(KillLine_Thread) + call OnChokeLinePause%Add(ChokeLine_Thread) + call OnBlindRamsPause%Add(BlindRams_Thread) + call OnAnnularPause%Add(Annular_Thread) + call OnGeoPause%Add(Geo_Thread) + + call OnSamplePause%Add(Sample_Thread) + + TotalStrokesPtr => TotalStrokesDue + TotalVolumePumpedPtr => TotalVolumePumpedDue + DistanceDrilledPtr => DistanceDrilledDue + + !TODO: CHANGE LATER + call DrillMode_ON() + + end subroutine Initialization + + subroutine StartSimulation + !DEC$ ATTRIBUTES DLLEXPORT::StartSimulation + !DEC$ ATTRIBUTES ALIAS: 'StartSimulation' :: StartSimulation + implicit none + + if(SimulationState_old == SimulationState_Stopped) call OnSimulationStart%RunAll() + IsStopped = .false. + SimulationState = SimulationState_Started + SimulationState_old = SimulationState_Started + + BopStackStarted = .false. + Pump1Started = .false. + Pump2Started = .false. + Pump3Started = .false. + ChokeControlStarted = .false. + RopStarted = .false. + RotaryTableStarted = .false. + DrawworksStarted = .false. + FluidFlowStarted = .false. + TorqueDragStarted = .false. + MudSystemStarted = .false. + PipeRams1Started = .false. + PipeRams2Started = .false. + KillLineStarted = .false. + ChokeLineStarted = .false. + BlindRamsStarted = .false. + AnnularStarted = .false. + GeoStarted = .false. + + SampleStarted = .false. + + +#ifdef EnableSimulation + +#ifdef M_BopStack + ApiResult = ResumeThread(BopStackThreadHandle) +#endif + +#ifdef M_Pump1 + ApiResult = ResumeThread(Pump1ThreadHandle) +#endif +#ifdef M_Pump2 + ApiResult = ResumeThread(Pump2ThreadHandle) +#endif +#ifdef M_Pump3 + ApiResult = ResumeThread(Pump3ThreadHandle) +#endif + + +#ifdef M_ChokeControl + ApiResult = ResumeThread(ChokeControlThreadHandle) +#endif +#ifdef M_Rop + ApiResult = ResumeThread(RopThreadHandle) +#endif +#ifdef M_Geo + ApiResult = ResumeThread(GeoThreadHandle) +#endif +#ifdef M_RotaryTable + ApiResult = ResumeThread(RotaryTableThreadHandle) +#endif + +#ifdef M_Drawworks + ApiResult = ResumeThread(DrawworksThreadHandle) +#endif +#ifdef M_FluidFlow + ApiResult = ResumeThread(FluidFlowThreadHandle) +#endif + +#ifdef M_TorqueDrag + ApiResult = ResumeThread(TorqueDragThreadHandle) +#endif + +#ifdef M_TopDrive + ApiResult = ResumeThread(TopDriveThreadHandle) +#endif + +#ifdef M_MudSystem + ApiResult = ResumeThread(MudSystemThreadHandle) +#endif +#ifdef M_PipeRams1 + ApiResult = ResumeThread(PipeRams1ThreadHandle) +#endif +#ifdef M_PipeRams2 + ApiResult = ResumeThread(PipeRams2ThreadHandle) +#endif +#ifdef M_KillLine + ApiResult = ResumeThread(KillLineThreadHandle) +#endif +#ifdef M_ChokeLine + ApiResult = ResumeThread(ChokeLineThreadHandle) +#endif +#ifdef M_BlindRams + ApiResult = ResumeThread(BlindRamsThreadHandle) +#endif +#ifdef M_Annular + ApiResult = ResumeThread(AnnularThreadHandle) +#endif + + !OperationScenarios + ApiResult = ResumeThread(OperationScenariosThreadHandle) + + !PathFinding + ApiResult = ResumeThread(PathFindingThreadHandle) + +#ifdef M_Sample + ApiResult = ResumeThread(SampleThreadHandle) +#endif + +#endif + end subroutine StartSimulation + + subroutine StopSimulation + !DEC$ ATTRIBUTES DLLEXPORT::StopSimulation + !DEC$ ATTRIBUTES ALIAS: 'StopSimulation' :: StopSimulation + use CDrillingConsoleVariables, only: MP1CPSwitchI, MP2SwitchI, MP1CPSwitch, MP2Switch, MP1Throttle, MP2Throttle, MP1ThrottleUpdate, MP2ThrottleUpdate + implicit none + MP1CPSwitchI = 0 + MP1CPSwitch = 0 + MP2SwitchI = 0 + MP2Switch = .false. + MP1ThrottleUpdate = .false. + MP2ThrottleUpdate = .false. + MP1Throttle = -1.0 + MP2Throttle = -1.0 + !MP1Throttle = 0.0 + !MP2Throttle = 0.0 + + IsSnapshot = .false. + IsStopped = .true. + TotalPumpStrokes = 0 + TotalVolumePumped = 0 + DistanceDrilled = 0 + SimulationState = SimulationState_Stopped + SimulationState_old = SimulationState_Stopped + call OnSimulationStop%RunAll() + call StopThreads() + call InitThreads() + end subroutine StopSimulation + + subroutine PauseSimulation + implicit none + if(SimulationState_old == SimulationState_Stopped) then + SimulationState_old = SimulationState_Started + return + endif + SimulationState_old = SimulationState_Paused +#ifdef EnableSimulation + !BopStack + ApiResult = SuspendThread(BopStackThreadHandle) + + !Pumps + ApiResult = SuspendThread(Pump1ThreadHandle) + ApiResult = SuspendThread(Pump2ThreadHandle) + ApiResult = SuspendThread(Pump3ThreadHandle) + + + !ChokeControl + ApiResult = SuspendThread(ChokeControlThreadHandle) + + !ROP + ApiResult = SuspendThread(RopThreadHandle) + + !Geo + ApiResult = SuspendThread(GeoThreadHandle) + + !RotaryTable + ApiResult = SuspendThread(RotaryTableThreadHandle) + + + !Drawworks + ApiResult = SuspendThread(DrawworksThreadHandle) + + !FluidFlow + ApiResult = SuspendThread(FluidFlowThreadHandle) + + + !TorqueDrag + ApiResult = SuspendThread(TorqueDragThreadHandle) + + + !TopDrive + ApiResult = SuspendThread(TopDriveThreadHandle) + + !MudSystem + ApiResult = SuspendThread(MudSystemThreadHandle) + + !PipeRams1 + ApiResult = SuspendThread(PipeRams1ThreadHandle) + + !PipeRams2 + ApiResult = SuspendThread(PipeRams2ThreadHandle) + + !KillLine + ApiResult = SuspendThread(KillLineThreadHandle) + + !ChokeLine + ApiResult = SuspendThread(ChokeLineThreadHandle) + + !BlindRams + ApiResult = SuspendThread(BlindRamsThreadHandle) + + !Annular + ApiResult = SuspendThread(AnnularThreadHandle) + + + !OperationScenarios + ApiResult = SuspendThread(OperationScenariosThreadHandle) + + !PathFinding + ApiResult = SuspendThread(PathFindingThreadHandle) + + + + !Sample + ApiResult = SuspendThread(SampleThreadHandle) +#endif + call OnSimulationPause%RunAll() + end subroutine PauseSimulation + + logical function IsRunning() + !DEC$ ATTRIBUTES DLLEXPORT :: IsRunning + !DEC$ ATTRIBUTES ALIAS: 'IsRunning' :: IsRunning + implicit none + IsRunning = .not. IsStopped + end function + + subroutine OnTimerTick(time, state) + !DEC$ ATTRIBUTES DLLEXPORT :: OnTimerTick + !DEC$ ATTRIBUTES ALIAS: 'OnTimerTick' :: OnTimerTick + implicit none + integer, intent(in) :: time + integer, intent(in) :: state + SimulationState = state + SimulationTime = time + end subroutine + + subroutine TimerTick(s) + !DEC$ ATTRIBUTES DLLEXPORT :: TimerTick + !DEC$ ATTRIBUTES ALIAS: 'TimerTick' :: TimerTick + use CBitProblemsVariables + use CBopProblemsVariables + use CChokeProblemsVariables + use CDrillStemProblemsVariables + use CGaugesProblemsVariables + use CHoistingProblemsVariables + use CLostProblemsVariables + use CMudTreatmentProblemsVariables + use COtherProblemsVariables + use CPumpProblemsVariables + use CRotaryProblemsVariables + use CKickProblemsVariables + use GeoMain + implicit none + integer, intent(in) :: s + SimulationTime = s + call ProcessBitProblemsDueTime(s) + call ProcessBopProblemsDueTime(s) + call ProcessChokeProblemsDueTime(s) + call ProcessDrillStemProblemsDueTime(s) + call ProcessGaugesProblemsDueTime(s) + call ProcessHoistingProblemsDueTime(s) + call ProcessLostProblemsDueTime(s) + call ProcessMudTreatmentProblemsDueTime(s) + call ProcessOtherProblemsDueTime(s) + call ProcessPumpProblemsDueTime(s) + call ProcessRotaryProblemsDueTime(s) + call ProcessKickProblemsDueTime(s) + +#ifdef S_BopStack + ApiResult = ResumeThread(BopStackThreadHandle) +#endif +#ifdef S_Pump1 + ApiResult = ResumeThread(Pump1ThreadHandle) +#endif +#ifdef S_Pump2 + ApiResult = ResumeThread(Pump2ThreadHandle) +#endif +#ifdef S_Pump3 + ApiResult = ResumeThread(Pump3ThreadHandle) +#endif +#ifdef S_ChokeControl + ApiResult = ResumeThread(ChokeControlThreadHandle) +#endif +#ifdef S_Rop + ApiResult = ResumeThread(RopThreadHandle) +#endif +#ifdef S_RotaryTable + ApiResult = ResumeThread(RotaryTableThreadHandle) +#endif +#ifdef S_Drawworks + ApiResult = ResumeThread(DrawworksThreadHandle) +#endif +#ifdef S_FluidFlow + ApiResult = ResumeThread(FluidFlowThreadHandle) +#endif +#ifdef S_TorqueDrag + ApiResult = ResumeThread(TorqueDragThreadHandle) +#endif +#ifdef S_TopDrive + ApiResult = ResumeThread(TopDriveThreadHandle) +#endif +#ifdef S_MudSystem + ApiResult = ResumeThread(MudSystemThreadHandle) +#endif +#ifdef S_PipeRams1 + ApiResult = ResumeThread(PipeRams1ThreadHandle) +#endif +#ifdef S_PipeRams2 + ApiResult = ResumeThread(PipeRams2ThreadHandle) +#endif +#ifdef S_KillLine + ApiResult = ResumeThread(KillLineThreadHandle) +#endif +#ifdef S_ChokeLine + ApiResult = ResumeThread(ChokeLineThreadHandle) +#endif +#ifdef S_BlindRams + ApiResult = ResumeThread(BlindRamsThreadHandle) +#endif +#ifdef S_Annular ت + ApiResult = ResumeThread(AnnularThreadHandle) +#endif +#ifdef S_Geo + ApiResult = ResumeThread(GeoThreadHandle) +#endif + + + +#ifdef S_Sample + ApiResult = ResumeThread(SampleThreadHandle) +#endif + + end subroutine + + subroutine StateChanged(state) + !DEC$ ATTRIBUTES DLLEXPORT :: StateChanged + !DEC$ ATTRIBUTES ALIAS: 'StateChanged' :: StateChanged + implicit none + integer, intent(in) :: state + SimulationState = state + if(SimulationState == SimulationState_Paused) call PauseSimulation() + end subroutine + + subroutine SetSimulationSpeed(speed) + !DEC$ ATTRIBUTES DLLEXPORT :: SetSimulationSpeed + !DEC$ ATTRIBUTES ALIAS: 'SetSimulationSpeed' :: SetSimulationSpeed + implicit none + integer, intent(in) :: speed + SimulationSpeed = speed + end subroutine + + + subroutine SetSnapshot(s) + !DEC$ ATTRIBUTES DLLEXPORT::SetSnapshot + !DEC$ ATTRIBUTES ALIAS: 'SetSnapshot' :: SetSnapshot + implicit none + logical, intent(in) :: s + IsSnapshot = s + !if(IsSnapshot) SimulationState_old = SimulationState_Started + end subroutine SetSnapshot + + + subroutine TotalStrokesDue(strokes) + use CBitProblemsVariables + use CBopProblemsVariables + use CChokeProblemsVariables + use CDrillStemProblemsVariables + use CGaugesProblemsVariables + use CHoistingProblemsVariables + use CLostProblemsVariables + use CMudTreatmentProblemsVariables + use COtherProblemsVariables + use CPumpProblemsVariables + use CRotaryProblemsVariables + use CKickProblemsVariables + implicit none + integer, intent(in) :: strokes + call ProcessBitProblemsDuePumpStrokes(strokes) + call ProcessBopProblemsDuePumpStrokes(strokes) + call ProcessChokeProblemsDuePumpStrokes(strokes) + call ProcessDrillStemProblemsDuePumpStrokes(strokes) + call ProcessGaugesProblemsDuePumpStrokes(strokes) + call ProcessHoistingProblemsDuePumpStrokes(strokes) + call ProcessLostProblemsDuePumpStrokes(strokes) + call ProcessMudTreatmentProblemsDuePumpStrokes(strokes) + call ProcessOtherProblemsDuePumpStrokes(strokes) + call ProcessPumpProblemsDuePumpStrokes(strokes) + call ProcessRotaryProblemsDuePumpStrokes(strokes) + call ProcessKickProblemsDuePumpStrokes(strokes) + + end subroutine + + subroutine TotalVolumePumpedDue(volume) + use CBitProblemsVariables + use CBopProblemsVariables + use CChokeProblemsVariables + use CDrillStemProblemsVariables + use CGaugesProblemsVariables + use CHoistingProblemsVariables + use CLostProblemsVariables + use CMudTreatmentProblemsVariables + use COtherProblemsVariables + use CPumpProblemsVariables + use CRotaryProblemsVariables + use CKickProblemsVariables + implicit none + real(8), intent(in) :: volume + call ProcessBitProblemsDueVolumePumped(volume) + call ProcessBopProblemsDueVolumePumped(volume) + call ProcessChokeProblemsDueVolumePumped(volume) + call ProcessDrillStemProblemsDueVolumePumped(volume) + call ProcessGaugesProblemsDueVolumePumped(volume) + call ProcessHoistingProblemsDueVolumePumped(volume) + call ProcessLostProblemsDueVolumePumped(volume) + call ProcessMudTreatmentProblemsDueVolumePumped(volume) + call ProcessOtherProblemsDueVolumePumped(volume) + call ProcessPumpProblemsDueVolumePumped(volume) + call ProcessRotaryProblemsDueVolumePumped(volume) + call ProcessKickProblemsDueVolumePumped(volume) + + end subroutine + + subroutine DistanceDrilledDue(distance) + use CBitProblemsVariables + use CBopProblemsVariables + use CChokeProblemsVariables + use CDrillStemProblemsVariables + use CGaugesProblemsVariables + use CHoistingProblemsVariables + use CLostProblemsVariables + use CMudTreatmentProblemsVariables + use COtherProblemsVariables + use CPumpProblemsVariables + use CRotaryProblemsVariables + use CKickProblemsVariables + implicit none + real(8), intent(in) :: distance + call ProcessBitProblemsDueDistanceDrilled(distance) + call ProcessBopProblemsDueDistanceDrilled(distance) + call ProcessChokeProblemsDueDistanceDrilled(distance) + call ProcessDrillStemProblemsDueDistanceDrilled(distance) + call ProcessGaugesProblemsDueDistanceDrilled(distance) + call ProcessHoistingProblemsDueDistanceDrilled(distance) + call ProcessLostProblemsDueDistanceDrilled(distance) + call ProcessMudTreatmentProblemsDueDistanceDrilled(distance) + call ProcessOtherProblemsDueDistanceDrilled(distance) + call ProcessPumpProblemsDueDistanceDrilled(distance) + call ProcessRotaryProblemsDueDistanceDrilled(distance) + call ProcessKickProblemsDueDistanceDrilled(distance) + end subroutine + + + + + subroutine BopStack_Thread + implicit none + ApiResult = SuspendThread(BopStackThreadHandle) + end subroutine BopStack_Thread + + subroutine Pump1_Thread + implicit none + ApiResult = SuspendThread(Pump1ThreadHandle) + end subroutine Pump1_Thread + + subroutine Pump2_Thread + implicit none + ApiResult = SuspendThread(Pump2ThreadHandle) + end subroutine Pump2_Thread + + subroutine Pump3_Thread + implicit none + ApiResult = SuspendThread(Pump3ThreadHandle) + end subroutine Pump3_Thread + + subroutine ChokeControl_Thread + implicit none + ApiResult = SuspendThread(ChokeControlThreadHandle) + end subroutine ChokeControl_Thread + + subroutine Rop_Thread + implicit none + ApiResult = SuspendThread(RopThreadHandle) + end subroutine Rop_Thread + + subroutine RotaryTable_Thread + implicit none + ApiResult = SuspendThread(RotaryTableThreadHandle) + end subroutine RotaryTable_Thread + + subroutine Drawworks_Thread + implicit none + ApiResult = SuspendThread(DrawworksThreadHandle) + end subroutine Drawworks_Thread + + subroutine FluidFlow_Thread + implicit none + ApiResult = SuspendThread(FluidFlowThreadHandle) + end subroutine FluidFlow_Thread + + subroutine TorqueDrag_Thread + implicit none + ApiResult = SuspendThread(TorqueDragThreadHandle) + end subroutine TorqueDrag_Thread + + subroutine TopDrive_Thread + implicit none + ApiResult = SuspendThread(TopDriveThreadHandle) + end subroutine TopDrive_Thread + + subroutine MudSystem_Thread + implicit none + ApiResult = SuspendThread(MudSystemThreadHandle) + end subroutine MudSystem_Thread + + subroutine PipeRams1_Thread + implicit none + ApiResult = SuspendThread(PipeRams1ThreadHandle) + end subroutine PipeRams1_Thread + + subroutine PipeRams2_Thread + implicit none + ApiResult = SuspendThread(PipeRams2ThreadHandle) + end subroutine PipeRams2_Thread + + subroutine KillLine_Thread + implicit none + ApiResult = SuspendThread(KillLineThreadHandle) + end subroutine KillLine_Thread + + subroutine ChokeLine_Thread + implicit none + ApiResult = SuspendThread(ChokeLineThreadHandle) + end subroutine ChokeLine_Thread + + subroutine BlindRams_Thread + implicit none + ApiResult = SuspendThread(BlindRamsThreadHandle) + end subroutine BlindRams_Thread + + subroutine Annular_Thread + implicit none + ApiResult = SuspendThread(AnnularThreadHandle) + end subroutine Annular_Thread + + subroutine Geo_Thread + implicit none + ApiResult = SuspendThread(GeoThreadHandle) + end subroutine Geo_Thread + + + + subroutine Sample_Thread + implicit none + ApiResult = SuspendThread(SampleThreadHandle) + end subroutine Sample_Thread + +end module CSimulation \ No newline at end of file diff --git a/CSharp/Simulation/CSimulationThreads.f90 b/CSharp/Simulation/CSimulationThreads.f90 new file mode 100644 index 0000000..257114d --- /dev/null +++ b/CSharp/Simulation/CSimulationThreads.f90 @@ -0,0 +1,146 @@ +module CSimulationThreads + use iso_c_binding + implicit none + public + ! Thread Related Variables + integer(INT_PTR_KIND()), parameter :: ThreadSecurity = 0 + integer(INT_PTR_KIND()), parameter :: ThreadStackSize = 0 + integer(4) :: ApiResult + integer(4) :: WaitForStopMs = 500 + + !BopStack + integer(INT_PTR_KIND()) :: BopStackThreadHandle + integer(INT_PTR_KIND()) :: BopStackThreadId + integer(4) :: BopStackThreadParam = 0 + + !Pumps + integer(INT_PTR_KIND()) :: Pump1ThreadHandle + integer(INT_PTR_KIND()) :: Pump2ThreadHandle + integer(INT_PTR_KIND()) :: Pump3ThreadHandle + integer(INT_PTR_KIND()) :: Pump1ThreadId + integer(INT_PTR_KIND()) :: Pump2ThreadId + integer(INT_PTR_KIND()) :: Pump3ThreadId + integer(4) :: Pump1ThreadParam = 0 + integer(4) :: Pump2ThreadParam = 0 + integer(4) :: Pump3ThreadParam = 0 + + !ChokeControl + integer(INT_PTR_KIND()) :: ChokeControlThreadHandle + integer(INT_PTR_KIND()) :: ChokeControlThreadId + integer(4) :: ChokeControlThreadParam = 0 + + !Rop + integer(INT_PTR_KIND()) :: RopThreadHandle + integer(INT_PTR_KIND()) :: RopThreadId + integer(4) :: RopThreadParam = 0 + + + !RotaryTable + integer(INT_PTR_KIND()) :: RotaryTableThreadHandle + integer(INT_PTR_KIND()) :: RotaryTableThreadId + integer(4) :: RotaryTableThreadParam = 0 + + + !FluidFlow + integer(INT_PTR_KIND()) :: FluidFlowThreadHandle + integer(INT_PTR_KIND()) :: FluidFlowThreadId + integer(4) :: FluidFlowThreadParam = 0 + + !TorqueDrag + integer(INT_PTR_KIND()) :: TorqueDragThreadHandle + integer(INT_PTR_KIND()) :: TorqueDragThreadId + integer(4) :: TorqueDragThreadParam = 0 + + + !TopDrive + integer(INT_PTR_KIND()) :: TopDriveThreadHandle + integer(INT_PTR_KIND()) :: TopDriveThreadId + integer(4) :: TopDriveThreadParam = 0 + + + !Drawworks + integer(INT_PTR_KIND()) :: DrawworksThreadHandle + integer(INT_PTR_KIND()) :: DrawworksThreadId + integer(4) :: DrawworksThreadParam = 0 + + !Geo + integer(INT_PTR_KIND()) :: GeoThreadHandle + integer(INT_PTR_KIND()) :: GeoThreadId + integer(4) :: GeoThreadParam = 0 + + !MudFlowFillIndicator + integer(INT_PTR_KIND()) :: MudFlowFillIndicatorThreadHandle + integer(INT_PTR_KIND()) :: MudFlowFillIndicatorThreadId + integer(4) :: MudFlowFillIndicatorThreadParam = 0 + + !MudSystem + integer(INT_PTR_KIND()) :: MudSystemThreadHandle + integer(INT_PTR_KIND()) :: MudSystemThreadId + integer(4) :: MudSystemThreadParam = 0 + + + + + + + !PipeRams1 + integer(INT_PTR_KIND()) :: PipeRams1ThreadHandle + integer(INT_PTR_KIND()) :: PipeRams1ThreadId + integer(4) :: PipeRams1ThreadParam = 0 + + !PipeRams2 + integer(INT_PTR_KIND()) :: PipeRams2ThreadHandle + integer(INT_PTR_KIND()) :: PipeRams2ThreadId + integer(4) :: PipeRams2ThreadParam = 0 + + !KillLine + integer(INT_PTR_KIND()) :: KillLineThreadHandle + integer(INT_PTR_KIND()) :: KillLineThreadId + integer(4) :: KillLineThreadParam = 0 + + !ChokeLine + integer(INT_PTR_KIND()) :: ChokeLineThreadHandle + integer(INT_PTR_KIND()) :: ChokeLineThreadId + integer(4) :: ChokeLineThreadParam = 0 + + !BlindRams + integer(INT_PTR_KIND()) :: BlindRamsThreadHandle + integer(INT_PTR_KIND()) :: BlindRamsThreadId + integer(4) :: BlindRamsThreadParam = 0 + + !Annular + integer(INT_PTR_KIND()) :: AnnularThreadHandle + integer(INT_PTR_KIND()) :: AnnularThreadId + integer(4) :: AnnularThreadParam = 0 + + + + !OperationScenarios + integer(INT_PTR_KIND()) :: OperationScenariosThreadHandle + integer(INT_PTR_KIND()) :: OperationScenariosThreadId + integer(4) :: OperationScenariosThreadParam = 0 + + + !PathFinding + integer(INT_PTR_KIND()) :: PathFindingThreadHandle + integer(INT_PTR_KIND()) :: PathFindingThreadId + integer(4) :: PathFindingThreadParam = 0 + + + ! just for now + !Sample + integer(INT_PTR_KIND()) :: SampleThreadHandle + integer(INT_PTR_KIND()) :: SampleThreadId + integer(4) :: SampleThreadParam = 0 + + +#ifdef disEnableSimulation + + + !Test + integer(INT_PTR_KIND()) :: TestThreadHandle + integer(INT_PTR_KIND()) :: TestThreadId + integer(4) :: TestThreadParam = 0 +#endif + contains +end module CSimulationThreads \ No newline at end of file diff --git a/CSharp/Simulation/CSimulationVariables.f90 b/CSharp/Simulation/CSimulationVariables.f90 new file mode 100644 index 0000000..482b495 --- /dev/null +++ b/CSharp/Simulation/CSimulationVariables.f90 @@ -0,0 +1,1211 @@ +module CSimulationVariables + use CVoidEventHandlerCollection + ! use CSimulationThreads + use CIActionReference + ! use ifcore + use ifmt + ! use CTimer + use CError + use CLog3 + implicit none + public + + integer, parameter :: SimulationState_Stopped = 0; + integer, parameter :: SimulationState_Started = 1; + integer, parameter :: SimulationState_Paused = 2; + + logical :: IsStopped = .false. + logical :: IsSnapshot = .false. + logical :: IsPortable = .false. + integer :: IsPortableInt = 0 + + integer :: SimulationState_old + integer :: SimulationState + integer :: SimulationTime + integer :: SimulationSpeed ! 1, 2, 5, 10 + + integer :: SleepLimit = 0 + + integer :: TotalPumpStrokes + real(8) :: TotalVolumePumped + real(8) :: DistanceDrilled + + type(VoidEventHandlerCollection) :: OnSimulationInitialization + type(VoidEventHandlerCollection) :: OnSimulationStart + type(VoidEventHandlerCollection) :: OnSimulationStop + type(VoidEventHandlerCollection) :: OnSimulationPause + !type(VoidEventHandlerCollection) :: OnSimulationGetOutput + + procedure (ActionVoid), pointer :: ForceRealTimeSpeedPtr + procedure (ActionBool), pointer :: SpeedChangePossibilityPtr + logical :: SpeedChangePossibilityValue + + procedure (ActionInteger), pointer :: TotalStrokesChangedPtr + procedure (ActionInteger), pointer :: TotalStrokesPtr + procedure (ActionDouble), pointer :: TotalVolumePumpedPtr + procedure (ActionDouble), pointer :: DistanceDrilledPtr + + ! modules... + !BopStack + type(VoidEventHandlerCollection) :: OnBopStackStep + type(VoidEventHandlerCollection) :: OnBopStackStart + type(VoidEventHandlerCollection) :: OnBopStackOutput + type(VoidEventHandlerCollection) :: OnBopStackPause + type(VoidEventHandlerCollection) :: OnBopStackMain + logical :: BopStackStarted + + !Pumps + type(VoidEventHandlerCollection) :: OnPump1Step + type(VoidEventHandlerCollection) :: OnPump1Start + type(VoidEventHandlerCollection) :: OnPump1Output + type(VoidEventHandlerCollection) :: OnPump1Pause + type(VoidEventHandlerCollection) :: OnPump1Main + logical :: Pump1Started + + type(VoidEventHandlerCollection) :: OnPump2Step + type(VoidEventHandlerCollection) :: OnPump2Start + type(VoidEventHandlerCollection) :: OnPump2Output + type(VoidEventHandlerCollection) :: OnPump2Pause + type(VoidEventHandlerCollection) :: OnPump2Main + logical :: Pump2Started + + type(VoidEventHandlerCollection) :: OnPump3Step + type(VoidEventHandlerCollection) :: OnPump3Start + type(VoidEventHandlerCollection) :: OnPump3Output + type(VoidEventHandlerCollection) :: OnPump3Pause + type(VoidEventHandlerCollection) :: OnPump3Main + logical :: Pump3Started + + !ChokeControl + type(VoidEventHandlerCollection) :: OnChokeControlStep + type(VoidEventHandlerCollection) :: OnChokeControlStart + type(VoidEventHandlerCollection) :: OnChokeControlOutput + type(VoidEventHandlerCollection) :: OnChokeControlPause + type(VoidEventHandlerCollection) :: OnChokeControlMain + logical :: ChokeControlStarted + + !ROP + type(VoidEventHandlerCollection) :: OnRopStep + type(VoidEventHandlerCollection) :: OnRopStart + type(VoidEventHandlerCollection) :: OnRopOutput + type(VoidEventHandlerCollection) :: OnRopPause + type(VoidEventHandlerCollection) :: OnRopMain + logical :: RopStarted + + !RotaryTable + type(VoidEventHandlerCollection) :: OnRotaryTableStep + type(VoidEventHandlerCollection) :: OnRotaryTableStart + type(VoidEventHandlerCollection) :: OnRotaryTableOutput + type(VoidEventHandlerCollection) :: OnRotaryTablePause + type(VoidEventHandlerCollection) :: OnRotaryTableMain + logical :: RotaryTableStarted + + !Drawworks + type(VoidEventHandlerCollection) :: OnDrawworksStep + type(VoidEventHandlerCollection) :: OnDrawworksStart + type(VoidEventHandlerCollection) :: OnDrawworksOutput + type(VoidEventHandlerCollection) :: OnDrawworksPause + type(VoidEventHandlerCollection) :: OnDrawworksMain + logical :: DrawworksStarted + + !FluidFlow + type(VoidEventHandlerCollection) :: OnFluidFlowStep + type(VoidEventHandlerCollection) :: OnFluidFlowStart + type(VoidEventHandlerCollection) :: OnFluidFlowOutput + type(VoidEventHandlerCollection) :: OnFluidFlowPause + type(VoidEventHandlerCollection) :: OnFluidFlowMain + logical :: FluidFlowStarted + + !TorqueDrag + type(VoidEventHandlerCollection) :: OnTorqueDragStep + type(VoidEventHandlerCollection) :: OnTorqueDragStart + type(VoidEventHandlerCollection) :: OnTorqueDragOutput + type(VoidEventHandlerCollection) :: OnTorqueDragPause + type(VoidEventHandlerCollection) :: OnTorqueDragMain + logical :: TorqueDragStarted + + + !TopDrive + type(VoidEventHandlerCollection) :: OnTopDriveStep + type(VoidEventHandlerCollection) :: OnTopDriveStart + type(VoidEventHandlerCollection) :: OnTopDriveOutput + type(VoidEventHandlerCollection) :: OnTopDrivePause + type(VoidEventHandlerCollection) :: OnTopDriveMain + logical :: TopDriveStarted + + + !MudSystem + type(VoidEventHandlerCollection) :: OnMudSystemStep + type(VoidEventHandlerCollection) :: OnMudSystemStart + type(VoidEventHandlerCollection) :: OnMudSystemOutput + type(VoidEventHandlerCollection) :: OnMudSystemPause + type(VoidEventHandlerCollection) :: OnMudSystemMain + logical :: MudSystemStarted + + !PipeRams1 + type(VoidEventHandlerCollection) :: OnPipeRams1Step + type(VoidEventHandlerCollection) :: OnPipeRams1Start + type(VoidEventHandlerCollection) :: OnPipeRams1Output + type(VoidEventHandlerCollection) :: OnPipeRams1Pause + type(VoidEventHandlerCollection) :: OnPipeRams1Main + logical :: PipeRams1Started + + !PipeRams2 + type(VoidEventHandlerCollection) :: OnPipeRams2Step + type(VoidEventHandlerCollection) :: OnPipeRams2Start + type(VoidEventHandlerCollection) :: OnPipeRams2Output + type(VoidEventHandlerCollection) :: OnPipeRams2Pause + type(VoidEventHandlerCollection) :: OnPipeRams2Main + logical :: PipeRams2Started + + !KillLine + type(VoidEventHandlerCollection) :: OnKillLineStep + type(VoidEventHandlerCollection) :: OnKillLineStart + type(VoidEventHandlerCollection) :: OnKillLineOutput + type(VoidEventHandlerCollection) :: OnKillLinePause + type(VoidEventHandlerCollection) :: OnKillLineMain + logical :: KillLineStarted + + !ChokeLine + type(VoidEventHandlerCollection) :: OnChokeLineStep + type(VoidEventHandlerCollection) :: OnChokeLineStart + type(VoidEventHandlerCollection) :: OnChokeLineOutput + type(VoidEventHandlerCollection) :: OnChokeLinePause + type(VoidEventHandlerCollection) :: OnChokeLineMain + logical :: ChokeLineStarted + + !BlindRams + type(VoidEventHandlerCollection) :: OnBlindRamsStep + type(VoidEventHandlerCollection) :: OnBlindRamsStart + type(VoidEventHandlerCollection) :: OnBlindRamsOutput + type(VoidEventHandlerCollection) :: OnBlindRamsPause + type(VoidEventHandlerCollection) :: OnBlindRamsMain + logical :: BlindRamsStarted + + !Annular + type(VoidEventHandlerCollection) :: OnAnnularStep + type(VoidEventHandlerCollection) :: OnAnnularStart + type(VoidEventHandlerCollection) :: OnAnnularOutput + type(VoidEventHandlerCollection) :: OnAnnularPause + type(VoidEventHandlerCollection) :: OnAnnularMain + logical :: AnnularStarted + + !Geo + type(VoidEventHandlerCollection) :: OnGeoStep + type(VoidEventHandlerCollection) :: OnGeoStart + type(VoidEventHandlerCollection) :: OnGeoOutput + type(VoidEventHandlerCollection) :: OnGeoPause + type(VoidEventHandlerCollection) :: OnGeoMain + logical :: GeoStarted + + + + + + !OperationScenarios + type(VoidEventHandlerCollection) :: OnOperationScenariosStep + type(VoidEventHandlerCollection) :: OnOperationScenariosOutput + type(VoidEventHandlerCollection) :: OnOperationScenariosPause + type(VoidEventHandlerCollection) :: OnOperationScenariosMain + + !PathFinding + type(VoidEventHandlerCollection) :: OnPathFindingStep + type(VoidEventHandlerCollection) :: OnPathFindingOutput + type(VoidEventHandlerCollection) :: OnPathFindingPause + type(VoidEventHandlerCollection) :: OnPathFindingMain + + ! sample + type(VoidEventHandlerCollection) :: OnSampleStep + type(VoidEventHandlerCollection) :: OnSampleStart + type(VoidEventHandlerCollection) :: OnSampleOutput + type(VoidEventHandlerCollection) :: OnSamplePause + type(VoidEventHandlerCollection) :: OnSampleMain + logical :: SampleStarted + + !!MudFlowFillIndicator + !type(VoidEventHandlerCollection) :: OnMudFlowFillIndicatorStep + !type(VoidEventHandlerCollection) :: OnMudFlowFillIndicatorOutput + !type(VoidEventHandlerCollection) :: OnMudFlowFillIndicatorMain + + + + + + + + + + + + + + contains + + subroutine Quit() + use ifmt + call ExitThread(0) + end subroutine + + real function GetSimulationSpeedSecond() + implicit none + GetSimulationSpeedSecond = 1.0 / SimulationSpeed + end function GetSimulationSpeedSecond + + integer function GetSimulationSpeedMilisecond() + implicit none + GetSimulationSpeedMilisecond = int(GetSimulationSpeedSecond()* 1000.0) + end function GetSimulationSpeedMilisecond + + subroutine DrillMode_ON() + implicit none + call SpeedChangePossibility(.true.) + end subroutine + + subroutine DrillMode_OFF() + implicit none + call ForceRealTimeSpeed() + call SpeedChangePossibility(.false.) + end subroutine + + subroutine ForceRealTimeSpeed() + implicit none + if(associated(ForceRealTimeSpeedPtr)) call ForceRealTimeSpeedPtr() + end subroutine + + subroutine SpeedChangePossibility(v) + implicit none + logical, intent(in) :: v + SpeedChangePossibilityValue = v + if(associated(SpeedChangePossibilityPtr)) call SpeedChangePossibilityPtr(SpeedChangePossibilityValue) + end subroutine + + subroutine SubscribeSpeedChangePossibility(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSpeedChangePossibility + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSpeedChangePossibility' :: SubscribeSpeedChangePossibility + implicit none + procedure (ActionBool) :: a + SpeedChangePossibilityPtr => a + end subroutine + + subroutine SubscribeForceRealTimeSpeed(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeForceRealTimeSpeed + !DEC$ ATTRIBUTES ALIAS: 'SubscribeForceRealTimeSpeed' :: SubscribeForceRealTimeSpeed + implicit none + procedure (ActionVoid) :: a + ForceRealTimeSpeedPtr => a + end subroutine + + subroutine SubscribeTotalStrokesChanged(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeTotalStrokesChanged + !DEC$ ATTRIBUTES ALIAS: 'SubscribeTotalStrokesChanged' :: SubscribeTotalStrokesChanged + implicit none + procedure (ActionInteger) :: a + TotalStrokesChangedPtr => a + end subroutine + + subroutine SetTotalStrokes(strokes) + implicit none + integer, intent(in) :: strokes + if (TotalPumpStrokes == strokes) return + TotalPumpStrokes = strokes + if(associated(TotalStrokesChangedPtr)) call TotalStrokesChangedPtr(TotalPumpStrokes) + if(associated(TotalStrokesPtr)) call TotalStrokesPtr(TotalPumpStrokes) + end subroutine + + subroutine SetTotalVolumePumped(volume) + implicit none + real(8), intent(in) :: volume + if (TotalVolumePumped == volume) return + TotalVolumePumped = volume + if(associated(TotalVolumePumpedPtr)) call TotalVolumePumpedPtr(TotalVolumePumped) + end subroutine + + subroutine SetDistanceDrilled(distance) + implicit none + real(8), intent(in) :: distance + if (DistanceDrilled == distance) return + DistanceDrilled = distance + if(associated(DistanceDrilledPtr)) call DistanceDrilledPtr(DistanceDrilled) + end subroutine + +! integer(4) function BopStackThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_bopstackthread" :: BopStackThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_BopStack +! call OnBopStackMain%RunAll() +! #endif +! #ifdef S_BopStack +! if(.not.BopStackStarted) then +! call OnBopStackStart%RunAll() +! BopStackStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnBopStackStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('BOP Stack Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnBopStackOutput%RunAll() +! end do +! call OnBopStackPause%RunAll() +! end do loop +! #endif +! BopStackThread = 0; +! call ExitThread(0) +! end function BopStackThread + +! integer(4) function Pump1Thread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_pump1thread" :: Pump1Thread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Pump1 +! call OnPump1Main%RunAll() +! #endif +! #ifdef S_Pump1 +! if(.not.Pump1Started) then +! call OnPump1Start%RunAll() +! Pump1Started = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnPump1Step%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Pump 1 Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnPump1Output%RunAll() +! end do +! call OnPump1Pause%RunAll() +! end do loop +! #endif +! Pump1Thread = 0; +! call ExitThread(0) +! end function Pump1Thread + +! integer(4) function Pump2Thread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_pump2thread" :: Pump2Thread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Pump2 +! call OnPump2Main%RunAll() +! #endif +! #ifdef S_Pump2 +! if(.not.Pump2Started) then +! call OnPump2Start%RunAll() +! Pump2Started = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnPump2Step%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Pump 2 Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnPump2Output%RunAll() +! end do +! call OnPump2Pause%RunAll() +! end do loop +! #endif +! Pump2Thread = 0; +! call ExitThread(0) +! end function Pump2Thread + +! integer(4) function Pump3Thread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_pump3thread" :: Pump3Thread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Pump3 +! call OnPump3Main%RunAll() +! #endif +! #ifdef S_Pump3 +! if(.not.Pump3Started) then +! call OnPump3Start%RunAll() +! Pump3Started = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnPump3Step%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Pump 3 Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnPump3Output%RunAll() +! end do +! call OnPump3Pause%RunAll() +! end do loop +! #endif +! Pump3Thread = 0; +! call ExitThread(0) +! end function Pump3Thread + +! integer(4) function ChokeControlThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_chokecontrolthread" :: ChokeControlThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_ChokeControl +! call OnChokeControlMain%RunAll() +! #endif +! #ifdef S_ChokeControl +! if(.not.ChokeControlStarted) then +! call OnChokeControlStart%RunAll() +! ChokeControlStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnChokeControlStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Choke Control Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnChokeControlOutput%RunAll() +! end do +! call OnChokeControlPause%RunAll() +! end do loop +! #endif +! ChokeControlThread = 0; +! call ExitThread(0) +! end function ChokeControlThread + +! integer(4) function RopThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_ropthread" :: RopThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Rop +! call OnRopMain%RunAll() +! #endif +! #ifdef S_Rop +! if(.not.RopStarted) then +! call OnRopStart%RunAll() +! RopStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnRopStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('ROP Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnRopOutput%RunAll() +! end do +! call OnRopPause%RunAll() +! end do loop +! #endif +! RopThread = 0; +! call ExitThread(0) +! end function RopThread + +! integer(4) function RotaryTableThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_rotarytablethread" :: RotaryTableThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_RotaryTable +! call OnRotaryTableMain%RunAll() +! #endif +! #ifdef S_RotaryTable +! if(.not.RotaryTableStarted) then +! call OnRotaryTableStart%RunAll() +! RotaryTableStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnRotaryTableStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Rotary Table Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnRotaryTableOutput%RunAll() +! end do +! call OnRotaryTablePause%RunAll() +! end do loop +! #endif +! RotaryTableThread = 0; +! call ExitThread(0) +! end function RotaryTableThread + +! integer(4) function DrawworksThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_drawworksthread" :: DrawworksThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Drawworks +! call OnDrawworksMain%RunAll() +! #endif +! #ifdef S_Drawworks +! if(.not.DrawworksStarted) then +! call OnDrawworksStart%RunAll() +! DrawworksStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnDrawworksStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Drawworks Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnDrawworksOutput%RunAll() +! end do +! call OnDrawworksPause%RunAll() +! end do loop +! #endif +! DrawworksThread = 0; +! call ExitThread(0) +! end function DrawworksThread + +! integer(4) function FluidFlowThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_fluidflowthread" :: FluidFlowThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_FluidFlow +! call OnFluidFlowMain%RunAll() +! #endif +! #ifdef S_FluidFlow +! if(.not.FluidFlowStarted) then +! call OnFluidFlowStart%RunAll() +! FluidFlowStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnFluidFlowStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Fluid Flow Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnFluidFlowOutput%RunAll() +! end do +! call OnFluidFlowPause%RunAll() +! end do loop +! #endif +! FluidFlowThread = 0; +! call ExitThread(0) +! end function FluidFlowThread + +! integer(4) function TorqueDragThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_torquedragthread" :: TorqueDragThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_TorqueDrag +! call OnTorqueDragMain%RunAll() +! #endif +! #ifdef S_TorqueDrag +! if(.not.TorqueDragStarted) then +! call OnTorqueDragStart%RunAll() +! TorqueDragStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnTorqueDragStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Torque Drag Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnTorqueDragOutput%RunAll() +! end do +! call OnTorqueDragPause%RunAll() +! end do loop +! #endif +! TorqueDragThread = 0; +! call ExitThread(0) +! end function TorqueDragThread + + +! integer(4) function TopDriveThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_topdrivethread" :: TopDriveThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_TopDrive +! call OnTopDriveMain%RunAll() +! #endif +! #ifdef S_TopDrive +! if(.not.TopDriveStarted) then +! call OnTopDriveStart%RunAll() +! TopDriveStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnTopDriveStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('TopDrive Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnTopDriveOutput%RunAll() +! end do +! call OnTopDrivePause%RunAll() +! end do loop +! #endif +! TopDriveThread = 0; +! call ExitThread(0) +! end function TopDriveThread + + +! integer(4) function MudSystemThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_MudSystemthread" :: MudSystemThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_MudSystem +! call OnMudSystemMain%RunAll() +! #endif +! #ifdef S_MudSystem +! if(.not.MudSystemStarted) then +! call OnMudSystemStart%RunAll() +! MudSystemStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnMudSystemStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Mud System Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnMudSystemOutput%RunAll() +! end do +! call OnMudSystemPause%RunAll() +! end do loop +! #endif +! MudSystemThread = 0; +! call ExitThread(0) +! end function MudSystemThread + +! integer(4) function PipeRams1Thread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_piperams1thread" :: PipeRams1Thread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_PipeRams1 +! call OnPipeRams1Main%RunAll() +! #endif +! #ifdef S_PipeRams1 +! if(.not.PipeRams1Started) then +! call OnPipeRams1Start%RunAll() +! PipeRams1Started = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnPipeRams1Step%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Pipe Rams 1 Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnPipeRams1Output%RunAll() +! end do +! call OnPipeRams1Pause%RunAll() +! end do loop +! #endif +! PipeRams1Thread = 0; +! call ExitThread(0) +! end function PipeRams1Thread + +! integer(4) function PipeRams2Thread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_piperams2thread" :: PipeRams2Thread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_PipeRams2 +! call OnPipeRams2Main%RunAll() +! #endif +! #ifdef S_PipeRams2 +! if(.not.PipeRams2Started) then +! call OnPipeRams2Start%RunAll() +! PipeRams2Started = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnPipeRams2Step%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Pipe Rams 2 Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnPipeRams2Output%RunAll() +! end do +! call OnPipeRams2Pause%RunAll() +! end do loop +! #endif +! PipeRams2Thread = 0; +! call ExitThread(0) +! end function PipeRams2Thread + +! integer(4) function KillLineThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_killlinethread" :: KillLineThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_KillLine +! call OnKillLineMain%RunAll() +! #endif +! #ifdef S_KillLine +! if(.not.KillLineStarted) then +! call OnKillLineStart%RunAll() +! KillLineStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnKillLineStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Kill Line Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnKillLineOutput%RunAll() +! end do +! call OnKillLinePause%RunAll() +! end do loop +! #endif +! KillLineThread = 0; +! call ExitThread(0) +! end function KillLineThread + +! integer(4) function ChokeLineThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_chokelinethread" :: ChokeLineThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_ChokeLine +! call OnChokeLineMain%RunAll() +! #endif +! #ifdef S_ChokeLine +! if(.not.ChokeLineStarted) then +! call OnChokeLineStart%RunAll() +! ChokeLineStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnChokeLineStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Choke Line Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnChokeLineOutput%RunAll() +! end do +! call OnChokeLinePause%RunAll() +! end do loop +! #endif +! ChokeLineThread = 0; +! call ExitThread(0) +! end function ChokeLineThread + +! integer(4) function BlindRamsThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_blindramsthread" :: BlindRamsThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_BlindRams +! call OnBlindRamsMain%RunAll() +! #endif +! #ifdef S_BlindRams +! if(.not.BlindRamsStarted) then +! call OnBlindRamsStart%RunAll() +! BlindRamsStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnBlindRamsStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Blind Rams Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnBlindRamsOutput%RunAll() +! end do +! call OnBlindRamsPause%RunAll() +! end do loop +! #endif +! BlindRamsThread = 0; +! call ExitThread(0) +! end function BlindRamsThread + +! integer(4) function AnnularThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_annularthread" :: AnnularThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Annular +! call OnAnnularMain%RunAll() +! #endif +! #ifdef S_Annular +! if(.not.AnnularStarted) then +! call OnAnnularStart%RunAll() +! AnnularStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnAnnularStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Annular Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnAnnularOutput%RunAll() +! end do +! call OnAnnularPause%RunAll() +! end do loop +! #endif +! AnnularThread = 0; +! call ExitThread(0) +! end function AnnularThread + +! integer(4) function GeoThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_geothread" :: GeoThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Geo +! call OnGeoMain%RunAll() +! #endif +! #ifdef S_Geo +! if(.not.GeoStarted) then +! call OnGeoStart%RunAll() +! GeoStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnGeoStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Geo Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnGeoOutput%RunAll() +! end do +! call OnGeoPause%RunAll() +! end do loop +! #endif +! GeoThread = 0; +! call ExitThread(0) +! end function GeoThread + + + +! integer(4) function OperationScenariosThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_operationscenariosthread" :: OperationScenariosThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! call OnOperationScenariosMain%RunAll() +! OperationScenariosThread = 0; +! call ExitThread(0) +! end function OperationScenariosThread + +! integer(4) function PathFindingThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_pathfindingthread" :: PathFindingThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! call OnPathFindingMain%RunAll() +! PathFindingThread = 0; +! call ExitThread(0) +! end function PathFindingThread + + + + + + + + + + + + + + +! integer(4) function SampleThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_samplethread" :: SampleThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Sample +! call OnSampleMain%RunAll() +! #endif +! #ifdef S_Sample +! if(.not.SampleStarted) then +! call OnSampleStart%RunAll() +! SampleStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnSampleStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Sample Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnSampleOutput%RunAll() +! end do +! call OnSamplePause%RunAll() +! end do loop + +! #endif +! SampleThread = 0; +! call ExitThread(0) +! end function SampleThread + +end module CSimulationVariables \ No newline at end of file diff --git a/CSharp/Simulation/CSounds.f90 b/CSharp/Simulation/CSounds.f90 new file mode 100644 index 0000000..0bb7826 --- /dev/null +++ b/CSharp/Simulation/CSounds.f90 @@ -0,0 +1,683 @@ +module CSounds + use CIActionReference + implicit none + public + + ! Input vars + + ! Output vars + integer :: SoundMP1s + integer :: SoundMP2s + integer :: SoundMP3s + integer :: SoundRTs + integer :: SoundDwFws + integer :: SoundDwRevs + integer :: SoundDwBrakes + integer :: SoundChokePumps + integer :: SoundGasThroughChokes + integer :: SoundKoomeyAirPumps + integer :: SoundKoomeyElectricPumps + logical :: SoundRtGearCrashs + logical :: SoundDwGearCrashs + logical :: SoundFloorCollisions + logical :: SoundCrownCollisions + logical :: SoundDwClutchs + logical :: SoundBlowers + logical :: SoundBlowerMp1s + logical :: SoundBlowerMp2s + logical :: SoundBlowerMp3s + logical :: SoundBlowerRts + logical :: SoundBlowerDws + logical :: SoundBlowerStarts + logical :: SoundBlowerShutdowns + logical :: SoundElectricPumps + + + procedure (ActionInteger), pointer :: SoundMP1Ptr + procedure (ActionInteger), pointer :: SoundMP2Ptr + procedure (ActionInteger), pointer :: SoundMP3Ptr + procedure (ActionInteger), pointer :: SoundRTPtr + procedure (ActionInteger), pointer :: SoundDwFwPtr + procedure (ActionInteger), pointer :: SoundDwRevPtr + procedure (ActionInteger), pointer :: SoundDwBrakePtr + procedure (ActionInteger), pointer :: SoundChokePumpPtr + procedure (ActionInteger), pointer :: SoundGasThroughChokePtr + procedure (ActionInteger), pointer :: SoundKoomeyAirPumpPtr + procedure (ActionInteger), pointer :: SoundKoomeyElectricPumpPtr + procedure (ActionBool), pointer :: SoundRtGearCrashPtr + procedure (ActionBool), pointer :: SoundDwGearCrashPtr + procedure (ActionBool), pointer :: SoundFloorCollisionPtr + procedure (ActionBool), pointer :: SoundCrownCollisionPtr + procedure (ActionBool), pointer :: SoundDwClutchPtr + procedure (ActionBool), pointer :: SoundBlowerPtr + procedure (ActionBool), pointer :: SoundBlowerMp1Ptr + procedure (ActionBool), pointer :: SoundBlowerMp2Ptr + procedure (ActionBool), pointer :: SoundBlowerMp3Ptr + procedure (ActionBool), pointer :: SoundBlowerRtPtr + procedure (ActionBool), pointer :: SoundBlowerDwPtr + procedure (ActionBool), pointer :: SoundBlowerStartPtr + procedure (ActionBool), pointer :: SoundBlowerShutdownPtr + procedure (ActionBool), pointer :: SoundElectricPumpPtr + + private :: SoundMP1Ptr, SoundMP2Ptr, SoundMP3Ptr, SoundRTPtr, SoundDwFwPtr, SoundDwRevPtr,SoundDwBrakePtr,SoundChokePumpPtr,SoundGasThroughChokePtr,SoundKoomeyAirPumpPtr, & + SoundKoomeyElectricPumpPtr, SoundRtGearCrashPtr,SoundDwGearCrashPtr,SoundFloorCollisionPtr,SoundCrownCollisionPtr,SoundDwClutchPtr,SoundBlowerPtr, & + SoundBlowerMp1Ptr, SoundBlowerMp2Ptr,SoundBlowerMp3Ptr,SoundBlowerRtPtr,SoundBlowerDwPtr,SoundBlowerStartPtr,SoundBlowerShutdownPtr,SoundElectricPumpPtr + + contains + + + + + + subroutine SetSoundMP1(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundMP1Ptr)) call SoundMP1Ptr(v) + SoundMP1s = v + end subroutine + + subroutine SetSoundMP2(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundMP2Ptr)) call SoundMP2Ptr(v) + SoundMP2s = v + end subroutine + + subroutine SetSoundMP3(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundMP3Ptr)) call SoundMP3Ptr(v) + SoundMP3s = v + end subroutine + + subroutine SetSoundRT(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundRTPtr)) call SoundRTPtr(v) + SoundRTs = v + end subroutine + + subroutine SetSoundDwFw(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundDwFwPtr)) call SoundDwFwPtr(v) + SoundDwFws = v + end subroutine + + subroutine SetSoundDwRev(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundDwRevPtr)) call SoundDwRevPtr(v) + SoundDwRevs = v + end subroutine + + subroutine SetSoundDwBrake(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundDwBrakePtr)) call SoundDwBrakePtr(v) + SoundDwBrakes = v + end subroutine + + subroutine SetSoundChokePump(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundChokePumpPtr)) call SoundChokePumpPtr(v) + SoundChokePumps = v + end subroutine + + subroutine SetSoundGasThroughChoke(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundGasThroughChokePtr)) call SoundGasThroughChokePtr(v) + SoundGasThroughChokes = v + end subroutine + + subroutine SetSoundKoomeyAirPump(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundKoomeyAirPumpPtr)) call SoundKoomeyAirPumpPtr(v) + SoundKoomeyAirPumps = v + end subroutine + + subroutine SetSoundKoomeyElectricPump(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundKoomeyElectricPumpPtr)) call SoundKoomeyElectricPumpPtr(v) + SoundKoomeyElectricPumps = v + end subroutine + + subroutine SetSoundRtGearCrash(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundRtGearCrashPtr)) call SoundRtGearCrashPtr(v) + SoundRtGearCrashs = v + end subroutine + + subroutine SetSoundDwGearCrash(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundDwGearCrashPtr)) call SoundDwGearCrashPtr(v) + SoundDwGearCrashs = v + end subroutine + + subroutine SetSoundFloorCollision(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundFloorCollisionPtr)) call SoundFloorCollisionPtr(v) + SoundFloorCollisions = v + end subroutine + + subroutine SetSoundCrownCollision(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundCrownCollisionPtr)) call SoundCrownCollisionPtr(v) + SoundCrownCollisions = v + end subroutine + + subroutine SetSoundDwClutch(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundDwClutchPtr)) call SoundDwClutchPtr(v) + SoundDwClutchs = v + end subroutine + + subroutine SetSoundBlower(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerPtr)) call SoundBlowerPtr(v) + SoundBlowers = v + end subroutine + + subroutine SetSoundBlowerMP1(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerMp1Ptr)) call SoundBlowerMp1Ptr(v) + SoundBlowerMp1s = v + end subroutine + + subroutine SetSoundBlowerMP2(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerMp2Ptr)) call SoundBlowerMp2Ptr(v) + SoundBlowerMp2s = v + end subroutine + + subroutine SetSoundBlowerMP3(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerMp3Ptr)) call SoundBlowerMp3Ptr(v) + SoundBlowerMp3s = v + end subroutine + + subroutine SetSoundBlowerRT(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerRtPtr)) call SoundBlowerRtPtr(v) + SoundBlowerRts = v + end subroutine + + subroutine SetSoundBlowerDW(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerDwPtr)) call SoundBlowerDwPtr(v) + SoundBlowerDws = v + end subroutine + + + subroutine SetSoundBlowerStart(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerStartPtr)) call SoundBlowerStartPtr(v) + SoundBlowerStarts = v + end subroutine + + subroutine SetSoundBlowerShutdown(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerShutdownPtr)) call SoundBlowerShutdownPtr(v) + SoundBlowerShutdowns = v + end subroutine + + + subroutine SetSoundElectricPump(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundElectricPumpPtr)) call SoundElectricPumpPtr(v) + SoundElectricPumps = v + end subroutine + + + + + + + + + + + + + + + + + + + subroutine SubscribeSoundMP1(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundMP1 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundMP1' :: SubscribeSoundMP1 + implicit none + procedure (ActionInteger) :: v + SoundMP1Ptr => v + end subroutine + + subroutine SubscribeSoundMP2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundMP2 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundMP2' :: SubscribeSoundMP2 + implicit none + procedure (ActionInteger) :: v + SoundMP2Ptr => v + end subroutine + + subroutine SubscribeSoundMP3(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundMP3 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundMP3' :: SubscribeSoundMP3 + implicit none + procedure (ActionInteger) :: v + SoundMP3Ptr => v + end subroutine + + subroutine SubscribeSoundRT(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundRT + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundRT' :: SubscribeSoundRT + implicit none + procedure (ActionInteger) :: v + SoundRTPtr => v + end subroutine + + subroutine SubscribeSoundDwFw(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundDwFw + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundDwFw' :: SubscribeSoundDwFw + implicit none + procedure (ActionInteger) :: v + SoundDwFwPtr => v + end subroutine + + subroutine SubscribeSoundDwRev(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundDwRev + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundDwRev' :: SubscribeSoundDwRev + implicit none + procedure (ActionInteger) :: v + SoundDwRevPtr => v + end subroutine + + subroutine SubscribeSoundDwBrake(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundDwBrake + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundDwBrake' :: SubscribeSoundDwBrake + implicit none + procedure (ActionInteger) :: v + SoundDwBrakePtr => v + end subroutine + + subroutine SubscribeSoundChokePump(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundChokePump + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundChokePump' :: SubscribeSoundChokePump + implicit none + procedure (ActionInteger) :: v + SoundChokePumpPtr => v + end subroutine + + subroutine SubscribeSoundGasThroughChoke(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundGasThroughChoke + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundGasThroughChoke' :: SubscribeSoundGasThroughChoke + implicit none + procedure (ActionInteger) :: v + SoundGasThroughChokePtr => v + end subroutine + + subroutine SubscribeSoundKoomeyAirPump(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundKoomeyAirPump + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundKoomeyAirPump' :: SubscribeSoundKoomeyAirPump + implicit none + procedure (ActionInteger) :: v + SoundKoomeyAirPumpPtr => v + end subroutine + + subroutine SubscribeSoundKoomeyElectricPump(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundKoomeyElectricPump + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundKoomeyElectricPump' :: SubscribeSoundKoomeyElectricPump + implicit none + procedure (ActionInteger) :: v + SoundKoomeyElectricPumpPtr => v + end subroutine + + subroutine SubscribeSoundRtGearCrash(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundRtGearCrash + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundRtGearCrash' :: SubscribeSoundRtGearCrash + implicit none + procedure (ActionBool) :: v + SoundRtGearCrashPtr => v + end subroutine + + subroutine SubscribeSoundDwGearCrash(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundDwGearCrash + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundDwGearCrash' :: SubscribeSoundDwGearCrash + implicit none + procedure (ActionBool) :: v + SoundDwGearCrashPtr => v + end subroutine + + subroutine SubscribeSoundFloorCollision(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundFloorCollision + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundFloorCollision' :: SubscribeSoundFloorCollision + implicit none + procedure (ActionBool) :: v + SoundFloorCollisionPtr => v + end subroutine + + subroutine SubscribeSoundCrownCollision(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundCrownCollision + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundCrownCollision' :: SubscribeSoundCrownCollision + implicit none + procedure (ActionBool) :: v + SoundCrownCollisionPtr => v + end subroutine + + subroutine SubscribeSoundDwClutch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundDwClutch + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundDwClutch' :: SubscribeSoundDwClutch + implicit none + procedure (ActionBool) :: v + SoundDwClutchPtr => v + end subroutine + + subroutine SubscribeSoundBlower(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlower + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlower' :: SubscribeSoundBlower + implicit none + procedure (ActionBool) :: v + SoundBlowerPtr => v + end subroutine + + subroutine SubscribeSoundBlowerMp1(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlowerMp1 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlowerMp1' :: SubscribeSoundBlowerMp1 + implicit none + procedure (ActionBool) :: v + SoundBlowerMp1Ptr => v + end subroutine + + subroutine SubscribeSoundBlowerMp2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlowerMp2 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlowerMp2' :: SubscribeSoundBlowerMp2 + implicit none + procedure (ActionBool) :: v + SoundBlowerMp2Ptr => v + end subroutine + + subroutine SubscribeSoundBlowerMp3(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlowerMp3 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlowerMp3' :: SubscribeSoundBlowerMp3 + implicit none + procedure (ActionBool) :: v + SoundBlowerMp3Ptr => v + end subroutine + + subroutine SubscribeSoundBlowerRt(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlowerRt + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlowerRt' :: SubscribeSoundBlowerRt + implicit none + procedure (ActionBool) :: v + SoundBlowerRtPtr => v + end subroutine + + subroutine SubscribeSoundBlowerDw(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlowerDw + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlowerDw' :: SubscribeSoundBlowerDw + implicit none + procedure (ActionBool) :: v + SoundBlowerDwPtr => v + end subroutine + + subroutine SubscribeSoundBlowerStart(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlowerStart + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlowerStart' :: SubscribeSoundBlowerStart + implicit none + procedure (ActionBool) :: v + SoundBlowerStartPtr => v + end subroutine + + subroutine SubscribeSoundBlowerShutdown(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlowerShutdown + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlowerShutdown' :: SubscribeSoundBlowerShutdown + implicit none + procedure (ActionBool) :: v + SoundBlowerShutdownPtr => v + end subroutine + + subroutine SubscribeSoundElectricPump(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundElectricPump + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundElectricPump' :: SubscribeSoundElectricPump + implicit none + procedure (ActionBool) :: v + SoundElectricPumpPtr => v + end subroutine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ! Input routines + + ! Output routines + integer function GetSoundMP1() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundMP1 + !DEC$ ATTRIBUTES ALIAS: 'GetSoundMP1' :: GetSoundMP1 + implicit none + GetSoundMP1 = SoundMP1s + end function + + integer function GetSoundMP2() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundMP2 + !DEC$ ATTRIBUTES ALIAS: 'GetSoundMP2' :: GetSoundMP2 + implicit none + GetSoundMP2 = SoundMP2s + end function + + integer function GetSoundMP3() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundMP3 + !DEC$ ATTRIBUTES ALIAS: 'GetSoundMP3' :: GetSoundMP3 + implicit none + GetSoundMP3 = SoundMP3s + end function + + integer function GetSoundRT() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundRT + !DEC$ ATTRIBUTES ALIAS: 'GetSoundRT' :: GetSoundRT + implicit none + GetSoundRT = SoundRTs + end function + + integer function GetSoundDwFw() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundDwFw + !DEC$ ATTRIBUTES ALIAS: 'GetSoundDwFw' :: GetSoundDwFw + implicit none + GetSoundDwFw = SoundDwFws + end function + + integer function GetSoundDwRev() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundDwRev + !DEC$ ATTRIBUTES ALIAS: 'GetSoundDwRev' :: GetSoundDwRev + implicit none + GetSoundDwRev = SoundDwRevs + end function + + integer function GetSoundDwBrake() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundDwBrake + !DEC$ ATTRIBUTES ALIAS: 'GetSoundDwBrake' :: GetSoundDwBrake + implicit none + GetSoundDwBrake = SoundDwBrakes + end function + + integer function GetSoundChokePump() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundChokePump + !DEC$ ATTRIBUTES ALIAS: 'GetSoundChokePump' :: GetSoundChokePump + implicit none + GetSoundChokePump = SoundChokePumps + end function + + integer function GetSoundGasThroughChoke() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundGasThroughChoke + !DEC$ ATTRIBUTES ALIAS: 'GetSoundGasThroughChoke' :: GetSoundGasThroughChoke + implicit none + GetSoundGasThroughChoke = SoundGasThroughChokes + end function + + integer function GetSoundKoomeyAirPump() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundKoomeyAirPump + !DEC$ ATTRIBUTES ALIAS: 'GetSoundKoomeyAirPump' :: GetSoundKoomeyAirPump + implicit none + GetSoundKoomeyAirPump = SoundKoomeyAirPumps + end function + + integer function GetSoundKoomeyElectricPump() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundKoomeyElectricPump + !DEC$ ATTRIBUTES ALIAS: 'GetSoundKoomeyElectricPump' :: GetSoundKoomeyElectricPump + implicit none + GetSoundKoomeyElectricPump = SoundKoomeyElectricPumps + end function + + logical function GetSoundRtGearCrash() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundRtGearCrash + !DEC$ ATTRIBUTES ALIAS: 'GetSoundRtGearCrash' :: GetSoundRtGearCrash + implicit none + GetSoundRtGearCrash = SoundRtGearCrashs + end function + + logical function GetSoundDwGearCrash() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundDwGearCrash + !DEC$ ATTRIBUTES ALIAS: 'GetSoundDwGearCrash' :: GetSoundDwGearCrash + implicit none + GetSoundDwGearCrash = SoundDwGearCrashs + end function + + logical function GetSoundFloorCollision() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundFloorCollision + !DEC$ ATTRIBUTES ALIAS: 'GetSoundFloorCollision' :: GetSoundFloorCollision + implicit none + GetSoundFloorCollision = SoundFloorCollisions + end function + + logical function GetSoundCrownCollision() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundCrownCollision + !DEC$ ATTRIBUTES ALIAS: 'GetSoundCrownCollision' :: GetSoundCrownCollision + implicit none + GetSoundCrownCollision = SoundCrownCollisions + end function + + logical function GetSoundDwClutch() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundDwClutch + !DEC$ ATTRIBUTES ALIAS: 'GetSoundDwClutch' :: GetSoundDwClutch + implicit none + GetSoundDwClutch = SoundDwClutchs + end function + + logical function GetSoundBlower() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlower + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlower' :: GetSoundBlower + implicit none + GetSoundBlower = SoundBlowers + end function + + logical function GetSoundBlowerMp1() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlowerMp1 + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlowerMp1' :: GetSoundBlowerMp1 + implicit none + GetSoundBlowerMp1 = SoundBlowerMp1s + end function + + logical function GetSoundBlowerMp2() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlowerMp2 + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlowerMp2' :: GetSoundBlowerMp2 + implicit none + GetSoundBlowerMp2 = SoundBlowerMp2s + end function + + logical function GetSoundBlowerMp3() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlowerMp3 + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlowerMp3' :: GetSoundBlowerMp3 + implicit none + GetSoundBlowerMp3 = SoundBlowerMp3s + end function + + logical function GetSoundBlowerRt() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlowerRt + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlowerRt' :: GetSoundBlowerRt + implicit none + GetSoundBlowerRt = SoundBlowerRts + end function + + logical function GetSoundBlowerDw() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlowerDw + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlowerDw' :: GetSoundBlowerDw + implicit none + GetSoundBlowerDw = SoundBlowerDws + end function + + logical function GetSoundBlowerStart() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlowerStart + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlowerStart' :: GetSoundBlowerStart + implicit none + GetSoundBlowerStart = SoundBlowerStarts + end function + + logical function GetSoundBlowerShutdown() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlowerShutdown + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlowerShutdown' :: GetSoundBlowerShutdown + implicit none + GetSoundBlowerShutdown = SoundBlowerShutdowns + end function + + logical function GetSoundElectricPump() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundElectricPump + !DEC$ ATTRIBUTES ALIAS: 'GetSoundElectricPump' :: GetSoundElectricPump + implicit none + GetSoundElectricPump = SoundElectricPumps + end function + + + + + + + + + + + +end module CSounds \ No newline at end of file diff --git a/CSharp/StudentStation/CStudentStation.f90 b/CSharp/StudentStation/CStudentStation.f90 new file mode 100644 index 0000000..729f367 --- /dev/null +++ b/CSharp/StudentStation/CStudentStation.f90 @@ -0,0 +1,98 @@ +module CStudentStation + use CStudentStationVariables + use CManifolds + implicit none + public + contains + + ! Input routines + subroutine SetFillupHeadInstallation(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetFillupHeadInstallation + !DEC$ ATTRIBUTES ALIAS: 'SetFillupHeadInstallation' :: SetFillupHeadInstallation + implicit none + logical, intent(in) :: v + FillupHeadInstallation = v + if(v)then + call OnFillupHeadInstallationPress%RunAll() + else + call OnFillupHeadRemovePress%RunAll() + endif +#ifdef deb + print*, 'FillupHeadInstallation=', FillupHeadInstallation +#endif + end subroutine + + subroutine SetMudBoxInstallation(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetMudBoxInstallation + !DEC$ ATTRIBUTES ALIAS: 'SetMudBoxInstallation' :: SetMudBoxInstallation + implicit none + logical, intent(in) :: v + MudBoxInstallation = v + if(v)then + call OnMudBoxInstallationPress%RunAll() + else + call OnMudBoxRemovePress%RunAll() + endif +#ifdef deb + print*, 'MudBoxInstallation=', MudBoxInstallation +#endif + end subroutine + + + subroutine SetTapSelector(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetTapSelector + !DEC$ ATTRIBUTES ALIAS: 'SetTapSelector' :: SetTapSelector + implicit none + logical, intent(in) :: v + TapSelector = v +#ifdef deb + print*, 'TapSelector=', TapSelector +#endif + end subroutine + + + subroutine SetPitGainLossZero(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SetPitGainLossZero + !DEC$ ATTRIBUTES ALIAS: 'SetPitGainLossZero' :: SetPitGainLossZero + implicit none + logical, intent(in) :: v + PitGainLossZero = v +#ifdef deb + print*, 'PitGainLossZero=', PitGainLossZero +#endif + end subroutine + + + + + + + + + + ! Output routines + logical function GetFillupHeadInstallation() + !DEC$ ATTRIBUTES DLLEXPORT :: GetFillupHeadInstallation + !DEC$ ATTRIBUTES ALIAS: 'GetFillupHeadInstallation' :: GetFillupHeadInstallation + implicit none + GetFillupHeadInstallation = FillupHeadInstallation + !GetFillupHeadInstallation = .true. + end function + + logical function GetMudBoxInstallation() + !DEC$ ATTRIBUTES DLLEXPORT :: GetMudBoxInstallation + !DEC$ ATTRIBUTES ALIAS: 'GetMudBoxInstallation' :: GetMudBoxInstallation + implicit none + GetMudBoxInstallation = MudBoxInstallation + !GetMudBoxInstallation = .true. + end function + + !logical function GetTapSelector() + !!DEC$ ATTRIBUTES DLLEXPORT :: GetTapSelector + !!DEC$ ATTRIBUTES ALIAS: 'GetTapSelector' :: GetTapSelector + ! implicit none + ! GetTapSelector = TapSelector + !end function + + +end module CStudentStation \ No newline at end of file diff --git a/CSharp/StudentStation/CStudentStationVariables.f90 b/CSharp/StudentStation/CStudentStationVariables.f90 new file mode 100644 index 0000000..37f354f --- /dev/null +++ b/CSharp/StudentStation/CStudentStationVariables.f90 @@ -0,0 +1,21 @@ +module CStudentStationVariables + use CVoidEventHandlerCollection + implicit none + public + + ! Input vars + logical :: FillupHeadInstallation + type(VoidEventHandlerCollection) :: OnFillupHeadInstallationPress + type(VoidEventHandlerCollection) :: OnFillupHeadRemovePress + + + logical :: MudBoxInstallation + type(VoidEventHandlerCollection) :: OnMudBoxInstallationPress + type(VoidEventHandlerCollection) :: OnMudBoxRemovePress + + logical :: TapSelector + logical :: PitGainLossZero + ! Output vars + + contains +end module CStudentStationVariables \ No newline at end of file diff --git a/CSharp/Warnings/CWarnings.f90 b/CSharp/Warnings/CWarnings.f90 new file mode 100644 index 0000000..ab83947 --- /dev/null +++ b/CSharp/Warnings/CWarnings.f90 @@ -0,0 +1,6 @@ +module CWarnings + use CWarningsVariables + implicit none + public + contains +end module CWarnings \ No newline at end of file diff --git a/CSharp/Warnings/CWarningsActions.f90 b/CSharp/Warnings/CWarningsActions.f90 new file mode 100644 index 0000000..3d1b926 --- /dev/null +++ b/CSharp/Warnings/CWarningsActions.f90 @@ -0,0 +1,224 @@ +module CWarningsActions + use CIActionReference + implicit none + public + + procedure (ActionBool), pointer :: PumpWithKellyDisconnectedPtr + procedure (ActionBool), pointer :: PumpWithTopdriveDisconnectedPtr + procedure (ActionBool), pointer :: Pump1PopOffValveBlownPtr + procedure (ActionBool), pointer :: Pump1FailurePtr + procedure (ActionBool), pointer :: Pump2PopOffValveBlownPtr + procedure (ActionBool), pointer :: Pump2FailurePtr + procedure (ActionBool), pointer :: Pump3PopOffValveBlownPtr + procedure (ActionBool), pointer :: Pump3FailurePtr + procedure (ActionBool), pointer :: DrawworksGearsAbusePtr + procedure (ActionBool), pointer :: RotaryGearsAbusePtr + procedure (ActionBool), pointer :: HoistLineBreakPtr + procedure (ActionBool), pointer :: PartedDrillStringPtr + procedure (ActionBool), pointer :: ActiveTankOverflowPtr + procedure (ActionBool), pointer :: ActiveTankUnderVolumePtr + procedure (ActionBool), pointer :: TripTankOverflowPtr + procedure (ActionBool), pointer :: DrillPipeTwistOffPtr + procedure (ActionBool), pointer :: DrillPipePartedPtr + procedure (ActionBool), pointer :: TripWithSlipsSetPtr + procedure (ActionBool), pointer :: BlowoutPtr + procedure (ActionBool), pointer :: UndergroundBlowoutPtr + procedure (ActionBool), pointer :: MaximumWellDepthExceededPtr + procedure (ActionBool), pointer :: CrownCollisionPtr + procedure (ActionBool), pointer :: FloorCollisionPtr + procedure (ActionBool), pointer :: TopdriveRotaryTableConfilictPtr + + contains + subroutine SubscribePumpWithKellyDisconnected(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePumpWithKellyDisconnected + !DEC$ ATTRIBUTES ALIAS: 'SubscribePumpWithKellyDisconnected' :: SubscribePumpWithKellyDisconnected + implicit none + procedure (ActionBool) :: a + PumpWithKellyDisconnectedPtr => a + end subroutine + + subroutine SubscribePumpWithTopdriveDisconnected(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePumpWithTopdriveDisconnected + !DEC$ ATTRIBUTES ALIAS: 'SubscribePumpWithTopdriveDisconnected' :: SubscribePumpWithTopdriveDisconnected + implicit none + procedure (ActionBool) :: a + PumpWithTopdriveDisconnectedPtr => a + end subroutine + + subroutine SubscribePump1PopOffValveBlown(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePump1PopOffValveBlown + !DEC$ ATTRIBUTES ALIAS: 'SubscribePump1PopOffValveBlown' :: SubscribePump1PopOffValveBlown + implicit none + procedure (ActionBool) :: a + Pump1PopOffValveBlownPtr => a + end subroutine + + subroutine SubscribePump1Failure(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePump1Failure + !DEC$ ATTRIBUTES ALIAS: 'SubscribePump1Failure' :: SubscribePump1Failure + implicit none + procedure (ActionBool) :: a + Pump1FailurePtr => a + end subroutine + + subroutine SubscribePump2PopOffValveBlown(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePump2PopOffValveBlown + !DEC$ ATTRIBUTES ALIAS: 'SubscribePump2PopOffValveBlown' :: SubscribePump2PopOffValveBlown + implicit none + procedure (ActionBool) :: a + Pump2PopOffValveBlownPtr => a + end subroutine + + subroutine SubscribePump2Failure(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePump2Failure + !DEC$ ATTRIBUTES ALIAS: 'SubscribePump2Failure' :: SubscribePump2Failure + implicit none + procedure (ActionBool) :: a + Pump2FailurePtr => a + end subroutine + + subroutine SubscribePump3PopOffValveBlown(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePump3PopOffValveBlown + !DEC$ ATTRIBUTES ALIAS: 'SubscribePump3PopOffValveBlown' :: SubscribePump3PopOffValveBlown + implicit none + procedure (ActionBool) :: a + Pump3PopOffValveBlownPtr => a + end subroutine + + subroutine SubscribePump3Failure(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePump3Failure + !DEC$ ATTRIBUTES ALIAS: 'SubscribePump3Failure' :: SubscribePump3Failure + implicit none + procedure (ActionBool) :: a + Pump3FailurePtr => a + end subroutine + + subroutine SubscribeDrawworksGearsAbuse(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeDrawworksGearsAbuse + !DEC$ ATTRIBUTES ALIAS: 'SubscribeDrawworksGearsAbuse' :: SubscribeDrawworksGearsAbuse + implicit none + procedure (ActionBool) :: a + DrawworksGearsAbusePtr => a + end subroutine + + subroutine SubscribeRotaryGearsAbuse(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeRotaryGearsAbuse + !DEC$ ATTRIBUTES ALIAS: 'SubscribeRotaryGearsAbuse' :: SubscribeRotaryGearsAbuse + implicit none + procedure (ActionBool) :: a + RotaryGearsAbusePtr => a + end subroutine + + subroutine SubscribeHoistLineBreak(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeHoistLineBreak + !DEC$ ATTRIBUTES ALIAS: 'SubscribeHoistLineBreak' :: SubscribeHoistLineBreak + implicit none + procedure (ActionBool) :: a + HoistLineBreakPtr => a + end subroutine + + subroutine SubscribePartedDrillString(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribePartedDrillString + !DEC$ ATTRIBUTES ALIAS: 'SubscribePartedDrillString' :: SubscribePartedDrillString + implicit none + procedure (ActionBool) :: a + PartedDrillStringPtr => a + end subroutine + + subroutine SubscribeActiveTankOverflow(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeActiveTankOverflow + !DEC$ ATTRIBUTES ALIAS: 'SubscribeActiveTankOverflow' :: SubscribeActiveTankOverflow + implicit none + procedure (ActionBool) :: a + ActiveTankOverflowPtr => a + end subroutine + + subroutine SubscribeActiveTankUnderVolume(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeActiveTankUnderVolume + !DEC$ ATTRIBUTES ALIAS: 'SubscribeActiveTankUnderVolume' :: SubscribeActiveTankUnderVolume + implicit none + procedure (ActionBool) :: a + ActiveTankUnderVolumePtr => a + end subroutine + + subroutine SubscribeTripTankOverflow(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeTripTankOverflow + !DEC$ ATTRIBUTES ALIAS: 'SubscribeTripTankOverflow' :: SubscribeTripTankOverflow + implicit none + procedure (ActionBool) :: a + TripTankOverflowPtr => a + end subroutine + + subroutine SubscribeDrillPipeTwistOff(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeDrillPipeTwistOff + !DEC$ ATTRIBUTES ALIAS: 'SubscribeDrillPipeTwistOff' :: SubscribeDrillPipeTwistOff + implicit none + procedure (ActionBool) :: a + DrillPipeTwistOffPtr => a + end subroutine + + subroutine SubscribeDrillPipeParted(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeDrillPipeParted + !DEC$ ATTRIBUTES ALIAS: 'SubscribeDrillPipeParted' :: SubscribeDrillPipeParted + implicit none + procedure (ActionBool) :: a + DrillPipePartedPtr => a + end subroutine + + subroutine SubscribeTripWithSlipsSet(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeTripWithSlipsSet + !DEC$ ATTRIBUTES ALIAS: 'SubscribeTripWithSlipsSet' :: SubscribeTripWithSlipsSet + implicit none + procedure (ActionBool) :: a + TripWithSlipsSetPtr => a + end subroutine + + subroutine SubscribeBlowout(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeBlowout + !DEC$ ATTRIBUTES ALIAS: 'SubscribeBlowout' :: SubscribeBlowout + implicit none + procedure (ActionBool) :: a + BlowoutPtr => a + end subroutine + + subroutine SubscribeUndergroundBlowout(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeUndergroundBlowout + !DEC$ ATTRIBUTES ALIAS: 'SubscribeUndergroundBlowout' :: SubscribeUndergroundBlowout + implicit none + procedure (ActionBool) :: a + UndergroundBlowoutPtr => a + end subroutine + + subroutine SubscribeMaximumWellDepthExceeded(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeMaximumWellDepthExceeded + !DEC$ ATTRIBUTES ALIAS: 'SubscribeMaximumWellDepthExceeded' :: SubscribeMaximumWellDepthExceeded + implicit none + procedure (ActionBool) :: a + MaximumWellDepthExceededPtr => a + end subroutine + + subroutine SubscribeCrownCollision(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeCrownCollision + !DEC$ ATTRIBUTES ALIAS: 'SubscribeCrownCollision' :: SubscribeCrownCollision + implicit none + procedure (ActionBool) :: a + CrownCollisionPtr => a + end subroutine + + subroutine SubscribeFloorCollision(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeFloorCollision + !DEC$ ATTRIBUTES ALIAS: 'SubscribeFloorCollision' :: SubscribeFloorCollision + implicit none + procedure (ActionBool) :: a + FloorCollisionPtr => a + end subroutine + + subroutine SubscribeTopdriveRotaryTableConfilict(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeTopdriveRotaryTableConfilict + !DEC$ ATTRIBUTES ALIAS: 'SubscribeTopdriveRotaryTableConfilict' :: SubscribeTopdriveRotaryTableConfilict + implicit none + procedure (ActionBool) :: a + TopdriveRotaryTableConfilictPtr => a + end subroutine + +end module CWarningsActions \ No newline at end of file diff --git a/CSharp/Warnings/CWarningsVariables.f90 b/CSharp/Warnings/CWarningsVariables.f90 new file mode 100644 index 0000000..4b2fc93 --- /dev/null +++ b/CSharp/Warnings/CWarningsVariables.f90 @@ -0,0 +1,1031 @@ +module CWarningsVariables + use CWarningsActions + implicit none + public + + logical :: PumpWithKellyDisconnected + logical :: PumpWithTopdriveDisconnected + logical :: Pump1PopOffValveBlown + logical :: Pump1Failure + logical :: Pump2PopOffValveBlown + logical :: Pump2Failure + logical :: Pump3PopOffValveBlown + logical :: Pump3Failure + logical :: DrawworksGearsAbuse + logical :: RotaryGearsAbuse + logical :: HoistLineBreak + logical :: PartedDrillString + logical :: ActiveTankOverflow + logical :: ActiveTankUnderVolume + logical :: TripTankOverflow + logical :: DrillPipeTwistOff + logical :: DrillPipeParted + logical :: TripWithSlipsSet + logical :: Blowout + logical :: UndergroundBlowout + logical :: MaximumWellDepthExceeded + logical :: CrownCollision + logical :: FloorCollision + logical :: TopdriveRotaryTableConfilict + + contains + + subroutine Activate_PumpWithKellyDisconnected() + implicit none + if(PumpWithKellyDisconnected) return + PumpWithKellyDisconnected = .true. + call RunPumpWithKellyDisconnected() + end subroutine + + subroutine Activate_PumpWithTopdriveDisconnected() + implicit none + if(PumpWithTopdriveDisconnected) return + PumpWithTopdriveDisconnected = .true. + call RunPumpWithTopdriveDisconnected() + end subroutine + + subroutine Activate_Pump1PopOffValveBlown() + implicit none + if(Pump1PopOffValveBlown) return + Pump1PopOffValveBlown = .true. + call RunPump1PopOffValveBlown() + end subroutine + + subroutine Activate_Pump1Failure() + implicit none + if(Pump1Failure) return + Pump1Failure = .true. + call RunPump1Failure() + end subroutine + + subroutine Activate_Pump2PopOffValveBlown() + implicit none + if(Pump2PopOffValveBlown) return + Pump2PopOffValveBlown = .true. + call RunPump2PopOffValveBlown() + end subroutine + + subroutine Activate_Pump2Failure() + implicit none + if(Pump2Failure) return + Pump2Failure = .true. + call RunPump2Failure() + end subroutine + + subroutine Activate_Pump3PopOffValveBlown() + implicit none + if(Pump3PopOffValveBlown) return + Pump3PopOffValveBlown = .true. + call RunPump3PopOffValveBlown() + end subroutine + + subroutine Activate_Pump3Failure() + implicit none + if(Pump3Failure) return + Pump3Failure = .true. + call RunPump3Failure() + end subroutine + + subroutine Activate_DrawworksGearsAbuse() + implicit none + if(DrawworksGearsAbuse) return + DrawworksGearsAbuse = .true. + call RunDrawworksGearsAbuse() + end subroutine + + subroutine Activate_RotaryGearsAbuse() + implicit none + if(RotaryGearsAbuse) return + RotaryGearsAbuse = .true. + call RunRotaryGearsAbuse() + end subroutine + + subroutine Activate_HoistLineBreak() + implicit none + if(HoistLineBreak) return + HoistLineBreak = .true. + call RunHoistLineBreak() + end subroutine + + subroutine Activate_PartedDrillString() + implicit none + if(PartedDrillString) return + PartedDrillString = .true. + call RunPartedDrillString() + end subroutine + + subroutine Activate_ActiveTankOverflow() + implicit none + if(ActiveTankOverflow) return + ActiveTankOverflow = .true. + call RunActiveTankOverflow() + end subroutine + + subroutine Activate_ActiveTankUnderVolume() + implicit none + if(ActiveTankUnderVolume) return + ActiveTankUnderVolume = .true. + call RunActiveTankUnderVolume() + end subroutine + + subroutine Activate_TripTankOverflow() + implicit none + if(TripTankOverflow) return + TripTankOverflow = .true. + call RunTripTankOverflow() + end subroutine + + subroutine Activate_DrillPipeTwistOff() + implicit none + if(DrillPipeTwistOff) return + DrillPipeTwistOff = .true. + call RunDrillPipeTwistOff() + end subroutine + + subroutine Activate_DrillPipeParted() + implicit none + if(DrillPipeParted) return + DrillPipeParted = .true. + call RunDrillPipeParted() + end subroutine + + subroutine Activate_TripWithSlipsSet() + implicit none + if(TripWithSlipsSet) return + TripWithSlipsSet = .true. + call RunTripWithSlipsSet() + end subroutine + + subroutine Activate_Blowout() + implicit none + if(Blowout) return + Blowout = .true. + call RunBlowout() + end subroutine + + subroutine Activate_UndergroundBlowout() + implicit none + if(UndergroundBlowout) return + UndergroundBlowout = .true. + call RunUndergroundBlowout() + end subroutine + + subroutine Activate_MaximumWellDepthExceeded() + implicit none + if(MaximumWellDepthExceeded) return + MaximumWellDepthExceeded = .true. + call RunMaximumWellDepthExceeded() + end subroutine + + subroutine Activate_CrownCollision() + implicit none + if(CrownCollision) return + CrownCollision = .true. + call RunCrownCollision() + end subroutine + + subroutine Activate_FloorCollision() + implicit none + if(FloorCollision) return + FloorCollision = .true. + call RunFloorCollision() + end subroutine + + subroutine Activate_TopdriveRotaryTableConfilict() + implicit none + if(TopdriveRotaryTableConfilict) return + TopdriveRotaryTableConfilict = .true. + call RunTopdriveRotaryTableConfilict() + end subroutine + + + + + + + + + + + + + + + + + + + + + + + + + + + subroutine Deactivate_PumpWithKellyDisconnected() + implicit none + if(.not.PumpWithKellyDisconnected) return + PumpWithKellyDisconnected = .false. + call RunPumpWithKellyDisconnected() + end subroutine + + subroutine Deactivate_PumpWithTopdriveDisconnected() + implicit none + if(.not.PumpWithTopdriveDisconnected) return + PumpWithTopdriveDisconnected = .false. + call RunPumpWithTopdriveDisconnected() + end subroutine + + subroutine Deactivate_Pump1PopOffValveBlown() + use CManifolds + implicit none + if(.not.Pump1PopOffValveBlown) return + Pump1PopOffValveBlown = .false. + call ChangeValve(65, .false.) + call RunPump1PopOffValveBlown() + end subroutine + + subroutine Deactivate_Pump1Failure() + use CManifolds + implicit none + if(.not.Pump1Failure) return + Pump1Failure = .false. + call RunPump1Failure() + end subroutine + + subroutine Deactivate_Pump2PopOffValveBlown() + use CManifolds + implicit none + if(.not.Pump2PopOffValveBlown) return + Pump2PopOffValveBlown = .false. + call ChangeValve(66, .false.) + call RunPump2PopOffValveBlown() + end subroutine + + subroutine Deactivate_Pump2Failure() + use CManifolds + implicit none + if(.not.Pump2Failure) return + Pump2Failure = .false. + call RunPump2Failure() + end subroutine + + subroutine Deactivate_Pump3PopOffValveBlown() + use CManifolds + implicit none + if(.not.Pump3PopOffValveBlown) return + Pump3PopOffValveBlown = .false. + call RunPump3PopOffValveBlown() + end subroutine + + subroutine Deactivate_Pump3Failure() + use CManifolds + implicit none + if(.not.Pump3Failure) return + Pump3Failure = .false. + call RunPump3Failure() + end subroutine + + subroutine Deactivate_DrawworksGearsAbuse() + implicit none + if(.not.DrawworksGearsAbuse) return + DrawworksGearsAbuse = .false. + call RunDrawworksGearsAbuse() + end subroutine + + subroutine Deactivate_RotaryGearsAbuse() + implicit none + if(.not.RotaryGearsAbuse) return + RotaryGearsAbuse = .false. + call RunRotaryGearsAbuse() + end subroutine + + subroutine Deactivate_HoistLineBreak() + implicit none + if(.not.HoistLineBreak) return + HoistLineBreak = .false. + call RunHoistLineBreak() + end subroutine + + subroutine Deactivate_PartedDrillString() + implicit none + if(.not.PartedDrillString) return + PartedDrillString = .false. + call RunPartedDrillString() + end subroutine + + subroutine Deactivate_ActiveTankOverflow() + implicit none + if(.not.ActiveTankOverflow) return + ActiveTankOverflow = .false. + call RunActiveTankOverflow() + end subroutine + + subroutine Deactivate_ActiveTankUnderVolume() + implicit none + if(.not.ActiveTankUnderVolume) return + ActiveTankUnderVolume = .false. + call RunActiveTankUnderVolume() + end subroutine + + subroutine Deactivate_TripTankOverflow() + implicit none + if(.not.TripTankOverflow) return + TripTankOverflow = .false. + call RunTripTankOverflow() + end subroutine + + subroutine Deactivate_DrillPipeTwistOff() + implicit none + if(.not.DrillPipeTwistOff) return + DrillPipeTwistOff = .false. + call RunDrillPipeTwistOff() + end subroutine + + subroutine Deactivate_DrillPipeParted() + implicit none + if(.not.DrillPipeParted) return + DrillPipeParted = .false. + call RunDrillPipeParted() + end subroutine + + subroutine Deactivate_TripWithSlipsSet() + implicit none + if(.not.TripWithSlipsSet) return + TripWithSlipsSet = .false. + call RunTripWithSlipsSet() + end subroutine + + subroutine Deactivate_Blowout() + implicit none + if(.not.Blowout) return + Blowout = .false. + call RunBlowout() + end subroutine + + subroutine Deactivate_UndergroundBlowout() + implicit none + if(.not.UndergroundBlowout) return + UndergroundBlowout = .false. + call RunUndergroundBlowout() + end subroutine + + subroutine Deactivate_MaximumWellDepthExceeded() + implicit none + if(.not.MaximumWellDepthExceeded) return + MaximumWellDepthExceeded = .false. + call RunMaximumWellDepthExceeded() + end subroutine + + subroutine Deactivate_CrownCollision() + implicit none + if(.not.CrownCollision) return + CrownCollision = .false. + call RunCrownCollision() + end subroutine + + subroutine Deactivate_FloorCollision() + implicit none + if(.not.FloorCollision) return + FloorCollision = .false. + call RunFloorCollision() + end subroutine + + subroutine Deactivate_TopdriveRotaryTableConfilict() + implicit none + if(.not.TopdriveRotaryTableConfilict) return + TopdriveRotaryTableConfilict = .false. + call RunTopdriveRotaryTableConfilict() + end subroutine + + + + + + + + + + + + + + + + + + + + + + + + + + subroutine RunPumpWithKellyDisconnected() + implicit none + if(associated(PumpWithKellyDisconnectedPtr)) then + call PumpWithKellyDisconnectedPtr(PumpWithKellyDisconnected) + end if + end subroutine + + subroutine RunPumpWithTopdriveDisconnected() + implicit none + if(associated(PumpWithTopdriveDisconnectedPtr)) then + call PumpWithTopdriveDisconnectedPtr(PumpWithTopdriveDisconnected) + end if + end subroutine + + subroutine RunPump1PopOffValveBlown() + implicit none + if(associated(Pump1PopOffValveBlownPtr)) then + call Pump1PopOffValveBlownPtr(Pump1PopOffValveBlown) + end if + end subroutine + + subroutine RunPump1Failure() + implicit none + if(associated(Pump1FailurePtr)) then + call Pump1FailurePtr(Pump1Failure) + end if + end subroutine + + subroutine RunPump2PopOffValveBlown() + implicit none + if(associated(Pump2PopOffValveBlownPtr)) then + call Pump2PopOffValveBlownPtr(Pump2PopOffValveBlown) + end if + end subroutine + + subroutine RunPump2Failure() + implicit none + if(associated(Pump2FailurePtr)) then + call Pump2FailurePtr(Pump2Failure) + end if + end subroutine + + subroutine RunPump3PopOffValveBlown() + implicit none + if(associated(Pump3PopOffValveBlownPtr)) then + call Pump3PopOffValveBlownPtr(Pump3PopOffValveBlown) + end if + end subroutine + + subroutine RunPump3Failure() + implicit none + if(associated(Pump3FailurePtr)) then + call Pump3FailurePtr(Pump3Failure) + end if + end subroutine + + subroutine RunDrawworksGearsAbuse() + implicit none + if(associated(DrawworksGearsAbusePtr)) then + call DrawworksGearsAbusePtr(DrawworksGearsAbuse) + end if + end subroutine + + subroutine RunRotaryGearsAbuse() + implicit none + if(associated(RotaryGearsAbusePtr)) then + call RotaryGearsAbusePtr(RotaryGearsAbuse) + end if + end subroutine + + subroutine RunHoistLineBreak() + implicit none + if(associated(HoistLineBreakPtr)) then + call HoistLineBreakPtr(HoistLineBreak) + end if + end subroutine + + subroutine RunPartedDrillString() + implicit none + if(associated(PartedDrillStringPtr)) then + call PartedDrillStringPtr(PartedDrillString) + end if + end subroutine + + subroutine RunActiveTankOverflow() + implicit none + if(associated(ActiveTankOverflowPtr)) then + call ActiveTankOverflowPtr(ActiveTankOverflow) + end if + end subroutine + + subroutine RunActiveTankUnderVolume() + implicit none + if(associated(ActiveTankUnderVolumePtr)) then + call ActiveTankUnderVolumePtr(ActiveTankUnderVolume) + end if + end subroutine + + subroutine RunTripTankOverflow() + implicit none + if(associated(TripTankOverflowPtr)) then + call TripTankOverflowPtr(TripTankOverflow) + end if + end subroutine + + subroutine RunDrillPipeTwistOff() + implicit none + if(associated(DrillPipeTwistOffPtr)) then + call DrillPipeTwistOffPtr(DrillPipeTwistOff) + end if + end subroutine + + subroutine RunDrillPipeParted() + implicit none + if(associated(DrillPipePartedPtr)) then + call DrillPipePartedPtr(DrillPipeParted) + end if + end subroutine + + subroutine RunTripWithSlipsSet() + implicit none + if(associated(TripWithSlipsSetPtr)) then + call TripWithSlipsSetPtr(TripWithSlipsSet) + end if + end subroutine + + subroutine RunBlowout() + implicit none + if(associated(BlowoutPtr)) then + call BlowoutPtr(Blowout) + end if + end subroutine + + subroutine RunUndergroundBlowout() + implicit none + if(associated(UndergroundBlowoutPtr)) then + call UndergroundBlowoutPtr(UndergroundBlowout) + end if + end subroutine + + subroutine RunMaximumWellDepthExceeded() + implicit none + if(associated(MaximumWellDepthExceededPtr)) then + call MaximumWellDepthExceededPtr(MaximumWellDepthExceeded) + end if + end subroutine + + subroutine RunCrownCollision() + implicit none + if(associated(CrownCollisionPtr)) then + call CrownCollisionPtr(CrownCollision) + end if + end subroutine + + subroutine RunFloorCollision() + implicit none + if(associated(FloorCollisionPtr)) then + call FloorCollisionPtr(FloorCollision) + end if + end subroutine + + subroutine RunTopdriveRotaryTableConfilict() + implicit none + if(associated(TopdriveRotaryTableConfilictPtr)) then + call TopdriveRotaryTableConfilictPtr(TopdriveRotaryTableConfilict) + end if + end subroutine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + subroutine Activate_PumpWithKellyDisconnected_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_PumpWithKellyDisconnected_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_PumpWithKellyDisconnected_WN' :: Activate_PumpWithKellyDisconnected_WN + implicit none + call Activate_PumpWithKellyDisconnected() + end subroutine + + subroutine Activate_PumpWithTopdriveDisconnected_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_PumpWithTopdriveDisconnected_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_PumpWithTopdriveDisconnected_WN' :: Activate_PumpWithTopdriveDisconnected_WN + implicit none + call Activate_PumpWithTopdriveDisconnected() + end subroutine + + subroutine Activate_Pump1PopOffValveBlown_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_Pump1PopOffValveBlown_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_Pump1PopOffValveBlown_WN' :: Activate_Pump1PopOffValveBlown_WN + implicit none + call Activate_Pump1PopOffValveBlown() + end subroutine + + subroutine Activate_Pump1Failure_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_Pump1Failure_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_Pump1Failure_WN' :: Activate_Pump1Failure_WN + implicit none + call Activate_Pump1Failure() + end subroutine + + subroutine Activate_Pump2PopOffValveBlown_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_Pump2PopOffValveBlown_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_Pump2PopOffValveBlown_WN' :: Activate_Pump2PopOffValveBlown_WN + implicit none + call Activate_Pump2PopOffValveBlown() + end subroutine + + subroutine Activate_Pump2Failure_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_Pump2Failure_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_Pump2Failure_WN' :: Activate_Pump2Failure_WN + implicit none + call Activate_Pump2Failure() + end subroutine + + subroutine Activate_Pump3PopOffValveBlown_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_Pump3PopOffValveBlown_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_Pump3PopOffValveBlown_WN' :: Activate_Pump3PopOffValveBlown_WN + implicit none + call Activate_Pump3PopOffValveBlown() + end subroutine + + subroutine Activate_Pump3Failure_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_Pump3Failure_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_Pump3Failure_WN' :: Activate_Pump3Failure_WN + implicit none + call Activate_Pump3Failure() + end subroutine + + subroutine Activate_DrawworksGearsAbuse_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_DrawworksGearsAbuse_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_DrawworksGearsAbuse_WN' :: Activate_DrawworksGearsAbuse_WN + implicit none + call Activate_DrawworksGearsAbuse() + end subroutine + + subroutine Activate_RotaryGearsAbuse_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_RotaryGearsAbuse_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_RotaryGearsAbuse_WN' :: Activate_RotaryGearsAbuse_WN + implicit none + call Activate_RotaryGearsAbuse() + end subroutine + + subroutine Activate_HoistLineBreak_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_HoistLineBreak_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_HoistLineBreak_WN' :: Activate_HoistLineBreak_WN + implicit none + call Activate_HoistLineBreak() + end subroutine + + subroutine Activate_PartedDrillString_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_PartedDrillString_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_PartedDrillString_WN' :: Activate_PartedDrillString_WN + implicit none + call Activate_PartedDrillString() + end subroutine + + subroutine Activate_ActiveTankOverflow_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_ActiveTankOverflow_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_ActiveTankOverflow_WN' :: Activate_ActiveTankOverflow_WN + implicit none + call Activate_ActiveTankOverflow() + end subroutine + + subroutine Activate_ActiveTankUnderVolume_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_ActiveTankUnderVolume_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_ActiveTankUnderVolume_WN' :: Activate_ActiveTankUnderVolume_WN + implicit none + call Activate_ActiveTankUnderVolume() + end subroutine + + subroutine Activate_TripTankOverflow_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_TripTankOverflow_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_TripTankOverflow_WN' :: Activate_TripTankOverflow_WN + implicit none + call Activate_TripTankOverflow() + end subroutine + + subroutine Activate_DrillPipeTwistOff_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_DrillPipeTwistOff_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_DrillPipeTwistOff_WN' :: Activate_DrillPipeTwistOff_WN + implicit none + call Activate_DrillPipeTwistOff() + end subroutine + + subroutine Activate_DrillPipeParted_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_DrillPipeParted_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_DrillPipeParted_WN' :: Activate_DrillPipeParted_WN + implicit none + call Activate_DrillPipeParted() + end subroutine + + subroutine Activate_TripWithSlipsSet_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_TripWithSlipsSet_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_TripWithSlipsSet_WN' :: Activate_TripWithSlipsSet_WN + implicit none + call Activate_TripWithSlipsSet() + end subroutine + + subroutine Activate_Blowout_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_Blowout_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_Blowout_WN' :: Activate_Blowout_WN + implicit none + call Activate_Blowout() + end subroutine + + subroutine Activate_UndergroundBlowout_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_UndergroundBlowout_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_UndergroundBlowout_WN' :: Activate_UndergroundBlowout_WN + implicit none + call Activate_UndergroundBlowout() + end subroutine + + subroutine Activate_MaximumWellDepthExceeded_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_MaximumWellDepthExceeded_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_MaximumWellDepthExceeded_WN' :: Activate_MaximumWellDepthExceeded_WN + implicit none + call Activate_MaximumWellDepthExceeded() + end subroutine + + subroutine Activate_CrownCollision_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_CrownCollision_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_CrownCollision_WN' :: Activate_CrownCollision_WN + implicit none + call Activate_CrownCollision() + end subroutine + + subroutine Activate_FloorCollision_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_FloorCollision_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_FloorCollision_WN' :: Activate_FloorCollision_WN + implicit none + call Activate_FloorCollision() + end subroutine + + subroutine Activate_TopdriveRotaryTableConfilict_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Activate_TopdriveRotaryTableConfilict_WN + !DEC$ ATTRIBUTES ALIAS: 'Activate_TopdriveRotaryTableConfilict_WN' :: Activate_TopdriveRotaryTableConfilict_WN + implicit none + call Activate_TopdriveRotaryTableConfilict() + end subroutine + + + + + + + + + + + + + + + + + + + + + + + + + + + subroutine Deactivate_PumpWithKellyDisconnected_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_PumpWithKellyDisconnected_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_PumpWithKellyDisconnected_WN' :: Deactivate_PumpWithKellyDisconnected_WN + implicit none + call Deactivate_PumpWithKellyDisconnected() + end subroutine + + subroutine Deactivate_PumpWithTopdriveDisconnected_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_PumpWithTopdriveDisconnected_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_PumpWithTopdriveDisconnected_WN' :: Deactivate_PumpWithTopdriveDisconnected_WN + implicit none + call Deactivate_PumpWithTopdriveDisconnected() + end subroutine + + subroutine Deactivate_Pump1PopOffValveBlown_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_Pump1PopOffValveBlown_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_Pump1PopOffValveBlown_WN' :: Deactivate_Pump1PopOffValveBlown_WN + implicit none + call Deactivate_Pump1PopOffValveBlown() + end subroutine + + subroutine Deactivate_Pump1Failure_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_Pump1Failure_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_Pump1Failure_WN' :: Deactivate_Pump1Failure_WN + implicit none + call Deactivate_Pump1Failure() + end subroutine + + subroutine Deactivate_Pump2PopOffValveBlown_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_Pump2PopOffValveBlown_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_Pump2PopOffValveBlown_WN' :: Deactivate_Pump2PopOffValveBlown_WN + implicit none + call Deactivate_Pump2PopOffValveBlown() + end subroutine + + subroutine Deactivate_Pump2Failure_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_Pump2Failure_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_Pump2Failure_WN' :: Deactivate_Pump2Failure_WN + implicit none + call Deactivate_Pump2Failure() + end subroutine + + subroutine Deactivate_Pump3PopOffValveBlown_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_Pump3PopOffValveBlown_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_Pump3PopOffValveBlown_WN' :: Deactivate_Pump3PopOffValveBlown_WN + implicit none + call Deactivate_Pump3PopOffValveBlown() + end subroutine + + subroutine Deactivate_Pump3Failure_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_Pump3Failure_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_Pump3Failure_WN' :: Deactivate_Pump3Failure_WN + implicit none + call Deactivate_Pump3Failure() + end subroutine + + subroutine Deactivate_DrawworksGearsAbuse_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_DrawworksGearsAbuse_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_DrawworksGearsAbuse_WN' :: Deactivate_DrawworksGearsAbuse_WN + implicit none + call Deactivate_DrawworksGearsAbuse() + end subroutine + + subroutine Deactivate_RotaryGearsAbuse_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_RotaryGearsAbuse_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_RotaryGearsAbuse_WN' :: Deactivate_RotaryGearsAbuse_WN + implicit none + call Deactivate_RotaryGearsAbuse() + end subroutine + + subroutine Deactivate_HoistLineBreak_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_HoistLineBreak_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_HoistLineBreak_WN' :: Deactivate_HoistLineBreak_WN + implicit none + call Deactivate_HoistLineBreak() + end subroutine + + subroutine Deactivate_PartedDrillString_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_PartedDrillString_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_PartedDrillString_WN' :: Deactivate_PartedDrillString_WN + implicit none + call Deactivate_PartedDrillString() + end subroutine + + subroutine Deactivate_ActiveTankOverflow_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_ActiveTankOverflow_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_ActiveTankOverflow_WN' :: Deactivate_ActiveTankOverflow_WN + implicit none + call Deactivate_ActiveTankOverflow() + end subroutine + + subroutine Deactivate_ActiveTankUnderVolume_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_ActiveTankUnderVolume_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_ActiveTankUnderVolume_WN' :: Deactivate_ActiveTankUnderVolume_WN + implicit none + call Deactivate_ActiveTankUnderVolume() + end subroutine + + subroutine Deactivate_TripTankOverflow_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_TripTankOverflow_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_TripTankOverflow_WN' :: Deactivate_TripTankOverflow_WN + implicit none + call Deactivate_TripTankOverflow() + end subroutine + + subroutine Deactivate_DrillPipeTwistOff_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_DrillPipeTwistOff_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_DrillPipeTwistOff_WN' :: Deactivate_DrillPipeTwistOff_WN + implicit none + call Deactivate_DrillPipeTwistOff() + end subroutine + + subroutine Deactivate_DrillPipeParted_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_DrillPipeParted_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_DrillPipeParted_WN' :: Deactivate_DrillPipeParted_WN + implicit none + call Deactivate_DrillPipeParted() + end subroutine + + subroutine Deactivate_TripWithSlipsSet_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_TripWithSlipsSet_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_TripWithSlipsSet_WN' :: Deactivate_TripWithSlipsSet_WN + implicit none + call Deactivate_TripWithSlipsSet() + end subroutine + + subroutine Deactivate_Blowout_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_Blowout_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_Blowout_WN' :: Deactivate_Blowout_WN + implicit none + call Deactivate_Blowout() + end subroutine + + subroutine Deactivate_UndergroundBlowout_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_UndergroundBlowout_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_UndergroundBlowout_WN' :: Deactivate_UndergroundBlowout_WN + implicit none + call Deactivate_UndergroundBlowout() + end subroutine + + subroutine Deactivate_MaximumWellDepthExceeded_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_MaximumWellDepthExceeded_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_MaximumWellDepthExceeded_WN' :: Deactivate_MaximumWellDepthExceeded_WN + implicit none + call Deactivate_MaximumWellDepthExceeded() + end subroutine + + subroutine Deactivate_CrownCollision_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_CrownCollision_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_CrownCollision_WN' :: Deactivate_CrownCollision_WN + implicit none + call Deactivate_CrownCollision() + end subroutine + + subroutine Deactivate_FloorCollision_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_FloorCollision_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_FloorCollision_WN' :: Deactivate_FloorCollision_WN + implicit none + call Deactivate_FloorCollision() + end subroutine + + subroutine Deactivate_TopdriveRotaryTableConfilict_WN() + !DEC$ ATTRIBUTES DLLEXPORT :: Deactivate_TopdriveRotaryTableConfilict_WN + !DEC$ ATTRIBUTES ALIAS: 'Deactivate_TopdriveRotaryTableConfilict_WN' :: Deactivate_TopdriveRotaryTableConfilict_WN + implicit none + call Deactivate_TopdriveRotaryTableConfilict() + end subroutine + + + + + + +end module CWarningsVariables \ No newline at end of file diff --git a/CSimulationVariables.f90 b/CSimulationVariables.f90 new file mode 100644 index 0000000..a97c8c1 --- /dev/null +++ b/CSimulationVariables.f90 @@ -0,0 +1,1211 @@ +module CSimulationVariables + use CVoidEventHandlerCollection + ! use CSimulationThreads + use CIActionReference + ! use ifcore + ! use ifmt + ! use CTimer + use CError + use CLog3 + implicit none + public + + integer, parameter :: SimulationState_Stopped = 0; + integer, parameter :: SimulationState_Started = 1; + integer, parameter :: SimulationState_Paused = 2; + + logical :: IsStopped = .false. + logical :: IsSnapshot = .false. + logical :: IsPortable = .false. + integer :: IsPortableInt = 0 + + integer :: SimulationState_old + integer :: SimulationState + integer :: SimulationTime + integer :: SimulationSpeed ! 1, 2, 5, 10 + + integer :: SleepLimit = 0 + + integer :: TotalPumpStrokes + real(8) :: TotalVolumePumped + real(8) :: DistanceDrilled + + type(VoidEventHandlerCollection) :: OnSimulationInitialization + type(VoidEventHandlerCollection) :: OnSimulationStart + type(VoidEventHandlerCollection) :: OnSimulationStop + type(VoidEventHandlerCollection) :: OnSimulationPause + !type(VoidEventHandlerCollection) :: OnSimulationGetOutput + + procedure (ActionVoid), pointer :: ForceRealTimeSpeedPtr + procedure (ActionBool), pointer :: SpeedChangePossibilityPtr + logical :: SpeedChangePossibilityValue + + procedure (ActionInteger), pointer :: TotalStrokesChangedPtr + procedure (ActionInteger), pointer :: TotalStrokesPtr + procedure (ActionDouble), pointer :: TotalVolumePumpedPtr + procedure (ActionDouble), pointer :: DistanceDrilledPtr + + ! modules... + !BopStack + type(VoidEventHandlerCollection) :: OnBopStackStep + type(VoidEventHandlerCollection) :: OnBopStackStart + type(VoidEventHandlerCollection) :: OnBopStackOutput + type(VoidEventHandlerCollection) :: OnBopStackPause + type(VoidEventHandlerCollection) :: OnBopStackMain + logical :: BopStackStarted + + !Pumps + type(VoidEventHandlerCollection) :: OnPump1Step + type(VoidEventHandlerCollection) :: OnPump1Start + type(VoidEventHandlerCollection) :: OnPump1Output + type(VoidEventHandlerCollection) :: OnPump1Pause + type(VoidEventHandlerCollection) :: OnPump1Main + logical :: Pump1Started + + type(VoidEventHandlerCollection) :: OnPump2Step + type(VoidEventHandlerCollection) :: OnPump2Start + type(VoidEventHandlerCollection) :: OnPump2Output + type(VoidEventHandlerCollection) :: OnPump2Pause + type(VoidEventHandlerCollection) :: OnPump2Main + logical :: Pump2Started + + type(VoidEventHandlerCollection) :: OnPump3Step + type(VoidEventHandlerCollection) :: OnPump3Start + type(VoidEventHandlerCollection) :: OnPump3Output + type(VoidEventHandlerCollection) :: OnPump3Pause + type(VoidEventHandlerCollection) :: OnPump3Main + logical :: Pump3Started + + !ChokeControl + type(VoidEventHandlerCollection) :: OnChokeControlStep + type(VoidEventHandlerCollection) :: OnChokeControlStart + type(VoidEventHandlerCollection) :: OnChokeControlOutput + type(VoidEventHandlerCollection) :: OnChokeControlPause + type(VoidEventHandlerCollection) :: OnChokeControlMain + logical :: ChokeControlStarted + + !ROP + type(VoidEventHandlerCollection) :: OnRopStep + type(VoidEventHandlerCollection) :: OnRopStart + type(VoidEventHandlerCollection) :: OnRopOutput + type(VoidEventHandlerCollection) :: OnRopPause + type(VoidEventHandlerCollection) :: OnRopMain + logical :: RopStarted + + !RotaryTable + type(VoidEventHandlerCollection) :: OnRotaryTableStep + type(VoidEventHandlerCollection) :: OnRotaryTableStart + type(VoidEventHandlerCollection) :: OnRotaryTableOutput + type(VoidEventHandlerCollection) :: OnRotaryTablePause + type(VoidEventHandlerCollection) :: OnRotaryTableMain + logical :: RotaryTableStarted + + !Drawworks + type(VoidEventHandlerCollection) :: OnDrawworksStep + type(VoidEventHandlerCollection) :: OnDrawworksStart + type(VoidEventHandlerCollection) :: OnDrawworksOutput + type(VoidEventHandlerCollection) :: OnDrawworksPause + type(VoidEventHandlerCollection) :: OnDrawworksMain + logical :: DrawworksStarted + + !FluidFlow + type(VoidEventHandlerCollection) :: OnFluidFlowStep + type(VoidEventHandlerCollection) :: OnFluidFlowStart + type(VoidEventHandlerCollection) :: OnFluidFlowOutput + type(VoidEventHandlerCollection) :: OnFluidFlowPause + type(VoidEventHandlerCollection) :: OnFluidFlowMain + logical :: FluidFlowStarted + + !TorqueDrag + type(VoidEventHandlerCollection) :: OnTorqueDragStep + type(VoidEventHandlerCollection) :: OnTorqueDragStart + type(VoidEventHandlerCollection) :: OnTorqueDragOutput + type(VoidEventHandlerCollection) :: OnTorqueDragPause + type(VoidEventHandlerCollection) :: OnTorqueDragMain + logical :: TorqueDragStarted + + + !TopDrive + type(VoidEventHandlerCollection) :: OnTopDriveStep + type(VoidEventHandlerCollection) :: OnTopDriveStart + type(VoidEventHandlerCollection) :: OnTopDriveOutput + type(VoidEventHandlerCollection) :: OnTopDrivePause + type(VoidEventHandlerCollection) :: OnTopDriveMain + logical :: TopDriveStarted + + + !MudSystem + type(VoidEventHandlerCollection) :: OnMudSystemStep + type(VoidEventHandlerCollection) :: OnMudSystemStart + type(VoidEventHandlerCollection) :: OnMudSystemOutput + type(VoidEventHandlerCollection) :: OnMudSystemPause + type(VoidEventHandlerCollection) :: OnMudSystemMain + logical :: MudSystemStarted + + !PipeRams1 + type(VoidEventHandlerCollection) :: OnPipeRams1Step + type(VoidEventHandlerCollection) :: OnPipeRams1Start + type(VoidEventHandlerCollection) :: OnPipeRams1Output + type(VoidEventHandlerCollection) :: OnPipeRams1Pause + type(VoidEventHandlerCollection) :: OnPipeRams1Main + logical :: PipeRams1Started + + !PipeRams2 + type(VoidEventHandlerCollection) :: OnPipeRams2Step + type(VoidEventHandlerCollection) :: OnPipeRams2Start + type(VoidEventHandlerCollection) :: OnPipeRams2Output + type(VoidEventHandlerCollection) :: OnPipeRams2Pause + type(VoidEventHandlerCollection) :: OnPipeRams2Main + logical :: PipeRams2Started + + !KillLine + type(VoidEventHandlerCollection) :: OnKillLineStep + type(VoidEventHandlerCollection) :: OnKillLineStart + type(VoidEventHandlerCollection) :: OnKillLineOutput + type(VoidEventHandlerCollection) :: OnKillLinePause + type(VoidEventHandlerCollection) :: OnKillLineMain + logical :: KillLineStarted + + !ChokeLine + type(VoidEventHandlerCollection) :: OnChokeLineStep + type(VoidEventHandlerCollection) :: OnChokeLineStart + type(VoidEventHandlerCollection) :: OnChokeLineOutput + type(VoidEventHandlerCollection) :: OnChokeLinePause + type(VoidEventHandlerCollection) :: OnChokeLineMain + logical :: ChokeLineStarted + + !BlindRams + type(VoidEventHandlerCollection) :: OnBlindRamsStep + type(VoidEventHandlerCollection) :: OnBlindRamsStart + type(VoidEventHandlerCollection) :: OnBlindRamsOutput + type(VoidEventHandlerCollection) :: OnBlindRamsPause + type(VoidEventHandlerCollection) :: OnBlindRamsMain + logical :: BlindRamsStarted + + !Annular + type(VoidEventHandlerCollection) :: OnAnnularStep + type(VoidEventHandlerCollection) :: OnAnnularStart + type(VoidEventHandlerCollection) :: OnAnnularOutput + type(VoidEventHandlerCollection) :: OnAnnularPause + type(VoidEventHandlerCollection) :: OnAnnularMain + logical :: AnnularStarted + + !Geo + type(VoidEventHandlerCollection) :: OnGeoStep + type(VoidEventHandlerCollection) :: OnGeoStart + type(VoidEventHandlerCollection) :: OnGeoOutput + type(VoidEventHandlerCollection) :: OnGeoPause + type(VoidEventHandlerCollection) :: OnGeoMain + logical :: GeoStarted + + + + + + !OperationScenarios + type(VoidEventHandlerCollection) :: OnOperationScenariosStep + type(VoidEventHandlerCollection) :: OnOperationScenariosOutput + type(VoidEventHandlerCollection) :: OnOperationScenariosPause + type(VoidEventHandlerCollection) :: OnOperationScenariosMain + + !PathFinding + type(VoidEventHandlerCollection) :: OnPathFindingStep + type(VoidEventHandlerCollection) :: OnPathFindingOutput + type(VoidEventHandlerCollection) :: OnPathFindingPause + type(VoidEventHandlerCollection) :: OnPathFindingMain + + ! sample + type(VoidEventHandlerCollection) :: OnSampleStep + type(VoidEventHandlerCollection) :: OnSampleStart + type(VoidEventHandlerCollection) :: OnSampleOutput + type(VoidEventHandlerCollection) :: OnSamplePause + type(VoidEventHandlerCollection) :: OnSampleMain + logical :: SampleStarted + + !!MudFlowFillIndicator + !type(VoidEventHandlerCollection) :: OnMudFlowFillIndicatorStep + !type(VoidEventHandlerCollection) :: OnMudFlowFillIndicatorOutput + !type(VoidEventHandlerCollection) :: OnMudFlowFillIndicatorMain + + + + + + + + + + + + + + contains + + ! subroutine Quit() + ! use ifmt + ! call ExitThread(0) + ! end subroutine + + real function GetSimulationSpeedSecond() + implicit none + GetSimulationSpeedSecond = 1.0 / SimulationSpeed + end function GetSimulationSpeedSecond + + integer function GetSimulationSpeedMilisecond() + implicit none + GetSimulationSpeedMilisecond = int(GetSimulationSpeedSecond()* 1000.0) + end function GetSimulationSpeedMilisecond + + subroutine DrillMode_ON() + implicit none + call SpeedChangePossibility(.true.) + end subroutine + + subroutine DrillMode_OFF() + implicit none + call ForceRealTimeSpeed() + call SpeedChangePossibility(.false.) + end subroutine + + subroutine ForceRealTimeSpeed() + implicit none + if(associated(ForceRealTimeSpeedPtr)) call ForceRealTimeSpeedPtr() + end subroutine + + subroutine SpeedChangePossibility(v) + implicit none + logical, intent(in) :: v + SpeedChangePossibilityValue = v + if(associated(SpeedChangePossibilityPtr)) call SpeedChangePossibilityPtr(SpeedChangePossibilityValue) + end subroutine + + subroutine SubscribeSpeedChangePossibility(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSpeedChangePossibility + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSpeedChangePossibility' :: SubscribeSpeedChangePossibility + implicit none + procedure (ActionBool) :: a + SpeedChangePossibilityPtr => a + end subroutine + + subroutine SubscribeForceRealTimeSpeed(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeForceRealTimeSpeed + !DEC$ ATTRIBUTES ALIAS: 'SubscribeForceRealTimeSpeed' :: SubscribeForceRealTimeSpeed + implicit none + procedure (ActionVoid) :: a + ForceRealTimeSpeedPtr => a + end subroutine + + subroutine SubscribeTotalStrokesChanged(a) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeTotalStrokesChanged + !DEC$ ATTRIBUTES ALIAS: 'SubscribeTotalStrokesChanged' :: SubscribeTotalStrokesChanged + implicit none + procedure (ActionInteger) :: a + TotalStrokesChangedPtr => a + end subroutine + + subroutine SetTotalStrokes(strokes) + implicit none + integer, intent(in) :: strokes + if (TotalPumpStrokes == strokes) return + TotalPumpStrokes = strokes + if(associated(TotalStrokesChangedPtr)) call TotalStrokesChangedPtr(TotalPumpStrokes) + if(associated(TotalStrokesPtr)) call TotalStrokesPtr(TotalPumpStrokes) + end subroutine + + subroutine SetTotalVolumePumped(volume) + implicit none + real(8), intent(in) :: volume + if (TotalVolumePumped == volume) return + TotalVolumePumped = volume + if(associated(TotalVolumePumpedPtr)) call TotalVolumePumpedPtr(TotalVolumePumped) + end subroutine + + subroutine SetDistanceDrilled(distance) + implicit none + real(8), intent(in) :: distance + if (DistanceDrilled == distance) return + DistanceDrilled = distance + if(associated(DistanceDrilledPtr)) call DistanceDrilledPtr(DistanceDrilled) + end subroutine + +! integer(4) function BopStackThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_bopstackthread" :: BopStackThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_BopStack +! call OnBopStackMain%RunAll() +! #endif +! #ifdef S_BopStack +! if(.not.BopStackStarted) then +! call OnBopStackStart%RunAll() +! BopStackStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnBopStackStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('BOP Stack Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnBopStackOutput%RunAll() +! end do +! call OnBopStackPause%RunAll() +! end do loop +! #endif +! BopStackThread = 0; +! call ExitThread(0) +! end function BopStackThread + +! integer(4) function Pump1Thread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_pump1thread" :: Pump1Thread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Pump1 +! call OnPump1Main%RunAll() +! #endif +! #ifdef S_Pump1 +! if(.not.Pump1Started) then +! call OnPump1Start%RunAll() +! Pump1Started = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnPump1Step%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Pump 1 Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnPump1Output%RunAll() +! end do +! call OnPump1Pause%RunAll() +! end do loop +! #endif +! Pump1Thread = 0; +! call ExitThread(0) +! end function Pump1Thread + +! integer(4) function Pump2Thread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_pump2thread" :: Pump2Thread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Pump2 +! call OnPump2Main%RunAll() +! #endif +! #ifdef S_Pump2 +! if(.not.Pump2Started) then +! call OnPump2Start%RunAll() +! Pump2Started = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnPump2Step%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Pump 2 Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnPump2Output%RunAll() +! end do +! call OnPump2Pause%RunAll() +! end do loop +! #endif +! Pump2Thread = 0; +! call ExitThread(0) +! end function Pump2Thread + +! integer(4) function Pump3Thread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_pump3thread" :: Pump3Thread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Pump3 +! call OnPump3Main%RunAll() +! #endif +! #ifdef S_Pump3 +! if(.not.Pump3Started) then +! call OnPump3Start%RunAll() +! Pump3Started = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnPump3Step%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Pump 3 Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnPump3Output%RunAll() +! end do +! call OnPump3Pause%RunAll() +! end do loop +! #endif +! Pump3Thread = 0; +! call ExitThread(0) +! end function Pump3Thread + +! integer(4) function ChokeControlThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_chokecontrolthread" :: ChokeControlThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_ChokeControl +! call OnChokeControlMain%RunAll() +! #endif +! #ifdef S_ChokeControl +! if(.not.ChokeControlStarted) then +! call OnChokeControlStart%RunAll() +! ChokeControlStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnChokeControlStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Choke Control Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnChokeControlOutput%RunAll() +! end do +! call OnChokeControlPause%RunAll() +! end do loop +! #endif +! ChokeControlThread = 0; +! call ExitThread(0) +! end function ChokeControlThread + +! integer(4) function RopThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_ropthread" :: RopThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Rop +! call OnRopMain%RunAll() +! #endif +! #ifdef S_Rop +! if(.not.RopStarted) then +! call OnRopStart%RunAll() +! RopStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnRopStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('ROP Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnRopOutput%RunAll() +! end do +! call OnRopPause%RunAll() +! end do loop +! #endif +! RopThread = 0; +! call ExitThread(0) +! end function RopThread + +! integer(4) function RotaryTableThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_rotarytablethread" :: RotaryTableThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_RotaryTable +! call OnRotaryTableMain%RunAll() +! #endif +! #ifdef S_RotaryTable +! if(.not.RotaryTableStarted) then +! call OnRotaryTableStart%RunAll() +! RotaryTableStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnRotaryTableStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Rotary Table Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnRotaryTableOutput%RunAll() +! end do +! call OnRotaryTablePause%RunAll() +! end do loop +! #endif +! RotaryTableThread = 0; +! call ExitThread(0) +! end function RotaryTableThread + +! integer(4) function DrawworksThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_drawworksthread" :: DrawworksThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Drawworks +! call OnDrawworksMain%RunAll() +! #endif +! #ifdef S_Drawworks +! if(.not.DrawworksStarted) then +! call OnDrawworksStart%RunAll() +! DrawworksStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnDrawworksStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Drawworks Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnDrawworksOutput%RunAll() +! end do +! call OnDrawworksPause%RunAll() +! end do loop +! #endif +! DrawworksThread = 0; +! call ExitThread(0) +! end function DrawworksThread + +! integer(4) function FluidFlowThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_fluidflowthread" :: FluidFlowThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_FluidFlow +! call OnFluidFlowMain%RunAll() +! #endif +! #ifdef S_FluidFlow +! if(.not.FluidFlowStarted) then +! call OnFluidFlowStart%RunAll() +! FluidFlowStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnFluidFlowStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Fluid Flow Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnFluidFlowOutput%RunAll() +! end do +! call OnFluidFlowPause%RunAll() +! end do loop +! #endif +! FluidFlowThread = 0; +! call ExitThread(0) +! end function FluidFlowThread + +! integer(4) function TorqueDragThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_torquedragthread" :: TorqueDragThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_TorqueDrag +! call OnTorqueDragMain%RunAll() +! #endif +! #ifdef S_TorqueDrag +! if(.not.TorqueDragStarted) then +! call OnTorqueDragStart%RunAll() +! TorqueDragStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnTorqueDragStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Torque Drag Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnTorqueDragOutput%RunAll() +! end do +! call OnTorqueDragPause%RunAll() +! end do loop +! #endif +! TorqueDragThread = 0; +! call ExitThread(0) +! end function TorqueDragThread + + +! integer(4) function TopDriveThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_topdrivethread" :: TopDriveThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_TopDrive +! call OnTopDriveMain%RunAll() +! #endif +! #ifdef S_TopDrive +! if(.not.TopDriveStarted) then +! call OnTopDriveStart%RunAll() +! TopDriveStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnTopDriveStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('TopDrive Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnTopDriveOutput%RunAll() +! end do +! call OnTopDrivePause%RunAll() +! end do loop +! #endif +! TopDriveThread = 0; +! call ExitThread(0) +! end function TopDriveThread + + +! integer(4) function MudSystemThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_MudSystemthread" :: MudSystemThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_MudSystem +! call OnMudSystemMain%RunAll() +! #endif +! #ifdef S_MudSystem +! if(.not.MudSystemStarted) then +! call OnMudSystemStart%RunAll() +! MudSystemStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnMudSystemStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Mud System Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnMudSystemOutput%RunAll() +! end do +! call OnMudSystemPause%RunAll() +! end do loop +! #endif +! MudSystemThread = 0; +! call ExitThread(0) +! end function MudSystemThread + +! integer(4) function PipeRams1Thread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_piperams1thread" :: PipeRams1Thread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_PipeRams1 +! call OnPipeRams1Main%RunAll() +! #endif +! #ifdef S_PipeRams1 +! if(.not.PipeRams1Started) then +! call OnPipeRams1Start%RunAll() +! PipeRams1Started = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnPipeRams1Step%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Pipe Rams 1 Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnPipeRams1Output%RunAll() +! end do +! call OnPipeRams1Pause%RunAll() +! end do loop +! #endif +! PipeRams1Thread = 0; +! call ExitThread(0) +! end function PipeRams1Thread + +! integer(4) function PipeRams2Thread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_piperams2thread" :: PipeRams2Thread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_PipeRams2 +! call OnPipeRams2Main%RunAll() +! #endif +! #ifdef S_PipeRams2 +! if(.not.PipeRams2Started) then +! call OnPipeRams2Start%RunAll() +! PipeRams2Started = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnPipeRams2Step%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Pipe Rams 2 Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnPipeRams2Output%RunAll() +! end do +! call OnPipeRams2Pause%RunAll() +! end do loop +! #endif +! PipeRams2Thread = 0; +! call ExitThread(0) +! end function PipeRams2Thread + +! integer(4) function KillLineThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_killlinethread" :: KillLineThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_KillLine +! call OnKillLineMain%RunAll() +! #endif +! #ifdef S_KillLine +! if(.not.KillLineStarted) then +! call OnKillLineStart%RunAll() +! KillLineStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnKillLineStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Kill Line Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnKillLineOutput%RunAll() +! end do +! call OnKillLinePause%RunAll() +! end do loop +! #endif +! KillLineThread = 0; +! call ExitThread(0) +! end function KillLineThread + +! integer(4) function ChokeLineThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_chokelinethread" :: ChokeLineThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_ChokeLine +! call OnChokeLineMain%RunAll() +! #endif +! #ifdef S_ChokeLine +! if(.not.ChokeLineStarted) then +! call OnChokeLineStart%RunAll() +! ChokeLineStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnChokeLineStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Choke Line Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnChokeLineOutput%RunAll() +! end do +! call OnChokeLinePause%RunAll() +! end do loop +! #endif +! ChokeLineThread = 0; +! call ExitThread(0) +! end function ChokeLineThread + +! integer(4) function BlindRamsThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_blindramsthread" :: BlindRamsThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_BlindRams +! call OnBlindRamsMain%RunAll() +! #endif +! #ifdef S_BlindRams +! if(.not.BlindRamsStarted) then +! call OnBlindRamsStart%RunAll() +! BlindRamsStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnBlindRamsStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Blind Rams Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnBlindRamsOutput%RunAll() +! end do +! call OnBlindRamsPause%RunAll() +! end do loop +! #endif +! BlindRamsThread = 0; +! call ExitThread(0) +! end function BlindRamsThread + +! integer(4) function AnnularThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_annularthread" :: AnnularThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Annular +! call OnAnnularMain%RunAll() +! #endif +! #ifdef S_Annular +! if(.not.AnnularStarted) then +! call OnAnnularStart%RunAll() +! AnnularStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnAnnularStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Annular Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnAnnularOutput%RunAll() +! end do +! call OnAnnularPause%RunAll() +! end do loop +! #endif +! AnnularThread = 0; +! call ExitThread(0) +! end function AnnularThread + +! integer(4) function GeoThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_geothread" :: GeoThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Geo +! call OnGeoMain%RunAll() +! #endif +! #ifdef S_Geo +! if(.not.GeoStarted) then +! call OnGeoStart%RunAll() +! GeoStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnGeoStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Geo Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnGeoOutput%RunAll() +! end do +! call OnGeoPause%RunAll() +! end do loop +! #endif +! GeoThread = 0; +! call ExitThread(0) +! end function GeoThread + + + +! integer(4) function OperationScenariosThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_operationscenariosthread" :: OperationScenariosThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! call OnOperationScenariosMain%RunAll() +! OperationScenariosThread = 0; +! call ExitThread(0) +! end function OperationScenariosThread + +! integer(4) function PathFindingThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_pathfindingthread" :: PathFindingThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! call OnPathFindingMain%RunAll() +! PathFindingThread = 0; +! call ExitThread(0) +! end function PathFindingThread + + + + + + + + + + + + + + +! integer(4) function SampleThread(arg) +! !DEC$ ATTRIBUTES STDCALL, ALIAS:"_samplethread" :: SampleThread +! use ifport +! use ifmt +! implicit none +! integer(4), pointer :: arg +! integer i, j +! integer elapsed, speed, remaining +! type(Timer) t +! #ifdef M_Sample +! call OnSampleMain%RunAll() +! #endif +! #ifdef S_Sample +! if(.not.SampleStarted) then +! call OnSampleStart%RunAll() +! SampleStarted = .true. +! end if +! loop: do +! if(IsStopped) call ExitThread(0) +! do i=1, 10 +! if(IsStopped) call ExitThread(0) +! call t%Start() +! do j=1, SimulationSpeed +! if(IsStopped) call ExitThread(0) +! call OnSampleStep%RunAll() +! end do +! call t%Finish() +! elapsed = t%ElapsedTimeMs() +! remaining = 100 - elapsed +! #ifdef E_SpeedWatchdog +! if(elapsed > 100) call Error('Sample Module: exceeding more than 100ms interval, the time was ', elapsed) +! #endif +! if(remaining > 0 .and. i < 10) call sleepqq(remaining - SleepLimit) +! call OnSampleOutput%RunAll() +! end do +! call OnSamplePause%RunAll() +! end do loop + +! #endif +! SampleThread = 0; +! call ExitThread(0) +! end function SampleThread + +end module CSimulationVariables \ No newline at end of file diff --git a/CSounds.f90 b/CSounds.f90 new file mode 100644 index 0000000..0bb7826 --- /dev/null +++ b/CSounds.f90 @@ -0,0 +1,683 @@ +module CSounds + use CIActionReference + implicit none + public + + ! Input vars + + ! Output vars + integer :: SoundMP1s + integer :: SoundMP2s + integer :: SoundMP3s + integer :: SoundRTs + integer :: SoundDwFws + integer :: SoundDwRevs + integer :: SoundDwBrakes + integer :: SoundChokePumps + integer :: SoundGasThroughChokes + integer :: SoundKoomeyAirPumps + integer :: SoundKoomeyElectricPumps + logical :: SoundRtGearCrashs + logical :: SoundDwGearCrashs + logical :: SoundFloorCollisions + logical :: SoundCrownCollisions + logical :: SoundDwClutchs + logical :: SoundBlowers + logical :: SoundBlowerMp1s + logical :: SoundBlowerMp2s + logical :: SoundBlowerMp3s + logical :: SoundBlowerRts + logical :: SoundBlowerDws + logical :: SoundBlowerStarts + logical :: SoundBlowerShutdowns + logical :: SoundElectricPumps + + + procedure (ActionInteger), pointer :: SoundMP1Ptr + procedure (ActionInteger), pointer :: SoundMP2Ptr + procedure (ActionInteger), pointer :: SoundMP3Ptr + procedure (ActionInteger), pointer :: SoundRTPtr + procedure (ActionInteger), pointer :: SoundDwFwPtr + procedure (ActionInteger), pointer :: SoundDwRevPtr + procedure (ActionInteger), pointer :: SoundDwBrakePtr + procedure (ActionInteger), pointer :: SoundChokePumpPtr + procedure (ActionInteger), pointer :: SoundGasThroughChokePtr + procedure (ActionInteger), pointer :: SoundKoomeyAirPumpPtr + procedure (ActionInteger), pointer :: SoundKoomeyElectricPumpPtr + procedure (ActionBool), pointer :: SoundRtGearCrashPtr + procedure (ActionBool), pointer :: SoundDwGearCrashPtr + procedure (ActionBool), pointer :: SoundFloorCollisionPtr + procedure (ActionBool), pointer :: SoundCrownCollisionPtr + procedure (ActionBool), pointer :: SoundDwClutchPtr + procedure (ActionBool), pointer :: SoundBlowerPtr + procedure (ActionBool), pointer :: SoundBlowerMp1Ptr + procedure (ActionBool), pointer :: SoundBlowerMp2Ptr + procedure (ActionBool), pointer :: SoundBlowerMp3Ptr + procedure (ActionBool), pointer :: SoundBlowerRtPtr + procedure (ActionBool), pointer :: SoundBlowerDwPtr + procedure (ActionBool), pointer :: SoundBlowerStartPtr + procedure (ActionBool), pointer :: SoundBlowerShutdownPtr + procedure (ActionBool), pointer :: SoundElectricPumpPtr + + private :: SoundMP1Ptr, SoundMP2Ptr, SoundMP3Ptr, SoundRTPtr, SoundDwFwPtr, SoundDwRevPtr,SoundDwBrakePtr,SoundChokePumpPtr,SoundGasThroughChokePtr,SoundKoomeyAirPumpPtr, & + SoundKoomeyElectricPumpPtr, SoundRtGearCrashPtr,SoundDwGearCrashPtr,SoundFloorCollisionPtr,SoundCrownCollisionPtr,SoundDwClutchPtr,SoundBlowerPtr, & + SoundBlowerMp1Ptr, SoundBlowerMp2Ptr,SoundBlowerMp3Ptr,SoundBlowerRtPtr,SoundBlowerDwPtr,SoundBlowerStartPtr,SoundBlowerShutdownPtr,SoundElectricPumpPtr + + contains + + + + + + subroutine SetSoundMP1(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundMP1Ptr)) call SoundMP1Ptr(v) + SoundMP1s = v + end subroutine + + subroutine SetSoundMP2(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundMP2Ptr)) call SoundMP2Ptr(v) + SoundMP2s = v + end subroutine + + subroutine SetSoundMP3(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundMP3Ptr)) call SoundMP3Ptr(v) + SoundMP3s = v + end subroutine + + subroutine SetSoundRT(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundRTPtr)) call SoundRTPtr(v) + SoundRTs = v + end subroutine + + subroutine SetSoundDwFw(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundDwFwPtr)) call SoundDwFwPtr(v) + SoundDwFws = v + end subroutine + + subroutine SetSoundDwRev(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundDwRevPtr)) call SoundDwRevPtr(v) + SoundDwRevs = v + end subroutine + + subroutine SetSoundDwBrake(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundDwBrakePtr)) call SoundDwBrakePtr(v) + SoundDwBrakes = v + end subroutine + + subroutine SetSoundChokePump(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundChokePumpPtr)) call SoundChokePumpPtr(v) + SoundChokePumps = v + end subroutine + + subroutine SetSoundGasThroughChoke(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundGasThroughChokePtr)) call SoundGasThroughChokePtr(v) + SoundGasThroughChokes = v + end subroutine + + subroutine SetSoundKoomeyAirPump(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundKoomeyAirPumpPtr)) call SoundKoomeyAirPumpPtr(v) + SoundKoomeyAirPumps = v + end subroutine + + subroutine SetSoundKoomeyElectricPump(v) + implicit none + integer, intent(inout) :: v + !if(associated(SoundKoomeyElectricPumpPtr)) call SoundKoomeyElectricPumpPtr(v) + SoundKoomeyElectricPumps = v + end subroutine + + subroutine SetSoundRtGearCrash(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundRtGearCrashPtr)) call SoundRtGearCrashPtr(v) + SoundRtGearCrashs = v + end subroutine + + subroutine SetSoundDwGearCrash(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundDwGearCrashPtr)) call SoundDwGearCrashPtr(v) + SoundDwGearCrashs = v + end subroutine + + subroutine SetSoundFloorCollision(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundFloorCollisionPtr)) call SoundFloorCollisionPtr(v) + SoundFloorCollisions = v + end subroutine + + subroutine SetSoundCrownCollision(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundCrownCollisionPtr)) call SoundCrownCollisionPtr(v) + SoundCrownCollisions = v + end subroutine + + subroutine SetSoundDwClutch(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundDwClutchPtr)) call SoundDwClutchPtr(v) + SoundDwClutchs = v + end subroutine + + subroutine SetSoundBlower(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerPtr)) call SoundBlowerPtr(v) + SoundBlowers = v + end subroutine + + subroutine SetSoundBlowerMP1(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerMp1Ptr)) call SoundBlowerMp1Ptr(v) + SoundBlowerMp1s = v + end subroutine + + subroutine SetSoundBlowerMP2(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerMp2Ptr)) call SoundBlowerMp2Ptr(v) + SoundBlowerMp2s = v + end subroutine + + subroutine SetSoundBlowerMP3(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerMp3Ptr)) call SoundBlowerMp3Ptr(v) + SoundBlowerMp3s = v + end subroutine + + subroutine SetSoundBlowerRT(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerRtPtr)) call SoundBlowerRtPtr(v) + SoundBlowerRts = v + end subroutine + + subroutine SetSoundBlowerDW(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerDwPtr)) call SoundBlowerDwPtr(v) + SoundBlowerDws = v + end subroutine + + + subroutine SetSoundBlowerStart(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerStartPtr)) call SoundBlowerStartPtr(v) + SoundBlowerStarts = v + end subroutine + + subroutine SetSoundBlowerShutdown(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundBlowerShutdownPtr)) call SoundBlowerShutdownPtr(v) + SoundBlowerShutdowns = v + end subroutine + + + subroutine SetSoundElectricPump(v) + implicit none + logical, intent(inout) :: v + !if(associated(SoundElectricPumpPtr)) call SoundElectricPumpPtr(v) + SoundElectricPumps = v + end subroutine + + + + + + + + + + + + + + + + + + + subroutine SubscribeSoundMP1(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundMP1 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundMP1' :: SubscribeSoundMP1 + implicit none + procedure (ActionInteger) :: v + SoundMP1Ptr => v + end subroutine + + subroutine SubscribeSoundMP2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundMP2 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundMP2' :: SubscribeSoundMP2 + implicit none + procedure (ActionInteger) :: v + SoundMP2Ptr => v + end subroutine + + subroutine SubscribeSoundMP3(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundMP3 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundMP3' :: SubscribeSoundMP3 + implicit none + procedure (ActionInteger) :: v + SoundMP3Ptr => v + end subroutine + + subroutine SubscribeSoundRT(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundRT + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundRT' :: SubscribeSoundRT + implicit none + procedure (ActionInteger) :: v + SoundRTPtr => v + end subroutine + + subroutine SubscribeSoundDwFw(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundDwFw + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundDwFw' :: SubscribeSoundDwFw + implicit none + procedure (ActionInteger) :: v + SoundDwFwPtr => v + end subroutine + + subroutine SubscribeSoundDwRev(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundDwRev + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundDwRev' :: SubscribeSoundDwRev + implicit none + procedure (ActionInteger) :: v + SoundDwRevPtr => v + end subroutine + + subroutine SubscribeSoundDwBrake(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundDwBrake + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundDwBrake' :: SubscribeSoundDwBrake + implicit none + procedure (ActionInteger) :: v + SoundDwBrakePtr => v + end subroutine + + subroutine SubscribeSoundChokePump(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundChokePump + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundChokePump' :: SubscribeSoundChokePump + implicit none + procedure (ActionInteger) :: v + SoundChokePumpPtr => v + end subroutine + + subroutine SubscribeSoundGasThroughChoke(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundGasThroughChoke + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundGasThroughChoke' :: SubscribeSoundGasThroughChoke + implicit none + procedure (ActionInteger) :: v + SoundGasThroughChokePtr => v + end subroutine + + subroutine SubscribeSoundKoomeyAirPump(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundKoomeyAirPump + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundKoomeyAirPump' :: SubscribeSoundKoomeyAirPump + implicit none + procedure (ActionInteger) :: v + SoundKoomeyAirPumpPtr => v + end subroutine + + subroutine SubscribeSoundKoomeyElectricPump(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundKoomeyElectricPump + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundKoomeyElectricPump' :: SubscribeSoundKoomeyElectricPump + implicit none + procedure (ActionInteger) :: v + SoundKoomeyElectricPumpPtr => v + end subroutine + + subroutine SubscribeSoundRtGearCrash(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundRtGearCrash + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundRtGearCrash' :: SubscribeSoundRtGearCrash + implicit none + procedure (ActionBool) :: v + SoundRtGearCrashPtr => v + end subroutine + + subroutine SubscribeSoundDwGearCrash(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundDwGearCrash + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundDwGearCrash' :: SubscribeSoundDwGearCrash + implicit none + procedure (ActionBool) :: v + SoundDwGearCrashPtr => v + end subroutine + + subroutine SubscribeSoundFloorCollision(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundFloorCollision + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundFloorCollision' :: SubscribeSoundFloorCollision + implicit none + procedure (ActionBool) :: v + SoundFloorCollisionPtr => v + end subroutine + + subroutine SubscribeSoundCrownCollision(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundCrownCollision + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundCrownCollision' :: SubscribeSoundCrownCollision + implicit none + procedure (ActionBool) :: v + SoundCrownCollisionPtr => v + end subroutine + + subroutine SubscribeSoundDwClutch(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundDwClutch + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundDwClutch' :: SubscribeSoundDwClutch + implicit none + procedure (ActionBool) :: v + SoundDwClutchPtr => v + end subroutine + + subroutine SubscribeSoundBlower(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlower + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlower' :: SubscribeSoundBlower + implicit none + procedure (ActionBool) :: v + SoundBlowerPtr => v + end subroutine + + subroutine SubscribeSoundBlowerMp1(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlowerMp1 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlowerMp1' :: SubscribeSoundBlowerMp1 + implicit none + procedure (ActionBool) :: v + SoundBlowerMp1Ptr => v + end subroutine + + subroutine SubscribeSoundBlowerMp2(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlowerMp2 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlowerMp2' :: SubscribeSoundBlowerMp2 + implicit none + procedure (ActionBool) :: v + SoundBlowerMp2Ptr => v + end subroutine + + subroutine SubscribeSoundBlowerMp3(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlowerMp3 + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlowerMp3' :: SubscribeSoundBlowerMp3 + implicit none + procedure (ActionBool) :: v + SoundBlowerMp3Ptr => v + end subroutine + + subroutine SubscribeSoundBlowerRt(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlowerRt + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlowerRt' :: SubscribeSoundBlowerRt + implicit none + procedure (ActionBool) :: v + SoundBlowerRtPtr => v + end subroutine + + subroutine SubscribeSoundBlowerDw(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlowerDw + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlowerDw' :: SubscribeSoundBlowerDw + implicit none + procedure (ActionBool) :: v + SoundBlowerDwPtr => v + end subroutine + + subroutine SubscribeSoundBlowerStart(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlowerStart + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlowerStart' :: SubscribeSoundBlowerStart + implicit none + procedure (ActionBool) :: v + SoundBlowerStartPtr => v + end subroutine + + subroutine SubscribeSoundBlowerShutdown(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundBlowerShutdown + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundBlowerShutdown' :: SubscribeSoundBlowerShutdown + implicit none + procedure (ActionBool) :: v + SoundBlowerShutdownPtr => v + end subroutine + + subroutine SubscribeSoundElectricPump(v) + !DEC$ ATTRIBUTES DLLEXPORT :: SubscribeSoundElectricPump + !DEC$ ATTRIBUTES ALIAS: 'SubscribeSoundElectricPump' :: SubscribeSoundElectricPump + implicit none + procedure (ActionBool) :: v + SoundElectricPumpPtr => v + end subroutine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ! Input routines + + ! Output routines + integer function GetSoundMP1() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundMP1 + !DEC$ ATTRIBUTES ALIAS: 'GetSoundMP1' :: GetSoundMP1 + implicit none + GetSoundMP1 = SoundMP1s + end function + + integer function GetSoundMP2() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundMP2 + !DEC$ ATTRIBUTES ALIAS: 'GetSoundMP2' :: GetSoundMP2 + implicit none + GetSoundMP2 = SoundMP2s + end function + + integer function GetSoundMP3() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundMP3 + !DEC$ ATTRIBUTES ALIAS: 'GetSoundMP3' :: GetSoundMP3 + implicit none + GetSoundMP3 = SoundMP3s + end function + + integer function GetSoundRT() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundRT + !DEC$ ATTRIBUTES ALIAS: 'GetSoundRT' :: GetSoundRT + implicit none + GetSoundRT = SoundRTs + end function + + integer function GetSoundDwFw() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundDwFw + !DEC$ ATTRIBUTES ALIAS: 'GetSoundDwFw' :: GetSoundDwFw + implicit none + GetSoundDwFw = SoundDwFws + end function + + integer function GetSoundDwRev() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundDwRev + !DEC$ ATTRIBUTES ALIAS: 'GetSoundDwRev' :: GetSoundDwRev + implicit none + GetSoundDwRev = SoundDwRevs + end function + + integer function GetSoundDwBrake() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundDwBrake + !DEC$ ATTRIBUTES ALIAS: 'GetSoundDwBrake' :: GetSoundDwBrake + implicit none + GetSoundDwBrake = SoundDwBrakes + end function + + integer function GetSoundChokePump() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundChokePump + !DEC$ ATTRIBUTES ALIAS: 'GetSoundChokePump' :: GetSoundChokePump + implicit none + GetSoundChokePump = SoundChokePumps + end function + + integer function GetSoundGasThroughChoke() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundGasThroughChoke + !DEC$ ATTRIBUTES ALIAS: 'GetSoundGasThroughChoke' :: GetSoundGasThroughChoke + implicit none + GetSoundGasThroughChoke = SoundGasThroughChokes + end function + + integer function GetSoundKoomeyAirPump() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundKoomeyAirPump + !DEC$ ATTRIBUTES ALIAS: 'GetSoundKoomeyAirPump' :: GetSoundKoomeyAirPump + implicit none + GetSoundKoomeyAirPump = SoundKoomeyAirPumps + end function + + integer function GetSoundKoomeyElectricPump() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundKoomeyElectricPump + !DEC$ ATTRIBUTES ALIAS: 'GetSoundKoomeyElectricPump' :: GetSoundKoomeyElectricPump + implicit none + GetSoundKoomeyElectricPump = SoundKoomeyElectricPumps + end function + + logical function GetSoundRtGearCrash() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundRtGearCrash + !DEC$ ATTRIBUTES ALIAS: 'GetSoundRtGearCrash' :: GetSoundRtGearCrash + implicit none + GetSoundRtGearCrash = SoundRtGearCrashs + end function + + logical function GetSoundDwGearCrash() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundDwGearCrash + !DEC$ ATTRIBUTES ALIAS: 'GetSoundDwGearCrash' :: GetSoundDwGearCrash + implicit none + GetSoundDwGearCrash = SoundDwGearCrashs + end function + + logical function GetSoundFloorCollision() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundFloorCollision + !DEC$ ATTRIBUTES ALIAS: 'GetSoundFloorCollision' :: GetSoundFloorCollision + implicit none + GetSoundFloorCollision = SoundFloorCollisions + end function + + logical function GetSoundCrownCollision() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundCrownCollision + !DEC$ ATTRIBUTES ALIAS: 'GetSoundCrownCollision' :: GetSoundCrownCollision + implicit none + GetSoundCrownCollision = SoundCrownCollisions + end function + + logical function GetSoundDwClutch() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundDwClutch + !DEC$ ATTRIBUTES ALIAS: 'GetSoundDwClutch' :: GetSoundDwClutch + implicit none + GetSoundDwClutch = SoundDwClutchs + end function + + logical function GetSoundBlower() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlower + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlower' :: GetSoundBlower + implicit none + GetSoundBlower = SoundBlowers + end function + + logical function GetSoundBlowerMp1() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlowerMp1 + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlowerMp1' :: GetSoundBlowerMp1 + implicit none + GetSoundBlowerMp1 = SoundBlowerMp1s + end function + + logical function GetSoundBlowerMp2() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlowerMp2 + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlowerMp2' :: GetSoundBlowerMp2 + implicit none + GetSoundBlowerMp2 = SoundBlowerMp2s + end function + + logical function GetSoundBlowerMp3() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlowerMp3 + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlowerMp3' :: GetSoundBlowerMp3 + implicit none + GetSoundBlowerMp3 = SoundBlowerMp3s + end function + + logical function GetSoundBlowerRt() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlowerRt + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlowerRt' :: GetSoundBlowerRt + implicit none + GetSoundBlowerRt = SoundBlowerRts + end function + + logical function GetSoundBlowerDw() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlowerDw + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlowerDw' :: GetSoundBlowerDw + implicit none + GetSoundBlowerDw = SoundBlowerDws + end function + + logical function GetSoundBlowerStart() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlowerStart + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlowerStart' :: GetSoundBlowerStart + implicit none + GetSoundBlowerStart = SoundBlowerStarts + end function + + logical function GetSoundBlowerShutdown() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundBlowerShutdown + !DEC$ ATTRIBUTES ALIAS: 'GetSoundBlowerShutdown' :: GetSoundBlowerShutdown + implicit none + GetSoundBlowerShutdown = SoundBlowerShutdowns + end function + + logical function GetSoundElectricPump() + !DEC$ ATTRIBUTES DLLEXPORT :: GetSoundElectricPump + !DEC$ ATTRIBUTES ALIAS: 'GetSoundElectricPump' :: GetSoundElectricPump + implicit none + GetSoundElectricPump = SoundElectricPumps + end function + + + + + + + + + + + +end module CSounds \ No newline at end of file diff --git a/Common/DynamicDoubleArray.f90 b/Common/DynamicDoubleArray.f90 new file mode 100644 index 0000000..c7b1091 --- /dev/null +++ b/Common/DynamicDoubleArray.f90 @@ -0,0 +1,157 @@ +module DynamicDoubleArray + implicit none + public + + type, public :: DynamicDoubleArrayType + real(8), allocatable :: Array(:) + contains + procedure :: First => First + procedure :: Last => Last + procedure :: Length => Length + procedure :: Add => Add + procedure :: AddToFirst => AddToFirst + procedure :: AddTo => AddTo + procedure :: Remove => Remove + procedure :: Empty => Empty + end type DynamicDoubleArrayType + + contains + + + real(8) function First(this) + implicit none + class(DynamicDoubleArrayType), intent(in) :: this + if(allocated(this%Array) .and. size(this%Array) > 0) then + First = this%Array(1) + return + end if + First = 0 + end function + + real(8) function Last(this) + implicit none + class(DynamicDoubleArrayType), intent(in) :: this + if(allocated(this%Array) .and. size(this%Array) > 0) then + Last = this%Array(size(this%Array)) + return + end if + Last = 0 + end function + + integer function Length(this) + implicit none + class(DynamicDoubleArrayType), intent(in) :: this + if(allocated(this%Array)) then + Length = size(this%Array) + return + end if + Length = 0 + end function + + + subroutine AddToFirst(this, value) + implicit none + class(DynamicDoubleArrayType), intent(inout) :: this + real(8), allocatable :: tempArr(:) + real(8), intent(in) :: value + integer :: i, isize + + if(allocated(this%Array)) then + isize = size(this%Array) + allocate(tempArr(isize+1)) + tempArr(1) = value + do i=2,isize+1 + tempArr(i) = this%Array(i-1) + end do + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + else + allocate(this%Array(1)) + this%Array(1) = value + end if + + end subroutine + + subroutine AddTo(this, index, value) + implicit none + class(DynamicDoubleArrayType), intent(inout) :: this + real(8), allocatable :: tempArr(:) + integer, intent(in) :: index + real(8), intent(in) :: value + integer :: isize + if(index <= 0) return + if(index > size(this%Array)) then + call this%Add(value) + return + endif + if(allocated(this%Array)) then + isize = size(this%Array) + allocate(tempArr(isize+1)) + tempArr(:index-1) = this%Array(:index-1) + tempArr(index) = value + tempArr(index+1:) = this%Array(index:) + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + end if + end subroutine + + subroutine Add(this, value) + implicit none + class(DynamicDoubleArrayType), intent(inout) :: this + real(8), allocatable :: tempArr(:) + real(8), intent(in) :: value + integer :: i, isize + + if(allocated(this%Array)) then + isize = size(this%Array) + allocate(tempArr(isize+1)) + do i=1,isize + tempArr(i) = this%Array(i) + end do + tempArr(isize+1) = value + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + else + allocate(this%Array(1)) + this%Array(1) = value + end if + + end subroutine + + + subroutine Empty(this) + implicit none + class(DynamicDoubleArrayType), intent(inout) :: this + if(allocated(this%Array)) deallocate(this%Array) + end subroutine + + + subroutine Remove(this, index) + implicit none + class(DynamicDoubleArrayType), intent(inout) :: this + integer, intent(in) :: index + real(8), allocatable :: tempArr(:) + integer :: i + logical :: found + + if(index <= 0 .or. index > size(this%Array)) return + if(.not.allocated(this%Array))return + allocate(tempArr(size(this%Array)-1)) + found = .false. + do i=1, size(this%Array) + if(i==index) then + found = .true. + cycle + end if + if(found) then + tempArr(i-1) = this%Array(i) + else + tempArr(i) = this%Array(i) + endif + end do + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + end subroutine + + +end module DynamicDoubleArray \ No newline at end of file diff --git a/Common/DynamicIntegerArray.f90 b/Common/DynamicIntegerArray.f90 new file mode 100644 index 0000000..c9d7be1 --- /dev/null +++ b/Common/DynamicIntegerArray.f90 @@ -0,0 +1,158 @@ +module DynamicIntegerArray + implicit none + public + + type, public :: DynamicIntegerArrayType + integer, allocatable :: Array(:) + contains + procedure :: First => First + procedure :: Last => Last + procedure :: Length => Length + procedure :: Add => Add + procedure :: AddToFirst => AddToFirst + procedure :: AddTo => AddTo + procedure :: Remove => Remove + procedure :: Empty => Empty + end type DynamicIntegerArrayType + + contains + + + integer function First(this) + implicit none + class(DynamicIntegerArrayType), intent(in) :: this + if(allocated(this%Array) .and. size(this%Array) > 0) then + First = this%Array(1) + return + end if + First = 0 + end function + + integer function Last(this) + implicit none + class(DynamicIntegerArrayType), intent(in) :: this + if(allocated(this%Array) .and. size(this%Array) > 0) then + Last = this%Array(size(this%Array)) + return + end if + Last = 0 + end function + + integer function Length(this) + implicit none + class(DynamicIntegerArrayType), intent(in) :: this + if(allocated(this%Array)) then + Length = size(this%Array) + return + end if + Length = 0 + end function + + + subroutine AddToFirst(this, value) + implicit none + class(DynamicIntegerArrayType), intent(inout) :: this + integer, allocatable :: tempArr(:) + integer, intent(in) :: value + integer :: i, isize + + if(allocated(this%Array)) then + isize = size(this%Array) + allocate(tempArr(isize+1)) + tempArr(1) = value + do i=2,isize+1 + tempArr(i) = this%Array(i-1) + end do + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + else + allocate(this%Array(1)) + this%Array(1) = value + end if + + end subroutine + + subroutine AddTo(this, index, value) + implicit none + class(DynamicIntegerArrayType), intent(inout) :: this + integer, allocatable :: tempArr(:) + integer, intent(in) :: index + integer, intent(in) :: value + integer :: i, isize + if(index <= 0) return + if(index > size(this%Array)) then + call this%Add(value) + return + endif + if(allocated(this%Array)) then + isize = size(this%Array) + allocate(tempArr(isize+1)) + tempArr(:index-1) = this%Array(:index-1) + tempArr(index) = value + tempArr(index+1:) = this%Array(index:) + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + end if + end subroutine + + + subroutine Add(this, value) + implicit none + class(DynamicIntegerArrayType), intent(inout) :: this + integer, allocatable :: tempArr(:) + integer, intent(in) :: value + integer :: i, isize + + if(allocated(this%Array)) then + isize = size(this%Array) + allocate(tempArr(isize+1)) + do i=1,isize + tempArr(i) = this%Array(i) + end do + tempArr(isize+1) = value + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + else + allocate(this%Array(1)) + this%Array(1) = value + end if + + end subroutine + + + subroutine Empty(this) + implicit none + class(DynamicIntegerArrayType), intent(inout) :: this + if(allocated(this%Array)) deallocate(this%Array) + end subroutine + + + subroutine Remove(this, index) + implicit none + class(DynamicIntegerArrayType), intent(inout) :: this + integer, intent(in) :: index + integer, allocatable :: tempArr(:) + integer :: i + logical :: found + + if(index <= 0 .or. index > size(this%Array)) return + if(.not.allocated(this%Array))return + allocate(tempArr(size(this%Array)-1)) + found = .false. + do i=1, size(this%Array) + if(i==index) then + found = .true. + cycle + end if + if(found) then + tempArr(i-1) = this%Array(i) + else + tempArr(i) = this%Array(i) + endif + end do + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + end subroutine + + +end module DynamicIntegerArray \ No newline at end of file diff --git a/Common/DynamicLogicalArray.f90 b/Common/DynamicLogicalArray.f90 new file mode 100644 index 0000000..c22fd1a --- /dev/null +++ b/Common/DynamicLogicalArray.f90 @@ -0,0 +1,157 @@ +module DynamicLogicalArray + implicit none + public + + type, public :: DynamicLogicalArrayType + logical, allocatable :: Array(:) + contains + procedure :: First => First + procedure :: Last => Last + procedure :: Length => Length + procedure :: Add => Add + procedure :: AddToFirst => AddToFirst + procedure :: AddTo => AddTo + procedure :: Remove => Remove + procedure :: Empty => Empty + end type DynamicLogicalArrayType + + contains + + + logical function First(this) + implicit none + class(DynamicLogicalArrayType), intent(in) :: this + if(allocated(this%Array) .and. size(this%Array) > 0) then + First = this%Array(1) + return + end if + First = 0 + end function + + logical function Last(this) + implicit none + class(DynamicLogicalArrayType), intent(in) :: this + if(allocated(this%Array) .and. size(this%Array) > 0) then + Last = this%Array(size(this%Array)) + return + end if + Last = 0 + end function + + integer function Length(this) + implicit none + class(DynamicLogicalArrayType), intent(in) :: this + if(allocated(this%Array)) then + Length = size(this%Array) + return + end if + Length = 0 + end function + + + subroutine AddToFirst(this, value) + implicit none + class(DynamicLogicalArrayType), intent(inout) :: this + logical, allocatable :: tempArr(:) + logical, intent(in) :: value + integer :: i, isize + + if(allocated(this%Array)) then + isize = size(this%Array) + allocate(tempArr(isize+1)) + tempArr(1) = value + do i=2,isize+1 + tempArr(i) = this%Array(i-1) + end do + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + else + allocate(this%Array(1)) + this%Array(1) = value + end if + + end subroutine + + subroutine AddTo(this, index, value) + implicit none + class(DynamicLogicalArrayType), intent(inout) :: this + logical, allocatable :: tempArr(:) + integer, intent(in) :: index + logical, intent(in) :: value + integer :: i, isize + if(index <= 0) return + if(index > size(this%Array)) then + call this%Add(value) + return + endif + if(allocated(this%Array)) then + isize = size(this%Array) + allocate(tempArr(isize+1)) + tempArr(:index-1) = this%Array(:index-1) + tempArr(index) = value + tempArr(index+1:) = this%Array(index:) + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + end if + end subroutine + + subroutine Add(this, value) + implicit none + class(DynamicLogicalArrayType), intent(inout) :: this + logical, allocatable :: tempArr(:) + logical, intent(in) :: value + integer :: i, isize + + if(allocated(this%Array)) then + isize = size(this%Array) + allocate(tempArr(isize+1)) + do i=1,isize + tempArr(i) = this%Array(i) + end do + tempArr(isize+1) = value + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + else + allocate(this%Array(1)) + this%Array(1) = value + end if + + end subroutine + + + subroutine Empty(this) + implicit none + class(DynamicLogicalArrayType), intent(inout) :: this + if(allocated(this%Array)) deallocate(this%Array) + end subroutine + + + subroutine Remove(this, index) + implicit none + class(DynamicLogicalArrayType), intent(inout) :: this + integer, intent(in) :: index + logical, allocatable :: tempArr(:) + integer :: i + logical :: found + + if(index <= 0 .or. index > size(this%Array)) return + if(.not.allocated(this%Array))return + allocate(tempArr(size(this%Array)-1)) + found = .false. + do i=1, size(this%Array) + if(i==index) then + found = .true. + cycle + end if + if(found) then + tempArr(i-1) = this%Array(i) + else + tempArr(i) = this%Array(i) + endif + end do + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + end subroutine + + +end module DynamicLogicalArray \ No newline at end of file diff --git a/Common/DynamicRealArray.f90 b/Common/DynamicRealArray.f90 new file mode 100644 index 0000000..fbb89f8 --- /dev/null +++ b/Common/DynamicRealArray.f90 @@ -0,0 +1,157 @@ +module DynamicRealArray + implicit none + public + + type, public :: DynamicRealArrayType + real, allocatable :: Array(:) + contains + procedure :: First => First + procedure :: Last => Last + procedure :: Length => Length + procedure :: Add => Add + procedure :: AddToFirst => AddToFirst + procedure :: AddTo => AddTo + procedure :: Remove => Remove + procedure :: Empty => Empty + end type DynamicRealArrayType + + contains + + + real function First(this) + implicit none + class(DynamicRealArrayType), intent(in) :: this + if(allocated(this%Array) .and. size(this%Array) > 0) then + First = this%Array(1) + return + end if + First = 0 + end function + + real function Last(this) + implicit none + class(DynamicRealArrayType), intent(in) :: this + if(allocated(this%Array) .and. size(this%Array) > 0) then + Last = this%Array(size(this%Array)) + return + end if + Last = 0 + end function + + integer function Length(this) + implicit none + class(DynamicRealArrayType), intent(in) :: this + if(allocated(this%Array)) then + Length = size(this%Array) + return + end if + Length = 0 + end function + + + subroutine AddToFirst(this, value) + implicit none + class(DynamicRealArrayType), intent(inout) :: this + real, allocatable :: tempArr(:) + real, intent(in) :: value + integer :: i, isize + + if(allocated(this%Array)) then + isize = size(this%Array) + allocate(tempArr(isize+1)) + tempArr(1) = value + do i=2,isize+1 + tempArr(i) = this%Array(i-1) + end do + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + else + allocate(this%Array(1)) + this%Array(1) = value + end if + + end subroutine + + subroutine AddTo(this, index, value) + implicit none + class(DynamicRealArrayType), intent(inout) :: this + real, allocatable :: tempArr(:) + integer, intent(in) :: index + real, intent(in) :: value + integer :: i, isize + if(index <= 0) return + if(index > size(this%Array)) then + call this%Add(value) + return + endif + if(allocated(this%Array)) then + isize = size(this%Array) + allocate(tempArr(isize+1)) + tempArr(:index-1) = this%Array(:index-1) + tempArr(index) = value + tempArr(index+1:) = this%Array(index:) + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + end if + end subroutine + + subroutine Add(this, value) + implicit none + class(DynamicRealArrayType), intent(inout) :: this + real, allocatable :: tempArr(:) + real, intent(in) :: value + integer :: i, isize + + if(allocated(this%Array)) then + isize = size(this%Array) + allocate(tempArr(isize+1)) + do i=1,isize + tempArr(i) = this%Array(i) + end do + tempArr(isize+1) = value + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + else + allocate(this%Array(1)) + this%Array(1) = value + end if + + end subroutine + + + subroutine Empty(this) + implicit none + class(DynamicRealArrayType), intent(inout) :: this + if(allocated(this%Array)) deallocate(this%Array) + end subroutine + + + subroutine Remove(this, index) + implicit none + class(DynamicRealArrayType), intent(inout) :: this + integer, intent(in) :: index + real, allocatable :: tempArr(:) + integer :: i + logical :: found + + if(index <= 0 .or. index > size(this%Array)) return + if(.not.allocated(this%Array))return + allocate(tempArr(size(this%Array)-1)) + found = .false. + do i=1, size(this%Array) + if(i==index) then + found = .true. + cycle + end if + if(found) then + tempArr(i-1) = this%Array(i) + else + tempArr(i) = this%Array(i) + endif + end do + deallocate(this%Array) + call move_alloc(tempArr, this%Array) + end subroutine + + +end module DynamicRealArray \ No newline at end of file diff --git a/Common/json-fortran/json_file_module.F90 b/Common/json-fortran/json_file_module.F90 new file mode 100644 index 0000000..75376ab --- /dev/null +++ b/Common/json-fortran/json_file_module.F90 @@ -0,0 +1,3040 @@ +!***************************************************************************************** +!> author: Jacob Williams +! license: BSD +! +! Higher-level [[json_file]] interface for the [[json_value]] type. +! +!### License +! * JSON-Fortran is released under a BSD-style license. +! See the [LICENSE](https://github.com/jacobwilliams/json-fortran/blob/master/LICENSE) +! file for details. + + module json_file_module + + use,intrinsic :: iso_fortran_env + use json_kinds + use json_parameters, only: unit2str + use json_string_utilities + use json_value_module + + implicit none + + private + +#include "json_macros.inc" + + !********************************************************* + !> author: Jacob Williams + ! date: 12/9/2013 + ! + ! The `json_file` is the main public class that is + ! used to open a file and get data from it. + ! + ! A `json_file` contains only two items: an instance of a [[json_core(type)]], + ! which is used for all data manipulation, and a [[json_value]] pointer, + ! which is used to construct the linked-list data structure. + ! Note that most methods in the `json_file` class are simply wrappers + ! to the lower-level routines in the [[json_value_module]]. + ! + !### Example + ! + !```fortran + ! program test + ! use json_module + ! implicit none + ! type(json_file) :: json + ! integer :: ival + ! real(real64) :: rval + ! character(len=:),allocatable :: cval + ! logical :: found + ! call json%initialize(compact_reals=.true.) + ! call json%load(filename='myfile.json') + ! call json%print() !print to the console + ! call json%get('var.i',ival,found) + ! call json%get('var.r(3)',rval,found) + ! call json%get('var.c',cval,found) + ! call json%destroy() + ! end program test + !``` + ! + !@note The `destroy()` method may be called to free the memory if necessary. + ! [[json_file(type)]] includes a finalizer that also calls + ! `destroy()` when the variable goes out of scope. + + type,public :: json_file + + private + + type(json_core) :: core !! The instance of the [[json_core(type)]] + !! factory used for this file. + type(json_value),pointer :: p => null() !! the JSON structure read from the file + + contains + + generic,public :: initialize => initialize_json_core_in_file,& + set_json_core_in_file + + procedure,public :: get_core => get_json_core_in_file + + !> + ! Load JSON from a file. + procedure,public :: load => json_file_load + + !> + ! The same as `load`, but only here for backward compatibility + procedure,public :: load_file => json_file_load + + !> + ! Load JSON from a string. + generic,public :: deserialize => MAYBEWRAP(json_file_load_from_string) + + !> + ! The same as `deserialize`, but only here for backward compatibility + generic,public :: load_from_string => MAYBEWRAP(json_file_load_from_string) + + !> + ! Print the [[json_value]] structure to an allocatable string + procedure,public :: serialize => json_file_print_to_string + + !> + ! The same as `serialize`, but only here for backward compatibility + procedure,public :: print_to_string => json_file_print_to_string + + procedure,public :: destroy => json_file_destroy + procedure,public :: nullify => json_file_nullify + procedure,public :: move => json_file_move_pointer + generic,public :: info => MAYBEWRAP(json_file_variable_info) + generic,public :: matrix_info => MAYBEWRAP(json_file_variable_matrix_info) + + !error checking: + procedure,public :: failed => json_file_failed + procedure,public :: print_error_message => json_file_print_error_message + procedure,public :: check_for_errors => json_file_check_for_errors + procedure,public :: clear_exceptions => json_file_clear_exceptions + + generic,public :: print => json_file_print_to_console, & + json_file_print_to_unit, & + json_file_print_to_filename + + !> + ! The same as `print`, but only here for backward compatibility + generic,public :: print_file => json_file_print_to_console, & + json_file_print_to_unit, & + json_file_print_to_filename + + !> + ! Rename a variable, specifying it by path + generic,public :: rename => MAYBEWRAP(json_file_rename) +#ifdef USE_UCS4 + generic,public :: rename => json_file_rename_path_ascii, & + json_file_rename_name_ascii +#endif + + !> + ! Verify that a path is valid + ! (i.e., a variable with this path exists in the file). + generic,public :: valid_path => MAYBEWRAP(json_file_valid_path) + + !> + ! Get a variable from a [[json_file(type)]], by specifying the path. + generic,public :: get => MAYBEWRAP(json_file_get_object), & + MAYBEWRAP(json_file_get_integer), & +#ifndef REAL32 + MAYBEWRAP(json_file_get_real32), & +#endif + MAYBEWRAP(json_file_get_real), & +#ifdef REAL128 + MAYBEWRAP(json_file_get_real64), & +#endif + MAYBEWRAP(json_file_get_logical), & + MAYBEWRAP(json_file_get_string), & + MAYBEWRAP(json_file_get_integer_vec), & +#ifndef REAL32 + MAYBEWRAP(json_file_get_real32_vec), & +#endif + MAYBEWRAP(json_file_get_real_vec), & +#ifdef REAL128 + MAYBEWRAP(json_file_get_real64_vec), & +#endif + MAYBEWRAP(json_file_get_logical_vec), & + MAYBEWRAP(json_file_get_string_vec), & + MAYBEWRAP(json_file_get_alloc_string_vec), & + json_file_get_root + + !> + ! Add a variable to a [[json_file(type)]], by specifying the path. + ! + !### Example + ! + !```fortran + ! program test + ! use json_module, rk=>json_rk, ik=>json_ik + ! implicit none + ! type(json_file) :: f + ! call f%initialize() ! specify whatever init options you want. + ! call f%add('inputs.t', 0.0_rk) + ! call f%add('inputs.x', [1.0_rk,2.0_rk,3.0_rk]) + ! call f%add('inputs.flag', .true.) + ! call f%print() ! print to the console + ! end program test + !``` + generic,public :: add => json_file_add, & + MAYBEWRAP(json_file_add_object), & + MAYBEWRAP(json_file_add_integer), & +#ifndef REAL32 + MAYBEWRAP(json_file_add_real32), & +#endif + MAYBEWRAP(json_file_add_real), & +#ifdef REAL128 + MAYBEWRAP(json_file_add_real64), & +#endif + MAYBEWRAP(json_file_add_logical), & + MAYBEWRAP(json_file_add_string), & + MAYBEWRAP(json_file_add_integer_vec), & +#ifndef REAL32 + MAYBEWRAP(json_file_add_real32_vec), & +#endif + MAYBEWRAP(json_file_add_real_vec), & +#ifdef REAL128 + MAYBEWRAP(json_file_add_real64_vec), & +#endif + MAYBEWRAP(json_file_add_logical_vec), & + MAYBEWRAP(json_file_add_string_vec) +#ifdef USE_UCS4 + generic,public :: add => json_file_add_string_path_ascii, & + json_file_add_string_value_ascii,& + json_file_add_string_vec_path_ascii,& + json_file_add_string_vec_vec_ascii +#endif + + !> + ! Update a scalar variable in a [[json_file(type)]], + ! by specifying the path. + ! + !@note These have been mostly supplanted by the `add` + ! methods, which do a similar thing (and can be used for + ! scalars and vectors, etc.) + generic,public :: update => MAYBEWRAP(json_file_update_integer), & + MAYBEWRAP(json_file_update_logical), & +#ifndef REAL32 + MAYBEWRAP(json_file_update_real32), & +#endif + MAYBEWRAP(json_file_update_real), & +#ifdef REAL128 + MAYBEWRAP(json_file_update_real64), & +#endif + MAYBEWRAP(json_file_update_string) +#ifdef USE_UCS4 + generic,public :: update => json_file_update_string_name_ascii, & + json_file_update_string_val_ascii +#endif + + !> + ! Remove a variable from a [[json_file(type)]] + ! by specifying the path. + generic,public :: remove => MAYBEWRAP(json_file_remove) + + !traverse + procedure,public :: traverse => json_file_traverse + + ! *************************************************** + ! operators + ! *************************************************** + + generic,public :: operator(.in.) => MAYBEWRAP(json_file_valid_path_op) + procedure,pass(me) :: MAYBEWRAP(json_file_valid_path_op) + + generic,public :: assignment(=) => assign_json_file,& + assign_json_file_to_string,& + MAYBEWRAP(assign_string_to_json_file) + procedure :: assign_json_file + procedure,pass(me) :: assign_json_file_to_string + procedure :: MAYBEWRAP(assign_string_to_json_file) + + ! *************************************************** + ! private routines + ! *************************************************** + + !load from string: + procedure :: MAYBEWRAP(json_file_load_from_string) + + !initialize + procedure :: initialize_json_core_in_file + procedure :: set_json_core_in_file + + !get info: + procedure :: MAYBEWRAP(json_file_variable_info) + procedure :: MAYBEWRAP(json_file_variable_matrix_info) + + !rename: + procedure :: MAYBEWRAP(json_file_rename) +#ifdef USE_UCS4 + procedure :: json_file_rename_path_ascii + procedure :: json_file_rename_name_ascii +#endif + + !validate path: + procedure :: MAYBEWRAP(json_file_valid_path) + + !get: + procedure :: MAYBEWRAP(json_file_get_object) + procedure :: MAYBEWRAP(json_file_get_integer) +#ifndef REAL32 + procedure :: MAYBEWRAP(json_file_get_real32) +#endif + procedure :: MAYBEWRAP(json_file_get_real) +#ifdef REAL128 + procedure :: MAYBEWRAP(json_file_get_real64) +#endif + procedure :: MAYBEWRAP(json_file_get_logical) + procedure :: MAYBEWRAP(json_file_get_string) + procedure :: MAYBEWRAP(json_file_get_integer_vec) +#ifndef REAL32 + procedure :: MAYBEWRAP(json_file_get_real32_vec) +#endif + procedure :: MAYBEWRAP(json_file_get_real_vec) +#ifdef REAL128 + procedure :: MAYBEWRAP(json_file_get_real64_vec) +#endif + procedure :: MAYBEWRAP(json_file_get_logical_vec) + procedure :: MAYBEWRAP(json_file_get_string_vec) + procedure :: MAYBEWRAP(json_file_get_alloc_string_vec) + procedure :: json_file_get_root + + !add: + procedure :: json_file_add + procedure :: MAYBEWRAP(json_file_add_object) + procedure :: MAYBEWRAP(json_file_add_integer) +#ifndef REAL32 + procedure :: MAYBEWRAP(json_file_add_real32) +#endif + procedure :: MAYBEWRAP(json_file_add_real) +#ifdef REAL128 + procedure :: MAYBEWRAP(json_file_add_real64) +#endif + procedure :: MAYBEWRAP(json_file_add_logical) + procedure :: MAYBEWRAP(json_file_add_string) + procedure :: MAYBEWRAP(json_file_add_integer_vec) +#ifndef REAL32 + procedure :: MAYBEWRAP(json_file_add_real32_vec) +#endif + procedure :: MAYBEWRAP(json_file_add_real_vec) +#ifdef REAL128 + procedure :: MAYBEWRAP(json_file_add_real64_vec) +#endif + procedure :: MAYBEWRAP(json_file_add_logical_vec) + procedure :: MAYBEWRAP(json_file_add_string_vec) +#ifdef USE_UCS4 + procedure :: json_file_add_string_path_ascii + procedure :: json_file_add_string_value_ascii + procedure :: json_file_add_string_vec_path_ascii + procedure :: json_file_add_string_vec_vec_ascii +#endif + + !update: + procedure :: MAYBEWRAP(json_file_update_integer) + procedure :: MAYBEWRAP(json_file_update_logical) +#ifndef REAL32 + procedure :: MAYBEWRAP(json_file_update_real32) +#endif + procedure :: MAYBEWRAP(json_file_update_real) +#ifdef REAL128 + procedure :: MAYBEWRAP(json_file_update_real64) +#endif + procedure :: MAYBEWRAP(json_file_update_string) +#ifdef USE_UCS4 + procedure :: json_file_update_string_name_ascii + procedure :: json_file_update_string_val_ascii +#endif + + !remove: + procedure :: MAYBEWRAP(json_file_remove) + + !print: + procedure :: json_file_print_to_console + procedure :: json_file_print_to_unit + procedure :: json_file_print_to_filename + + final :: finalize_json_file + + end type json_file + !********************************************************* + + !********************************************************* + !> author: Izaak Beekman + ! date: 07/23/2015 + ! + ! Structure constructor to initialize a [[json_file(type)]] + ! object with an existing [[json_value]] object or a JSON + ! string, and either the [[json_core(type)]] settings or a + ! [[json_core(type)]] instance. + ! + !### Example + ! + !```fortran + ! ... + ! type(json_file) :: my_file + ! type(json_value),pointer :: json_object + ! type(json_core) :: json_core_object + ! ... + ! ! Construct a json_object: + ! !could do this: + ! my_file = json_file(json_object) + ! !or: + ! my_file = json_file(json_object,verbose=.true.) + ! !or: + ! my_file = json_file('{"x": [1]}',verbose=.true.) + ! !or: + ! my_file = json_file(json_object,json_core_object) + ! !or: + ! my_file = json_file('{"x": [1]}',json_core_object) + !``` + interface json_file + module procedure initialize_json_file, & + initialize_json_file_v2, & + MAYBEWRAP(initialize_json_file_from_string), & + MAYBEWRAP(initialize_json_file_from_string_v2) + end interface + !************************************************************************************* + + contains +!***************************************************************************************** + +!***************************************************************************************** +!> +! Finalizer for [[json_file]] class. +! +! Just a wrapper for [[json_file_destroy]]. + + subroutine finalize_json_file(me) + + implicit none + + type(json_file),intent(inout) :: me + + call me%destroy(destroy_core=.true.) + + end subroutine finalize_json_file +!***************************************************************************************** + +!***************************************************************************************** +!> +! Check error status in the file. + + pure function json_file_failed(me) result(failed) + + implicit none + + class(json_file),intent(in) :: me + logical(LK) :: failed !! will be true if there has been an error. + + failed = me%core%failed() + + end function json_file_failed +!***************************************************************************************** + +!***************************************************************************************** +!> +! Retrieve error status and message from the class. + + subroutine json_file_check_for_errors(me,status_ok,error_msg) + + implicit none + + class(json_file),intent(inout) :: me + logical(LK),intent(out),optional :: status_ok !! true if there were no errors + character(kind=CK,len=:),allocatable,intent(out),optional :: error_msg !! the error message + !! (if there were errors) + +#if defined __GFORTRAN__ + character(kind=CK,len=:),allocatable :: tmp !! workaround for gfortran bugs + call me%core%check_for_errors(status_ok,tmp) + if (present(error_msg)) error_msg = tmp +#else + call me%core%check_for_errors(status_ok,error_msg) +#endif + + end subroutine json_file_check_for_errors +!***************************************************************************************** + +!***************************************************************************************** +!> +! Clear exceptions in the class. + + pure subroutine json_file_clear_exceptions(me) + + implicit none + + class(json_file),intent(inout) :: me + + call me%core%clear_exceptions() + + end subroutine json_file_clear_exceptions +!***************************************************************************************** + +!***************************************************************************************** +!> +! This is a wrapper for [[json_print_error_message]]. + + subroutine json_file_print_error_message(me,io_unit) + + implicit none + + class(json_file),intent(inout) :: me + integer, intent(in), optional :: io_unit + + call me%core%print_error_message(io_unit) + + end subroutine json_file_print_error_message +!***************************************************************************************** + +!***************************************************************************************** +!> +! Initialize the [[json_core(type)]] for this [[json_file]]. +! This is just a wrapper for [[json_initialize]]. +! +!@note This does not destroy the data in the file. +! +!@note [[initialize_json_core]], [[json_initialize]], +! [[initialize_json_core_in_file]], [[initialize_json_file]], +! [[initialize_json_file_v2]], [[initialize_json_file_from_string]], +! and [[initialize_json_file_from_string_v2]] +! all have a similar interface. + + subroutine initialize_json_core_in_file(me,& +#include "json_initialize_dummy_arguments.inc" + ) + + implicit none + + class(json_file),intent(inout) :: me +#include "json_initialize_arguments.inc" + + call me%core%initialize(& +#include "json_initialize_dummy_arguments.inc" + ) + end subroutine initialize_json_core_in_file +!***************************************************************************************** + +!***************************************************************************************** +!> +! Set the [[json_core(type)]] for this [[json_file]]. +! +!@note This does not destroy the data in the file. +! +!@note This one is used if you want to initialize the file with +! an already-existing [[json_core(type)]] (presumably, this was already +! initialized by a call to [[initialize_json_core]] or similar). + + subroutine set_json_core_in_file(me,core) + + implicit none + + class(json_file),intent(inout) :: me + type(json_core),intent(in) :: core + + me%core = core + + end subroutine set_json_core_in_file +!***************************************************************************************** + +!***************************************************************************************** +!> +! Get a copy of the [[json_core(type)]] in this [[json_file]]. + + subroutine get_json_core_in_file(me,core) + + implicit none + + class(json_file),intent(in) :: me + type(json_core),intent(out) :: core + + core = me%core + + end subroutine get_json_core_in_file +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! date: 07/23/2015 +! +! Cast a [[json_value]] object as a [[json_file(type)]] object. +! It also calls the `initialize()` method. +! +!@note [[initialize_json_core]], [[json_initialize]], +! [[initialize_json_core_in_file]], [[initialize_json_file]], +! [[initialize_json_file_v2]], [[initialize_json_file_from_string]], +! and [[initialize_json_file_from_string_v2]] +! all have a similar interface. + + function initialize_json_file(p,& +#include "json_initialize_dummy_arguments.inc" + ) result(file_object) + + implicit none + + type(json_file) :: file_object + type(json_value),pointer,optional :: p !! `json_value` object to cast + !! as a `json_file` object. This + !! will be nullified. +#include "json_initialize_arguments.inc" + + call file_object%initialize(& +#include "json_initialize_dummy_arguments.inc" + ) + + if (present(p)) then + file_object%p => p + ! we have to nullify it to avoid + ! a dangling pointer when the file + ! goes out of scope + nullify(p) + end if + + end function initialize_json_file +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 4/26/2016 +! +! Cast a [[json_value]] pointer and a [[json_core(type)]] object +! as a [[json_file(type)]] object. + + function initialize_json_file_v2(json_value_object,json_core_object) & + result(file_object) + + implicit none + + type(json_file) :: file_object + type(json_value),pointer,intent(in) :: json_value_object + type(json_core),intent(in) :: json_core_object + + file_object%p => json_value_object + file_object%core = json_core_object + + end function initialize_json_file_v2 +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 01/19/2019 +! +! Cast a JSON string as a [[json_file(type)]] object. +! It also calls the `initialize()` method. +! +!### Example +! +!```fortran +! type(json_file) :: f +! f = json_file('{"key ": 1}', trailing_spaces_significant=.true.) +!``` +! +!@note [[initialize_json_core]], [[json_initialize]], +! [[initialize_json_core_in_file]], [[initialize_json_file]], +! [[initialize_json_file_v2]], [[initialize_json_file_from_string]], +! and [[initialize_json_file_from_string_v2]] +! all have a similar interface. + + function initialize_json_file_from_string(str,& +#include "json_initialize_dummy_arguments.inc" + ) result(file_object) + + implicit none + + type(json_file) :: file_object + character(kind=CK,len=*),intent(in) :: str !! string to load JSON data from +#include "json_initialize_arguments.inc" + + call file_object%initialize(& +#include "json_initialize_dummy_arguments.inc" + ) + call file_object%deserialize(str) + + end function initialize_json_file_from_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[initialize_json_file_from_string]], where "str" is kind=CDK. + + function wrap_initialize_json_file_from_string(str,& +#include "json_initialize_dummy_arguments.inc" + ) result(file_object) + + implicit none + + type(json_file) :: file_object + character(kind=CDK,len=*),intent(in) :: str !! string to load JSON data from +#include "json_initialize_arguments.inc" + + file_object = initialize_json_file_from_string(& + to_unicode(str),& +#include "json_initialize_dummy_arguments.inc" + ) + + end function wrap_initialize_json_file_from_string +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/19/2019 +! +! Cast a JSON string and a [[json_core(type)]] object +! as a [[json_file(type)]] object. + + function initialize_json_file_from_string_v2(str, json_core_object) & + result(file_object) + + implicit none + + type(json_file) :: file_object + character(kind=CK,len=*),intent(in) :: str !! string to load JSON data from + type(json_core),intent(in) :: json_core_object + + file_object%core = json_core_object + call file_object%deserialize(str) + + end function initialize_json_file_from_string_v2 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[initialize_json_file_from_string_v2]], where "str" is kind=CDK. + + function wrap_initialize_json_file_from_string_v2(str,json_core_object) & + result(file_object) + + implicit none + + type(json_file) :: file_object + character(kind=CDK,len=*),intent(in) :: str !! string to load JSON data from + type(json_core),intent(in) :: json_core_object + + file_object = initialize_json_file_from_string_v2(to_unicode(str),json_core_object) + + end function wrap_initialize_json_file_from_string_v2 +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Nullify the [[json_value]] pointer in a [[json_file(type)]], +! but do not destroy it. +! +! This should normally only be done if the pointer is the target of +! another pointer outside the class that is still intended to be in +! scope after the [[json_file(type)]] has gone out of scope. +! Otherwise, this would result in a memory leak. +! +!### See also +! * [[json_file_destroy]] +! +!### History +! * 6/30/2019 : Created + + subroutine json_file_nullify(me) + + implicit none + + class(json_file),intent(inout) :: me + + nullify(me%p) + + end subroutine json_file_nullify +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Destroy the [[json_value]] data in a [[json_file(type)]]. +! This may be done when the variable is no longer needed, +! or will be reused to open a different file. +! Otherwise a memory leak will occur. +! +! Optionally, also destroy the [[json_core(type)]] instance (this +! is not necessary to prevent memory leaks, since a [[json_core(type)]] +! does not use pointers). +! +!### See also +! * [[json_file_nullify]] +! +!### History +! * 12/9/2013 : Created +! * 4/26/2016 : Added optional `destroy_core` argument +! +!@note This routine will be called automatically when the variable +! goes out of scope. + + subroutine json_file_destroy(me,destroy_core) + + implicit none + + class(json_file),intent(inout) :: me + logical,intent(in),optional :: destroy_core !! to also destroy the [[json_core(type)]]. + !! default is to leave it as is. + + if (associated(me%p)) call me%core%destroy(me%p) + + if (present(destroy_core)) then + if (destroy_core) call me%core%destroy() + end if + + end subroutine json_file_destroy +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/5/2014 +! +! Move the [[json_value]] pointer from one [[json_file(type)]] to another. +! The "from" pointer is then nullified, but not destroyed. +! +!@note If "from%p" is not associated, then an error is thrown. + + subroutine json_file_move_pointer(to,from) + + implicit none + + class(json_file),intent(inout) :: to + class(json_file),intent(inout) :: from + + if (associated(from%p)) then + + if (from%failed()) then + !Don't get the data if the FROM file has an + !active exception, since it may not be valid. + call to%core%throw_exception('Error in json_file_move_pointer: '//& + 'error exception in FROM file.') + else + call to%initialize() !initialize and clear any exceptions that may be present + to%p => from%p + nullify(from%p) + end if + + else + call to%core%throw_exception('Error in json_file_move_pointer: '//& + 'pointer is not associated.') + end if + + end subroutine json_file_move_pointer +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/9/2013 +! +! Load the JSON data from a file. +! +!### Example +! +!```fortran +! program main +! use json_module +! implicit none +! type(json_file) :: f +! call f%load('my_file.json') +! !... +! call f%destroy() +! end program main +!``` + + subroutine json_file_load(me, filename, unit) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: filename !! the filename to open + integer(IK),intent(in),optional :: unit !! the unit number to use + !! (if not present, a newunit + !! is used) + + call me%core%load(file=filename, p=me%p, unit=unit) + + end subroutine json_file_load +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/13/2015 +! +! Load the JSON data from a string. +! +!### Example +! +! Load JSON from a string: +!```fortran +! type(json_file) :: f +! call f%deserialize('{ "name": "Leonidas" }') +!``` + + subroutine json_file_load_from_string(me, str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: str !! string to load JSON data from + + call me%core%deserialize(me%p, str) + + end subroutine json_file_load_from_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_load_from_string]], where "str" is kind=CDK. + + subroutine wrap_json_file_load_from_string(me, str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: str + + call me%deserialize(to_unicode(str)) + + end subroutine wrap_json_file_load_from_string +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/11/2015 +! +! Print the JSON file to the console. + + subroutine json_file_print_to_console(me) + + implicit none + + class(json_file),intent(inout) :: me + + call me%core%print(me%p,iunit=int(output_unit,IK)) + + end subroutine json_file_print_to_console +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/9/2013 +! +! Prints the JSON file to the specified file unit number. + + subroutine json_file_print_to_unit(me, iunit) + + implicit none + + class(json_file),intent(inout) :: me + integer(IK),intent(in) :: iunit !! file unit number (must not be -1) + + if (iunit/=unit2str) then + call me%core%print(me%p,iunit=iunit) + else + call me%core%throw_exception('Error in json_file_print_to_unit: iunit must not be -1.') + end if + + end subroutine json_file_print_to_unit +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/11/2015 +! +! Print the JSON structure to the specified filename. +! The file is opened, printed, and then closed. +! +!### Example +! Example loading a JSON file, changing a value, and then printing +! result to a new file: +!```fortran +! type(json_file) :: f +! logical :: found +! call f%load('my_file.json') !open the original file +! call f%update('version',4,found) !change the value of a variable +! call f%print('my_file_2.json') !save file as new name +!``` + + subroutine json_file_print_to_filename(me,filename) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: filename !! filename to print to + + call me%core%print(me%p,filename) + + end subroutine json_file_print_to_filename +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/11/2015 +! +! Print the JSON file to a string. +! +!### Example +! +! Open a JSON file, and then print the contents to a string: +!```fortran +! type(json_file) :: f +! character(kind=CK,len=:),allocatable :: str +! call f%load('my_file.json') +! call f%serialize(str) +!``` + + subroutine json_file_print_to_string(me,str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=:),allocatable,intent(out) :: str !! string to print JSON data to + + call me%core%serialize(me%p,str) + + end subroutine json_file_print_to_string +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 2/3/2014 +! +! Returns information about a variable in a [[json_file(type)]]. +! +!@note If `found` is present, no exceptions will be thrown if an +! error occurs. Otherwise, an exception will be thrown if the +! variable is not found. + + subroutine json_file_variable_info(me,path,found,var_type,n_children,name) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! path to the variable + logical(LK),intent(out),optional :: found !! the variable exists in the structure + integer(IK),intent(out),optional :: var_type !! variable type + integer(IK),intent(out),optional :: n_children !! number of children + character(kind=CK,len=:),allocatable,intent(out),optional :: name !! variable name + + call me%core%info(me%p,path,found,var_type,n_children,name) + + end subroutine json_file_variable_info +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_variable_info]], where "path" is kind=CDK. +! +!@note If `found` is present, no exceptions will be thrown if an +! error occurs. Otherwise, an exception will be thrown if the +! variable is not found. + + subroutine wrap_json_file_variable_info(me,path,found,var_type,n_children,name) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path + logical(LK),intent(out),optional :: found + integer(IK),intent(out),optional :: var_type + integer(IK),intent(out),optional :: n_children + character(kind=CK,len=:),allocatable,intent(out),optional :: name !! variable name + + call me%info(to_unicode(path),found,var_type,n_children,name) + + end subroutine wrap_json_file_variable_info +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 6/26/2016 +! +! Returns matrix information about a variable in a [[json_file(type)]]. +! +!@note If `found` is present, no exceptions will be thrown if an +! error occurs. Otherwise, an exception will be thrown if the +! variable is not found. + + subroutine json_file_variable_matrix_info(me,path,is_matrix,found,& + var_type,n_sets,set_size,name) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! path to the variable + logical(LK),intent(out) :: is_matrix !! true if it is a valid matrix + logical(LK),intent(out),optional :: found !! true if it was found + integer(IK),intent(out),optional :: var_type !! variable type of data in + !! the matrix (if all elements have + !! the same type) + integer(IK),intent(out),optional :: n_sets !! number of data sets (i.e., matrix + !! rows if using row-major order) + integer(IK),intent(out),optional :: set_size !! size of each data set (i.e., matrix + !! cols if using row-major order) + character(kind=CK,len=:),allocatable,intent(out),optional :: name !! variable name + + call me%core%matrix_info(me%p,path,is_matrix,found,var_type,n_sets,set_size,name) + + end subroutine json_file_variable_matrix_info +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_variable_matrix_info]], where "path" is kind=CDK. +! +!@note If `found` is present, no exceptions will be thrown if an +! error occurs. Otherwise, an exception will be thrown if the +! variable is not found. + + subroutine wrap_json_file_variable_matrix_info(me,path,is_matrix,found,& + var_type,n_sets,set_size,name) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! path to the variable + logical(LK),intent(out) :: is_matrix !! true if it is a valid matrix + logical(LK),intent(out),optional :: found !! true if it was found + integer(IK),intent(out),optional :: var_type !! variable type of data in + !! the matrix (if all elements have + !! the same type) + integer(IK),intent(out),optional :: n_sets !! number of data sets (i.e., matrix + !! rows if using row-major order) + integer(IK),intent(out),optional :: set_size !! size of each data set (i.e., matrix + !! cols if using row-major order) + character(kind=CK,len=:),allocatable,intent(out),optional :: name !! variable name + + call me%matrix_info(to_unicode(path),is_matrix,found,var_type,n_sets,set_size,name) + + end subroutine wrap_json_file_variable_matrix_info +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! date: 7/23/2015 +! +! Get a [[json_value]] pointer to the JSON file root. +! +!@note This is equivalent to calling ```[[json_file]]%get('$',p)``` + + subroutine json_file_get_root(me,p) + + implicit none + + class(json_file),intent(inout) :: me + type(json_value),pointer,intent(out) :: p !! pointer to the variable + + p => me%p + + end subroutine json_file_get_root +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Assignment operator for [[json_core(type)]] = [[json_core(type)]]. +! This will duplicate the [[json_core(type)]] and also +! perform a deep copy of the [[json_value(type)]] data structure. + + subroutine assign_json_file(me,f) + + implicit none + + class(json_file),intent(out) :: me + type(json_file),intent(in) :: f + + me%core = f%core ! no pointers here so OK to copy + call me%core%clone(f%p,me%p) + + end subroutine assign_json_file +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Assignment operator for character = [[json_core(type)]]. +! This is just a wrapper for the [[json_value_to_string]] routine. +! +!### Note +! * If an exception is raised or the file contains no data, +! this will return an empty string. + + subroutine assign_json_file_to_string(str,me) + + implicit none + + character(kind=CK,len=:),allocatable,intent(out) :: str + class(json_file),intent(in) :: me + + type(json_core) :: core_copy !! a copy of `core` from `me` + + if (me%core%failed() .or. .not. associated(me%p)) then + str = CK_'' + else + + ! This is sort of a hack. Since `me` has to have `intent(in)` + ! for the assignment to work, we need to make a copy of `me%core` + ! so we can call the low level routine (since it needs it to + ! be `intent(inout)`) because it's possible for this + ! function to raise an exception. + + core_copy = me%core ! copy the parser settings + + call core_copy%serialize(me%p,str) + if (me%core%failed()) str = CK_'' + + end if + + end subroutine assign_json_file_to_string +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Assignment operator for [[json_core(type)]] = character. +! This is just a wrapper for the [[json_file_load_from_string]] routine. + + subroutine assign_string_to_json_file(me,str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: str + + if (associated(me%p)) call me%destroy() + if (me%core%failed()) call me%core%clear_exceptions() + call me%deserialize(str) + + end subroutine assign_string_to_json_file +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[assign_string_to_json_file]], where "str" is kind=CDK. + + subroutine wrap_assign_string_to_json_file(me,str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: str + + call me%assign_string_to_json_file(to_unicode(str)) + + end subroutine wrap_assign_string_to_json_file +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! A wrapper for [[json_file_valid_path]] for the `.in.` operator + + function json_file_valid_path_op(path,me) result(found) + + implicit none + + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + class(json_file),intent(in) :: me !! the JSON file + logical(LK) :: found !! if the variable was found + + type(json_core) :: core_copy !! a copy of `core` from `me` + + ! This is sort of a hack. Since `me` has to have `intent(in)` + ! for the operator to work, we need to make a copy of `me%core` + ! so we can call the low level routine (since it needs it to + ! be `intent(inout)`) because it's technically possible for this + ! function to raise an exception. This normally should never + ! happen here unless the JSON structure is malformed. + + core_copy = me%core ! copy the settings (need them to know + ! how to interpret the path) + + found = core_copy%valid_path(me%p, path) ! call the low-level routine + + call core_copy%destroy() ! just in case (but not really necessary) + + end function json_file_valid_path_op +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_valid_path_op]], where "path" is kind=CDK. + + function wrap_json_file_valid_path_op(path,me) result(found) + + implicit none + + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + class(json_file),intent(in) :: me !! the JSON file + logical(LK) :: found !! if the variable was found + + found = to_unicode(path) .in. me + + end function wrap_json_file_valid_path_op +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Returns true if the `path` is present in the JSON file. + + function json_file_valid_path(me,path) result(found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + logical(LK) :: found !! if the variable was found + + found = me%core%valid_path(me%p, path) + + end function json_file_valid_path +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_valid_path]], where "path" is kind=CDK. + + function wrap_json_file_valid_path(me,path) result(found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + logical(LK) :: found !! if the variable was found + + found = me%valid_path(to_unicode(path)) + + end function wrap_json_file_valid_path +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Rename a variable in a JSON file. + + subroutine json_file_rename(me,path,name,found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=*),intent(in) :: name !! the new name + logical(LK),intent(out),optional :: found !! if the variable was found + + call me%core%rename(me%p, path, name, found) + + end subroutine json_file_rename +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_rename]], where "path" and "name" are kind=CDK. + + subroutine wrap_json_file_rename(me,path,name,found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + character(kind=CDK,len=*),intent(in) :: name !! the new name + logical(LK),intent(out),optional :: found !! if the variable was found + + call me%json_file_rename(to_unicode(path),to_unicode(name),found) + + end subroutine wrap_json_file_rename +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Wrapper for [[json_file_rename]] where "path" is kind=CDK). + + subroutine json_file_rename_path_ascii(me,path,name,found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=*),intent(in) :: name !! the new name + logical(LK),intent(out),optional :: found !! if the variable was found + + call me%json_file_rename(to_unicode(path),name,found) + + end subroutine json_file_rename_path_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Wrapper for [[json_file_rename]] where "name" is kind=CDK). + + subroutine json_file_rename_name_ascii(me,path,name,found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + character(kind=CDK,len=*),intent(in) :: name !! the new name + logical(LK),intent(out),optional :: found !! if the variable was found + + call me%json_file_rename(path,to_unicode(name),found) + + end subroutine json_file_rename_name_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 2/3/2014 +! +! Get a [[json_value]] pointer to an object from a JSON file. + + subroutine json_file_get_object(me, path, p, found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + type(json_value),pointer,intent(out) :: p !! pointer to the variable + logical(LK),intent(out),optional :: found !! if it was really found + + call me%core%get(me%p, path, p, found) + + end subroutine json_file_get_object +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_get_object]], where "path" is kind=CDK. + + subroutine wrap_json_file_get_object(me, path, p, found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + type(json_value),pointer,intent(out) :: p !! pointer to the variable + logical(LK),intent(out),optional :: found !! if it was really found + + call me%get(to_unicode(path), p, found) + + end subroutine wrap_json_file_get_object +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/9/2013 +! +! Get an integer value from a JSON file. + + subroutine json_file_get_integer(me, path, val, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + integer(IK),intent(out) :: val !! value + logical(LK),intent(out),optional :: found !! if it was really found + integer(IK),intent(in),optional :: default + + call me%core%get(me%p, path, val, found, default) + + end subroutine json_file_get_integer +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_get_integer]], where "path" is kind=CDK. + + subroutine wrap_json_file_get_integer(me, path, val, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + integer(IK),intent(out) :: val !! value + logical(LK),intent(out),optional :: found !! if it was really found + integer(IK),intent(in),optional :: default + + call me%get(to_unicode(path), val, found, default) + + end subroutine wrap_json_file_get_integer +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/20/2014 +! +! Get an integer vector from a JSON file. + + subroutine json_file_get_integer_vec(me, path, vec, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + integer(IK),dimension(:),allocatable,intent(out) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if it was really found + integer(IK),dimension(:),intent(in),optional :: default + + call me%core%get(me%p, path, vec, found, default) + + end subroutine json_file_get_integer_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_get_integer_vec]], where "path" is kind=CDK. + + subroutine wrap_json_file_get_integer_vec(me, path, vec, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + integer(IK),dimension(:),allocatable,intent(out) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if it was really found + integer(IK),dimension(:),intent(in),optional :: default + + call me%get(to_unicode(path), vec, found, default) + + end subroutine wrap_json_file_get_integer_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/9/2013 +! +! Get a real(RK) variable value from a JSON file. + + subroutine json_file_get_real (me, path, val, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(RK),intent(out) :: val !! value + logical(LK),intent(out),optional :: found !! if it was really found + real(RK),intent(in),optional :: default + + call me%core%get(me%p, path, val, found, default) + + end subroutine json_file_get_real +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_get_real]], where "path" is kind=CDK. + + subroutine wrap_json_file_get_real (me, path, val, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(RK),intent(out) :: val !! value + logical(LK),intent(out),optional :: found !! if it was really found + real(RK),intent(in),optional :: default + + call me%get(to_unicode(path), val, found, default) + + end subroutine wrap_json_file_get_real +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/19/2014 +! +! Get a real(RK) vector from a JSON file. + + subroutine json_file_get_real_vec(me, path, vec, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(RK),dimension(:),allocatable,intent(out) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if it was really found + real(RK),dimension(:),intent(in),optional :: default + + call me%core%get(me%p, path, vec, found, default) + + end subroutine json_file_get_real_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_get_real_vec]], where "path" is kind=CDK. + + subroutine wrap_json_file_get_real_vec(me, path, vec, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(RK),dimension(:),allocatable,intent(out) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if it was really found + real(RK),dimension(:),intent(in),optional :: default + + call me%get(to_unicode(path), vec, found, default) + + end subroutine wrap_json_file_get_real_vec +!***************************************************************************************** + +#ifndef REAL32 +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/21/2019 +! +! Alternate version of [[json_file_get_real]] where `val` is `real32`. + + subroutine json_file_get_real32 (me, path, val, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(real32),intent(out) :: val !! value + logical(LK),intent(out),optional :: found !! if it was really found + real(real32),intent(in),optional :: default + + call me%core%get(me%p, path, val, found, default) + + end subroutine json_file_get_real32 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_get_real32]], where "path" is kind=CDK. + + subroutine wrap_json_file_get_real32 (me, path, val, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(real32),intent(out) :: val !! value + logical(LK),intent(out),optional :: found !! if it was really found + real(real32),intent(in),optional :: default + + call me%get(to_unicode(path), val, found, default) + + end subroutine wrap_json_file_get_real32 +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/21/2019 +! +! Alternate version of [[json_file_get_real_vec]] where `vec` is `real32`. + + subroutine json_file_get_real32_vec(me, path, vec, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(real32),dimension(:),allocatable,intent(out) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if it was really found + real(real32),dimension(:),intent(in),optional :: default + + call me%core%get(me%p, path, vec, found, default) + + end subroutine json_file_get_real32_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_get_real32_vec]], where "path" is kind=CDK. + + subroutine wrap_json_file_get_real32_vec(me, path, vec, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(real32),dimension(:),allocatable,intent(out) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if it was really found + real(real32),dimension(:),intent(in),optional :: default + + call me%get(to_unicode(path), vec, found, default) + + end subroutine wrap_json_file_get_real32_vec +!***************************************************************************************** +#endif + +#ifdef REAL128 +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/21/2019 +! +! Alternate version of [[json_file_get_real]] where `val` is `real64`. + + subroutine json_file_get_real64 (me, path, val, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(real64),intent(out) :: val !! value + logical(LK),intent(out),optional :: found !! if it was really found + real(real64),intent(in),optional :: default + + call me%core%get(me%p, path, val, found, default) + + end subroutine json_file_get_real64 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_get_real64]], where "path" is kind=CDK. + + subroutine wrap_json_file_get_real64 (me, path, val, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(real64),intent(out) :: val !! value + logical(LK),intent(out),optional :: found !! if it was really found + real(real64),intent(in),optional :: default + + call me%get(to_unicode(path), val, found, default) + + end subroutine wrap_json_file_get_real64 +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/21/2019 +! +! Alternate version of [[json_file_get_real_vec]] where `vec` is `real64`. + + subroutine json_file_get_real64_vec(me, path, vec, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(real64),dimension(:),allocatable,intent(out) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if it was really found + real(real64),dimension(:),intent(in),optional :: default + + call me%core%get(me%p, path, vec, found, default) + + end subroutine json_file_get_real64_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_get_real64_vec]], where "path" is kind=CDK. + + subroutine wrap_json_file_get_real64_vec(me, path, vec, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(real64),dimension(:),allocatable,intent(out) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if it was really found + real(real64),dimension(:),intent(in),optional :: default + + call me%get(to_unicode(path), vec, found, default) + + end subroutine wrap_json_file_get_real64_vec +!***************************************************************************************** +#endif + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/9/2013 +! +! Get a logical(LK) value from a JSON file. + + subroutine json_file_get_logical(me,path,val,found,default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + logical(LK),intent(out) :: val !! value + logical(LK),intent(out),optional :: found !! if it was really found + logical(LK),intent(in),optional :: default + + call me%core%get(me%p, path, val, found, default) + + end subroutine json_file_get_logical +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_get_logical]], where "path" is kind=CDK. + + subroutine wrap_json_file_get_logical(me,path,val,found,default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + logical(LK),intent(out) :: val !! value + logical(LK),intent(out),optional :: found !! if it was really found + logical(LK),intent(in),optional :: default + + call me%get(to_unicode(path), val, found, default) + + end subroutine wrap_json_file_get_logical +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/20/2014 +! +! Get a logical(LK) vector from a JSON file. + + subroutine json_file_get_logical_vec(me, path, vec, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + logical(LK),dimension(:),allocatable,intent(out) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if it was really found + logical(LK),dimension(:),intent(in),optional :: default + + call me%core%get(me%p, path, vec, found, default) + + end subroutine json_file_get_logical_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_get_logical_vec]], where "path" is kind=CDK. + + subroutine wrap_json_file_get_logical_vec(me, path, vec, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + logical(LK),dimension(:),allocatable,intent(out) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if it was really found + logical(LK),dimension(:),intent(in),optional :: default + + call me%get(to_unicode(path), vec, found, default) + + end subroutine wrap_json_file_get_logical_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/9/2013 +! +! Get a character string from a json file. +! The output val is an allocatable character string. + + subroutine json_file_get_string(me, path, val, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=:),allocatable,intent(out) :: val !! value + logical(LK),intent(out),optional :: found !! if it was really found + character(kind=CK,len=*),intent(in),optional :: default + + call me%core%get(me%p, path, val, found, default) + + end subroutine json_file_get_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_get_string]], where "path" is kind=CDK. + + subroutine wrap_json_file_get_string(me, path, val, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=:),allocatable,intent(out) :: val !! value + logical(LK),intent(out),optional :: found !! if it was really found + character(kind=CK,len=*),intent(in),optional :: default + + call me%get(to_unicode(path), val, found, default) + + end subroutine wrap_json_file_get_string +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/19/2014 +! +! Get a string vector from a JSON file. + + subroutine json_file_get_string_vec(me, path, vec, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=*),dimension(:),allocatable,intent(out) :: vec !! value vector + logical(LK),intent(out),optional :: found !! if it was really found + character(kind=CK,len=*),dimension(:),intent(in),optional :: default + + call me%core%get(me%p, path, vec, found, default) + + end subroutine json_file_get_string_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_get_string_vec]], where "path" is kind=CDK. + + subroutine wrap_json_file_get_string_vec(me, path, vec, found, default) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=*),dimension(:),allocatable,intent(out) :: vec !! value vector + logical(LK),intent(out),optional :: found !! if it was really found + character(kind=CK,len=*),dimension(:),intent(in),optional :: default + + call me%get(to_unicode(path), vec, found, default) + + end subroutine wrap_json_file_get_string_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/17/2016 +! +! Get an (allocatable length) string vector from a JSON file. +! This is just a wrapper for [[json_get_alloc_string_vec_by_path]]. + + subroutine json_file_get_alloc_string_vec(me, path, vec, ilen, found, default, default_ilen) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=:),dimension(:),allocatable,intent(out) :: vec !! value vector + integer(IK),dimension(:),allocatable,intent(out) :: ilen !! the actual length + !! of each character + !! string in the array + logical(LK),intent(out),optional :: found + character(kind=CK,len=*),dimension(:),intent(in),optional :: default + integer(IK),dimension(:),intent(in),optional :: default_ilen !! the actual + !! length of `default` + + call me%core%get(me%p, path, vec, ilen, found, default, default_ilen) + + end subroutine json_file_get_alloc_string_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_get_alloc_string_vec]], where "path" is kind=CDK. +! This is just a wrapper for [[wrap_json_get_alloc_string_vec_by_path]]. + + subroutine wrap_json_file_get_alloc_string_vec(me, path, vec, ilen, found, default, default_ilen) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=:),dimension(:),allocatable,intent(out) :: vec !! value vector + integer(IK),dimension(:),allocatable,intent(out) :: ilen !! the actual length + !! of each character + !! string in the array + logical(LK),intent(out),optional :: found + character(kind=CK,len=*),dimension(:),intent(in),optional :: default + integer(IK),dimension(:),intent(in),optional :: default_ilen !! the actual + !! length of `default` + + call me%get(to_unicode(path), vec, ilen, found, default, default_ilen) + + end subroutine wrap_json_file_get_alloc_string_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Add a [[json_value]] pointer as the root object to a JSON file. +! +!### Note +! +! This is mostly equivalent to: +!```fortran +! f = [[json_file]](p) +!``` +! But without the finalization calls. +! +! And: +!```fortran +! if (destroy_original) call [[json_file]]%destroy() +! call [[json_file]]%add('$',p) +!``` + + subroutine json_file_add(me,p,destroy_original) + + implicit none + + class(json_file),intent(inout) :: me + type(json_value),pointer,intent(in) :: p !! pointer to the variable to add + logical(LK),intent(in),optional :: destroy_original !! if the file currently contains + !! an associated pointer, it is + !! destroyed. [Default is True] + + logical(LK) :: destroy !! if `me%p` is to be destroyed + + if (present(destroy_original)) then + destroy = destroy_original + else + destroy = .true. ! default + end if + + if (destroy) call me%core%destroy(me%p) + + me%p => p + + end subroutine json_file_add +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Add a [[json_value]] pointer to an object to a JSON file. + + subroutine json_file_add_object(me,path,p,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + type(json_value),pointer,intent(in) :: p !! pointer to the variable to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + if (.not. associated(me%p)) call me%core%create_object(me%p,ck_'') ! create root + + call me%core%add_by_path(me%p,path,p,found,was_created) + + end subroutine json_file_add_object +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_object]], where "path" is kind=CDK. + + subroutine wrap_json_file_add_object(me,path,p,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + type(json_value),pointer,intent(in) :: p !! pointer to the variable to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%json_file_add_object(to_unicode(path),p,found,was_created) + + end subroutine wrap_json_file_add_object +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Add an integer value to a JSON file. + + subroutine json_file_add_integer(me,path,val,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + integer(IK),intent(in) :: val !! value + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + if (.not. associated(me%p)) call me%core%create_object(me%p,ck_'') ! create root + + call me%core%add_by_path(me%p,path,val,found,was_created) + + end subroutine json_file_add_integer +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_integer]], where "path" is kind=CDK. + + subroutine wrap_json_file_add_integer(me,path,val,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + integer(IK),intent(in) :: val !! value + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%json_file_add_integer(to_unicode(path),val,found,was_created) + + end subroutine wrap_json_file_add_integer +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Add an integer vector to a JSON file. + + subroutine json_file_add_integer_vec(me,path,vec,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + integer(IK),dimension(:),intent(in) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + if (.not. associated(me%p)) call me%core%create_object(me%p,ck_'') ! create root + + call me%core%add_by_path(me%p,path,vec,found,was_created) + + end subroutine json_file_add_integer_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_integer_vec]], where "path" is kind=CDK. + + subroutine wrap_json_file_add_integer_vec(me,path,vec,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + integer(IK),dimension(:),intent(in) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%json_file_add_integer_vec(to_unicode(path),vec,found,was_created) + + end subroutine wrap_json_file_add_integer_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Add a real(RK) variable value to a JSON file. + + subroutine json_file_add_real(me,path,val,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(RK),intent(in) :: val !! value + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + if (.not. associated(me%p)) call me%core%create_object(me%p,ck_'') ! create root + + call me%core%add_by_path(me%p,path,val,found,was_created) + + end subroutine json_file_add_real +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_real]], where "path" is kind=CDK. + + subroutine wrap_json_file_add_real(me,path,val,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(RK),intent(in) :: val !! value + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%json_file_add_real(to_unicode(path),val,found,was_created) + + end subroutine wrap_json_file_add_real +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Add a real(RK) vector to a JSON file. + + subroutine json_file_add_real_vec(me,path,vec,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(RK),dimension(:),intent(in) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + if (.not. associated(me%p)) call me%core%create_object(me%p,ck_'') ! create root + + call me%core%add_by_path(me%p,path,vec,found,was_created) + + end subroutine json_file_add_real_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_real_vec]], where "path" is kind=CDK. + + subroutine wrap_json_file_add_real_vec(me,path,vec,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(RK),dimension(:),intent(in) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%json_file_add_real_vec(to_unicode(path),vec,found,was_created) + + end subroutine wrap_json_file_add_real_vec +!***************************************************************************************** + +#ifndef REAL32 +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_real]] where `val` is `real32`. + + subroutine json_file_add_real32(me,path,val,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(real32),intent(in) :: val !! value + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%core%add_by_path(me%p,path,val,found,was_created) + + end subroutine json_file_add_real32 +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_real32]], where "path" is kind=CDK. + + subroutine wrap_json_file_add_real32(me,path,val,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(real32),intent(in) :: val !! value + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%json_file_add_real32(to_unicode(path),val,found,was_created) + + end subroutine wrap_json_file_add_real32 +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_real_vec]] where `vec` is `real32`. + + subroutine json_file_add_real32_vec(me,path,vec,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(real32),dimension(:),intent(in) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%core%add_by_path(me%p,path,vec,found,was_created) + + end subroutine json_file_add_real32_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_real32_vec]], where "path" is kind=CDK. + + subroutine wrap_json_file_add_real32_vec(me,path,vec,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(real32),dimension(:),intent(in) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%json_file_add_real32_vec(to_unicode(path),vec,found,was_created) + + end subroutine wrap_json_file_add_real32_vec +!***************************************************************************************** +#endif + +#ifdef REAL128 +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_real]] where `val` is `real64`. + + subroutine json_file_add_real64(me,path,val,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(real64),intent(in) :: val !! value + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%core%add_by_path(me%p,path,val,found,was_created) + + end subroutine json_file_add_real64 +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_real64]], where "path" is kind=CDK. + + subroutine wrap_json_file_add_real64(me,path,val,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(real64),intent(in) :: val !! value + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%json_file_add_real64(to_unicode(path),val,found,was_created) + + end subroutine wrap_json_file_add_real64 +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_real_vec]] where `vec` is `real64`. + + subroutine json_file_add_real64_vec(me,path,vec,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(real64),dimension(:),intent(in) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%core%add_by_path(me%p,path,vec,found,was_created) + + end subroutine json_file_add_real64_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_real64_vec]], where "path" is kind=CDK. + + subroutine wrap_json_file_add_real64_vec(me,path,vec,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(real64),dimension(:),intent(in) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%json_file_add_real64_vec(to_unicode(path),vec,found,was_created) + + end subroutine wrap_json_file_add_real64_vec +!***************************************************************************************** +#endif + +!***************************************************************************************** +!> author: Jacob Williams +! +! Add a logical(LK) value to a JSON file. + + subroutine json_file_add_logical(me,path,val,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + logical(LK),intent(in) :: val !! value + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + if (.not. associated(me%p)) call me%core%create_object(me%p,ck_'') ! create root + + call me%core%add_by_path(me%p,path,val,found,was_created) + + end subroutine json_file_add_logical +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_logical]], where "path" is kind=CDK. + + subroutine wrap_json_file_add_logical(me,path,val,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + logical(LK),intent(in) :: val !! value + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%json_file_add_logical(to_unicode(path),val,found,was_created) + + end subroutine wrap_json_file_add_logical +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Add a logical(LK) vector to a JSON file. + + subroutine json_file_add_logical_vec(me,path,vec,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + logical(LK),dimension(:),intent(in) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + if (.not. associated(me%p)) call me%core%create_object(me%p,ck_'') ! create root + + call me%core%add_by_path(me%p,path,vec,found,was_created) + + end subroutine json_file_add_logical_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_logical_vec]], where "path" is kind=CDK. + + subroutine wrap_json_file_add_logical_vec(me,path,vec,found,was_created) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + logical(LK),dimension(:),intent(in) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call me%json_file_add_logical_vec(to_unicode(path),vec,found,was_created) + + end subroutine wrap_json_file_add_logical_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Add a character string to a json file. + + subroutine json_file_add_string(me,path,val,found,was_created,trim_str,adjustl_str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=*),intent(in) :: val !! value + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + !! (note that ADJUSTL is done before TRIM) + + if (.not. associated(me%p)) call me%core%create_object(me%p,ck_'') ! create root + + call me%core%add_by_path(me%p,path,val,found,was_created,trim_str,adjustl_str) + + end subroutine json_file_add_string +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_string]], where "path" and "val" are kind=CDK. + + subroutine wrap_json_file_add_string(me,path,val,found,was_created,trim_str,adjustl_str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + character(kind=CDK,len=*),intent(in) :: val !! value + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + !! (note that ADJUSTL is done before TRIM) + + call me%json_file_add_string(to_unicode(path),to_unicode(val),found,& + was_created,trim_str,adjustl_str) + + end subroutine wrap_json_file_add_string +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Wrapper for [[json_file_add_string]] where "path" is kind=CDK). + + subroutine json_file_add_string_path_ascii(me,path,val,found,& + was_created,trim_str,adjustl_str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=*),intent(in) :: val !! value + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + !! (note that ADJUSTL is done before TRIM) + + if (.not. associated(me%p)) call me%core%create_object(me%p,ck_'') ! create root + + call me%json_file_add_string(to_unicode(path),val,found,& + was_created,trim_str,adjustl_str) + + end subroutine json_file_add_string_path_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Wrapper for [[json_file_add_string]] where "val" is kind=CDK). + + subroutine json_file_add_string_value_ascii(me,path,val,found,& + was_created,trim_str,adjustl_str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + character(kind=CDK,len=*),intent(in) :: val !! value + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + !! (note that ADJUSTL is done before TRIM) + + if (.not. associated(me%p)) call me%core%create_object(me%p,ck_'') ! create root + + call me%json_file_add_string(path,to_unicode(val),found,& + was_created,trim_str,adjustl_str) + + end subroutine json_file_add_string_value_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Add a string vector to a JSON file. + + subroutine json_file_add_string_vec(me,path,vec,found,& + was_created,ilen,trim_str,adjustl_str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=*),dimension(:),intent(in) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + integer(IK),dimension(:),intent(in),optional :: ilen !! the string lengths of each + !! element in `value`. If not present, + !! the full `len(value)` string is added + !! for each element. + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for each element + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for each element + !! (note that ADJUSTL is done before TRIM) + + if (.not. associated(me%p)) call me%core%create_object(me%p,ck_'') ! create root + + call me%core%add_by_path(me%p,path,vec,found,was_created,ilen,trim_str,adjustl_str) + + end subroutine json_file_add_string_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_string_vec]], where "path" and "vec" are kind=CDK. + + subroutine wrap_json_file_add_string_vec(me,path,vec,found,& + was_created,ilen,trim_str,adjustl_str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + character(kind=CDK,len=*),dimension(:),intent(in):: vec !! the value vector + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + integer(IK),dimension(:),intent(in),optional :: ilen !! the string lengths of each + !! element in `value`. If not present, + !! the full `len(value)` string is added + !! for each element. + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for each element + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for each element + !! (note that ADJUSTL is done before TRIM) + + call me%json_file_add_string_vec(to_unicode(path),to_unicode(vec),found,& + was_created,ilen,trim_str,adjustl_str) + + end subroutine wrap_json_file_add_string_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_string_vec]], where "path" is kind=CDK. + + subroutine json_file_add_string_vec_path_ascii(me,path,vec,found,& + was_created,ilen,trim_str,adjustl_str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=*),dimension(:),intent(in) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + integer(IK),dimension(:),intent(in),optional :: ilen !! the string lengths of each + !! element in `value`. If not present, + !! the full `len(value)` string is added + !! for each element. + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for each element + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for each element + !! (note that ADJUSTL is done before TRIM) + + call me%json_file_add_string_vec(to_unicode(path),vec,found,& + was_created,ilen,trim_str,adjustl_str) + + end subroutine json_file_add_string_vec_path_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Alternate version of [[json_file_add_string_vec]], where "vec" is kind=CDK. + + subroutine json_file_add_string_vec_vec_ascii(me,path,vec,found,& + was_created,ilen,trim_str,adjustl_str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + character(kind=CDK,len=*),dimension(:),intent(in) :: vec !! the value vector + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + integer(IK),dimension(:),intent(in),optional :: ilen !! the string lengths of each + !! element in `value`. If not present, + !! the full `len(value)` string is added + !! for each element. + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for each element + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for each element + !! (note that ADJUSTL is done before TRIM) + + call me%json_file_add_string_vec(path,to_unicode(vec),found,& + was_created,ilen,trim_str,adjustl_str) + + end subroutine json_file_add_string_vec_vec_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/10/2015 +! +! Given the path string, if the variable is present in the file, +! and is a scalar, then update its value. +! If it is not present, then create it and set its value. +! +!### See also +! * [[json_update_integer]] + + subroutine json_file_update_integer(me,path,val,found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path + integer(IK),intent(in) :: val + logical(LK),intent(out) :: found + + if (.not. me%core%failed()) call me%core%update(me%p,path,val,found) + + end subroutine json_file_update_integer +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_update_integer]], where "path" is kind=CDK. + + subroutine wrap_json_file_update_integer(me,path,val,found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path + integer(IK),intent(in) :: val + logical(LK),intent(out) :: found + + call me%update(to_unicode(path),val,found) + + end subroutine wrap_json_file_update_integer +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/10/2015 +! +! Given the path string, if the variable is present in the file, +! and is a scalar, then update its value. +! If it is not present, then create it and set its value. +! +!### See also +! * [[json_update_logical]] + + subroutine json_file_update_logical(me,path,val,found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path + logical(LK),intent(in) :: val + logical(LK),intent(out) :: found + + if (.not. me%core%failed()) call me%core%update(me%p,path,val,found) + + end subroutine json_file_update_logical +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_update_logical]], where "path" is kind=CDK. + + subroutine wrap_json_file_update_logical(me,path,val,found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path + logical(LK),intent(in) :: val + logical(LK),intent(out) :: found + + call me%update(to_unicode(path),val,found) + + end subroutine wrap_json_file_update_logical +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/10/2015 +! +! Given the path string, if the variable is present in the file, +! and is a scalar, then update its value. +! If it is not present, then create it and set its value. + + subroutine json_file_update_real(me,path,val,found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path + real(RK),intent(in) :: val + logical(LK),intent(out) :: found + + if (.not. me%core%failed()) call me%core%update(me%p,path,val,found) + + end subroutine json_file_update_real +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_update_real]], where "path" is kind=CDK. + + subroutine wrap_json_file_update_real(me,path,val,found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path + real(RK),intent(in) :: val + logical(LK),intent(out) :: found + + call me%update(to_unicode(path),val,found) + + end subroutine wrap_json_file_update_real +!***************************************************************************************** + +#ifndef REAL32 +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/21/2019 +! +! Alternate version of [[json_file_update_real]] where `val` is `real32`. + + subroutine json_file_update_real32(me,path,val,found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path + real(real32),intent(in) :: val + logical(LK),intent(out) :: found + + call me%update(path,real(val,RK),found) + + end subroutine json_file_update_real32 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_update_real32]], where "path" is kind=CDK. + + subroutine wrap_json_file_update_real32(me,path,val,found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path + real(real32),intent(in) :: val + logical(LK),intent(out) :: found + + call me%update(to_unicode(path),val,found) + + end subroutine wrap_json_file_update_real32 +!***************************************************************************************** +#endif + +#ifdef REAL128 +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/21/2019 +! +! Alternate version of [[json_file_update_real]] where `val` is `real64`. + + subroutine json_file_update_real64(me,path,val,found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path + real(real64),intent(in) :: val + logical(LK),intent(out) :: found + + call me%update(path,real(val,RK),found) + + end subroutine json_file_update_real64 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_update_real64]], where "path" is kind=CDK. + + subroutine wrap_json_file_update_real64(me,path,val,found) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path + real(real64),intent(in) :: val + logical(LK),intent(out) :: found + + call me%update(to_unicode(path),val,found) + + end subroutine wrap_json_file_update_real64 +!***************************************************************************************** +#endif + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/10/2015 +! +! Given the path string, if the variable is present in the file, +! and is a scalar, then update its value. +! If it is not present, then create it and set its value. +! +!### See also +! * [[json_update_string]] + + subroutine json_file_update_string(me,path,val,found,trim_str,adjustl_str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path + character(kind=CK,len=*),intent(in) :: val + logical(LK),intent(out) :: found + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + !! (note that ADJUSTL is done before TRIM) + + if (.not. me%core%failed()) call me%core%update(me%p,path,val,found,trim_str,adjustl_str) + + end subroutine json_file_update_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_update_string]], where "path" and "val" are kind=CDK. + + subroutine wrap_json_file_update_string(me,path,val,found,trim_str,adjustl_str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path + character(kind=CDK,len=*),intent(in) :: val + logical(LK),intent(out) :: found + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + !! (note that ADJUSTL is done before TRIM) + + call me%update(to_unicode(path),to_unicode(val),found,trim_str,adjustl_str) + + end subroutine wrap_json_file_update_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_update_string]], where "path" is kind=CDK. + + subroutine json_file_update_string_name_ascii(me,path,val,found,trim_str,adjustl_str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path + character(kind=CK, len=*),intent(in) :: val + logical(LK),intent(out) :: found + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + !! (note that ADJUSTL is done before TRIM) + + call me%update(to_unicode(path),val,found,trim_str,adjustl_str) + + end subroutine json_file_update_string_name_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_update_string]], where "val" is kind=CDK. + + subroutine json_file_update_string_val_ascii(me,path,val,found,trim_str,adjustl_str) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK, len=*),intent(in) :: path + character(kind=CDK,len=*),intent(in) :: val + logical(LK),intent(out) :: found + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + !! (note that ADJUSTL is done before TRIM) + + call me%update(path,to_unicode(val),found,trim_str,adjustl_str) + + end subroutine json_file_update_string_val_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 6/11/2016 +! +! Traverse the JSON structure in the file. +! This routine calls the user-specified [[json_traverse_callback_func]] +! for each element of the structure. + + subroutine json_file_traverse(me,traverse_callback) + + implicit none + + class(json_file),intent(inout) :: me + procedure(json_traverse_callback_func) :: traverse_callback + + call me%core%traverse(me%p,traverse_callback) + + end subroutine json_file_traverse +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 7/7/2018 +! +! Remove a variable from a JSON file. +! +!@note This is just a wrapper to [[remove_if_present]]. + + subroutine json_file_remove(me,path) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + + call me%core%remove_if_present(me%p,path) + + end subroutine json_file_remove +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_file_remove]], where "path" is kind=CDK. + + subroutine wrap_json_file_remove(me,path) + + implicit none + + class(json_file),intent(inout) :: me + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + + call me%remove(to_unicode(path)) + + end subroutine wrap_json_file_remove +!***************************************************************************************** + +!***************************************************************************************** + end module json_file_module +!***************************************************************************************** diff --git a/Common/json-fortran/json_get_scalar_by_path.inc b/Common/json-fortran/json_get_scalar_by_path.inc new file mode 100644 index 0000000..03f4c57 --- /dev/null +++ b/Common/json-fortran/json_get_scalar_by_path.inc @@ -0,0 +1,32 @@ + type(json_value),pointer :: p + + if (present(default)) then + value = default + else + value = default_if_not_specified + end if + + if ( json%exception_thrown ) then + call flag_not_found(found) + return + end if + + nullify(p) + call json%get(me=me, path=path, p=p) + + if (.not. associated(p)) then + call json%throw_exception('Error in '//routine//':'//& + ' Unable to resolve path: '// trim(path),found) + else + call json%get(p,value) + end if + + if ( json%exception_thrown ) then + if ( present(found) .or. present(default)) then + call flag_not_found(found) + if (present(default)) value = default + call json%clear_exceptions() + end if + else + if ( present(found) ) found = .true. + end if diff --git a/Common/json-fortran/json_get_vec_by_path.inc b/Common/json-fortran/json_get_vec_by_path.inc new file mode 100644 index 0000000..00b8ca7 --- /dev/null +++ b/Common/json-fortran/json_get_vec_by_path.inc @@ -0,0 +1,27 @@ + type(json_value),pointer :: p + + if ( json%exception_thrown ) then + if (present(default)) vec = default + call flag_not_found(found) + return + end if + + nullify(p) + call json%get(me=me, path=path, p=p) + + if (.not. associated(p)) then + call json%throw_exception('Error in '//routine//':'//& + ' Unable to resolve path: '// trim(path),found) + else + call json%get(p,vec) + end if + + if ( json%exception_thrown ) then + if ( present(found) .or. present(default)) then + call flag_not_found(found) + if (present(default)) vec = default + call json%clear_exceptions() + end if + else + if ( present(found) ) found = .true. + end if diff --git a/Common/json-fortran/json_get_vec_by_path_alloc.inc b/Common/json-fortran/json_get_vec_by_path_alloc.inc new file mode 100644 index 0000000..958447c --- /dev/null +++ b/Common/json-fortran/json_get_vec_by_path_alloc.inc @@ -0,0 +1,43 @@ + type(json_value),pointer :: p + + if ( json%exception_thrown ) then + if (present(default)) then + vec = default + if (present(default_ilen)) then + ilen = default_ilen + else + allocate(ilen(size(default))) + ilen = len(default) + end if + end if + call flag_not_found(found) + return + end if + + nullify(p) + call json%get(me=me, path=path, p=p) + + if (.not. associated(p)) then + call json%throw_exception('Error in '//routine//':'//& + ' Unable to resolve path: '// trim(path),found) + else + call json%get(p,vec,ilen) + end if + + if ( json%exception_thrown ) then + if ( present(found) .or. present(default)) then + call flag_not_found(found) + if (present(default)) then + vec = default + if (present(default_ilen)) then + ilen = default_ilen + else + allocate(ilen(size(default))) + ilen = len(default) + end if + end if + call json%clear_exceptions() + end if + else + if ( present(found) ) found = .true. + end if diff --git a/Common/json-fortran/json_initialize_arguments.inc b/Common/json-fortran/json_initialize_arguments.inc new file mode 100644 index 0000000..d8b3b4f --- /dev/null +++ b/Common/json-fortran/json_initialize_arguments.inc @@ -0,0 +1,114 @@ +! The argument list for the various `initialize` subroutines. +! +! See also: json_initialize_dummy_arguments.inc + +logical(LK),intent(in),optional :: verbose + !! mainly useful for debugging (default is false) +logical(LK),intent(in),optional :: compact_reals + !! to compact the real number strings for output (default is true) +logical(LK),intent(in),optional :: print_signs + !! always print numeric sign (default is false) +character(kind=CDK,len=*),intent(in),optional :: real_format + !! Real number format: 'E' [default], '*', 'G', 'EN', or 'ES' +integer(IK),intent(in),optional :: spaces_per_tab + !! number of spaces per tab for indenting (default is 2) +logical(LK),intent(in),optional :: strict_type_checking + !! if true, no integer, double, or logical type + !! conversions are done for the `get` routines + !! (default is false). +logical(LK),intent(in),optional :: trailing_spaces_significant + !! for name and path comparisons, is trailing + !! space to be considered significant. + !! (default is false) +logical(LK),intent(in),optional :: case_sensitive_keys + !! for name and path comparisons, are they + !! case sensitive. (default is true) +logical(LK),intent(in),optional :: no_whitespace + !! if true, printing the JSON structure is + !! done without adding any non-significant + !! spaces or linebreaks (default is false) +logical(LK),intent(in),optional :: unescape_strings + !! If false, then the raw escaped + !! string is returned from [[json_get_string]] + !! and similar routines. If true [default], + !! then the string is returned unescaped. +character(kind=CK,len=*),intent(in),optional :: comment_char + !! If present, these characters are used + !! to denote comments in the JSON file, + !! which will be ignored if present. + !! Example: `!`, `#`, or `/!#`. Setting this + !! to a blank string disables the + !! ignoring of comments. (Default is `/!#`). +integer(IK),intent(in),optional :: path_mode + !! How the path strings are interpreted in the + !! `get_by_path` routines: + !! + !! * 1 : Default mode (see [[json_get_by_path_default]]) + !! * 2 : as RFC 6901 "JSON Pointer" paths + !! (see [[json_get_by_path_rfc6901]]) + !! * 3 : JSONPath "bracket-notation" + !! see [[json_get_by_path_jsonpath_bracket]]) +character(kind=CK,len=1),intent(in),optional :: path_separator + !! The `path` separator to use + !! in the "default" mode for + !! the paths in the various + !! `get_by_path` routines. + !! Example: `.` [default] or `%`. + !! Note: if `path_mode/=1` + !! then this is ignored. +logical(LK),intent(in),optional :: compress_vectors + !! If true, then arrays of integers, + !! nulls, doubles, and logicals are + !! printed all on one line. + !! [Note: `no_whitespace` will + !! override this option if necessary]. + !! (Default is False). +logical(LK),intent(in),optional :: allow_duplicate_keys + !! * If True [default] then no special checks + !! are done to check for duplicate keys. + !! * If False, then after parsing, if any duplicate + !! keys are found, an error is thrown. A call to + !! [[json_value_validate]] will also check for + !! duplicates. +logical(LK),intent(in),optional :: escape_solidus + !! * If True then the solidus "`/`" is always escaped + !! "`\/`" when serializing JSON + !! * If False [default], then it is not escaped. + !! + !! Note that this option does not affect parsing + !! (both escaped and unescaped are still valid in + !! all cases). +logical(LK),intent(in),optional :: stop_on_error + !! If an exception is raised, then immediately quit. + !! (Default is False). +integer(IK),intent(in),optional :: null_to_real_mode + !! if `strict_type_checking=false`: + !! + !! * 1 : an exception will be raised if + !! try to retrieve a `null` as a real. + !! * 2 : a `null` retrieved as a real + !! will return a NaN. [default] + !! * 3 : a `null` retrieved as a real + !! will return 0.0. +integer(IK),intent(in),optional :: non_normal_mode + !! How to serialize NaN, Infinity, and + !! -Infinity real values: + !! + !! * 1 : as strings (e.g., "NaN", + !! "Infinity", "-Infinity") [default] + !! * 2 : as JSON `null` values +logical(LK),intent(in),optional :: use_quiet_nan + !! * If true [default], `null_to_real_mode=2` + !! and [[string_to_real]] will use + !! `ieee_quiet_nan` for NaN values. + !! * If false, + !! `ieee_signaling_nan` will be used. +logical(LK),intent(in),optional :: strict_integer_type_checking + !! * If false, when parsing JSON, if an integer numeric value + !! cannot be converted to an integer (`integer(IK)`), + !! then an attempt is then make to convert it + !! to a real (`real(RK)`). + !! * If true, an exception will be raised if the integer + !! value cannot be read. + !! + !! (default is true) \ No newline at end of file diff --git a/Common/json-fortran/json_initialize_dummy_arguments.inc b/Common/json-fortran/json_initialize_dummy_arguments.inc new file mode 100644 index 0000000..008cbd9 --- /dev/null +++ b/Common/json-fortran/json_initialize_dummy_arguments.inc @@ -0,0 +1,25 @@ +! The dummy argument list for the various `initialize` subroutines. +! +! See also: json_initialize_argument.inc + +verbose,& +compact_reals,& +print_signs,& +real_format,& +spaces_per_tab,& +strict_type_checking,& +trailing_spaces_significant,& +case_sensitive_keys,& +no_whitespace,& +unescape_strings,& +comment_char,& +path_mode,& +path_separator,& +compress_vectors,& +allow_duplicate_keys,& +escape_solidus,& +stop_on_error,& +null_to_real_mode,& +non_normal_mode,& +use_quiet_nan, & +strict_integer_type_checking & \ No newline at end of file diff --git a/Common/json-fortran/json_kinds.F90 b/Common/json-fortran/json_kinds.F90 new file mode 100644 index 0000000..fac6e76 --- /dev/null +++ b/Common/json-fortran/json_kinds.F90 @@ -0,0 +1,148 @@ +!***************************************************************************************** +!> author: Jacob Williams +! license: BSD +! +! JSON-Fortran kind definitions. +! +!### License +! * JSON-Fortran is released under a BSD-style license. +! See the [LICENSE](https://github.com/jacobwilliams/json-fortran/blob/master/LICENSE) +! file for details. +! +!@note ```-DUSE_UCS4``` is an optional preprocessor flag. +! When present, Unicode support is enabled. Note that this +! is currently only supported with the gfortran compiler. +! Example: ```gfortran -DUSE_UCS4 ... ``` +#ifdef USE_UCS4 +# pragma push_macro("USE_UCS4") +# undef USE_UCS4 +! The documentation given here assumes ```USE_UCS4``` **is** defined. +# pragma pop_macro("USE_UCS4") +#else +! The documentation given here assumes ```USE_UCS4``` **is not** defined. +#endif +! +!@warning ```CK``` and ```CDK``` are the JSON-Fortran character kind and JSON-Fortran default +! character kind respectively. Client code **MUST** ensure characters of ```kind=CK``` +! are used for all character variables and strings passed to the JSON-Fortran +! library *EXCEPT* for file names which must be of ```'DEFAULT'``` character kind, +! provided here as ```CDK```. In particular, any variable that is a: json path, string +! value or object name passed to the JSON-Fortran library **MUST** be of type ```CK```. +! +!@note Most string literal constants of default kind are fine to pass as arguments to +! JSON-Fortran procedures since they have been overloaded to accept ```intent(in)``` +! character arguments of the default (```CDK```) kind. If you find a procedure which does +! not accept an ```intent(in)``` literal string argument of default kind, please +! [file an issue](https://github.com/jacobwilliams/json-fortran/issues/new) on GitHub. +! +!@note The default real kind (`RK`) and the default integer kind (`IK`) can be +! changed using optional preprocessor flags. This library was built with kinds: +#ifdef REAL32 +! real(kind=real32) [4 bytes] +#elif REAL64 +! real(kind=real64) [8 bytes] +#elif REAL128 +! real(kind=real128) [16 bytes] +#else +! real(kind=real64) [8 bytes] +#endif +! and +#ifdef INT8 +! integer(kind=int8) [1 byte] +#elif INT16 +! integer(kind=int16) [2 bytes] +#elif INT32 +! integer(kind=int32) [4 bytes] +#elif INT64 +! integer(kind=int64) [8 bytes] +#else +! integer(kind=int32) [4 bytes] +#endif +! . +! +!@note In addition to the real kind specified by `RK`, interfaces for +! the real kinds with less precision are also provided in the library, +! but all are converted to `real(RK)` variables internally. + + module json_kinds + + use,intrinsic :: iso_fortran_env + + implicit none + + private + +! used for the reals with less precision +! than the default precision: +#ifndef REAL32 + public :: real32 +#endif +#ifdef REAL128 + public :: real64 +#endif + +#ifdef REAL32 + integer,parameter,public :: RK = real32 !! Default real kind [4 bytes] +#elif REAL64 + integer,parameter,public :: RK = real64 !! Default real kind [8 bytes] +#elif REAL128 + integer,parameter,public :: RK = real128 !! Default real kind [16 bytes] +#else + integer,parameter,public :: RK = real64 !! Default real kind if not specified [8 bytes] +#endif + +#ifdef INT8 + integer,parameter,public :: IK = int8 !! Default integer kind [1 byte] +#elif INT16 + integer,parameter,public :: IK = int16 !! Default integer kind [2 bytes] +#elif INT32 + integer,parameter,public :: IK = int32 !! Default integer kind [4 bytes] +#elif INT64 + integer,parameter,public :: IK = int64 !! Default integer kind [8 bytes] +#else + integer,parameter,public :: IK = int32 !! Default integer kind if not specified [4 bytes] +#endif + + !********************************************************* + !> + ! Processor dependent 'DEFAULT' character kind. + ! This is 1 byte for the Intel and Gfortran compilers. + integer,parameter,public :: CDK = selected_char_kind('DEFAULT') + !********************************************************* + + !********************************************************* + !> + ! Default logical kind. + ! This is 4 bytes for the Intel and Gfortran compilers + ! (and perhaps others). + ! The declaration ensures a valid kind + ! if the compiler doesn't have a logical_kinds(3). + integer,parameter,public :: LK = logical_kinds(min(3,size(logical_kinds))) + !********************************************************* + + !********************************************************* + !> + ! String kind preprocessor macro. +#if defined __GFORTRAN__ && defined USE_UCS4 + ! gfortran compiler AND UCS4 support requested: + character(kind=CDK,len=*),parameter :: json_fortran_string_kind = 'ISO_10646' +#else + ! this is the string kind to use unless compiling with GFortran AND + ! UCS4/ISO 10646 support is requested + character(kind=CDK,len=*),parameter :: json_fortran_string_kind = 'DEFAULT' +#endif + !********************************************************* + + !********************************************************* + !> + ! Default character kind used by JSON-Fortran. + ! If ISO 10646 (UCS4) support is available, use that, + ! otherwise, gracefully fall back on 'DEFAULT' characters. + ! Currently only gfortran >= 4.9.2 will correctly support + ! UCS4 which is stored in 4 bytes. + ! (and perhaps others). + integer,parameter,public :: CK = selected_char_kind(json_fortran_string_kind) + !********************************************************* + + end module json_kinds +!***************************************************************************************** diff --git a/Common/json-fortran/json_macros.inc b/Common/json-fortran/json_macros.inc new file mode 100644 index 0000000..c0573a0 --- /dev/null +++ b/Common/json-fortran/json_macros.inc @@ -0,0 +1,58 @@ +! JSON-Fortran preprocessor macros. +! +! License +! JSON-Fortran is released under a BSD-style license. +! See the [LICENSE](https://github.com/jacobwilliams/json-fortran/blob/master/LICENSE) +! file for details. + +!********************************************************* +! File encoding preprocessor macro. +! +#if defined __GFORTRAN__ && defined USE_UCS4 +! gfortran compiler AND UCS4 support requested, & silence redefine warning: +! Make sure we output files with utf-8 encoding too +#define FILE_ENCODING ,encoding='UTF-8' +#else +! don't ask for utf-8 file encoding unless using UCS4 +! this may let us use unformatted stream io to read in files more quickly +! even with unicode support turned on `inquire( ... encoding=FL_ENCODING)` +! may be able to detect json files in which each character is exactly one +! byte +#define FILE_ENCODING +#endif +!********************************************************* + +!********************************************************* +! This C preprocessor macro will take a procedure name as an +! input, and output either that same procedure name if the +! code is compiled without USE_UCS4 being defined or it will +! expand the procedure name to the original procedure name, +! followed by a comma and then the original procedure name +! with 'wrap_' prepended to it. This is suitable for creating +! overloaded interfaces that will accept UCS4 character actual +! arguments as well as DEFAULT/ASCII character arguments, +! based on whether or not ISO 10646 is supported and requested. +! +# ifdef USE_UCS4 +# ifdef __GFORTRAN__ +! gfortran uses cpp in old-school compatibility mode so +! the # stringify and ## concatenate operators don't work +! but we can use C/C++ style comment to ensure PROCEDURE is +! correctly tokenized and prepended with 'wrap_' when the +! macro is expanded +# define MAYBEWRAP(PROCEDURE) PROCEDURE , wrap_/**/PROCEDURE +# endif +! ifdef __INTEL_COMPILER +! Intel's fpp does support the more contemporary ## concatenation +! operator, but doesn't treat the C/C++ comments the same way. +! If you use the gfortran approach and pass the -noB switch to +! fpp, the macro will expand, but with a space between wrap_ and +! whatever PROCEDURE expands to +! Intel doesn't support ISO 10646 yet, but this is here to +! ease the transition once they do. +! define MAYBEWRAP(PROCEDURE) PROCEDURE , wrap_##PROCEDURE +! endif +# else +# define MAYBEWRAP(PROCEDURE) PROCEDURE +# endif +!********************************************************* diff --git a/Common/json-fortran/json_module.F90 b/Common/json-fortran/json_module.F90 new file mode 100644 index 0000000..46284e9 --- /dev/null +++ b/Common/json-fortran/json_module.F90 @@ -0,0 +1,104 @@ +!***************************************************************************************** +!> author: Jacob Williams +! license: BSD +! +! A Modern Fortran JSON (JavaScript Object Notation) API. +! +! This module provides access to [[json_value_module]] and +! [[json_file_module]]. For normal JSON-Fortran use, using this module +! is all that is necessary. +! +! Note that this module renames the kind definition variables from [[json_kinds]] +! from [`RK`, `IK`, `LK`, `CK`, and `CDK`] to [`json_RK`, `json_IK`, `json_LK`, +! `json_CK`, and `json_CDK`] so as to avoid namespace pollution with short +! variable names. +! +#ifdef USE_UCS4 +#pragma push_macro("USE_UCS4") +#undef USE_UCS4 +! Since ```USE_UCS4``` **is** defined, this module also exports the +! operators `==`, `/=`, and `//` from [[json_string_utilities]] for +! `CK` and `CDK` operations. +#pragma pop_macro("USE_UCS4") +#endif +! +!### License +! * JSON-Fortran is released under a BSD-style license. +! See the [LICENSE](https://github.com/jacobwilliams/json-fortran/blob/master/LICENSE) +! file for details. +! +!### History +! * Joseph A. Levin : March 2012 : Original [FSON](https://github.com/josephalevin/fson) +! code [retrieved on 12/2/2013]. +! * Jacob Williams : 2/8/2014 : Extensive modifications to the original FSON code. +! The original F95 code was split into four files: +! fson_path_m.f95, fson_string_m.f95, fson_value_m.f95, and fson.f95. +! The new code has been extensively updated, refactored and combined into this +! one module (json_module.f90). +! Various Fortran 2003/2008 features are now used +! (e.g., allocatable strings, newunit, generic, class, and abstract interface). +! * Development continues at: [Github](https://github.com/jacobwilliams/json-fortran) +! +!### See also +! * [json-fortran development site](https://github.com/jacobwilliams/json-fortran) +! * [json-fortran online documentation](https://jacobwilliams.github.io/json-fortran) +! * [JSON website](http://www.json.org/) +! * [JSON validator](http://jsonlint.com/) +! +!@note Originally JSON-Fortran was entirely contained within this module. + + module json_module + + use json_kinds, only: json_RK => RK, & + json_IK => IK, & + json_LK => LK, & + json_CK => CK, & + json_CDK => CDK +#ifdef USE_UCS4 + use json_string_utilities, only: operator(==),& + operator(//),& + operator(/=) +#endif + use json_parameters, only: json_unknown,& + json_null, & + json_object, & + json_array, & + json_logical,& + json_integer,& + json_real, & + json_double, & + json_string + use json_value_module + use json_file_module + + implicit none + + character(kind=json_CK,len=*),parameter,private :: version = '8.3.0' + !! JSON-Fortran version. + !! + !!@note This string should match the one in the `.VERSION` file (which is used + !! for the documentation generation.) + + public + + contains +!***************************************************************************************** + +!***************************************************************************************** +!> +! Returns the JSON-Fortran version string. + + function json_fortran_version() result(ver) + + implicit none + + character(len=:),allocatable :: ver !! JSON-Fortran version string + + ver = version + + end function json_fortran_version +!***************************************************************************************** + +!***************************************************************************************** + end module json_module +!***************************************************************************************** diff --git a/Common/json-fortran/json_parameters.F90 b/Common/json-fortran/json_parameters.F90 new file mode 100644 index 0000000..ebd33c8 --- /dev/null +++ b/Common/json-fortran/json_parameters.F90 @@ -0,0 +1,144 @@ +!***************************************************************************************** +!> author: Jacob Williams +! license: BSD +! +! Other parameters used by JSON-Fortran. +! This is a low-level module not meant to be used by a JSON-Fortran user. +! +!### License +! * JSON-Fortran is released under a BSD-style license. +! See the [LICENSE](https://github.com/jacobwilliams/json-fortran/blob/master/LICENSE) +! file for details. + + module json_parameters + + use json_kinds + + implicit none + + public + + character(kind=CDK,len=*),parameter :: json_ext = '.json' !! JSON file extension + + ! The types of JSON data. + integer(IK),parameter :: json_unknown = 0 !! Unknown JSON data type + !! (see [[json_file_variable_info]] and [[json_info]]) + integer(IK),parameter :: json_null = 1 !! Null JSON data type + !! (see [[json_file_variable_info]] and [[json_info]]) + integer(IK),parameter :: json_object = 2 !! Object JSON data type + !! (see [[json_file_variable_info]] and [[json_info]]) + integer(IK),parameter :: json_array = 3 !! Array JSON data type + !! (see [[json_file_variable_info]] and [[json_info]]) + integer(IK),parameter :: json_logical = 4 !! Logical JSON data type (`logical(LK)`) + !! (see [[json_file_variable_info]] and [[json_info]]) + integer(IK),parameter :: json_integer = 5 !! Integer JSON data type (`integer(IK)`) + !! (see [[json_file_variable_info]] and [[json_info]]). + integer(IK),parameter :: json_real = 6 !! Real number JSON data type (`real(RK)`) + !! (see [[json_file_variable_info]] and [[json_info]]) + integer(IK),parameter :: json_string = 7 !! String JSON data type (`character(kind=CK)`) + !! (see [[json_file_variable_info]] and [[json_info]]) + integer(IK),parameter :: json_double = json_real !! Equivalent to `json_real` for + !! backward compatibility. + + !special JSON characters + character(kind=CK,len=*),parameter :: space = CK_' ' !! space character + character(kind=CK,len=*),parameter :: start_object = CK_'{' !! start of a JSON object + character(kind=CK,len=*),parameter :: end_object = CK_'}' !! end of a JSON object + character(kind=CK,len=*),parameter :: start_array = CK_'[' !! start of a JSON array + character(kind=CK,len=*),parameter :: end_array = CK_']' !! end of a JSON array + character(kind=CK,len=*),parameter :: delimiter = CK_',' !! delimiter for JSON + character(kind=CK,len=*),parameter :: colon_char = CK_':' !! colon character for JSON + character(kind=CK,len=*),parameter :: start_array_alt = CK_'(' !! alternate start of JSON array for + !! [[json_get_by_path_default]] + character(kind=CK,len=*),parameter :: end_array_alt = CK_')' !! alternate end of JSON array for + !! [[json_get_by_path_default]] + character(kind=CK,len=*),parameter :: root = achar(36, kind=CK) !! (`$`) root for [[json_get_by_path_default]] + character(kind=CK,len=*),parameter :: this = CK_'@' !! 'this' for [[json_get_by_path_default]] + character(kind=CK,len=*),parameter :: dot = CK_'.' !! path separator for [[json_get_by_path_default]] + character(kind=CK,len=*),parameter :: tilde = CK_'~' !! RFC 6901 escape character + character(kind=CK,len=*),parameter :: single_quote = CK_"'" !! for JSONPath bracket-notation + character(kind=CK,len=*),parameter :: quotation_mark = CK_'"' !! JSON special character + character(kind=CK,len=*),parameter :: bspace = achar(8, kind=CK) !! JSON special character + character(kind=CK,len=*),parameter :: horizontal_tab = achar(9, kind=CK) !! JSON special character + character(kind=CK,len=*),parameter :: newline = achar(10, kind=CK) !! JSON special character + character(kind=CK,len=*),parameter :: formfeed = achar(12, kind=CK) !! JSON special character + character(kind=CK,len=*),parameter :: carriage_return = achar(13, kind=CK) !! JSON special character + character(kind=CK,len=*),parameter :: slash = achar(47, kind=CK) !! JSON special character + character(kind=CK,len=*),parameter :: backslash = achar(92, kind=CK) !! JSON special character + + !> default real number format statement (for writing real values to strings and files). + ! Note that this can be overridden by calling [[json_initialize]]. +#ifdef REAL32 + character(kind=CDK,len=*),parameter :: default_real_fmt = '(ss,E17.8E3)' +#elif REAL128 + character(kind=CDK,len=*),parameter :: default_real_fmt = '(ss,E46.35E5)' +#else + character(kind=CDK,len=*),parameter :: default_real_fmt = '(ss,E27.17E4)' +#endif + + character(kind=CK,len=*),parameter :: star = CK_'*' !! for invalid numbers and + !! list-directed real output + +#if defined __GFORTRAN__ + !not parameters due to gfortran bug (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65141) + character(kind=CK,len=26),protected :: upper = CK_'ABCDEFGHIJKLMNOPQRSTUVWXYZ' !! uppercase characters + character(kind=CK,len=26),protected :: lower = CK_'abcdefghijklmnopqrstuvwxyz' !! lowercase characters +#else + character(kind=CK,len=*),parameter :: upper = CK_'ABCDEFGHIJKLMNOPQRSTUVWXYZ' !! uppercase characters + character(kind=CK,len=*),parameter :: lower = CK_'abcdefghijklmnopqrstuvwxyz' !! lowercase characters +#endif + +#if defined __GFORTRAN__ + !not parameters due to gfortran bug (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65141) + character(kind=CK,len=4),protected :: null_str = CK_'null' !! JSON Null variable string + character(kind=CK,len=4),protected :: true_str = CK_'true' !! JSON logical True string + character(kind=CK,len=5),protected :: false_str = CK_'false' !! JSON logical False string +#else + character(kind=CK,len=*),parameter :: null_str = CK_'null' !! JSON Null variable string + character(kind=CK,len=*),parameter :: true_str = CK_'true' !! JSON logical True string + character(kind=CK,len=*),parameter :: false_str = CK_'false' !! JSON logical False string +#endif + + integer, private :: i_ !! just a counter for `control_chars` array + character(kind=CK,len=*),dimension(32),parameter :: control_chars = & + [(achar(i_,kind=CK),i_=1,31), achar(127,kind=CK)] !! Control characters, possibly in unicode + + !find out the precision of the floating point number system + !and set safety factors + integer(IK),parameter :: rp_safety_factor = 1_IK + integer(IK),parameter :: rp_addl_safety = 2_IK + integer(IK),parameter :: real_precision = rp_safety_factor*precision(1.0_RK) + & + rp_addl_safety + + !Get the number of possible digits in the exponent when using decimal number system + integer(IK),parameter :: maxexp = maxexponent(1.0_RK) + integer(IK),parameter :: minexp = minexponent(1.0_RK) + integer(IK),parameter :: real_exponent_digits = floor( 1_IK + log10( & + real(max(maxexp,abs(maxexp)),& + kind=RK) ) ) + + integer(IK),parameter :: max_numeric_str_len = real_precision + real_exponent_digits + 6_IK + !! 6 = sign + leading 0 + decimal + 'E' + exponent sign + 1 extra + character(kind=CDK,len=*),parameter :: int_fmt = '(ss,I0)' !! minimum width format for integers + + integer(IK),parameter :: max_integer_str_len = 256_IK !! maximum string length of an integer. + !! This is totally arbitrary (any way + !! to get the compiler to tell us this?) + + integer(IK),parameter :: chunk_size = 256_IK !! for allocatable strings: allocate chunks of this size + integer(IK),parameter :: unit2str = -1_IK !! unit number to cause stuff to be + !! output to strings rather than files. + !! See 9.5.6.12 in the F2003/08 standard + character(kind=CK,len=*),parameter :: blank_chunk = repeat(space, chunk_size) !! a blank string + + integer(IK),parameter :: seq_chunk_size = 256_IK !! chunk size for reading sequential files + + integer(IK),parameter :: stream_chunk_size = 256_IK !! chunk size for reading stream files + + integer(IK),parameter :: print_str_chunk_size = 1000_IK !! chunk size for writing JSON to a string + + integer(IK),parameter :: pushed_char_size = 10_IK !! size for `pushed_char` + !! array in [[json_core(type)]] + + end module json_parameters +!***************************************************************************************** diff --git a/Common/json-fortran/json_string_utilities.F90 b/Common/json-fortran/json_string_utilities.F90 new file mode 100644 index 0000000..74f2801 --- /dev/null +++ b/Common/json-fortran/json_string_utilities.F90 @@ -0,0 +1,932 @@ +!***************************************************************************************** +!> author: Jacob Williams +! license: BSD +! +! JSON-Fortran support module for string manipulation. +! +!### License +! * JSON-Fortran is released under a BSD-style license. +! See the [LICENSE](https://github.com/jacobwilliams/json-fortran/blob/master/LICENSE) +! file for details. + + module json_string_utilities + + use,intrinsic :: ieee_arithmetic + use json_kinds + use json_parameters + + implicit none + + private + + !****************************************************** + !> + ! Convert a 'DEFAULT' kind character input to + ! 'ISO_10646' kind and return it + interface to_unicode + module procedure to_uni, to_uni_vec + end interface + !****************************************************** + +#ifdef USE_UCS4 + !****************************************************** + !> + ! Provide a means to convert to UCS4 while + ! concatenating UCS4 and default strings + interface operator(//) + module procedure ucs4_join_default, default_join_ucs4 + end interface + public :: operator(//) + !****************************************************** + + !****************************************************** + !> + ! Provide a string `==` operator that works + ! with mixed kinds + interface operator(==) + module procedure ucs4_comp_default, default_comp_ucs4 + end interface + public :: operator(==) + !****************************************************** + + !****************************************************** + !> + ! Provide a string `/=` operator that works + ! with mixed kinds + interface operator(/=) + module procedure ucs4_neq_default, default_neq_ucs4 + end interface + public :: operator(/=) + !****************************************************** +#endif + + public :: integer_to_string + public :: real_to_string + public :: string_to_integer + public :: string_to_real + public :: valid_json_hex + public :: to_unicode + public :: escape_string + public :: unescape_string + public :: lowercase_string + public :: replace_string + public :: decode_rfc6901 + public :: encode_rfc6901 + + contains +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/4/2013 +! +! Convert an integer to a string. + + pure subroutine integer_to_string(ival,int_fmt,str) + + implicit none + + integer(IK),intent(in) :: ival !! integer value. + character(kind=CDK,len=*),intent(in) :: int_fmt !! format for integers + character(kind=CK,len=*),intent(out) :: str !! `ival` converted to a string. + + integer(IK) :: istat + + write(str,fmt=int_fmt,iostat=istat) ival + + if (istat==0) then + str = adjustl(str) + else + str = repeat(star,len(str)) + end if + + end subroutine integer_to_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Convert a string into an integer. +! +!# History +! * Jacob Williams : 12/10/2013 : Rewrote original `parse_integer` routine. +! Added error checking. +! * Modified by Izaak Beekman +! * Jacob Williams : 2/4/2017 : moved core logic to this routine. + + subroutine string_to_integer(str,ival,status_ok) + + implicit none + + character(kind=CK,len=*),intent(in) :: str !! the string to convert to an integer + integer(IK),intent(out) :: ival !! the integer value + logical(LK),intent(out) :: status_ok !! true if there were no errors + + character(kind=CDK,len=:),allocatable :: digits + integer(IK) :: ndigits_digits,ndigits,ierr + + ! Compute how many digits we need to read + ndigits = 2*len_trim(str) + if (ndigits/=0) then + ndigits_digits = floor(log10(real(ndigits)))+1 + allocate(character(kind=CDK,len=ndigits_digits) :: digits) + write(digits,'(I0)') ndigits !gfortran will have a runtime error with * edit descriptor here + ! gfortran bug: '*' edit descriptor for ISO_10646 strings does bad stuff. + read(str,'(I'//trim(digits)//')',iostat=ierr) ival !string to integer + ! error check: + status_ok = (ierr==0) + else + status_ok = .false. + end if + if (.not. status_ok) ival = 0_IK + + end subroutine string_to_integer +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/4/2013 +! +! Convert a real value to a string. +! +!### Modified +! * Izaak Beekman : 02/24/2015 : added the compact option. +! * Jacob Williams : 10/27/2015 : added the star option. +! * Jacob Williams : 07/07/2019 : added null and ieee options. + + subroutine real_to_string(rval,real_fmt,compact_real,non_normals_to_null,str) + + implicit none + + real(RK),intent(in) :: rval !! real value. + character(kind=CDK,len=*),intent(in) :: real_fmt !! format for real numbers + logical(LK),intent(in) :: compact_real !! compact the string so that it is + !! displayed with fewer characters + logical(LK),intent(in) :: non_normals_to_null !! If True, NaN, Infinity, or -Infinity are returned as `null`. + !! If False, the string value will be returned in quotes + !! (e.g., "NaN", "Infinity", or "-Infinity" ) + character(kind=CK,len=*),intent(out) :: str !! `rval` converted to a string. + + integer(IK) :: istat !! write `iostat` flag + + if (ieee_is_finite(rval) .and. .not. ieee_is_nan(rval)) then + + ! normal real numbers + + if (real_fmt==star) then + write(str,fmt=*,iostat=istat) rval + else + write(str,fmt=real_fmt,iostat=istat) rval + end if + + if (istat==0) then + !in this case, the default string will be compacted, + ! so that the same value is displayed with fewer characters. + if (compact_real) call compact_real_string(str) + else + str = repeat(star,len(str)) ! error + end if + + else + ! special cases for NaN, Infinity, and -Infinity + + if (non_normals_to_null) then + ! return it as a JSON null value + str = null_str + else + ! Let the compiler do the real to string conversion + ! like before, but put the result in quotes so it + ! gets printed as a string + write(str,fmt=*,iostat=istat) rval + if (istat==0) then + str = quotation_mark//trim(adjustl(str))//quotation_mark + else + str = repeat(star,len(str)) ! error + end if + end if + + end if + + end subroutine real_to_string +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/19/2014 +! +! Convert a string into a `real(RK)`. +! +!# History +! * Jacob Williams, 10/27/2015 : Now using `fmt=*`, rather than +! `fmt=real_fmt`, since it doesn't work for some unusual cases +! (e.g., when `str='1E-5'`). +! * Jacob Williams : 2/6/2017 : moved core logic to this routine. + + subroutine string_to_real(str,use_quiet_nan,rval,status_ok) + + implicit none + + character(kind=CK,len=*),intent(in) :: str !! the string to convert to a real + logical(LK),intent(in) :: use_quiet_nan !! if true, return NaN's as `ieee_quiet_nan`. + !! otherwise, use `ieee_signaling_nan`. + real(RK),intent(out) :: rval !! `str` converted to a real value + logical(LK),intent(out) :: status_ok !! true if there were no errors + + integer(IK) :: ierr !! read iostat error code + + read(str,fmt=*,iostat=ierr) rval + status_ok = (ierr==0) + if (.not. status_ok) then + rval = 0.0_RK + else + if (ieee_support_nan(rval)) then + if (ieee_is_nan(rval)) then + ! make sure to return the correct NaN + if (use_quiet_nan) then + rval = ieee_value(rval,ieee_quiet_nan) + else + rval = ieee_value(rval,ieee_signaling_nan) + end if + end if + end if + end if + + end subroutine string_to_real +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! date: 02/24/2015 +! +! Compact a string representing a real number, so that +! the same value is displayed with fewer characters. +! +!# See also +! * [[real_to_string]] + + subroutine compact_real_string(str) + + implicit none + + character(kind=CK,len=*),intent(inout) :: str !! string representation of a real number. + + character(kind=CK,len=len(str)) :: significand + character(kind=CK,len=len(str)) :: expnt + character(kind=CK,len=2) :: separator + integer(IK) :: exp_start + integer(IK) :: decimal_pos + integer(IK) :: sig_trim + integer(IK) :: exp_trim + integer(IK) :: i !! counter + + str = adjustl(str) + exp_start = scan(str,CK_'eEdD') + if (exp_start == 0) exp_start = scan(str,CK_'-+',back=.true.) + decimal_pos = scan(str,CK_'.') + if (exp_start /= 0) separator = str(exp_start:exp_start) + + if ( exp_start < decimal_pos ) then !possibly signed, exponent-less float + + significand = str + sig_trim = len(trim(significand)) + do i = len(trim(significand)),decimal_pos+2,-1 !look from right to left at 0s + !but save one after the decimal place + if (significand(i:i) == '0') then + sig_trim = i-1 + else + exit + end if + end do + str = trim(significand(1:sig_trim)) + + else if (exp_start > decimal_pos) then !float has exponent + + significand = str(1:exp_start-1) + sig_trim = len(trim(significand)) + do i = len(trim(significand)),decimal_pos+2,-1 !look from right to left at 0s + if (significand(i:i) == '0') then + sig_trim = i-1 + else + exit + end if + end do + expnt = adjustl(str(exp_start+1:)) + if (expnt(1:1) == '+' .or. expnt(1:1) == '-') then + separator = trim(adjustl(separator))//expnt(1:1) + exp_start = exp_start + 1 + expnt = adjustl(str(exp_start+1:)) + end if + exp_trim = 1 + do i = 1,(len(trim(expnt))-1) !look at exponent leading zeros saving last + if (expnt(i:i) == '0') then + exp_trim = i+1 + else + exit + end if + end do + str = trim(adjustl(significand(1:sig_trim)))// & + trim(adjustl(separator))// & + trim(adjustl(expnt(exp_trim:))) + + !else ! mal-formed real, BUT this code should be unreachable + + end if + + end subroutine compact_real_string +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/21/2014 +! +! Add the escape characters to a string for adding to JSON. + + subroutine escape_string(str_in, str_out, escape_solidus) + + implicit none + + character(kind=CK,len=*),intent(in) :: str_in + character(kind=CK,len=:),allocatable,intent(out) :: str_out + logical(LK),intent(in) :: escape_solidus !! if the solidus (forward slash) + !! is also to be escaped + + integer(IK) :: i !! counter + integer(IK) :: ipos !! accumulated string size + !! (so we can allocate it in chunks for + !! greater runtime efficiency) + character(kind=CK,len=1) :: c !! for reading `str_in` one character at a time. +#if defined __GFORTRAN__ + character(kind=CK,len=:),allocatable :: tmp !! workaround for bug in gfortran 6.1 +#endif + logical :: to_be_escaped !! if there are characters to be escaped + + character(kind=CK,len=*),parameter :: specials_no_slash = quotation_mark//& + backslash//& + bspace//& + formfeed//& + newline//& + carriage_return//& + horizontal_tab + + character(kind=CK,len=*),parameter :: specials = specials_no_slash//slash + + !Do a quick scan for the special characters, + ! if any are present, then process the string, + ! otherwise, return the string as is. + if (escape_solidus) then + to_be_escaped = scan(str_in,specials)>0 + else + to_be_escaped = scan(str_in,specials_no_slash)>0 + end if + + if (to_be_escaped) then + + str_out = repeat(space,chunk_size) + ipos = 1 + + !go through the string and look for special characters: + do i=1,len(str_in) + + c = str_in(i:i) !get next character in the input string + + !if the string is not big enough, then add another chunk: + if (ipos+3>len(str_out)) str_out = str_out // blank_chunk + + select case(c) + case(backslash) + + !test for unicode sequence: '\uXXXX' + ![don't add an extra '\' for those] + if (i+5<=len(str_in)) then + if (str_in(i+1:i+1)==CK_'u' .and. & + valid_json_hex(str_in(i+2:i+5))) then + str_out(ipos:ipos) = c + ipos = ipos + 1 + cycle + end if + end if + + str_out(ipos:ipos+1) = backslash//c + ipos = ipos + 2 + + case(quotation_mark) + str_out(ipos:ipos+1) = backslash//c + ipos = ipos + 2 + case(slash) + if (escape_solidus) then + str_out(ipos:ipos+1) = backslash//c + ipos = ipos + 2 + else + str_out(ipos:ipos) = c + ipos = ipos + 1 + end if + case(bspace) + str_out(ipos:ipos+1) = '\b' + ipos = ipos + 2 + case(formfeed) + str_out(ipos:ipos+1) = '\f' + ipos = ipos + 2 + case(newline) + str_out(ipos:ipos+1) = '\n' + ipos = ipos + 2 + case(carriage_return) + str_out(ipos:ipos+1) = '\r' + ipos = ipos + 2 + case(horizontal_tab) + str_out(ipos:ipos+1) = '\t' + ipos = ipos + 2 + case default + str_out(ipos:ipos) = c + ipos = ipos + 1 + end select + + end do + + !trim the string if necessary: + if (ipos +! Remove the escape characters from a JSON string and return it. +! +! The escaped characters are denoted by the `\` character: +! +! * `\"` - quotation mark +! * `\\` - reverse solidus +! * `\/` - solidus +! * `\b` - backspace +! * `\f` - formfeed +! * `\n` - newline (LF) +! * `\r` - carriage return (CR) +! * `\t` - horizontal tab +! * `\uXXXX` - 4 hexadecimal digits + + subroutine unescape_string(str, error_message) + + implicit none + + character(kind=CK,len=:),allocatable,intent(inout) :: str !! in: string as stored + !! in a [[json_value]]. + !! out: decoded string. + character(kind=CK,len=:),allocatable,intent(out) :: error_message !! will be allocated if + !! there was an error + + integer :: i !! counter + integer :: n !! length of `str` + integer :: m !! length of `str_tmp` + character(kind=CK,len=1) :: c !! for scanning each character in string + character(kind=CK,len=:),allocatable :: str_tmp !! temp decoded string (if the input + !! string contains an escape character + !! and needs to be decoded). + + if (scan(str,backslash)>0) then + + !there is at least one escape character, so process this string: + + n = len(str) + str_tmp = repeat(space,n) !size the output string (will be trimmed later) + m = 0 !counter in str_tmp + i = 0 !counter in str + + do + + i = i + 1 + if (i>n) exit ! finished + c = str(i:i) ! get next character in the string + + if (c == backslash) then + + if (i author: Jacob Williams +! date:6/14/2014 +! +! Returns true if the string is a valid 4-digit hex string. +! +!# Examples +!```fortran +! valid_json_hex('0000') !returns true +! valid_json_hex('ABC4') !returns true +! valid_json_hex('AB') !returns false (< 4 characters) +! valid_json_hex('WXYZ') !returns false (invalid characters) +!``` + + pure function valid_json_hex(str) result(valid) + + implicit none + + logical(LK) :: valid !! is str a value 4-digit hex string + character(kind=CK,len=*),intent(in) :: str !! the string to check. + + integer(IK) :: n !! length of `str` + integer(IK) :: i !! counter + + !> an array of the valid hex characters + character(kind=CK,len=1),dimension(22),parameter :: valid_chars = & + [ (achar(i),i=48,57), & ! decimal digits + (achar(i),i=65,70), & ! capital A-F + (achar(i),i=97,102) ] ! lowercase a-f + + !initialize + valid = .false. + + !check all the characters in the string: + n = len(str) + if (n==4) then + do i=1,n + if (.not. any(str(i:i)==valid_chars)) return + end do + valid = .true. !all are in the set, so it is OK + end if + + end function valid_json_hex +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! +! Convert string to unicode (CDK to CK). + + pure function to_uni(str) + + implicit none + + character(kind=CDK,len=*), intent(in) :: str + character(kind=CK,len=len(str)) :: to_uni + + to_uni = str + + end function to_uni +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! +! Convert array of strings to unicode (CDK to CK). +! +!@note JW: may be able to remove this by making [[to_uni]] PURE ELEMENTAL ? + + pure function to_uni_vec(str) + + implicit none + + character(kind=CDK,len=*), dimension(:), intent(in) :: str + character(kind=CK,len=len(str)), dimension(size(str)) :: to_uni_vec + + to_uni_vec = str + + end function to_uni_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! +! `CK`//`CDK` operator. + + pure function ucs4_join_default(ucs4_str,def_str) result(res) + + implicit none + + character(kind=CK, len=*), intent(in) :: ucs4_str + character(kind=CDK,len=*), intent(in) :: def_str + character(kind=CK,len=(len(ucs4_str)+len(def_str))) :: res + + res = ucs4_str//to_unicode(def_str) + + end function ucs4_join_default +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! +! `CDK`//`CK` operator. + + pure function default_join_ucs4(def_str,ucs4_str) result(res) + + implicit none + + character(kind=CDK,len=*), intent(in) :: def_str + character(kind=CK, len=*), intent(in) :: ucs4_str + character(kind=CK,len=(len(def_str)+len(ucs4_str))) :: res + + res = to_unicode(def_str)//ucs4_str + + end function default_join_ucs4 +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! +! `CK`==`CDK` operator. + + pure elemental function ucs4_comp_default(ucs4_str,def_str) result(res) + + implicit none + + character(kind=CK, len=*), intent(in) :: ucs4_str + character(kind=CDK,len=*), intent(in) :: def_str + logical(LK) :: res + + res = ( ucs4_str == to_unicode(def_str) ) + + end function ucs4_comp_default +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! +! `CDK`==`CK` operator. + + pure elemental function default_comp_ucs4(def_str,ucs4_str) result(res) + + implicit none + + character(kind=CDK,len=*), intent(in) :: def_str + character(kind=CK, len=*), intent(in) :: ucs4_str + logical(LK) :: res + + res = (to_unicode(def_str) == ucs4_str) + + end function default_comp_ucs4 +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! `CK`/=`CDK` operator. + + pure elemental function ucs4_neq_default(ucs4_str,def_str) result(res) + + implicit none + + character(kind=CK, len=*), intent(in) :: ucs4_str + character(kind=CDK,len=*), intent(in) :: def_str + logical(LK) :: res + + res = ( ucs4_str /= to_unicode(def_str) ) + + end function ucs4_neq_default +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! `CDK`/=`CK` operator. + + pure elemental function default_neq_ucs4(def_str,ucs4_str) result(res) + + implicit none + + character(kind=CDK,len=*), intent(in) :: def_str + character(kind=CK, len=*), intent(in) :: ucs4_str + logical(LK) :: res + + res = (to_unicode(def_str) /= ucs4_str) + + end function default_neq_ucs4 +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Returns lowercase version of the `CK` string. + + pure function lowercase_string(str) result(s_lower) + + implicit none + + character(kind=CK,len=*),intent(in) :: str !! input string + character(kind=CK,len=(len(str))) :: s_lower !! lowercase version of the string + + integer :: i !! counter + integer :: j !! index of uppercase character + + s_lower = str + + do i = 1, len_trim(str) + j = index(upper,s_lower(i:i)) + if (j>0) s_lower(i:i) = lower(j:j) + end do + + end function lowercase_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Replace all occurrences of `s1` in `str` with `s2`. +! +! A case-sensitive match is used. +! +!@note `str` must be allocated. + + pure subroutine replace_string(str,s1,s2) + + implicit none + + character(kind=CK,len=:),allocatable,intent(inout) :: str + character(kind=CK,len=*),intent(in) :: s1 + character(kind=CK,len=*),intent(in) :: s2 + + character(kind=CK,len=:),allocatable :: tmp !! temporary string for accumulating result + integer(IK) :: i !! counter + integer(IK) :: n !! for accumulating the string + integer(IK) :: ilen !! length of `str` string + integer(IK) :: ilen1 !! length of `s1` string + + if (len(str)>0) then + + tmp = CK_'' ! initialize + ilen1 = len(s1) + + ! . + ! '123ab789' + + do + ilen = len(str) + i = index(str,s1) + if (i>0) then + if (i>1) tmp = tmp//str(1:i-1) + tmp = tmp//s2 ! replace s1 with s2 in new string + n = i+ilen1 ! start of remainder of str to keep + if (n<=ilen) then + str = str(n:ilen) + else + ! done + exit + end if + else + ! done: get remainder of string + tmp = tmp//str + exit + end if + end do + + str = tmp + + end if + + end subroutine replace_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Decode a string from the "JSON Pointer" RFC 6901 format. +! +! It replaces `~1` with `/` and `~0` with `~`. + + pure function decode_rfc6901(str) result(str_out) + + implicit none + + character(kind=CK,len=*),intent(in) :: str + character(kind=CK,len=:),allocatable :: str_out + + str_out = str + + call replace_string(str_out,tilde//CK_'1',slash) + call replace_string(str_out,tilde//CK_'0',tilde) + + end function decode_rfc6901 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Encode a string into the "JSON Pointer" RFC 6901 format. +! +! It replaces `~` with `~0` and `/` with `~1`. + + pure function encode_rfc6901(str) result(str_out) + + implicit none + + character(kind=CK,len=*),intent(in) :: str + character(kind=CK,len=:),allocatable :: str_out + + str_out = str + + call replace_string(str_out,tilde,tilde//CK_'0') + call replace_string(str_out,slash,tilde//CK_'1') + + end function encode_rfc6901 +!***************************************************************************************** + + end module json_string_utilities +!***************************************************************************************** diff --git a/Common/json-fortran/json_value_module.F90 b/Common/json-fortran/json_value_module.F90 new file mode 100644 index 0000000..4bae98a --- /dev/null +++ b/Common/json-fortran/json_value_module.F90 @@ -0,0 +1,11549 @@ +!***************************************************************************************** +!> author: Jacob Williams +! license: BSD +! +! This module provides a low-level interface for manipulation of JSON data. +! The two public entities are [[json_value]], and [[json_core(type)]]. +! The [[json_file_module]] provides a higher-level interface to some +! of these routines. +! +!### License +! * JSON-Fortran is released under a BSD-style license. +! See the [LICENSE](https://github.com/jacobwilliams/json-fortran/blob/master/LICENSE) +! file for details. + + module json_value_module + + use,intrinsic :: iso_fortran_env, only: iostat_end,error_unit,output_unit + use,intrinsic :: ieee_arithmetic + use json_kinds + use json_parameters + use json_string_utilities + + implicit none + + private + +#include "json_macros.inc" + + !********************************************************* + !> + ! If Unicode is not enabled, then + ! JSON files are opened using access='STREAM' and + ! form='UNFORMATTED'. This allows the file to + ! be read faster. + ! +#ifdef USE_UCS4 + logical,parameter :: use_unformatted_stream = .false. +#else + logical,parameter :: use_unformatted_stream = .true. +#endif + !********************************************************* + + !********************************************************* + !> + ! If Unicode is not enabled, then + ! JSON files are opened using access='STREAM' and + ! form='UNFORMATTED'. This allows the file to + ! be read faster. + ! +#ifdef USE_UCS4 + character(kind=CDK,len=*),parameter :: access_spec = 'SEQUENTIAL' +#else + character(kind=CDK,len=*),parameter :: access_spec = 'STREAM' +#endif + !********************************************************* + + !********************************************************* + !> + ! If Unicode is not enabled, then + ! JSON files are opened using access='STREAM' and + ! form='UNFORMATTED'. This allows the file to + ! be read faster. + ! +#ifdef USE_UCS4 + character(kind=CDK,len=*),parameter :: form_spec = 'FORMATTED' +#else + character(kind=CDK,len=*),parameter :: form_spec = 'UNFORMATTED' +#endif + !********************************************************* + + !********************************************************* + !> + ! Type used to construct the linked-list JSON structure. + ! Normally, this should always be a pointer variable. + ! This type should only be used by an instance of [[json_core(type)]]. + ! + !### Example + ! + ! The following test program: + ! + !````fortran + ! program test + ! use json_module + ! implicit none + ! type(json_core) :: json + ! type(json_value),pointer :: p + ! call json%create_object(p,'') !create the root + ! call json%add(p,'year',1805) !add some data + ! call json%add(p,'value',1.0_RK) !add some data + ! call json%print(p,'test.json') !write it to a file + ! call json%destroy(p) !cleanup + ! end program test + !```` + ! + ! Produces the JSON file **test.json**: + ! + !````json + ! { + ! "year": 1805, + ! "value": 0.1E+1 + ! } + !```` + ! + !@warning Pointers of this type should only be allocated + ! using the methods from [[json_core(type)]]. + + type,public :: json_value + + !force the constituents to be stored contiguously + ![note: on Intel, the order of the variables below + ! is significant to avoid the misaligned field warnings] + sequence + + private + + !for the linked list: + type(json_value),pointer :: previous => null() !! previous item in the list + type(json_value),pointer :: next => null() !! next item in the list + type(json_value),pointer :: parent => null() !! parent item of this + type(json_value),pointer :: children => null() !! first child item of this + type(json_value),pointer :: tail => null() !! last child item of this + + character(kind=CK,len=:),allocatable :: name !! variable name (unescaped) + + real(RK),allocatable :: dbl_value !! real data for this variable + logical(LK),allocatable :: log_value !! logical data for this variable + character(kind=CK,len=:),allocatable :: str_value !! string data for this variable + !! (unescaped) + integer(IK),allocatable :: int_value !! integer data for this variable + + integer(IK) :: var_type = json_unknown !! variable type + + integer(IK),private :: n_children = 0 !! number of children + + end type json_value + !********************************************************* + + !********************************************************* + !> + ! To access the core routines for manipulation + ! of [[json_value]] pointer variables. This class allows + ! for thread safe use of the module. + ! + !### Usage + !````fortran + ! program test + ! use json_module, wp=>json_RK + ! implicit none + ! type(json_core) :: json !<--have to declare this + ! type(json_value),pointer :: p + ! call json%create_object(p,'') !create the root + ! call json%add(p,'year',1805) !add some data + ! call json%add(p,'value',1.0_wp) !add some data + ! call json%print(p,'test.json') !write it to a file + ! call json%destroy(p) !cleanup + ! end program test + !```` + type,public :: json_core + + private + + integer(IK) :: spaces_per_tab = 2 !! number of spaces for indenting + + logical(LK) :: compact_real = .true. !! to use the "compact" form of real + !! numbers for output + character(kind=CDK,len=:),allocatable :: real_fmt !! the format string to use + !! for converting real numbers to strings. + !! It can be set in [[json_initialize]], + !! and used in [[json_value_print]] + !! If not set, then `default_real_fmt` + !! is used instead. + + logical(LK) :: is_verbose = .false. !! if true, all exceptions are + !! immediately printed to console. + + logical(LK) :: stop_on_error = .false. !! if true, then the program is + !! stopped immediately when an + !! exception is raised. + + logical(LK) :: exception_thrown = .false. !! The error flag. Will be set to true + !! when an error is thrown in the class. + !! Many of the methods will check this + !! and return immediately if it is true. + character(kind=CK,len=:),allocatable :: err_message + !! the error message. + !! if `exception_thrown=False` then + !! this variable is not allocated. + + integer(IK) :: char_count = 0 !! character position in the current line + integer(IK) :: line_count = 1 !! lines read counter + integer(IK) :: pushed_index = 0 !! used when parsing lines in file + character(kind=CK,len=pushed_char_size) :: pushed_char = CK_'' !! used when parsing + !! lines in file + + integer(IK) :: ipos = 1 !! for allocatable strings: next character to read + + logical(LK) :: strict_type_checking = .false. !! if true, then no type conversions are done + !! in the `get` routines if the actual variable + !! type is different from the return type (for + !! example, integer to real). + + logical(LK) :: trailing_spaces_significant = .false. !! for name and path comparisons, if trailing + !! space is to be considered significant. + + logical(LK) :: case_sensitive_keys = .true. !! if name and path comparisons + !! are case sensitive. + + logical(LK) :: no_whitespace = .false. !! when printing a JSON string, don't include + !! non-significant spaces or line breaks. + !! If true, the entire structure will be + !! printed on one line. + + logical(LK) :: unescaped_strings = .true. !! If false, then the escaped + !! string is returned from [[json_get_string]] + !! and similar routines. If true [default], + !! then the string is returned unescaped. + + logical(LK) :: allow_comments = .true. !! if true, any comments will be ignored when + !! parsing a file. The comment tokens are defined + !! by the `comment_char` character variable. + character(kind=CK,len=:),allocatable :: comment_char !! comment tokens when + !! `allow_comments` is true. + !! Examples: '`!`' or '`#`'. + !! Default is `CK_'/!#'`. + + integer(IK) :: path_mode = 1_IK !! How the path strings are interpreted in the + !! `get_by_path` routines: + !! + !! * 1 -- Default mode (see [[json_get_by_path_default]]) + !! * 2 -- as RFC 6901 "JSON Pointer" paths + !! (see [[json_get_by_path_rfc6901]]) + !! * 3 -- JSONPath "bracket-notation" + !! see [[json_get_by_path_jsonpath_bracket]]) + + character(kind=CK,len=1) :: path_separator = dot !! The `path` separator to use + !! in the "default" mode for + !! the paths in the various + !! `get_by_path` routines. + !! Note: if `path_mode/=1` + !! then this is ignored. + + logical(LK) :: compress_vectors = .false. !! If true, then arrays of integers, + !! nulls, reals, & logicals are + !! printed all on one line. + !! [Note: `no_whitespace` will + !! override this option if necessary] + + logical(LK) :: allow_duplicate_keys = .true. !! If False, then after parsing, if any + !! duplicate keys are found, an error is + !! thrown. A call to [[json_value_validate]] + !! will also check for duplicates. If True + !! [default] then no special checks are done + + logical(LK) :: escape_solidus = .false. !! If True then the solidus "`/`" is always escaped + !! ("`\/`") when serializing JSON. + !! If False [default], then it is not escaped. + !! Note that this option does not affect parsing + !! (both escaped and unescaped versions are still + !! valid in all cases). + + integer(IK) :: null_to_real_mode = 2_IK !! if `strict_type_checking=false`: + !! + !! * 1 : an exception will be raised if + !! try to retrieve a `null` as a real. + !! * 2 : a `null` retrieved as a real + !! will return NaN. [default] + !! * 3 : a `null` retrieved as a real + !! will return 0.0. + + logical(LK) :: non_normals_to_null = .false. !! How to serialize NaN, Infinity, + !! and -Infinity real values: + !! + !! * If true : as JSON `null` values + !! * If false : as strings (e.g., "NaN", + !! "Infinity", "-Infinity") [default] + + logical(LK) :: use_quiet_nan = .true. !! if true [default], `null_to_real_mode=2` + !! and [[string_to_real]] will use + !! `ieee_quiet_nan` for NaN values. If false, + !! `ieee_signaling_nan` will be used. + + logical(LK) :: strict_integer_type_checking = .true. + !! * If false, when parsing JSON, if an integer numeric value + !! cannot be converted to an integer (`integer(IK)`), + !! then an attempt is then make to convert it + !! to a real (`real(RK)`). + !! * If true [default], an exception will be raised if an integer + !! value cannot be read when parsing JSON. + + integer :: ichunk = 0 !! index in `chunk` for [[pop_char]] + !! when `use_unformatted_stream=True` + integer :: filesize = 0 !! the file size when when `use_unformatted_stream=True` + character(kind=CK,len=:),allocatable :: chunk !! a chunk read from a stream file + !! when `use_unformatted_stream=True` + + contains + + private + + !> + ! Return a child of a [[json_value]] structure. + generic,public :: get_child => json_value_get_child_by_index, & + json_value_get_child,& + MAYBEWRAP(json_value_get_child_by_name) + procedure,private :: json_value_get_child_by_index + procedure,private :: MAYBEWRAP(json_value_get_child_by_name) + procedure,private :: json_value_get_child + + !> + ! Add objects to a linked list of [[json_value]]s. + ! + !@note It might make more sense to call this `add_child`. + generic,public :: add => json_value_add_member, & + MAYBEWRAP(json_value_add_null), & + MAYBEWRAP(json_value_add_integer), & + MAYBEWRAP(json_value_add_integer_vec), & +#ifndef REAL32 + MAYBEWRAP(json_value_add_real32), & + MAYBEWRAP(json_value_add_real32_vec), & +#endif + MAYBEWRAP(json_value_add_real), & + MAYBEWRAP(json_value_add_real_vec), & +#ifdef REAL128 + MAYBEWRAP(json_value_add_real64), & + MAYBEWRAP(json_value_add_real64_vec), & +#endif + MAYBEWRAP(json_value_add_logical), & + MAYBEWRAP(json_value_add_logical_vec), & + MAYBEWRAP(json_value_add_string), & + MAYBEWRAP(json_value_add_string_vec) +#ifdef USE_UCS4 + generic,public :: add => json_value_add_string_name_ascii, & + json_value_add_string_val_ascii, & + json_value_add_string_vec_name_ascii, & + json_value_add_string_vec_val_ascii +#endif + + procedure,private :: json_value_add_member + procedure,private :: MAYBEWRAP(json_value_add_integer) + procedure,private :: MAYBEWRAP(json_value_add_null) + procedure,private :: MAYBEWRAP(json_value_add_integer_vec) +#ifndef REAL32 + procedure,private :: MAYBEWRAP(json_value_add_real32) + procedure,private :: MAYBEWRAP(json_value_add_real32_vec) +#endif + procedure,private :: MAYBEWRAP(json_value_add_real) + procedure,private :: MAYBEWRAP(json_value_add_real_vec) +#ifdef REAL128 + procedure,private :: MAYBEWRAP(json_value_add_real64) + procedure,private :: MAYBEWRAP(json_value_add_real64_vec) +#endif + procedure,private :: MAYBEWRAP(json_value_add_logical) + procedure,private :: MAYBEWRAP(json_value_add_logical_vec) + procedure,private :: MAYBEWRAP(json_value_add_string) + procedure,private :: MAYBEWRAP(json_value_add_string_vec) +#ifdef USE_UCS4 + procedure,private :: json_value_add_string_name_ascii + procedure,private :: json_value_add_string_val_ascii + procedure,private :: json_value_add_string_vec_name_ascii + procedure,private :: json_value_add_string_vec_val_ascii +#endif + + !> + ! These are like the `add` methods, except if a variable with the + ! same path is already present, then its value is simply updated. + ! Note that currently, these only work for scalar variables. + ! These routines can also change the variable's type (but an error will be + ! thrown if the existing variable is not a scalar). + ! + !### See also + ! * [[json_core(type):add_by_path]] - this one can be used to change + ! arrays and objects to scalars if so desired. + ! + !@note Unlike some routines, the `found` output is not optional, + ! so it doesn't present exceptions from being thrown. + ! + !@note These have been mostly supplanted by the [[json_core(type):add_by_path]] + ! methods, which do a similar thing (and can be used for + ! scalars and vectors, etc.) + generic,public :: update => MAYBEWRAP(json_update_logical),& +#ifndef REAL32 + MAYBEWRAP(json_update_real32),& +#endif + MAYBEWRAP(json_update_real),& +#ifdef REAL128 + MAYBEWRAP(json_update_real64),& +#endif + + MAYBEWRAP(json_update_integer),& + MAYBEWRAP(json_update_string) +#ifdef USE_UCS4 + generic,public :: update => json_update_string_name_ascii,& + json_update_string_val_ascii +#endif + procedure,private :: MAYBEWRAP(json_update_logical) +#ifndef REAL32 + procedure,private :: MAYBEWRAP(json_update_real32) +#endif + procedure,private :: MAYBEWRAP(json_update_real) +#ifdef REAL128 + procedure,private :: MAYBEWRAP(json_update_real64) +#endif + procedure,private :: MAYBEWRAP(json_update_integer) + procedure,private :: MAYBEWRAP(json_update_string) +#ifdef USE_UCS4 + procedure,private :: json_update_string_name_ascii + procedure,private :: json_update_string_val_ascii +#endif + + !> + ! Add variables to a [[json_value]] linked list + ! by specifying their paths. + ! + !### Example + ! + !````fortran + ! use, intrinsic :: iso_fortran_env, only: output_unit + ! use json_module, wp=>json_RK + ! type(json_core) :: json + ! type(json_value) :: p + ! call json%create_object(p,'root') ! create the root + ! ! now add some variables using the paths: + ! call json%add_by_path(p,'inputs.t', 0.0_wp ) + ! call json%add_by_path(p,'inputs.x(1)', 100.0_wp) + ! call json%add_by_path(p,'inputs.x(2)', 200.0_wp) + ! call json%print(p) ! now print to console + !```` + ! + !### Notes + ! * This uses [[json_create_by_path]] + ! + !### See also + ! * The `json_core%update` methods. + ! * [[json_create_by_path]] + + generic,public :: add_by_path => MAYBEWRAP(json_add_member_by_path),& + MAYBEWRAP(json_add_integer_by_path),& +#ifndef REAL32 + MAYBEWRAP(json_add_real32_by_path),& +#endif + MAYBEWRAP(json_add_real_by_path),& +#ifdef REAL128 + MAYBEWRAP(json_add_real64_by_path),& +#endif + MAYBEWRAP(json_add_logical_by_path),& + MAYBEWRAP(json_add_string_by_path),& + MAYBEWRAP(json_add_integer_vec_by_path),& +#ifndef REAL32 + MAYBEWRAP(json_add_real32_vec_by_path),& +#endif + MAYBEWRAP(json_add_real_vec_by_path),& +#ifdef REAL128 + MAYBEWRAP(json_add_real64_vec_by_path),& +#endif + MAYBEWRAP(json_add_logical_vec_by_path),& + MAYBEWRAP(json_add_string_vec_by_path) +#ifdef USE_UCS4 + generic,public :: add_by_path => json_add_string_by_path_value_ascii,& + json_add_string_by_path_path_ascii,& + json_add_string_vec_by_path_value_ascii,& + json_add_string_vec_by_path_path_ascii +#endif + procedure :: MAYBEWRAP(json_add_member_by_path) + procedure :: MAYBEWRAP(json_add_integer_by_path) +#ifndef REAL32 + procedure :: MAYBEWRAP(json_add_real32_by_path) +#endif + procedure :: MAYBEWRAP(json_add_real_by_path) +#ifdef REAL128 + procedure :: MAYBEWRAP(json_add_real64_by_path) +#endif + procedure :: MAYBEWRAP(json_add_logical_by_path) + procedure :: MAYBEWRAP(json_add_string_by_path) + procedure :: MAYBEWRAP(json_add_integer_vec_by_path) +#ifndef REAL32 + procedure :: MAYBEWRAP(json_add_real32_vec_by_path) +#endif + procedure :: MAYBEWRAP(json_add_real_vec_by_path) +#ifdef REAL128 + procedure :: MAYBEWRAP(json_add_real64_vec_by_path) +#endif + procedure :: MAYBEWRAP(json_add_logical_vec_by_path) + procedure :: MAYBEWRAP(json_add_string_vec_by_path) +#ifdef USE_UCS4 + procedure :: json_add_string_by_path_value_ascii + procedure :: json_add_string_by_path_path_ascii + procedure :: json_add_string_vec_by_path_value_ascii + procedure :: json_add_string_vec_by_path_path_ascii +#endif + + !> + ! Create a [[json_value]] linked list using the + ! path to the variables. Optionally return a + ! pointer to the variable. + ! + ! (This will create a `null` variable) + ! + !### See also + ! * [[json_core(type):add_by_path]] + + generic,public :: create => MAYBEWRAP(json_create_by_path) + procedure :: MAYBEWRAP(json_create_by_path) + + !> + ! Get data from a [[json_value]] linked list. + ! + !@note There are two versions (e.g. [[json_get_integer]] and [[json_get_integer_by_path]]). + ! The first one gets the value from the [[json_value]] passed into the routine, + ! while the second one gets the value from the [[json_value]] found by parsing the + ! path. The path version is split up into unicode and non-unicode versions. + + generic,public :: get => & + MAYBEWRAP(json_get_by_path), & + json_get_integer, MAYBEWRAP(json_get_integer_by_path), & + json_get_integer_vec, MAYBEWRAP(json_get_integer_vec_by_path), & +#ifndef REAL32 + json_get_real32, MAYBEWRAP(json_get_real32_by_path), & + json_get_real32_vec, MAYBEWRAP(json_get_real32_vec_by_path), & +#endif + json_get_real, MAYBEWRAP(json_get_real_by_path), & + json_get_real_vec, MAYBEWRAP(json_get_real_vec_by_path), & +#ifdef REAL128 + json_get_real64, MAYBEWRAP(json_get_real64_by_path), & + json_get_real64_vec, MAYBEWRAP(json_get_real64_vec_by_path), & +#endif + json_get_logical, MAYBEWRAP(json_get_logical_by_path), & + json_get_logical_vec, MAYBEWRAP(json_get_logical_vec_by_path), & + json_get_string, MAYBEWRAP(json_get_string_by_path), & + json_get_string_vec, MAYBEWRAP(json_get_string_vec_by_path), & + json_get_alloc_string_vec, MAYBEWRAP(json_get_alloc_string_vec_by_path),& + json_get_array, MAYBEWRAP(json_get_array_by_path) + + procedure,private :: json_get_integer + procedure,private :: json_get_integer_vec +#ifndef REAL32 + procedure,private :: json_get_real32 + procedure,private :: json_get_real32_vec +#endif + procedure,private :: json_get_real + procedure,private :: json_get_real_vec +#ifdef REAL128 + procedure,private :: json_get_real64 + procedure,private :: json_get_real64_vec +#endif + procedure,private :: json_get_logical + procedure,private :: json_get_logical_vec + procedure,private :: json_get_string + procedure,private :: json_get_string_vec + procedure,private :: json_get_alloc_string_vec + procedure,private :: json_get_array + procedure,private :: MAYBEWRAP(json_get_by_path) + procedure,private :: MAYBEWRAP(json_get_integer_by_path) + procedure,private :: MAYBEWRAP(json_get_integer_vec_by_path) +#ifndef REAL32 + procedure,private :: MAYBEWRAP(json_get_real32_by_path) + procedure,private :: MAYBEWRAP(json_get_real32_vec_by_path) +#endif + procedure,private :: MAYBEWRAP(json_get_real_by_path) + procedure,private :: MAYBEWRAP(json_get_real_vec_by_path) +#ifdef REAL128 + procedure,private :: MAYBEWRAP(json_get_real64_by_path) + procedure,private :: MAYBEWRAP(json_get_real64_vec_by_path) +#endif + procedure,private :: MAYBEWRAP(json_get_logical_by_path) + procedure,private :: MAYBEWRAP(json_get_logical_vec_by_path) + procedure,private :: MAYBEWRAP(json_get_string_by_path) + procedure,private :: MAYBEWRAP(json_get_string_vec_by_path) + procedure,private :: MAYBEWRAP(json_get_array_by_path) + procedure,private :: MAYBEWRAP(json_get_alloc_string_vec_by_path) + procedure,private :: json_get_by_path_default + procedure,private :: json_get_by_path_rfc6901 + procedure,private :: json_get_by_path_jsonpath_bracket + + !> + ! Print the [[json_value]] to an output unit or file. + ! + !### Example + ! + !````fortran + ! type(json_core) :: json + ! type(json_value) :: p + ! !... + ! call json%print(p,'test.json') !this is [[json_print_to_filename]] + !```` + generic,public :: print => json_print_to_console,& + json_print_to_unit,& + json_print_to_filename + procedure :: json_print_to_console + procedure :: json_print_to_unit + procedure :: json_print_to_filename + + !> + ! Destructor routine for a [[json_value]] pointer. + ! This must be called explicitly if it is no longer needed, + ! before it goes out of scope. Otherwise, a memory leak will result. + ! + !### Example + ! + ! Destroy the [[json_value]] pointer before the variable goes out of scope: + !````fortran + ! subroutine example1() + ! type(json_core) :: json + ! type(json_value),pointer :: p + ! call json%create_object(p,'') + ! call json%add(p,'year',2015) + ! call json%print(p) + ! call json%destroy(p) + ! end subroutine example1 + !```` + ! + ! Note: it should NOT be called for a [[json_value]] pointer than has already been + ! added to another [[json_value]] structure, since doing so may render the + ! other structure invalid. Consider the following example: + !````fortran + ! subroutine example2(p) + ! type(json_core) :: json + ! type(json_value),pointer,intent(out) :: p + ! type(json_value),pointer :: q + ! call json%create_object(p,'') + ! call json%add(p,'year',2015) + ! call json%create_object(q,'q') + ! call json%add(q,'val',1) + ! call json%add(p, q) !add q to p structure + ! ! do NOT call json%destroy(q) here, because q is + ! ! now part of the output structure p. p should be destroyed + ! ! somewhere upstream by the caller of this routine. + ! nullify(q) !OK, but not strictly necessary + ! end subroutine example2 + !```` + generic,public :: destroy => json_value_destroy,destroy_json_core + procedure :: json_value_destroy + procedure :: destroy_json_core + + !> + ! If the child variable is present, then remove it. + generic,public :: remove_if_present => MAYBEWRAP(json_value_remove_if_present) + procedure :: MAYBEWRAP(json_value_remove_if_present) + + !> + ! Allocate a [[json_value]] pointer and make it a real variable. + ! The pointer should not already be allocated. + ! + !### Example + ! + !````fortran + ! type(json_core) :: json + ! type(json_value),pointer :: p + ! call json%create_real(p,'value',1.0_RK) + !```` + ! + !### Note + ! * [[json_core(type):create_real]] is just an alias + ! to this one for backward compatibility. + generic,public :: create_real => MAYBEWRAP(json_value_create_real) + procedure :: MAYBEWRAP(json_value_create_real) +#ifndef REAL32 + generic,public :: create_real => MAYBEWRAP(json_value_create_real32) + procedure :: MAYBEWRAP(json_value_create_real32) +#endif +#ifdef REAL128 + generic,public :: create_real => MAYBEWRAP(json_value_create_real64) + procedure :: MAYBEWRAP(json_value_create_real64) +#endif + + !> + ! This is equivalent to [[json_core(type):create_real]], + ! and is here only for backward compatibility. + generic,public :: create_double => MAYBEWRAP(json_value_create_real) +#ifndef REAL32 + generic,public :: create_double => MAYBEWRAP(json_value_create_real32) +#endif +#ifdef REAL128 + generic,public :: create_double => MAYBEWRAP(json_value_create_real64) +#endif + + !> + ! Allocate a [[json_value]] pointer and make it an array variable. + ! The pointer should not already be allocated. + ! + !### Example + ! + !````fortran + ! type(json_core) :: json + ! type(json_value),pointer :: p + ! call json%create_array(p,'arrayname') + !```` + generic,public :: create_array => MAYBEWRAP(json_value_create_array) + procedure :: MAYBEWRAP(json_value_create_array) + + !> + ! Allocate a [[json_value]] pointer and make it an object variable. + ! The pointer should not already be allocated. + ! + !### Example + ! + !````fortran + ! type(json_core) :: json + ! type(json_value),pointer :: p + ! call json%create_object(p,'objectname') + !```` + ! + !@note The name is not significant for the root structure or an array element. + ! In those cases, an empty string can be used. + generic,public :: create_object => MAYBEWRAP(json_value_create_object) + procedure :: MAYBEWRAP(json_value_create_object) + + !> + ! Allocate a json_value pointer and make it a null variable. + ! The pointer should not already be allocated. + ! + !### Example + ! + !````fortran + ! type(json_core) :: json + ! type(json_value),pointer :: p + ! call json%create_null(p,'value') + !```` + generic,public :: create_null => MAYBEWRAP(json_value_create_null) + procedure :: MAYBEWRAP(json_value_create_null) + + !> + ! Allocate a json_value pointer and make it a string variable. + ! The pointer should not already be allocated. + ! + !### Example + ! + !````fortran + ! type(json_core) :: json + ! type(json_value),pointer :: p + ! call json%create_string(p,'value','foobar') + !```` + generic,public :: create_string => MAYBEWRAP(json_value_create_string) + procedure :: MAYBEWRAP(json_value_create_string) + + !> + ! Allocate a json_value pointer and make it an integer variable. + ! The pointer should not already be allocated. + ! + !### Example + ! + !````fortran + ! type(json_core) :: json + ! type(json_value),pointer :: p + ! call json%create_integer(p,42,'value') + !```` + generic,public :: create_integer => MAYBEWRAP(json_value_create_integer) + procedure :: MAYBEWRAP(json_value_create_integer) + + !> + ! Allocate a json_value pointer and make it a logical variable. + ! The pointer should not already be allocated. + ! + !### Example + ! + !````fortran + ! type(json_core) :: json + ! type(json_value),pointer :: p + ! call json%create_logical(p,'value',.true.) + !```` + generic,public :: create_logical => MAYBEWRAP(json_value_create_logical) + procedure :: MAYBEWRAP(json_value_create_logical) + + !> + ! Parse the JSON file and populate the [[json_value]] tree. + generic,public :: load => json_parse_file + procedure :: json_parse_file + + !> + ! Print the [[json_value]] structure to an allocatable string + procedure,public :: serialize => json_value_to_string + + !> + ! The same as `serialize`, but only here for backward compatibility + procedure,public :: print_to_string => json_value_to_string + + !> + ! Parse the JSON string and populate the [[json_value]] tree. + generic,public :: deserialize => MAYBEWRAP(json_parse_string) + procedure :: MAYBEWRAP(json_parse_string) + + !> + ! Same as `load` and `deserialize` but only here for backward compatibility. + generic,public :: parse => json_parse_file, & + MAYBEWRAP(json_parse_string) + + !> + ! Throw an exception. + generic,public :: throw_exception => MAYBEWRAP(json_throw_exception) + procedure :: MAYBEWRAP(json_throw_exception) + + !> + ! Rename a [[json_value]] variable. + generic,public :: rename => MAYBEWRAP(json_value_rename),& + MAYBEWRAP(json_rename_by_path) + procedure :: MAYBEWRAP(json_value_rename) + procedure :: MAYBEWRAP(json_rename_by_path) +#ifdef USE_UCS4 + generic,public :: rename => json_rename_by_path_name_ascii,& + json_rename_by_path_path_ascii + procedure :: json_rename_by_path_name_ascii + procedure :: json_rename_by_path_path_ascii +#endif + + !> + ! get info about a [[json_value]] + generic,public :: info => json_info, MAYBEWRAP(json_info_by_path) + procedure :: json_info + procedure :: MAYBEWRAP(json_info_by_path) + + !> + ! get string info about a [[json_value]] + generic,public :: string_info => json_string_info + procedure :: json_string_info + + !> + ! get matrix info about a [[json_value]] + generic,public :: matrix_info => json_matrix_info, MAYBEWRAP(json_matrix_info_by_path) + procedure :: json_matrix_info + procedure :: MAYBEWRAP(json_matrix_info_by_path) + + !> + ! insert a new element after an existing one, + ! updating the JSON structure accordingly + generic,public :: insert_after => json_value_insert_after, & + json_value_insert_after_child_by_index + procedure :: json_value_insert_after + procedure :: json_value_insert_after_child_by_index + + !> + ! get the path to a JSON variable in a structure: + generic,public :: get_path => MAYBEWRAP(json_get_path) + procedure :: MAYBEWRAP(json_get_path) + + !> + ! verify if a path is valid + ! (i.e., a variable with this path exists in the file). + generic,public :: valid_path => MAYBEWRAP(json_valid_path) + procedure :: MAYBEWRAP(json_valid_path) + + procedure,public :: remove => json_value_remove !! Remove a [[json_value]] from a + !! linked-list structure. + procedure,public :: replace => json_value_replace !! Replace a [[json_value]] in a + !! linked-list structure. + procedure,public :: reverse => json_value_reverse !! Reverse the order of the children + !! of an array of object. + procedure,public :: check_for_errors => json_check_for_errors !! check for error and get error message + procedure,public :: clear_exceptions => json_clear_exceptions !! clear exceptions + procedure,public :: count => json_count !! count the number of children + procedure,public :: clone => json_clone !! clone a JSON structure (deep copy) + procedure,public :: failed => json_failed !! check for error + procedure,public :: get_parent => json_get_parent !! get pointer to json_value parent + procedure,public :: get_next => json_get_next !! get pointer to json_value next + procedure,public :: get_previous => json_get_previous !! get pointer to json_value previous + procedure,public :: get_tail => json_get_tail !! get pointer to json_value tail + procedure,public :: initialize => json_initialize !! to initialize some parsing parameters + procedure,public :: traverse => json_traverse !! to traverse all elements of a JSON + !! structure + procedure,public :: print_error_message => json_print_error_message !! simply routine to print error + !! messages + procedure,public :: swap => json_value_swap !! Swap two [[json_value]] pointers + !! in a structure (or two different + !! structures). + procedure,public :: is_child_of => json_value_is_child_of !! Check if a [[json_value]] is a + !! descendant of another. + procedure,public :: validate => json_value_validate !! Check that a [[json_value]] linked + !! list is valid (i.e., is properly + !! constructed). This may be useful + !! if it has been constructed externally. + procedure,public :: check_for_duplicate_keys & + => json_check_all_for_duplicate_keys !! Check entire JSON structure + !! for duplicate keys (recursively) + procedure,public :: check_children_for_duplicate_keys & + => json_check_children_for_duplicate_keys !! Check a `json_value` object's + !! children for duplicate keys + + !other private routines: + procedure :: name_equal + procedure :: name_strings_equal + procedure :: json_value_print + procedure :: string_to_int + procedure :: string_to_dble + procedure :: prepare_parser => json_prepare_parser + procedure :: parse_end => json_parse_end + procedure :: parse_value + procedure :: parse_number + procedure :: parse_string + procedure :: parse_for_chars + procedure :: parse_object + procedure :: parse_array + procedure :: annotate_invalid_json + procedure :: pop_char + procedure :: push_char + procedure :: get_current_line_from_file_stream + procedure,nopass :: get_current_line_from_file_sequential + procedure :: convert + procedure :: to_string + procedure :: to_logical + procedure :: to_integer + procedure :: to_real + procedure :: to_null + procedure :: to_object + procedure :: to_array + procedure,nopass :: json_value_clone_func + procedure :: is_vector => json_is_vector + + end type json_core + !********************************************************* + + !********************************************************* + !> + ! Structure constructor to initialize a + ! [[json_core(type)]] object + ! + !### Example + ! + !```fortran + ! type(json_file) :: json_core + ! json_core = json_core() + !``` + interface json_core + module procedure initialize_json_core + end interface + !********************************************************* + + !************************************************************************************* + abstract interface + + subroutine json_array_callback_func(json, element, i, count) + !! Array element callback function. Used by [[json_get_array]] + import :: json_value,json_core,IK + implicit none + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: element + integer(IK),intent(in) :: i !! index + integer(IK),intent(in) :: count !! size of array + end subroutine json_array_callback_func + + subroutine json_traverse_callback_func(json,p,finished) + !! Callback function used by [[json_traverse]] + import :: json_value,json_core,LK + implicit none + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p + logical(LK),intent(out) :: finished !! set true to stop traversing + end subroutine json_traverse_callback_func + + end interface + public :: json_array_callback_func + public :: json_traverse_callback_func + !************************************************************************************* + + contains +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 4/17/2016 +! +! Destructor for the [[json_core(type)]] type. + + subroutine destroy_json_core(me) + + implicit none + + class(json_core),intent(out) :: me + + end subroutine destroy_json_core +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 4/26/2016 +! +! Function constructor for a [[json_core(type)]]. +! This is just a wrapper for [[json_initialize]]. +! +!@note [[initialize_json_core]], [[json_initialize]], +! [[initialize_json_core_in_file]], and [[initialize_json_file]] +! all have a similar interface. + + function initialize_json_core(& +#include "json_initialize_dummy_arguments.inc" + ) result(json_core_object) + + implicit none + + type(json_core) :: json_core_object +#include "json_initialize_arguments.inc" + + call json_core_object%initialize(& +#include "json_initialize_dummy_arguments.inc" + ) + + end function initialize_json_core +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/4/2013 +! +! Initialize the [[json_core(type)]] instance. +! +! The routine may be called before any of the [[json_core(type)]] methods are used in +! order to specify certain parameters. If it is not called, then the defaults +! are used. This routine is also called internally by various routines. +! It can also be called to clear exceptions, or to reset some +! of the variables (note that only the arguments present are changed). +! +!### Modified +! * Izaak Beekman : 02/24/2015 +! +!@note [[initialize_json_core]], [[json_initialize]], +! [[initialize_json_core_in_file]], and [[initialize_json_file]] +! all have a similar interface. + + subroutine json_initialize(me,& +#include "json_initialize_dummy_arguments.inc" + ) + + implicit none + + class(json_core),intent(inout) :: me +#include "json_initialize_arguments.inc" + + character(kind=CDK,len=10) :: w !! max string length + character(kind=CDK,len=10) :: d !! real precision digits + character(kind=CDK,len=10) :: e !! real exponent digits + character(kind=CDK,len=2) :: sgn !! sign flag: `ss` or `sp` + character(kind=CDK,len=2) :: rl_edit_desc !! `G`, `E`, `EN`, or `ES` + integer(IK) :: istat !! `iostat` flag for + !! write statements + logical(LK) :: sgn_prnt !! print sign flag + character(kind=CK,len=max_integer_str_len) :: istr !! for integer to + !! string conversion + + !reset exception to false: + call me%clear_exceptions() + + !Just in case, clear these global variables also: + me%pushed_index = 0 + me%pushed_char = CK_'' + me%char_count = 0 + me%line_count = 1 + me%ipos = 1 + if (use_unformatted_stream) then + me%filesize = 0 + me%ichunk = 0 + me%chunk = repeat(space, stream_chunk_size) ! default chunk size + end if + +#ifdef USE_UCS4 + ! reopen stdout and stderr with utf-8 encoding + open(output_unit,encoding='utf-8') + open(error_unit, encoding='utf-8') +#endif + + !various optional inputs: + if (present(spaces_per_tab)) & + me%spaces_per_tab = spaces_per_tab + if (present(stop_on_error)) & + me%stop_on_error = stop_on_error + if (present(verbose)) & + me%is_verbose = verbose + if (present(strict_type_checking)) & + me%strict_type_checking = strict_type_checking + if (present(trailing_spaces_significant)) & + me%trailing_spaces_significant = trailing_spaces_significant + if (present(case_sensitive_keys)) & + me%case_sensitive_keys = case_sensitive_keys + if (present(no_whitespace)) & + me%no_whitespace = no_whitespace + if (present(unescape_strings)) & + me%unescaped_strings = unescape_strings + if (present(path_mode)) then + if (path_mode==1_IK .or. path_mode==2_IK .or. path_mode==3_IK) then + me%path_mode = path_mode + else + me%path_mode = 1_IK ! just to have a valid value + call me%throw_exception('Invalid path_mode.') + end if + end if + + ! if we are allowing comments in the file: + ! [an empty string disables comments] + if (present(comment_char)) then + me%allow_comments = comment_char/=CK_'' + me%comment_char = trim(adjustl(comment_char)) + end if + + ! path separator: + if (present(path_separator)) then + me%path_separator = path_separator + end if + + ! printing vectors in compressed form: + if (present(compress_vectors)) then + me%compress_vectors = compress_vectors + end if + + ! checking for duplicate keys: + if (present(allow_duplicate_keys)) then + me%allow_duplicate_keys = allow_duplicate_keys + end if + + ! if escaping the forward slash: + if (present(escape_solidus)) then + me%escape_solidus = escape_solidus + end if + + ! how to handle null to read conversions: + if (present(null_to_real_mode)) then + select case (null_to_real_mode) + case(1_IK:3_IK) + me%null_to_real_mode = null_to_real_mode + case default + me%null_to_real_mode = 2_IK ! just to have a valid value + call integer_to_string(null_to_real_mode,int_fmt,istr) + call me%throw_exception('Invalid null_to_real_mode: '//istr) + end select + end if + + ! how to handle NaN and Infinities: + if (present(non_normal_mode)) then + select case (non_normal_mode) + case(1_IK) ! use strings + me%non_normals_to_null = .false. + case(2_IK) ! use null + me%non_normals_to_null = .true. + case default + call integer_to_string(non_normal_mode,int_fmt,istr) + call me%throw_exception('Invalid non_normal_mode: '//istr) + end select + end if + + if (present(use_quiet_nan)) then + me%use_quiet_nan = use_quiet_nan + end if + + if (present(strict_integer_type_checking)) then + me%strict_integer_type_checking = strict_integer_type_checking + end if + + !Set the format for real numbers: + ! [if not changing it, then it remains the same] + + if ( (.not. allocated(me%real_fmt)) .or. & ! if this hasn't been done yet + present(compact_reals) .or. & + present(print_signs) .or. & + present(real_format) ) then + + !allow the special case where real format is '*': + ! [this overrides the other options] + if (present(real_format)) then + if (real_format==star) then + if (present(compact_reals)) then + ! we will also allow for compact reals with + ! '*' format, if both arguments are present. + me%compact_real = compact_reals + else + me%compact_real = .false. + end if + me%real_fmt = star + return + end if + end if + + if (present(compact_reals)) me%compact_real = compact_reals + + !set defaults + sgn_prnt = .false. + if ( present( print_signs) ) sgn_prnt = print_signs + if ( sgn_prnt ) then + sgn = 'sp' + else + sgn = 'ss' + end if + + rl_edit_desc = 'E' + if ( present( real_format ) ) then + select case ( real_format ) + case ('g','G','e','E','en','EN','es','ES') + rl_edit_desc = real_format + case default + call me%throw_exception('Invalid real format, "' // & + trim(real_format) // '", passed to json_initialize.'// & + new_line('a') // 'Acceptable formats are: "G", "E", "EN", and "ES".' ) + end select + end if + + ! set the default output/input format for reals: + write(w,'(ss,I0)',iostat=istat) max_numeric_str_len + if (istat==0) write(d,'(ss,I0)',iostat=istat) real_precision + if (istat==0) write(e,'(ss,I0)',iostat=istat) real_exponent_digits + if (istat==0) then + me%real_fmt = '(' // sgn // ',' // trim(rl_edit_desc) //& + trim(w) // '.' // trim(d) // 'E' // trim(e) // ')' + else + me%real_fmt = '(' // sgn // ',' // trim(rl_edit_desc) // & + '27.17E4)' !just use this one (should never happen) + end if + + end if + + end subroutine json_initialize +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Returns true if `name` is equal to `p%name`, using the specified +! settings for case sensitivity and trailing whitespace. +! +!### History +! * 4/30/2016 : original version +! * 8/25/2017 : now just a wrapper for [[name_strings_equal]] + + function name_equal(json,p,name) result(is_equal) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),intent(in) :: p !! the json object + character(kind=CK,len=*),intent(in) :: name !! the name to check for + logical(LK) :: is_equal !! true if the string are + !! lexically equal + + if (allocated(p%name)) then + ! call the low-level routines for the name strings: + is_equal = json%name_strings_equal(p%name,name) + else + is_equal = name == CK_'' ! check a blank name + end if + + end function name_equal +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 8/25/2017 +! +! Returns true if the name strings `name1` is equal to `name2`, using +! the specified settings for case sensitivity and trailing whitespace. + + function name_strings_equal(json,name1,name2) result(is_equal) + + implicit none + + class(json_core),intent(inout) :: json + character(kind=CK,len=*),intent(in) :: name1 !! the name to check + character(kind=CK,len=*),intent(in) :: name2 !! the name to check + logical(LK) :: is_equal !! true if the string are + !! lexically equal + + !must be the same length if we are treating + !trailing spaces as significant, so do a + !quick test of this first: + if (json%trailing_spaces_significant) then + is_equal = len(name1) == len(name2) + if (.not. is_equal) return + end if + + if (json%case_sensitive_keys) then + is_equal = name1 == name2 + else + is_equal = lowercase_string(name1) == lowercase_string(name2) + end if + + end function name_strings_equal +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 10/31/2015 +! +! Create a deep copy of a [[json_value]] linked-list structure. +! +!### Notes +! +! * If `from` has children, then they are also cloned. +! * The parent of `from` is not linked to `to`. +! * If `from` is an element of an array, then the previous and +! next entries are not cloned (only that element and it's children, if any). +! +!### Example +! +!````fortran +! program test +! use json_module +! implicit none +! type(json_core) :: json +! type(json_value),pointer :: j1, j2 +! call json%load('../files/inputs/test1.json',j1) +! call json%clone(j1,j2) !now have two independent copies +! call json%destroy(j1) !destroys j1, but j2 remains +! call json%print(j2,'j2.json') +! call json%destroy(j2) +! end program test +!```` + + subroutine json_clone(json,from,to) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: from !! this is the structure to clone + type(json_value),pointer :: to !! the clone is put here + !! (it must not already be associated) + + !call the main function: + call json%json_value_clone_func(from,to) + + end subroutine json_clone +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 10/31/2015 +! +! Recursive deep copy function called by [[json_clone]]. +! +!@note If new data is added to the [[json_value]] type, +! then this would need to be updated. + + recursive subroutine json_value_clone_func(from,to,parent,previous,tail) + + implicit none + + type(json_value),pointer :: from !! this is the structure to clone + type(json_value),pointer :: to !! the clone is put here (it + !! must not already be associated) + type(json_value),pointer,optional :: parent !! to%parent + type(json_value),pointer,optional :: previous !! to%previous + logical,optional :: tail !! if "to" is the tail of + !! its parent's children + + nullify(to) + + if (associated(from)) then + + allocate(to) + + !copy over the data variables: + ! [note: the allocate() statements don't work here for the + ! deferred-length characters in gfortran-4.9] + if (allocated(from%name)) to%name = from%name + if (allocated(from%dbl_value)) allocate(to%dbl_value,source=from%dbl_value) + if (allocated(from%log_value)) allocate(to%log_value,source=from%log_value) + if (allocated(from%str_value)) to%str_value = from%str_value + if (allocated(from%int_value)) allocate(to%int_value,source=from%int_value) + to%var_type = from%var_type + to%n_children = from%n_children + + ! allocate and associate the pointers as necessary: + if (present(parent)) to%parent => parent + if (present(previous)) to%previous => previous + if (present(tail)) then + if (tail .and. associated(to%parent)) to%parent%tail => to + end if + + if (associated(from%next) .and. associated(to%parent)) then + ! we only clone the next entry in an array + ! if the parent has also been cloned + call json_value_clone_func(from = from%next,& + to = to%next,& + previous = to,& + parent = to%parent,& + tail = (.not. associated(from%next%next))) + end if + + if (associated(from%children)) then + call json_value_clone_func(from = from%children,& + to = to%children,& + parent = to,& + tail = (.not. associated(from%children%next))) + end if + + end if + + end subroutine json_value_clone_func +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Destroy the data within a [[json_value]], and reset type to `json_unknown`. + + pure subroutine destroy_json_data(d) + + implicit none + + type(json_value),intent(inout) :: d + + d%var_type = json_unknown + + if (allocated(d%log_value)) deallocate(d%log_value) + if (allocated(d%int_value)) deallocate(d%int_value) + if (allocated(d%dbl_value)) deallocate(d%dbl_value) + if (allocated(d%str_value)) deallocate(d%str_value) + + end subroutine destroy_json_data +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 2/13/2014 +! +! Returns information about a [[json_value]]. + + subroutine json_info(json,p,var_type,n_children,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + integer(IK),intent(out),optional :: var_type !! variable type + integer(IK),intent(out),optional :: n_children !! number of children + character(kind=CK,len=:),allocatable,intent(out),optional :: name !! variable name + + if (.not. json%exception_thrown .and. associated(p)) then + + if (present(var_type)) var_type = p%var_type + if (present(n_children)) n_children = json%count(p) + if (present(name)) then + if (allocated(p%name)) then + name = p%name + else + name = CK_'' + end if + end if + + else ! error + + if (.not. json%exception_thrown) then + call json%throw_exception('Error in json_info: '//& + 'pointer is not associated.' ) + end if + if (present(var_type)) var_type = json_unknown + if (present(n_children)) n_children = 0 + if (present(name)) name = CK_'' + + end if + + end subroutine json_info +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/18/2016 +! +! Returns information about character strings returned from a [[json_value]]. + + subroutine json_string_info(json,p,ilen,max_str_len,found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + integer(IK),dimension(:),allocatable,intent(out),optional :: ilen !! if `p` is an array, this + !! is the actual length + !! of each character + !! string in the array. + !! if not an array, this + !! is returned unallocated. + integer(IK),intent(out),optional :: max_str_len !! The maximum length required to + !! hold the string representation returned + !! by a call to a `get` routine. If a scalar, + !! this is just the length of the scalar. If + !! a vector, this is the maximum length of + !! any element. + logical(LK),intent(out),optional :: found !! true if there were no errors. + !! if not present, an error will + !! throw an exception + + character(kind=CK,len=:),allocatable :: cval !! for getting values as strings. + logical(LK) :: initialized !! if the output array has been sized + logical(LK) :: get_max_len !! if we are returning the `max_str_len` + logical(LK) :: get_ilen !! if we are returning the `ilen` array + integer(IK) :: var_type !! variable type + + get_max_len = present(max_str_len) + get_ilen = present(ilen) + + if (.not. json%exception_thrown) then + + if (present(found)) found = .true. + initialized = .false. + + if (get_max_len) max_str_len = 0 + + select case (p%var_type) + + case (json_array) ! it's an array + + ! call routine for each element + call json%get(p, array_callback=get_string_lengths) + + case default ! not an array + + if (json%strict_type_checking) then + ! only allowing strings to be returned + ! as strings, so we can check size directly + call json%info(p,var_type=var_type) + if (var_type==json_string) then + if (allocated(p%str_value) .and. get_max_len) & + max_str_len = len(p%str_value) + else + ! it isn't a string, so there is no length + call json%throw_exception('Error in json_string_info: '//& + 'When strict_type_checking is true '//& + 'the variable must be a character string.',& + found) + end if + else + ! in this case, we have to get the value + ! as a string to know what size it is. + call json%get(p, value=cval) + if (.not. json%exception_thrown) then + if (allocated(cval) .and. get_max_len) & + max_str_len = len(cval) + end if + end if + + end select + + end if + + if (json%exception_thrown) then + if (present(found)) then + call json%clear_exceptions() + found = .false. + end if + if (get_max_len) max_str_len = 0 + if (get_ilen) then + if (allocated(ilen)) deallocate(ilen) + end if + end if + + contains + + subroutine get_string_lengths(json, element, i, count) + + !! callback function to call for each element in the array. + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: element + integer(IK),intent(in) :: i !! index + integer(IK),intent(in) :: count !! size of array + + character(kind=CK,len=:),allocatable :: cval + integer(IK) :: var_type + + if (json%exception_thrown) return + + if (.not. initialized) then + if (get_ilen) allocate(ilen(count)) + initialized = .true. + end if + + if (json%strict_type_checking) then + ! only allowing strings to be returned + ! as strings, so we can check size directly + call json%info(element,var_type=var_type) + if (var_type==json_string) then + if (allocated(element%str_value)) then + if (get_max_len) then + if (len(element%str_value)>max_str_len) & + max_str_len = len(element%str_value) + end if + if (get_ilen) ilen(i) = len(element%str_value) + else + if (get_ilen) ilen(i) = 0 + end if + else + ! it isn't a string, so there is no length + call json%throw_exception('Error in json_string_info: '//& + 'When strict_type_checking is true '//& + 'the array must contain only '//& + 'character strings.',found) + end if + else + ! in this case, we have to get the value + ! as a string to know what size it is. + call json%get(element, value=cval) + if (json%exception_thrown) return + if (allocated(cval)) then + if (get_max_len) then + if (len(cval)>max_str_len) max_str_len = len(cval) + end if + if (get_ilen) ilen(i) = len(cval) + else + if (get_ilen) ilen(i) = 0 + end if + end if + + end subroutine get_string_lengths + + end subroutine json_string_info +!***************************************************************************************** + +!***************************************************************************************** +! +! Returns information about a [[json_value]], given the path. +! +!### See also +! * [[json_info]] +! +!@note If `found` is present, no exceptions will be thrown if an +! error occurs. Otherwise, an exception will be thrown if the +! variable is not found. + + subroutine json_info_by_path(json,p,path,found,var_type,n_children,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! a JSON linked list + character(kind=CK,len=*),intent(in) :: path !! path to the variable + logical(LK),intent(out),optional :: found !! true if it was found + integer(IK),intent(out),optional :: var_type !! variable type + integer(IK),intent(out),optional :: n_children !! number of children + character(kind=CK,len=:),allocatable,intent(out),optional :: name !! variable name + + type(json_value),pointer :: p_var !! temporary pointer + logical(LK) :: ok !! if the variable was found +#if defined __GFORTRAN__ + character(kind=CK,len=:),allocatable :: p_name !! temporary variable for getting name +#endif + + call json%get(p,path,p_var,found) + + !check if it was found: + if (present(found)) then + ok = found + else + ok = .not. json%exception_thrown + end if + + if (.not. ok) then + if (present(var_type)) var_type = json_unknown + if (present(n_children)) n_children = 0 + if (present(name)) name = CK_'' + else + !get info: + +#if defined __GFORTRAN__ + call json%info(p_var,var_type,n_children) + if (present(name)) then !workaround for gfortran bug + if (allocated(p_var%name)) then + p_name = p_var%name + name = p_name + else + name = CK_'' + end if + end if +#else + call json%info(p_var,var_type,n_children,name) +#endif + + end if + + end subroutine json_info_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_info_by_path]] where "path" is kind=CDK. + + subroutine wrap_json_info_by_path(json,p,path,found,var_type,n_children,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! a JSON linked list + character(kind=CDK,len=*),intent(in) :: path !! path to the variable + logical(LK),intent(out),optional :: found !! true if it was found + integer(IK),intent(out),optional :: var_type !! variable type + integer(IK),intent(out),optional :: n_children !! number of children + character(kind=CK,len=:),allocatable,intent(out),optional :: name !! variable name + + call json%info(p,to_unicode(path),found,var_type,n_children,name) + + end subroutine wrap_json_info_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 10/16/2015 +! +! Alternate version of [[json_info]] that returns matrix +! information about a [[json_value]]. +! +! A [[json_value]] is a valid rank 2 matrix if all of the following are true: +! +! * The var_type is *json_array* +! * Each child is also a *json_array*, each of which has the same number of elements +! * Each individual element has the same variable type (integer, logical, etc.) +! +! The idea here is that if it is a valid matrix, it can be interoperable with +! a Fortran rank 2 array of the same type. +! +!### Example +! +! The following example is an array with `var_type=json_integer`, +! `n_sets=3`, and `set_size=4` +! +!```json +! { +! "matrix": [ +! [1,2,3,4], +! [5,6,7,8], +! [9,10,11,12] +! ] +! } +!``` + + subroutine json_matrix_info(json,p,is_matrix,var_type,n_sets,set_size,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p !! a JSON linked list + logical(LK),intent(out) :: is_matrix !! true if it is a valid matrix + integer(IK),intent(out),optional :: var_type !! variable type of data in the matrix + !! (if all elements have the same type) + integer(IK),intent(out),optional :: n_sets !! number of data sets (i.e., matrix + !! rows if using row-major order) + integer(IK),intent(out),optional :: set_size !! size of each data set (i.e., matrix + !! cols if using row-major order) + character(kind=CK,len=:),allocatable,intent(out),optional :: name !! variable name + + type(json_value),pointer :: p_row !! for getting a set + type(json_value),pointer :: p_element !! for getting an element in a set + integer(IK) :: vartype !! json variable type of `p` + integer(IK) :: row_vartype !! json variable type of a row + integer(IK) :: element_vartype !! json variable type of an element in a row + integer(IK) :: nr !! number of children of `p` + integer(IK) :: nc !! number of elements in first child of `p` + integer(IK) :: icount !! number of elements in a set + integer(IK) :: i !! counter + integer(IK) :: j !! counter +#if defined __GFORTRAN__ + character(kind=CK,len=:),allocatable :: p_name !! temporary variable for getting name +#endif + + !get info about the variable: +#if defined __GFORTRAN__ + call json%info(p,vartype,nr) + if (present(name)) then !workaround for gfortran bug + if (allocated(p%name)) then + p_name = p%name + name = p_name + else + name = CK_'' + end if + end if +#else + call json%info(p,vartype,nr,name) +#endif + + is_matrix = (vartype==json_array) + + if (is_matrix) then + + main : do i=1,nr + + nullify(p_row) + call json%get_child(p,i,p_row) + if (.not. associated(p_row)) then + is_matrix = .false. + call json%throw_exception('Error in json_matrix_info: '//& + 'Malformed JSON linked list') + exit main + end if + call json%info(p_row,var_type=row_vartype,n_children=icount) + + if (row_vartype==json_array) then + if (i==1) nc = icount !number of columns in first row + if (icount==nc) then !make sure each row has the same number of columns + !see if all the variables in this row are the same type: + do j=1,icount + nullify(p_element) + call json%get_child(p_row,j,p_element) + if (.not. associated(p_element)) then + is_matrix = .false. + call json%throw_exception('Error in json_matrix_info: '//& + 'Malformed JSON linked list') + exit main + end if + call json%info(p_element,var_type=element_vartype) + if (i==1 .and. j==1) vartype = element_vartype !type of first element + !in the row + if (vartype/=element_vartype) then + !not all variables are the same time + is_matrix = .false. + exit main + end if + end do + else + is_matrix = .false. + exit main + end if + else + is_matrix = .false. + exit main + end if + + end do main + + end if + + if (is_matrix) then + if (present(var_type)) var_type = vartype + if (present(n_sets)) n_sets = nr + if (present(set_size)) set_size = nc + else + if (present(var_type)) var_type = json_unknown + if (present(n_sets)) n_sets = 0 + if (present(set_size)) set_size = 0 + end if + + end subroutine json_matrix_info +!***************************************************************************************** + +!***************************************************************************************** +!> +! Returns matrix information about a [[json_value]], given the path. +! +!### See also +! * [[json_matrix_info]] +! +!@note If `found` is present, no exceptions will be thrown if an +! error occurs. Otherwise, an exception will be thrown if the +! variable is not found. + + subroutine json_matrix_info_by_path(json,p,path,is_matrix,found,& + var_type,n_sets,set_size,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p !! a JSON linked list + character(kind=CK,len=*),intent(in) :: path !! path to the variable + logical(LK),intent(out) :: is_matrix !! true if it is a valid matrix + logical(LK),intent(out),optional :: found !! true if it was found + integer(IK),intent(out),optional :: var_type !! variable type of data in + !! the matrix (if all elements have + !! the same type) + integer(IK),intent(out),optional :: n_sets !! number of data sets (i.e., matrix + !! rows if using row-major order) + integer(IK),intent(out),optional :: set_size !! size of each data set (i.e., matrix + !! cols if using row-major order) + character(kind=CK,len=:),allocatable,intent(out),optional :: name !! variable name + + type(json_value),pointer :: p_var + logical(LK) :: ok +#if defined __GFORTRAN__ + character(kind=CK,len=:),allocatable :: p_name !! temporary variable for getting name +#endif + + call json%get(p,path,p_var,found) + + !check if it was found: + if (present(found)) then + ok = found + else + ok = .not. json%exception_thrown + end if + + if (.not. ok) then + if (present(var_type)) var_type = json_unknown + if (present(n_sets)) n_sets = 0 + if (present(set_size)) set_size = 0 + if (present(name)) name = CK_'' + else + + !get info about the variable: +#if defined __GFORTRAN__ + call json%matrix_info(p_var,is_matrix,var_type,n_sets,set_size) + if (present(name)) then !workaround for gfortran bug + if (allocated(p_var%name)) then + p_name = p_var%name + name = p_name + else + name = CK_'' + end if + end if +#else + call json%matrix_info(p_var,is_matrix,var_type,n_sets,set_size,name) +#endif + if (json%exception_thrown .and. present(found)) then + found = .false. + call json%clear_exceptions() + end if + end if + + end subroutine json_matrix_info_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_matrix_info_by_path]] where "path" is kind=CDK. + + subroutine wrap_json_matrix_info_by_path(json,p,path,is_matrix,found,& + var_type,n_sets,set_size,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p !! a JSON linked list + character(kind=CDK,len=*),intent(in) :: path !! path to the variable + logical(LK),intent(out) :: is_matrix !! true if it is a valid matrix + logical(LK),intent(out),optional :: found !! true if it was found + integer(IK),intent(out),optional :: var_type !! variable type of data in + !! the matrix (if all elements have + !! the same type) + integer(IK),intent(out),optional :: n_sets !! number of data sets (i.e., matrix + !! rows if using row-major order) + integer(IK),intent(out),optional :: set_size !! size of each data set (i.e., matrix + !! cols if using row-major order) + character(kind=CK,len=:),allocatable,intent(out),optional :: name !! variable name + + call json%matrix_info(p,to_unicode(path),is_matrix,found,var_type,n_sets,set_size,name) + + end subroutine wrap_json_matrix_info_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 4/29/2016 +! +! Rename a [[json_value]]. + + subroutine json_value_rename(json,p,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p + character(kind=CK,len=*),intent(in) :: name !! new variable name + + if (json%trailing_spaces_significant) then + p%name = name + else + p%name = trim(name) + end if + + end subroutine json_value_rename +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 4/29/2016 +! +! Alternate version of [[json_value_rename]], where `name` is kind=CDK. + + subroutine wrap_json_value_rename(json,p,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p + character(kind=CDK,len=*),intent(in) :: name !! new variable name + + call json%rename(p,to_unicode(name)) + + end subroutine wrap_json_value_rename +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/4/2013 +! +! Clear exceptions in the [[json_core(type)]]. + + pure subroutine json_clear_exceptions(json) + + implicit none + + class(json_core),intent(inout) :: json + + !clear the flag and message: + json%exception_thrown = .false. + if (allocated(json%err_message)) deallocate(json%err_message) + + end subroutine json_clear_exceptions +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/4/2013 +! +! Throw an exception in the [[json_core(type)]]. +! This routine sets the error flag, and prevents any subsequent routine +! from doing anything, until [[json_clear_exceptions]] is called. +! +!@note If `is_verbose` is true, this will also print a +! traceback if the Intel compiler is used. +! +!@note If `stop_on_error` is true, then the program is stopped. + + subroutine json_throw_exception(json,msg,found) + +#ifdef __INTEL_COMPILER + use ifcore, only: tracebackqq +#endif + + implicit none + + class(json_core),intent(inout) :: json + character(kind=CK,len=*),intent(in) :: msg !! the error message + logical(LK),intent(inout),optional :: found !! if the caller is handling the + !! exception with an optimal return + !! argument. If so, `json%stop_on_error` + !! is ignored. + + logical(LK) :: stop_on_error + + json%exception_thrown = .true. + json%err_message = trim(msg) + stop_on_error = json%stop_on_error .and. .not. present(found) + + if (stop_on_error) then + +#ifdef __INTEL_COMPILER + ! for Intel, we raise a traceback and quit + call tracebackqq(string=trim(msg), user_exit_code=0) +#else + write(error_unit,'(A)') 'JSON-Fortran Exception: '//trim(msg) + error stop 1 +#endif + + elseif (json%is_verbose) then + + write(output_unit,'(A)') '***********************' + write(output_unit,'(A)') 'JSON-Fortran Exception: '//trim(msg) + +!#if defined __GFORTRAN__ +! call backtrace() ! (have to compile with -fbacktrace -fall-intrinsics flags) +!#endif + +#ifdef __INTEL_COMPILER + call tracebackqq(user_exit_code=-1) ! print a traceback and return +#endif + + write(output_unit,'(A)') '***********************' + + end if + + end subroutine json_throw_exception +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_throw_exception]], where `msg` is kind=CDK. + + subroutine wrap_json_throw_exception(json,msg,found) + + implicit none + + class(json_core),intent(inout) :: json + character(kind=CDK,len=*),intent(in) :: msg !! the error message + logical(LK),intent(inout),optional :: found !! if the caller is handling the + !! exception with an optimal return + !! argument. If so, `json%stop_on_error` + !! is ignored. + + call json%throw_exception(to_unicode(msg),found) + + end subroutine wrap_json_throw_exception +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/4/2013 +! +! Retrieve error code from the [[json_core(type)]]. +! This should be called after `parse` to check for errors. +! If an error is thrown, before using the class again, [[json_initialize]] +! should be called to clean up before it is used again. +! +!### Example +! +!````fortran +! type(json_file) :: json +! logical :: status_ok +! character(kind=CK,len=:),allocatable :: error_msg +! call json%load(filename='myfile.json') +! call json%check_for_errors(status_ok, error_msg) +! if (.not. status_ok) then +! write(*,*) 'Error: '//error_msg +! call json%clear_exceptions() +! call json%destroy() +! end if +!```` +! +!### See also +! * [[json_failed]] +! * [[json_throw_exception]] + + subroutine json_check_for_errors(json,status_ok,error_msg) + + implicit none + + class(json_core),intent(in) :: json + logical(LK),intent(out),optional :: status_ok !! true if there were no errors + character(kind=CK,len=:),allocatable,intent(out),optional :: error_msg !! the error message. + !! (not allocated if + !! there were no errors) + +#if defined __GFORTRAN__ + character(kind=CK,len=:),allocatable :: tmp !! workaround for gfortran bugs +#endif + + if (present(status_ok)) status_ok = .not. json%exception_thrown + + if (present(error_msg)) then + if (json%exception_thrown) then + ! if an exception has been thrown, + ! then this will always be allocated + ! [see json_throw_exception] +#if defined __GFORTRAN__ + tmp = json%err_message + error_msg = tmp +#else + error_msg = json%err_message +#endif + end if + end if + + end subroutine json_check_for_errors +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/5/2013 +! +! Logical function to indicate if an exception has been thrown in a [[json_core(type)]]. +! +!### Example +! +!````fortran +! type(json_core) :: json +! type(json_value),pointer :: p +! logical :: status_ok +! character(len=:),allocatable :: error_msg +! call json%load(filename='myfile.json',p) +! if (json%failed()) then +! call json%check_for_errors(status_ok, error_msg) +! write(*,*) 'Error: '//error_msg +! call json%clear_exceptions() +! call json%destroy(p) +! end if +!```` +! +! Note that [[json_file]] contains a wrapper for this routine, which is used like: +!````fortran +! type(json_file) :: f +! logical :: status_ok +! character(len=:),allocatable :: error_msg +! call f%load(filename='myfile.json') +! if (f%failed()) then +! call f%check_for_errors(status_ok, error_msg) +! write(*,*) 'Error: '//error_msg +! call f%clear_exceptions() +! call f%destroy() +! end if +!```` +! +!### See also +! * [[json_check_for_errors]] + + pure function json_failed(json) result(failed) + + implicit none + + class(json_core),intent(in) :: json + logical(LK) :: failed !! will be true if an exception + !! has been thrown. + + failed = json%exception_thrown + + end function json_failed +!***************************************************************************************** + +!***************************************************************************************** +!> +! Allocate a [[json_value]] pointer variable. +! This should be called before adding data to it. +! +!### Example +! +!````fortran +! type(json_value),pointer :: var +! call json_value_create(var) +! call json%to_real(var,1.0_RK) +!```` +! +!### Notes +! 1. This routine does not check for exceptions. +! 2. The pointer should not already be allocated, or a memory leak will occur. + + subroutine json_value_create(p) + + implicit none + + type(json_value),pointer :: p + + nullify(p) + allocate(p) + + end subroutine json_value_create +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/22/2014 +! +! Destroy a [[json_value]] linked-list structure. +! +!@note The original FSON version of this +! routine was not properly freeing the memory. +! It was rewritten. +! +!@note This routine destroys this variable, it's children, and +! (if `destroy_next` is true) the subsequent elements in +! an object or array. It does not destroy the parent or +! previous elements. +! +!@Note There is some protection here to enable destruction of +! improperly-created linked lists. However, likely there +! are cases not handled. Use the [[json_value_validate]] +! method to validate a JSON structure that was manually +! created using [[json_value]] pointers. + + pure recursive subroutine json_value_destroy(json,p,destroy_next) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p !! variable to destroy + logical(LK),intent(in),optional :: destroy_next !! if true, then `p%next` + !! is also destroyed (default is true) + + logical(LK) :: des_next !! local copy of `destroy_next` + !! optional argument + type(json_value),pointer :: child !! for getting child elements + logical :: circular !! to check to malformed linked lists + + if (associated(p)) then + + if (present(destroy_next)) then + des_next = destroy_next + else + des_next = .true. + end if + + if (allocated(p%name)) deallocate(p%name) + + call destroy_json_data(p) + + if (associated(p%next)) then + ! check for circular references: + if (associated(p, p%next)) nullify(p%next) + end if + + if (associated(p%children)) then + do while (p%n_children > 0) + child => p%children + if (associated(child)) then + p%children => p%children%next + p%n_children = p%n_children - 1 + ! check children for circular references: + circular = (associated(p%children) .and. & + associated(p%children,child)) + call json%destroy(child,destroy_next=.false.) + if (circular) exit + else + ! it is a malformed JSON object. But, we will + ! press ahead with the destroy process, since + ! otherwise, there would be no way to destroy it. + exit + end if + end do + nullify(p%children) + nullify(child) + end if + + if (associated(p%next) .and. des_next) call json%destroy(p%next) + + nullify(p%previous) + nullify(p%parent) + nullify(p%tail) + + if (associated(p)) deallocate(p) + nullify(p) + + end if + + end subroutine json_value_destroy +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 9/9/2014 +! +! Remove a [[json_value]] (and all its children) +! from a linked-list structure, preserving the rest of the structure. +! +!### Examples +! +! To extract an object from one JSON structure, and add it to another: +!````fortran +! type(json_core) :: json +! type(json_value),pointer :: json1,json2,p +! logical :: found +! !create and populate json1 and json2 +! call json%get(json1,'name',p,found) ! get pointer to name element of json1 +! call json%remove(p,destroy=.false.) ! remove it from json1 (don't destroy) +! call json%add(json2,p) ! add it to json2 +!```` +! +! To remove an object from a JSON structure (and destroy it): +!````fortran +! type(json_core) :: json +! type(json_value),pointer :: json1,p +! logical :: found +! !create and populate json1 +! call json%get(json1,'name',p,found) ! get pointer to name element of json1 +! call json%remove(p) ! remove and destroy it +!```` +! +!### History +! * Jacob Williams : 12/28/2014 : added destroy optional argument. +! * Jacob Williams : 12/04/2020 : bug fix. + + subroutine json_value_remove(json,p,destroy) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + logical(LK),intent(in),optional :: destroy !! Option to destroy `p` after it is removed: + !! + !! * If `destroy` is not present, it is also destroyed. + !! * If `destroy` is present and true, it is destroyed. + !! * If `destroy` is present and false, it is not destroyed. + + type(json_value),pointer :: parent !! pointer to parent + type(json_value),pointer :: previous !! pointer to previous + type(json_value),pointer :: next !! pointer to next + logical(LK) :: destroy_it !! if `p` should be destroyed + + if (associated(p)) then + + !optional input argument: + if (present(destroy)) then + destroy_it = destroy + else + destroy_it = .true. + end if + + if (associated(p%parent)) then + + parent => p%parent + + if (associated(p%next)) then + + !there are later items in the list: + next => p%next + + if (associated(p%previous)) then + !there are earlier items in the list + previous => p%previous + previous%next => next + next%previous => previous + else + !this is the first item in the list + parent%children => next + nullify(next%previous) + end if + + else + + if (associated(p%previous)) then + !there are earlier items in the list: + previous => p%previous + nullify(previous%next) + parent%tail => previous + else + !this is the only item in the list: + nullify(parent%children) + nullify(parent%tail) + end if + + end if + + ! nullify all pointers to original structure: + nullify(p%next) + nullify(p%previous) + nullify(p%parent) + + parent%n_children = parent%n_children - 1 + + end if + + if (destroy_it) call json%destroy(p) + + end if + + end subroutine json_value_remove +!***************************************************************************************** + +!***************************************************************************************** +!> +! Replace `p1` with `p2` in a JSON structure. +! +!@note The replacement is done using an insert and remove +! See [[json_value_insert_after]] and [[json_value_remove]] +! for details. + + subroutine json_value_replace(json,p1,p2,destroy) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p1 !! the item to replace + type(json_value),pointer :: p2 !! item to take the place of `p1` + logical(LK),intent(in),optional :: destroy !! Should `p1` also be destroyed + !! (default is True). Normally, + !! this should be true to avoid + !! a memory leak. + + logical(LK) :: destroy_p1 !! if `p1` is to be destroyed + + if (present(destroy)) then + destroy_p1 = destroy + else + destroy_p1 = .true. ! default + end if + + call json%insert_after(p1,p2) + call json%remove(p1,destroy_p1) + + end subroutine json_value_replace +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 4/11/2017 +! +! Reverse the order of the children of an array or object. + + subroutine json_value_reverse(json,p) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + + type(json_value),pointer :: tmp !! temp variable for traversing the list + type(json_value),pointer :: current !! temp variable for traversing the list + integer(IK) :: var_type !! for getting the variable type + + if (associated(p)) then + + call json%info(p,var_type=var_type) + + ! can only reverse objects or arrays + if (var_type==json_object .or. var_type==json_array) then + + nullify(tmp) + current => p%children + p%tail => current + + ! Swap next and previous for all nodes: + do + if (.not. associated(current)) exit + tmp => current%previous + current%previous => current%next + current%next => tmp + current => current%previous + end do + + if (associated(tmp)) then + p%children => tmp%previous + end if + + end if + + end if + + end subroutine json_value_reverse +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 4/26/2016 +! +! Swap two elements in a JSON structure. +! All of the children are carried along as well. +! +!@note If both are not associated, then an error is thrown. +! +!@note The assumption here is that both variables are part of a valid +! [[json_value]] linked list (so the normal `parent`, `previous`, +! `next`, etc. pointers are properly associated if necessary). +! +!@warning This cannot be used to swap a parent/child pair, since that +! could lead to a circular linkage. An exception is thrown if +! this is tried. +! +!@warning There are also other situations where using this routine may +! produce a malformed JSON structure, such as moving an array +! element outside of an array. This is not checked for. +! +!@note If `p1` and `p2` have a common parent, it is always safe to swap them. + + subroutine json_value_swap(json,p1,p2) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p1 !! swap with `p2` + type(json_value),pointer :: p2 !! swap with `p1` + + logical :: same_parent !! if `p1` and `p2` have the same parent + logical :: first_last !! if `p1` and `p2` are the first,last or + !! last,first children of a common parent + logical :: adjacent !! if `p1` and `p2` are adjacent + !! elements in an array + type(json_value),pointer :: a !! temporary variable + type(json_value),pointer :: b !! temporary variable + + if (json%exception_thrown) return + + !both have to be associated: + if (associated(p1) .and. associated(p2)) then + + !simple check to make sure that they both + !aren't pointing to the same thing: + if (.not. associated(p1,p2)) then + + !we will not allow swapping an item with one of its descendants: + if (json%is_child_of(p1,p2) .or. json%is_child_of(p2,p1)) then + call json%throw_exception('Error in json_value_swap: '//& + 'cannot swap an item with one of its descendants') + else + + same_parent = ( associated(p1%parent) .and. & + associated(p2%parent) .and. & + associated(p1%parent,p2%parent) ) + if (same_parent) then + first_last = (associated(p1%parent%children,p1) .and. & + associated(p2%parent%tail,p2)) .or. & + (associated(p1%parent%tail,p1) .and. & + associated(p2%parent%children,p2)) + else + first_last = .false. + end if + + !first, we fix children,tail pointers: + + if (same_parent .and. first_last) then + + !this is all we have to do for the parent in this case: + call swap_pointers(p1%parent%children,p2%parent%tail) + + else if (same_parent .and. .not. first_last) then + + if (associated(p1%parent%children,p1)) then + p1%parent%children => p2 ! p1 is the first child of the parent + else if (associated(p1%parent%children,p2)) then + p1%parent%children => p1 ! p2 is the first child of the parent + end if + if (associated(p1%parent%tail,p1)) then + p1%parent%tail => p2 ! p1 is the last child of the parent + else if (associated(p1%parent%tail,p2)) then + p1%parent%tail => p1 ! p2 is the last child of the parent + end if + + else ! general case: different parents + + if (associated(p1%parent)) then + if (associated(p1%parent%children,p1)) p1%parent%children => p2 + if (associated(p1%parent%tail,p1)) p1%parent%tail => p2 + end if + if (associated(p2%parent)) then + if (associated(p2%parent%children,p2)) p2%parent%children => p1 + if (associated(p2%parent%tail,p2)) p2%parent%tail => p1 + end if + call swap_pointers(p1%parent, p2%parent) + + end if + + !now, have to fix previous,next pointers: + + !first, see if they are adjacent: + adjacent = associated(p1%next,p2) .or. & + associated(p2%next,p1) + if (associated(p2%next,p1)) then !p2,p1 + a => p2 + b => p1 + else !p1,p2 (or not adjacent) + a => p1 + b => p2 + end if + if (associated(a%previous)) a%previous%next => b + if (associated(b%next)) b%next%previous => a + + if (adjacent) then + !a comes before b in the original list + b%previous => a%previous + a%next => b%next + a%previous => b + b%next => a + else + if (associated(a%next)) a%next%previous => b + if (associated(b%previous)) b%previous%next => a + call swap_pointers(a%previous,b%previous) + call swap_pointers(a%next, b%next) + end if + + end if + + else + call json%throw_exception('Error in json_value_swap: '//& + 'both pointers must be associated') + end if + + end if + + contains + + pure subroutine swap_pointers(s1,s2) + + implicit none + + type(json_value),pointer,intent(inout) :: s1 + type(json_value),pointer,intent(inout) :: s2 + + type(json_value),pointer :: tmp !! temporary pointer + + if (.not. associated(s1,s2)) then + tmp => s1 + s1 => s2 + s2 => tmp + end if + + end subroutine swap_pointers + + end subroutine json_value_swap +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 4/28/2016 +! +! Returns True if `p2` is a descendant of `p1` +! (i.e, a child, or a child of child, etc.) + + function json_value_is_child_of(json,p1,p2) result(is_child_of) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p1 + type(json_value),pointer :: p2 + logical(LK) :: is_child_of + + is_child_of = .false. + + if (json%exception_thrown) return + + if (associated(p1) .and. associated(p2)) then + if (associated(p1%children)) then + call json%traverse(p1%children,is_child_of_callback) + end if + end if + + contains + + subroutine is_child_of_callback(json,p,finished) + !! Traverse until `p` is `p2`. + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p + logical(LK),intent(out) :: finished + + is_child_of = associated(p,p2) + finished = is_child_of ! stop searching if found + + end subroutine is_child_of_callback + + end function json_value_is_child_of +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 5/2/2016 +! +! Validate a [[json_value]] linked list by checking to make sure +! all the pointers are properly associated, arrays and objects +! have the correct number of children, and the correct data is +! allocated for the variable types. +! +! It recursively traverses the entire structure and checks every element. +! +!### History +! * Jacob Williams, 8/26/2017 : added duplicate key check. +! +!@note It will return on the first error it encounters. +! +!@note This routine does not check or throw any exceptions. +! If `json` is currently in a state of exception, it will +! remain so after calling this routine. + + subroutine json_value_validate(json,p,is_valid,error_msg) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p + logical(LK),intent(out) :: is_valid !! True if the structure is valid. + character(kind=CK,len=:),allocatable,intent(out) :: error_msg !! if not valid, this will contain + !! a description of the problem + + logical(LK) :: has_duplicate !! to check for duplicate keys + character(kind=CK,len=:),allocatable :: path !! path to duplicate key + logical(LK) :: status_ok !! to check for existing exception + character(kind=CK,len=:),allocatable :: exception_msg !! error message for an existing exception + character(kind=CK,len=:),allocatable :: exception_msg2 !! error message for a new exception + + if (associated(p)) then + + is_valid = .true. + call check_if_valid(p,require_parent=associated(p%parent)) + + if (is_valid .and. .not. json%allow_duplicate_keys) then + ! if no errors so far, also check the + ! entire structure for duplicate keys: + + ! note: check_for_duplicate_keys does call routines + ! that check and throw exceptions, so let's clear any + ! first. (save message for later) + call json%check_for_errors(status_ok, exception_msg) + call json%clear_exceptions() + + call json%check_for_duplicate_keys(p,has_duplicate,path=path) + if (json%failed()) then + ! if an exception was thrown during this call, + ! then clear it but make that the error message + ! returned by this routine. Normally this should + ! never actually occur since we have already + ! validated the structure. + call json%check_for_errors(is_valid, exception_msg2) + error_msg = exception_msg2 + call json%clear_exceptions() + is_valid = .false. + else + if (has_duplicate) then + error_msg = 'duplicate key found: '//path + is_valid = .false. + end if + end if + + if (.not. status_ok) then + ! restore any existing exception if necessary + call json%throw_exception(exception_msg) + end if + + ! cleanup: + if (allocated(path)) deallocate(path) + if (allocated(exception_msg)) deallocate(exception_msg) + if (allocated(exception_msg2)) deallocate(exception_msg2) + + end if + + else + error_msg = 'The pointer is not associated' + is_valid = .false. + end if + + contains + + recursive subroutine check_if_valid(p,require_parent) + + implicit none + + type(json_value),pointer,intent(in) :: p + logical,intent(in) :: require_parent !! the first one may be a root (so no parent), + !! but all descendants must have a parent. + + integer(IK) :: i !! counter + type(json_value),pointer :: element + type(json_value),pointer :: previous + + if (is_valid .and. associated(p)) then + + ! data type: + select case (p%var_type) + case(json_null,json_object,json_array) + if (allocated(p%log_value) .or. allocated(p%int_value) .or. & + allocated(p%dbl_value) .or. allocated(p%str_value)) then + error_msg = 'incorrect data allocated for '//& + 'json_null, json_object, or json_array variable type' + is_valid = .false. + return + end if + case(json_logical) + if (.not. allocated(p%log_value)) then + error_msg = 'log_value should be allocated for json_logical variable type' + is_valid = .false. + return + else if (allocated(p%int_value) .or. & + allocated(p%dbl_value) .or. allocated(p%str_value)) then + error_msg = 'incorrect data allocated for json_logical variable type' + is_valid = .false. + return + end if + case(json_integer) + if (.not. allocated(p%int_value)) then + error_msg = 'int_value should be allocated for json_integer variable type' + is_valid = .false. + return + else if (allocated(p%log_value) .or. & + allocated(p%dbl_value) .or. allocated(p%str_value)) then + error_msg = 'incorrect data allocated for json_integer variable type' + is_valid = .false. + return + end if + case(json_real) + if (.not. allocated(p%dbl_value)) then + error_msg = 'dbl_value should be allocated for json_real variable type' + is_valid = .false. + return + else if (allocated(p%log_value) .or. allocated(p%int_value) .or. & + allocated(p%str_value)) then + error_msg = 'incorrect data allocated for json_real variable type' + is_valid = .false. + return + end if + case(json_string) + if (.not. allocated(p%str_value)) then + error_msg = 'str_value should be allocated for json_string variable type' + is_valid = .false. + return + else if (allocated(p%log_value) .or. allocated(p%int_value) .or. & + allocated(p%dbl_value)) then + error_msg = 'incorrect data allocated for json_string variable type' + is_valid = .false. + return + end if + case default + error_msg = 'invalid JSON variable type' + is_valid = .false. + return + end select + + if (require_parent .and. .not. associated(p%parent)) then + error_msg = 'parent pointer is not associated' + is_valid = .false. + return + end if + + if (.not. allocated(p%name)) then + if (associated(p%parent)) then + if (p%parent%var_type/=json_array) then + error_msg = 'JSON variable must have a name if not an '//& + 'array element or the root' + is_valid = .false. + return + end if + end if + end if + + if (associated(p%children) .neqv. associated(p%tail)) then + error_msg = 'both children and tail pointers must be associated' + is_valid = .false. + return + end if + + ! now, check next one: + if (associated(p%next)) then + if (associated(p,p%next)) then + error_msg = 'circular linked list' + is_valid = .false. + return + else + ! if it's an element in an + ! array, then require a parent: + call check_if_valid(p%next,require_parent=.true.) + end if + end if + + if (associated(p%children)) then + + if (p%var_type/=json_array .and. p%var_type/=json_object) then + error_msg = 'only arrays and objects can have children' + is_valid = .false. + return + end if + + ! first validate children pointers: + + previous => null() + element => p%children + do i = 1_IK, p%n_children + if (.not. associated(element%parent,p)) then + error_msg = 'child''s parent pointer not properly associated' + is_valid = .false. + return + end if + if (i==1 .and. associated(element%previous)) then + error_msg = 'first child shouldn''t have a previous' + is_valid = .false. + return + end if + if (i1) then + if (.not. associated(previous,element%previous)) then + error_msg = 'previous pointer not properly associated' + is_valid = .false. + return + end if + end if + if (i==p%n_children .and. & + .not. associated(element%parent%tail,element)) then + error_msg = 'parent''s tail pointer not properly associated' + is_valid = .false. + return + end if + if (i element + element => element%next + end if + end do + + !now check all the children: + call check_if_valid(p%children,require_parent=.true.) + + end if + + end if + + end subroutine check_if_valid + + end subroutine json_value_validate +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/6/2014 +! +! Given the path string, remove the variable +! from [[json_value]], if it exists. + + subroutine json_value_remove_if_present(json,p,path) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: path !! the path to the variable to remove + + type(json_value),pointer :: p_var + logical(LK) :: found + + call json%get(p,path,p_var,found) + if (found) call json%remove(p_var) + + end subroutine json_value_remove_if_present +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_remove_if_present]], where `path` is kind=CDK. + + subroutine wrap_json_value_remove_if_present(json,p,path) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: path + + call json%remove_if_present(p,to_unicode(path)) + + end subroutine wrap_json_value_remove_if_present +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/6/2014 +! +! Given the path string, if the variable is present, +! and is a scalar, then update its value. +! If it is not present, then create it and set its value. +! +!@note If the variable is not a scalar, an exception will be thrown. + + subroutine json_update_logical(json,p,path,val,found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: path !! path to the variable in the structure + logical(LK),intent(in) :: val !! the new value + logical(LK),intent(out) :: found !! if the variable was found and was a scalar. + + type(json_value),pointer :: p_var + integer(IK) :: var_type + + call json%get(p,path,p_var,found) + if (found) then + + call json%info(p_var,var_type) + select case (var_type) + case (json_null,json_logical,json_integer,json_real,json_string) + call json%to_logical(p_var,val) !update the value + case default + found = .false. + call json%throw_exception('Error in json_update_logical: '//& + 'the variable is not a scalar value',found) + end select + + else + call json%add_by_path(p,path,val) !add the new element + end if + + end subroutine json_update_logical +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_update_logical]], where `path` is kind=CDK. + + subroutine wrap_json_update_logical(json,p,path,val,found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: path !! path to the variable in the structure + logical(LK),intent(in) :: val !! the new value + logical(LK),intent(out) :: found !! if the variable was found and was a scalar. + + call json%update(p,to_unicode(path),val,found) + + end subroutine wrap_json_update_logical +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/6/2014 +! +! Given the path string, if the variable is present, +! and is a scalar, then update its value. +! If it is not present, then create it and set its value. +! +!@note If the variable is not a scalar, an exception will be thrown. + + subroutine json_update_real(json,p,path,val,found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: path !! path to the variable in the structure + real(RK),intent(in) :: val !! the new value + logical(LK),intent(out) :: found !! if the variable was found and was a scalar. + + type(json_value),pointer :: p_var + integer(IK) :: var_type + + call json%get(p,path,p_var,found) + if (found) then + + call json%info(p_var,var_type) + select case (var_type) + case (json_null,json_logical,json_integer,json_real,json_string) + call json%to_real(p_var,val) !update the value + case default + found = .false. + call json%throw_exception('Error in json_update_real: '//& + 'the variable is not a scalar value',found) + end select + + else + call json%add_by_path(p,path,val) !add the new element + end if + + end subroutine json_update_real +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_update_real]], where `path` is kind=CDK. + + subroutine wrap_json_update_real(json,p,path,val,found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: path !! path to the variable in the structure + real(RK),intent(in) :: val !! the new value + logical(LK),intent(out) :: found !! if the variable was found and was a scalar. + + call json%update(p,to_unicode(path),val,found) + + end subroutine wrap_json_update_real +!***************************************************************************************** + +#ifndef REAL32 +!***************************************************************************************** +!> +! Alternate version of [[json_update_real]], where `val` is `real32`. + + subroutine json_update_real32(json,p,path,val,found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: path !! path to the variable in the structure + real(real32),intent(in) :: val !! the new value + logical(LK),intent(out) :: found !! if the variable was found and was a scalar. + + call json%update(p,path,real(val,RK),found) + + end subroutine json_update_real32 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_update_real32]], where `path` is kind=CDK. + + subroutine wrap_json_update_real32(json,p,path,val,found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: path !! path to the variable in the structure + real(real32),intent(in) :: val !! the new value + logical(LK),intent(out) :: found !! if the variable was found and was a scalar. + + call json%update(p,to_unicode(path),real(val,RK),found) + + end subroutine wrap_json_update_real32 +!***************************************************************************************** +#endif + +#ifdef REAL128 +!***************************************************************************************** +!> +! Alternate version of [[json_update_real]], where `val` is `real64`. + + subroutine json_update_real64(json,p,path,val,found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: path !! path to the variable in the structure + real(real64),intent(in) :: val !! the new value + logical(LK),intent(out) :: found !! if the variable was found and was a scalar. + + call json%update(p,path,real(val,RK),found) + + end subroutine json_update_real64 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_update_real64]], where `path` is kind=CDK. + + subroutine wrap_json_update_real64(json,p,path,val,found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: path !! path to the variable in the structure + real(real64),intent(in) :: val !! the new value + logical(LK),intent(out) :: found !! if the variable was found and was a scalar. + + call json%update(p,to_unicode(path),real(val,RK),found) + + end subroutine wrap_json_update_real64 +!***************************************************************************************** +#endif + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/6/2014 +! +! Given the path string, if the variable is present, +! and is a scalar, then update its value. +! If it is not present, then create it and set its value. +! +!@note If the variable is not a scalar, an exception will be thrown. + + subroutine json_update_integer(json,p,path,val,found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: path !! path to the variable in the structure + integer(IK),intent(in) :: val !! the new value + logical(LK),intent(out) :: found !! if the variable was found and was a scalar. + + type(json_value),pointer :: p_var + integer(IK) :: var_type + + call json%get(p,path,p_var,found) + if (found) then + + call json%info(p_var,var_type) + select case (var_type) + case (json_null,json_logical,json_integer,json_real,json_string) + call json%to_integer(p_var,val) !update the value + case default + found = .false. + call json%throw_exception('Error in json_update_integer: '//& + 'the variable is not a scalar value',found) + end select + + else + call json%add_by_path(p,path,val) !add the new element + end if + + end subroutine json_update_integer +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_update_integer]], where `path` is kind=CDK. + + subroutine wrap_json_update_integer(json,p,path,val,found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: path !! path to the variable in the structure + integer(IK),intent(in) :: val !! the new value + logical(LK),intent(out) :: found !! if the variable was found and was a scalar. + + call json%update(p,to_unicode(path),val,found) + + end subroutine wrap_json_update_integer +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/6/2014 +! +! Given the path string, if the variable is present, +! and is a scalar, then update its value. +! If it is not present, then create it and set its value. +! +!@note If the variable is not a scalar, an exception will be thrown. + + subroutine json_update_string(json,p,path,val,found,trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: path !! path to the variable in the structure + character(kind=CK,len=*),intent(in) :: val !! the new value + logical(LK),intent(out) :: found !! if the variable was found and was a scalar. + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + !! (only used if `val` is present) + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + !! (only used if `val` is present) + !! (note that ADJUSTL is done before TRIM) + + type(json_value),pointer :: p_var + integer(IK) :: var_type + + call json%get(p,path,p_var,found) + if (found) then + + call json%info(p_var,var_type) + select case (var_type) + case (json_null,json_logical,json_integer,json_real,json_string) + call json%to_string(p_var,val,trim_str=trim_str,adjustl_str=adjustl_str) ! update the value + case default + found = .false. + call json%throw_exception('Error in json_update_string: '//& + 'the variable is not a scalar value',found) + end select + + else + call json%add_by_path(p,path,val) !add the new element + end if + + end subroutine json_update_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_update_string]], where `path` and `value` are kind=CDK. + + subroutine wrap_json_update_string(json,p,path,val,found,trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: path !! path to the variable in the structure + character(kind=CDK,len=*),intent(in) :: val !! the new value + logical(LK),intent(out) :: found !! if the variable was found and was a scalar. + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + !! (only used if `val` is present) + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + !! (only used if `val` is present) + !! (note that ADJUSTL is done before TRIM) + + call json%update(p,to_unicode(path),to_unicode(val),found,trim_str,adjustl_str) + + end subroutine wrap_json_update_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_update_string]], where `path` is kind=CDK. + + subroutine json_update_string_name_ascii(json,p,path,val,found,trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: path !! path to the variable in the structure + character(kind=CK, len=*),intent(in) :: val !! the new value + logical(LK),intent(out) :: found !! if the variable was found and was a scalar. + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + !! (only used if `val` is present) + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + !! (only used if `val` is present) + !! (note that ADJUSTL is done before TRIM) + + call json%update(p,to_unicode(path),val,found,trim_str,adjustl_str) + + end subroutine json_update_string_name_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_update_string]], where `val` is kind=CDK. + + subroutine json_update_string_val_ascii(json,p,path,val,found,trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK, len=*),intent(in) :: path !! path to the variable in the structure + character(kind=CDK,len=*),intent(in) :: val !! the new value + logical(LK),intent(out) :: found !! if the variable was found and was a scalar. + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + !! (only used if `val` is present) + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + !! (only used if `val` is present) + !! (note that ADJUSTL is done before TRIM) + + call json%update(p,path,to_unicode(val),found,trim_str,adjustl_str) + + end subroutine json_update_string_val_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> +! Adds `member` as a child of `p`. + + subroutine json_value_add_member(json,p,member) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p !! `p` must be a `json_object` + !! or a `json_array` + type(json_value),pointer :: member !! the child member + !! to add to `p` + + integer(IK) :: var_type !! variable type of `p` + + if (.not. json%exception_thrown) then + + if (associated(p)) then + + call json%info(p,var_type=var_type) + + select case (var_type) + case(json_object, json_array) + + ! associate the parent + member%parent => p + + ! add to linked list + if (associated(p%children)) then + p%tail%next => member + member%previous => p%tail + else + p%children => member + member%previous => null() !first in the list + end if + + ! new member is now the last one in the list + p%tail => member + p%n_children = p%n_children + 1 + + case default + call json%throw_exception('Error in json_value_add_member: '//& + 'can only add child to object or array') + end select + + else + call json%throw_exception('Error in json_value_add_member: '//& + 'the pointer is not associated') + end if + + end if + + end subroutine json_value_add_member +!***************************************************************************************** + +!***************************************************************************************** +!> +! Inserts `element` after `p`, and updates the JSON structure accordingly. +! +!### Example +! +!````fortran +! program test +! use json_module +! implicit none +! logical(json_LK) :: found +! type(json_core) :: json +! type(json_value),pointer :: p,new,element +! call json%load(file='myfile.json', p=p) +! call json%get(p,'x(3)',element,found) ! get pointer to an array element in the file +! call json%create_integer(new,1,'') ! create a new element +! call json%insert_after(element,new) ! insert new element after x(3) +! call json%print(p,'myfile2.json') ! write it to a file +! call json%destroy(p) ! cleanup +! end program test +!```` +! +!### Details +! +! * This routine can be used to insert a new element (or set of elements) +! into an array or object at a specific index. +! See [[json_value_insert_after_child_by_index]] +! * Children and subsequent elements of `element` are carried along. +! * If the inserted elements are part of an existing list, then +! they are removed from that list. +! +!```` +! p +! [1] - [2] - [3] - [4] +! | +! [5] - [6] - [7] n=3 elements inserted +! element last +! +! Result is: +! +! [1] - [2] - [5] - [6] - [7] - [3] - [4] +! +!```` + + subroutine json_value_insert_after(json,p,element) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p !! a value from a JSON structure + !! (presumably, this is a child of + !! an object or array). + type(json_value),pointer :: element !! the element to insert after `p` + + type(json_value),pointer :: parent !! the parent of `p` + type(json_value),pointer :: next !! temp pointer for traversing structure + type(json_value),pointer :: last !! the last of the items being inserted + integer :: n !! number of items being inserted + + if (.not. json%exception_thrown) then + + parent => p%parent + + ! set first parent of inserted list: + element%parent => parent + + ! Count the number of inserted elements. + ! and set their parents. + n = 1 ! initialize counter + next => element%next + last => element + do + if (.not. associated(next)) exit + n = n + 1 + next%parent => parent + last => next + next => next%next + end do + + if (associated(parent)) then + ! update parent's child counter: + parent%n_children = parent%n_children + n + ! if p is last of parents children then + ! also have to update parent tail pointer: + if (associated(parent%tail,p)) then + parent%tail => last + end if + end if + + if (associated(element%previous)) then + ! element is apparently part of an existing list, + ! so have to update that as well. + if (associated(element%previous%parent)) then + element%previous%parent%n_children = & + element%previous%parent%n_children - n + element%previous%parent%tail => & + element%previous ! now the last one in the list + else + ! this would be a memory leak if the previous entries + ! are not otherwise being pointed too + ! [throw an error in this case???] + end if + !remove element from the other list: + element%previous%next => null() + end if + element%previous => p + + if (associated(p%next)) then + ! if there are any in the list after p: + last%next => p%next + last%next%previous => element + else + last%next => null() + end if + p%next => element + + end if + + end subroutine json_value_insert_after +!***************************************************************************************** + +!***************************************************************************************** +!> +! Inserts `element` after the `idx`-th child of `p`, +! and updates the JSON structure accordingly. This is just +! a wrapper for [[json_value_insert_after]]. + + subroutine json_value_insert_after_child_by_index(json,p,idx,element) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p !! a JSON object or array. + integer(IK),intent(in) :: idx !! the index of the child of `p` to + !! insert the new element after + !! (this is a 1-based Fortran + !! style array index) + type(json_value),pointer :: element !! the element to insert + + type(json_value),pointer :: tmp !! for getting the `idx`-th child of `p` + + if (.not. json%exception_thrown) then + + ! get the idx-th child of p: + call json%get_child(p,idx,tmp) + + ! call json_value_insert_after: + if (.not. json%exception_thrown) call json%insert_after(tmp,element) + + end if + + end subroutine json_value_insert_after_child_by_index +!***************************************************************************************** + +!***************************************************************************************** +!> +! Add a new member (`json_value` pointer) to a JSON structure, given the path. +! +!@warning If the path points to an existing variable in the structure, +! then this routine will destroy it and replace it with the +! new value. + + subroutine json_add_member_by_path(json,me,path,p,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + type(json_value),pointer,intent(in) :: p !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + type(json_value),pointer :: tmp + character(kind=CK,len=:),allocatable :: name !! name of the variable + + if ( .not. json%exception_thrown ) then + + if (.not. associated(p)) then + call json%throw_exception('Error in json_add_member_by_path:'//& + ' Input pointer p is not associated.',found) + if (present(found)) then + found = .false. + call json%clear_exceptions() + end if + if ( present(was_created) ) was_created = .false. + else + + ! return a pointer to the path (possibly creating it) + call json%create(me,path,tmp,found,was_created) + + if (.not. associated(tmp)) then + + call json%throw_exception('Error in json_add_member_by_path:'//& + ' Unable to resolve path: '//trim(path),found) + if (present(found)) then + found = .false. + call json%clear_exceptions() + end if + + else + + call json%info(tmp,name=name) + + ! replace it with the new one: + call json%replace(tmp,p,destroy=.true.) + call json%rename(p,name) + + end if + + end if + + else + if ( present(found) ) found = .false. + if ( present(was_created) ) was_created = .false. + end if + + end subroutine json_add_member_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper to [[json_add_member_by_path]] where "path" is kind=CDK. + + subroutine wrap_json_add_member_by_path(json,me,path,p,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + type(json_value),pointer,intent(in) :: p !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%json_add_member_by_path(me,to_unicode(path),p,found,was_created) + + end subroutine wrap_json_add_member_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Add an integer value to a [[json_value]], given the path. +! +!@warning If the path points to an existing variable in the structure, +! then this routine will destroy it and replace it with the +! new value. + + subroutine json_add_integer_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + integer(IK),intent(in) :: value !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + type(json_value),pointer :: p + type(json_value),pointer :: tmp + character(kind=CK,len=:),allocatable :: name !! variable name + + if ( .not. json%exception_thrown ) then + + nullify(p) + + ! return a pointer to the path (possibly creating it) + ! If the variable had to be created, then + ! it will be a json_null variable. + call json%create(me,path,p,found,was_created) + + if (.not. associated(p)) then + + call json%throw_exception('Error in json_add_integer_by_path:'//& + ' Unable to resolve path: '//trim(path),found) + if (present(found)) then + found = .false. + call json%clear_exceptions() + end if + + else + + !NOTE: a new object is created, and the old one + ! is replaced and destroyed. This is to + ! prevent memory leaks if the type is + ! being changed (for example, if an array + ! is being replaced with a scalar). + + if (p%var_type==json_integer) then + p%int_value = value + else + call json%info(p,name=name) + call json%create_integer(tmp,value,name) + call json%replace(p,tmp,destroy=.true.) + end if + + end if + + else + if ( present(found) ) found = .false. + if ( present(was_created) ) was_created = .false. + end if + + end subroutine json_add_integer_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper to [[json_add_integer_by_path]] where "path" is kind=CDK. + + subroutine wrap_json_add_integer_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + integer(IK),intent(in) :: value !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%json_add_integer_by_path(me,to_unicode(path),value,found,was_created) + + end subroutine wrap_json_add_integer_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Add an real value to a [[json_value]], given the path. +! +!@warning If the path points to an existing variable in the structure, +! then this routine will destroy it and replace it with the +! new value. + + subroutine json_add_real_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(RK),intent(in) :: value !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + type(json_value),pointer :: p + type(json_value),pointer :: tmp + character(kind=CK,len=:),allocatable :: name !! variable name + + if ( .not. json%exception_thrown ) then + + nullify(p) + + ! return a pointer to the path (possibly creating it) + ! If the variable had to be created, then + ! it will be a json_null variable. + call json%create(me,path,p,found,was_created) + + if (.not. associated(p)) then + + call json%throw_exception('Error in json_add_real_by_path:'//& + ' Unable to resolve path: '//trim(path),found) + if (present(found)) then + found = .false. + call json%clear_exceptions() + end if + + else + + !NOTE: a new object is created, and the old one + ! is replaced and destroyed. This is to + ! prevent memory leaks if the type is + ! being changed (for example, if an array + ! is being replaced with a scalar). + + if (p%var_type==json_real) then + p%dbl_value = value + else + call json%info(p,name=name) + call json%create_real(tmp,value,name) + call json%replace(p,tmp,destroy=.true.) + end if + + end if + + else + if ( present(found) ) found = .false. + if ( present(was_created) ) was_created = .false. + end if + + end subroutine json_add_real_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper to [[json_add_real_by_path]] where "path" is kind=CDK. + + subroutine wrap_json_add_real_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(RK),intent(in) :: value !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%json_add_real_by_path(me,to_unicode(path),value,found,was_created) + + end subroutine wrap_json_add_real_by_path +!***************************************************************************************** + +#ifndef REAL32 +!***************************************************************************************** +!> +! Alternate version of [[json_add_real_by_path]] where value=real32. + + subroutine json_add_real32_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(real32),intent(in) :: value !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%add_by_path(me,path,real(value,RK),found,was_created) + + end subroutine json_add_real32_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper to [[json_add_real32_by_path]] where "path" is kind=CDK. + + subroutine wrap_json_add_real32_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(real32),intent(in) :: value !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%add_by_path(me,to_unicode(path),real(value,RK),found,was_created) + + end subroutine wrap_json_add_real32_by_path +!***************************************************************************************** +#endif + +#ifdef REAL128 +!***************************************************************************************** +!> +! Alternate version of [[json_add_real_by_path]] where value=real32. + + subroutine json_add_real64_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(real64),intent(in) :: value !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%add_by_path(me,path,real(value,RK),found,was_created) + + end subroutine json_add_real64_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper to [[json_add_real64_by_path]] where "path" is kind=CDK. + + subroutine wrap_json_add_real64_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(real64),intent(in) :: value !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%add_by_path(me,to_unicode(path),real(value,RK),found,was_created) + + end subroutine wrap_json_add_real64_by_path +!***************************************************************************************** +#endif + +!***************************************************************************************** +!> +! Add a logical value to a [[json_value]], given the path. +! +!@warning If the path points to an existing variable in the structure, +! then this routine will destroy it and replace it with the +! new value. + + subroutine json_add_logical_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + logical(LK),intent(in) :: value !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + type(json_value),pointer :: p + type(json_value),pointer :: tmp + character(kind=CK,len=:),allocatable :: name !! variable name + + if ( .not. json%exception_thrown ) then + + nullify(p) + + ! return a pointer to the path (possibly creating it) + ! If the variable had to be created, then + ! it will be a json_null variable. + call json%create(me,path,p,found,was_created) + + if (.not. associated(p)) then + + call json%throw_exception('Error in json_add_logical_by_path:'//& + ' Unable to resolve path: '//trim(path),found) + if (present(found)) then + found = .false. + call json%clear_exceptions() + end if + + else + + !NOTE: a new object is created, and the old one + ! is replaced and destroyed. This is to + ! prevent memory leaks if the type is + ! being changed (for example, if an array + ! is being replaced with a scalar). + + if (p%var_type==json_logical) then + p%log_value = value + else + call json%info(p,name=name) + call json%create_logical(tmp,value,name) + call json%replace(p,tmp,destroy=.true.) + end if + + end if + + else + if ( present(found) ) found = .false. + if ( present(was_created) ) was_created = .false. + end if + + end subroutine json_add_logical_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper to [[json_add_logical_by_path]] where "path" is kind=CDK. + + subroutine wrap_json_add_logical_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + logical(LK),intent(in) :: value !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%json_add_logical_by_path(me,to_unicode(path),value,found,was_created) + + end subroutine wrap_json_add_logical_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Add a string value to a [[json_value]], given the path. +! +!@warning If the path points to an existing variable in the structure, +! then this routine will destroy it and replace it with the +! new value. + + subroutine json_add_string_by_path(json,me,path,value,found,& + was_created,trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=*),intent(in) :: value !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for each element + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for each element + + type(json_value),pointer :: p + type(json_value),pointer :: tmp + character(kind=CK,len=:),allocatable :: name !! variable name + + if ( .not. json%exception_thrown ) then + + nullify(p) + + ! return a pointer to the path (possibly creating it) + ! If the variable had to be created, then + ! it will be a json_null variable. + call json%create(me,path,p,found,was_created) + + if (.not. associated(p)) then + + call json%throw_exception('Error in json_add_string_by_path:'//& + ' Unable to resolve path: '//trim(path),found) + if (present(found)) then + found = .false. + call json%clear_exceptions() + end if + + else + + !NOTE: a new object is created, and the old one + ! is replaced and destroyed. This is to + ! prevent memory leaks if the type is + ! being changed (for example, if an array + ! is being replaced with a scalar). + + if (p%var_type==json_string) then + p%str_value = value + else + call json%info(p,name=name) + call json%create_string(tmp,value,name,trim_str,adjustl_str) + call json%replace(p,tmp,destroy=.true.) + end if + + end if + + else + if ( present(found) ) found = .false. + if ( present(was_created) ) was_created = .false. + end if + + end subroutine json_add_string_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper to [[json_add_string_by_path]] where "path" is kind=CDK. + + subroutine wrap_json_add_string_by_path(json,me,path,value,found,& + was_created,trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + character(kind=CDK,len=*),intent(in) :: value !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for each element + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for each element + + call json%json_add_string_by_path(me,to_unicode(path),to_unicode(value),& + found,was_created,trim_str,adjustl_str) + + end subroutine wrap_json_add_string_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper for [[json_add_string_by_path]] where "path" is kind=CDK. + + subroutine json_add_string_by_path_path_ascii(json,me,path,value,found,& + was_created,trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=*),intent(in) :: value !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for each element + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for each element + + call json%json_add_string_by_path(me,to_unicode(path),value,found,was_created,trim_str,adjustl_str) + + end subroutine json_add_string_by_path_path_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper for [[json_add_string_by_path]] where "value" is kind=CDK. + + subroutine json_add_string_by_path_value_ascii(json,me,path,value,found,& + was_created,trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + character(kind=CDK,len=*),intent(in) :: value !! the value to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for each element + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for each element + + call json%json_add_string_by_path(me,path,to_unicode(value),found,was_created,trim_str,adjustl_str) + + end subroutine json_add_string_by_path_value_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper to [[json_add_integer_by_path]] for adding an integer vector by path. + + subroutine json_add_integer_vec_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + integer(IK),dimension(:),intent(in) :: value !! the vector to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + type(json_value),pointer :: p !! pointer to path (which may exist) + type(json_value),pointer :: var !! new variable that is created + integer(IK) :: i !! counter + character(kind=CK,len=:),allocatable :: name !! the variable name + logical(LK) :: p_found !! if the path was successfully found (or created) + + if ( .not. json%exception_thrown ) then + + !get a pointer to the variable + !(creating it if necessary) + call json%create(me,path,p,found=p_found) + if (p_found) then + call json%info(p,name=name) ! want to keep the existing name + call json%create_array(var,name) ! create a new array variable + call json%replace(p,var,destroy=.true.) ! replace p with this array (destroy p) + !populate each element of the array: + do i=1,size(value) + call json%add(var, CK_'', value(i)) + end do + end if + + else + if ( present(found) ) found = .false. + if ( present(was_created) ) was_created = .false. + end if + + end subroutine json_add_integer_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper for [[json_add_integer_vec_by_path]] where "path" is kind=CDK). + + subroutine wrap_json_add_integer_vec_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + integer(IK),dimension(:),intent(in) :: value !! the vector to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%json_add_integer_vec_by_path(me,to_unicode(path),value,found,was_created) + + end subroutine wrap_json_add_integer_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper to [[json_add_logical_by_path]] for adding a logical vector by path. + + subroutine json_add_logical_vec_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + logical(LK),dimension(:),intent(in) :: value !! the vector to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + type(json_value),pointer :: p !! pointer to path (which may exist) + type(json_value),pointer :: var !! new variable that is created + integer(IK) :: i !! counter + character(kind=CK,len=:),allocatable :: name !! the variable name + logical(LK) :: p_found !! if the path was successfully found (or created) + + if ( .not. json%exception_thrown ) then + + !get a pointer to the variable + !(creating it if necessary) + call json%create(me,path,p,found=p_found) + if (p_found) then + call json%info(p,name=name) ! want to keep the existing name + call json%create_array(var,name) ! create a new array variable + call json%replace(p,var,destroy=.true.) ! replace p with this array (destroy p) + !populate each element of the array: + do i=1,size(value) + call json%add(var, CK_'', value(i)) + end do + end if + + else + if ( present(found) ) found = .false. + if ( present(was_created) ) was_created = .false. + end if + + end subroutine json_add_logical_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper for [[json_add_logical_vec_by_path]] where "path" is kind=CDK). + + subroutine wrap_json_add_logical_vec_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + logical(LK),dimension(:),intent(in) :: value !! the vector to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%json_add_logical_vec_by_path(me,to_unicode(path),value,found,was_created) + + end subroutine wrap_json_add_logical_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper to [[json_add_real_by_path]] for adding a real vector by path. + + subroutine json_add_real_vec_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(RK),dimension(:),intent(in) :: value !! the vector to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + type(json_value),pointer :: p !! pointer to path (which may exist) + type(json_value),pointer :: var !! new variable that is created + integer(IK) :: i !! counter + character(kind=CK,len=:),allocatable :: name !! the variable name + logical(LK) :: p_found !! if the path was successfully found (or created) + + if ( .not. json%exception_thrown ) then + + !get a pointer to the variable + !(creating it if necessary) + call json%create(me,path,p,found=p_found) + if (p_found) then + call json%info(p,name=name) ! want to keep the existing name + call json%create_array(var,name) ! create a new array variable + call json%replace(p,var,destroy=.true.) ! replace p with this array (destroy p) + !populate each element of the array: + do i=1,size(value) + call json%add(var, CK_'', value(i)) + end do + end if + + else + if ( present(found) ) found = .false. + if ( present(was_created) ) was_created = .false. + end if + + end subroutine json_add_real_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper for [[json_add_real_vec_by_path]] where "path" is kind=CDK). + + subroutine wrap_json_add_real_vec_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(RK),dimension(:),intent(in) :: value !! the vector to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%json_add_real_vec_by_path(me,to_unicode(path),value,found,was_created) + + end subroutine wrap_json_add_real_vec_by_path +!***************************************************************************************** + +#ifndef REAL32 +!***************************************************************************************** +!> +! Wrapper to [[json_add_real_by_path]] for adding a real vector by path. + + subroutine json_add_real32_vec_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(real32),dimension(:),intent(in) :: value !! the vector to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%add_by_path(me,path,real(value,RK),found,was_created) + + end subroutine json_add_real32_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper for [[json_add_real32_vec_by_path]] where "path" is kind=CDK). + + subroutine wrap_json_add_real32_vec_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(real32),dimension(:),intent(in) :: value !! the vector to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%add_by_path(me,to_unicode(path),real(value,RK),found,was_created) + + end subroutine wrap_json_add_real32_vec_by_path +!***************************************************************************************** +#endif + +#ifdef REAL128 +!***************************************************************************************** +!> +! Wrapper to [[json_add_real_by_path]] for adding a real vector by path. + + subroutine json_add_real64_vec_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + real(real64),dimension(:),intent(in) :: value !! the vector to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%add_by_path(me,path,real(value,RK),found,was_created) + + end subroutine json_add_real64_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper for [[json_add_real64_vec_by_path]] where "path" is kind=CDK). + + subroutine wrap_json_add_real64_vec_by_path(json,me,path,value,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + real(real64),dimension(:),intent(in) :: value !! the vector to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + + call json%add_by_path(me,to_unicode(path),real(value,RK),found,was_created) + + end subroutine wrap_json_add_real64_vec_by_path +!***************************************************************************************** +#endif + +!***************************************************************************************** +!> +! Wrapper to [[json_add_string_by_path]] for adding a string vector by path. +! +!@note The `ilen` input can be used to specify the actual lengths of the +! the strings in the array. They must all be `<= len(value)`. + + subroutine json_add_string_vec_by_path(json,me,path,value,found,was_created,ilen,trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=*),dimension(:),intent(in) :: value !! the vector to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + integer(IK),dimension(:),intent(in),optional :: ilen !! the string lengths of each + !! element in `value`. If not present, + !! the full `len(value)` string is added + !! for each element. + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for each element + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for each element + + type(json_value),pointer :: p !! pointer to path (which may exist) + type(json_value),pointer :: var !! new variable that is created + integer(IK) :: i !! counter + character(kind=CK,len=:),allocatable :: name !! the variable name + logical(LK) :: p_found !! if the path was successfully found (or created) + + if ( .not. json%exception_thrown ) then + + ! validate ilen array if present: + if (present(ilen)) then + if (size(ilen)/=size(value)) then + call json%throw_exception('Error in json_add_string_vec_by_path: '//& + 'Invalid size of ilen input vector.',found) + if (present(found)) then + found = .false. + call json%clear_exceptions() + end if + if (present(was_created)) was_created = .false. + return + else + ! also have to validate the specified lengths. + ! (must not be greater than input string length) + do i = 1, size(value) + if (ilen(i)>len(value)) then + call json%throw_exception('Error in json_add_string_vec_by_path: '//& + 'Invalid ilen element.',found) + if (present(found)) then + found = .false. + call json%clear_exceptions() + end if + if (present(was_created)) was_created = .false. + return + end if + end do + end if + end if + + !get a pointer to the variable + !(creating it if necessary) + call json%create(me,path,p,found=p_found) + if (p_found) then + call json%info(p,name=name) ! want to keep the existing name + call json%create_array(var,name) ! create a new array variable + call json%replace(p,var,destroy=.true.) ! replace p with this array (destroy p) + !populate each element of the array: + do i=1,size(value) + if (present(ilen)) then + call json%add(var, CK_'', value(i)(1:ilen(i)), & + trim_str=trim_str, adjustl_str=adjustl_str) + else + call json%add(var, CK_'', value(i), & + trim_str=trim_str, adjustl_str=adjustl_str) + end if + end do + end if + + else + if ( present(found) ) found = .false. + if ( present(was_created) ) was_created = .false. + end if + + end subroutine json_add_string_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper for [[json_add_string_vec_by_path]] where "path" and "value" are kind=CDK). + + subroutine wrap_json_add_string_vec_by_path(json,me,path,value,& + found,was_created,ilen,& + trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + character(kind=CDK,len=*),dimension(:),intent(in):: value !! the vector to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + integer(IK),dimension(:),intent(in),optional :: ilen !! the string lengths of each + !! element in `value`. If not present, + !! the full `len(value)` string is added + !! for each element. + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for each element + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for each element + + call json%json_add_string_vec_by_path(me,to_unicode(path),to_unicode(value),& + found,was_created,ilen,trim_str,adjustl_str) + + end subroutine wrap_json_add_string_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper for [[json_add_string_vec_by_path]] where "value" is kind=CDK). + + subroutine json_add_string_vec_by_path_value_ascii(json,me,path,value,& + found,was_created,ilen,& + trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CK,len=*),intent(in) :: path !! the path to the variable + character(kind=CDK,len=*),dimension(:),intent(in):: value !! the vector to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + integer(IK),dimension(:),intent(in),optional :: ilen !! the string lengths of each + !! element in `value`. If not present, + !! the full `len(value)` string is added + !! for each element. + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for each element + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for each element + + call json%json_add_string_vec_by_path(me,path,to_unicode(value),& + found,was_created,ilen,trim_str,adjustl_str) + + end subroutine json_add_string_vec_by_path_value_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper for [[json_add_string_vec_by_path]] where "path" is kind=CDK). + + subroutine json_add_string_vec_by_path_path_ascii(json,me,path,value,& + found,was_created,ilen,& + trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me !! the JSON structure + character(kind=CDK,len=*),intent(in) :: path !! the path to the variable + character(kind=CK,len=*),dimension(:),intent(in) :: value !! the vector to add + logical(LK),intent(out),optional :: found !! if the variable was found + logical(LK),intent(out),optional :: was_created !! if the variable had to be created + integer(IK),dimension(:),intent(in),optional :: ilen !! the string lengths of each + !! element in `value`. If not present, + !! the full `len(value)` string is added + !! for each element. + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for each element + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for each element + + call json%json_add_string_vec_by_path(me,to_unicode(path),value,& + found,was_created,ilen,trim_str,adjustl_str) + + end subroutine json_add_string_vec_by_path_path_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/19/2014 +! +! Add a real value child to the [[json_value]] variable. +! +!@note This routine is part of the public API that can be +! used to build a JSON structure using [[json_value]] pointers. + + subroutine json_value_add_real(json,p,name,val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name !! variable name + real(RK),intent(in) :: val !! real value + + type(json_value),pointer :: var + + !create the variable: + call json%create_real(var,val,name) + + !add it: + call json%add(p, var) + + end subroutine json_value_add_real +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_real]] where `name` is kind=CDK. + + subroutine wrap_json_value_add_real(json,p,name,val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name !! variable name + real(RK),intent(in) :: val !! real value + + call json%add(p, to_unicode(name), val) + + end subroutine wrap_json_value_add_real +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/20/2014 +! +! Add a real vector child to the [[json_value]] variable. +! +!@note This routine is part of the public API that can be +! used to build a JSON structure using [[json_value]] pointers. + + subroutine json_value_add_real_vec(json, p, name, val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name + real(RK),dimension(:),intent(in) :: val + + type(json_value),pointer :: var + integer(IK) :: i !! counter + + !create the variable as an array: + call json%create_array(var,name) + + !populate the array: + do i=1,size(val) + call json%add(var, CK_'', val(i)) + end do + + !add it: + call json%add(p, var) + + end subroutine json_value_add_real_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_real_vec]] where `name` is kind=CDK. + + subroutine wrap_json_value_add_real_vec(json, p, name, val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name + real(RK),dimension(:),intent(in) :: val + + call json%add(p, to_unicode(name), val) + + end subroutine wrap_json_value_add_real_vec +!***************************************************************************************** + +#ifndef REAL32 +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_real]] where `val` is `real32`. + + subroutine json_value_add_real32(json,p,name,val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name !! variable name + real(real32),intent(in) :: val !! real value + + call json%add(p,name,real(val,RK)) + + end subroutine json_value_add_real32 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_real32]] where `name` is kind=CDK. + + subroutine wrap_json_value_add_real32(json,p,name,val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name !! variable name + real(real32),intent(in) :: val !! real value + + call json%add(p, to_unicode(name), val) + + end subroutine wrap_json_value_add_real32 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_real_vec]] where `val` is `real32`. + + subroutine json_value_add_real32_vec(json, p, name, val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name + real(real32),dimension(:),intent(in) :: val + + call json%add(p,name,real(val,RK)) + + end subroutine json_value_add_real32_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_real32_vec]] where `name` is kind=CDK. + + subroutine wrap_json_value_add_real32_vec(json, p, name, val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name + real(real32),dimension(:),intent(in) :: val + + call json%add(p, to_unicode(name), val) + + end subroutine wrap_json_value_add_real32_vec +!***************************************************************************************** +#endif + +#ifdef REAL128 +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_real]] where `val` is `real64`. + + subroutine json_value_add_real64(json,p,name,val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name !! variable name + real(real64),intent(in) :: val !! real value + + call json%add(p,name,real(val,RK)) + + end subroutine json_value_add_real64 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_real64]] where `name` is kind=CDK. + + subroutine wrap_json_value_add_real64(json,p,name,val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name !! variable name + real(real64),intent(in) :: val !! real value + + call json%add(p, to_unicode(name), val) + + end subroutine wrap_json_value_add_real64 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_real_vec]] where `val` is `real64`. + + subroutine json_value_add_real64_vec(json, p, name, val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name + real(real64),dimension(:),intent(in) :: val + + call json%add(p, name, real(val,RK)) + + end subroutine json_value_add_real64_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_real64_vec]] where `name` is kind=CDK. + + subroutine wrap_json_value_add_real64_vec(json, p, name, val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name + real(real64),dimension(:),intent(in) :: val + + call json%add(p, to_unicode(name), val) + + end subroutine wrap_json_value_add_real64_vec +!***************************************************************************************** +#endif + +!***************************************************************************************** +!> +! Add a NULL value child to the [[json_value]] variable. +! +!@note This routine is part of the public API that can be +! used to build a JSON structure using [[json_value]] pointers. + + subroutine json_value_add_null(json, p, name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name + + type(json_value),pointer :: var + + !create the variable: + call json%create_null(var,name) + + !add it: + call json%add(p, var) + + end subroutine json_value_add_null +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_null]] where `name` is kind=CDK. + + subroutine wrap_json_value_add_null(json, p, name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name !! name of the variable + + call json%add(p, to_unicode(name)) + + end subroutine wrap_json_value_add_null +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/20/2014 +! +! Add an integer value child to the [[json_value]] variable. +! +!@note This routine is part of the public API that can be +! used to build a JSON structure using [[json_value]] pointers. + + subroutine json_value_add_integer(json, p, name, val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name + integer(IK),intent(in) :: val + + type(json_value),pointer :: var + + !create the variable: + call json%create_integer(var,val,name) + + !add it: + call json%add(p, var) + + end subroutine json_value_add_integer +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_integer]] where `name` is kind=CDK. + + subroutine wrap_json_value_add_integer(json, p, name, val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name !! name of the variable + integer(IK),intent(in) :: val !! value + + call json%add(p, to_unicode(name), val) + + end subroutine wrap_json_value_add_integer +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/20/2014 +! +! Add a integer vector child to the [[json_value]] variable. +! +!@note This routine is part of the public API that can be +! used to build a JSON structure using [[json_value]] pointers. + + subroutine json_value_add_integer_vec(json, p, name, val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name !! name of the variable + integer(IK),dimension(:),intent(in) :: val !! value + + type(json_value),pointer :: var + integer(IK) :: i !! counter + + !create a variable as an array: + call json%create_array(var,name) + + !populate the array: + do i=1,size(val) + call json%add(var, CK_'', val(i)) + end do + + !add it: + call json%add(p, var) + + end subroutine json_value_add_integer_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_integer_vec]] where `name` is kind=CDK. + + subroutine wrap_json_value_add_integer_vec(json, p, name, val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name !! name of the variable + integer(IK),dimension(:),intent(in) :: val !! value + + call json%add(p, to_unicode(name), val) + + end subroutine wrap_json_value_add_integer_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/20/2014 +! +! Add a logical value child to the [[json_value]] variable. +! +!@note This routine is part of the public API that can be +! used to build a JSON structure using [[json_value]] pointers. + + subroutine json_value_add_logical(json, p, name, val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name !! name of the variable + logical(LK),intent(in) :: val !! value + + type(json_value),pointer :: var + + !create the variable: + call json%create_logical(var,val,name) + + !add it: + call json%add(p, var) + + end subroutine json_value_add_logical +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_logical]] where `name` is kind=CDK. + + subroutine wrap_json_value_add_logical(json, p, name, val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name !! name of the variable + logical(LK),intent(in) :: val !! value + + call json%add(p, to_unicode(name), val) + + end subroutine wrap_json_value_add_logical +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/20/2014 +! +! Add a logical vector child to the [[json_value]] variable. +! +!@note This routine is part of the public API that can be +! used to build a JSON structure using [[json_value]] pointers. + + subroutine json_value_add_logical_vec(json, p, name, val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name !! name of the vector + logical(LK),dimension(:),intent(in) :: val !! value + + type(json_value),pointer :: var + integer(IK) :: i !! counter + + !create the variable as an array: + call json%create_array(var,name) + + !populate the array: + do i=1,size(val) + call json%add(var, CK_'', val(i)) + end do + + !add it: + call json%add(p, var) + + end subroutine json_value_add_logical_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_logical_vec]] where `name` is kind=CDK. + + subroutine wrap_json_value_add_logical_vec(json, p, name, val) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name !! name of the variable + logical(LK),dimension(:),intent(in) :: val !! value + + call json%add(p, to_unicode(name), val) + + end subroutine wrap_json_value_add_logical_vec +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/19/2014 +! +! Add a character string child to the [[json_value]] variable. +! +!@note This routine is part of the public API that can be +! used to build a JSON structure using [[json_value]] pointers. + + subroutine json_value_add_string(json, p, name, val, trim_str, adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name !! name of the variable + character(kind=CK,len=*),intent(in) :: val !! value + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + + type(json_value),pointer :: var + + !create the variable: + call json%create_string(var,val,name,trim_str,adjustl_str) + + !add it: + call json%add(p, var) + + end subroutine json_value_add_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_string]] where `name` and `val` are kind=CDK. + + subroutine wrap_json_value_add_string(json, p, name, val, trim_str, adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name !! name of the variable + character(kind=CDK,len=*),intent(in) :: val !! value + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + + call json%add(p, to_unicode(name), to_unicode(val), trim_str, adjustl_str) + + end subroutine wrap_json_value_add_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_string]] where `name` is kind=CDK. + + subroutine json_value_add_string_name_ascii(json, p, name, val, trim_str, adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name !! name of the variable + character(kind=CK, len=*),intent(in) :: val !! value + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + + call json%add(p, to_unicode(name), val, trim_str, adjustl_str) + + end subroutine json_value_add_string_name_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_string]] where `val` is kind=CDK. + + subroutine json_value_add_string_val_ascii(json, p, name, val, trim_str, adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK, len=*),intent(in) :: name !! name of the variable + character(kind=CDK,len=*),intent(in) :: val !! value + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + + call json%add(p, name, to_unicode(val), trim_str, adjustl_str) + + end subroutine json_value_add_string_val_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/19/2014 +! +! Add a character string vector child to the [[json_value]] variable. +! +!@note This routine is part of the public API that can be +! used to build a JSON structure using [[json_value]] pointers. + + subroutine json_value_add_string_vec(json, p, name, val, trim_str, adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name !! variable name + character(kind=CK,len=*),dimension(:),intent(in) :: val !! array of strings + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for each element + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for each element + + type(json_value),pointer :: var + integer(IK) :: i !! counter + + !create the variable as an array: + call json%create_array(var,name) + + !populate the array: + do i=1,size(val) + call json%add(var, CK_'', val(i), trim_str, adjustl_str) + end do + + !add it: + call json%add(p, var) + + end subroutine json_value_add_string_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_string_vec]] where `name` and `val` are kind=CDK. + + subroutine wrap_json_value_add_string_vec(json, p, name, val, trim_str, adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name + character(kind=CDK,len=*),dimension(:),intent(in) :: val + logical(LK),intent(in),optional :: trim_str + logical(LK),intent(in),optional :: adjustl_str + + call json%add(p, to_unicode(name), to_unicode(val), trim_str, adjustl_str) + + end subroutine wrap_json_value_add_string_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_string_vec]] where `name` is kind=CDK. + + subroutine json_value_add_string_vec_name_ascii(json, p, name, val, trim_str, adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name + character(kind=CK, len=*),dimension(:),intent(in) :: val + logical(LK),intent(in),optional :: trim_str + logical(LK),intent(in),optional :: adjustl_str + + call json%add(p, to_unicode(name), val, trim_str, adjustl_str) + + end subroutine json_value_add_string_vec_name_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_add_string_vec]] where `val` is kind=CDK. + + subroutine json_value_add_string_vec_val_ascii(json, p, name, val, trim_str, adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK, len=*),intent(in) :: name + character(kind=CDK,len=*),dimension(:),intent(in) :: val + logical(LK),intent(in),optional :: trim_str + logical(LK),intent(in),optional :: adjustl_str + + call json%add(p, name, to_unicode(val), trim_str, adjustl_str) + + end subroutine json_value_add_string_vec_val_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> +! Count the number of children in the object or array. +! +!### History +! * JW : 1/4/2014 : Original routine removed. +! Now using `n_children` variable. +! Renamed from `json_value_count`. + + function json_count(json,p) result(count) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! this should normally be a `json_object` + !! or a `json_array`. For any other + !! variable type this will return 0. + integer(IK) :: count !! number of children in `p`. + + if (associated(p)) then + count = p%n_children + else + call json%throw_exception('Error in json_count: '//& + 'pointer is not associated.') + end if + + end function json_count +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 10/16/2015 +! +! Returns a pointer to the parent of a [[json_value]]. +! If there is no parent, then a `null()` pointer is returned. + + subroutine json_get_parent(json,p,parent) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! JSON object + type(json_value),pointer,intent(out) :: parent !! pointer to `parent` + + if (associated(p)) then + parent => p%parent + else + nullify(parent) + call json%throw_exception('Error in json_get_parent: '//& + 'pointer is not associated.') + end if + + end subroutine json_get_parent +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 10/31/2015 +! +! Returns a pointer to the next of a [[json_value]]. +! If there is no next, then a `null()` pointer is returned. + + subroutine json_get_next(json,p,next) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! JSON object + type(json_value),pointer,intent(out) :: next !! pointer to `next` + + if (associated(p)) then + next => p%next + else + nullify(next) + call json%throw_exception('Error in json_get_next: '//& + 'pointer is not associated.') + end if + + end subroutine json_get_next +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 10/31/2015 +! +! Returns a pointer to the previous of a [[json_value]]. +! If there is no previous, then a `null()` pointer is returned. + + subroutine json_get_previous(json,p,previous) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! JSON object + type(json_value),pointer,intent(out) :: previous !! pointer to `previous` + + if (associated(p)) then + previous => p%previous + else + nullify(previous) + call json%throw_exception('Error in json_get_previous: '//& + 'pointer is not associated.') + end if + + end subroutine json_get_previous +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 10/31/2015 +! +! Returns a pointer to the tail of a [[json_value]] +! (the last child of an array of object). +! If there is no tail, then a `null()` pointer is returned. + + subroutine json_get_tail(json,p,tail) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! JSON object + type(json_value),pointer,intent(out) :: tail !! pointer to `tail` + + if (associated(p)) then + tail => p%tail + else + nullify(tail) + call json%throw_exception('Error in json_get_tail: '//& + 'pointer is not associated.') + end if + + end subroutine json_get_tail +!***************************************************************************************** + +!***************************************************************************************** +!> +! Returns a child in the object or array given the index. + + subroutine json_value_get_child_by_index(json, p, idx, child, found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! object or array JSON data + integer(IK),intent(in) :: idx !! index of the child + !! (this is a 1-based Fortran + !! style array index). + type(json_value),pointer :: child !! pointer to the child + logical(LK),intent(out),optional :: found !! true if the value was found + !! (if not present, an exception + !! will be thrown if it was not + !! found. If present and not + !! found, no exception will be + !! thrown). + + integer(IK) :: i !! counter + + nullify(child) + + if (.not. json%exception_thrown) then + + if (associated(p%children)) then + + ! If getting first or last child, we can do this quickly. + ! Otherwise, traverse the list. + if (idx==1) then + + child => p%children ! first one + + elseif (idx==p%n_children) then + + if (associated(p%tail)) then + child => p%tail ! last one + else + call json%throw_exception('Error in json_value_get_child_by_index:'//& + ' child%tail is not associated.',found) + end if + + elseif (idx<1 .or. idx>p%n_children) then + + call json%throw_exception('Error in json_value_get_child_by_index:'//& + ' idx is out of range.',found) + + else + + ! if idx is closer to the end, we traverse the list backward from tail, + ! otherwise we traverse it forward from children: + + if (p%n_children-idx < idx) then ! traverse backward + + child => p%tail + + do i = 1, p%n_children - idx + + if (associated(child%previous)) then + child => child%previous + else + call json%throw_exception('Error in json_value_get_child_by_index:'//& + ' child%previous is not associated.',found) + nullify(child) + exit + end if + + end do + + else ! traverse forward + + child => p%children + + do i = 1, idx - 1 + + if (associated(child%next)) then + child => child%next + else + call json%throw_exception('Error in json_value_get_child_by_index:'//& + ' child%next is not associated.',found) + nullify(child) + exit + end if + + end do + + end if + + end if + + else + + call json%throw_exception('Error in json_value_get_child_by_index:'//& + ' p%children is not associated.',found) + + end if + + ! found output: + if (json%exception_thrown) then + if (present(found)) then + call json%clear_exceptions() + found = .false. + end if + else + if (present(found)) found = .true. + end if + + else + if (present(found)) found = .false. + end if + + end subroutine json_value_get_child_by_index +!***************************************************************************************** + +!***************************************************************************************** +!> +! Returns pointer to the first child of the object +! (or `null()` if it is not associated). + + subroutine json_value_get_child(json, p, child) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! object or array JSON data + type(json_value),pointer :: child !! pointer to the child + + if (associated(p)) then + child => p%children + else + nullify(child) + call json%throw_exception('Error in json_value_get_child: '//& + 'pointer is not associated.') + end if + + end subroutine json_value_get_child +!***************************************************************************************** + +!***************************************************************************************** +!> +! Returns a child in the object or array given the name string. +! +! The name search can be case-sensitive or not, and can have significant trailing +! whitespace or not, depending on the settings in the [[json_core(type)]] class. +! +!@note The `name` input is not a path, and is not parsed like it is in [[json_get_by_path]]. + + subroutine json_value_get_child_by_name(json, p, name, child, found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p + character(kind=CK,len=*),intent(in) :: name !! the name of a child of `p` + type(json_value),pointer :: child !! pointer to the child + logical(LK),intent(out),optional :: found !! true if the value was found + !! (if not present, an exception + !! will be thrown if it was not + !! found. If present and not + !! found, no exception will be + !! thrown). + + integer(IK) :: i,n_children + logical :: error + + nullify(child) + + if (.not. json%exception_thrown) then + + if (associated(p)) then + + error = .true. ! will be false if it is found + if (p%var_type==json_object) then + n_children = json%count(p) + child => p%children !start with first one + do i=1, n_children + if (.not. associated(child)) then + call json%throw_exception(& + 'Error in json_value_get_child_by_name: '//& + 'Malformed JSON linked list',found) + exit + end if + if (allocated(child%name)) then + !name string matching routine: + if (json%name_equal(child,name)) then + error = .false. + exit + end if + end if + child => child%next + end do + end if + + if (error) then + !did not find anything: + call json%throw_exception(& + 'Error in json_value_get_child_by_name: '//& + 'child variable '//trim(name)//' was not found.',found) + nullify(child) + end if + + else + call json%throw_exception(& + 'Error in json_value_get_child_by_name: '//& + 'pointer is not associated.',found) + end if + + ! found output: + if (json%exception_thrown) then + if (present(found)) then + call json%clear_exceptions() + found = .false. + end if + else + if (present(found)) found = .true. + end if + + else + if (present(found)) found = .false. + end if + + end subroutine json_value_get_child_by_name +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 8/25/2017 +! +! Checks a JSON object for duplicate child names. +! +! It uses the specified settings for name matching (see [[name_strings_equal]]). +! +!@note This will only check for one duplicate, +! it will return the first one that it finds. + + subroutine json_check_children_for_duplicate_keys(json,p,has_duplicate,name,path) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! the object to search. If `p` is + !! not a `json_object`, then `has_duplicate` + !! will be false. + logical(LK),intent(out) :: has_duplicate !! true if there is at least + !! two children have duplicate + !! `name` values. + character(kind=CK,len=:),allocatable,intent(out),optional :: name !! the duplicate name + !! (unallocated if no + !! duplicate was found) + character(kind=CK,len=:),allocatable,intent(out),optional :: path !! the full path to the + !! duplicate name + !! (unallocated if no + !! duplicate was found) + + integer(IK) :: i !! counter + integer(IK) :: j !! counter + type(json_value),pointer :: child !! pointer to a child of `p` + integer(IK) :: n_children !! number of children of `p` + logical(LK) :: found !! flag for `get_child` + + type :: alloc_str + !! so we can have an array of allocatable strings + character(kind=CK,len=:),allocatable :: str !! name string + end type alloc_str + type(alloc_str),dimension(:),allocatable :: names !! array of all the + !! child name strings + + ! initialize: + has_duplicate =.false. + + if (.not. json%exception_thrown) then + + if (associated(p)) then + + if (p%var_type==json_object) then + + ! number of items to check: + n_children = json%count(p) + allocate(names(n_children)) + + ! first get a list of all the name keys: + do i=1, n_children + call json%get_child(p,i,child,found) ! get by index + if (.not. found) then + call json%throw_exception(& + 'Error in json_check_children_for_duplicate_keys: '//& + 'Malformed JSON linked list') + exit + end if + if (allocated(child%name)) then + names(i)%str = child%name + else + call json%throw_exception(& + 'Error in json_check_children_for_duplicate_keys: '//& + 'Object child name is not allocated') + exit + end if + end do + + if (.not. json%exception_thrown) then + ! now check the list for duplicates: + main: do i=1,n_children + do j=1,i-1 + if (json%name_strings_equal(names(i)%str,names(j)%str)) then + has_duplicate = .true. + if (present(name)) then + name = names(i)%str + end if + if (present(path)) then + call json%get_child(p,names(i)%str,child,found) ! get by name + if (found) then + call json%get_path(child,path,found) + if (.not. found) then + ! should never happen since we know it is there + call json%throw_exception(& + 'Error in json_check_children_for_duplicate_keys: '//& + 'Could not get path') + end if + else + ! should never happen since we know it is there + call json%throw_exception(& + 'Error in json_check_children_for_duplicate_keys: '//& + 'Could not get child: '//trim(names(i)%str)) + end if + end if + exit main + end if + end do + end do main + end if + + ! cleanup + do i=1,n_children + if (allocated(names(i)%str)) deallocate(names(i)%str) + end do + if (allocated(names)) deallocate(names) + + end if + + end if + + end if + + end subroutine json_check_children_for_duplicate_keys +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 8/25/2017 +! +! Checks a JSON structure for duplicate child names. +! This one recursively traverses the entire structure +! (calling [[json_check_children_for_duplicate_keys]] +! recursively for each element). +! +!@note This will only check for one duplicate, +! it will return the first one that it finds. + + subroutine json_check_all_for_duplicate_keys(json,p,has_duplicate,name,path) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! the object to search. If `p` is + !! not a `json_object`, then `has_duplicate` + !! will be false. + logical(LK),intent(out) :: has_duplicate !! true if there is at least + !! one duplicate `name` key anywhere + !! in the structure. + character(kind=CK,len=:),allocatable,intent(out),optional :: name !! the duplicate name + !! (unallocated if no + !! duplicates were found) + character(kind=CK,len=:),allocatable,intent(out),optional :: path !! the full path to the + !! duplicate name + !! (unallocated if no + !! duplicate was found) + + has_duplicate = .false. + if (.not. json%exception_thrown) then + call json%traverse(p,duplicate_key_func) + end if + + contains + + subroutine duplicate_key_func(json,p,finished) + + !! Callback function to check each element + !! for duplicate child names. + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p + logical(LK),intent(out) :: finished + +#if defined __GFORTRAN__ + + ! this is a workaround for a gfortran bug (6 and 7), + + character(kind=CK,len=:),allocatable :: tmp_name !! temp variable for `name` string + character(kind=CK,len=:),allocatable :: tmp_path !! temp variable for `path` string + + if (present(name) .and. present(path)) then + call json%check_children_for_duplicate_keys(p,has_duplicate,name=tmp_name,path=tmp_path) + else if (present(name) .and. .not. present(path)) then + call json%check_children_for_duplicate_keys(p,has_duplicate,name=tmp_name) + else if (.not. present(name) .and. present(path)) then + call json%check_children_for_duplicate_keys(p,has_duplicate,path=tmp_path) + else + call json%check_children_for_duplicate_keys(p,has_duplicate) + end if + + if (has_duplicate) then + if (present(name)) name = tmp_name + if (present(path)) path = tmp_path + end if + +#else + call json%check_children_for_duplicate_keys(p,has_duplicate,name,path) +#endif + + finished = has_duplicate .or. json%exception_thrown + + end subroutine duplicate_key_func + + end subroutine json_check_all_for_duplicate_keys +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_get_child_by_name]] where `name` is kind=CDK. + + subroutine wrap_json_value_get_child_by_name(json, p, name, child, found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p + character(kind=CDK,len=*),intent(in) :: name + type(json_value),pointer :: child + logical(LK),intent(out),optional :: found + + call json%get(p,to_unicode(name),child,found) + + end subroutine wrap_json_value_get_child_by_name +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 2/12/2014 +! +! Print the [[json_value]] structure to an allocatable string. + + subroutine json_value_to_string(json,p,str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p + character(kind=CK,len=:),intent(out),allocatable :: str !! prints structure to this string + + integer(IK) :: iloc !! used to keep track of size of str + !! since it is being allocated in chunks. + + str = repeat(space, print_str_chunk_size) + iloc = 0_IK + call json%json_value_print(p, iunit=unit2str, str=str, iloc=iloc, indent=1_IK, colon=.true.) + + ! trim the string if necessary: + if (len(str)>iloc) str = str(1:iloc) + + end subroutine json_value_to_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Print the [[json_value]] structure to the console (`output_unit`). +! +!### Note +! * Just a wrapper for [[json_print_to_unit]]. + + subroutine json_print_to_console(json,p) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p + + call json%print(p,int(output_unit,IK)) + + end subroutine json_print_to_console +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 6/20/2014 +! +! Print the [[json_value]] structure to a file. + + subroutine json_print_to_unit(json,p,iunit) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p + integer(IK),intent(in) :: iunit !! the file unit (the file must + !! already have been opened, can't be -1). + + character(kind=CK,len=:),allocatable :: dummy !! dummy for `str` argument + !! to [[json_value_print]] + integer(IK) :: idummy !! dummy for `iloc` argument + !! to [[json_value_print]] + + if (iunit/=unit2str) then + idummy = 0_IK + call json%json_value_print(p,iunit,str=dummy,iloc=idummy,indent=1_IK,colon=.true.) + else + call json%throw_exception('Error in json_print_to_unit: iunit must not be -1.') + end if + + end subroutine json_print_to_unit +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/23/2014 +! +! Print the [[json_value]] structure to a file. + + subroutine json_print_to_filename(json,p,filename) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p + character(kind=CDK,len=*),intent(in) :: filename !! the filename to print to + !! (should not already be open) + + integer(IK) :: iunit !! file unit for `open` statement + integer(IK) :: istat !! `iostat` code for `open` statement + + open(newunit=iunit,file=filename,status='REPLACE',iostat=istat FILE_ENCODING ) + if (istat==0) then + call json%print(p,iunit) + close(iunit,iostat=istat) + else + call json%throw_exception('Error in json_print_to_filename: could not open file: '//& + trim(filename)) + end if + + end subroutine json_print_to_filename +!***************************************************************************************** + +!***************************************************************************************** +!> +! Print the JSON structure to a string or a file. +! +!### Notes +! * This is an internal routine called by the various wrapper routines. +! * The reason the `str` argument is non-optional is because of a +! bug in v4.9 of the gfortran compiler. + + recursive subroutine json_value_print(json,p,iunit,str,indent,& + need_comma,colon,is_array_element,& + is_compressed_vector,iloc) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p + integer(IK),intent(in) :: iunit !! file unit to write to (the + !! file is assumed to be open) + integer(IK),intent(in),optional :: indent !! indention level + logical(LK),intent(in),optional :: is_array_element !! if this is an array element + logical(LK),intent(in),optional :: need_comma !! if it needs a comma after it + logical(LK),intent(in),optional :: colon !! if the colon was just written + character(kind=CK,len=:),intent(inout),allocatable :: str + !! if `iunit==unit2str` (-1) then + !! the structure is printed to this + !! string rather than a file. This mode + !! is used by [[json_value_to_string]]. + integer(IK),intent(inout) :: iloc !! current index in `str`. should be set to 0 initially. + !! [only used when `str` is used.] + logical(LK),intent(in),optional :: is_compressed_vector !! if True, this is an element + !! from an array being printed + !! on one line [default is False] + + character(kind=CK,len=max_numeric_str_len) :: tmp !! for value to string conversions + character(kind=CK,len=:),allocatable :: s_indent !! the string of spaces for + !! indenting (see `tab` and `spaces`) + character(kind=CK,len=:),allocatable :: s !! the string appended to `str` + type(json_value),pointer :: element !! for getting children + integer(IK) :: tab !! number of `tabs` for indenting + integer(IK) :: spaces !! number of spaces for indenting + integer(IK) :: i !! counter + integer(IK) :: count !! number of children + logical(LK) :: print_comma !! if the comma will be printed after the value + logical(LK) :: write_file !! if we are writing to a file + logical(LK) :: write_string !! if we are writing to a string + logical(LK) :: is_array !! if this is an element in an array + logical(LK) :: is_vector !! if all elements of a vector + !! are scalars of the same type + character(kind=CK,len=:),allocatable :: str_escaped !! escaped version of + !! `name` or `str_value` + + if (.not. json%exception_thrown) then + + if (.not. associated(p)) then + ! note: a null() pointer will trigger this error. + ! However, if the pointer is undefined, then this will + ! crash (if this wasn't here it would crash below when + ! we try to access the contents) + call json%throw_exception('Error in json_value_print: '//& + 'the pointer is not associated') + return + end if + + if (present(is_compressed_vector)) then + is_vector = is_compressed_vector + else + is_vector = .false. + end if + + !whether to write a string or a file (one or the other): + write_string = (iunit==unit2str) + write_file = .not. write_string + + !if the comma will be printed after the value + ! [comma not printed for the last elements] + if (present(need_comma)) then + print_comma = need_comma + else + print_comma = .false. + end if + + !number of "tabs" to indent: + if (present(indent) .and. .not. json%no_whitespace) then + tab = indent + else + tab = 0 + end if + !convert to number of spaces: + spaces = tab*json%spaces_per_tab + + !if this is an element in an array: + if (present(is_array_element)) then + is_array = is_array_element + else + is_array = .false. + end if + + !if the colon was the last thing written + if (present(colon)) then + s_indent = CK_'' + else + s_indent = repeat(space, spaces) + end if + + select case (p%var_type) + + case (json_object) + + count = json%count(p) + + if (count==0) then !special case for empty object + + s = s_indent//start_object//end_object + call write_it( comma=print_comma ) + + else + + s = s_indent//start_object + call write_it() + + !if an object is in an array, there is an extra tab: + if (is_array) then + if ( .not. json%no_whitespace) tab = tab+1 + spaces = tab*json%spaces_per_tab + end if + + nullify(element) + element => p%children + do i = 1, count + + if (.not. associated(element)) then + call json%throw_exception('Error in json_value_print: '//& + 'Malformed JSON linked list') + return + end if + + ! print the name + if (allocated(element%name)) then + call escape_string(element%name,str_escaped,json%escape_solidus) + if (json%no_whitespace) then + !compact printing - no extra space + s = repeat(space, spaces)//quotation_mark//& + str_escaped//quotation_mark//colon_char + call write_it(advance=.false.) + else + s = repeat(space, spaces)//quotation_mark//& + str_escaped//quotation_mark//colon_char//space + call write_it(advance=.false.) + end if + else + call json%throw_exception('Error in json_value_print:'//& + ' element%name not allocated') + nullify(element) + return + end if + + ! recursive print of the element + call json%json_value_print(element, iunit=iunit, indent=tab + 1_IK, & + need_comma=i element%next + + end do + + ! [one fewer tab if it isn't an array element] + if (.not. is_array) then + s = repeat(space, max(0_IK,spaces-json%spaces_per_tab))//end_object + else + s = s_indent//end_object + end if + call write_it( comma=print_comma ) + nullify(element) + + end if + + case (json_array) + + count = json%count(p) + + if (count==0) then ! special case for empty array + + s = s_indent//start_array//end_array + call write_it( comma=print_comma ) + + else + + ! if every child is the same type & a scalar: + is_vector = json%is_vector(p) + if (json%failed()) return + + s = s_indent//start_array + call write_it( advance=(.not. is_vector) ) + + !if an array is in an array, there is an extra tab: + if (is_array) then + if ( .not. json%no_whitespace) tab = tab+1 + spaces = tab*json%spaces_per_tab + end if + + nullify(element) + element => p%children + do i = 1, count + + if (.not. associated(element)) then + call json%throw_exception('Error in json_value_print: '//& + 'Malformed JSON linked list') + return + end if + + ! recursive print of the element + if (is_vector) then + call json%json_value_print(element, iunit=iunit, indent=0_IK,& + need_comma=i element%next + + end do + + !indent the closing array character: + if (is_vector) then + s = end_array + call write_it( comma=print_comma ) + else + s = repeat(space, max(0_IK,spaces-json%spaces_per_tab))//end_array + call write_it( comma=print_comma ) + end if + nullify(element) + + end if + + case (json_null) + + s = s_indent//null_str + call write_it( comma=print_comma, & + advance=(.not. is_vector),& + space_after_comma=is_vector ) + + case (json_string) + + if (allocated(p%str_value)) then + ! have to escape the string for printing: + call escape_string(p%str_value,str_escaped,json%escape_solidus) + s = s_indent//quotation_mark//str_escaped//quotation_mark + call write_it( comma=print_comma, & + advance=(.not. is_vector),& + space_after_comma=is_vector ) + else + call json%throw_exception('Error in json_value_print:'//& + ' p%value_string not allocated') + return + end if + + case (json_logical) + + if (p%log_value) then + s = s_indent//true_str + call write_it( comma=print_comma, & + advance=(.not. is_vector),& + space_after_comma=is_vector ) + else + s = s_indent//false_str + call write_it( comma=print_comma, & + advance=(.not. is_vector),& + space_after_comma=is_vector ) + end if + + case (json_integer) + + call integer_to_string(p%int_value,int_fmt,tmp) + + s = s_indent//trim(tmp) + call write_it( comma=print_comma, & + advance=(.not. is_vector),& + space_after_comma=is_vector ) + + case (json_real) + + if (allocated(json%real_fmt)) then + call real_to_string(p%dbl_value,json%real_fmt,json%compact_real,json%non_normals_to_null,tmp) + else + !use the default format (user has not called initialize() or specified one): + call real_to_string(p%dbl_value,default_real_fmt,json%compact_real,json%non_normals_to_null,tmp) + end if + + s = s_indent//trim(tmp) + call write_it( comma=print_comma, & + advance=(.not. is_vector),& + space_after_comma=is_vector ) + + case default + + call integer_to_string(p%var_type,int_fmt,tmp) + call json%throw_exception('Error in json_value_print: '//& + 'unknown data type: '//trim(tmp)) + + end select + + end if + + contains + + subroutine write_it(advance,comma,space_after_comma) + + !! write the string `s` to the file (or the output string) + + implicit none + + logical(LK),intent(in),optional :: advance !! to add line break or not + logical(LK),intent(in),optional :: comma !! print comma after the string + logical(LK),intent(in),optional :: space_after_comma !! print a space after the comma + + logical(LK) :: add_comma !! if a delimiter is to be added after string + logical(LK) :: add_line_break !! if a line break is to be added after string + logical(LK) :: add_space !! if a space is to be added after the comma + integer(IK) :: n !! length of actual string `s` appended to `str` + integer(IK) :: room_left !! number of characters left in `str` + integer(IK) :: n_chunks_to_add !! number of chunks to add to `str` for appending `s` + + if (present(comma)) then + add_comma = comma + else + add_comma = .false. !default is not to add comma + end if + if (json%no_whitespace) then + add_space = .false. + else + if (present(space_after_comma)) then + add_space = space_after_comma + else + add_space = .false. !default is not to add space + end if + end if + if (present(advance)) then + if (json%no_whitespace) then + ! overrides input value: + add_line_break = .false. + else + add_line_break = advance + end if + else + add_line_break = .not. json%no_whitespace ! default is to advance if + ! we are printing whitespace + end if + + ! string to print: + if (add_comma) then + if (add_space) then + s = s // delimiter // space + else + s = s // delimiter + end if + end if + + if (write_file) then + + if (add_line_break) then + write(iunit,fmt='(A)') s + else + write(iunit,fmt='(A)',advance='NO') s + end if + + else !write string + + if (add_line_break) s = s // newline + + n = len(s) + room_left = len(str)-iloc + if (room_left < n) then + ! need to add another chunk to fit this string: + n_chunks_to_add = max(1_IK, ceiling( real(len(s)-room_left,RK) / real(chunk_size,RK), IK ) ) + str = str // repeat(space, print_str_chunk_size*n_chunks_to_add) + end if + ! append s to str: + str(iloc+1:iloc+n) = s + iloc = iloc + n + + end if + + end subroutine write_it + + end subroutine json_value_print +!***************************************************************************************** + +!***************************************************************************************** +!> +! Returns true if all the children are the same type (and a scalar). +! Note that integers and reals are considered the same type for this purpose. +! This routine is used for the `compress_vectors` option. + + function json_is_vector(json, p) result(is_vector) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + logical(LK) :: is_vector !! if all elements of a vector + !! are scalars of the same type + + integer(IK) :: var_type_prev !! for getting the variable type of children + integer(IK) :: var_type !! for getting the variable type of children + type(json_value),pointer :: element !! for getting children + integer(IK) :: i !! counter + integer(IK) :: count !! number of children + + integer(IK),parameter :: json_invalid = -1_IK !! to initialize the flag. an invalid value + integer(IK),parameter :: json_numeric = -2_IK !! indicates `json_integer` or `json_real` + + if (json%compress_vectors) then + ! check to see if every child is the same type, + ! and a scalar: + is_vector = .true. + var_type_prev = json_invalid + count = json%count(p) + element => p%children + do i = 1_IK, count + if (.not. associated(element)) then + call json%throw_exception('Error in json_is_vector: '//& + 'Malformed JSON linked list') + return + end if + ! check variable type of all the children. + ! They must all be the same, and a scalar. + call json%info(element,var_type=var_type) + ! special check for numeric values: + if (var_type==json_integer .or. var_type==json_real) var_type = json_numeric + if (var_type==json_object .or. & + var_type==json_array .or. & + (i>1_IK .and. var_type/=var_type_prev)) then + is_vector = .false. + exit + end if + var_type_prev = var_type + ! get the next child the list: + element => element%next + end do + else + is_vector = .false. + end if + + end function json_is_vector +!***************************************************************************************** + +!***************************************************************************************** +!> +! Returns true if the `path` is present in the `p` JSON structure. +! +!@note Just a wrapper for [[json_get_by_path]], so it uses the +! specified `path_mode` and other settings. + + function json_valid_path(json, p, path) result(found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! a JSON linked list + character(kind=CK,len=*),intent(in) :: path !! path to the variable + logical(LK) :: found !! true if it was found + + type(json_value),pointer :: tmp !! pointer to the variable specified by `path` + + call json%get(p, path, tmp, found) + + end function json_valid_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_valid_path]] where "path" is kind=CDK. + + function wrap_json_valid_path(json, p, path) result(found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! a JSON linked list + character(kind=CDK,len=*),intent(in) :: path !! path to the variable + logical(LK) :: found !! true if it was found + + found = json%valid_path(p, to_unicode(path)) + + end function wrap_json_valid_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Returns the [[json_value]] pointer given the path string. +! +! It uses one of three methods: +! +! * The original JSON-Fortran defaults +! * [RFC 6901](https://tools.ietf.org/html/rfc6901) +! * [JSONPath](http://goessner.net/articles/JsonPath/) "bracket-notation" + + subroutine json_get_by_path(json, me, path, p, found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me !! a JSON linked list + character(kind=CK,len=*),intent(in) :: path !! path to the variable + type(json_value),pointer,intent(out) :: p !! pointer to the variable + !! specified by `path` + logical(LK),intent(out),optional :: found !! true if it was found + + character(kind=CK,len=max_integer_str_len),allocatable :: path_mode_str !! string version + !! of `json%path_mode` + + nullify(p) + + if (.not. json%exception_thrown) then + + select case (json%path_mode) + case(1_IK) + call json%json_get_by_path_default(me, path, p, found) + case(2_IK) + call json%json_get_by_path_rfc6901(me, path, p, found) + case(3_IK) + call json%json_get_by_path_jsonpath_bracket(me, path, p, found) + case default + call integer_to_string(json%path_mode,int_fmt,path_mode_str) + call json%throw_exception('Error in json_get_by_path: Unsupported path_mode: '//& + trim(path_mode_str)) + if (present(found)) found = .false. + end select + + if (present(found)) then + if (.not. found) call json%clear_exceptions() + end if + + else + if (present(found)) found = .false. + end if + + end subroutine json_get_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Returns the [[json_value]] pointer given the path string, +! If necessary, by creating the variables as needed. +! +! By default, the leaf node and any empty array elements +! are created as `json_null` values. +! +! It only works for `path_mode=1` or `path_mode=3`. +! An error will be thrown for `path_mode=2` (RFC 6901). +! +!### See also +! * [[json_get_by_path]] + + subroutine json_create_by_path(json,me,path,p,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me !! a JSON linked list + character(kind=CK,len=*),intent(in) :: path !! path to the variable + type(json_value),pointer,intent(out),optional :: p !! pointer to the variable + !! specify by `path` + logical(LK),intent(out),optional :: found !! true if there were no errors + !! (variable found or created) + logical(LK),intent(out),optional :: was_created !! true if it was actually created + !! (as opposed to already being there) + + type(json_value),pointer :: tmp + character(kind=CK,len=max_integer_str_len) :: path_mode_str !! string version + !! of `json%path_mode` + + if (present(p)) nullify(p) + + if (.not. json%exception_thrown) then + + select case (json%path_mode) + case(1_IK) + call json%json_get_by_path_default(me,path,tmp,found,& + create_it=.true.,& + was_created=was_created) + if (present(p)) p => tmp + case(3_IK) + call json%json_get_by_path_jsonpath_bracket(me,path,tmp,found,& + create_it=.true.,& + was_created=was_created) + if (present(p)) p => tmp + + case default + + if (json%path_mode==2_IK) then + ! the problem here is there isn't really a way to disambiguate + ! the array elements, so '/a/0' could be 'a(1)' or 'a.0'. + call json%throw_exception('Error in json_create_by_path: '//& + 'Create by path not supported in RFC 6901 path mode.') + else + call integer_to_string(json%path_mode,int_fmt,path_mode_str) + call json%throw_exception('Error in json_create_by_path: Unsupported path_mode: '//& + trim(path_mode_str)) + end if + if (present(found)) then + call json%clear_exceptions() + found = .false. + end if + if (present(was_created)) was_created = .false. + end select + + else + if (present(was_created)) was_created = .false. + if (present(found)) found = .false. + end if + + end subroutine json_create_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_create_by_path]] where "path" is kind=CDK. + + subroutine wrap_json_create_by_path(json,me,path,p,found,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me !! a JSON linked list + character(kind=CDK,len=*),intent(in) :: path !! path to the variable + type(json_value),pointer,intent(out),optional :: p !! pointer to the variable + !! specify by `path` + logical(LK),intent(out),optional :: found !! true if there were no errors + !! (variable found or created) + logical(LK),intent(out),optional :: was_created !! true if it was actually created + !! (as opposed to already being there) + + call json%create(me,to_unicode(path),p,found,was_created) + + end subroutine wrap_json_create_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Rename a [[json_value]], given the path. +! +!@note this is a wrapper for [[json_value_rename]]. + + subroutine json_rename_by_path(json, me, path, name, found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=*),intent(in) :: path !! path to the variable to rename + character(kind=CK,len=*),intent(in) :: name !! the new name + logical(LK),intent(out),optional :: found !! if there were no errors + + type(json_value),pointer :: p + + if ( json%exception_thrown ) then + if ( present(found) ) found = .false. + return + end if + + nullify(p) + call json%get(me=me, path=path, p=p) + + if (.not. associated(p)) then + call json%throw_exception('Error in json_rename_by_path:'//& + ' Unable to resolve path: '//trim(path),found) + else + call json%rename(p,name) + nullify(p) + end if + + if (json%exception_thrown) then + if (present(found)) then + found = .false. + call json%clear_exceptions() + end if + else + if (present(found)) found = .true. + end if + + end subroutine json_rename_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_rename_by_path]], where "path" and "name" are kind=CDK + + subroutine wrap_json_rename_by_path(json, me, path, name, found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CDK,len=*),intent(in) :: path + character(kind=CDK,len=*),intent(in) :: name + logical(LK),intent(out),optional :: found + + call json%rename(me,to_unicode(path),to_unicode(name),found) + + end subroutine wrap_json_rename_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_rename_by_path]], where "name" is kind=CDK + + subroutine json_rename_by_path_name_ascii(json, me, path, name, found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=*),intent(in) :: path + character(kind=CDK,len=*),intent(in) :: name + logical(LK),intent(out),optional :: found + + call json%rename(me,path,to_unicode(name),found) + + end subroutine json_rename_by_path_name_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_rename_by_path]], where "path" is kind=CDK + + subroutine json_rename_by_path_path_ascii(json, me, path, name, found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CDK,len=*),intent(in) :: path + character(kind=CK,len=*),intent(in) :: name + logical(LK),intent(out),optional :: found + + call json%rename(me,to_unicode(path),name,found) + + end subroutine json_rename_by_path_path_ascii +!***************************************************************************************** + +!***************************************************************************************** +!> +! Returns the [[json_value]] pointer given the path string. +! +!### Example +! +!````fortran +! type(json_core) :: json +! type(json_value),pointer :: dat,p +! logical :: found +! !... +! call json%initialize(path_mode=1) ! this is the default so not strictly necessary. +! call json%get(dat,'data(2).version',p,found) +!```` +! +!### Notes +! The syntax used here is a subset of the +! [http://goessner.net/articles/JsonPath/](JSONPath) "dot–notation". +! The following special characters are used to denote paths: +! +! * `$` - root +! * `@` - this +! * `.` - child object member (note this can be changed using `json%path_separator`) +! * `[]` or `()` - child array element (note that indices are 1-based) +! +! Thus, if any of these characters are present in the name key, +! this routine cannot be used to get the value. +! In that case, the `get_child` methods would need to be used. +! Or, the alternate [[json_get_by_path_rfc6901]] could be used. +! +!### See also +! * [[json_get_by_path_rfc6901]] +! * [[json_get_by_path_jsonpath_bracket]] +! +!@note The syntax is inherited from FSON, and is basically a subset +! of JSONPath "dot-notation", with the additional allowance of +! () for array elements. +! +!@note JSON `null` values are used here for unknown variables when `create_it` is True. +! So, it is possible that an existing null variable can be converted to another +! type (object or array) if a child is specified in the path. Doing it this way +! to avoid having to use another type (say `json_unknown`) that would have to be +! converted to null once all the variables have been created (user would have +! had to do this). +! +!@warning See (**) in code. I think we need to protect for memory leaks when +! changing the type of a variable that already exists. + + subroutine json_get_by_path_default(json,me,path,p,found,create_it,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me !! a JSON linked list + character(kind=CK,len=*),intent(in) :: path !! path to the variable + type(json_value),pointer,intent(out) :: p !! pointer to the variable + !! specify by `path` + logical(LK),intent(out),optional :: found !! true if it was found + logical(LK),intent(in),optional :: create_it !! if a variable is not present + !! in the path, then it is created. + !! the leaf node is returned as + !! a `null` json type and can be + !! changed by the caller. + logical(LK),intent(out),optional :: was_created !! if `create_it` is true, this + !! will be true if the variable + !! was actually created. Otherwise + !! it will be false. + + integer(IK) :: i !! counter of characters in `path` + integer(IK) :: length !! significant length of `path` + integer(IK) :: child_i !! index for getting children + character(kind=CK,len=1) :: c !! a character in the `path` + logical(LK) :: array !! flag when searching for array index in `path` + type(json_value),pointer :: tmp !! temp variables for getting child objects + logical(LK) :: child_found !! if the child value was found + logical(LK) :: create !! if the object is to be created + logical(LK) :: created !! if `create` is true, then this will be + !! true if the leaf object had to be created + integer(IK) :: j !! counter of children when creating object + logical(LK) :: status_ok !! integer to string conversion flag + + nullify(p) + + if (.not. json%exception_thrown) then + + if (present(create_it)) then + create = create_it + else + create = .false. + end if + + ! default to assuming relative to me + p => me + + child_i = 1 + array = .false. + created = .false. + + !keep trailing space or not: + if (json%trailing_spaces_significant) then + length = len(path) + else + length = len_trim(path) + end if + + do i=1, length + + c = path(i:i) + + select case (c) + case (root) + + ! root + do while (associated (p%parent)) + p => p%parent + end do + child_i = i + 1 + if (create) created = .false. ! should always exist + + case (this) + + ! this + p => me + child_i = i + 1 + if (create) created = .false. ! should always exist + + case (start_array,start_array_alt) + + ! start looking for the array element index + array = .true. + + ! get child member from p + if (child_i < i) then + nullify(tmp) + if (create) then + + ! Example: + ! 'aaa.bbb(1)' + ! -> and aaa is a null, need to make it an object + ! + ! What about the case: aaa.bbb(1)(3) ? + ! Is that already handled? + + if (p%var_type==json_null) then ! (**) + ! if p was also created, then we need to + ! convert it into an object here: + p%var_type = json_object + end if + + ! don't want to throw exceptions in this case + call json%get_child(p, path(child_i:i-1), tmp, child_found) + if (.not. child_found) then + ! have to create this child + ! [make it an array] + call json_value_create(tmp) + call json%to_array(tmp,path(child_i:i-1)) + call json%add(p,tmp) + created = .true. + else + created = .false. + end if + else + ! call the normal way + call json%get_child(p, path(child_i:i-1), tmp) + end if + p => tmp + else + child_i = i + 1 ! say, '@(' + cycle + end if + if (.not. associated(p)) then + call json%throw_exception('Error in json_get_by_path_default:'//& + ' Error getting array element',found) + exit + end if + child_i = i + 1 + + case (end_array,end_array_alt) + + if (.not. array) then + call json%throw_exception('Error in json_get_by_path_default:'//& + ' Unexpected '//c,found) + exit + end if + array = .false. + call string_to_integer(path(child_i:i-1),child_i,status_ok) + if (.not. status_ok) then + call json%throw_exception('Error in json_get_by_path_default:'//& + ' Could not convert array index to integer: '//& + trim(path(child_i:i-1)),found) + exit + end if + + nullify(tmp) + if (create) then + ! don't want to throw exceptions in this case + call json%get_child(p, child_i, tmp, child_found) + if (.not. child_found) then + + if (p%var_type==json_null) then ! (**) + ! if p was also created, then we need to + ! convert it into an array here: + p%var_type = json_array + end if + + ! have to create this element + ! [make it a null] + ! (and any missing ones before it) + do j = 1, child_i + nullify(tmp) + call json%get_child(p, j, tmp, child_found) + if (.not. child_found) then + call json_value_create(tmp) + call json%to_null(tmp) ! array element doesn't need a name + call json%add(p,tmp) + if (j==child_i) created = .true. + else + if (j==child_i) created = .false. + end if + end do + + else + created = .false. + end if + + else + ! call the normal way: + call json%get_child(p, child_i, tmp) + end if + + p => tmp + + child_i = i + 1 + + case default + + if (c==json%path_separator) then + + ! get child member from p + if (child_i < i) then + nullify(tmp) + if (create) then + if (p%var_type==json_null) then ! (**) + ! if p was also created, then we need to + ! convert it into an object here: + p%var_type = json_object + end if + + ! don't want to throw exceptions in this case + call json%get_child(p, path(child_i:i-1), tmp, child_found) + if (.not. child_found) then + ! have to create this child + ! [make it an object] + call json_value_create(tmp) + call json%to_object(tmp,path(child_i:i-1)) + call json%add(p,tmp) + created = .true. + else + created = .false. + end if + else + ! call the normal way + call json%get_child(p, path(child_i:i-1), tmp) + end if + p => tmp + else + child_i = i + 1 ! say '$.', '@.', or ').' + cycle + end if + + if (.not. associated(p)) then + call json%throw_exception('Error in json_get_by_path_default:'//& + ' Error getting child member.',found) + exit + end if + + child_i = i + 1 + + end if + + end select + + end do + + if (json%exception_thrown) then + + if (present(found)) then + nullify(p) ! just in case + found = .false. + call json%clear_exceptions() + end if + + else + + ! grab the last child if present in the path + if (child_i <= length) then + nullify(tmp) + if (create) then + if (p%var_type==json_null) then ! (**) + ! if p was also created, then we need to + ! convert it into an object here: + p%var_type = json_object + end if + + call json%get_child(p, path(child_i:i-1), tmp, child_found) + if (.not. child_found) then + ! have to create this child + ! (make it a null since it is the leaf) + call json_value_create(tmp) + call json%to_null(tmp,path(child_i:i-1)) + call json%add(p,tmp) + created = .true. + else + created = .false. + end if + else + ! call the normal way + call json%get_child(p, path(child_i:i-1), tmp) + end if + p => tmp + else + ! we already have p + if (create .and. created) then + ! make leaf p a null, but only + ! if it wasn't there + call json%to_null(p) + end if + end if + + ! error checking + if (associated(p)) then + if (present(found)) found = .true. !everything seems to be ok + else + call json%throw_exception('Error in json_get_by_path_default:'//& + ' variable not found: '//trim(path),found) + if (present(found)) then + found = .false. + call json%clear_exceptions() + end if + end if + + end if + + ! if it had to be created: + if (present(was_created)) was_created = created + + else + if (present(found)) found = .false. + if (present(was_created)) was_created = .false. + end if + + end subroutine json_get_by_path_default +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 2/4/2017 +! +! Returns the [[json_value]] pointer given the path string, +! using the "JSON Pointer" path specification defined by RFC 6901. +! +! Note that trailing whitespace significance and case sensitivity +! are user-specified. To fully conform to the RFC 6901 standard, +! should probably set (via `initialize`): +! +! * `case_sensitive_keys = .true.` [this is the default setting] +! * `trailing_spaces_significant = .true.` [this is *not* the default setting] +! * `allow_duplicate_keys = .false.` [this is *not* the default setting] +! +!### Example +! +!````fortran +! type(json_core) :: json +! type(json_value),pointer :: dat,p +! logical :: found +! !... +! call json%initialize(path_mode=2) +! call json%get(dat,'/data/2/version',p,found) +!```` +! +!### See also +! * [[json_get_by_path_default]] +! * [[json_get_by_path_jsonpath_bracket]] +! +!### Reference +! * [JavaScript Object Notation (JSON) Pointer](https://tools.ietf.org/html/rfc6901) +! +!@note Not doing anything special about the `-` character to index an array. +! This is considered a normal error. +! +!@note Unlike in the default path mode, the array indices here are 0-based +! (in accordance with the RFC 6901 standard) +! +!@warning Not checking if the member that is referenced is unique. +! (according to the standard, evaluation of non-unique references +! should fail). Like [[json_get_by_path_default]], this one will just return +! the first instance it encounters. This might be changed in the future. +! +!@warning I think the standard indicates that the input paths should use +! escaped JSON strings (currently we are assuming they are not escaped). + + subroutine json_get_by_path_rfc6901(json, me, path, p, found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me !! a JSON linked list + character(kind=CK,len=*),intent(in) :: path !! path to the variable + !! (an RFC 6901 "JSON Pointer") + type(json_value),pointer,intent(out) :: p !! pointer to the variable + !! specify by `path` + logical(LK),intent(out),optional :: found !! true if it was found + + character(kind=CK,len=:),allocatable :: token !! a token in the path (between the `/` characters) + integer(IK) :: i !! counter + integer(IK) :: islash_curr !! location of current '/' character in the path + integer(IK) :: islash_next !! location of next '/' character in the path + integer(IK) :: ilen !! length of `path` string + type(json_value),pointer :: tmp !! temporary variable for traversing the structure + integer(IK) :: ival !! integer array index value (0-based) + logical(LK) :: status_ok !! error flag + logical(LK) :: child_found !! for getting child values + + nullify(p) + + if (.not. json%exception_thrown) then + + p => me ! initialize + + if (path/=CK_'') then + + if (path(1:1)==slash) then ! the first character must be a slash + + islash_curr = 1 ! initialize current slash index + + !keep trailing space or not: + if (json%trailing_spaces_significant) then + ilen = len(path) + else + ilen = len_trim(path) + end if + + do + + ! get the next token by finding the slashes + ! + ! 1 2 3 + ! /abc/d/efg + + if (islash_curr==ilen) then + !the last token is an empty string + token = CK_'' + islash_next = 0 ! will signal to stop + else + + ! . + ! '/123/567/' + + ! index in remaining string: + islash_next = index(path(islash_curr+1:ilen),slash) + if (islash_next<=0) then + !last token: + token = path(islash_curr+1:ilen) + else + ! convert to actual index in path: + islash_next = islash_curr + index(path(islash_curr+1:ilen),slash) + if (islash_next>islash_curr+1) then + token = path(islash_curr+1:islash_next-1) + else + !empty token: + token = CK_'' + end if + end if + + end if + + ! remove trailing spaces in the token here if necessary: + if (.not. json%trailing_spaces_significant) & + token = trim(token) + + ! decode the token: + token = decode_rfc6901(token) + + ! now, parse the token: + + ! first see if there is a child with this name + call json%get_child(p,token,tmp,child_found) + if (child_found) then + ! it was found + p => tmp + else + ! No key with this name. + ! Is it an integer? If so, + ! it might be an array index. + status_ok = (len(token)>0) + if (status_ok) then + do i=1,len(token) + ! It must only contain (0..9) characters + ! (it must be unsigned) + if (scan(token(i:i),CK_'0123456789')<1) then + status_ok = .false. + exit + end if + end do + if (status_ok) then + if (len(token)>1 .and. token(1:1)==CK_'0') then + ! leading zeros not allowed for some reason + status_ok = .false. + end if + end if + if (status_ok) then + ! if we make it this far, it should be + ! convertible to an integer, so do it. + call string_to_integer(token,ival,status_ok) + end if + end if + if (status_ok) then + ! ival is an array index (0-based) + call json%get_child(p,ival+1_IK,tmp,child_found) + if (child_found) then + p => tmp + else + ! not found + status_ok = .false. + end if + end if + if (.not. status_ok) then + call json%throw_exception('Error in json_get_by_path_rfc6901: '//& + 'invalid path specification: '//trim(path),found) + exit + end if + end if + + if (islash_next<=0) exit ! finished + + ! set up for next token: + islash_curr = islash_next + + end do + + else + call json%throw_exception('Error in json_get_by_path_rfc6901: '//& + 'invalid path specification: '//trim(path),found) + end if + end if + + if (json%exception_thrown) then + nullify(p) + if (present(found)) then + found = .false. + call json%clear_exceptions() + end if + else + if (present(found)) found = .true. + end if + + else + if (present(found)) found = .false. + end if + + end subroutine json_get_by_path_rfc6901 +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 9/2/2017 +! +! Returns the [[json_value]] pointer given the path string, +! using the "JSON Pointer" path specification defined by the +! JSONPath "bracket-notation". +! +! The first character `$` is optional, and signifies the root +! of the structure. If it is not present, then the first key +! is taken to be in the `me` object. +! +! Single or real quotes may be used. +! +!### Example +! +!````fortran +! type(json_core) :: json +! type(json_value),pointer :: dat,p +! logical :: found +! !... +! call json%initialize(path_mode=3) +! call json%get(dat,"$['store']['book'][1]['title']",p,found) +!```` +! +!### See also +! * [[json_get_by_path_default]] +! * [[json_get_by_path_rfc6901]] +! +!### Reference +! * [JSONPath](http://goessner.net/articles/JsonPath/) +! +!@note Uses 1-based array indices (same as [[json_get_by_path_default]], +! but unlike [[json_get_by_path_rfc6901]] which uses 0-based indices). +! +!@note When `create_it=True`, if the variable already exists and is a type +! that is not compatible with the usage in the `path`, then it is +! destroyed and replaced with what is specified in the `path`. Note that +! this applies the all variables in the path as it is created. Currently, +! this behavior is different from [[json_get_by_path_default]]. +! +!@note JSON `null` values are used here for unknown variables +! when `create_it` is True. +! +!@warning Note that if using single quotes, this routine cannot parse +! a key containing `']`. If using real quotes, this routine +! cannot parse a key containing `"]`. If the key contains both +! `']` and `"]`, there is no way to parse it using this routine. + + subroutine json_get_by_path_jsonpath_bracket(json,me,path,p,found,create_it,was_created) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me !! a JSON linked list + character(kind=CK,len=*),intent(in) :: path !! path to the variable + !! (using JSONPath + !! "bracket-notation") + type(json_value),pointer,intent(out) :: p !! pointer to the variable + !! specify by `path` + logical(LK),intent(out),optional :: found !! true if it was found + logical(LK),intent(in),optional :: create_it !! if a variable is not present + !! in the path, then it is created. + !! the leaf node is returned as + !! a `null` json type and can be + !! changed by the caller. + logical(LK),intent(out),optional :: was_created !! if `create_it` is true, this + !! will be true if the variable + !! was actually created. Otherwise + !! it will be false. + + character(kind=CK,len=:),allocatable :: token !! a token in the path + !! (between the `['']` or + !! `[]` characters) + integer(IK) :: istart !! location of current '[' + !! character in the path + integer(IK) :: iend !! location of current ']' + !! character in the path + integer(IK) :: ival !! integer array index value + logical(LK) :: status_ok !! error flag + type(json_value),pointer :: tmp !! temporary variable for + !! traversing the structure + integer(IK) :: i !! counter + integer(IK) :: ilen !! length of `path` string + logical(LK) :: real_quotes !! if the keys are enclosed in `"`, + !! rather than `'` tokens. + logical(LK) :: create !! if the object is to be created + logical(LK) :: created !! if `create` is true, then this will be + !! true if the leaf object had to be created + integer(IK) :: j !! counter of children when creating object + + !TODO instead of reallocating `token` all the time, just + ! allocate a big size and keep track of the length, + ! then just reallocate only if necessary. + ! [would probably be inefficient if there was a very large token, + ! and then a bunch of small ones... but for similarly-sized ones + ! it should be way more efficient since it would avoid most + ! reallocations.] + + nullify(p) + + if (.not. json%exception_thrown) then + + if (present(create_it)) then + create = create_it + else + create = .false. + end if + + p => me ! initialize + created = .false. + + if (path==CK_'') then + call json%throw_exception('Error in json_get_by_path_jsonpath_bracket: '//& + 'invalid path specification: '//trim(path),found) + else + + if (path(1:1)==root .or. path(1:1)==start_array) then ! the first character must be + ! a `$` (root) or a `[` + ! (element of `me`) + + if (path(1:1)==root) then + ! go to the root + do while (associated (p%parent)) + p => p%parent + end do + if (create) created = .false. ! should always exist + end if + + !path length (don't need trailing spaces:) + ilen = len_trim(path) + + if (ilen>1) then + + istart = 2 ! initialize first '[' location index + + do + + if (istart>ilen) exit ! finished + + ! must be the next start bracket: + if (path(istart:istart) /= start_array) then + call json%throw_exception(& + 'Error in json_get_by_path_jsonpath_bracket: '//& + 'expecting "[", found: "'//trim(path(istart:istart))//& + '" in path: '//trim(path),found) + exit + end if + + ! get the next token by checking: + ! + ! * [''] -- is the token after istart a quote? + ! if so, then search for the next `']` + ! + ! * [1] -- if not, then maybe it is a number, + ! so search for the next `]` + + ! verify length of remaining string + if (istart+2<=ilen) then + + real_quotes = path(istart+1:istart+1) == quotation_mark ! [" + + if (real_quotes .or. path(istart+1:istart+1)==single_quote) then ! [' + + ! it might be a key value: ['abc'] + + istart = istart + 1 ! move counter to ' index + if (real_quotes) then + iend = istart + index(path(istart+1:ilen),& + quotation_mark//end_array) ! "] + else + iend = istart + index(path(istart+1:ilen),& + single_quote//end_array) ! '] + end if + if (iend>istart) then + + ! istart iend + ! | | + ! ['p']['abcdefg'] + + if (iend>istart+1) then + token = path(istart+1:iend-1) + else + token = CK_'' ! blank string + end if + ! remove trailing spaces in + ! the token here if necessary: + if (.not. json%trailing_spaces_significant) & + token = trim(token) + + if (create) then + ! have a token, create it if necessary + + ! we need to convert it into an object here + ! (e.g., if p was also just created) + ! and destroy its data to prevent a memory leak + call json%convert(p,json_object) + + ! don't want to throw exceptions in this case + call json%get_child(p,token,tmp,status_ok) + if (.not. status_ok) then + ! have to create this child + ! [make it a null since we don't + ! know what it is yet] + call json_value_create(tmp) + call json%to_null(tmp,token) + call json%add(p,tmp) + status_ok = .true. + created = .true. + else + ! it was already there. + created = .false. + end if + else + ! have a token, see if it is valid: + call json%get_child(p,token,tmp,status_ok) + end if + + if (status_ok) then + ! it was found + p => tmp + else + call json%throw_exception(& + 'Error in json_get_by_path_jsonpath_bracket: '//& + 'invalid token found: "'//token//& + '" in path: '//trim(path),found) + exit + end if + iend = iend + 1 ! move counter to ] index + else + call json%throw_exception(& + 'Error in json_get_by_path_jsonpath_bracket: '//& + 'invalid path: '//trim(path),found) + exit + end if + + else + + ! it might be an integer value: [123] + + iend = istart + index(path(istart+1:ilen),end_array) ! ] + if (iend>istart+1) then + + ! this should be an integer: + token = path(istart+1:iend-1) + + ! verify that there are no spaces or other + ! characters in the string: + status_ok = .true. + do i=1,len(token) + ! It must only contain (0..9) characters + ! (it must be unsigned) + if (scan(token(i:i),CK_'0123456789')<1) then + status_ok = .false. + exit + end if + end do + if (status_ok) then + call string_to_integer(token,ival,status_ok) + if (status_ok) status_ok = ival>0 ! assuming 1-based array indices + end if + + if (status_ok) then + + ! have a valid integer to use as an index + ! see if this element is really there: + call json%get_child(p,ival,tmp,status_ok) + + if (create .and. .not. status_ok) then + + ! have to create it: + + if (.not.(p%var_type==json_object .or. p%var_type==json_array)) then + ! we need to convert it into an array here + ! (e.g., if p was also just created) + ! and destroy its data to prevent a memory leak + call json%convert(p,json_array) + end if + + ! have to create this element + ! [make it a null] + ! (and any missing ones before it) + do j = 1, ival + nullify(tmp) + call json%get_child(p, j, tmp, status_ok) + if (.not. status_ok) then + call json_value_create(tmp) + call json%to_null(tmp) ! array element doesn't need a name + call json%add(p,tmp) + if (j==ival) created = .true. + else + if (j==ival) created = .false. + end if + end do + status_ok = .true. + + else + created = .false. + end if + + if (status_ok) then + ! found it + p => tmp + else + ! not found + call json%throw_exception(& + 'Error in json_get_by_path_jsonpath_bracket: '//& + 'invalid array index found: "'//token//& + '" in path: '//trim(path),found) + exit + end if + else + call json%throw_exception(& + 'Error in json_get_by_path_jsonpath_bracket: '//& + 'invalid token: "'//token//& + '" in path: '//trim(path),found) + exit + end if + + else + call json%throw_exception(& + 'Error in json_get_by_path_jsonpath_bracket: '//& + 'invalid path: '//trim(path),found) + exit + end if + + end if + + else + call json%throw_exception(& + 'Error in json_get_by_path_jsonpath_bracket: '//& + 'invalid path: '//trim(path),found) + exit + end if + + ! set up for next token: + istart = iend + 1 + + end do + + end if + + else + call json%throw_exception(& + 'Error in json_get_by_path_jsonpath_bracket: '//& + 'expecting "'//root//'", found: "'//path(1:1)//& + '" in path: '//trim(path),found) + end if + + end if + + if (json%exception_thrown) then + nullify(p) + if (present(found)) then + found = .false. + call json%clear_exceptions() + end if + else + if (present(found)) found = .true. + end if + + ! if it had to be created: + if (present(was_created)) was_created = created + + else + if (present(found)) found = .false. + if (present(was_created)) was_created = .false. + end if + + end subroutine json_get_by_path_jsonpath_bracket +!***************************************************************************************** + +!***************************************************************************************** +!> +! Convert an existing JSON variable `p` to a different variable type. +! The existing variable (and its children) is destroyed. It is replaced +! in the structure by a new variable of type `var_type` +! (which can be a `json_null`, `json_object` or `json_array`). +! +!@note This is an internal routine used when creating variables by path. + + subroutine convert(json,p,var_type) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p !! the variable to convert + integer(IK),intent(in) :: var_type !! the variable type to convert `p` to + + type(json_value),pointer :: tmp !! temporary variable + character(kind=CK,len=:),allocatable :: name !! the name of a JSON variable + + logical :: convert_it !! if `p` needs to be converted + + convert_it = p%var_type /= var_type + + if (convert_it) then + + call json%info(p,name=name) ! get existing name + + select case (var_type) + case(json_object) + call json%create_object(tmp,name) + case(json_array) + call json%create_array(tmp,name) + case(json_null) + call json%create_null(tmp,name) + case default + call json%throw_exception('Error in convert: invalid var_type value.') + return + end select + + call json%replace(p,tmp,destroy=.true.) + p => tmp + nullify(tmp) + + end if + + end subroutine convert +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_by_path]] where "path" is kind=CDK. + + subroutine wrap_json_get_by_path(json, me, path, p, found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CDK,len=*),intent(in) :: path + type(json_value),pointer,intent(out) :: p + logical(LK),intent(out),optional :: found + + call json%get(me, to_unicode(path), p, found) + + end subroutine wrap_json_get_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Returns the path to a JSON object that is part +! of a linked list structure. +! +! The path returned would be suitable for input to +! [[json_get_by_path]] and related routines. +! +!@note If an error occurs (which in this case means a malformed +! JSON structure) then an exception will be thrown, unless +! `found` is present, which will be set to `false`. `path` +! will be a blank string. +! +!@note If `json%path_mode/=1`, then the `use_alt_array_tokens` +! and `path_sep` inputs are ignored if present. +! +!@note [http://goessner.net/articles/JsonPath/](JSONPath) (`path_mode=3`) +! does not specify whether or not the keys should be escaped (this routine +! assumes not, as does http://jsonpath.com). +! Also, we are using Fortran-style 1-based array indices, +! not 0-based, to agree with the assumption in `path_mode=1` + + subroutine json_get_path(json, p, path, found, use_alt_array_tokens, path_sep) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! a JSON linked list object + character(kind=CK,len=:),allocatable,intent(out) :: path !! path to the variable + logical(LK),intent(out),optional :: found !! true if there were no problems + logical(LK),intent(in),optional :: use_alt_array_tokens !! if true, then '()' are used for array elements + !! otherwise, '[]' are used [default] + !! (only used if `path_mode=1`) + character(kind=CK,len=1),intent(in),optional :: path_sep !! character to use for path separator + !! (otherwise use `json%path_separator`) + !! (only used if `path_mode=1`) + + character(kind=CK,len=:),allocatable :: name !! variable name + character(kind=CK,len=:),allocatable :: parent_name !! variable's parent name + character(kind=CK,len=max_integer_str_len) :: istr !! for integer to string conversion + !! (array indices) + type(json_value),pointer :: tmp !! for traversing the structure + type(json_value),pointer :: element !! for traversing the structure + integer(IK) :: var_type !! JSON variable type flag + integer(IK) :: i !! counter + integer(IK) :: n_children !! number of children for parent + logical(LK) :: use_brackets !! to use '[]' characters for arrays + logical(LK) :: parent_is_root !! if the parent is the root + character(kind=CK,len=1) :: array_start !! for `path_mode=1`, the character to start arrays + character(kind=CK,len=1) :: array_end !! for `path_mode=1`, the character to end arrays + logical :: consecutive_arrays !! check for array of array case + integer(IK) :: parents_parent_var_type !! `var_type` for parent's parent + + !optional input: + if (present(use_alt_array_tokens)) then + use_brackets = .not. use_alt_array_tokens + else + use_brackets = .true. + end if + + if (json%path_mode==1_IK) then + if (use_brackets) then + array_start = start_array + array_end = end_array + else + array_start = start_array_alt + array_end = end_array_alt + end if + end if + + ! initialize: + consecutive_arrays = .false. + + if (associated(p)) then + + !traverse the structure via parents up to the root + tmp => p + do + + if (.not. associated(tmp)) exit !finished + + !get info about the current variable: + call json%info(tmp,name=name) + if (json%path_mode==2_IK) then + name = encode_rfc6901(name) + end if + + ! if tmp a child of an object, or an element of an array + if (associated(tmp%parent)) then + + !get info about the parent: + call json%info(tmp%parent,var_type=var_type,& + n_children=n_children,name=parent_name) + if (json%path_mode==2_IK) then + parent_name = encode_rfc6901(parent_name) + end if + if (associated(tmp%parent%parent)) then + call json%info(tmp%parent%parent,var_type=parents_parent_var_type) + consecutive_arrays = parents_parent_var_type == json_array .and. & + var_type == json_array + else + consecutive_arrays = .false. + end if + + select case (var_type) + case (json_array) + + !get array index of this element: + element => tmp%parent%children + do i = 1, n_children + if (.not. associated(element)) then + call json%throw_exception('Error in json_get_path: '//& + 'malformed JSON structure. ',found) + exit + end if + if (associated(element,tmp)) then + exit + else + element => element%next + end if + if (i==n_children) then ! it wasn't found (should never happen) + call json%throw_exception('Error in json_get_path: '//& + 'malformed JSON structure. ',found) + exit + end if + end do + select case(json%path_mode) + case(3_IK) + ! JSONPath "bracket-notation" + ! example: `$['key'][1]` + ! [note: this uses 1-based indices] + call integer_to_string(i,int_fmt,istr) + if (consecutive_arrays) then + call add_to_path(start_array//trim(adjustl(istr))//end_array,CK_'') + else + call add_to_path(start_array//single_quote//parent_name//& + single_quote//end_array//& + start_array//trim(adjustl(istr))//end_array,CK_'') + end if + case(2_IK) + ! rfc6901 + ! Example: '/key/0' + call integer_to_string(i-1_IK,int_fmt,istr) ! 0-based index + if (consecutive_arrays) then + call add_to_path(trim(adjustl(istr))) + else + call add_to_path(parent_name//slash//trim(adjustl(istr))) + end if + case(1_IK) + ! default + ! Example: `key[1]` + call integer_to_string(i,int_fmt,istr) + if (consecutive_arrays) then + call add_to_path(array_start//trim(adjustl(istr))//array_end,path_sep) + else + call add_to_path(parent_name//array_start//& + trim(adjustl(istr))//array_end,path_sep) + end if + end select + + if (.not. consecutive_arrays) tmp => tmp%parent ! already added parent name + + case (json_object) + + if (.not. consecutive_arrays) then + ! idea is not to print the array name if + ! it was already printed with the array + + !process parent on the next pass + select case(json%path_mode) + case(3_IK) + call add_to_path(start_array//single_quote//name//& + single_quote//end_array,CK_'') + case default + call add_to_path(name,path_sep) + end select + + end if + + case default + + call json%throw_exception('Error in json_get_path: '//& + 'malformed JSON structure. '//& + 'A variable that is not an object '//& + 'or array should not have a child.',found) + exit + + end select + + else + !the last one: + select case(json%path_mode) + case(3_IK) + call add_to_path(start_array//single_quote//name//& + single_quote//end_array,CK_'') + case default + call add_to_path(name,path_sep) + end select + end if + + if (associated(tmp%parent)) then + !check if the parent is the root: + parent_is_root = (.not. associated(tmp%parent%parent)) + if (parent_is_root) exit + end if + + !go to parent: + tmp => tmp%parent + + end do + + else + call json%throw_exception('Error in json_get_path: '//& + 'input pointer is not associated',found) + end if + + !for errors, return blank string: + if (json%exception_thrown .or. .not. allocated(path)) then + path = CK_'' + else + select case (json%path_mode) + case(3_IK) + ! add the outer level object identifier: + path = root//path + case(2_IK) + ! add the root slash: + path = slash//path + end select + end if + + !optional output: + if (present(found)) then + if (json%exception_thrown) then + found = .false. + call json%clear_exceptions() + else + found = .true. + end if + end if + + contains + + subroutine add_to_path(str,path_sep) + !! prepend the string to the path + implicit none + character(kind=CK,len=*),intent(in) :: str !! string to prepend to `path` + character(kind=CK,len=*),intent(in),optional :: path_sep + !! path separator (default is '.'). + !! (ignored if `json%path_mode/=1`) + + select case (json%path_mode) + case(3_IK) + ! in this case, the options are ignored + if (.not. allocated(path)) then + path = str + else + path = str//path + end if + case(2_IK) + ! in this case, the options are ignored + if (.not. allocated(path)) then + path = str + else + path = str//slash//path + end if + case(1_IK) + ! default path format + if (.not. allocated(path)) then + path = str + else + ! shouldn't add the path_sep for cases like x[1][2] + ! [if current is an array element, and the previous was + ! also an array element] so check for that here: + if (.not. ( str(len(str):len(str))==array_end .and. & + path(1:1)==array_start )) then + if (present(path_sep)) then + ! use user specified: + path = str//path_sep//path + else + ! use the default: + path = str//json%path_separator//path + end if + else + path = str//path + end if + end if + end select + + end subroutine add_to_path + + end subroutine json_get_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Wrapper for [[json_get_path]] where "path" and "path_sep" are kind=CDK. + + subroutine wrap_json_get_path(json, p, path, found, use_alt_array_tokens, path_sep) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p !! a JSON linked list object + character(kind=CDK,len=:),allocatable,intent(out) :: path !! path to the variable + logical(LK),intent(out),optional :: found !! true if there were no problems + logical(LK),intent(in),optional :: use_alt_array_tokens !! if true, then '()' are used + !! for array elements otherwise, + !! '[]' are used [default] + character(kind=CDK,len=1),intent(in),optional :: path_sep !! character to use for path + !! separator (default is '.') + + character(kind=CK,len=:),allocatable :: ck_path !! path to the variable + + ! call the main routine: + if (present(path_sep)) then + call json%get_path(p,ck_path,found,use_alt_array_tokens,to_unicode(path_sep)) + else + call json%get_path(p,ck_path,found,use_alt_array_tokens) + end if + + ! from unicode: + path = ck_path + + end subroutine wrap_json_get_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Convert a string into an integer. +! +!@note Replacement for the `parse_integer` function in the original code. + + function string_to_int(json,str) result(ival) + + implicit none + + class(json_core),intent(inout) :: json + character(kind=CK,len=*),intent(in) :: str !! a string + integer(IK) :: ival !! `str` converted to an integer + + logical(LK) :: status_ok !! error flag for [[string_to_integer]] + + ! call the core routine: + call string_to_integer(str,ival,status_ok) + + if (.not. status_ok) then + ival = 0 + call json%throw_exception('Error in string_to_int: '//& + 'string cannot be converted to an integer: '//& + trim(str)) + end if + + end function string_to_int +!***************************************************************************************** + +!***************************************************************************************** +!> +! Convert a string into a `real(RK)` value. + + function string_to_dble(json,str) result(rval) + + implicit none + + class(json_core),intent(inout) :: json + character(kind=CK,len=*),intent(in) :: str !! a string + real(RK) :: rval !! `str` converted to a `real(RK)` + + logical(LK) :: status_ok !! error flag for [[string_to_real]] + + call string_to_real(str,json%use_quiet_nan,rval,status_ok) + + if (.not. status_ok) then !if there was an error + rval = 0.0_RK + call json%throw_exception('Error in string_to_dble: '//& + 'string cannot be converted to a real: '//& + trim(str)) + end if + + end function string_to_dble +!***************************************************************************************** + +!***************************************************************************************** +!> +! Get an integer value from a [[json_value]]. + + subroutine json_get_integer(json, me, value) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + integer(IK),intent(out) :: value !! the integer value + + logical(LK) :: status_ok !! for [[string_to_integer]] + + value = 0_IK + if ( json%exception_thrown ) return + + if (me%var_type == json_integer) then + value = me%int_value + else + if (json%strict_type_checking) then + if (allocated(me%name)) then + call json%throw_exception('Error in json_get_integer:'//& + ' Unable to resolve value to integer: '//me%name) + else + call json%throw_exception('Error in json_get_integer:'//& + ' Unable to resolve value to integer') + end if + else + !type conversions + select case(me%var_type) + case (json_real) + value = int(me%dbl_value, IK) + case (json_logical) + if (me%log_value) then + value = 1_IK + else + value = 0_IK + end if + case (json_string) + call string_to_integer(me%str_value,value,status_ok) + if (.not. status_ok) then + value = 0_IK + if (allocated(me%name)) then + call json%throw_exception('Error in json_get_integer:'//& + ' Unable to convert string value to integer: '//& + me%name//' = '//trim(me%str_value)) + else + call json%throw_exception('Error in json_get_integer:'//& + ' Unable to convert string value to integer: '//& + trim(me%str_value)) + end if + end if + case default + if (allocated(me%name)) then + call json%throw_exception('Error in json_get_integer:'//& + ' Unable to resolve value to integer: '//me%name) + else + call json%throw_exception('Error in json_get_integer:'//& + ' Unable to resolve value to integer') + end if + end select + end if + end if + + end subroutine json_get_integer +!***************************************************************************************** + +!***************************************************************************************** +!> +! Get an integer value from a [[json_value]], given the path string. + + subroutine json_get_integer_by_path(json, me, path, value, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=*),intent(in) :: path + integer(IK),intent(out) :: value + logical(LK),intent(out),optional :: found + integer(IK),intent(in),optional :: default !! default value if not found + + integer(IK),parameter :: default_if_not_specified = 0_IK + character(kind=CK,len=*),parameter :: routine = CK_'json_get_integer_by_path' + +#include "json_get_scalar_by_path.inc" + + end subroutine json_get_integer_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_integer_by_path]], where "path" is kind=CDK. + + subroutine wrap_json_get_integer_by_path(json, me, path, value, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CDK,len=*),intent(in) :: path + integer(IK),intent(out) :: value + logical(LK),intent(out),optional :: found + integer(IK),intent(in),optional :: default !! default value if not found + + call json%get(me, to_unicode(path), value, found, default) + + end subroutine wrap_json_get_integer_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 5/14/2014 +! +! Get an integer vector from a [[json_value]]. + + subroutine json_get_integer_vec(json, me, vec) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + integer(IK),dimension(:),allocatable,intent(out) :: vec + + logical(LK) :: initialized + + if ( json%exception_thrown ) return + + ! check for 0-length arrays first: + select case (me%var_type) + case (json_array) + if (json%count(me)==0) then + allocate(vec(0)) + return + end if + end select + + initialized = .false. + + !the callback function is called for each element of the array: + call json%get(me, array_callback=get_int_from_array) + + if (json%exception_thrown .and. allocated(vec)) deallocate(vec) + + contains + + subroutine get_int_from_array(json, element, i, count) + + !! callback function for integer + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: element + integer(IK),intent(in) :: i !! index + integer(IK),intent(in) :: count !! size of array + + !size the output array: + if (.not. initialized) then + allocate(vec(count)) + initialized = .true. + end if + + !populate the elements: + call json%get(element, value=vec(i)) + + end subroutine get_int_from_array + + end subroutine json_get_integer_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! If `found` is present, set it it false. + + subroutine flag_not_found(found) + + implicit none + + logical(LK),intent(out),optional :: found + + if (present(found)) found = .false. + + end subroutine flag_not_found +!***************************************************************************************** + +!***************************************************************************************** +!> +! Get an integer vector from a [[json_value]], given the path string. + + subroutine json_get_integer_vec_by_path(json, me, path, vec, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=*),intent(in) :: path + integer(IK),dimension(:),allocatable,intent(out) :: vec + logical(LK),intent(out),optional :: found + integer(IK),dimension(:),intent(in),optional :: default !! default value if not found + + character(kind=CK,len=*),parameter :: routine = CK_'json_get_integer_vec_by_path' + +#include "json_get_vec_by_path.inc" + + end subroutine json_get_integer_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_integer_vec_by_path]], where "path" is kind=CDK + + subroutine wrap_json_get_integer_vec_by_path(json, me, path, vec, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + character(kind=CDK,len=*),intent(in) :: path + integer(IK),dimension(:),allocatable,intent(out) :: vec + logical(LK),intent(out),optional :: found + integer(IK),dimension(:),intent(in),optional :: default !! default value if not found + + call json%get(me,path=to_unicode(path),vec=vec,found=found,default=default) + + end subroutine wrap_json_get_integer_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Get a real value from a [[json_value]]. + + subroutine json_get_real(json, me, value) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + real(RK),intent(out) :: value + + logical(LK) :: status_ok !! for [[string_to_real]] + + value = 0.0_RK + if ( json%exception_thrown ) return + + if (me%var_type == json_real) then + value = me%dbl_value + else + if (json%strict_type_checking) then + if (allocated(me%name)) then + call json%throw_exception('Error in json_get_real:'//& + ' Unable to resolve value to real: '//me%name) + else + call json%throw_exception('Error in json_get_real:'//& + ' Unable to resolve value to real') + end if + else + !type conversions + select case (me%var_type) + case (json_integer) + value = real(me%int_value, RK) + case (json_logical) + if (me%log_value) then + value = 1.0_RK + else + value = 0.0_RK + end if + case (json_string) + call string_to_real(me%str_value,json%use_quiet_nan,value,status_ok) + if (.not. status_ok) then + value = 0.0_RK + if (allocated(me%name)) then + call json%throw_exception('Error in json_get_real:'//& + ' Unable to convert string value to real: '//& + me%name//' = '//trim(me%str_value)) + else + call json%throw_exception('Error in json_get_real:'//& + ' Unable to convert string value to real: '//& + trim(me%str_value)) + end if + end if + case (json_null) + if (ieee_support_nan(value) .and. json%null_to_real_mode/=1_IK) then + select case (json%null_to_real_mode) + case(2_IK) + if (json%use_quiet_nan) then + value = ieee_value(value,ieee_quiet_nan) + else + value = ieee_value(value,ieee_signaling_nan) + end if + case(3_IK) + value = 0.0_RK + end select + else + if (allocated(me%name)) then + call json%throw_exception('Error in json_get_real:'//& + ' Cannot convert null to NaN: '//me%name) + else + call json%throw_exception('Error in json_get_real:'//& + ' Cannot convert null to NaN') + end if + end if + case default + if (allocated(me%name)) then + call json%throw_exception('Error in json_get_real:'//& + ' Unable to resolve value to real: '//me%name) + else + call json%throw_exception('Error in json_get_real:'//& + ' Unable to resolve value to real') + end if + end select + end if + end if + + end subroutine json_get_real +!***************************************************************************************** + +!***************************************************************************************** +!> +! Get a real value from a [[json_value]], given the path. + + subroutine json_get_real_by_path(json, me, path, value, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + character(kind=CK,len=*),intent(in) :: path + real(RK),intent(out) :: value + logical(LK),intent(out),optional :: found + real(RK),intent(in),optional :: default !! default value if not found + + real(RK),parameter :: default_if_not_specified = 0.0_RK + character(kind=CK,len=*),parameter :: routine = CK_'json_get_real_by_path' + +#include "json_get_scalar_by_path.inc" + + end subroutine json_get_real_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_real_by_path]], where "path" is kind=CDK + + subroutine wrap_json_get_real_by_path(json, me, path, value, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + character(kind=CDK,len=*),intent(in) :: path + real(RK),intent(out) :: value + logical(LK),intent(out),optional :: found + real(RK),intent(in),optional :: default !! default value if not found + + call json%get(me,to_unicode(path),value,found,default) + + end subroutine wrap_json_get_real_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 5/14/2014 +! +! Get a real vector from a [[json_value]]. + + subroutine json_get_real_vec(json, me, vec) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + real(RK),dimension(:),allocatable,intent(out) :: vec + + logical(LK) :: initialized + + if ( json%exception_thrown ) return + + ! check for 0-length arrays first: + select case (me%var_type) + case (json_array) + if (json%count(me)==0) then + allocate(vec(0)) + return + end if + end select + + initialized = .false. + + !the callback function is called for each element of the array: + call json%get(me, array_callback=get_real_from_array) + + if (json%exception_thrown .and. allocated(vec)) deallocate(vec) + + contains + + subroutine get_real_from_array(json, element, i, count) + + !! callback function for real + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: element + integer(IK),intent(in) :: i !! index + integer(IK),intent(in) :: count !! size of array + + !size the output array: + if (.not. initialized) then + allocate(vec(count)) + initialized = .true. + end if + + !populate the elements: + call json%get(element, value=vec(i)) + + end subroutine get_real_from_array + + end subroutine json_get_real_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Get a real vector from a [[json_value]], given the path. + + subroutine json_get_real_vec_by_path(json, me, path, vec, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=*),intent(in) :: path + real(RK),dimension(:),allocatable,intent(out) :: vec + logical(LK),intent(out),optional :: found + real(RK),dimension(:),intent(in),optional :: default !! default value if not found + + character(kind=CK,len=*),parameter :: routine = CK_'json_get_real_vec_by_path' + +#include "json_get_vec_by_path.inc" + + end subroutine json_get_real_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_real_vec_by_path]], where "path" is kind=CDK + + subroutine wrap_json_get_real_vec_by_path(json, me, path, vec, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + character(kind=CDK,len=*),intent(in) :: path + real(RK),dimension(:),allocatable,intent(out) :: vec + logical(LK),intent(out),optional :: found + real(RK),dimension(:),intent(in),optional :: default !! default value if not found + + call json%get(me, to_unicode(path), vec, found, default) + + end subroutine wrap_json_get_real_vec_by_path +!***************************************************************************************** + +#ifndef REAL32 +!***************************************************************************************** +!> +! Alternate version of [[json_get_real]] where value=real32. + + subroutine json_get_real32(json, me, value) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + real(real32),intent(out) :: value + + real(RK) :: tmp + + call json%get(me, tmp) + value = real(tmp,real32) + + end subroutine json_get_real32 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_real_by_path]] where value=real32. + + subroutine json_get_real32_by_path(json, me, path, value, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + character(kind=CK,len=*),intent(in) :: path + real(real32),intent(out) :: value + logical(LK),intent(out),optional :: found + real(real32),intent(in),optional :: default !! default value if not found + + real(RK) :: tmp + real(RK) :: tmp_default + + if (present(default)) then + tmp_default = real(default,RK) + call json%get(me, path, tmp, found, tmp_default) + else + call json%get(me, path, tmp, found) + end if + + value = real(tmp,real32) + + end subroutine json_get_real32_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_real32_by_path]], where "path" is kind=CDK + + subroutine wrap_json_get_real32_by_path(json, me, path, value, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + character(kind=CDK,len=*),intent(in) :: path + real(real32),intent(out) :: value + logical(LK),intent(out),optional :: found + real(real32),intent(in),optional :: default !! default value if not found + + call json%get(me,to_unicode(path),value,found,default) + + end subroutine wrap_json_get_real32_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_real_vec]] where `vec` is `real32`. + + subroutine json_get_real32_vec(json, me, vec) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + real(real32),dimension(:),allocatable,intent(out) :: vec + + real(RK),dimension(:),allocatable :: tmp + + call json%get(me, tmp) + if (allocated(tmp)) vec = real(tmp,real32) + + end subroutine json_get_real32_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_real_vec_by_path]] where `vec` is `real32`. + + subroutine json_get_real32_vec_by_path(json, me, path, vec, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=*),intent(in) :: path + real(real32),dimension(:),allocatable,intent(out) :: vec + logical(LK),intent(out),optional :: found + real(real32),dimension(:),intent(in),optional :: default !! default value if not found + + real(RK),dimension(:),allocatable :: tmp + real(RK),dimension(:),allocatable :: tmp_default + + if (present(default)) then + tmp_default = real(default,RK) + call json%get(me, path, tmp, found, tmp_default) + else + call json%get(me, path, tmp, found) + end if + + if (allocated(tmp)) vec = real(tmp,real32) + + end subroutine json_get_real32_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_real32_vec_by_path]], where "path" is kind=CDK + + subroutine wrap_json_get_real32_vec_by_path(json, me, path, vec, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + character(kind=CDK,len=*),intent(in) :: path + real(real32),dimension(:),allocatable,intent(out) :: vec + logical(LK),intent(out),optional :: found + real(real32),dimension(:),intent(in),optional :: default !! default value if not found + + call json%get(me, to_unicode(path), vec, found, default) + + end subroutine wrap_json_get_real32_vec_by_path +!***************************************************************************************** +#endif + +#ifdef REAL128 +!***************************************************************************************** +!> +! Alternate version of [[json_get_real]] where `value` is `real64`. + + subroutine json_get_real64(json, me, value) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + real(real64),intent(out) :: value + + real(RK) :: tmp + + call json%get(me, tmp) + value = real(tmp,real64) + + end subroutine json_get_real64 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_real_by_path]] where `value` is `real64`. + + subroutine json_get_real64_by_path(json, me, path, value, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + character(kind=CK,len=*),intent(in) :: path + real(real64),intent(out) :: value + logical(LK),intent(out),optional :: found + real(real64),intent(in),optional :: default !! default value if not found + + real(RK) :: tmp + + call json%get(me, path, tmp, found, default) + value = real(tmp,real64) + + end subroutine json_get_real64_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_real64_by_path]], where "path" is kind=CDK + + subroutine wrap_json_get_real64_by_path(json, me, path, value, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + character(kind=CDK,len=*),intent(in) :: path + real(real64),intent(out) :: value + logical(LK),intent(out),optional :: found + real(real64),intent(in),optional :: default !! default value if not found + + call json%get(me,to_unicode(path),value,found, default) + + end subroutine wrap_json_get_real64_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_real_vec]] where `vec` is `real64`. + + subroutine json_get_real64_vec(json, me, vec) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + real(real64),dimension(:),allocatable,intent(out) :: vec + + real(RK),dimension(:),allocatable :: tmp + + call json%get(me, tmp) + if (allocated(tmp)) vec = real(tmp,real64) + + end subroutine json_get_real64_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_real_vec_by_path]] where `vec` is `real64`. + + subroutine json_get_real64_vec_by_path(json, me, path, vec, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=*),intent(in) :: path + real(real64),dimension(:),allocatable,intent(out) :: vec + logical(LK),intent(out),optional :: found + real(real64),dimension(:),intent(in),optional :: default !! default value if not found + + real(RK),dimension(:),allocatable :: tmp + + call json%get(me, path, tmp, found, default) + if (allocated(tmp)) vec = real(tmp,real64) + + end subroutine json_get_real64_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_real64_vec_by_path]], where "path" is kind=CDK + + subroutine wrap_json_get_real64_vec_by_path(json, me, path, vec, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: me + character(kind=CDK,len=*),intent(in) :: path + real(real64),dimension(:),allocatable,intent(out) :: vec + logical(LK),intent(out),optional :: found + real(real64),dimension(:),intent(in),optional :: default !! default value if not found + + call json%get(me, to_unicode(path), vec, found, default) + + end subroutine wrap_json_get_real64_vec_by_path +!***************************************************************************************** +#endif + +!***************************************************************************************** +!> +! Get a logical value from a [[json_value]]. +! +!### Note +! If `strict_type_checking` is False, then the following assumptions are made: +! +! * For integers: a value > 0 is True +! * For reals: a value > 0 is True +! * For strings: 'true' is True, and everything else is false. [case sensitive match] + + subroutine json_get_logical(json, me, value) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + logical(LK),intent(out) :: value + + value = .false. + if ( json%exception_thrown ) return + + if (me%var_type == json_logical) then + value = me%log_value + else + if (json%strict_type_checking) then + if (allocated(me%name)) then + call json%throw_exception('Error in json_get_logical: '//& + 'Unable to resolve value to logical: '//& + me%name) + else + call json%throw_exception('Error in json_get_logical: '//& + 'Unable to resolve value to logical') + end if + else + !type conversions + select case (me%var_type) + case (json_integer) + value = (me%int_value > 0_IK) + case (json_real) + value = (me%dbl_value > 0.0_RK) + case (json_string) + value = (me%str_value == true_str) + case default + if (allocated(me%name)) then + call json%throw_exception('Error in json_get_logical: '//& + 'Unable to resolve value to logical: '//& + me%name) + else + call json%throw_exception('Error in json_get_logical: '//& + 'Unable to resolve value to logical') + end if + end select + end if + end if + + end subroutine json_get_logical +!***************************************************************************************** + +!***************************************************************************************** +!> +! Get a logical value from a [[json_value]], given the path. + + subroutine json_get_logical_by_path(json, me, path, value, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=*),intent(in) :: path + logical(LK),intent(out) :: value + logical(LK),intent(out),optional :: found + logical(LK),intent(in),optional :: default !! default value if not found + + logical(LK),parameter :: default_if_not_specified = .false. + character(kind=CK,len=*),parameter :: routine = CK_'json_get_logical_by_path' + +#include "json_get_scalar_by_path.inc" + + end subroutine json_get_logical_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_logical_by_path]], where "path" is kind=CDK + + subroutine wrap_json_get_logical_by_path(json, me, path, value, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CDK,len=*),intent(in) :: path + logical(LK),intent(out) :: value + logical(LK),intent(out),optional :: found + logical(LK),intent(in),optional :: default !! default value if not found + + call json%get(me,to_unicode(path),value,found,default) + + end subroutine wrap_json_get_logical_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 5/14/2014 +! +! Get a logical vector from [[json_value]]. + + subroutine json_get_logical_vec(json, me, vec) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + logical(LK),dimension(:),allocatable,intent(out) :: vec + + logical(LK) :: initialized + + if ( json%exception_thrown ) return + + ! check for 0-length arrays first: + select case (me%var_type) + case (json_array) + if (json%count(me)==0) then + allocate(vec(0)) + return + end if + end select + + initialized = .false. + + !the callback function is called for each element of the array: + call json%get(me, array_callback=get_logical_from_array) + + if (json%exception_thrown .and. allocated(vec)) deallocate(vec) + + contains + + subroutine get_logical_from_array(json, element, i, count) + + !! callback function for logical + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: element + integer(IK),intent(in) :: i !! index + integer(IK),intent(in) :: count !! size of array + + !size the output array: + if (.not. initialized) then + allocate(vec(count)) + initialized = .true. + end if + + !populate the elements: + call json%get(element, value=vec(i)) + + end subroutine get_logical_from_array + + end subroutine json_get_logical_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Get a logical vector from a [[json_value]], given the path. + + subroutine json_get_logical_vec_by_path(json, me, path, vec, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=*),intent(in) :: path + logical(LK),dimension(:),allocatable,intent(out) :: vec + logical(LK),intent(out),optional :: found + logical(LK),dimension(:),intent(in),optional :: default + + character(kind=CK,len=*),parameter :: routine = CK_'json_get_logical_vec_by_path' + +#include "json_get_vec_by_path.inc" + + end subroutine json_get_logical_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_logical_vec_by_path]], where "path" is kind=CDK + + subroutine wrap_json_get_logical_vec_by_path(json, me, path, vec, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CDK,len=*),intent(in) :: path + logical(LK),dimension(:),allocatable,intent(out) :: vec + logical(LK),intent(out),optional :: found + logical(LK),dimension(:),intent(in),optional :: default + + call json%get(me,to_unicode(path),vec,found,default) + + end subroutine wrap_json_get_logical_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Get a character string from a [[json_value]]. + + subroutine json_get_string(json, me, value) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=:),allocatable,intent(out) :: value + + value = CK_'' + if (.not. json%exception_thrown) then + + if (me%var_type == json_string) then + + if (allocated(me%str_value)) then + if (json%unescaped_strings) then + ! default: it is stored already unescaped: + value = me%str_value + else + ! return the escaped version: + call escape_string(me%str_value, value, json%escape_solidus) + end if + else + call json%throw_exception('Error in json_get_string: '//& + 'me%str_value not allocated') + end if + + else + + if (json%strict_type_checking) then + if (allocated(me%name)) then + call json%throw_exception('Error in json_get_string:'//& + ' Unable to resolve value to string: '//me%name) + else + call json%throw_exception('Error in json_get_string:'//& + ' Unable to resolve value to string') + end if + else + + select case (me%var_type) + + case (json_integer) + + if (allocated(me%int_value)) then + value = repeat(space, max_integer_str_len) + call integer_to_string(me%int_value,int_fmt,value) + value = trim(value) + else + call json%throw_exception('Error in json_get_string: '//& + 'me%int_value not allocated') + end if + + case (json_real) + + if (allocated(me%dbl_value)) then + value = repeat(space, max_numeric_str_len) + call real_to_string(me%dbl_value,json%real_fmt,& + json%non_normals_to_null,& + json%compact_real,value) + value = trim(value) + else + call json%throw_exception('Error in json_get_string: '//& + 'me%int_value not allocated') + end if + + case (json_logical) + + if (allocated(me%log_value)) then + if (me%log_value) then + value = true_str + else + value = false_str + end if + else + call json%throw_exception('Error in json_get_string: '//& + 'me%log_value not allocated') + end if + + case (json_null) + + value = null_str + + case default + if (allocated(me%name)) then + call json%throw_exception('Error in json_get_string: '//& + 'Unable to resolve value to characters: '//& + me%name) + else + call json%throw_exception('Error in json_get_string: '//& + 'Unable to resolve value to characters') + end if + end select + + end if + end if + + end if + + end subroutine json_get_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Get a character string from a [[json_value]], given the path. + + subroutine json_get_string_by_path(json, me, path, value, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=*),intent(in) :: path + character(kind=CK,len=:),allocatable,intent(out) :: value + logical(LK),intent(out),optional :: found + character(kind=CK,len=*),intent(in),optional :: default + + character(kind=CK,len=*),parameter :: default_if_not_specified = CK_'' + character(kind=CK,len=*),parameter :: routine = CK_'json_get_string_by_path' + +#include "json_get_scalar_by_path.inc" + + end subroutine json_get_string_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_string_by_path]], where "path" is kind=CDK + + subroutine wrap_json_get_string_by_path(json, me, path, value, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CDK,len=*),intent(in) :: path + character(kind=CK,len=:),allocatable,intent(out) :: value + logical(LK),intent(out),optional :: found + character(kind=CK,len=*),intent(in),optional :: default + + call json%get(me,to_unicode(path),value,found,default) + + end subroutine wrap_json_get_string_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 5/14/2014 +! +! Get a string vector from a [[json_value(type)]]. + + subroutine json_get_string_vec(json, me, vec) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=*),dimension(:),allocatable,intent(out) :: vec + + logical(LK) :: initialized + + if ( json%exception_thrown ) return + + ! check for 0-length arrays first: + select case (me%var_type) + case (json_array) + if (json%count(me)==0) then + allocate(vec(0)) + return + end if + end select + + initialized = .false. + + !the callback function is called for each element of the array: + call json%get(me, array_callback=get_chars_from_array) + + if (json%exception_thrown .and. allocated(vec)) deallocate(vec) + + contains + + subroutine get_chars_from_array(json, element, i, count) + + !! callback function for chars + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: element + integer(IK),intent(in) :: i !! index + integer(IK),intent(in) :: count !! size of array + + character(kind=CK,len=:),allocatable :: cval + + !size the output array: + if (.not. initialized) then + allocate(vec(count)) + initialized = .true. + end if + + !populate the elements: + call json%get(element, value=cval) + if (allocated(cval)) then + vec(i) = cval + deallocate(cval) + else + vec(i) = CK_'' + end if + + end subroutine get_chars_from_array + + end subroutine json_get_string_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Get a string vector from a [[json_value(type)]], given the path. + + subroutine json_get_string_vec_by_path(json, me, path, vec, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=*),intent(in) :: path + character(kind=CK,len=*),dimension(:),allocatable,intent(out) :: vec + logical(LK),intent(out),optional :: found + character(kind=CK,len=*),dimension(:),intent(in),optional :: default + + character(kind=CK,len=*),parameter :: routine = CK_'json_get_string_vec_by_path' + +#include "json_get_vec_by_path.inc" + + end subroutine json_get_string_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_string_vec_by_path]], where "path" is kind=CDK + + subroutine wrap_json_get_string_vec_by_path(json, me, path, vec, found, default) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CDK,len=*),intent(in) :: path + character(kind=CK,len=*),dimension(:),allocatable,intent(out) :: vec + logical(LK),intent(out),optional :: found + character(kind=CK,len=*),dimension(:),intent(in),optional :: default + + call json%get(me,to_unicode(path),vec,found,default) + + end subroutine wrap_json_get_string_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 12/16/2016 +! +! Get a string vector from a [[json_value(type)]]. This is an alternate +! version of [[json_get_string_vec]]. This one returns an allocatable +! length character (where the string length is the maximum length of +! any element in the array). It also returns an integer array of the +! actual sizes of the strings in the JSON structure. +! +!@note This is somewhat inefficient since it does +! cycle through the array twice. +! +!@warning The allocation of `vec` doesn't work with +! gfortran 4.9 or 5 due to compiler bugs + + subroutine json_get_alloc_string_vec(json, me, vec, ilen) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=:),dimension(:),allocatable,intent(out) :: vec + integer(IK),dimension(:),allocatable,intent(out) :: ilen !! the actual length + !! of each character + !! string in the array + + logical(LK) :: initialized !! if the output array has been sized + integer(IK) :: max_len !! the length of the longest string in the array + + if ( json%exception_thrown ) return + + ! check for 0-length arrays first: + select case (me%var_type) + case (json_array) + if (json%count(me)==0) then + allocate(character(kind=CK,len=0) :: vec(0)) + allocate(ilen(0)) + return + end if + end select + + initialized = .false. + + call json%string_info(me,ilen=ilen,max_str_len=max_len) + if (.not. json%exception_thrown) then + ! now get each string using the callback function: + call json%get(me, array_callback=get_chars_from_array) + end if + + if (json%exception_thrown) then + if (allocated(vec)) deallocate(vec) + if (allocated(ilen)) deallocate(ilen) + end if + + contains + + subroutine get_chars_from_array(json, element, i, count) + + !! callback function for chars + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: element + integer(IK),intent(in) :: i !! index + integer(IK),intent(in) :: count !! size of array + + character(kind=CK,len=:),allocatable :: cval !! for getting string + + !size the output array: + if (.not. initialized) then + ! string length long enough to hold the longest one + ! Note that this doesn't work with gfortran 4.9 or 5. + allocate( character(kind=CK,len=max_len) :: vec(count) ) + initialized = .true. + end if + + !populate the elements: + call json%get(element, value=cval) + if (allocated(cval)) then + vec(i) = cval + ilen(i) = len(cval) ! return the actual length + deallocate(cval) + else + vec(i) = CK_'' + ilen(i) = 0 + end if + + end subroutine get_chars_from_array + + end subroutine json_get_alloc_string_vec +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_alloc_string_vec]] where input is the path. +! +! This is an alternate version of [[json_get_string_vec_by_path]]. +! This one returns an allocatable length character (where the string +! length is the maximum length of any element in the array). It also +! returns an integer array of the actual sizes of the strings in the +! JSON structure. +! +!@note An alternative to using this routine is to use [[json_get_array]] with +! a callback function that gets the string from each element and populates +! a user-defined string type. +! +!@note If the `default` argument is used, and `default_ilen` is not present, +! then `ilen` will just be returned as the length of the `default` dummy +! argument (all elements with the same length). + + subroutine json_get_alloc_string_vec_by_path(json,me,path,vec,ilen,found,default,default_ilen) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=*),intent(in) :: path + character(kind=CK,len=:),dimension(:),allocatable,intent(out) :: vec + integer(IK),dimension(:),allocatable,intent(out) :: ilen !! the actual length + !! of each character + !! string in the array + logical(LK),intent(out),optional :: found + character(kind=CK,len=*),dimension(:),intent(in),optional :: default + integer(IK),dimension(:),intent(in),optional :: default_ilen !! the actual + !! length of `default` + + character(kind=CK,len=*),parameter :: routine = CK_'json_get_alloc_string_vec_by_path' + +#include "json_get_vec_by_path_alloc.inc" + + end subroutine json_get_alloc_string_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_alloc_string_vec_by_path]], where "path" is kind=CDK + + subroutine wrap_json_get_alloc_string_vec_by_path(json,me,path,vec,ilen,found,default,default_ilen) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CDK,len=*),intent(in) :: path + character(kind=CK,len=:),dimension(:),allocatable,intent(out) :: vec + integer(IK),dimension(:),allocatable,intent(out) :: ilen !! the actual length + !! of each character + !! string in the array + logical(LK),intent(out),optional :: found + character(kind=CK,len=*),dimension(:),intent(in),optional :: default + integer(IK),dimension(:),intent(in),optional :: default_ilen !! the actual + !! length of `default` + + call json%get(me,to_unicode(path),vec,ilen,found,default,default_ilen) + + end subroutine wrap_json_get_alloc_string_vec_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! This routine calls the user-supplied [[json_array_callback_func]] +! subroutine for each element in the array. +! +!@note For integer, real, logical, and character arrays, +! higher-level routines are provided (see `get` methods), so +! this routine does not have to be used for those cases. + + recursive subroutine json_get_array(json, me, array_callback) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + procedure(json_array_callback_func) :: array_callback + + type(json_value),pointer :: element !! temp variable for getting elements + integer(IK) :: i !! counter + integer(IK) :: count !! number of elements in the array + + if ( json%exception_thrown ) return + + select case (me%var_type) + case (json_array) + count = json%count(me) + element => me%children + do i = 1, count ! callback for each child + if (.not. associated(element)) then + call json%throw_exception('Error in json_get_array: '//& + 'Malformed JSON linked list') + return + end if + call array_callback(json, element, i, count) + if (json%exception_thrown) exit + element => element%next + end do + case default + call json%throw_exception('Error in json_get_array:'//& + ' Resolved value is not an array ') + end select + + end subroutine json_get_array +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 4/28/2016 +! +! Traverse a JSON structure. +! This routine calls the user-specified [[json_traverse_callback_func]] +! for each element of the structure. + + subroutine json_traverse(json,p,traverse_callback) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: p + procedure(json_traverse_callback_func) :: traverse_callback + + logical(LK) :: finished !! can be used to stop the process + + if (.not. json%exception_thrown) call traverse(p) + + contains + + recursive subroutine traverse(p) + + !! recursive [[json_value]] traversal. + + implicit none + + type(json_value),pointer,intent(in) :: p + + type(json_value),pointer :: element !! a child element + integer(IK) :: i !! counter + integer(IK) :: icount !! number of children + + if (json%exception_thrown) return + call traverse_callback(json,p,finished) ! first call for this object + if (finished) return + + !for arrays and objects, have to also call for all children: + if (p%var_type==json_array .or. p%var_type==json_object) then + + icount = json%count(p) ! number of children + if (icount>0) then + element => p%children ! first one + do i = 1, icount ! call for each child + if (.not. associated(element)) then + call json%throw_exception('Error in json_traverse: '//& + 'Malformed JSON linked list') + return + end if + call traverse(element) + if (finished .or. json%exception_thrown) exit + element => element%next + end do + end if + nullify(element) + + end if + + end subroutine traverse + + end subroutine json_traverse +!***************************************************************************************** + +!***************************************************************************************** +!> +! This routine calls the user-supplied array_callback subroutine +! for each element in the array (specified by the path). + + recursive subroutine json_get_array_by_path(json, me, path, array_callback, found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CK,len=*),intent(in) :: path + procedure(json_array_callback_func) :: array_callback + logical(LK),intent(out),optional :: found + + type(json_value),pointer :: p + + if ( json%exception_thrown ) then + if ( present(found) ) found = .false. + return + end if + + nullify(p) + + ! resolve the path to the value + call json%get(me=me, path=path, p=p) + + if (.not. associated(p)) then + call json%throw_exception('Error in json_get_array:'//& + ' Unable to resolve path: '//trim(path),found) + else + call json%get(me=p,array_callback=array_callback) + nullify(p) + end if + if ( json%exception_thrown ) then + if ( present(found) ) then + found = .false. + call json%clear_exceptions() + end if + else + if ( present(found) ) found = .true. + end if + + end subroutine json_get_array_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_get_array_by_path]], where "path" is kind=CDK + + recursive subroutine wrap_json_get_array_by_path(json, me, path, array_callback, found) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer,intent(in) :: me + character(kind=CDK,len=*),intent(in) :: path + procedure(json_array_callback_func) :: array_callback + logical(LK),intent(out),optional :: found + + call json%get(me, to_unicode(path), array_callback, found) + + end subroutine wrap_json_get_array_by_path +!***************************************************************************************** + +!***************************************************************************************** +!> +! Internal routine to be called before parsing JSON. +! Currently, all this does it allocate the `comment_char` if none was specified. + + subroutine json_prepare_parser(json) + + implicit none + + class(json_core),intent(inout) :: json + + if (json%allow_comments .and. .not. allocated(json%comment_char)) then + ! comments are enabled, but user hasn't set the comment char, + ! so in this case use the default: + json%comment_char = CK_'/!#' + end if + + end subroutine json_prepare_parser +!***************************************************************************************** + +!***************************************************************************************** +!> +! Parse the JSON file and populate the [[json_value]] tree. +! +!### Inputs +! +! The inputs can be: +! +! * `file` & `unit` : the specified unit is used to read JSON from file. +! [note if unit is already open, then the filename is ignored] +! * `file` : JSON is read from file using internal unit number +! +!### Example +! +!````fortran +! type(json_core) :: json +! type(json_value),pointer :: p +! call json%load(file='myfile.json', p=p) +!```` +! +!### History +! * Jacob Williams : 01/13/2015 : added read from string option. +! * Izaak Beekman : 03/08/2015 : moved read from string to separate +! subroutine, and error annotation to separate subroutine. +! +!@note When calling this routine, any exceptions thrown from previous +! calls will automatically be cleared. + + subroutine json_parse_file(json, file, p, unit) + + implicit none + + class(json_core),intent(inout) :: json + character(kind=CDK,len=*),intent(in) :: file !! JSON file name + type(json_value),pointer :: p !! output structure + integer(IK),intent(in),optional :: unit !! file unit number (/= 0) + + integer(IK) :: iunit !! file unit actually used + integer(IK) :: istat !! iostat flag + logical(LK) :: is_open !! if the file is already open + logical(LK) :: has_duplicate !! if checking for duplicate keys + character(kind=CK,len=:),allocatable :: path !! path to any duplicate key + + ! clear any exceptions and initialize: + call json%initialize() + call json%prepare_parser() + + if ( present(unit) ) then + + if (unit==0) then + call json%throw_exception('Error in json_parse_file: unit number must not be 0.') + return + end if + + iunit = unit + + ! check to see if the file is already open + ! if it is, then use it, otherwise open the file with the name given. + inquire(unit=iunit, opened=is_open, iostat=istat) + if (istat==0 .and. .not. is_open) then + ! open the file + open ( unit = iunit, & + file = file, & + status = 'OLD', & + action = 'READ', & + form = form_spec, & + access = access_spec, & + iostat = istat & + FILE_ENCODING ) + else + ! if the file is already open, then we need to make sure + ! that it is open with the correct form/access/etc... + end if + + else + + ! open the file with a new unit number: + open ( newunit = iunit, & + file = file, & + status = 'OLD', & + action = 'READ', & + form = form_spec, & + access = access_spec, & + iostat = istat & + FILE_ENCODING ) + + end if + + if (istat==0) then + + if (use_unformatted_stream) then + ! save the file size to be read: + inquire(unit=iunit, size=json%filesize, iostat=istat) + end if + + ! create the value and associate the pointer + call json_value_create(p) + + ! Note: the name of the root json_value doesn't really matter, + ! but we'll allocate something here just in case. + p%name = trim(file) !use the file name + + ! parse as a value + call json%parse_value(unit=iunit, str=CK_'', value=p) + call json%parse_end(unit=iunit, str=CK_'') + + ! check for errors: + if (json%exception_thrown) then + call json%annotate_invalid_json(iunit,CK_'') + else + if (.not. json%allow_duplicate_keys) then + call json%check_for_duplicate_keys(p,has_duplicate,path=path) + if (.not. json%exception_thrown) then + if (has_duplicate) then + call json%throw_exception('Error in json_parse_file: '//& + 'Duplicate key found: '//path) + end if + end if + end if + end if + + ! close the file: + close(unit=iunit, iostat=istat) + + else + + call json%throw_exception('Error in json_parse_file: Error opening file: '//trim(file)) + nullify(p) + + end if + + end subroutine json_parse_file +!***************************************************************************************** + +!***************************************************************************************** +!> +! Parse the JSON string and populate the [[json_value]] tree. +! +!### See also +! * [[json_parse_file]] + + subroutine json_parse_string(json, p, str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p !! output structure + character(kind=CK,len=*),intent(in) :: str !! string with JSON data + + integer(IK),parameter :: iunit = 0 !! indicates that json data will be read from buffer + + logical(LK) :: has_duplicate !! if checking for duplicate keys + character(kind=CK,len=:),allocatable :: path !! path to any duplicate key + + ! clear any exceptions and initialize: + call json%initialize() + call json%prepare_parser() + + ! create the value and associate the pointer + call json_value_create(p) + + ! Note: the name of the root json_value doesn't really matter, + ! but we'll allocate something here just in case. + p%name = CK_'' + + ! parse as a value + call json%parse_value(unit=iunit, str=str, value=p) + call json%parse_end(unit=iunit, str=str) + + if (json%exception_thrown) then + call json%annotate_invalid_json(iunit,str) + else + if (.not. json%allow_duplicate_keys) then + call json%check_for_duplicate_keys(p,has_duplicate,path=path) + if (.not. json%exception_thrown) then + if (has_duplicate) then + call json%throw_exception('Error in json_parse_string: '//& + 'Duplicate key found: '//path) + end if + end if + end if + end if + + end subroutine json_parse_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! An error checking routine to call after a file (or string) has been parsed. +! It will throw an exception if there are any other non-whitespace characters +! in the file. + + subroutine json_parse_end(json, unit, str) + + implicit none + + class(json_core),intent(inout) :: json + integer(IK),intent(in) :: unit !! file unit number + character(kind=CK,len=*),intent(in) :: str !! string containing JSON + !! data (only used if `unit=0`) + + logical(LK) :: eof !! end-of-file flag + character(kind=CK,len=1) :: c !! character read from file + !! (or string) by [[pop_char]] + + ! first check for exceptions: + if (json%exception_thrown) return + + ! pop the next non whitespace character off the file + call json%pop_char(unit, str=str, eof=eof, skip_ws=.true., & + skip_comments=json%allow_comments, popped=c) + + if (.not. eof) then + call json%throw_exception('Error in json_parse_end:'//& + ' Unexpected character found after parsing value. "'//& + c//'"') + end if + + end subroutine json_parse_end +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_parse_string]], where `str` is kind=CDK. + + subroutine wrap_json_parse_string(json, p, str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p !! output structure + character(kind=CDK,len=*),intent(in) :: str !! string with JSON data + + call json%deserialize(p,to_unicode(str)) + + end subroutine wrap_json_parse_string +!***************************************************************************************** + +!***************************************************************************************** +!> +! Generate a warning message if there was an error parsing a JSON +! file or string. + + subroutine annotate_invalid_json(json,iunit,str) + + implicit none + + class(json_core),intent(inout) :: json + integer(IK),intent(in) :: iunit !! file unit number + character(kind=CK,len=*),intent(in) :: str !! string with JSON data + + character(kind=CK,len=:),allocatable :: line !! line containing the error + character(kind=CK,len=:),allocatable :: arrow_str !! arrow string that points + !! to the current character + character(kind=CK,len=max_integer_str_len) :: line_str !! current line number string + character(kind=CK,len=max_integer_str_len) :: char_str !! current character count string + integer(IK) :: i !! line number counter + integer(IK) :: i_nl_prev !! index of previous newline character + integer(IK) :: i_nl !! index of current newline character + + ! If there was an error reading the file, then + ! print the line where the error occurred: + if (json%exception_thrown) then + + !the counters for the current line and the last character read: + call integer_to_string(json%line_count, int_fmt, line_str) + call integer_to_string(json%char_count, int_fmt, char_str) + + !draw the arrow string that points to the current character: + arrow_str = repeat('-',max( 0_IK, json%char_count - 1_IK) )//'^' + + if (json%line_count>0 .and. json%char_count>0) then + + if (iunit/=0) then + + if (use_unformatted_stream) then + call json%get_current_line_from_file_stream(iunit,line) + else + call json%get_current_line_from_file_sequential(iunit,line) + end if + + else + + !get the current line from the string: + ! [this is done by counting the newline characters] + i_nl_prev = 0 !index of previous newline character + i_nl = 2 !just in case line_count = 0 + do i=1,json%line_count + i_nl = index(str(i_nl_prev+1:),newline) + if (i_nl==0) then !last line - no newline character + i_nl = len(str)+1 + exit + end if + i_nl = i_nl + i_nl_prev !index of current newline character + i_nl_prev = i_nl !update for next iteration + end do + line = str(i_nl_prev+1 : i_nl-1) !extract current line + + end if + + else + !in this case, it was an empty line or file + line = CK_'' + end if + + ! add a newline for the error display if necessary: + line = trim(line) + if (len(line)>0) then + i = len(line) + if (line(i:i)/=newline) line = line//newline + else + line = line//newline + end if + + !create the error message: + if (allocated(json%err_message)) then + json%err_message = json%err_message//newline + else + json%err_message = '' + end if + json%err_message = json%err_message//& + 'line: '//trim(adjustl(line_str))//', '//& + 'character: '//trim(adjustl(char_str))//newline//& + line//arrow_str + + if (allocated(line)) deallocate(line) + + end if + + end subroutine annotate_invalid_json +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Rewind the file to the beginning of the current line, and return this line. +! The file is assumed to be opened. +! This is the SEQUENTIAL version (see also [[get_current_line_from_file_stream]]). + + subroutine get_current_line_from_file_sequential(iunit,line) + + implicit none + + integer(IK),intent(in) :: iunit !! file unit number + character(kind=CK,len=:),allocatable,intent(out) :: line !! current line + + character(kind=CK,len=seq_chunk_size) :: chunk !! for reading line in chunks + integer(IK) :: istat !! iostat flag + integer(IK) :: isize !! number of characters read in read statement + + !initialize: + line = CK_'' + + !rewind to beginning of the current record: + backspace(iunit, iostat=istat) + + !loop to read in all the characters in the current record. + ![the line is read in chunks until the end of the line is reached] + if (istat==0) then + do + isize = 0 + read(iunit,fmt='(A)',advance='NO',size=isize,iostat=istat) chunk + if (istat==0) then + line = line//chunk + else + if (isize>0 .and. isize<=seq_chunk_size) line = line//chunk(1:isize) + exit + end if + end do + end if + + end subroutine get_current_line_from_file_sequential +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Rewind the file to the beginning of the current line, and return this line. +! The file is assumed to be opened. +! This is the STREAM version (see also [[get_current_line_from_file_sequential]]). + + subroutine get_current_line_from_file_stream(json,iunit,line) + + implicit none + + class(json_core),intent(inout) :: json + integer(IK),intent(in) :: iunit !! file unit number + character(kind=CK,len=:),allocatable,intent(out) :: line !! current line + + integer(IK) :: istart !! start position of current line + integer(IK) :: iend !! end position of current line + integer(IK) :: ios !! file read `iostat` code + character(kind=CK,len=1) :: c !! a character read from the file + logical :: done !! flag to exit the loop + + istart = json%ipos + do + if (istart<=1) then + istart = 1 + exit + end if + read(iunit,pos=istart,iostat=ios) c + done = ios /= 0_IK + if (.not. done) done = c==newline + if (done) then + if (istart/=1) istart = istart - 1 + exit + end if + istart = istart-1 !rewind until the beginning of the line + end do + iend = json%ipos + do + read(iunit,pos=iend,iostat=ios) c + if (IS_IOSTAT_END(ios)) then + ! account for end of file without linebreak + iend=iend-1 + exit + end if + if (c==newline .or. ios/=0) exit + iend=iend+1 + end do + allocate( character(kind=CK,len=iend-istart+1) :: line ) + read(iunit,pos=istart,iostat=ios) line + + end subroutine get_current_line_from_file_stream +!***************************************************************************************** + +!***************************************************************************************** +!> +! Core parsing routine. + + recursive subroutine parse_value(json, unit, str, value) + + implicit none + + class(json_core),intent(inout) :: json + integer(IK),intent(in) :: unit !! file unit number + character(kind=CK,len=*),intent(in) :: str !! string containing JSON + !! data (only used if `unit=0`) + type(json_value),pointer :: value !! JSON data that is extracted + + logical(LK) :: eof !! end-of-file flag + character(kind=CK,len=1) :: c !! character read from file + !! (or string) by [[pop_char]] +#if defined __GFORTRAN__ + character(kind=CK,len=:),allocatable :: tmp !! this is a work-around for a bug + !! in the gfortran 4.9 compiler. +#endif + + if (.not. json%exception_thrown) then + + !the routine is being called incorrectly. + if (.not. associated(value)) then + call json%throw_exception('Error in parse_value: value pointer not associated.') + return + end if + + ! pop the next non whitespace character off the file + call json%pop_char(unit, str=str, eof=eof, skip_ws=.true., & + skip_comments=json%allow_comments, popped=c) + + if (eof) then + return + else + + select case (c) + + case (start_object) + + ! start object + call json%to_object(value) !allocate class + call json%parse_object(unit, str, value) + + case (start_array) + + ! start array + call json%to_array(value) !allocate class + call json%parse_array(unit, str, value) + + case (end_array) + + ! end an empty array + call json%push_char(c) + if (associated(value)) then + deallocate(value) + nullify(value) + end if + + case (quotation_mark) + + ! string + call json%to_string(value) !allocate class + + select case (value%var_type) + case (json_string) +#if defined __GFORTRAN__ + ! write to a tmp variable because of + ! a bug in 4.9 gfortran compiler. + call json%parse_string(unit,str,tmp) + value%str_value = tmp + if (allocated(tmp)) deallocate(tmp) +#else + call json%parse_string(unit,str,value%str_value) +#endif + end select + + case (CK_'t') !true_str(1:1) gfortran bug work around + + !true + call json%parse_for_chars(unit, str, true_str(2:)) + !allocate class and set value: + if (.not. json%exception_thrown) call json%to_logical(value,.true.) + + case (CK_'f') !false_str(1:1) gfortran bug work around + + !false + call json%parse_for_chars(unit, str, false_str(2:)) + !allocate class and set value: + if (.not. json%exception_thrown) call json%to_logical(value,.false.) + + case (CK_'n') !null_str(1:1) gfortran bug work around + + !null + call json%parse_for_chars(unit, str, null_str(2:)) + if (.not. json%exception_thrown) call json%to_null(value) ! allocate class + + case(CK_'-', CK_'0': CK_'9', CK_'.', CK_'+') + + call json%push_char(c) + call json%parse_number(unit, str, value) + + case default + + call json%throw_exception('Error in parse_value:'//& + ' Unexpected character while parsing value. "'//& + c//'"') + + end select + end if + + end if + + end subroutine parse_value +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Allocate a [[json_value]] pointer and make it a logical(LK) variable. +! The pointer should not already be allocated. +! +!### Example +!````fortran +! type(json_value),pointer :: p +! type(json_core) :: json +! call json%create_logical(p,'value',.true.) +!```` + + subroutine json_value_create_logical(json,p,val,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + logical(LK),intent(in) :: val !! variable value + character(kind=CK,len=*),intent(in) :: name !! variable name + + call json_value_create(p) + call json%to_logical(p,val,name) + + end subroutine json_value_create_logical +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! +! Wrapper for [[json_value_create_logical]] so `create_logical` method can +! be called with name of character kind 'DEFAULT' or 'ISO_10646' + + subroutine wrap_json_value_create_logical(json,p,val,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + logical(LK),intent(in) :: val + character(kind=CDK,len=*),intent(in) :: name + + call json%create_logical(p,val,to_unicode(name)) + + end subroutine wrap_json_value_create_logical +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Allocate a [[json_value]] pointer and make it an integer(IK) variable. +! The pointer should not already be allocated. +! +!### Example +!````fortran +! type(json_value),pointer :: p +! type(json_core) :: json +! call json%create_integer(p,'value',1) +!```` + + subroutine json_value_create_integer(json,p,val,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + integer(IK),intent(in) :: val + character(kind=CK,len=*),intent(in) :: name + + call json_value_create(p) + call json%to_integer(p,val,name) + + end subroutine json_value_create_integer +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! +! A wrapper procedure for [[json_value_create_integer]] so that `create_integer` +! method may be called with either a 'DEFAULT' or 'ISO_10646' character kind +! `name` actual argument. + + subroutine wrap_json_value_create_integer(json,p,val,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + integer(IK),intent(in) :: val + character(kind=CDK,len=*),intent(in) :: name + + call json%create_integer(p,val,to_unicode(name)) + + end subroutine wrap_json_value_create_integer +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Allocate a [[json_value]] pointer and make it a real(RK) variable. +! The pointer should not already be allocated. +! +!### Example +!````fortran +! type(json_value),pointer :: p +! type(json_core) :: json +! call json%create_real(p,'value',1.0_RK) +!```` + + subroutine json_value_create_real(json,p,val,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + real(RK),intent(in) :: val + character(kind=CK,len=*),intent(in) :: name + + call json_value_create(p) + call json%to_real(p,val,name) + + end subroutine json_value_create_real +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! +! A wrapper for [[json_value_create_real]] so that `create_real` method +! may be called with an actual argument corresponding to the dummy argument, +! `name` that may be of 'DEFAULT' or 'ISO_10646' character kind. + + subroutine wrap_json_value_create_real(json,p,val,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + real(RK),intent(in) :: val + character(kind=CDK,len=*),intent(in) :: name + + call json%create_real(p,val,to_unicode(name)) + + end subroutine wrap_json_value_create_real +!***************************************************************************************** + +#ifndef REAL32 +!***************************************************************************************** +!> +! Alternate version of [[json_value_create_real]] where val=real32. +! +!@note The value is converted into a `real(RK)` variable internally. + + subroutine json_value_create_real32(json,p,val,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + real(real32),intent(in) :: val + character(kind=CK,len=*),intent(in) :: name + + call json%create_real(p,real(val,RK),name) + + end subroutine json_value_create_real32 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_create_real32]] where "name" is kind(CDK). + + subroutine wrap_json_value_create_real32(json,p,val,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + real(real32),intent(in) :: val + character(kind=CDK,len=*),intent(in) :: name + + call json%create_real(p,val,to_unicode(name)) + + end subroutine wrap_json_value_create_real32 +!***************************************************************************************** +#endif + +#ifdef REAL128 +!***************************************************************************************** +!> +! Alternate version of [[json_value_create_real]] where val=real64. +! +!@note The value is converted into a `real(RK)` variable internally. + + subroutine json_value_create_real64(json,p,val,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + real(real64),intent(in) :: val + character(kind=CK,len=*),intent(in) :: name + + call json%create_real(p,real(val,RK),name) + + end subroutine json_value_create_real64 +!***************************************************************************************** + +!***************************************************************************************** +!> +! Alternate version of [[json_value_create_real64]] where "name" is kind(CDK). + + subroutine wrap_json_value_create_real64(json,p,val,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + real(real64),intent(in) :: val + character(kind=CDK,len=*),intent(in) :: name + + call json%create_real(p,val,to_unicode(name)) + + end subroutine wrap_json_value_create_real64 +!***************************************************************************************** +#endif + +!***************************************************************************************** +!> author: Jacob Williams +! +! Allocate a json_value pointer and make it a string variable. +! The pointer should not already be allocated. +! +!### Example +!````fortran +! type(json_value),pointer :: p +! type(json_core) :: json +! call json%create_string(p,'value','hello') +!```` + + subroutine json_value_create_string(json,p,val,name,trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: val + character(kind=CK,len=*),intent(in) :: name + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + + call json_value_create(p) + call json%to_string(p,val,name,trim_str,adjustl_str) + + end subroutine json_value_create_string +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! +! Wrap [[json_value_create_string]] so that `create_string` method may be called +! with actual character string arguments for `name` and `val` that are BOTH of +! 'DEFAULT' or 'ISO_10646' character kind. + + subroutine wrap_json_value_create_string(json,p,val,name,trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: val + character(kind=CDK,len=*),intent(in) :: name + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + + call json%create_string(p,to_unicode(val),to_unicode(name),trim_str,adjustl_str) + + end subroutine wrap_json_value_create_string +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Allocate a json_value pointer and make it a null variable. +! The pointer should not already be allocated. +! +!### Example +!````fortran +! type(json_value),pointer :: p +! type(json_core) :: json +! call json%create_null(p,'value') +!```` + + subroutine json_value_create_null(json,p,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name + + call json_value_create(p) + call json%to_null(p,name) + + end subroutine json_value_create_null +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! +! Wrap [[json_value_create_null]] so that `create_null` method may be called with +! an actual argument corresponding to the dummy argument `name` that is either +! of 'DEFAULT' or 'ISO_10646' character kind. + + subroutine wrap_json_value_create_null(json,p,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name + + call json%create_null(p,to_unicode(name)) + + end subroutine wrap_json_value_create_null +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Allocate a [[json_value]] pointer and make it an object variable. +! The pointer should not already be allocated. +! +!### Example +!````fortran +! type(json_value),pointer :: p +! type(json_core) :: json +! call json%create_object(p,'objectname') +!```` +! +!@note The name is not significant for the root structure or an array element. +! In those cases, an empty string can be used. + + subroutine json_value_create_object(json,p,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name + + call json_value_create(p) + call json%to_object(p,name) + + end subroutine json_value_create_object +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! +! Wrap [[json_value_create_object]] so that `create_object` method may be called +! with an actual argument corresponding to the dummy argument `name` that is of +! either 'DEFAULT' or 'ISO_10646' character kind. + + subroutine wrap_json_value_create_object(json,p,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name + + call json%create_object(p,to_unicode(name)) + + end subroutine wrap_json_value_create_object +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Allocate a [[json_value]] pointer and make it an array variable. +! The pointer should not already be allocated. +! +!### Example +!````fortran +! type(json_value),pointer :: p +! type(json_core) :: json +! call json%create_array(p,'arrayname') +!```` + + subroutine json_value_create_array(json,p,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in) :: name + + call json_value_create(p) + call json%to_array(p,name) + + end subroutine json_value_create_array +!***************************************************************************************** + +!***************************************************************************************** +!> author: Izaak Beekman +! +! A wrapper for [[json_value_create_array]] so that `create_array` method may be +! called with an actual argument, corresponding to the dummy argument `name`, +! that is either of 'DEFAULT' or 'ISO_10646' character kind. + + subroutine wrap_json_value_create_array(json,p,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CDK,len=*),intent(in) :: name + + call json%create_array(p,to_unicode(name)) + + end subroutine wrap_json_value_create_array +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Change the [[json_value]] variable to a logical. + + subroutine to_logical(json,p,val,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + logical(LK),intent(in),optional :: val !! if the value is also to be set + !! (if not present, then .false. is used). + character(kind=CK,len=*),intent(in),optional :: name !! if the name is also to be changed. + + !set type and value: + call destroy_json_data(p) + p%var_type = json_logical + allocate(p%log_value) + if (present(val)) then + p%log_value = val + else + p%log_value = .false. !default value + end if + + !name: + if (present(name)) call json%rename(p,name) + + end subroutine to_logical +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Change the [[json_value]] variable to an integer. + + subroutine to_integer(json,p,val,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + integer(IK),intent(in),optional :: val !! if the value is also to be set + !! (if not present, then 0 is used). + character(kind=CK,len=*),intent(in),optional :: name !! if the name is also to be changed. + + !set type and value: + call destroy_json_data(p) + p%var_type = json_integer + allocate(p%int_value) + if (present(val)) then + p%int_value = val + else + p%int_value = 0_IK !default value + end if + + !name: + if (present(name)) call json%rename(p,name) + + end subroutine to_integer +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Change the [[json_value]] variable to a real. + + subroutine to_real(json,p,val,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + real(RK),intent(in),optional :: val !! if the value is also to be set + !! (if not present, then 0.0_rk is used). + character(kind=CK,len=*),intent(in),optional :: name !! if the name is also to be changed. + + !set type and value: + call destroy_json_data(p) + p%var_type = json_real + allocate(p%dbl_value) + if (present(val)) then + p%dbl_value = val + else + p%dbl_value = 0.0_RK !default value + end if + + !name: + if (present(name)) call json%rename(p,name) + + end subroutine to_real +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Change the [[json_value]] variable to a string. +! +!### Modified +! * Izaak Beekman : 02/24/2015 + + subroutine to_string(json,p,val,name,trim_str,adjustl_str) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in),optional :: val !! if the value is also to be set + !! (if not present, then '' is used). + character(kind=CK,len=*),intent(in),optional :: name !! if the name is also to be changed. + logical(LK),intent(in),optional :: trim_str !! if TRIM() should be called for the `val` + !! (only used if `val` is present) + logical(LK),intent(in),optional :: adjustl_str !! if ADJUSTL() should be called for the `val` + !! (only used if `val` is present) + !! (note that ADJUSTL is done before TRIM) + + character(kind=CK,len=:),allocatable :: str !! temp string for `trim()` and/or `adjustl()` + logical :: trim_string !! if the string is to be trimmed + logical :: adjustl_string !! if the string is to be adjusted left + + !set type and value: + call destroy_json_data(p) + p%var_type = json_string + if (present(val)) then + + if (present(trim_str)) then + trim_string = trim_str + else + trim_string = .false. + end if + if (present(adjustl_str)) then + adjustl_string = adjustl_str + else + adjustl_string = .false. + end if + + if (trim_string .or. adjustl_string) then + str = val + if (adjustl_string) str = adjustl(str) + if (trim_string) str = trim(str) + p%str_value = str + else + p%str_value = val + end if + + else + p%str_value = CK_'' ! default value + end if + + !name: + if (present(name)) call json%rename(p,name) + + end subroutine to_string +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Change the [[json_value]] variable to a null. + + subroutine to_null(json,p,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in),optional :: name !! if the name is also to be changed. + + !set type and value: + call destroy_json_data(p) + p%var_type = json_null + + !name: + if (present(name)) call json%rename(p,name) + + end subroutine to_null +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Change the [[json_value]] variable to an object. + + subroutine to_object(json,p,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in),optional :: name !! if the name is also to be changed. + + !set type and value: + call destroy_json_data(p) + p%var_type = json_object + + !name: + if (present(name)) call json%rename(p,name) + + end subroutine to_object +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Change the [[json_value]] variable to an array. + + subroutine to_array(json,p,name) + + implicit none + + class(json_core),intent(inout) :: json + type(json_value),pointer :: p + character(kind=CK,len=*),intent(in),optional :: name !! if the name is also to be changed. + + !set type and value: + call destroy_json_data(p) + p%var_type = json_array + + !name: + if (present(name)) call json%rename(p,name) + + end subroutine to_array +!***************************************************************************************** + +!***************************************************************************************** +!> +! Core parsing routine. + + recursive subroutine parse_object(json, unit, str, parent) + + implicit none + + class(json_core),intent(inout) :: json + integer(IK),intent(in) :: unit !! file unit number (if parsing from a file) + character(kind=CK,len=*),intent(in) :: str !! JSON string (if parsing from a string) + type(json_value),pointer :: parent !! the parsed object will be added as a child of this + + type(json_value),pointer :: pair !! temp variable + logical(LK) :: eof !! end of file flag + character(kind=CK,len=1) :: c !! character returned by [[pop_char]] +#if defined __GFORTRAN__ + character(kind=CK,len=:),allocatable :: tmp !! this is a work-around for a bug + !! in the gfortran 4.9 compiler. +#endif + + if (.not. json%exception_thrown) then + + !the routine is being called incorrectly. + if (.not. associated(parent)) then + call json%throw_exception('Error in parse_object: parent pointer not associated.') + end if + + nullify(pair) !probably not necessary + + ! pair name + call json%pop_char(unit, str=str, eof=eof, skip_ws=.true., & + skip_comments=json%allow_comments, popped=c) + if (eof) then + call json%throw_exception('Error in parse_object:'//& + ' Unexpected end of file while parsing start of object.') + return + else if (end_object == c) then + ! end of an empty object + return + else if (quotation_mark == c) then + call json_value_create(pair) +#if defined __GFORTRAN__ + call json%parse_string(unit,str,tmp) ! write to a tmp variable because of + pair%name = tmp ! a bug in 4.9 gfortran compiler. + deallocate(tmp) +#else + call json%parse_string(unit,str,pair%name) +#endif + if (json%exception_thrown) then + call json%destroy(pair) + return + end if + else + call json%throw_exception('Error in parse_object: Expecting string: "'//c//'"') + return + end if + + ! pair value + call json%pop_char(unit, str=str, eof=eof, skip_ws=.true., & + skip_comments=json%allow_comments, popped=c) + if (eof) then + call json%destroy(pair) + call json%throw_exception('Error in parse_object:'//& + ' Unexpected end of file while parsing object member.') + return + else if (colon_char == c) then + ! parse the value + call json%parse_value(unit, str, pair) + if (json%exception_thrown) then + call json%destroy(pair) + return + else + call json%add(parent, pair) + end if + else + call json%destroy(pair) + call json%throw_exception('Error in parse_object:'//& + ' Expecting : and then a value: '//c) + return + end if + + ! another possible pair + call json%pop_char(unit, str=str, eof=eof, skip_ws=.true., & + skip_comments=json%allow_comments, popped=c) + if (eof) then + call json%throw_exception('Error in parse_object: '//& + 'End of file encountered when parsing an object') + return + else if (delimiter == c) then + ! read the next member + call json%parse_object(unit = unit, str=str, parent = parent) + else if (end_object == c) then + ! end of object + return + else + call json%throw_exception('Error in parse_object: Expecting end of object: '//c) + return + end if + + end if + + end subroutine parse_object +!***************************************************************************************** + +!***************************************************************************************** +!> +! Core parsing routine. + + recursive subroutine parse_array(json, unit, str, array) + + implicit none + + class(json_core),intent(inout) :: json + integer(IK),intent(in) :: unit !! file unit number (if parsing from a file) + character(kind=CK,len=*),intent(in) :: str !! JSON string (if parsing from a string) + type(json_value),pointer :: array + + type(json_value),pointer :: element !! temp variable for array element + logical(LK) :: eof !! end of file flag + character(kind=CK,len=1) :: c !! character returned by [[pop_char]] + + do + + if (json%exception_thrown) exit + + ! try to parse an element value + nullify(element) + call json_value_create(element) + call json%parse_value(unit, str, element) + if (json%exception_thrown) then + if (associated(element)) call json%destroy(element) + exit + end if + + ! parse value will deallocate an empty array value + if (associated(element)) call json%add(array, element) + + ! popped the next character + call json%pop_char(unit, str=str, eof=eof, skip_ws=.true., & + skip_comments=json%allow_comments, popped=c) + + if (eof) then + ! The file ended before array was finished: + call json%throw_exception('Error in parse_array: '//& + 'End of file encountered when parsing an array.') + exit + else if (delimiter == c) then + ! parse the next element + cycle + else if (end_array == c) then + ! end of array + exit + else + call json%throw_exception('Error in parse_array: '//& + 'Unexpected character encountered when parsing array.') + exit + end if + + end do + + end subroutine parse_array +!***************************************************************************************** + +!***************************************************************************************** +!> +! Parses a string while reading a JSON file. +! +!### History +! * Jacob Williams : 6/16/2014 : Added hex validation. +! * Jacob Williams : 12/3/2015 : Fixed some bugs. +! * Jacob Williams : 8/23/2015 : `string` is now returned unescaped. +! * Jacob Williams : 7/21/2018 : moved hex validate to [[unescape_string]]. + + subroutine parse_string(json, unit, str, string) + + implicit none + + class(json_core),intent(inout) :: json + integer(IK),intent(in) :: unit !! file unit number (if + !! parsing from a file) + character(kind=CK,len=*),intent(in) :: str !! JSON string (if parsing + !! from a string) + character(kind=CK,len=:),allocatable,intent(out) :: string !! the string (unescaped + !! if necessary) + + logical(LK) :: eof !! end of file flag + logical(LK) :: escape !! for escape string parsing + character(kind=CK,len=1) :: c !! character returned by [[pop_char]] + integer(IK) :: ip !! index to put next character, + !! to speed up by reducing the number + !! of character string reallocations. + character(kind=CK,len=:),allocatable :: error_message !! for string unescaping + + !at least return a blank string if there is a problem: + string = blank_chunk + + if (.not. json%exception_thrown) then + + !initialize: + escape = .false. + ip = 1 + + do + + !get the next character from the file: + call json%pop_char(unit, str=str, eof=eof, skip_ws=.false., popped=c) + + if (eof) then + + call json%throw_exception('Error in parse_string: Expecting end of string') + return + + else if (c==quotation_mark .and. .not. escape) then !end of string + + exit + + else + + !if the string is not big enough, then add another chunk: + if (ip>len(string)) string = string // blank_chunk + + !append to string: + string(ip:ip) = c + ip = ip + 1 + + ! check for escape character, so we don't + ! exit prematurely if escaping a quotation + ! character: + if (escape) then + escape = .false. + else + escape = (c==backslash) + end if + + end if + + end do + + !trim the string if necessary: + if (ip +! Core parsing routine. +! +! This is used to verify the strings `true`, `false`, and `null` during parsing. + + subroutine parse_for_chars(json, unit, str, chars) + + implicit none + + class(json_core),intent(inout) :: json + integer(IK),intent(in) :: unit !! file unit number (if parsing from a file) + character(kind=CK,len=*),intent(in) :: str !! JSON string (if parsing from a string) + character(kind=CK,len=*),intent(in) :: chars !! the string to check for. + + integer(IK) :: i !! counter + integer(IK) :: length !! trimmed length of `chars` + logical(LK) :: eof !! end of file flag + character(kind=CK,len=1) :: c !! character returned by [[pop_char]] + + if (.not. json%exception_thrown) then + + length = len_trim(chars) + + do i = 1, length + call json%pop_char(unit, str=str, eof=eof, skip_ws=.false., popped=c) + if (eof) then + call json%throw_exception('Error in parse_for_chars:'//& + ' Unexpected end of file while parsing.') + return + else if (c /= chars(i:i)) then + call json%throw_exception('Error in parse_for_chars:'//& + ' Unexpected character: "'//c//'" (expecting "'//& + chars(i:i)//'")') + return + end if + end do + + end if + + end subroutine parse_for_chars +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! date: 1/20/2014 +! +! Read a numerical value from the file (or string). +! The routine will determine if it is an integer or a real, and +! allocate the type accordingly. +! +!@note Complete rewrite of the original FSON routine, which had some problems. + + subroutine parse_number(json, unit, str, value) + + implicit none + + class(json_core),intent(inout) :: json + integer(IK),intent(in) :: unit !! file unit number (if parsing from a file) + character(kind=CK,len=*),intent(in) :: str !! JSON string (if parsing from a string) + type(json_value),pointer :: value + + character(kind=CK,len=:),allocatable :: tmp !! temp string + character(kind=CK,len=:),allocatable :: saved_err_message !! temp error message for + !! string to int conversion + character(kind=CK,len=1) :: c !! character returned by [[pop_char]] + logical(LK) :: eof !! end of file flag + real(RK) :: rval !! real value + integer(IK) :: ival !! integer value + logical(LK) :: first !! first character + logical(LK) :: is_integer !! it is an integer + integer(IK) :: ip !! index to put next character + !! [to speed up by reducing the number + !! of character string reallocations] + + if (.not. json%exception_thrown) then + + tmp = blank_chunk + ip = 1 + first = .true. + is_integer = .true. !assume it may be an integer, unless otherwise determined + + !read one character at a time and accumulate the string: + do + + !get the next character: + call json%pop_char(unit, str=str, eof=eof, skip_ws=.true., popped=c) + + select case (c) + case(CK_'-',CK_'+') !note: allowing a '+' as the first character here. + + if (is_integer .and. (.not. first)) is_integer = .false. + + !add it to the string: + !tmp = tmp // c !...original + if (ip>len(tmp)) tmp = tmp // blank_chunk + tmp(ip:ip) = c + ip = ip + 1 + + case(CK_'.',CK_'E',CK_'e',CK_'D',CK_'d') !can be present in real numbers + + if (is_integer) is_integer = .false. + + !add it to the string: + !tmp = tmp // c !...original + if (ip>len(tmp)) tmp = tmp // blank_chunk + tmp(ip:ip) = c + ip = ip + 1 + + case(CK_'0':CK_'9') !valid characters for numbers + + !add it to the string: + !tmp = tmp // c !...original + if (ip>len(tmp)) tmp = tmp // blank_chunk + tmp(ip:ip) = c + ip = ip + 1 + + case default + + !push back the last character read: + call json%push_char(c) + + !string to value: + if (is_integer) then + ! it is an integer: + ival = json%string_to_int(tmp) + + if (json%exception_thrown .and. .not. json%strict_integer_type_checking) then + ! if it couldn't be converted to an integer, + ! then try to convert it to a real value and see if that works + + saved_err_message = json%err_message ! keep the original error message + call json%clear_exceptions() ! clear exceptions + rval = json%string_to_dble(tmp) + if (json%exception_thrown) then + ! restore original error message and continue + json%err_message = saved_err_message + call json%to_integer(value,ival) ! just so we have something + else + ! in this case, we return a real + call json%to_real(value,rval) + end if + + else + call json%to_integer(value,ival) + end if + + else + ! it is a real: + rval = json%string_to_dble(tmp) + call json%to_real(value,rval) + end if + + exit !finished + + end select + + if (first) first = .false. + + end do + + !cleanup: + if (allocated(tmp)) deallocate(tmp) + + end if + + end subroutine parse_number +!***************************************************************************************** + +!***************************************************************************************** +!> +! Get the next character from the file (or string). +! +!### See also +! * [[push_char]] +! +!@note This routine ignores non-printing ASCII characters +! (`iachar<=31`) that are in strings. + + subroutine pop_char(json,unit,str,skip_ws,skip_comments,eof,popped) + + implicit none + + class(json_core),intent(inout) :: json + integer(IK),intent(in) :: unit !! file unit number (if parsing + !! from a file) + character(kind=CK,len=*),intent(in) :: str !! JSON string (if parsing from a + !! string) -- only used if `unit=0` + logical(LK),intent(in),optional :: skip_ws !! to ignore whitespace [default False] + logical(LK),intent(in),optional :: skip_comments !! to ignore comment lines [default False] + logical(LK),intent(out) :: eof !! true if the end of the file has + !! been reached. + character(kind=CK,len=1),intent(out) :: popped !! the popped character returned + + integer(IK) :: ios !! `iostat` flag + integer(IK) :: str_len !! length of `str` + character(kind=CK,len=1) :: c !! a character read from the file (or string) + logical(LK) :: ignore !! if whitespace is to be ignored + logical(LK) :: ignore_comments !! if comment lines are to be ignored + logical(LK) :: parsing_comment !! if we are in the process + !! of parsing a comment line + + if (.not. json%exception_thrown) then + + eof = .false. + if (.not. present(skip_ws)) then + ignore = .false. + else + ignore = skip_ws + end if + parsing_comment = .false. + if (.not. present(skip_comments)) then + ignore_comments = .false. + else + ignore_comments = skip_comments + end if + + do + + if (json%pushed_index > 0) then + + ! there is a character pushed back on, most likely + ! from the number parsing. Note: this can only occur if + ! reading from a file when use_unformatted_stream=.false. + c = json%pushed_char(json%pushed_index:json%pushed_index) + json%pushed_index = json%pushed_index - 1 + + else + + if (unit/=0) then !read from the file + + !read the next character: + if (use_unformatted_stream) then + + ! in this case, we read the file in chunks. + ! if we already have the character we need, + ! then get it from the chunk. Otherwise, + ! read in another chunk. + if (json%ichunk<1) then + ! read in a chunk: + json%ichunk = 0 + if (json%filesizelen(json%chunk)) then + ! check this just in case + ios = IOSTAT_END + else + ! get the next character from the chunk: + c = json%chunk(json%ichunk:json%ichunk) + if (json%ichunk==len(json%chunk)) then + json%ichunk = 0 ! reset for next chunk + end if + end if + + else + ! a formatted read: + read(unit=unit,fmt='(A1)',advance='NO',iostat=ios) c + end if + json%ipos = json%ipos + 1 + + else !read from the string + + str_len = len(str) !length of the string + if (json%ipos<=str_len) then + c = str(json%ipos:json%ipos) + ios = 0 + else + ios = IOSTAT_END !end of the string + end if + json%ipos = json%ipos + 1 + + end if + + json%char_count = json%char_count + 1 !character count in the current line + + if (IS_IOSTAT_END(ios)) then !end of file + + ! no character to return + json%char_count = 0 + eof = .true. + popped = space ! just to set a value + exit + + else if (IS_IOSTAT_EOR(ios) .or. c==newline) then !end of record + + json%char_count = 0 + json%line_count = json%line_count + 1 + if (ignore_comments) parsing_comment = .false. ! done parsing this comment line + cycle + + end if + + end if + + if (ignore_comments .and. (parsing_comment .or. scan(c,json%comment_char,kind=IK)>0_IK) ) then + + ! skipping the comment + parsing_comment = .true. + cycle + + else if (any(c == control_chars)) then + + ! non printing ascii characters + cycle + + else if (ignore .and. c == space) then + + ! ignoring whitespace + cycle + + else + + ! return the character + popped = c + exit + + end if + + end do + + end if + + end subroutine pop_char +!***************************************************************************************** + +!***************************************************************************************** +!> +! Core routine. +! +!### See also +! * [[pop_char]] +! +!### History +! * Jacob Williams : 5/3/2015 : replaced original version of this routine. + + subroutine push_char(json,c) + + implicit none + + class(json_core),intent(inout) :: json + character(kind=CK,len=1),intent(in) :: c !! to character to push + + character(kind=CK,len=max_numeric_str_len) :: istr !! for error printing + + if (.not. json%exception_thrown) then + + if (use_unformatted_stream) then + + !in this case, c is ignored, and we just + !decrement the stream position counter: + json%ipos = json%ipos - 1 + json%ichunk = json%ichunk - 1 + + else + + json%pushed_index = json%pushed_index + 1 + + if (json%pushed_index>0 .and. json%pushed_index<=len(json%pushed_char)) then + json%pushed_char(json%pushed_index:json%pushed_index) = c + else + call integer_to_string(json%pushed_index,int_fmt,istr) + call json%throw_exception('Error in push_char: '//& + 'invalid valid of pushed_index: '//trim(istr)) + end if + + end if + + !character count in the current line + json%char_count = json%char_count - 1 + + end if + + end subroutine push_char +!***************************************************************************************** + +!***************************************************************************************** +!> author: Jacob Williams +! +! Print any error message, and then clear the exceptions. +! +!@note This routine is used by the unit tests. +! It was originally in json_example.f90, and was +! moved here 2/26/2015 by Izaak Beekman. + + subroutine json_print_error_message(json,io_unit) + + implicit none + + class(json_core),intent(inout) :: json + integer, intent(in), optional :: io_unit !! unit number for + !! printing error message + + character(kind=CK,len=:),allocatable :: error_msg !! error message + logical :: status_ok !! false if there were any errors thrown + + !get error message: + call json%check_for_errors(status_ok, error_msg) + + !print it if there is one: + if (.not. status_ok) then + if (present(io_unit)) then + write(io_unit,'(A)') error_msg + else + write(output_unit,'(A)') error_msg + end if + deallocate(error_msg) + call json%clear_exceptions() + end if + + end subroutine json_print_error_message +!***************************************************************************************** + +!***************************************************************************************** + end module json_value_module +!***************************************************************************************** diff --git a/Equipments/BopStack/ANNULAR.f90 b/Equipments/BopStack/ANNULAR.f90 new file mode 100644 index 0000000..3bad676 --- /dev/null +++ b/Equipments/BopStack/ANNULAR.f90 @@ -0,0 +1,427 @@ +SUBROUTINE ANNULAR + USE VARIABLES + USE CBopControlPanelVariables + USE PressureDisplayVARIABLES + USE CEquipmentsConstants + USE CBopStackVariables + + implicit none + + !write(*,*) 'checkpoint 1' +!===================================================================== +! ANNULAR PREVENTER- BOP CAMERON Type U 5000 +! START CONDITIONS FOR ANNULAR PREVENTER +!===================================================================== + + RAM(1)%SuccessionCounter = RAM(1)%SuccessionCounter + 1 + + if (AnnularValve == 1.0 .and. AnnularFailureMalf==0 .and. RigAirMalf==0 .and. AirMasterValve==1) then + + if (AnnularCloseLedMine == LedOn) then + RETURN + end if + + + if ( RAM(1)%SuccessionCounter /= RAM(1)%SuccessionCounterOld+1 ) then + RAM(1)%SuccessionCounter = 0 ! also in starup + RAM(1)%SuccessionCounterOld = 0 ! also in starup + !return + else + RAM(1)%SuccessionCounterOld= RAM(1)%SuccessionCounter + endif + + + + if ( RAM(1)%SuccessionCounter >= int(2.5/DeltaT_BOP) ) then + !return + + RAM(1)%First_CloseTimecheck= 1 + + AnnularOpenLed = LedOff + AnnularOpenLedMine = LedOff + AnnularCloseLed = LedOn !LedBlinking + + RAM(1)%FourwayValve = 1 + + endif + + endif + + + if (RAM(1)%FourwayValve == 1 .and. p_acc>acc_MinPressure .and. Pannular_reg>AnnularMovingPressure) then ! 1: Open , 0: Close + + + RAM(1)%FourwayValve = 0 + + + + Annular_closed=0 + !Annular_closed_withPossibility= Annular_closed * TD_BOPConnectionPossibility(1) + RAM(1)%vdis_tot=0 + RAM(1)%vdis_bottles=0. + RAM(1)%fvr_air=0. + RAM(1)%vdis_elecp=0. + Qiter=7 + RAM(1)%Qzero=70 + RAM(1)%Q=RAM(1)%Qzero + RAM(1)%flow=70 + tolAnnular=0.0018 + if (finished_Annular==1) then + AnnularLeverOld=-1.0 + else + AnnularLeverOld=AnnularValve + endif + finished_Annular=0 + AnnularIsClosing = .true. + AnnularIsOpening = .false. + + RAM(2)%bop_type = 3 + !AbopAnnular=963.1 !(in^2) + AbopAnnular=(AnnularPreventerClose*231.)/((IDAnnularBase-ODDrillpipe_inAnnularBase)/2.) ! 231 in^3 = 1 gal + NeededVolumeAnnular=AbopAnnular*(IDAnnularBase-max(ODDrillpipe_inAnnular,ODDrillpipe_inAnnularBase))/(2.*231) !=17.98 galon for IDAnnularBase=13 5/8 , ODDrillpipe_inAnnularBase=5 + !WRITE(*,*) 'a)NeededVolumeAnnular=' , NeededVolumeAnnular + !write(*,*) 'close 1' + endif + + + if (AnnularValve == -1.0 .and. AnnularFailureMalf==0 .and. RigAirMalf==0 .and. AirMasterValve==1 ) then + + if (AnnularOpenLedMine == LedOn) then + RETURN + end if + + !CasingPressure : PressureGauges(2) *****temp conditionssssss + + !note: (AnnularSealingPressure) is only for opening while well is pressurised + + + if ( RAM(1)%SuccessionCounter /= RAM(1)%SuccessionCounterOld+1 ) then + RAM(1)%SuccessionCounter = 0 ! also in starup + RAM(1)%SuccessionCounterOld = 0 ! also in starup + !return + else + RAM(1)%SuccessionCounterOld= RAM(1)%SuccessionCounter + endif + + + + if ( RAM(1)%SuccessionCounter >= int(2.5/DeltaT_BOP) ) then + !return + + RAM(1)%First_OpenTimecheck= 1 + + AnnularCloseLed = LedOff !new + AnnularCloseLedMine = LedOff !new + AnnularOpenLed = LedOn !LedBlinking + + RAM(1)%FourwayValve = 1 + + endif + + endif + + + + + + if (RAM(1)%FourwayValve == 1 .and. Pannular_reg>AnnularMovingPressure .and. p_acc>acc_MinPressure & + .and. (Annular_closed==0 .or. (Annular_closed==1 .and.PressureGauges(2) <=100.0) .or. (Annular_closed==1 .and.PressureGauges(2)>100.0 .and. Pannular_reg>=AnnularSealingPressure))) then ! 1: Open , 0: Close + !write(*,*) 'open 2' + + RAM(1)%FourwayValve = 0 + + + + Annular_closed=0 + !Annular_closed_withPossibility= Annular_closed * TD_BOPConnectionPossibility(1) + RAM(1)%vdis_tot=0 + RAM(1)%vdis_bottles=0. + RAM(1)%fvr_air=0. + RAM(1)%vdis_elecp=0. + Qiter=7 + RAM(1)%Qzero=70 + RAM(1)%Q=RAM(1)%Qzero + RAM(1)%flow=70 + tolAnnular=0.0018 + + + + if (finished_Annular==1) then + AnnularLeverOld=1.0 + else + AnnularLeverOld=AnnularValve + endif + finished_Annular=0 + AnnularIsOpening = .true. + AnnularIsClosing = .false. + + + !if (AnnularOpenLed == LedOn) then + ! RETURN + !end if + + + + RAM(1)%bop_type = 3 + !AbopAnnular=758.48 !(in^2) + AbopAnnular=(AnnularPreventerOpen*231)/((IDAnnularBase-max(ODDrillpipe_inAnnular,ODDrillpipe_inAnnularBase))/2.) + NeededVolumeAnnular=AbopAnnular*(IDAnnularBase-ODDrillpipe_inAnnular)/(2.*231) !=14.16 galon for IDAnnularBase=13 5/8 , ODDrillpipe_inAnnular=5 + !write(*,*) 'open 1' + + endif + +!===================================================================== + +if (AnnularIsOpening .or. AnnularIsClosing .or. RAM(1)%Bottles_Charged_MalfActive) then + CALL ANNULAR_SUB +end if + + + + + END SUBROUTINE ANNULAR + + + + + + + + + + + + + + +SUBROUTINE ANNULAR_SUB + USE VARIABLES + USE PressureDisplayVARIABLES + USE CBopControlPanelVariables + USE CEquipmentsConstants + USE CBopStackVariables + USE CSimulationVariables + + implicit none + + + FirstSet= 0 + RamsFirstSet= 0 + + + loop5: do while (finished_Annular==0) + + !write(*,*) 'checkpoint 2' + + + RAM(1)%SuccessionCounter = RAM(1)%SuccessionCounter + 1 + + ! CALL CPU_TIME(Annular_StartTime) + + if (AnnularValve == 1.0 .and. AnnularLeverOld == -1.0 .and. AnnularFailureMalf==0 .and. RigAirMalf==0 .and. AirMasterValve==1) then + if ( RAM(1)%First_CloseTimecheck == 0 ) then + + + + if ( RAM(1)%SuccessionCounter /= RAM(1)%SuccessionCounterOld+1 ) then + RAM(1)%SuccessionCounter = 0 ! also in starup + RAM(1)%SuccessionCounterOld = 0 ! also in starup + !return + else + RAM(1)%SuccessionCounterOld= RAM(1)%SuccessionCounter + endif + + + + if ( RAM(1)%SuccessionCounter >= int(2.5/DeltaT_BOP) ) then + !return + + AnnularOpenLed = LedOff + AnnularOpenLedMine = LedOff + AnnularCloseLed = LedOn !LedBlinking + + RAM(1)%FourwayValve = 1 + + endif + + endif + !write(*,*) 'chekkk 1' + + endif + + + if (RAM(1)%FourwayValve == 1 .and. Pannular_reg>AnnularMovingPressure .and. p_acc>acc_MinPressure) then + !write(*,*) 'close 4' + + RAM(1)%FourwayValve = 0 + + + Annular_closed=0 + !Annular_closed_withPossibility= Annular_closed * TD_BOPConnectionPossibility(1) + p_annular=pa_annular + AnnularLeverOld = AnnularValve + + CALL OpenAnnular + Annular_Situation_forTD= 0 ! open - for TD code + RAM(1)%bop_type = 3 + !AbopAnnular=963.1 !(in^2) + AbopAnnular=(AnnularPreventerClose*231)/((IDAnnularBase-ODDrillpipe_inAnnularBase)/2.) + !write(*,*) 'NeededVolumeShearRams1=',NeededVolumeShearRams + NeededVolumeAnnular=AbopAnnular*(IDAnnular-max(ODDrillpipe_inAnnular,ODDrillpipe_inAnnularBase))/(2*231.) + ! write(*,*) 'NeededVolumeAnnular=',NeededVolumeAnnular + + RAM(1)%vdis_bottles=0. + RAM(1)%fvr_air=0. + RAM(1)%vdis_elecp=0. + AnnularIsClosing = .true. + AnnularIsOpening = .false. + !write(*,*) 'close 2' + + endif + + if (AnnularValve == -1.0 .and. AnnularLeverOld == 1.0 .and. p_acc>acc_MinPressure .and. AnnularFailureMalf==0 .and. RigAirMalf==0 .and. AirMasterValve==1 ) then + + !CasingPressure : PressureGauges(2) *****temp conditionssssss + + !note: (AnnularSealingPressure) is only for opening while well is pressurised + + if ( RAM(1)%First_OpenTimecheck == 0 ) then + + if ( RAM(1)%SuccessionCounter /= RAM(1)%SuccessionCounterOld+1 ) then + RAM(1)%SuccessionCounter = 0 ! also in starup + RAM(1)%SuccessionCounterOld = 0 ! also in starup + !return + else + RAM(1)%SuccessionCounterOld= RAM(1)%SuccessionCounter + endif + + if ( RAM(1)%SuccessionCounter >= int(2.5/DeltaT_BOP) ) then + !return + + AnnularCloseLed = LedOff + AnnularCloseLedMine= LedOff + AnnularOpenLed = LedOn !LedBlinking + + RAM(1)%FourwayValve = 1 + + endif + + endif + !write(*,*) 'chekkk 2' + + endif + + + + if (RAM(1)%FourwayValve == 1 .and. Pannular_reg>AnnularMovingPressure & + .and. (Annular_closed==0 .or. (Annular_closed==1 .and.PressureGauges(2) <=100.0) .or. (Annular_closed==1 .and.PressureGauges(2)>100.0 .and. Pannular_reg>=AnnularSealingPressure))) then + !write(*,*) 'open 4' + + RAM(1)%FourwayValve = 0 + + + Annular_closed=0 + !Annular_closed_withPossibility= Annular_closed * TD_BOPConnectionPossibility(1) + p_annular=pa_annular + AnnularLeverOld = AnnularValve + + CALL OpenAnnular + Annular_Situation_forTD= 0 ! open - for TD code + RAM(1)%bop_type = 3 + !AbopAnnular=758.48 !(in^2) + AbopAnnular=(AnnularPreventerOpen*231)/((IDAnnularBase-ODDrillpipe_inAnnularBase)/2.) + NeededVolumeAnnular=AbopAnnular*(IDAnnularBase-IDAnnular)/(2*231.) + RAM(1)%vdis_bottles=0. + RAM(1)%fvr_air=0. + RAM(1)%vdis_elecp=0. + + AnnularIsOpening = .true. + AnnularIsClosing = .false. + + !write(*,*) 'open 2' + + endif + + + + RAM(1)%First_CloseTimecheck = 0 + RAM(1)%First_OpenTimecheck = 0 + + RAM(1)%time=RAM(1)%time+DeltaT_BOP !overal time (s) + + + + + +!=================================================== +! BOP +!=================================================== +if (Annular_closed==0) then !bop closing + !write(*,*) 'AnnularIsClosing,AnnularIsOpening' , AnnularIsClosing,AnnularIsOpening + call bop_codeAnnular(1) !ramtype=4 1=RNUMBER +endif !bop is closing +!================================================================ +if (Annular_closed==1) then + RAM(1)%Q=0 + !p_bop=pram_reg + p_annular=pa_annular +endif + +RAM(1)%timecounter_ram=RAM(1)%timecounter_ram+1 + + + + + +! MiddleRamsStatus = IDshearBop +! UpperRamsStatus = IDPipeRam1 +! LowerRamsStatus = IDPipeRam2 +! AnnularStatus = IDAnnular +! AccumulatorPressureGauge = p_acc +! ManifoldPressureGauge= pram_reg +! AnnularPressureGauge=Pannular_reg +! +! +! +! WRITE(60,60) RAM(1)%time,RAM(1)%Q,RAM(1)%vdis_tot,p_acc, & +! pram_reg,Pannular_reg,RAM(1)%p_bop,IDshearBop, & +! IDPipeRam1,IDPipeRam2,IDAnnular +!60 FORMAT(11(f18.5)) + + + call sleepqq(100) + + + !CALL CPU_TIME(Annular_EndTime) + ! + ! + !PUMP(1)%INT_CPU_TIME=IDINT((Annular_EndTime-Annular_StartTime)*1000.) + !PUMP(1)%Dt_ref=IDINT(DeltaT_BOP*1000.) + ! + !call sleepqq(PUMP(1)%Dt_ref-PUMP(1)%INT_CPU_TIME) + + + + + +if (Annular_closed==1) then + ! if ((MiddleRamsValve==1. .and. MiddleRamsFailureMalf==0) .or. (MiddleRamsValve==-1.0 .and. MiddleRamsFailureMalf==0) .or. (LowerRamsValve==1. .and. LowerRamsFailureMalf==0) .or. (LowerRamsValve==-1.0 .and. LowerRamsFailureMalf==0) .or. (UpperRamsValve==1. .and. UpperRamsFailureMalf==0) .or. (UpperRamsValve==-1.0 .and. UpperRamsFailureMalf==0) .or. ChokeLineValve==1. .or. ChokeLineValve==-1.0 .or. KillLineValve==1. .or. KillLineValve==-1.0) then + finished_Annular=1 + ! endif +endif + + if (IsStopped == .true.) return + + + end do loop5 !while finished_Annular==0 + + + + + + if ( finished_Annular==1 .and. RAM(1)%Bottles_Charged_MalfActive==.true.) then + call bop_codeAnnular(1) !ramtype=4 1=RNUMBER + call sleepqq(100) + endif + +END SUBROUTINE ANNULAR_SUB \ No newline at end of file diff --git a/Equipments/BopStack/AnnularMain.f90 b/Equipments/BopStack/AnnularMain.f90 new file mode 100644 index 0000000..892730f --- /dev/null +++ b/Equipments/BopStack/AnnularMain.f90 @@ -0,0 +1,65 @@ +module AnnularMain + implicit none + public + contains + + subroutine Annular_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(Annular_Init) + call OnSimulationStop%Add(Annular_Init) + call OnAnnularStep%Add(Annular_Step) + call OnAnnularOutput%Add(Annular_Output) + call OnAnnularMain%Add(AnnularMainBody) + end subroutine + + subroutine Annular_Init + implicit none + end subroutine Annular_Init + + subroutine Annular_Step + CALL ANNULAR + end subroutine Annular_Step + + subroutine Annular_Output + implicit none + end subroutine Annular_Output + + subroutine AnnularMainBody + USE ifport + USE ifmt + USE CSimulationVariables + ! USE BOP + implicit none + + INTEGER :: AnnularDuration + integer,dimension(8) :: AnnularStartTime , AnnularEndTime + + ! CALL BOP_StartUp() + loop1: DO + CALL DATE_AND_TIME(values=AnnularStartTime) + + CALL ANNULAR + + CALL DATE_AND_TIME(values=AnnularEndTime) + + AnnularDuration = 3600000 * (AnnularEndTime(5) - AnnularStartTime(5)) + 60000 * (AnnularEndTime(6) - AnnularStartTime(6)) + 1000 * (AnnularEndTime(7) - AnnularStartTime(7)) + (AnnularEndTime(8) - AnnularStartTime(8)) + + if (AnnularDuration < 100) then + call sleepqq(100 - AnnularDuration) + ELSE + WRITE (*,*) 'Annular BOP run duration exceeded 100 ms and =', AnnularDuration + end if + + IF (IsStopped==.true.) THEN + EXIT loop1 + ENDIF + + + ENDDO loop1 + + + ! CALL DEALLOCATE_ARRAYS() + end subroutine AnnularMainBody + +end module AnnularMain \ No newline at end of file diff --git a/Equipments/BopStack/BOP.f90 b/Equipments/BopStack/BOP.f90 new file mode 100644 index 0000000..e7c5d52 --- /dev/null +++ b/Equipments/BopStack/BOP.f90 @@ -0,0 +1,299 @@ +module BOP + contains + + subroutine BopStack_Step + USE VARIABLES + USE CBopControlPanelVariables + USE TD_GeneralData + ! USE CEquipmentsConstants + use CSounds + implicit none + + + BOP_timeCounter= BOP_timeCounter + 1 + + write(*,*) 'BOP_timeCounter=' , BOP_timeCounter + + AirSupplyPressureGauge= (1 - AirSupplyPressureGaugeMalf)* (1 - RigAirMalf) *120. !psi + + + if (pram_reg < 2300.) then + ShearIsNotAllowed= 1 + else + ShearIsNotAllowed= 0 + endif + + !write(*,*) 'ShearIsNotAllowed=' , ShearIsNotAllowed + + + !TD_AnnularFillingFinal ! (0.0 to 1.0) percentage filled by tool joint + + + !====================================================================== + ! MAIN BODY OF PROGRAM + ! PURPOSE: BOP Control + !====================================================================== + + + !=== Instantaneous Pipe Diameters in Each Ram (Input from TD Module):== + ODDrillpipe_inAnnular= TD_AnnularPreventerDiam * 12.0 ! ft to inch + ODDrillpipe_inPipeRam1= TD_UpperRamDiam * 12.0 + ODDrillpipe_inShearRam= TD_BlindRamDiam * 12.0 + ODDrillpipe_inPipeRam2= TD_LowerRamDiam * 12.0 + + + + !IDshearBopFinal + !IDPipeRam1Final + !IDPipeRam2Final + !IDAnnularFinal + + OpenArea_shearBop= PI*(IDshearBopFinal**2-ODDrillpipe_inShearRam**2)/4.0d0 !D(in), AREA(in^2) + OpenArea_PipeRam1= PI*(IDPipeRam1Final**2-ODDrillpipe_inPipeRam1**2)/4.0d0 !D(in), AREA(in^2) + OpenArea_PipeRam2= PI*(IDPipeRam2Final**2-ODDrillpipe_inPipeRam2**2)/4.0d0 !D(in), AREA(in^2) + OpenArea_Annular= PI*(IDAnnularFinal**2-ODDrillpipe_inAnnular**2)/4.0d0 !D(in), AREA(in^2) + + MinimumOpenArea_InBOP= min(OpenArea_shearBop,OpenArea_PipeRam1,OpenArea_PipeRam2,OpenArea_Annular) + + !TD_BOPConnectionPossibility(j) = 0 or 1 + + !!!AnnularPreventerDiam = TD_BOPConnectionPossibility(1) >> used in Annular code + !!!UpperRamDiam = TD_BOPConnectionPossibility(2) >> used in PipeRam1 code + !!!BlindRamDiam = TD_BOPConnectionPossibility(3) >> used in ShearRam code + !!!LowerRamDiam = TD_BOPConnectionPossibility(4) >> used in PipeRam2 code + + !===================================================================== + !============SEALING PRESSURES TO BE SET IN ANNULAR REGULATOR========== + WellBorePressure=5000. + if (ODDrillpipe_inAnnular>0.) then + if (ODDrillpipe_inAnnular>0. .and. ODDrillpipe_inAnnular<=1.99) then + acoef=-0.2673 + bcoef=994.3 + const=77 + elseif (ODDrillpipe_inAnnular>1.99 .and. ODDrillpipe_inAnnular<=2.375) then + acoef=-0.2539 + bcoef=994.3 + const=73.15 + elseif (ODDrillpipe_inAnnular>2.375 .and. ODDrillpipe_inAnnular<=2.875) then + acoef=-0.2005 + bcoef=745.9 + const=57.75 + elseif (ODDrillpipe_inAnnular>2.875 .and. ODDrillpipe_inAnnular<=3.5) then + acoef=-0.1871 + bcoef=696.1 + const=53.9 + elseif (ODDrillpipe_inAnnular>3.5 .and. ODDrillpipe_inAnnular<=5) then + acoef=-0.1733 + bcoef=647 + const=50 + elseif (ODDrillpipe_inAnnular>5 .and. ODDrillpipe_inAnnular<=10) then + acoef=-0.1604 + bcoef=596.7 + const=46.2 + endif + AnnularSealingPressure= max((acoef*WellBorePressure+bcoef), const) !(psi) + else !CSO(COMPLETE SHUT OFF) ODDrillpipe_inAnnular=0 + AnnularSealingPressure= 1150. !(psi) + endif + + !===================================================================== + ! BYPASS POSITION + !===================================================================== + if(ByePassValve == -1.0 .and. AirMasterValve==1) then + ByPassOld= -1.0 + !write(*,*) 'ByePassValve to -1' ,ByePassValve + elseif(ByePassValve == 1.0 .and. AirMasterValve==1) then + ByPassOld= 1.0 + !write(*,*) 'ByePassValve to 1=' ,ByePassValve + endif + !write(*,*) 'ByePassValve,ByPassOld=' ,ByePassValve,ByPassOld + !===================================================================== + !WRITE(*,*) 'AnnularRegulatorSetControl====' , AnnularRegulatorSetControl + Pannular_regset=min(AnnularRegulatorSetControl,1700.) ! for changing its set conditions instantaneously + if (Annular_closed==1) then + if (FirstSet==1) then ! code start + Pannular_reg= Pannular_regset + endif + + if (FirstSet==0) then ! durig run, but annular is not closing or opening + Pannular_reg= min(p_acc,Pannular_regset) + endif + endif + + !=================================================================== + ! Annular Preventer Pressure Rise On Tooljoint + !=================================================================== + if ( Annular_Situation_forTD == 1 .and. TD_AnnularFillingFinal==0.0 ) then ! Annular_Situation_forTD= 1 ! closed - for TD code + AnnPressureRise= .true. + elseif ( Annular_Situation_forTD == 0 ) then + AnnPressureRise= .false. + endif + + if (AnnPressureRise == .true.) then + Pannular_reg= Pannular_reg + 200. * TD_AnnularFillingFinal ! 200 psi pressure rise when 100% of AnnPreventer is filled by tool joint + !TD_AnnularFillingFinal ! (0.0 to 1.0) percentage filled by tool joint + endif + !=================================================================== + if (FirstSet== 1) then + !new= (1 - AnnularPressureGaugeMalf) * min(AnnularRegulatorSetControl,1700.) + CALL Pannular_regDelay%AddToFirst( (1 - AnnularPressureGaugeMalf) * min(AnnularRegulatorSetControl,1700.) ) + CALL Pannular_regDelay%Remove(Pannular_regDelay%Length()) + AnnularPressureGauge= Pannular_regDelay%Last() + !AnnularPressureGauge= (1 - AnnularPressureGaugeMalf) * min(AnnularRegulatorSetControl,1700.) + !write(*,*) 'set 1' , AnnularPressureGauge + else !FirstSet== 0 + !new= (1 - AnnularPressureGaugeMalf) * Pannular_reg + + CALL Pannular_regDelay%AddToFirst( (1 - AnnularPressureGaugeMalf) * Pannular_reg) + CALL Pannular_regDelay%Remove(Pannular_regDelay%Length()) + AnnularPressureGauge= Pannular_regDelay%Last() + !AnnularPressureGauge= (1 - AnnularPressureGaugeMalf) * Pannular_reg + !write(*,*) 'set 0' , AnnularPressureGauge + endif + + !=================================================== + ! AIR OPERATED PUMP CODE- START + !=================================================== + if (p_accAIR_PUMPOFF .and. airp_switch==1) then + airp_switch=0 + call SetSoundKoomeyAirPump(airp_switch) + endif + + if (p_accELECTRIC_PUMPOFF .and. elecp_switch==1) then + elecp_switch=0 + endif + + !write(*,*) 'airp_switch,elecp_switch=' , airp_switch,elecp_switch + !================CHARGING BOTTLES======================= + if (airp_switch==1 .or. elecp_switch==1) then + if (Annular_closed==1 .and. ShearBop_closed==1 .and. PipeRam1_closed==1 .and. PipeRam2_closed==1 .and. ChokeLine_closed==1 .and. KillLine_closed==1) then + call pumps_charge_bottle() + ! increases volume and pressure in the bottles + if (p_acc>acc_ChargedPressure) then + p_acc=acc_ChargedPressure + if (AnnularLeakMalf== 0) then + !finished_Annular=1 + RAM(1)%Bottles_Charged_MalfActive= .false. + else + finished_Annular=0 + RAM(1)%Bottles_Charged_MalfActive= .true. + !fvr=fvr-2.5 + endif + if (UpperRamsLeakMalf== 0) then + !finished_pipe1=1 + RAM(2)%Bottles_Charged_MalfActive= .false. + else + finished_pipe1=0 + RAM(2)%Bottles_Charged_MalfActive= .true. + !fvr=fvr-2.5 + endif + + if (LowerRamsLeakMalf== 0) then + !finished_pipe2=1 + RAM(3)%Bottles_Charged_MalfActive= .false. + else + finished_pipe2=0 + RAM(3)%Bottles_Charged_MalfActive= .true. + !fvr=fvr-2.5 + endif + if (MiddleRamsLeakMalf== 0) then + !finished_shear=1 + RAM(4)%Bottles_Charged_MalfActive= .false. + else + finished_shear=0 + RAM(4)%Bottles_Charged_MalfActive= .true. + !fvr=fvr-2.5 + endif + + finished_KillLine=1 + finished_ChokeLine=1 + + + if (AnnularLeakMalf== 0 .and. UpperRamsLeakMalf== 0 .and. LowerRamsLeakMalf== 0 .and. MiddleRamsLeakMalf== 0) then + elecp_switch=0 + airp_switch=0 + endif + endif + endif + endif + + !======================================================= + if (elecp_switch==1 .and. AccPupmsFailMalf==0) then !on position + deltav_elecp=QELECTRIC_PUMP*DeltaT_BOP/60. !QELECTRIC_PUMP(gpm), deltav_elecp(gal), DeltaT_BOP(0.1 sec) + SoundKoomeyElectricPump= .True. + else + deltav_elecp=0 + SoundKoomeyElectricPump= .false. + endif + + !call SetSoundKoomeyElectricPump(SoundKoomeyElectricPump) + if (airp_switch==1 .and. AccPupmsFailMalf==0) then !on position + call airpump_code() !ramtype=2 + end if ! if (airp_switch==1) then !on position + + + !===============AIR OPERATED PUMP CODE- END================ + if (ShearBop_closed==1 .and. PipeRam1_closed==1 .and. PipeRam2_closed==1 .and. ChokeLine_closed==1 .and. KillLine_closed==1) then + + !write(*,*) ' All Rams are closed' + + if(ByPassOld== -1.0) then ! (OPEN POSITION) + !old=pram_reg + !new=p_acc- MAXVAL(RAM%loss_before) + !difference= new-old + PressureDifference= p_acc- MAXVAL(RAM%loss_before) - pram_reg + if (ABS(PressureDifference) > BaseDifferenceP) then !BaseDifferenceP= 300. psi + pram_reg= pram_reg + (PressureDifference/PressureDifferenceSteps) ! PressureDifferenceSteps = 20. + else + pram_reg= p_acc- MAXVAL(RAM%loss_before) ! mishe khate paeen ye shart gozasht ke pacc=3000 shod, in adad dige kam nashe + endif + + elseif (ByPassOld== 1.0) then ! (CLOSE POSITION) + !pram_reg= prams_regset + !if (RamsFirstSet==1) then + !write(*,*) 'bypass CLOSE POSITION' + !old=pram_reg + !new=prams_regset + !difference= new-old + PressureDifference= prams_regset - pram_reg + !write(*,*) 'PressureDifference, prams_regset , pram_reg=' , PressureDifference, prams_regset , pram_reg + + if (ABS(PressureDifference) > BaseDifferenceP) then !BaseDifferenceP= 200. ! psi in starup + pram_reg= pram_reg + (PressureDifference/PressureDifferenceSteps) ! PressureDifferenceSteps = 20. in startup + else + pram_reg= prams_regset + endif + !write(*,*) 'pram_reg=' , pram_reg + + !endif ! if (RamsFirstSet==1) then + endif + + + endif + + MiddleRamsStatus = IDshearBop + UpperRamsStatus = IDPipeRam1 + LowerRamsStatus = IDPipeRam2 + AnnularStatus = IDAnnular + AccumulatorPressureGauge = (1 - AccumulatorPressureGaugeMalf) * p_acc + ManifoldPressureGauge= (1 - ManifoldPressureGaugeMalf) * pram_reg + !AnnularPressureGauge=Pannular_reg + ! + ! WRITE(60,60) RAM(2)%time,RAM(2)%Q,RAM(2)%vdis_tot,p_acc, & + ! pram_reg,Pannular_reg,RAM(2)%p_bop,IDshearBop, & + ! IDPipeRam1,IDPipeRam2,IDAnnular + !60 FORMAT(11(f18.5)) + !WRITE(*,*) 'IDAnnular=' , IDAnnular + !write(*,*) 'elecp_switch=' , elecp_switch + !call sleepqq(100) + end subroutine BopStack_Step + +end module BOP \ No newline at end of file diff --git a/Equipments/BopStack/BOPstartup.f90 b/Equipments/BopStack/BOPstartup.f90 new file mode 100644 index 0000000..f95c4e1 --- /dev/null +++ b/Equipments/BopStack/BOPstartup.f90 @@ -0,0 +1,324 @@ + +SUBROUTINE BOP_StartUp() +USE VARIABLES +USE CAccumulatorVariables +USE CBopStackVariables +USE CBopControlPanelVariables +USE CEquipmentsConstants +implicit none + +integer i + + +!UpperRamsFailureMalf=0 +!AnnularFailureMalf=0 +!LowerRamsFailureMalf=0 +!MiddleRamsFailureMalf=0 +!UpperRamsLeakMalf=0 +!LowerRamsLeakMalf=0 +!MiddleRamsLeakMalf=0 +!AnnularLeakMalf=0 +!AccPupmsFailMalf=0 +!AirSupplyPressureGauge=0 +!======================= SETTING VARIABLES + +BOP_timeCounter= 0 + +!============== FOR MANIFOLD VALVES CODE===================== +CALL OpenAnnular +CALL OpenUpperRams +CALL OpenMiddleRams +CALL CloseKillLine +CALL CloseChokeLine +CALL OpenLowerRams + +Annular_Situation_forTD= 0 ! open - for TD code +ShearBop_Situation_forTD= 0 ! open - for TD code +PipeRam1_Situation_forTD= 0 ! open - for TD code +PipeRam2_Situation_forTD= 0 ! open - for TD code +!====================================================================== + +CALL LOSS_INPUTS() +! +!OPEN(50,FILE='AIRPUMP_OUTPUTS.DAT') +!OPEN(60,FILE='RAMS_OUTPUTS.DAT') +!====================================================================== +! GET INPUTS +!====================================================================== + +RAM%SuccessionCounter = 0 +RAM%SuccessionCounterOld = 0 + +RAM%First_CloseTimecheck= 0 +RAM%First_OpenTimecheck= 0 + + + +Cumulative_AirVolume= 0.0 + + +bottle_capacity=10 !(GALON) +nobottles=NumberOfBottels + + + + + + + +!fvr_tot=40 !(GALON) IN CHARGED POSITION +prams_regset=1500 !RamsReglatorSet !=1500 DEFAULT regulator set pressure (PSI) +acc_ChargedPressure=3000 !charged(PSI) +acc_MinPressure=AccumulatorMinimumOperatingPressure !1200 !discharged(PSI) +!acc_precharge=1000 + + +fvr_tot=(-2451*(acc_ChargedPressure**(-0.8202))+8.435)*nobottles ! IT IS WRRITEN FOR PRECHARGE 1000 PSI FROM ITS CURVE + +!write(*,*) 'fvr_tot=',fvr_tot + +!ELECTRIC_PUMPON=2800 +ELECTRIC_PUMPON=StartPressure +!ELECTRIC_PUMPOFF=acc_ChargedPressure !=3000 psi +ELECTRIC_PUMPOFF=StopPressure +!QELECTRIC_PUMP=12 !(gpm) +QELECTRIC_PUMP=ElectricPumpOutput + + + +!AIR_PUMPON=2600 +AIR_PUMPON=StartPressure2 +!AIR_PUMPOFF=2900 +AIR_PUMPOFF=StopPressure2 + + + +RAM%tol=0.0037 !%=(2700-2600)/2700 +RAM%tolzero=RAM%tol + +tolAnnular=0.0018 !=(2900-2895)/2900 +tolzeroAnnular=tolAnnular +!======================OTHER INPUTS(CONSTANTS)=========================== +pa=300 !(PSI) +p_shear=1200 !(PSI) +!p_shear=2423.1 !(PSI) +pb=p_shear-pa +pa_annular=100 !(psi) + + + + +IDAnnularBase=13.625 !(inch) +IDAnnular=IDAnnularBase +ODDrillpipe_inAnnularBase=5. ! so 18 gal is for complete closing of annular +ODDrillpipe_inAnnular=5. ! initial +AnnularMovingPressure=360. !(psi) +IDAnnularFinal= IDAnnular + + +IDshearBopBase=13.625 !(inch) +IDshearBop=IDshearBopBase +ODDrillpipe_inShearRamBase=5 !initial +ODDrillpipe_inShearRam=5 !initial +IDshearBopFinal= IDshearBop + +IDPipeRamBase=13.625 !(inch) +IDPipeRam1=IDPipeRamBase +ODDrillpipe_inPipeRam1Base=5 !initial +ODDrillpipe_inPipeRam1=5 !initial +IDPipeRam1Final= IDPipeRam1 + + +IDPipeRam2=IDPipeRamBase !(inch) +ODDrillpipe_inPipeRam2Base=5 !initial +ODDrillpipe_inPipeRam2=5 !initial +IDPipeRam2Final= IDPipeRam2 + +IDChokeLineBase=8.6 !(inch) +IDChokeLine=IDChokeLineBase +ODDrillpipe_inChokeLineBase=5 +ODDrillpipe_inChokeLine=5 + +IDKillLineBase=8.6 !(inch) +IDKillLine=IDKillLineBase +ODDrillpipe_inKillLineBase=5 +ODDrillpipe_inKillLine=5 + + +!va=4 !(liter) +!vb=8 !(liter) + +!cv=2; !flow coefficinet of regulator + +RAM_COURSE=320.2 !milimeter +H_REGRAM=0 !(m)<<<<<<<<<<<<<<<<<<<<<<<< +H_ShearRamBop=(GroundLevel-BlindRamHeight)*0.3048 ! foot to meter +H_PipeRam1Bop=(GroundLevel-UpperRamHeight)*0.3048 ! foot to meter +H_PipeRam2Bop=(GroundLevel-LowerRamHeight)*0.3048 ! foot to meter +H_AnnularBop=(GroundLevel-AnnularPreventerHeight)*0.3048 ! foot to meter +H_ChokeLineBop=(GroundLevel-KillHeight)*0.3048 ! foot to meter +H_KillLineBop=(GroundLevel-KillHeight)*0.3048 ! foot to meter + + +p_acc=acc_ChargedPressure +RAM%vdis_bottles=0 !initial discharged volume +fvr=fvr_tot +RAMS%minloss=0. + +!======================AIRPUMP INPUTS(CONSTANTS)=========================== + +RAM%FVR_AIR=0 +P_AIRP=0 + +ba1=1003; ba2=.03375; ba3=4.014; ba4=.2458 +bba1 =31.8; bba2 =-725.7 ; bba3 =4154 + +Qiter=7 !(gpm) + +! Q=0.0003585; true + + +DeltaT_BOP=0.1 !second +tol_air=.08 + +alpha_Qair=0 +alpha_timeair=0 +alpha_paccair=p_acc +alpha_pairp=p_acc +alpha_diffpair=0 +alpha_lossesair=0 +alpha_fvrair=0 + +counter_airp=1 + +!======================BOP INPUTS(CONSTANTS)=========================== + + if (PrechargePressure == 1400.) then + b1=1396; b2=0.17; b3=3.873; b4=1.101 + elseif (PrechargePressure == 2000.) then + b1=1980; b2=0.1237; b3=15.69; b4=1.029 + elseif (PrechargePressure == 600.) then + b1=591.9; b2=0.1968; b3=2.887; b4=0.9757 + else !(PrechargePressure == 1000.) then ! this is for precharge=1000 psi + b1=993.7; b2=0.164; b3=5.492; b4=0.9796 + endif + +ByPassOld= 1.0 + +RAM%p_bop=pa +p_annular=pa_annular +!Q=0.0055; !initial flow rate (m^3/s) +RAM%flow=60 !(gpm) initial value +RAM%Qzero=70 !for DP code, increasing Q after shear +RAM%vdis_tot=0 +airp_switch=0 !off position +elecp_switch=0 !off position +ShearBop_closed=1 +PipeRam1_closed=1 +PipeRam2_closed=1 +ChokeLine_closed=1 +KillLine_closed=1 +Annular_closed=1 +finished_Shear=0 +finished_pipe1=0 +finished_pipe2=0 +finished_ChokeLine=0 +finished_KillLine=0 +finished_Annular=0 +deltav_elecp=0 +RAM%vdis_elecp=0 +!================================================================== +RAM%timecounter_ram=0 +RAM%Q=0 +pram_reg=prams_regset !psi !RamsReglatorSet +Pannular_reg=min(AnnularRegulatorSetControl,1700.) + + + + +MiddleRamsStatus= IDshearBop +UpperRamsStatus= IDPipeRam1 +LowerRamsStatus= IDPipeRam2 +AnnularStatus = IDAnnular + + +AccumulatorPressureGauge = p_acc + + +RAM%time=0 + +! WRITE(60,10) ' Overal Time','Q Ram Line','Vdis Ram Line','P Accumulator','Preg Ram Line','Preg Annular',' P BOP','ID Shear Ram', & +! 'ID Pipe Ram1','ID Pipe Ram2','ID Annular' +!10 FORMAT(11(A18)) +! +! +! +! WRITE(60,60) RAM(2)%time,RAM(2)%Q,RAM(2)%vdis_tot,p_acc, & +! pram_reg,Pannular_reg,RAM(2)%p_bop,IDshearBop, & +! IDPipeRam1,IDPipeRam2,IDAnnular +!60 FORMAT(11(f18.5)) + + + MiddleRamsOpenLED = LedOn + MiddleRamsOpenLEDMine = LedOn + MiddleRamsCloseLED = LedOff + MiddleRamsCloseLEDMine = LedOff + ShearRamIsOpening = .false. + ShearRamIsClosing = .false. + + UpperRamsOpenLED = LedOn + UpperRamsOpenLEDMine = LedOn + UpperRamsCloseLED = LedOff + UpperRamsCloseLEDMine = LedOff + PipeRam1IsOpening = .false. + PipeRam1IsClosing = .false. + + LowerRamsOpenLED = LedOn + LowerRamsOpenLEDMine = LedOn + LowerRamsCloseLED = LedOff + LowerRamsCloseLEDMine = LedOff + PipeRam2IsOpening = .false. + PipeRam2IsClosing = .false. + + ChokeLineOpenLED = LedOff + ChokeLineOpenLEDMine = LedOff + ChokeLineCloseLED = LedOn + ChokeLineCloseLEDMine = LedOn + ChokeLineIsOpening = .false. + ChokeLineIsClosing = .false. + + + KillLineOpenLed = LedOff + KillLineOpenLedMine = LedOff + KillLineCloseLed = LedOn + KillLineCloseLedMine = LedOn + KillLineIsOpening = .false. + KillLineIsClosing = .false. + + + AnnularOpenLed = LedOn + AnnularOpenLedMine = LedOn + + AnnularCloseLed = LedOff + AnnularCloseLedMine = LedOff + + AnnularIsOpening = .false. + AnnularIsClosing = .false. + + + FirstSet=1 + RamsFirstSet=1 + ManifoldPressureGauge=prams_regset !RamsReglatorSet + AnnularPressureGauge= (1 - AnnularPressureGaugeMalf) * min(AnnularRegulatorSetControl,1700.) + + +PannularTimeStepDelay = int(1./DeltaT_BOP) ! 1/0.1 : for 1 sec delay in AnnRegulator shot time + + DO i = 1 , PannularTimeStepDelay + CALL Pannular_regDelay%AddToFirst(AnnularPressureGauge) + END DO + + + + end + \ No newline at end of file diff --git a/Equipments/BopStack/BlindRamsMain.f90 b/Equipments/BopStack/BlindRamsMain.f90 new file mode 100644 index 0000000..a8fd144 --- /dev/null +++ b/Equipments/BopStack/BlindRamsMain.f90 @@ -0,0 +1,68 @@ +module BlindRamsMain + implicit none + public + contains + + subroutine BlindRams_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(BlindRams_Init) + call OnSimulationStop%Add(BlindRams_Init) + call OnBlindRamsStep%Add(BlindRams_Step) + call OnBlindRamsOutput%Add(BlindRams_Output) + call OnBlindRamsMain%Add(BlindRamsMainBody) + end subroutine + + subroutine BlindRams_Init + implicit none + end subroutine BlindRams_Init + + subroutine BlindRams_Step + CALL SHEAR_RAMS + end subroutine BlindRams_Step + + subroutine BlindRams_Output + implicit none + end subroutine BlindRams_Output + + subroutine BlindRamsMainBody + USE ifport + USE ifmt + USE CSimulationVariables + ! USE BOP + + implicit none + + INTEGER :: ShearRamDuration + integer,dimension(8) :: ShearRamStartTime , ShearRamEndTime + + + ! CALL BOP_StartUp() + loop1: DO + + CALL DATE_AND_TIME(values=ShearRamStartTime) + + + CALL SHEAR_RAMS + + CALL DATE_AND_TIME(values=ShearRamEndTime) + + ShearRamDuration = 3600000 * (ShearRamEndTime(5) - ShearRamStartTime(5)) + 60000 * (ShearRamEndTime(6) - ShearRamStartTime(6)) + 1000 * (ShearRamEndTime(7) - ShearRamStartTime(7)) + (ShearRamEndTime(8) - ShearRamStartTime(8)) + + if (ShearRamDuration < 100) then + call sleepqq(100 - ShearRamDuration) + ELSE + WRITE (*,*) 'ShearRam BOP run duration exceeded 100 ms and =', ShearRamDuration + end if + + + IF (IsStopped==.true.) THEN + EXIT loop1 + ENDIF + + + ENDDO loop1 + + end subroutine BlindRamsMainBody + +end module BlindRamsMain \ No newline at end of file diff --git a/Equipments/BopStack/BopStackMain.f90 b/Equipments/BopStack/BopStackMain.f90 new file mode 100644 index 0000000..07e1dc7 --- /dev/null +++ b/Equipments/BopStack/BopStackMain.f90 @@ -0,0 +1,10 @@ +module BopStackMain + use BOP + implicit none + public +contains + subroutine BopStack_Step + + CALL BOP_MainBody + end subroutine BopStack_Step +END MODULE BopStackMain \ No newline at end of file diff --git a/Equipments/BopStack/CHOKE_LINE.f90 b/Equipments/BopStack/CHOKE_LINE.f90 new file mode 100644 index 0000000..340f58f --- /dev/null +++ b/Equipments/BopStack/CHOKE_LINE.f90 @@ -0,0 +1,309 @@ + + +SUBROUTINE CHOKE_LINE + USE VARIABLES + USE CAccumulatorVariables + USE CBopStackVariables + USE CBopControlPanelVariables + USE CEquipmentsConstants + + implicit none + + +!===================================================================== +! CHOKE LINE 1- BOP CAMERON Type U 5000 +! START CONDITIONS FOR CHOKE LINE 1 +!===================================================================== + + RAM(5)%SuccessionCounter = RAM(5)%SuccessionCounter + 1 + + + if (ChokeLineValve == -1.0 .and. RigAirMalf==0 .and. AirMasterValve==1 .and. p_acc>acc_MinPressure) then + + if ( RAM(5)%SuccessionCounter /= RAM(5)%SuccessionCounterOld+1 ) then + RAM(5)%SuccessionCounter = 0 ! also in starup + RAM(5)%SuccessionCounterOld = 0 ! also in starup + return + else + RAM(5)%SuccessionCounterOld= RAM(5)%SuccessionCounter + endif + + + if ( RAM(5)%SuccessionCounter < int(2.5/DeltaT_BOP) ) then + return + endif + + RAM(5)%First_CloseTimecheck= 1 + + + + + if (ChokeLineOpenLEDMine == LedOn) then + RETURN + end if + ChokeLine_closed=0 + RAM(5)%vdis_tot=0 + RAM(5)%vdis_bottles=0. + RAM(5)%fvr_air=0. + RAM(5)%vdis_elecp=0. + Qiter=7 + RAM(5)%Qzero=70 + RAM(5)%Q=RAM(5)%Qzero + RAM(5)%flow=70 + RAM(5)%tol=0.0037 + if (finished_ChokeLine==1) then + ChokeLineLeverOld= 1.0 + else + ChokeLineLeverOld=ChokeLineValve + endif + finished_ChokeLine=0 + ChokeLineIsOpening = .true. + ChokeLineCloseLED = LedOff + ChokeLineCloseLEDMine = LedOff + ChokeLineOpenLED = LedOn !LedBlinking + RAM(5)%bop_type = 3 + !AbopChokeLine=196.67 + AbopChokeLine=(ChokeClose*231)/((IDChokeLineBase-ODDrillpipe_inChokeLineBase)/2.) + NeededVolumeChokeLine=AbopChokeLine*(IDChokeLineBase-max(ODDrillpipe_inChokeLine,ODDrillpipe_inChokeLineBase))/(2.*231) !1.5 galon for each BOP + endif + + if (ChokeLineValve == 1.0 .and. RigAirMalf==0 .and. AirMasterValve==1 .and. p_acc>acc_MinPressure) then + + + if ( RAM(5)%SuccessionCounter /= RAM(5)%SuccessionCounterOld+1 ) then + RAM(5)%SuccessionCounter = 0 ! also in starup + RAM(5)%SuccessionCounterOld = 0 ! also in starup + return + else + RAM(5)%SuccessionCounterOld= RAM(5)%SuccessionCounter + endif + + + if ( RAM(5)%SuccessionCounter < int(2.5/DeltaT_BOP) ) then + return + endif + + RAM(5)%First_OpenTimecheck= 1 + + + + if (ChokeLineCloseLEDMine == LedOn) then + RETURN + end if + ChokeLine_closed=0 + RAM(5)%vdis_tot=0 + RAM(5)%vdis_bottles=0. + RAM(5)%fvr_air=0. + RAM(5)%vdis_elecp=0. + Qiter=7 + RAM(5)%Qzero=70 + RAM(5)%Q=RAM(5)%Qzero + RAM(5)%flow=70 + RAM(5)%tol=0.0037 + + + + if (finished_ChokeLine==1) then + ChokeLineLeverOld= -1.0 + else + ChokeLineLeverOld=ChokeLineValve + endif + finished_ChokeLine=0 + ChokeLineIsClosing = .true. + + + !if (ChokeLineCloseLED == LedOn) then + ! RETURN + !end if + + ChokeLineCloseLed = LedOff !new + ChokeLineCloseLedMine = LedOff !new + + + ChokeLineCloseLED = LedOn !LedBlinking + RAM(5)%bop_type = 3 + !AbopChokeLine=196.67 + AbopChokeLine=(ChokeOpen*231)/((IDChokeLineBase-ODDrillpipe_inChokeLineBase)/2.) + NeededVolumeChokeLine=AbopChokeLine*(IDChokeLineBase-max(ODDrillpipe_inChokeLine,ODDrillpipe_inChokeLineBase))/(2.*231) !1.5 galon for each BOP + endif + + +!===================================================================== + +if (ChokeLineIsOpening .or. ChokeLineIsClosing) then + CALL CHOKE_LINE_SUB +end if + + + END SUBROUTINE CHOKE_LINE + + + + + + + + + + + + +SUBROUTINE CHOKE_LINE_SUB + + USE VARIABLES + USE CAccumulatorVariables + USE CBopStackVariables + USE CBopControlPanelVariables + USE CEquipmentsConstants + USE CSimulationVariables + implicit none + + + FirstSet= 0 + RamsFirstSet= 0 + + loop5: do while (finished_ChokeLine==0) + + + RAM(5)%SuccessionCounter = RAM(5)%SuccessionCounter + 1 + + + if (ChokeLineValve == 1.0 .and. ChokeLineLeverOld == -1.0 .and. RigAirMalf==0 .and. AirMasterValve==1 .and. p_acc>acc_MinPressure) then + + if ( RAM(5)%First_CloseTimecheck == 0 ) then + + + if ( RAM(5)%SuccessionCounter /= RAM(5)%SuccessionCounterOld+1 ) then + RAM(5)%SuccessionCounter = 0 ! also in starup + RAM(5)%SuccessionCounterOld = 0 ! also in starup + return + else + RAM(5)%SuccessionCounterOld= RAM(5)%SuccessionCounter + endif + + + + if ( RAM(5)%SuccessionCounter < int(2.5/DeltaT_BOP) ) then + return + endif + + endif + + + + ChokeLine_closed=0 + RAM(5)%p_bop=pa + ChokeLineLeverOld = ChokeLineValve + ChokeLineOpenLED = LedOff + ChokeLineOpenLEDMine = LedOff + ChokeLineCloseLED = LedOn !LedBlinking + CALL OpenChokeLine + RAM(5)%bop_type = 3 + !AbopChokeLine=196.67 + AbopChokeLine=(ChokeClose*231)/((IDChokeLineBase-ODDrillpipe_inChokeLineBase)/2.) + NeededVolumeChokeLine=AbopChokeLine*(IDChokeLine-max(ODDrillpipe_inChokeLine,ODDrillpipe_inChokeLineBase))/(2.*231) + + RAM(5)%vdis_bottles=0. + RAM(5)%fvr_air=0. + RAM(5)%vdis_elecp=0. + ChokeLineIsClosing = .true. + ChokeLineIsOpening = .false. + endif + + if (ChokeLineValve == -1.0 .and. ChokeLineLeverOld == 1.0 .and. p_acc>acc_MinPressure .and. RigAirMalf==0 .and. AirMasterValve==1) then + + if ( RAM(5)%First_OpenTimecheck == 0 ) then + + if ( RAM(5)%SuccessionCounter /= RAM(5)%SuccessionCounterOld+1 ) then + RAM(5)%SuccessionCounter = 0 ! also in starup + RAM(5)%SuccessionCounterOld = 0 ! also in starup + return + else + RAM(5)%SuccessionCounterOld= RAM(5)%SuccessionCounter + endif + + if ( RAM(5)%SuccessionCounter < int(2.5/DeltaT_BOP) ) then + return + endif + + endif + + + + ChokeLine_closed=0 + RAM(5)%p_bop=pa + ChokeLineLeverOld = ChokeLineValve + ChokeLineCloseLED = LedOff + ChokeLineCloseLEDMine = LedOff + ChokeLineOpenLED = LedOn !LedBlinking + CALL OpenChokeLine + RAM(5)%bop_type = 3 + !AbopChokeLine=196.67 + AbopChokeLine=(ChokeOpen*231)/((IDChokeLineBase-ODDrillpipe_inChokeLineBase)/2.) + NeededVolumeChokeLine=AbopChokeLine*(IDChokeLineBase-IDChokeLine)/(2.*231) + RAM(5)%vdis_bottles=0. + RAM(5)%fvr_air=0. + RAM(5)%vdis_elecp=0. + + ChokeLineIsOpening = .true. + ChokeLineIsClosing = .false. + endif + + + RAM(5)%First_CloseTimecheck = 0 + RAM(5)%First_OpenTimecheck = 0 + + + RAM(5)%time=RAM(5)%time+DeltaT_BOP !overal time (s) + + + +!=================================================== +! BOP +!=================================================== +if (ChokeLine_closed==0) then !bop closing + call bop_code(4,H_ChokeLineBop,5) !ramtype=4 5=RNUMBER +endif !bop is closing +!================================================================ +if (ChokeLine_closed==1) then + RAM(5)%Q=0 + !p_bop=pram_reg + RAM(5)%p_bop=pa + RAMS%minloss(5,17)=0. !RNUMBER=5 +endif + +RAM(5)%timecounter_ram=RAM(5)%timecounter_ram+1 + + + + + +! MiddleRamsStatus = IDshearBop +! UpperRamsStatus = IDPipeRam1 +! LowerRamsStatus = IDPipeRam2 +! AnnularStatus = IDAnnular +! AccumulatorPressureGauge = p_acc +! ManifoldPressureGauge= pram_reg +! AnnularPressureGauge=Pannular_reg +! +! +! +! WRITE(60,60) RAM(5)%time,RAM(5)%Q,RAM(5)%vdis_tot,p_acc, & +! pram_reg,Pannular_reg,RAM(5)%p_bop,IDshearBop, & +! IDPipeRam1,IDPipeRam2,IDAnnular +!60 FORMAT(11(f18.5)) + + + call sleepqq(100) + +if (ChokeLine_closed==1) then + ! if ((UpperRamsValve==1. .and. UpperRamsFailureMalf==0) .or. (UpperRamsValve==-1.0 .and. UpperRamsFailureMalf==0) .or. (MiddleRamsValve==1. .and. MiddleRamsFailureMalf==0) .or. (MiddleRamsValve==-1.0 .and. MiddleRamsFailureMalf==0) .or. (LowerRamsValve==1. .and. LowerRamsFailureMalf==0) .or. (LowerRamsValve==-1.0 .and. LowerRamsFailureMalf==0) .or. (AnnularValve==1. .and. AnnularFailureMalf==0) .or. (AnnularValve==-1.0 .and. AnnularFailureMalf==0) .or. KillLineValve==1. .or. KillLineValve==-1.0) then + finished_ChokeLine=1 + ! endif +endif + + if (IsStopped == .true.) return + + end do loop5 !while finished_ChokeLine==0 + +END SUBROUTINE CHOKE_LINE_SUB \ No newline at end of file diff --git a/Equipments/BopStack/ChokeLineMain.f90 b/Equipments/BopStack/ChokeLineMain.f90 new file mode 100644 index 0000000..3616ee3 --- /dev/null +++ b/Equipments/BopStack/ChokeLineMain.f90 @@ -0,0 +1,69 @@ +module ChokeLineMain + implicit none + public + contains + + subroutine ChokeLine_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(ChokeLine_Init) + call OnSimulationStop%Add(ChokeLine_Init) + call OnChokeLineStep%Add(ChokeLine_Step) + call OnChokeLineOutput%Add(ChokeLine_Output) + call OnChokeLineMain%Add(ChokeLineMainBody) + end subroutine + + subroutine ChokeLine_Init + implicit none + end subroutine ChokeLine_Init + + subroutine ChokeLine_Step + CALL CHOKE_LINE + end subroutine ChokeLine_Step + + subroutine ChokeLine_Output + implicit none + end subroutine ChokeLine_Output + + subroutine ChokeLineMainBody + USE ifport + USE ifmt + USE CSimulationVariables + ! USE BOP + + implicit none + + INTEGER :: ChokeLineDuration + integer,dimension(8) :: ChokeLineStartTime , ChokeLineEndTime + + ! CALL BOP_StartUp() + loop1: DO + + CALL DATE_AND_TIME(values=ChokeLineStartTime) + + + CALL CHOKE_LINE + + CALL DATE_AND_TIME(values=chokeLineEndTime) + + chokeLineDuration = 3600000 * (chokeLineEndTime(5) - chokeLineStartTime(5)) + 60000 * (chokeLineEndTime(6) - chokeLineStartTime(6)) + 1000 * (chokeLineEndTime(7) - chokeLineStartTime(7)) + (chokeLineEndTime(8) - chokeLineStartTime(8)) + + if (chokeLineDuration < 100) then + call sleepqq(100 - chokeLineDuration) + ELSE + WRITE (*,*) 'chokeLine BOP run duration exceeded 100 ms and =', chokeLineDuration + end if + + IF (IsStopped==.true.) THEN + EXIT loop1 + ENDIF + + + ENDDO loop1 + + + ! CALL DEALLOCATE_ARRAYS() + + end subroutine ChokeLineMainBody + +end module ChokeLineMain \ No newline at end of file diff --git a/Equipments/BopStack/KILL_LINE.f90 b/Equipments/BopStack/KILL_LINE.f90 new file mode 100644 index 0000000..78446cd --- /dev/null +++ b/Equipments/BopStack/KILL_LINE.f90 @@ -0,0 +1,308 @@ + + +SUBROUTINE KILL_LINE + USE VARIABLES + USE CAccumulatorVariables + USE CBopStackVariables + USE CBopControlPanelVariables + USE CEquipmentsConstants + USE CSimulationVariables + + implicit none + + +!===================================================================== +! KILL LINE 1- BOP CAMERON Type U 5000 +! START CONDITIONS FOR KILL LINE 1 +!===================================================================== + + RAM(6)%SuccessionCounter = RAM(6)%SuccessionCounter + 1 + + + if (KillLineValve == -1.0 .and. RigAirMalf==0 .and. AirMasterValve==1 .and. p_acc>acc_MinPressure) then + + if ( RAM(6)%SuccessionCounter /= RAM(6)%SuccessionCounterOld+1 ) then + RAM(6)%SuccessionCounter = 0 ! also in starup + RAM(6)%SuccessionCounterOld = 0 ! also in starup + return + else + RAM(6)%SuccessionCounterOld= RAM(6)%SuccessionCounter + endif + + + if ( RAM(6)%SuccessionCounter < int(2.5/DeltaT_BOP) ) then + return + endif + + RAM(6)%First_CloseTimecheck= 1 + + + + if (KillLineOpenLedMine == LedOn) then + RETURN + end if + KillLine_closed=0 + RAM(6)%vdis_tot=0 + RAM(6)%vdis_bottles=0. + RAM(6)%fvr_air=0. + RAM(6)%vdis_elecp=0. + Qiter=7 + RAM(6)%Qzero=70 + RAM(6)%Q=RAM(6)%Qzero + RAM(6)%flow=70 + RAM(6)%tol=0.0037 + if (finished_KillLine==1) then + KillLineLeverOld= 1.0 + else + KillLineLeverOld=KillLineValve + endif + finished_KillLine=0 + KillLineIsOpening = .true. + KillLineCloseLed = LedOff + KillLineCloseLedMine = LedOff + KillLineOpenLed = LedOn !LedBlinking + RAM(6)%bop_type = 3 + !AbopKillLine=196.67 + AbopKillLine=(KillClose*231)/((IDKillLineBase-ODDrillpipe_inKillLineBase)/2.) + NeededVolumeKillLine=AbopKillLine*(IDKillLineBase-max(ODDrillpipe_inKillLine,ODDrillpipe_inKillLineBase))/(2.*231) !1.5 galon for each BOP + endif + + if (KillLineValve == 1.0 .and. RigAirMalf==0 .and. AirMasterValve==1 .and. p_acc>acc_MinPressure) then + + + if ( RAM(6)%SuccessionCounter /= RAM(6)%SuccessionCounterOld+1 ) then + RAM(6)%SuccessionCounter = 0 ! also in starup + RAM(6)%SuccessionCounterOld = 0 ! also in starup + return + else + RAM(6)%SuccessionCounterOld= RAM(6)%SuccessionCounter + endif + + + if ( RAM(6)%SuccessionCounter < int(2.5/DeltaT_BOP) ) then + return + endif + + RAM(6)%First_OpenTimecheck= 1 + + + + if (KillLineCloseLedMine == LedOn) then + RETURN + end if + KillLine_closed=0 + RAM(6)%vdis_tot=0 + RAM(6)%vdis_bottles=0. + RAM(6)%fvr_air=0. + RAM(6)%vdis_elecp=0. + Qiter=7 + RAM(6)%Qzero=70 + RAM(6)%Q=RAM(6)%Qzero + RAM(6)%flow=70 + RAM(6)%tol=0.0037 + + + + if (finished_KillLine==1) then + KillLineLeverOld= -1.0 + else + KillLineLeverOld=KillLineValve + endif + finished_KillLine=0 + KillLineIsClosing = .true. + + + !if (KillLineCloseLed == LedOn) then + ! RETURN + !end if + + KillLineCloseLed = LedOff !new + KillLineCloseLedMine = LedOff !new + + KillLineCloseLed = LedOn !LedBlinking + RAM(6)%bop_type = 3 + !AbopKillLine=196.67 + AbopKillLine=(KillOpen*231)/((IDKillLineBase-ODDrillpipe_inKillLineBase)/2.) + NeededVolumeKillLine=AbopKillLine*(IDKillLineBase-max(ODDrillpipe_inKillLine,ODDrillpipe_inKillLineBase))/(2.*231) !1.5 galon for each BOP + endif + +!========================================================================== + +if (KillLineIsOpening .or. KillLineIsClosing) then + CALL KILL_LINE_SUB +end if + + + END SUBROUTINE KILL_LINE + + + + + + + + + + + +SUBROUTINE KILL_LINE_SUB + + USE VARIABLES + USE CAccumulatorVariables + USE CBopStackVariables + USE CBopControlPanelVariables + USE CEquipmentsConstants + USE CSimulationVariables + + implicit none + + + FirstSet= 0 + RamsFirstSet= 0 + + loop6: do while (finished_KillLine==0) + + + RAM(6)%SuccessionCounter = RAM(6)%SuccessionCounter + 1 + + + + if (KillLineValve == 1.0 .and. KillLineLeverOld == -1.0 .and. RigAirMalf==0 .and. AirMasterValve==1 .and. p_acc>acc_MinPressure) then + + if ( RAM(6)%First_CloseTimecheck == 0 ) then + + + if ( RAM(6)%SuccessionCounter /= RAM(6)%SuccessionCounterOld+1 ) then + RAM(6)%SuccessionCounter = 0 ! also in starup + RAM(6)%SuccessionCounterOld = 0 ! also in starup + return + else + RAM(6)%SuccessionCounterOld= RAM(6)%SuccessionCounter + endif + + + + if ( RAM(6)%SuccessionCounter < int(2.5/DeltaT_BOP) ) then + return + endif + + endif + + + + KillLine_closed=0 + RAM(6)%p_bop=pa + KillLineLeverOld = KillLineValve + KillLineOpenLed = LedOff + KillLineOpenLedMine = LedOff + KillLineCloseLed = LedOn !LedBlinking + CALL OpenKillLine + RAM(6)%bop_type = 3 + !AbopKillLine=196.67 + AbopKillLine=(KillClose*231)/((IDKillLineBase-ODDrillpipe_inKillLineBase)/2.) + NeededVolumeKillLine=AbopKillLine*(IDKillLine-max(ODDrillpipe_inKillLine,ODDrillpipe_inKillLineBase))/(2.*231) + + RAM(6)%vdis_bottles=0. + RAM(6)%fvr_air=0. + RAM(6)%vdis_elecp=0. + KillLineIsClosing = .true. + KillLineIsOpening = .false. + endif + + if (KillLineValve == -1.0 .and. KillLineLeverOld == 1.0 .and. p_acc>acc_MinPressure .and. RigAirMalf==0 .and. AirMasterValve==1) then + + + if ( RAM(6)%First_OpenTimecheck == 0 ) then + + if ( RAM(6)%SuccessionCounter /= RAM(6)%SuccessionCounterOld+1 ) then + RAM(6)%SuccessionCounter = 0 ! also in starup + RAM(6)%SuccessionCounterOld = 0 ! also in starup + return + else + RAM(6)%SuccessionCounterOld= RAM(6)%SuccessionCounter + endif + + if ( RAM(6)%SuccessionCounter < int(2.5/DeltaT_BOP) ) then + return + endif + + endif + + + KillLine_closed=0 + RAM(6)%p_bop=pa + KillLineLeverOld = KillLineValve + KillLineCloseLed = LedOff + KillLineCloseLedMine = LedOff + KillLineOpenLed = LedOn !LedBlinking + CALL OpenKillLine + RAM(6)%bop_type = 3 + !AbopKillLine=196.67 + AbopKillLine=(KillOpen*231)/((IDKillLineBase-ODDrillpipe_inKillLineBase)/2.) + NeededVolumeKillLine=AbopKillLine*(IDKillLineBase-IDKillLine)/(2.*231) + RAM(6)%vdis_bottles=0. + RAM(6)%fvr_air=0. + RAM(6)%vdis_elecp=0. + + KillLineIsOpening = .true. + KillLineIsClosing = .false. + endif + + + RAM(6)%First_CloseTimecheck = 0 + RAM(6)%First_OpenTimecheck = 0 + + + RAM(6)%time=RAM(6)%time+DeltaT_BOP !overal time (s) + + + +!=================================================== +! BOP +!=================================================== +if (KillLine_closed==0) then !bop closing + call bop_code(5,H_KillLineBop,6) !ramtype=5 6=RNUMBER +endif !bop is closing +!================================================================ +if (KillLine_closed==1) then + RAM(6)%Q=0 + !p_bop=pram_reg + RAM(6)%p_bop=pa + RAMS%minloss(6,17)=0. !RNUMBER=6 +endif + +RAM(6)%timecounter_ram=RAM(6)%timecounter_ram+1 + + + + + +! MiddleRamsStatus = IDshearBop +! UpperRamsStatus = IDPipeRam1 +! LowerRamsStatus = IDPipeRam2 +! AnnularStatus = IDAnnular +! AccumulatorPressureGauge = p_acc +! ManifoldPressureGauge= pram_reg +! AnnularPressureGauge=Pannular_reg +! +! +! +! WRITE(60,60) RAM(6)%time,RAM(6)%Q,RAM(6)%vdis_tot,p_acc, & +! pram_reg,Pannular_reg,RAM(6)%p_bop,IDshearBop, & +! IDPipeRam1,IDPipeRam2,IDAnnular +!60 FORMAT(11(f18.5)) + + + call sleepqq(100) + +if (KillLine_closed==1) then + ! if ((UpperRamsValve==1. .and. UpperRamsFailureMalf==0) .or. (UpperRamsValve==-1.0 .and. UpperRamsFailureMalf==0) .or. (MiddleRamsValve==1. .and. MiddleRamsFailureMalf==0) .or. (MiddleRamsValve==-1.0 .and. MiddleRamsFailureMalf==0) .or. (LowerRamsValve==1. .and. LowerRamsFailureMalf==0) .or. (LowerRamsValve==-1.0 .and. LowerRamsFailureMalf==0) .or. (AnnularValve==1. .and. AnnularFailureMalf==0) .or. (AnnularValve==-1.0 .and. AnnularFailureMalf==0) .or. ChokeLineValve==1. .or. ChokeLineValve==-1.0) then + finished_KillLine=1 + ! endif +endif + + if (IsStopped == .true.) return + + end do loop6 !while finished_KillLine==0 + +END SUBROUTINE KILL_LINE_SUB \ No newline at end of file diff --git a/Equipments/BopStack/KillLineMain.f90 b/Equipments/BopStack/KillLineMain.f90 new file mode 100644 index 0000000..60ba858 --- /dev/null +++ b/Equipments/BopStack/KillLineMain.f90 @@ -0,0 +1,68 @@ +module KillLineMain + implicit none + public + contains + + subroutine KillLine_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(KillLine_Init) + call OnSimulationStop%Add(KillLine_Init) + call OnKillLineStep%Add(KillLine_Step) + call OnKillLineOutput%Add(KillLine_Output) + call OnKillLineMain%Add(KillLineMainBody) + end subroutine + + subroutine KillLine_Init + implicit none + end subroutine KillLine_Init + + subroutine KillLine_Step + CALL KILL_LINE + end subroutine KillLine_Step + + subroutine KillLine_Output + implicit none + end subroutine KillLine_Output + + subroutine KillLineMainBody + USE ifport + USE ifmt + USE CSimulationVariables + ! USE BOP + implicit none + + INTEGER :: KillLineDuration + integer,dimension(8) :: KillLineStartTime , KillLineEndTime + + ! CALL BOP_StartUp() + loop1: DO + + CALL DATE_AND_TIME(values=KillLineStartTime) + + CALL KILL_LINE + + CALL DATE_AND_TIME(values=KillLineEndTime) + + KillLineDuration = 3600000 * (KillLineEndTime(5) - KillLineStartTime(5)) + 60000 * (KillLineEndTime(6) - KillLineStartTime(6)) + 1000 * (KillLineEndTime(7) - KillLineStartTime(7)) + (KillLineEndTime(8) - KillLineStartTime(8)) + + if (KillLineDuration < 100) then + call sleepqq(100 - KillLineDuration) + ELSE + WRITE (*,*) 'KillLine BOP run duration exceeded 100 ms and =', KillLineDuration + end if + + + IF (IsStopped==.true.) THEN + EXIT loop1 + ENDIF + + + ENDDO loop1 + + + ! CALL DEALLOCATE_ARRAYS() + + end subroutine KillLineMainBody + +end module KillLineMain \ No newline at end of file diff --git a/Equipments/BopStack/LOSS_INPUTS.f90 b/Equipments/BopStack/LOSS_INPUTS.f90 new file mode 100644 index 0000000..8100d2c --- /dev/null +++ b/Equipments/BopStack/LOSS_INPUTS.f90 @@ -0,0 +1,1269 @@ + SUBROUTINE DEALLOCATE_ARRAYS() +USE VARIABLES +implicit none +!=========================================================================== +! RAMLINE MINOR LOSSES INPUT +!=========================================================================== + DEALLOCATE (MINORS1,MINORDIAMETER_RAMLINE,AREAMINOR_RAMLINE & + ,LF_RAMLINE,CV_RAMLINE,NOTE_RAMLINE,RAMS%minlosspa,RAMS%minloss) +!=========================================================================== +! RAMLINE PIPNING LOSSES INPUT +!=========================================================================== + DEALLOCATE (PIPINGS_RAMLINE,DIAM_RAMLINE_INCH, & + AREA_RAMLINE,LENGT_RAMLINE,ROUGHNESS_RAMLINE,RELROUGH_RAMLINE & + ,RAMS%Re_ramline,RAMS%fric,RAMS%fricloss) +!=========================================================================== +! ANNULAR MINOR LOSSES INPUT +!=========================================================================== + DEALLOCATE (MINORS_ANNULAR,MINORDIAMETER_ANNULARLINE,AREAMINOR_ANNULARLINE & + ,LF_ANNULARLINE,CV_ANNULARLINE,NOTE_ANNULARLINE,minlosspa_ANNULAR,minloss_ANNULAR) +!=========================================================================== +! ANNULAR PIPNING LOSSES INPUT +!=========================================================================== + DEALLOCATE (PIPINGS_ANNULAR,DIAM_ANNULARLINE_INCH,AREA_ANNULARLINE, & + LENGT_ANNULARLINE,ROUGHNESS_ANNULARLINE,RELROUGH_ANNULARLINE & + ,Re_ANNULARline,fricANNULAR,friclossANNULAR) +!=========================================================================== +! AIR PUMP LOSSES INPUT +!=========================================================================== +DEALLOCATE (PIPINGS_AIRPUMP,DIAM_AIR_INCH, & + Re_air,AREA_AIR,LENGT_AIR,ROUGHNESS_AIRPLINE,REL_ROUGHAIR, & + fric_air,fricloss_air) + !================================================================ +DEALLOCATE (MINORS_AIRPUMP,MINORDIAM_AIR_INCH, & + MINORAREA_AIR,LF_AIR,CV_AIR,NOTE_AIR & + ,minlosspa_air,minloss_air) + +!=========================================================================== +! DELAY ARRAYS +!=========================================================================== +call Pannular_regDelay%Empty() + + + + END + + + + + + + + + + + +SUBROUTINE LOSS_INPUTS() +USE VARIABLES +implicit none +INTEGER I + +!=========================================================================== +! RAMLINE MINOR LOSSES INPUT +!=========================================================================== +NO_MINORSRAMLINE=34 + +ALLOCATE (MINORS1(NO_MINORSRAMLINE,4)) + + ! ID(INCH) LF CV NOTE(BAR) DESCRIPTION +MINORS1(1,1:4)= (/2., 2., 0., 0./) !Acc.tee +MINORS1(2,1:4)= (/2., 0.9, 0., 0./) !Avg.acc.tee +MINORS1(3,1:4)= (/2., 0.9, 0., 0./) !Avg.acc.tee +MINORS1(4,1:4)= (/2., 0.9, 0., 0./) !Avg.acc.tee +MINORS1(5,1:4)= (/2., 0.9, 0., 0./) !tee +MINORS1(6,1:4)= (/2., 2., 0., 0./) !tee +MINORS1(7,1:4)= (/2., 0., 105., 0./) !valve +MINORS1(8,1:4)= (/2., 0.9, 0., 0./) !tee +MINORS1(9,1:4)= (/2., 0., 105., 0./) !valve +MINORS1(10,1:4)= (/2., 0.42, 0., 0./) !elbow +MINORS1(11,1:4)= (/2., 0.42, 0., 0./) !elbow +MINORS1(12,1:4)= (/2., 0.8, 0., 0./) !unionA +MINORS1(13,1:4)= (/2., 0.8, 0., 0./) !unionA +MINORS1(14,1:4)= (/2., 1.5, 0., 0./) !elbow +MINORS1(15,1:4)= (/2., 0., 425., 0./) !valve +MINORS1(16,1:4)= (/2., 2., 0., 0./) !tee +MINORS1(17,1:4)= (/0.75, 0., 1.5, 0./) !REGULATOR +MINORS1(18,1:4)= (/1., 2., 0., 0./) !tee +MINORS1(19,1:4)= (/1., 1.5, 0., 0./) !elbow +MINORS1(20,1:4)= (/1., 0.42, 0., 0./) !elbow +MINORS1(21,1:4)= (/1., 0.42, 0., 0./) !elbow +MINORS1(22,1:4)= (/1., 1.5, 0., 0./) !elbow +MINORS1(23,1:4)= (/1., 0., 105., 0./) !valve +MINORS1(24,1:4)= (/1., 0.9, 0., 0./) !tee +MINORS1(25,1:4)= (/1., 0., 0., 0.5/) !FT +MINORS1(26,1:4)= (/1., 0., 0., 3.4/) !filter +MINORS1(27,1:4)= (/1., 0., 105., 0./) !valve +MINORS1(28,1:4)= (/1., 0.9, 0., 0./) !tee +MINORS1(29,1:4)= (/1., 1.5, 0., 0./) !elbow +MINORS1(30,1:4)= (/1., 1.5, 0., 0./) !elbow +MINORS1(31,1:4)= (/1., 0., 9.2, 0./) !valve +MINORS1(32,1:4)= (/1., 0.8, 0., 0./) !unionA +MINORS1(33,1:4)= (/1., 0.8, 0., 0./) !unionA +MINORS1(34,1:4)= (/0.75, 0.35, 0., 0./) !contraction + + +ALLOCATE (MINORDIAMETER_RAMLINE(NO_MINORSRAMLINE),AREAMINOR_RAMLINE(NO_MINORSRAMLINE),LF_RAMLINE(NO_MINORSRAMLINE),CV_RAMLINE(NO_MINORSRAMLINE) & + ,NOTE_RAMLINE(NO_MINORSRAMLINE),RAMS%minlosspa(6,NO_MINORSRAMLINE),RAMS%minloss(6,NO_MINORSRAMLINE)) + + + +DO I=1,NO_MINORSRAMLINE + MINORDIAMETER_RAMLINE(I)=MINORS1(I,1) + LF_RAMLINE(I)=MINORS1(I,2) + CV_RAMLINE(I)=MINORS1(I,3) + NOTE_RAMLINE(I)=MINORS1(I,4) + + + AREAMINOR_RAMLINE(I)=PI*(MINORDIAMETER_RAMLINE(I)*0.0254)**2/4. !D(in), AREA(m) +ENDDO + + +!=========================================================================== +! RAMLINE PIPNING LOSSES INPUT +!=========================================================================== +NO_PIPINGSRAMLINE=15 + +ALLOCATE (PIPINGS_RAMLINE(NO_PIPINGSRAMLINE,3)) + + ! ID(INCH) L(MM) ROUGHNESS(MM)=e DESCRIPTION +PIPINGS_RAMLINE(1,1:3)= (/2., 1035., 0.03/) !Avg.acc.distance +PIPINGS_RAMLINE(2,1:3)= (/2., 730., 0.03/) !Acc.end.horizontal +PIPINGS_RAMLINE(3,1:3)= (/2., 2000., 0.03/) !Acc.end.vertical +PIPINGS_RAMLINE(4,1:3)= (/2., 6000., 0.05/) !Hyd.hose +PIPINGS_RAMLINE(5,1:3)= (/2., 2370., 0.03/) !Corner.vertical1 +PIPINGS_RAMLINE(6,1:3)= (/2., 210., 0.03/) !Add.from.bend +PIPINGS_RAMLINE(7,1:3)= (/1., 780., 0.03/) !Corner.horizontal1 +PIPINGS_RAMLINE(8,1:3)= (/1., 780., 0.03/) !Corner.horizontal2 +PIPINGS_RAMLINE(9,1:3)= (/1., 750., 0.03/) !Extra.length.back +PIPINGS_RAMLINE(10,1:3)= (/1., 800., 0.03/) !Corner.horizontal3 +PIPINGS_RAMLINE(11,1:3)= (/1., 1650., 0.03/) !Corner.vertical2 +PIPINGS_RAMLINE(12,1:3)= (/1., 340., 0.03/) !12.Valves.horizontal +PIPINGS_RAMLINE(13,1:3)= (/1., 1650., 0.03/) !Valves.vertical +PIPINGS_RAMLINE(14,1:3)= (/1., 31000., 10./) !Hyd.hose +PIPINGS_RAMLINE(15,1:3)= (/1., 526., 0.03/) !Add.from.bend + + + + ALLOCATE (DIAM_RAMLINE_INCH(NO_PIPINGSRAMLINE), & + AREA_RAMLINE(NO_PIPINGSRAMLINE),LENGT_RAMLINE(NO_PIPINGSRAMLINE),ROUGHNESS_RAMLINE(NO_PIPINGSRAMLINE),RELROUGH_RAMLINE(NO_PIPINGSRAMLINE) & + ,RAMS%Re_ramline(6,NO_PIPINGSRAMLINE),RAMS%fric(6,NO_PIPINGSRAMLINE),RAMS%fricloss(6,NO_PIPINGSRAMLINE)) + +DO I=1,NO_PIPINGSRAMLINE + DIAM_RAMLINE_INCH(I)=PIPINGS_RAMLINE(I,1) + LENGT_RAMLINE(I)=PIPINGS_RAMLINE(I,2) + ROUGHNESS_RAMLINE(I)=PIPINGS_RAMLINE(I,3) + + + + AREA_RAMLINE(I)=PI*(DIAM_RAMLINE_INCH(I)*0.0254)**2/4 !D(in), AREA(m) + RELROUGH_RAMLINE(I)=ROUGHNESS_RAMLINE(I)/(DIAM_RAMLINE_INCH(I)*25.4) !e/D + !DIAM_RAMLINE_MM(I)=DIAM_RAMLINE_MM(I)*.001 ! (m) + LENGT_RAMLINE(I)=LENGT_RAMLINE(I)*.001 ! (m) +ENDDO + + + +!=========================================================================== +! ANNULAR PREVENTER MINOR LOSSES INPUT +!=========================================================================== +NO_MinorsAnnularLine=29 + +ALLOCATE (MINORS_ANNULAR(NO_MinorsAnnularLine,4)) + + ! ID(INCH) LF CV NOTE(BAR) DESCRIPTION +MINORS_ANNULAR(1,1:4)= (/2., 2., 0., 0./) !Acc.tee +MINORS_ANNULAR(2,1:4)= (/2., 0.9, 0., 0./) !Avg.acc.tee +MINORS_ANNULAR(3,1:4)= (/2., 0.9, 0., 0./) !Avg.acc.tee +MINORS_ANNULAR(4,1:4)= (/2., 0.9, 0., 0./) !Avg.acc.tee +MINORS_ANNULAR(5,1:4)= (/2., 0.9, 0., 0./) !tee +MINORS_ANNULAR(6,1:4)= (/2., 2., 0., 0./) !tee +MINORS_ANNULAR(7,1:4)= (/2., 0., 105., 0./) !valve +MINORS_ANNULAR(8,1:4)= (/2., 0.9, 0., 0./) !tee +MINORS_ANNULAR(9,1:4)= (/2., 0., 105., 0./) !valve +MINORS_ANNULAR(10,1:4)= (/2., 0.42, 0., 0./) !elbow +MINORS_ANNULAR(11,1:4)= (/2., 0.42, 0., 0./) !elbow +MINORS_ANNULAR(12,1:4)= (/2., 0.8, 0., 0./) !unionA +MINORS_ANNULAR(13,1:4)= (/2., 0.8, 0., 0./) !unionA +MINORS_ANNULAR(14,1:4)= (/2., 1.5, 0., 0./) !elbow +MINORS_ANNULAR(15,1:4)= (/2., 0., 425., 0./) !valve +MINORS_ANNULAR(16,1:4)= (/2., 2., 0., 0./) !tee +MINORS_ANNULAR(17,1:4)= (/0.75, 0., 1.5, 0./) !REGULATOR +MINORS_ANNULAR(18,1:4)= (/1., 2., 0., 0./) !tee +MINORS_ANNULAR(19,1:4)= (/1., 1.5, 0., 0./) !elbow +MINORS_ANNULAR(20,1:4)= (/1., 0.42, 0., 0./) !elbow +MINORS_ANNULAR(21,1:4)= (/1., 0.42, 0., 0./) !elbow +MINORS_ANNULAR(22,1:4)= (/1., 1.5, 0., 0./) !elbow +MINORS_ANNULAR(23,1:4)= (/1., 0., 3.2, 0./) !valve +MINORS_ANNULAR(24,1:4)= (/1., 2., 0., 0./) !tee +MINORS_ANNULAR(25,1:4)= (/1., 1.5, 0., 0./) !elbow +MINORS_ANNULAR(26,1:4)= (/1., 0.42, 0., 0./) !elbow +MINORS_ANNULAR(27,1:4)= (/1., 0.42, 0., 0./) !elbow +MINORS_ANNULAR(28,1:4)= (/1., 1.5, 0., 0./) !elbow +MINORS_ANNULAR(29,1:4)= (/1., 0., 3.2, 0./) !valve + + + + ALLOCATE (MINORDIAMETER_ANNULARLINE(NO_MinorsAnnularLine),AREAMINOR_ANNULARLINE(NO_MinorsAnnularLine),LF_ANNULARLINE(NO_MinorsAnnularLine) & + ,CV_ANNULARLINE(NO_MinorsAnnularLine),NOTE_ANNULARLINE(NO_MinorsAnnularLine),minlosspa_ANNULAR(NO_MinorsAnnularLine),minloss_ANNULAR(NO_MinorsAnnularLine)) + + + +DO I=1,NO_MinorsAnnularLine + MINORDIAMETER_ANNULARLINE(I)=MINORS_ANNULAR(I,1) + LF_ANNULARLINE(I)=MINORS_ANNULAR(I,2) + CV_ANNULARLINE(I)=MINORS_ANNULAR(I,3) + NOTE_ANNULARLINE(I)=MINORS_ANNULAR(I,4) + + AREAMINOR_ANNULARLINE(I)=PI*(MINORDIAMETER_ANNULARLINE(I)*0.0254)**2/4. !D(in), AREA(m) +ENDDO + + +!=========================================================================== +! ANNULAR PREVENTER PIPNING LOSSES INPUT +!=========================================================================== +NO_PipingsAnnularLine=10 + +ALLOCATE (PIPINGS_ANNULAR(NO_PipingsAnnularLine,3)) + + ! ID(INCH) L(MM) ROUGHNESS(MM)=e DESCRIPTION +PIPINGS_ANNULAR(1,1:3)= (/2., 1035., 0.03/) !Avg.acc.distance +PIPINGS_ANNULAR(2,1:3)= (/2., 730., 0.03/) !Acc.endhorizontal +PIPINGS_ANNULAR(3,1:3)= (/2., 2000., 0.03/) !Acc.endvertical +PIPINGS_ANNULAR(4,1:3)= (/2., 6000., 0.03/) !Hyd.hose +PIPINGS_ANNULAR(5,1:3)= (/2., 2370., 0.03/) !Corner.vertical1 +PIPINGS_ANNULAR(6,1:3)= (/2., 210., 0.03/) !Add.frombend +PIPINGS_ANNULAR(7,1:3)= (/2., 1000., 0.03/) !manifold +PIPINGS_ANNULAR(8,1:3)= (/1., 46000., 0.03/) !pipe +PIPINGS_ANNULAR(9,1:3)= (/2., 1000., 0.03/) !manifold +PIPINGS_ANNULAR(10,1:3)= (/1., 46000., 0.03/) !pipe + + + + + ALLOCATE (DIAM_ANNULARLINE_INCH(NO_PipingsAnnularLine),AREA_ANNULARLINE(NO_PipingsAnnularLine),LENGT_ANNULARLINE(NO_PipingsAnnularLine) & + ,ROUGHNESS_ANNULARLINE(NO_PipingsAnnularLine),RELROUGH_ANNULARLINE(NO_PipingsAnnularLine) & + ,Re_ANNULARline(NO_PipingsAnnularLine),fricANNULAR(NO_PipingsAnnularLine),friclossANNULAR(NO_PipingsAnnularLine)) + + +DO I=1,NO_PipingsAnnularLine + DIAM_ANNULARLINE_INCH(I)=PIPINGS_ANNULAR(I,1) + LENGT_ANNULARLINE(I)=PIPINGS_ANNULAR(I,2) + ROUGHNESS_ANNULARLINE(I)=PIPINGS_ANNULAR(I,3) + + + AREA_ANNULARLINE(I)=PI*(DIAM_ANNULARLINE_INCH(I)*0.0254)**2/4. !D(in), AREA(m) + RELROUGH_ANNULARLINE(I)=ROUGHNESS_ANNULARLINE(I)/(DIAM_ANNULARLINE_INCH(I)*25.4) + !DIAM_ANNULARLINE_MM(I)=DIAM_ANNULARLINE_MM(I)*.001 ! (m) + LENGT_ANNULARLINE(I)=LENGT_ANNULARLINE(I)*.001 ! (m) + ENDDO + + +!=========================================================================== +! AIR PUMP LOSSES INPUT +!=========================================================================== +NO_PIPINGS_AIRPLINE=1 + +ALLOCATE (PIPINGS_AIRPUMP(NO_PIPINGS_AIRPLINE,3)) + + ! ID(INCH) L(MM) ROUGHNESS(MM)=e DESCRIPTION +PIPINGS_AIRPUMP(1,1:3)= (/2., 10000., 0.03/) !Avg.acc.distance + + + + + ALLOCATE (DIAM_AIR_INCH(NO_PIPINGS_AIRPLINE),Re_air(NO_PIPINGS_AIRPLINE),AREA_AIR(NO_PIPINGS_AIRPLINE), & + LENGT_AIR(NO_PIPINGS_AIRPLINE),ROUGHNESS_AIRPLINE(NO_PIPINGS_AIRPLINE),REL_ROUGHAIR(NO_PIPINGS_AIRPLINE), & + fric_air(NO_PIPINGS_AIRPLINE),fricloss_air(NO_PIPINGS_AIRPLINE)) + + + +DO I=1,NO_PIPINGS_AIRPLINE + DIAM_AIR_INCH(I)=PIPINGS_AIRPUMP(I,1) + LENGT_AIR(I)=PIPINGS_AIRPUMP(I,2) + ROUGHNESS_AIRPLINE(I)=PIPINGS_AIRPUMP(I,3) + + + AREA_AIR(I)=PI*(DIAM_AIR_INCH(I)*0.0254)**2/4 !D(in), AREA(m) + REL_ROUGHAIR(I)=ROUGHNESS_AIRPLINE(I)/(DIAM_AIR_INCH(I)*25.4) + !DIAM_RAMLINE_MM(I)=DIAM_RAMLINE_MM(I)*.001 ! (m) + LENGT_AIR(I)=LENGT_AIR(I)*.001 ! (m) + ENDDO + + + + !================================================================ +NO_MINORS_AIRPLINE=6 + +ALLOCATE (MINORS_AIRPUMP(NO_MINORS_AIRPLINE,4)) + + ! ID(INCH) LF CV NOTE(BAR) DESCRIPTION +MINORS_AIRPUMP(1,1:4)= (/2., 10., 0., 0./) !Acc.tee +MINORS_AIRPUMP(2,1:4)= (/2., 11., 0., 0./) !elbow +MINORS_AIRPUMP(3,1:4)= (/1., 0., 0., 3.4/) !filter +MINORS_AIRPUMP(4,1:4)= (/2., 0., 105., 0./) !valve +MINORS_AIRPUMP(5,1:4)= (/1., 0., 9.2, 0./) !valve +MINORS_AIRPUMP(6,1:4)= (/2., 6.4, 0., 0./) !unionA + + + + ALLOCATE (MINORDIAM_AIR_INCH(NO_MINORS_AIRPLINE),MINORAREA_AIR(NO_MINORS_AIRPLINE), & + LF_AIR(NO_MINORS_AIRPLINE),CV_AIR(NO_MINORS_AIRPLINE),NOTE_AIR(NO_MINORS_AIRPLINE) & + ,minlosspa_air(NO_MINORS_AIRPLINE),minloss_air(NO_MINORS_AIRPLINE)) + + + +DO I=1,NO_MINORS_AIRPLINE + MINORDIAM_AIR_INCH(I)=MINORS_AIRPUMP(I,1) + LF_AIR(I)=MINORS_AIRPUMP(I,2) + CV_AIR(I)=MINORS_AIRPUMP(I,3) + NOTE_AIR(I)=MINORS_AIRPUMP(I,4) + + + MINORAREA_AIR(I)=PI*(MINORDIAM_AIR_INCH(I)*0.0254)**2/4. !D(in), AREA(m) +ENDDO + + + + END + +SUBROUTINE pumps_charge_bottle() +USE VARIABLES +USE CAccumulatorVariables +USE CBopStackVariables +USE CBopControlPanelVariables +USE CEquipmentsConstants +USE CSimulationVariables +implicit none + + !Pannular_regset=min(AnnularRegulatorSetControl,1700.) ! for changing its set conditions instantaneously +!write(*,*) 'pumps_charge_bottle' + + if(ByePassValve == -1.0) then + ByPassOld= -1.0 + elseif(ByePassValve == 1.0) then + ByPassOld= 1.0 + endif + + +!===================================================================== +! ACCUMULATOR +!=====for a 10 gal bottle,precharge=1000psig curve BOSCH-isotherm===== +!for charging bottles by the pump +!((((((((IN OUTER LOOP)))))) +! ba1=1003; ba2=.03375; ba3=4.014; ba4=.2458; +if (airp_switch==0) deltav_air=0 +fvr=fvr+deltav_air+deltav_elecp + +pacc_before=p_acc +p_acc=b1*exp(b2*fvr/nobottles)+b3*exp(b4*fvr/nobottles) ! adiabatic(psig)<<<< 8=no. of bottles + +!===================================================================== + + + if(ByPassOld == 1.0) then + + if (pram_reg BaseDifferenceP) then + pram_reg= pram_reg + (PressureDifference/PressureDifferenceSteps) ! PressureDifferenceSteps = 20. + else + + if (pram_reg BaseDifferenceP) then + pram_reg= pram_reg + (PressureDifference/PressureDifferenceSteps) ! PressureDifferenceSteps = 20. + else + pram_reg= p_acc- MAXVAL(RAM%loss_before) + endif + + endif + + + !Pannular_reg= min(p_acc,Pannular_regset) + + + end + + +SUBROUTINE airpump_code() +USE VARIABLES +use CSounds +implicit none +INTEGER I + + + +QAIR_PUMP=Qiter+.1 !(gpm) maximum flow for the start +diffp_air=-10 +losses_air=10 + +!=================================================================== +! AIR OPERATED PUMP +!=================for air consumption at 8 bar====================== +do while (diffp_air<0) + QAIR_PUMP=QAIR_PUMP-.1 +! Qup=QAIR_PUMP; +! bba1 =31.8; bba2 =-725.7 ; bba3 =4154; + p_airp=bba1*QAIR_PUMP**2+bba2*QAIR_PUMP+bba3 !(psig) + kinetic_air=sg*wdens*(QAIR_PUMP*6.30902e-5/((1/4.)*pi*(2*0.254e-1)**2))**2/(2*6895) !(psi) + + + diffp_air=p_airp+kinetic_air-p_acc + +end do !returns Qup + + + do while (abs((diffp_air-losses_air)/diffp_air)>tol_air) !finding correct QAIR_pump for 1 timecounter_ram + +if (diffp_air-losses_air>0) then + QAIR_PUMP=QAIR_PUMP+.01 +else + QAIR_PUMP=QAIR_PUMP-.01 +endif + +!=================================================================== +! AIR OPERATED PUMP +! Maximator - Model: GX (35) +!=================for air consumption at 8 bar====================== + + p_airp=bba1*QAIR_PUMP**2+bba2*QAIR_PUMP+bba3 !(psig) + kinetic_air=sg*wdens*(QAIR_PUMP*6.30902e-005/((1/4.)*pi*(2*0.254e-1)**2))**2/(2*6895) !(psi) + + diffp_air=p_airp+kinetic_air-p_acc + + +!===========================LOSSES==================================== + do i=1,NO_PIPINGS_AIRPLINE +Re_air(i)=QAIR_PUMP*6.30902e-005*DIAM_AIR_INCH(I)*0.0254/(area_air(i)*nu) +enddo + +do i=1,NO_PIPINGS_AIRPLINE + if (Re_air(i)NeededVolumeShearRams) then + + ShearBop_closed=1 + !ShearBop_closed_withPossibility= ShearBop_closed * TD_BOPConnectionPossibility(3) + + pram_reg=pram_reg+RAMS%minloss(RNUMBER,17) + p_acc= RAM(RNUMBER)%p_acccheck + + if (ShearRamIsClosing) then + IDshearBop=0. + ShearIsNotAllowed*ODDrillpipe_inShearRam + MiddleRamsCloseLED = LedOn + MiddleRamsCloseLEDMine = LedOn + MiddleRamsOpenLED = LedOff + MiddleRamsOpenLEDMine = LedOff + if (TD_BOPConnectionPossibility(3) == 1 .and. ShearIsNotAllowed==0) then + CALL CloseMiddleRams + ShearBop_Situation_forTD= 1 ! closed - for TD code + endif + endif + + if (ShearRamIsOpening) then + IDshearBop=IDshearBopBase + MiddleRamsOpenLED = LedOn + MiddleRamsOpenLEDMine = LedOn + MiddleRamsCloseLED = LedOff + MiddleRamsCloseLEDMine = LedOff + CALL OpenMiddleRams + ShearBop_Situation_forTD= 0 ! open - for TD code + endif + + endif + + IDshearBopFinal= IDshearBop ! for output data + +endif + +if (ramtype==2) then !for pipe ram1 + if (PipeRam1IsClosing) then + IDPipeRam1=(2.*(NeededVolumePipeRams1- RAM(RNUMBER)%vdis_tot)*231./AbopPipeRam)+max(ODDrillpipe_inPipeRam1,ODDrillpipe_inPipeRam1Base) + endif + + if (PipeRam1IsOpening) then + IDPipeRam1=IDPipeRamBase-2.*(NeededVolumePipeRams1- RAM(RNUMBER)%vdis_tot)*231./AbopPipeRam + endif + + if ( RAM(RNUMBER)%vdis_tot>NeededVolumePipeRams1) then + + PipeRam1_closed=1 + !PipeRam1_Situation_forTD= PipeRam1_closed * TD_BOPConnectionPossibility(2) + pram_reg=pram_reg+RAMS%minloss(RNUMBER,17) + p_acc= RAM(RNUMBER)%p_acccheck + + if (PipeRam1IsClosing) then + IDPipeRam1=max(ODDrillpipe_inPipeRam1,ODDrillpipe_inPipeRam1Base) + UpperRamsCloseLED = LedOn + UpperRamsCloseLEDMine = LedOn + UpperRamsOpenLED = LedOff + UpperRamsOpenLEDMine = LedOff + if (TD_BOPConnectionPossibility(2) == 1) then + CALL CloseUpperRams ! for C code + call Set_BlowoutFromAnnular(.true.) + + + PipeRam1_Situation_forTD= 1 ! closed - for TD code + endif + endif + + if (PipeRam1IsOpening) then + IDPipeRam1=IDPipeRamBase + UpperRamsOpenLED = LedOn + UpperRamsOpenLEDMine = LedOn + UpperRamsCloseLED = LedOff + UpperRamsCloseLEDMine = LedOff + Call OpenUpperRams ! for C code + PipeRam1_Situation_forTD= 0 ! open - for TD code + endif + + endif + + IDPipeRam1Final= IDPipeRam1 ! for output data + +endif + + +if (ramtype==3) then !for pipe ram2 + if (PipeRam2IsClosing) then + IDPipeRam2=(2.*(NeededVolumePipeRams2- RAM(RNUMBER)%vdis_tot)*231./AbopPipeRam)+max(ODDrillpipe_inPipeRam2,ODDrillpipe_inPipeRam1Base) + endif + + if (PipeRam2IsOpening) then + IDPipeRam2=IDPipeRamBase-2.*(NeededVolumePipeRams2- RAM(RNUMBER)%vdis_tot)*231./AbopPipeRam + endif + + if ( RAM(RNUMBER)%vdis_tot>NeededVolumePipeRams2) then + + PipeRam2_closed=1 + !PipeRam2_closed_withPossibility= PipeRam2_closed * TD_BOPConnectionPossibility(4) + pram_reg=pram_reg+RAMS%minloss(RNUMBER,17) + p_acc= RAM(RNUMBER)%p_acccheck + + if (PipeRam2IsClosing) then + IDPipeRam2=max(ODDrillpipe_inPipeRam2,ODDrillpipe_inPipeRam1Base) + LowerRamsCloseLED = LedOn + LowerRamsCloseLEDMine = LedOn + LowerRamsOpenLED = LedOff + LowerRamsOpenLEDMine = LedOff + if (TD_BOPConnectionPossibility(4) == 1) then + CALL CloseLowerRams + PipeRam2_Situation_forTD= 1 ! closed - for TD code + endif + endif + + if (PipeRam2IsOpening) then + IDPipeRam2=IDPipeRamBase + LowerRamsOpenLED = LedOn + LowerRamsOpenLEDMine = LedOn + LowerRamsCloseLED = LedOff + LowerRamsCloseLEDMine = LedOff + CALL OpenLowerRams + PipeRam2_Situation_forTD= 0 ! open - for TD code + endif + + endif + + IDPipeRam2Final= IDPipeRam2 ! for output data + +endif + + +if (ramtype==4) then !for Choke Line + if (ChokeLineIsClosing) then + IDChokeLine=(2.*(NeededVolumeChokeLine- RAM(RNUMBER)%vdis_tot)*231./AbopChokeLine)+max(ODDrillpipe_inChokeLine,ODDrillpipe_inChokeLineBase) + endif + + if (ChokeLineIsOpening) then + IDChokeLine=IDChokeLineBase-2.*(NeededVolumeChokeLine- RAM(RNUMBER)%vdis_tot)*231./AbopChokeLine + endif + + if ( RAM(RNUMBER)%vdis_tot>NeededVolumeChokeLine) then + + ChokeLine_closed=1 + pram_reg=pram_reg+RAMS%minloss(RNUMBER,17) + p_acc= RAM(RNUMBER)%p_acccheck + + if (ChokeLineIsClosing) then + IDChokeLine=max(ODDrillpipe_inChokeLine,ODDrillpipe_inChokeLineBase) + ChokeLineCloseLED = LedOn + ChokeLineCloseLEDMine = LedOn + ChokeLineOpenLED = LedOff + ChokeLineOpenLEDMine = LedOff + CALL CloseChokeLine + endif + + if (ChokeLineIsOpening) then + IDChokeLine=IDChokeLineBase + ChokeLineOpenLED = LedOn + ChokeLineOpenLEDMine = LedOn + ChokeLineCloseLED = LedOff + ChokeLineCloseLEDMine = LedOff + CALL OpenChokeLine + endif + + endif + +endif + + + +if (ramtype==5) then !for Kill Line + if (KillLineIsClosing) then + IDKillLine=(2.*(NeededVolumeKillLine- RAM(RNUMBER)%vdis_tot)*231./AbopKillLine)+max(ODDrillpipe_inKillLine,ODDrillpipe_inKillLineBase) + endif + + if (KillLineIsOpening) then + IDKillLine=IDKillLineBase-2.*(NeededVolumeKillLine- RAM(RNUMBER)%vdis_tot)*231./AbopKillLine + endif + + if ( RAM(RNUMBER)%vdis_tot>NeededVolumeKillLine) then + + KillLine_closed=1 + pram_reg=pram_reg+RAMS%minloss(RNUMBER,17) + p_acc= RAM(RNUMBER)%p_acccheck + + if (KillLineIsClosing) then + IDKillLine=max(ODDrillpipe_inKillLine,ODDrillpipe_inKillLineBase) + KillLineCloseLed = LedOn + KillLineCloseLedMine = LedOn + KillLineOpenLed = LedOff + KillLineOpenLedMine = LedOff + CALL CloseKillLine + endif + + if (KillLineIsOpening) then + IDKillLine=IDKillLineBase + KillLineOpenLed = LedOn + KillLineOpenLedMine = LedOn + KillLineCloseLed = LedOff + KillLineCloseLedMine = LedOff + CALL OpenKillLine + endif + + endif + +endif + + + + +!if (ramtype==4) then !for annular +! if (AnnularIsClosing) then +! IDAnnular=((NeededVolumeAnnular-vdis_tot)*231./AbopAnnular)+ODDrillpipe_inAnnular +! endif +! +! if (AnnularIsOpening) then +! IDAnnular=IDAnnularBase-(NeededVolumeAnnular-vdis_tot)*231./AbopAnnular +! endif +! +! if (vdis_tot>NeededVolumeAnnular) then +! +! Annular_closed=1 +! p_acc= RAM(RNUMBER)%p_acccheck +! +! if (AnnularIsClosing) then +! IDAnnular=ODDrillpipe_inAnnular +! AnnularCloseLed = LedOn +! AnnularOpenLed = LedOff +! endif +! +! if (AnnularIsOpening) then +! IDAnnular=IDAnnularBase +! AnnularOpenLed = LedOn +! AnnularCloseLed = LedOff +! endif +! +! endif +! +!endif + + + end + + + + SUBROUTINE bop_codeAnnular(RNUMBER) + + USE VARIABLES + USE CBopControlPanelVariables + USE CEquipmentsConstants + USE TD_GeneralData +implicit none +INTEGER RNUMBER, I + + + !Pannular_regset=min(AnnularRegulatorSetControl,1700.) ! for changing its set conditions instantaneously + +!==================================================== +! BOP back pressure without DP +!==================================================== +!if (bop_type==3) then + !p_annular=510.725-(30.145*IDAnnular) + p_annular=448-(19.7*IDAnnular) +! Q=flow +! endif + + + + RAM(RNUMBER)%clock=0 +!======================Losses============================ + RAM(RNUMBER)%loss_after=0 !initial value + RAM(RNUMBER)%diffp_ram=1000 !initial value + RAM(RNUMBER)%loss_before=0 + +!Q=0.0055; %initial flow rate (m^3/s) + + RAM(RNUMBER)%Q=RAM(RNUMBER)%flow + +!write(*,*) 'Q1=' , Q +!write(*,*) 'tol=' , tol +do while (abs( RAM(RNUMBER)%diffp_ram- RAM(RNUMBER)%loss_after)/ RAM(RNUMBER)%diffp_ram>tolAnnular) + if (RAM(RNUMBER)%Bottles_Charged_MalfActive==.true.) exit +! while abs( RAM(RNUMBER)%diffp_ram- RAM(RNUMBER)%loss_after)>10 + RAM(RNUMBER)%clock= RAM(RNUMBER)%clock+1 + +if ( RAM(RNUMBER)%clock>20) then +! tclock=clock + tolAnnular=tolzeroAnnular+(floor( RAM(RNUMBER)%clock/10)-1)*.001 +endif + ! if (clock==1) continue + + if ( RAM(RNUMBER)%clock/=1 .and. RAM(RNUMBER)%loss_after> RAM(RNUMBER)%diffp_ram) then + RAM(RNUMBER)%Q=RAM(RNUMBER)%Q-.1 + elseif ( RAM(RNUMBER)%clock/=1 .and. RAM(RNUMBER)%loss_after<= RAM(RNUMBER)%diffp_ram) then + RAM(RNUMBER)%Q=RAM(RNUMBER)%Q+.01 + + endif + +!====================Before Regulator========================= +do i=1,NO_PipingsAnnularLine +Re_ANNULARline(i)=RAM(RNUMBER)%Q*6.30902e-5*DIAM_ANNULARLINE_INCH(i)*0.0254/(AREA_ANNULARLINE(i)*nu) + +enddo + + + +do i=1,NO_PipingsAnnularLine + if (Re_ANNULARline(i)= int(2.5/DeltaT_BOP) ) then + !return + + RAM(2)%First_OpenTimecheck= 1 + + UpperRamsCloseLed = LedOff !new + UpperRamsCloseLedMine = LedOff !new + UpperRamsOpenLED = LedOn !LedBlinking + + RAM(2)%FourwayValve = 1 + + endif + + endif + + if (RAM(2)%FourwayValve == 1 .and. p_acc>acc_MinPressure) then ! 1: Open , 0: Close + !write(*,*) 'open 2' + + RAM(2)%FourwayValve = 0 + + + PipeRam1_closed=0 + !PipeRam1_closed_withPossibility= PipeRam1_closed * TD_BOPConnectionPossibility(2) + RAM(2)%vdis_tot=0 + RAM(2)%vdis_bottles=0. + RAM(2)%fvr_air=0. + RAM(2)%vdis_elecp=0. + Qiter=7 + RAM(2)%Qzero=70 + RAM(2)%Q=RAM(2)%Qzero + RAM(2)%flow=70 + RAM(2)%tol=0.0037 + + + + if (finished_pipe1==1) then + PipeRams1LeverOld=1.0 + else + PipeRams1LeverOld=UpperRamsValve + endif + finished_pipe1=0 + PipeRam1IsOpening = .true. + PipeRam1IsClosing = .false. + + + !if (UpperRamsOpenLED == LedOn) then + ! RETURN + !end if + + + + RAM(2)%bop_type = 3 + !AbopPipeRam=186.5 + AbopPipeRam=(UpperRamOpen*231)/((IDPipeRamBase-ODDrillpipe_inPipeRam1Base)/2.) + NeededVolumePipeRams1=AbopPipeRam*(IDPipeRamBase-max(ODDrillpipe_inPipeRam1,ODDrillpipe_inPipeRam1Base))/(2.*231) !3.48 galon for each BOP + endif + +!===================================================================== + +if (PipeRam1IsOpening .or. PipeRam1IsClosing .or. RAM(2)%Bottles_Charged_MalfActive) then + CALL PIPE_RAMS1_SUB +end if + + + END SUBROUTINE PIPE_RAMS1 + + + + + + + + + + + +SUBROUTINE PIPE_RAMS1_SUB + + USE VARIABLES + USE CBopStackVariables + USE CBopControlPanelVariables + USE CEquipmentsConstants + USE CSimulationVariables + implicit none + + + FirstSet= 0 + RamsFirstSet= 0 + + loop3: do while (finished_pipe1==0) + + + RAM(2)%SuccessionCounter = RAM(2)%SuccessionCounter + 1 + + + if (UpperRamsValve == 1.0 .and. PipeRams1LeverOld == -1.0 .and. UpperRamsFailureMalf==0 .and. RigAirMalf==0 .and. AirMasterValve==1) then + + + + if ( RAM(2)%First_CloseTimecheck == 0 ) then + + + if ( RAM(2)%SuccessionCounter /= RAM(2)%SuccessionCounterOld+1 ) then + RAM(2)%SuccessionCounter = 0 ! also in starup + RAM(2)%SuccessionCounterOld = 0 ! also in starup + !return + else + RAM(2)%SuccessionCounterOld= RAM(2)%SuccessionCounter + endif + + + + if ( RAM(2)%SuccessionCounter >= int(2.5/DeltaT_BOP) ) then + !return + + UpperRamsOpenLED = LedOff + UpperRamsOpenLEDMine = LedOff + UpperRamsCloseLED = LedOn !LedBlinking + + RAM(2)%FourwayValve = 1 + + endif + + endif + + endif + + if (RAM(2)%FourwayValve == 1 .and. p_acc>acc_MinPressure) then + !write(*,*) 'close 4' + + RAM(2)%FourwayValve = 0 + + + PipeRam1_closed=0 + !PipeRam1_closed_withPossibility= PipeRam1_closed * TD_BOPConnectionPossibility(2) ! for TD code + CALL OpenUpperRams ! for C code + PipeRam1_Situation_forTD= 0 ! open - for TD code + RAM(2)%p_bop=pa + PipeRams1LeverOld = UpperRamsValve + + + RAM(2)%bop_type = 3 + !AbopPipeRam=196.67 + AbopPipeRam=(UpperRamClose*231)/((IDPipeRamBase-ODDrillpipe_inPipeRam1Base)/2.) + !write(*,*) 'NeededVolumeShearRams1=',NeededVolumeShearRams + NeededVolumePipeRams1=AbopPipeRam*(IDPipeRam1-max(ODDrillpipe_inPipeRam1,ODDrillpipe_inPipeRam1Base))/(2.*231) + ! write(*,*) 'NeededVolumeShearRams2=',NeededVolumeShearRams + + RAM(2)%vdis_bottles=0. + RAM(2)%fvr_air=0. + RAM(2)%vdis_elecp=0. + PipeRam1IsClosing = .true. + PipeRam1IsOpening = .false. + endif + + if (UpperRamsValve == -1.0 .and. PipeRams1LeverOld == 1.0 .and. UpperRamsFailureMalf==0 .and. RigAirMalf==0 .and. AirMasterValve==1) then + + + if ( RAM(2)%First_OpenTimecheck == 0 ) then + + if ( RAM(2)%SuccessionCounter /= RAM(2)%SuccessionCounterOld+1 ) then + RAM(2)%SuccessionCounter = 0 ! also in starup + RAM(2)%SuccessionCounterOld = 0 ! also in starup + !return + else + RAM(2)%SuccessionCounterOld= RAM(2)%SuccessionCounter + endif + + if ( RAM(2)%SuccessionCounter >= int(2.5/DeltaT_BOP) ) then + !return + + UpperRamsCloseLED = LedOff + UpperRamsCloseLEDMine = LedOff + UpperRamsOpenLED = LedOn !LedBlinking + + RAM(2)%FourwayValve = 1 + + + endif + + endif + + endif + + if (RAM(2)%FourwayValve == 1 .and. p_acc>acc_MinPressure) then + !write(*,*) 'open 4' + + RAM(2)%FourwayValve = 0 + + + + PipeRam1_closed=0 + !PipeRam1_closed_withPossibility= PipeRam1_closed * TD_BOPConnectionPossibility(2) + CALL OpenUpperRams + PipeRam1_Situation_forTD= 0 ! open - for TD code + RAM(2)%p_bop=pa + PipeRams1LeverOld = UpperRamsValve + + RAM(2)%bop_type = 3 + !AbopPipeRam=186.5 + AbopPipeRam=(UpperRamOpen*231)/((IDPipeRamBase-ODDrillpipe_inPipeRam1Base)/2.) + NeededVolumePipeRams1=AbopPipeRam*(IDPipeRamBase-IDPipeRam1)/(2.*231) + RAM(2)%vdis_bottles=0. + RAM(2)%fvr_air=0. + RAM(2)%vdis_elecp=0. + + PipeRam1IsOpening = .true. + PipeRam1IsClosing = .false. + endif + + + RAM(2)%First_CloseTimecheck = 0 + RAM(2)%First_OpenTimecheck = 0 + + + RAM(2)%time=RAM(2)%time+DeltaT_BOP !overal time (s) + + + +!=================================================== +! BOP +!=================================================== +if (PipeRam1_closed==0) then !bop closing + call bop_code(2,H_PipeRam1Bop,2) !ramtype=2 2=RNUMBER +endif !bop is closing +!================================================================ +if (PipeRam1_closed==1) then + RAM(2)%Q=0 + !p_bop=pram_reg + RAM(2)%p_bop=pa + RAMS%minloss(2,17)=0. !RNUMBER=2 +endif + +RAM(2)%timecounter_ram=RAM(2)%timecounter_ram+1 + + + + + +! MiddleRamsStatus = IDshearBop +! UpperRamsStatus = IDPipeRam1 +! LowerRamsStatus = IDPipeRam2 +! AnnularStatus = IDAnnular +! AccumulatorPressureGauge = p_acc +! ManifoldPressureGauge= pram_reg +! AnnularPressureGauge=Pannular_reg +! +! +! +! WRITE(60,60) RAM(2)%time,RAM(2)%Q,RAM(2)%vdis_tot,p_acc, & +! pram_reg,Pannular_reg,RAM(2)%p_bop,IDshearBop, & +! IDPipeRam1,IDPipeRam2,IDAnnular +!60 FORMAT(11(f18.5)) + + + call sleepqq(100) + +if (PipeRam1_closed==1) then + ! if ((MiddleRamsValve==1. .and. MiddleRamsFailureMalf==0) .or. (MiddleRamsValve==-1.0 .and. MiddleRamsFailureMalf==0) .or. (LowerRamsValve==1. .and. LowerRamsFailureMalf==0) .or. (LowerRamsValve==-1.0 .and. LowerRamsFailureMalf==0) .or. (AnnularValve==1. .and. AnnularFailureMalf==0) .or. (AnnularValve==-1.0 .and. AnnularFailureMalf==0) .or. ChokeLineValve==1. .or. ChokeLineValve==-1.0 .or. KillLineValve==1. .or. KillLineValve==-1.0) then + finished_pipe1=1 + ! endif +endif + + if (IsStopped == .true.) return + + end do loop3 !while finished_pipe1==0 + + + + + + + if ( finished_pipe1==1 .and. RAM(2)%Bottles_Charged_MalfActive==.true.) then + call bop_code(2,H_PipeRam1Bop,2) !ramtype=2 2=RNUMBER + call sleepqq(100) + endif + + + + + + +END SUBROUTINE PIPE_RAMS1_SUB \ No newline at end of file diff --git a/Equipments/BopStack/PIPE_RAM2.f90 b/Equipments/BopStack/PIPE_RAM2.f90 new file mode 100644 index 0000000..c26b1f4 --- /dev/null +++ b/Equipments/BopStack/PIPE_RAM2.f90 @@ -0,0 +1,397 @@ + + +SUBROUTINE PIPE_RAMS2 + USE VARIABLES + USE CBopStackVariables + USE CBopControlPanelVariables + USE CEquipmentsConstants + ! USE CSimulationVariables + implicit none + + + !write(*,*) 'checkpoint 1' + +!===================================================================== +! PIPE RAMS 2- BOP CAMERON Type U 5000 +! START CONDITIONS FOR PIPE RAMS 2 +!===================================================================== + RAM(3)%SuccessionCounter = RAM(3)%SuccessionCounter + 1 + + + if (LowerRamsValve == 1.0 .and. LowerRamsFailureMalf==0 .and. RigAirMalf==0 .and. AirMasterValve==1) then + !write(*,*) 'close 1' + + + if (LowerRamsCloseLEDMine == LedOn) then + RETURN + end if + + + if ( RAM(3)%SuccessionCounter /= RAM(3)%SuccessionCounterOld+1 ) then + RAM(3)%SuccessionCounter = 0 ! also in starup + RAM(3)%SuccessionCounterOld = 0 ! also in starup + !return + else + RAM(3)%SuccessionCounterOld= RAM(3)%SuccessionCounter + endif + + + if ( RAM(3)%SuccessionCounter >= int(2.5/DeltaT_BOP) ) then + !return + + RAM(3)%First_CloseTimecheck= 1 + + LowerRamsOpenLED = LedOff + LowerRamsOpenLEDMine = LedOff + LowerRamsCloseLED = LedOn !LedBlinking + + RAM(3)%FourwayValve = 1 + + endif + + + endif + + + + if (RAM(3)%FourwayValve == 1 .and. p_acc>acc_MinPressure) then ! 1: Open , 0: Close + !write(*,*) 'close 2' + + + + RAM(3)%FourwayValve = 0 + + PipeRam2_closed=0 + !PipeRam2_closed_withPossibility= PipeRam2_closed * TD_BOPConnectionPossibility(4) + RAM(3)%vdis_tot=0 + RAM(3)%vdis_bottles=0. + RAM(3)%fvr_air=0. + RAM(3)%vdis_elecp=0. + Qiter=7 + RAM(3)%Qzero=70 + RAM(3)%Q=RAM(3)%Qzero + RAM(3)%flow=70 + RAM(3)%tol=0.0037 + if (finished_pipe2==1) then + PipeRams2LeverOld=-1.0 + else + PipeRams2LeverOld=LowerRamsValve + endif + finished_pipe2=0 + PipeRam2IsClosing = .true. + PipeRam2IsOpening = .false. + + + RAM(3)%bop_type = 3 + !AbopPipeRam=196.67 + AbopPipeRam=(LowerRamClose*231)/((IDPipeRamBase-ODDrillpipe_inPipeRam1Base)/2.) + NeededVolumePipeRams2=AbopPipeRam*(IDPipeRamBase-max(ODDrillpipe_inPipeRam2,ODDrillpipe_inPipeRam1Base))/(2.*231) !galon for each BOP + !write(*,*) 'close 1' + endif + + if (LowerRamsValve == -1.0 .and. LowerRamsFailureMalf==0 .and. RigAirMalf==0 .and. AirMasterValve==1) then + !write(*,*) 'open 1' + + if (LowerRamsOpenLEDMine == LedOn) then + RETURN + end if + + + if ( RAM(3)%SuccessionCounter /= RAM(3)%SuccessionCounterOld+1 ) then + RAM(3)%SuccessionCounter = 0 ! also in starup + RAM(3)%SuccessionCounterOld = 0 ! also in starup + !return + else + RAM(3)%SuccessionCounterOld= RAM(3)%SuccessionCounter + endif + + + if ( RAM(3)%SuccessionCounter >= int(2.5/DeltaT_BOP) ) then + !return + + RAM(3)%First_OpenTimecheck= 1 + + LowerRamsCloseLed = LedOff !new + LowerRamsCloseLedMine = LedOff !new + LowerRamsOpenLED = LedOn !LedBlinking + + RAM(3)%FourwayValve = 1 + + endif + + + endif + + + if (RAM(3)%FourwayValve == 1 .and. p_acc>acc_MinPressure) then ! 1: Open , 0: Close + !write(*,*) 'open 2' + + RAM(3)%FourwayValve = 0 + + PipeRam2_closed=0 + !PipeRam2_closed_withPossibility= PipeRam2_closed * TD_BOPConnectionPossibility(4) + RAM(3)%vdis_tot=0 + RAM(3)%vdis_bottles=0. + RAM(3)%fvr_air=0. + RAM(3)%vdis_elecp=0. + Qiter=7 + RAM(3)%Qzero=70 + RAM(3)%Q=RAM(3)%Qzero + RAM(3)%flow=70 + RAM(3)%tol=0.0037 + + if (finished_pipe2==1) then + PipeRams2LeverOld=1.0 + else + PipeRams2LeverOld=LowerRamsValve + endif + finished_pipe2=0 + PipeRam2IsOpening = .true. + PipeRam2IsClosing = .false. + + + !if (LowerRamsOpenLED == LedOn) then + ! RETURN + !end if + + + RAM(3)%bop_type = 3 + !AbopPipeRam=186.5 + AbopPipeRam=(LowerRamOpen*231)/((IDPipeRamBase-ODDrillpipe_inPipeRam1Base)/2.) + NeededVolumePipeRams2=AbopPipeRam*(IDPipeRamBase-max(ODDrillpipe_inPipeRam2,ODDrillpipe_inPipeRam1Base))/(2.*231) !galon for each BOP + !write(*,*) 'open 1' + + endif + + +!===================================================================== + + +if (PipeRam2IsOpening .or. PipeRam2IsClosing .or. RAM(3)%Bottles_Charged_MalfActive) then + + CALL PIPE_RAMS2_SUB +end if + + + END SUBROUTINE PIPE_RAMS2 + + + + + + + + + + + + +SUBROUTINE PIPE_RAMS2_SUB + + USE VARIABLES + USE CBopStackVariables + USE CBopControlPanelVariables + USE CEquipmentsConstants + USE CSimulationVariables + implicit none + + + FirstSet= 0 + RamsFirstSet= 0 + + loop4: do while (finished_pipe2==0) + + !write(*,*) 'checkpoint 2' + + + RAM(3)%SuccessionCounter = RAM(3)%SuccessionCounter + 1 + + + if (LowerRamsValve == 1.0 .and. PipeRams2LeverOld == -1.0 .and. LowerRamsFailureMalf==0 .and. RigAirMalf==0 .and. AirMasterValve==1) then + + !write(*,*) 'close 3' + + if ( RAM(3)%First_CloseTimecheck == 0 ) then + + + if ( RAM(3)%SuccessionCounter /= RAM(3)%SuccessionCounterOld+1 ) then + RAM(3)%SuccessionCounter = 0 ! also in starup + RAM(3)%SuccessionCounterOld = 0 ! also in starup + !return + else + RAM(3)%SuccessionCounterOld= RAM(3)%SuccessionCounter + endif + + + + if ( RAM(3)%SuccessionCounter >= int(2.5/DeltaT_BOP) ) then + !return + + LowerRamsOpenLED = LedOff + LowerRamsOpenLEDMine = LedOff + LowerRamsCloseLED = LedOn !LedBlinking + + RAM(3)%FourwayValve = 1 + + endif + + endif + + + + + endif + + if (RAM(3)%FourwayValve == 1 .and. p_acc>acc_MinPressure) then + !write(*,*) 'close 4' + + RAM(3)%FourwayValve = 0 + + + PipeRam2_closed=0 + !PipeRam2_closed_withPossibility= PipeRam2_closed * TD_BOPConnectionPossibility(4) + RAM(3)%p_bop=pa + PipeRams2LeverOld = LowerRamsValve + + CALL OpenLowerRams + PipeRam2_Situation_forTD= 0 ! open - for TD code + RAM(3)%bop_type = 3 + !AbopPipeRam=196.67 + AbopPipeRam=(LowerRamClose*231)/((IDPipeRamBase-ODDrillpipe_inPipeRam1Base)/2.) + NeededVolumePipeRams2=AbopPipeRam*(IDPipeRam2-max(ODDrillpipe_inPipeRam2,ODDrillpipe_inPipeRam1Base))/(2.*231) + + RAM(3)%vdis_bottles=0. + RAM(3)%fvr_air=0. + RAM(3)%vdis_elecp=0. + PipeRam2IsClosing = .true. + PipeRam2IsOpening = .false. + !write(*,*) 'close 2' + + endif + + if (LowerRamsValve == -1.0 .and. PipeRams2LeverOld == 1.0 .and. LowerRamsFailureMalf==0 .and. RigAirMalf==0 .and. AirMasterValve==1) then + !write(*,*) 'open 3' + + + if ( RAM(3)%First_OpenTimecheck == 0 ) then + + if ( RAM(3)%SuccessionCounter /= RAM(3)%SuccessionCounterOld+1 ) then + RAM(3)%SuccessionCounter = 0 ! also in starup + RAM(3)%SuccessionCounterOld = 0 ! also in starup + !return + else + RAM(3)%SuccessionCounterOld= RAM(3)%SuccessionCounter + endif + + if ( RAM(3)%SuccessionCounter >= int(2.5/DeltaT_BOP) ) then + !return + + LowerRamsCloseLED = LedOff + LowerRamsCloseLEDMine = LedOff + LowerRamsOpenLED = LedOn !LedBlinking + + RAM(3)%FourwayValve = 1 + + endif + + endif + + + endif + + + if (RAM(3)%FourwayValve == 1 .and. p_acc>acc_MinPressure) then + !write(*,*) 'open 4' + + RAM(3)%FourwayValve = 0 + + PipeRam2_closed=0 + !PipeRam2_closed_withPossibility= PipeRam2_closed * TD_BOPConnectionPossibility(4) + RAM(3)%p_bop=pa + PipeRams2LeverOld = LowerRamsValve + + CALL OpenLowerRams + PipeRam2_Situation_forTD= 0 ! open - for TD code + RAM(3)%bop_type = 3 + !AbopPipeRam=186.5 + AbopPipeRam=(LowerRamOpen*231)/((IDPipeRamBase-ODDrillpipe_inPipeRam1Base)/2.) + NeededVolumePipeRams2=AbopPipeRam*(IDPipeRamBase-IDPipeRam2)/(2.*231) + RAM(3)%vdis_bottles=0. + RAM(3)%fvr_air=0. + RAM(3)%vdis_elecp=0. + + PipeRam2IsOpening = .true. + PipeRam2IsClosing = .false. + !write(*,*) 'open 2' + + endif + + + RAM(3)%First_CloseTimecheck = 0 + RAM(3)%First_OpenTimecheck = 0 + + + RAM(3)%time=RAM(3)%time+DeltaT_BOP !overal time (s) + + + +!=================================================== +! BOP +!=================================================== +if (PipeRam2_closed==0) then !bop closing +!write(*,*) 'BOP code is called' + call bop_code(3,H_PipeRam2Bop,3) !ramtype=3 3=RNUMBER +endif !bop is closing +!================================================================ +if (PipeRam2_closed==1) then + RAM(3)%Q=0 + !p_bop=pram_reg + RAM(3)%p_bop=pa + RAMS%minloss(3,17)=0. !RNUMBER=3 +endif + +RAM(3)%timecounter_ram=RAM(3)%timecounter_ram+1 + + + + + +! MiddleRamsStatus = IDshearBop +! UpperRamsStatus = IDPipeRam1 +! LowerRamsStatus = IDPipeRam2 +! AnnularStatus = IDAnnular +! AccumulatorPressureGauge = p_acc +! ManifoldPressureGauge= pram_reg +! AnnularPressureGauge=Pannular_reg +! +! +! +! WRITE(60,60) RAM(3)%time,RAM(3)%Q,RAM(3)%vdis_tot,p_acc, & +! pram_reg,Pannular_reg,RAM(3)%p_bop,IDshearBop, & +! IDPipeRam1,IDPipeRam2,IDAnnular +!60 FORMAT(11(f18.5)) + + + call sleepqq(100) + +if (PipeRam2_closed==1) then + +! if ((MiddleRamsValve==1. .and. MiddleRamsFailureMalf==0) .or. (MiddleRamsValve==-1.0 .and. MiddleRamsFailureMalf==0) .or. (UpperRamsValve==1. .and. UpperRamsFailureMalf==0) .or. (UpperRamsValve==-1.0 .and. UpperRamsFailureMalf==0) .or. (AnnularValve==1. .and. AnnularFailureMalf==0) .or. (AnnularValve==-1.0 .and. AnnularFailureMalf==0) .or. ChokeLineValve==1. .or. ChokeLineValve==-1.0 .or. KillLineValve==1. .or. KillLineValve==-1.0) then + finished_pipe2=1 +! endif +endif + + if (IsStopped == .true.) return + + + end do loop4 !while finished_pipe2==0 + + if ( finished_pipe2==1 .and. RAM(3)%Bottles_Charged_MalfActive==.true.) then + call bop_code(3,H_PipeRam2Bop,3) !ramtype=3 3=RNUMBER + call sleepqq(100) + endif + + + + +END SUBROUTINE PIPE_RAMS2_SUB \ No newline at end of file diff --git a/Equipments/BopStack/PipeRams1Main.f90 b/Equipments/BopStack/PipeRams1Main.f90 new file mode 100644 index 0000000..474bfa4 --- /dev/null +++ b/Equipments/BopStack/PipeRams1Main.f90 @@ -0,0 +1,68 @@ +module PipeRams1Main + implicit none + public + contains + + subroutine PipeRams1_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(PipeRams1_Init) + call OnSimulationStop%Add(PipeRams1_Init) + call OnPipeRams1Step%Add(PipeRams1_Step) + call OnPipeRams1Output%Add(PipeRams1_Output) + call OnPipeRams1Main%Add(PipeRams1MainBody) + end subroutine + + subroutine PipeRams1_Init + implicit none + end subroutine PipeRams1_Init + + subroutine PipeRams1_Step + CALL PIPE_RAMS1 + end subroutine PipeRams1_Step + + subroutine PipeRams1_Output + + end subroutine PipeRams1_Output + + subroutine PipeRams1MainBody + + USE ifport + USE ifmt + USE CSimulationVariables + ! USE BOP + + implicit none + + INTEGER :: PipeRam1Duration + integer,dimension(8) :: PipeRam1StartTime , PipeRam1EndTime + + ! CALL BOP_StartUp() + loop1: DO + + CALL DATE_AND_TIME(values=PipeRam1StartTime) + CALL PIPE_RAMS1 + CALL DATE_AND_TIME(values=PipeRam1EndTime) + + PipeRam1Duration = 3600000 * (PipeRam1EndTime(5) - PipeRam1StartTime(5)) + 60000 * (PipeRam1EndTime(6) - PipeRam1StartTime(6)) + 1000 * (PipeRam1EndTime(7) - PipeRam1StartTime(7)) + (PipeRam1EndTime(8) - PipeRam1StartTime(8)) + + if (PipeRam1Duration < 100) then + call sleepqq(100 - PipeRam1Duration) + ELSE + WRITE (*,*) 'PipeRam1 BOP run duration exceeded 100 ms and =', PipeRam1Duration + end if + + + IF (IsStopped==.true.) THEN + EXIT loop1 + ENDIF + + + ENDDO loop1 + + + ! CALL DEALLOCATE_ARRAYS() + + end subroutine PipeRams1MainBody + +end module PipeRams1Main \ No newline at end of file diff --git a/Equipments/BopStack/PipeRams2Main.f90 b/Equipments/BopStack/PipeRams2Main.f90 new file mode 100644 index 0000000..6056832 --- /dev/null +++ b/Equipments/BopStack/PipeRams2Main.f90 @@ -0,0 +1,68 @@ + + module PipeRams2Main + implicit none + public + contains + + subroutine PipeRams2_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(PipeRams2_Init) + call OnSimulationStop%Add(PipeRams2_Init) + call OnPipeRams2Step%Add(PipeRams2_Step) + call OnPipeRams2Output%Add(PipeRams2_Output) + call OnPipeRams2Main%Add(PipeRams2MainBody) + end subroutine + + subroutine PipeRams2_Init + implicit none + end subroutine PipeRams2_Init + + subroutine PipeRams2_Step + CALL PIPE_RAMS2 + end subroutine PipeRams2_Step + + subroutine PipeRams2_Output + implicit none + end subroutine PipeRams2_Output + + subroutine PipeRams2MainBody + USE ifport + USE ifmt + USE CSimulationVariables + ! USE BOP + implicit none + + INTEGER :: PipeRam2Duration + integer,dimension(8) :: PipeRam2StartTime , PipeRam2EndTime + + ! CALL BOP_StartUp() + loop1: DO + + CALL DATE_AND_TIME(values=PipeRam2StartTime) + + + CALL PIPE_RAMS2 + + CALL DATE_AND_TIME(values=PipeRam2EndTime) + + PipeRam2Duration = 3600000 * (PipeRam2EndTime(5) - PipeRam2StartTime(5)) + 60000 * (PipeRam2EndTime(6) - PipeRam2StartTime(6)) + 1000 * (PipeRam2EndTime(7) - PipeRam2StartTime(7)) + (PipeRam2EndTime(8) - PipeRam2StartTime(8)) + + if (PipeRam2Duration < 100) then + call sleepqq(100 - PipeRam2Duration) + ELSE + WRITE (*,*) 'PipeRam2 BOP run duration exceeded 100 ms and =', PipeRam2Duration + end if + + IF (IsStopped==.true.) THEN + EXIT loop1 + ENDIF + + + ENDDO loop1 + + + ! CALL DEALLOCATE_ARRAYS() + end subroutine PipeRams2MainBody + +end module PipeRams2Main \ No newline at end of file diff --git a/Equipments/BopStack/SHEAR_RAM.f90 b/Equipments/BopStack/SHEAR_RAM.f90 new file mode 100644 index 0000000..418f3cc --- /dev/null +++ b/Equipments/BopStack/SHEAR_RAM.f90 @@ -0,0 +1,396 @@ + +SUBROUTINE SHEAR_RAMS + USE VARIABLES + USE CBopStackVariables + USE CBopControlPanelVariables + USE CEquipmentsConstants + USE CSimulationVariables + implicit none + + + +!===================================================================== +! SHEAR RAMS- BOP CAMERON Type U 5000 +! START CONDITIONS FOR SHEAR RAMS +!===================================================================== + + RAM(4)%SuccessionCounter = RAM(4)%SuccessionCounter + 1 + + + if (MiddleRamsValve == 1.0 .and. MiddleRamsFailureMalf==0 .and. RigAirMalf==0 .and. AirMasterValve==1) then + + if (MiddleRamsCloseLEDMine == LedOn) then + RETURN + end if + + + if ( RAM(4)%SuccessionCounter /= RAM(4)%SuccessionCounterOld+1 ) then + RAM(4)%SuccessionCounter = 0 ! also in starup + RAM(4)%SuccessionCounterOld = 0 ! also in starup + !return + else + RAM(4)%SuccessionCounterOld= RAM(4)%SuccessionCounter + endif + + + if ( RAM(4)%SuccessionCounter >= int(2.5/DeltaT_BOP) ) then + !return + + RAM(4)%First_CloseTimecheck= 1 + + MiddleRamsOpenLED = LedOff + MiddleRamsOpenLEDMine = LedOff + MiddleRamsCloseLED = LedOn !LedBlinking + + RAM(4)%FourwayValve = 1 + + endif + + endif + + + if (RAM(4)%FourwayValve == 1 .and. p_acc>acc_MinPressure) then ! 1: Open , 0: Close + !write(*,*) 'close 2' + + RAM(4)%FourwayValve = 0 + + + ShearBop_closed=0 + !ShearBop_closed_withPossibility= ShearBop_closed * TD_BOPConnectionPossibility(3) + RAM(4)%vdis_tot=0 + RAM(4)%vdis_bottles=0. + RAM(4)%fvr_air=0. + RAM(4)%vdis_elecp=0. + Qiter=7 + RAM(4)%Qzero=70 + RAM(4)%Q=RAM(4)%Qzero + RAM(4)%flow=70 + RAM(4)%tol=0.0037 + + + if (finished_shear==1) then + ShearRamsLeverOld=-1.0 + else + ShearRamsLeverOld=MiddleRamsValve + endif + finished_shear=0 + ShearRamIsClosing = .true. + ShearRamIsOpening = .false. + + RAM(4)%bop_type = 2 + !NeededVolumeShearRams=5.8 !galon for each BOP + !AbopShearRam=196.67 !(in^2) + AbopShearRam=(BlindRamClose*231)/(IDshearBopBase/2.) + !NeededVolumeShearRams=BlindRamClose !galon for each BOP **changed + NeededVolumeShearRams=AbopShearRam*(IDshearBopBase-ShearIsNotAllowed*ODDrillpipe_inShearRam)/(2.*231) !3.67 galon for each BOP ! **changed + va=AbopShearRam*(IDshearBopBase-ODDrillpipe_inShearRam)/(2.*231) + vb=NeededVolumeShearRams + endif + + if (MiddleRamsValve == -1.0 .and. MiddleRamsFailureMalf==0 .and. RigAirMalf==0 .and. AirMasterValve==1) then + + if (MiddleRamsOpenLEDMine == LedOn) then + RETURN + end if + + if ( RAM(4)%SuccessionCounter /= RAM(4)%SuccessionCounterOld+1 ) then + RAM(4)%SuccessionCounter = 0 ! also in starup + RAM(4)%SuccessionCounterOld = 0 ! also in starup + !return + else + RAM(4)%SuccessionCounterOld= RAM(4)%SuccessionCounter + endif + + + if ( RAM(4)%SuccessionCounter >= int(2.5/DeltaT_BOP) ) then + !return + + RAM(4)%First_OpenTimecheck= 1 + + MiddleRamsCloseLed = LedOff !new + MiddleRamsCloseLedMine = LedOff !new + MiddleRamsOpenLED = LedOn !LedBlinking + + endif + + endif + + + if (RAM(4)%FourwayValve == 1 .and. p_acc>acc_MinPressure) then ! 1: Open , 0: Close + !write(*,*) 'open 2' + + RAM(4)%FourwayValve = 0 + + + + ShearBop_closed=0 + !ShearBop_closed_withPossibility= ShearBop_closed * TD_BOPConnectionPossibility(3) + RAM(4)%vdis_tot=0 + RAM(4)%vdis_bottles=0. + RAM(4)%fvr_air=0. + RAM(4)%vdis_elecp=0. + Qiter=7 + RAM(4)%Qzero=70 + RAM(4)%Q=RAM(4)%Qzero + RAM(4)%flow=70 + RAM(4)%tol=0.0037 + + + if (finished_shear==1) then + ShearRamsLeverOld=1.0 + else + ShearRamsLeverOld=MiddleRamsValve + endif + finished_shear=0 + ShearRamIsOpening = .true. + ShearRamIsClosing = .false. + + + !if (MiddleRamsOpenLED == LedOn) then + ! RETURN + !end if + + + + RAM(4)%bop_type = 3 + !AbopShearRam=186.5 !(in^2) + AbopShearRam=(BlindRamOpen*231)/(IDshearBopBase/2.) + !NeededVolumeShearRams=5.5 !galon for each BOP + !NeededVolumeShearRams=BlindRamOpen ! **changed + NeededVolumeShearRams=AbopShearRam*(IDshearBopBase-ShearIsNotAllowed*ODDrillpipe_inShearRam)/(2.*231) !3.67 galon for each BOP ! **changed + !va=AbopShearRam*(IDshearBopBase-ODDrillpipe_inShearRam)/(2.*231) + !vb=NeededVolumeShearRams + endif + + +!===================================================================== + + +if (ShearRamIsOpening .or. ShearRamIsClosing .or. RAM(4)%Bottles_Charged_MalfActive) then + CALL SHEAR_RAMS_SUB +end if + + + END SUBROUTINE SHEAR_RAMS + + + + + +SUBROUTINE SHEAR_RAMS_SUB + USE VARIABLES + USE CBopStackVariables + USE CBopControlPanelVariables + USE CEquipmentsConstants + USE CSimulationVariables + implicit none + + + FirstSet= 0 + RamsFirstSet= 0 + + loop2: do while (finished_shear==0) + + RAM(4)%SuccessionCounter = RAM(4)%SuccessionCounter + 1 + + + + if (MiddleRamsValve == 1.0 .and. ShearRamsLeverOld == -1.0 .and. MiddleRamsFailureMalf==0 .and. RigAirMalf==0 .and. AirMasterValve==1) then + + + if ( RAM(4)%First_CloseTimecheck == 0 ) then + + + if ( RAM(4)%SuccessionCounter /= RAM(4)%SuccessionCounterOld+1 ) then + RAM(4)%SuccessionCounter = 0 ! also in starup + RAM(4)%SuccessionCounterOld = 0 ! also in starup + !return + else + RAM(4)%SuccessionCounterOld= RAM(4)%SuccessionCounter + endif + + + + if ( RAM(4)%SuccessionCounter >= int(2.5/DeltaT_BOP) ) then + !return + + MiddleRamsOpenLED = LedOff + MiddleRamsOpenLEDMine = LedOff + MiddleRamsCloseLED = LedOn !LedBlinking + + RAM(4)%FourwayValve = 1 + + endif + + endif + + endif + + + if (RAM(4)%FourwayValve == 1 .and. p_acc>acc_MinPressure) then + !write(*,*) 'close 4' + + RAM(4)%FourwayValve = 0 + + + + + ShearBop_closed=0 + !ShearBop_closed_withPossibility= ShearBop_closed * TD_BOPConnectionPossibility(3) + RAM(4)%p_bop=pa + ShearRamsLeverOld = MiddleRamsValve + + CALL OpenMiddleRams ! for C code + ShearBop_Situation_forTD= 0 ! open - for TD code + + RAM(4)%bop_type = 2 + !AbopShearRam=196.67 + AbopShearRam=(BlindRamClose*231)/(IDshearBopBase/2.) + !NeededVolumeShearRams=AbopShearRam*IDshearBop/(2.*231) ! **changed + NeededVolumeShearRams=AbopShearRam*(IDshearBop-ShearIsNotAllowed*ODDrillpipe_inShearRam)/(2.*231) ! **changed + + + RAM(4)%vdis_bottles=0. + RAM(4)%fvr_air=0. + RAM(4)%vdis_elecp=0. + ShearRamIsClosing = .true. + ShearRamIsOpening = .false. + endif + + if (MiddleRamsValve == -1.0 .and. ShearRamsLeverOld == 1.0 .and. MiddleRamsFailureMalf==0 .and. RigAirMalf==0 .and. AirMasterValve==1) then + + + if ( RAM(4)%First_OpenTimecheck == 0 ) then + + if ( RAM(4)%SuccessionCounter /= RAM(4)%SuccessionCounterOld+1 ) then + RAM(4)%SuccessionCounter = 0 ! also in starup + RAM(4)%SuccessionCounterOld = 0 ! also in starup + !return + else + RAM(4)%SuccessionCounterOld= RAM(4)%SuccessionCounter + endif + + if ( RAM(4)%SuccessionCounter >= int(2.5/DeltaT_BOP) ) then + !return + + MiddleRamsCloseLED = LedOff + MiddleRamsCloseLEDMine = LedOff + MiddleRamsOpenLED = LedOn !LedBlinking + + RAM(4)%FourwayValve = 1 + + endif + + endif + + endif + + if (RAM(4)%FourwayValve == 1 .and. p_acc>acc_MinPressure) then + !write(*,*) 'open 4' + + RAM(4)%FourwayValve = 0 + + + ShearBop_closed=0 + !ShearBop_closed_withPossibility= ShearBop_closed * TD_BOPConnectionPossibility(3) + RAM(4)%p_bop=pa + ShearRamsLeverOld = MiddleRamsValve + + CALL OpenMiddleRams + ShearBop_Situation_forTD= 0 ! open - for TD code + RAM(4)%bop_type = 3 + !AbopShearRam=186.5 + NeededVolumeShearRams=AbopShearRam*(IDshearBopBase-IDshearBop)/(2.*231) + RAM(4)%vdis_bottles=0. + RAM(4)%fvr_air=0. + RAM(4)%vdis_elecp=0. + + ShearRamIsOpening = .true. + ShearRamIsClosing = .false. + endif + + + RAM(4)%First_CloseTimecheck = 0 + RAM(4)%First_OpenTimecheck = 0 + + + RAM(4)%time=RAM(4)%time+DeltaT_BOP !overal time (s) + + + + +!=================================================== +! BOP +!=================================================== +if (ShearBop_closed==0) then !bop closing + call bop_code(1,H_ShearRamBop,4) !ramtype=1 4=RNUMBER +endif !bop is closing +!================================================================ +if (ShearBop_closed==1) then + RAM(4)%Q=0 + ! p_bop=pram_reg + RAM(4)%p_bop=pa + RAMS%minloss(4,17)=0. !RNUMBER=4 +endif + + + + +RAM(4)%timecounter_ram=RAM(4)%timecounter_ram+1 + + + + +! MiddleRamsStatus = IDshearBop +! UpperRamsStatus = IDPipeRam1 +! LowerRamsStatus = IDPipeRam2 +! AnnularStatus = IDAnnular +! AccumulatorPressureGauge = p_acc +! ManifoldPressureGauge= pram_reg +! AnnularPressureGauge=Pannular_reg +! +! +! +! WRITE(60,60) RAM(4)%time,RAM(4)%Q,RAM(4)%vdis_tot,p_acc & +! ,pram_reg,Pannular_reg,RAM(4)%p_bop,IDshearBop, & +! IDPipeRam1,IDPipeRam2,IDAnnular +!60 FORMAT(11(f18.5)) + +! + + call sleepqq(100) + +if (ShearBop_closed==1) then +! if ((UpperRamsValve==1. .and. UpperRamsFailureMalf==0) .or. (UpperRamsValve==-1.0 .and. UpperRamsFailureMalf==0) .or. (LowerRamsValve==1. .and. LowerRamsFailureMalf==0) .or. (LowerRamsValve==-1.0 .and. LowerRamsFailureMalf==0) .or. (AnnularValve==1. .and. AnnularFailureMalf==0) .or. (AnnularValve==-1.0 .and. AnnularFailureMalf==0) .or. ChokeLineValve==1. .or. ChokeLineValve==-1.0 .or. KillLineValve==1. .or. KillLineValve==-1.0) then + finished_shear=1 +! endif +endif + + if (IsStopped == .true.) return + + + end do loop2 !while finished_shear==0 + + + if ( finished_shear==1 .and. RAM(4)%Bottles_Charged_MalfActive==.true.) then + call bop_code(1,H_ShearRamBop,4) !ramtype=1 4=RNUMBER + call sleepqq(100) + endif + + + +END SUBROUTINE SHEAR_RAMS_SUB + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Equipments/BopStack/VARIABLES.f90 b/Equipments/BopStack/VARIABLES.f90 new file mode 100644 index 0000000..bf10456 --- /dev/null +++ b/Equipments/BopStack/VARIABLES.f90 @@ -0,0 +1,212 @@ +MODULE VARIABLES + use DynamicDoubleArray + IMPLICIT NONE + + + + +!=========================================================================== +! INPUT VARIABLES +!=========================================================================== +REAL,ALLOCATABLE:: MINORS1(:,:),PIPINGS_RAMLINE(:,:),MINORS_ANNULAR(:,:),PIPINGS_ANNULAR(:,:),PIPINGS_AIRPUMP(:,:),MINORS_AIRPUMP(:,:) + +integer AnnularOpenLedMine,AnnularCloseLedMine,UpperRamsCloseLEDMine,UpperRamsOpenLEDMine,LowerRamsOpenLEDMine,LowerRamsCloseLEDMine +integer MiddleRamsOpenLEDMine,MiddleRamsCloseLEDMine,KillLineOpenLedMine,KillLineCloseLedMine,ChokeLineOpenLEDMine,ChokeLineCloseLEDMine +integer BOP_timeCounter +!=========================================================================== +! ACC. VARIABLES +!=========================================================================== +REAL,PARAMETER :: PI=3.141593 ,PressureDifferenceSteps = 20. ,BaseDifferenceP= 200. ! psi +REAL FVR_TOT,BOTTLE_CAPACITY,PRAMS_REGSET,acc_ChargedPressure,acc_MinPressure,ACC_PRECHARGE,ByPassOld +REAL pram_reg,test1,test2,test3,test4,test5,test6,test7,test8,test9,ax,bx +integer NOBOTTLES,AccPupmsFailMalf,AirSupplyPressureGaugeMalf,ManifoldPressureGaugeMalf,AccumulatorPressureGaugeMalf,RigAirMalf +real Cumulative_AirVolume, PressureDifference +integer SoundKoomeyAirPump +!=========================================================================== +! RAM LINE COMPUTATIONAL VARIABLES +!=========================================================================== +logical ShearRamIsClosing,ShearRamIsOpening +REAL ShearRamsLeverOld,NoActiveRmas +!REAL checkp,p_acccheck +REAL P_ACC,FVR,DeltaT_BOP +REAL diffp_air,losses_air,Qup,kinetic_air,pipe_loss1air,minor_loss1air,static_loss1air!,pipe_loss1_before,minor_loss1,static_loss1,kinetic_loss1,pipe_loss1 +!REAL loss_before,pipe_loss2,minor_loss2,deltah,static_loss2,kinetic_loss2,loss_after +integer AIRP_SWITCH,ELECP_SWITCH,ShearBop_closed,FINISHED_shear,EOF,NO_MINORSRAMLINE,NO_PIPINGSRAMLINE,NO_PIPINGS_AIRPLINE,NO_MINORS_AIRPLINE +integer counter,iteration,ShearBop_Situation_forTD +real BA1,BA2,BA3,BA4,BBA1,BBA2,BBA3,BBA4 +REAL B1,B2,B3,B4 +REAL,ALLOCATABLE:: Re_air(:),DIAM_AIR_MM(:),DIAM_AIR_INCH(:),AREA_AIR(:),REL_ROUGHAIR(:),LENGT_AIR(:),LF_AIR(:),CV_AIR(:),NOTE_AIR(:) +REAL,ALLOCATABLE:: fric_air(:),fricloss_air(:),minlosspa_air(:),minloss_air(:) +REAL,ALLOCATABLE:: MINORDIAM_AIR_INCH(:),MINORAREA_AIR(:) +REAL,ALLOCATABLE:: DIAM_RAMLINE_INCH(:),DIAM_RAMLINE_MM(:),AREA_RAMLINE(:),ROUGHNESS_AIRPLINE(:),ROUGHNESS_RAMLINE(:),RELROUGH_RAMLINE(:),LENGT_RAMLINE(:),LF_RAMLINE(:),CV_RAMLINE(:),NOTE_RAMLINE(:),AREAMINOR_RAMLINE(:) +!REAL,ALLOCATABLE:: Re_ramline(:),fric(:),fricloss(:) +REAL,ALLOCATABLE:: MINORDIAMETER_RAMLINE(:) +INTEGER,ALLOCATABLE:: ITEM(:),ITEM_PIPING(:),ITEM_PIPINGAIR(:),ITEM_MINORAIR(:) +CHARACTER,ALLOCATABLE:: DECRIPTION(:),DECRIPTION2(:),DECRIPTION_RAM(:),DESCRIPTION_AIR1(:),DESCRIPTION_AIR2(:) +real:: counter_airp,pacc_before +integer Annular_active,ShearBop_active,PipeRam1_active,PipeRam2_active,ChokeLine_active,KillLine_active +!=========================================================================== +! ANNULAR PREVENTER COMPUTATIONAL VARIABLES +!=========================================================================== + +integer PannularTimeStepDelay +type(DynamicDoubleArrayType) :: Pannular_regDelay + + +logical AnnPressureRise +integer NO_MinorsAnnularLine,NO_PipingsAnnularLine,RamsFirstSet +REAL pa_annular,p_annular +REAL,ALLOCATABLE:: MINORDIAMETER_ANNULARLINE(:),AREAMINOR_ANNULARLINE(:) +!REAL,ALLOCATABLE:: REAL_PregAnnular(:),real_IDAnnular(:),real_pAnnular(:) +REAL REAL_PregAnnular,real_IDAnnular,real_pAnnular +REAL,ALLOCATABLE:: LF_ANNULARLINE(:),CV_ANNULARLINE(:),NOTE_ANNULARLINE(:),minlosspa_ANNULAR(:),minloss_ANNULAR(:) +REAL,ALLOCATABLE:: DIAM_ANNULARLINE_INCH(:),DIAM_ANNULARLINE_MM(:),AREA_ANNULARLINE(:) +REAL,ALLOCATABLE:: LENGT_ANNULARLINE(:),ROUGHNESS_ANNULARLINE(:),RELROUGH_ANNULARLINE(:),Re_ANNULARline(:),fricANNULAR(:),friclossANNULAR(:) +INTEGER,ALLOCATABLE:: ITEMANNULAR(:),ITEM_PIPINGANNULAR(:) +CHARACTER,ALLOCATABLE:: DECRIPTIONANNULAR(:),DECRIPTION2ANNULAR(:),DECRIPTION_ANNULAR(:) +REAL WellBorePressure,acoef,Bcoef,const,AnnularSealingPressure,AnnularMovingPressure +!=========================================================================== +! ANNULAR PREVENTER VARIABLES +!=========================================================================== +REAL (8) Pannular_reg +real Pannular_regset +logical AnnularIsClosing,AnnularIsOpening +REAL tolAnnular,tolzeroAnnular +integer Annular_closed,finished_Annular,FirstSet,AnnularFailureMalf,AnnularLeakMalf,AnnularPressureGaugeMalf,Annular_Situation_forTD +REAL AnnularLeverOld,H_AnnularBop,IDAnnular,AbopAnnular,ODDrillpipe_inAnnular,IDAnnularBase,ODDrillpipe_inAnnularBase +REAL NeededVolumeAnnular +!=========================================================================== +! PIPE RAMS 1 VARIABLES +!=========================================================================== +logical PipeRam1IsClosing,PipeRam1IsOpening +REAL PipeRams1LeverOld,H_PipeRam1Bop +REAL NeededVolumePipeRams1,AbopPipeRam,IDPipeRamBase,IDPipeRam1,ODDrillpipe_inPipeRam1,ODDrillpipe_inPipeRam1Base +integer PipeRam1_closed,finished_pipe1,UpperRamsFailureMalf,UpperRamsLeakMalf,PipeRam1_Situation_forTD +REAL real_IDPipeRam1 + +!============================================================================ +! SHEAR RAM BOP VARIABLES +!============================================================================ +REAL PA,PB,P_SHEAR,VA,VB,RAM_COURSE,H_REGRAM,H_ShearRamBop +REAL,ALLOCATABLE:: ALPHA_QRAM(:),ALPHA_VDISRAM(:),ALPHA_PACC(:),ALPHA_PREGRAM(:),ALPHA_PBOP(:) +!REAL,ALLOCATABLE:: REAL_TIME(:),REAL_QRAM(:),REAL_VDISRAM(:),REAL_PACC(:),REAL_PREGRAM(:),REAL_PBOP(:),real_IDshearBop(:) +REAL REAL_TIME,REAL_QRAM,REAL_VDISRAM,REAL_PACC,REAL_PREGRAM,REAL_PBOP,real_IDshearBop +REAL IDshearBopBase,IDshearBop,ODDrillpipe_inShearRam,AbopShearRam,NeededVolumeShearRams,ODDrillpipe_inShearRamBase +Real IDshearBopFinal,IDPipeRam1Final,IDPipeRam2Final,IDAnnularFinal,OpenArea_shearBop,OpenArea_PipeRam1,OpenArea_PipeRam2,OpenArea_Annular +Real MinimumOpenArea_InBOP +integer MiddleRamsFailureMalf,MiddleRamsLeakMalf,ShearIsNotAllowed + +!=========================================================================== +! PIPE RAMS 2 VARIABLES +!=========================================================================== +logical PipeRam2IsClosing,PipeRam2IsOpening +REAL PipeRams2LeverOld,H_PipeRam2Bop +REAL NeededVolumePipeRams2,IDPipeRam2,ODDrillpipe_inPipeRam2,ODDrillpipe_inPipeRam2Base +integer PipeRam2_closed,finished_pipe2,LowerRamsFailureMalf,LowerRamsLeakMalf,PipeRam2_Situation_forTD +!REAL,ALLOCATABLE:: real_IDPipeRam2(:) +REAL real_IDPipeRam2 + +!=========================================================================== +! CHOKE LINE VARIABLES +!=========================================================================== +logical ChokeLineIsClosing,ChokeLineIsOpening +REAL ChokeLineLeverOld,H_ChokeLineBop +REAL NeededVolumeChokeLine,AbopChokeLine,IDChokeLine,ODDrillpipe_inChokeLine,IDChokeLineBase,ODDrillpipe_inChokeLineBase +integer ChokeLine_closed,finished_ChokeLine +!REAL,ALLOCATABLE:: real_IDPipeRam1(:) +REAL real_IDChokeLine + +!=========================================================================== +! KILL LINE VARIABLES +!=========================================================================== +logical KillLineIsClosing,KillLineIsOpening +REAL KillLineLeverOld,H_KillLineBop +REAL NeededVolumeKillLine,AbopKillLine,IDKillLine,ODDrillpipe_inKillLine,IDKillLineBase,ODDrillpipe_inKillLineBase +integer KillLine_closed,finished_KillLine +!REAL,ALLOCATABLE:: real_IDPipeRam1(:) +REAL real_IDKillLine + +!============================================================================ +! OIL & ENVIRONMENT VARIABLES +!============================================================================ +REAL:: SG=1.12,WDENS=1000,GRAVITY=9.81,RE_CR=2000,NU=9e-6 +!specific gravity of liquid +!water density(kg/m^3) +!============================================================================ +! PUMP VARIABLES +!============================================================================ +REAL P_AIRP,DELTAV_AIR,TOL_AIR,DELTAV_ELECP,Qiter +REAL ELECTRIC_PUMPON,ELECTRIC_PUMPOFF,AIR_PUMPON,AIR_PUMPOFF,QAIR_PUMP,QELECTRIC_PUMP +!REAL,ALLOCATABLE:: alpha_Qair(:),alpha_timeair(:),alpha_paccair(:),alpha_pairp(:),alpha_diffpair(:),alpha_lossesair(:),alpha_fvrair(:) +REAL alpha_Qair,alpha_timeair,alpha_paccair,alpha_pairp,alpha_diffpair,alpha_lossesair,alpha_fvrair +logical SoundKoomeyElectricPump + + + +!================================================================================= + + TYPE, PUBLIC :: BOP_TypeVars + + + + + REAL vdis_tot,vdis_bottles,deltav_bottles,fvr_air,vdis_elecp,Qzero,Q,flow,tol,TIME,timecounter_ram,clock + integer bop_type, SuccessionCounter, SuccessionCounterOld,First_CloseTimecheck,First_OpenTimecheck,FourwayValve ! FourwayValve 1: Open , 0: Close + REAL loss_before,pipe_loss2,minor_loss2,deltah,static_loss2,kinetic_loss2,loss_after,TOLZERO,diffp_ram + REAL checkp,p_acccheck,P_BOP,minor_loss1,static_loss1,kinetic_loss1,pipe_loss1 + Logical Bottles_Charged_MalfActive + + + + END TYPE BOP_TypeVars + + TYPE(BOP_TypeVars), DIMENSION(1:6) :: RAM + + + + + + + TYPE, PUBLIC :: BOP_TypeVars2D + + + REAL, ALLOCATABLE:: minlosspa(:,:),minloss(:,:) + REAL,ALLOCATABLE:: Re_ramline(:,:),fric(:,:),fricloss(:,:) + + + END TYPE BOP_TypeVars2D + + TYPE(BOP_TypeVars2D) :: RAMS + + + + + + ! 1 : Annular (RNUMBER) + ! 2 : PipeRam1 (RNUMBER) + ! 3 : PipeRam2 (RNUMBER) + ! 4 : ShearRam (RNUMBER) + ! 5 : ChokeLine (RNUMBER) + ! 6 : KillLine (RNUMBER) + + + + + + + + + + + + + + + + +END MODULE + + + + + diff --git a/Equipments/BopStack/bopstackmain.mod b/Equipments/BopStack/bopstackmain.mod new file mode 100644 index 0000000000000000000000000000000000000000..0d49faf7fb81c99d58050fb9752377662c603d01 GIT binary patch literal 289 zcmV++0p9)}iwFP!000001FeuvYlA=#hVT0;=B6G}OhOOs&FHj9<0`A$5)j0i4cJE4 z`qBRVt`VDHgXj>g8@tol_air) !finding correct QAIR_pump for 1 timecounter_ram + +if (diffp_air-losses_air>0) then + QAIR_PUMP=QAIR_PUMP+.005 +else + QAIR_PUMP=QAIR_PUMP-.005 +endif + +!=================================================================== +! AIR OPERATED PUMP +! MODEL 10-6000W030 RATIO 55:1 +!=================for air consumption at 100 psig=================== + + p_airp=cc1*(QAIR_PUMP**4) + cc2*(QAIR_PUMP**3) + cc3*(QAIR_PUMP**2) + cc4*QAIR_PUMP + cc5 !(psig) + !kinetic_air=sg*wdens*(QAIR_PUMP*6.30902e-005/((1/4.)*pi*(2*0.254e-1)**2))**2/(2*6895) !(psi) + + diffp_air= p_airp - Pdownstrem + + +!===========================LOSSES==================================== + do i=1,NO_PIPINGS_AIRPLINE +Re_air(i)=QAIR_PUMP*6.30902e-005*DIAM_AIR_INCH(I)*0.0254/(area_air(i)*nu) +enddo + + +do i=1,NO_PIPINGS_AIRPLINE + if (Re_air(i) 1.0 ) then + SoundChokePump= 60 + Cumulative_AirVolume_Choke= Cumulative_AirVolume_Choke - 1.0 + else + SoundChokePump= 0.0 + endif + + !SoundChokePump= int (QAIR_PUMP/ (1.5*0.004329004)*DeltaT_Choke/60.0) ! 1.5: Volume per stroke (in^3) , 0.004329004: in^3 to gal , 60:seconds + + + +deltav_air=QAIR_PUMP*DeltaT_Choke/60 !(galon) delta_t=1sec , Q(gpm) + +if (CHOOKE(CHNUMBER)%ChokeIsClosing) CHOOKE(CHNUMBER)%PassedCourse=CHOOKE(CHNUMBER)%PassedCourse + (deltav_air*3785.412/Acylinder)!*(ChokeRateControlKnob/10.) ! 3785.412 : GALON TO CM^3 + + +if (CHOOKE(CHNUMBER)%ChokeIsOpening) CHOOKE(CHNUMBER)%PassedCourse=CHOOKE(CHNUMBER)%PassedCourse - (deltav_air*3785.412/Acylinder)!*(ChokeRateControlKnob/10.) + + + +!DeltaT_Choke= 1sec or 2sec + + +!((((((((IN OUTER LOOP)))))) + +!===============AIR PUMP OUTPUTS========================= +alpha_timeair=time ! overal time (s) +alpha_Pdownstrem=Pdownstrem +alpha_pairp=p_airp +alpha_Qair=QAIR_PUMP +!write(*,*) 'diffp_air=',diffp_air +!pause +alpha_diffpair=diffp_air + +alpha_lossesair=losses_air +!======================================================== +!OPEN(150,FILE='CHOKE_AIRPUMP_OUTPUTS.DAT') + + + if (CHOOKE(CHNUMBER)%ChokeIsClosing .AND. CHOOKE(CHNUMBER)%PassedCourse>CourseBase) then + CHOOKE(CHNUMBER)%PassedCourse=CourseBase + SoundChokePump= 0.0 + endif + + if (CHOOKE(CHNUMBER)%ChokeIsOpening .AND. CHOOKE(CHNUMBER)%PassedCourse<0.) then + CHOOKE(CHNUMBER)%PassedCourse=0. + SoundChokePump= 0.0 + endif + + + call SetSoundChokePump(SoundChokePump) + + CHOOKE(CHNUMBER)%PercentClose= CHOOKE(CHNUMBER)%PassedCourse/CourseBase + + + IF (Choke1LED==1) THEN + ChokePosition= (1 - GaugeChokePositionMailf) * CHOOKE(1)%PercentClose*10 + ELSE ! Choke2LED==1 + ChokePosition= (1 - GaugeChokePositionMailf) * CHOOKE(2)%PercentClose*10 + ENDIF + + !CALL SetHydraulicChock1(nint(MIN(CHOOKE(1)%PercentClose / 0.91 , 1.0)*100)) + ! CALL SetHydraulicChock2(nint(MIN(CHOOKE(2)%PercentClose / 0.91 , 1.0)*100)) + + ! .91 >> 9 percent clearance + +! =================== calculating Area + + ! AreaChoke=0.5 + ! .91 >> 9 percent clearance + + CHOOKE(1)%AreaChoke=0.01334635-(0.01334635* MIN(CHOOKE(1)%PercentClose / 0.91 , 1.0)) !ft^2 0.01334635 is ChokeAreaFullyOpen (ft^2) + CHOOKE(2)%AreaChoke=0.01334635-(0.01334635* MIN(CHOOKE(2)%PercentClose/ 0.91 , 1.0)) !ft^2 + + !write(*,*) 'CHOOKE(1)%AreaChoke= ' , CHOOKE(1)%AreaChoke + + + + + HydraulicChoke1WashoutCoef= HydraulicChoke1WashoutCoef * CHOOKE(1)%WashoutMalf + HydraulicChoke1WashoutCoef= MIN( 0.5 , HydraulicChoke1WashoutCoef+ CHOOKE(1)%WashoutMalf*(0.5/(60.0/DeltaT_Choke)) ) ! 0.5=maximum washout coef , 60.0 sec= 1min duration time + + HydraulicChoke2WashoutCoef= HydraulicChoke2WashoutCoef * CHOOKE(2)%WashoutMalf + HydraulicChoke2WashoutCoef= MIN( 0.5 , HydraulicChoke2WashoutCoef+ CHOOKE(2)%WashoutMalf*(0.5/(60.0/DeltaT_Choke)) ) ! 0.5=maximum washout coef , 60.0 sec= 1min duration time + + + !write(*,*) 'HydraulicChoke1WashoutCoef=' , HydraulicChoke1WashoutCoef + + IF (CHOOKE(1)%PlugMalf == 1) THEN + + Present_HydraulicChoke1Plug= Present_HydraulicChoke1Plug * CHOOKE(1)%PlugMalf + ! integer: HydraulicChoke1PluggedPercent,HydraulicChoke1PluggedPercent_Old,PlugTimeCounter,ChokePlugTimeDelay + ! real: Present_HydraulicChoke1Plug,DeltaPlug1Percent + + !write(*,*) 'HydraulicChoke1PluggedPercent=' , HydraulicChoke1PluggedPercent + + if ( (HydraulicChoke1PluggedPercent - HydraulicChoke1PluggedPercent_Old) /= 0) then + DeltaPlug1Percent = (REAL(HydraulicChoke1PluggedPercent)/100.) - Present_HydraulicChoke1Plug + Plug1TimeCounter = 0 + !write(*,*) 'DeltaPlug1Percent, Present_HydraulicChoke1Plug = ' ,DeltaPlug1Percent , Present_HydraulicChoke1Plug + endif + + + Plug1TimeCounter= Plug1TimeCounter + 1 + + HydraulicChoke1PluggedPercent_Old= HydraulicChoke1PluggedPercent + + if (Plug1TimeCounter <= ChokePlugTimeDelay) then !ChokePlugTimeDelay=600 + + Present_HydraulicChoke1Plug = Present_HydraulicChoke1Plug + CHOOKE(1)%PlugMalf* ((DeltaPlug1Percent / real(ChokePlugTimeDelay))) ! real(ChokePlugTimeDelay)= 600.0 + + endif + + !write(*,*) 'Present_HydraulicChoke1Plug=' , Present_HydraulicChoke1Plug + + ENDIF + + + + + + + IF (CHOOKE(2)%PlugMalf == 1) THEN + + Present_HydraulicChoke2Plug= Present_HydraulicChoke2Plug * CHOOKE(2)%PlugMalf + ! integer: HydraulicChoke2PluggedPercent,HydraulicChoke2PluggedPercent_Old,PlugTimeCounter,ChokePlugTimeDelay + ! real: Present_HydraulicChoke2Plug,DeltaPlug2Percent + + + if ( (HydraulicChoke2PluggedPercent - HydraulicChoke2PluggedPercent_Old) /= 0 ) then + DeltaPlug2Percent = (REAL(HydraulicChoke2PluggedPercent)/100.) - Present_HydraulicChoke2Plug + Plug2TimeCounter = 0 + endif + + Plug2TimeCounter= Plug2TimeCounter + 1 + + HydraulicChoke2PluggedPercent_Old= HydraulicChoke2PluggedPercent + + if (Plug2TimeCounter <= ChokePlugTimeDelay) then !ChokePlugTimeDelay=600 + + Present_HydraulicChoke2Plug = Present_HydraulicChoke2Plug + CHOOKE(2)%PlugMalf *((DeltaPlug2Percent / real(ChokePlugTimeDelay))) ! real(ChokePlugTimeDelay)= 600.0 + + endif + + ENDIF + + + + + + + + ! fully open area is 123/64 in^2 = 0.01334635 ft^2 + CHOOKE(1)%AreaChoke=CHOOKE(1)%AreaChoke+(CHOOKE(1)%WashoutMalf*HydraulicChoke1WashoutCoef*ChokeAreaFullyOpen/144.0) ! Initialised in Choke Startup + + !write(*,*) 'CHOOKE(1)%WashoutMalf , CHOOKE(1)%AreaChoke=' ,CHOOKE(1)%WashoutMalf , CHOOKE(1)%AreaChoke + + CHOOKE(1)%AreaChoke=CHOOKE(1)%AreaChoke-(CHOOKE(1)%PlugMalf* Present_HydraulicChoke1Plug *CHOOKE(1)%AreaChoke) ! Initialised in Choke Startup + + CHOOKE(2)%AreaChoke=CHOOKE(2)%AreaChoke+(CHOOKE(2)%WashoutMalf*HydraulicChoke2WashoutCoef*ChokeAreaFullyOpen/144.0) ! Initialised in Choke Startup + CHOOKE(2)%AreaChoke=CHOOKE(2)%AreaChoke-(CHOOKE(2)%PlugMalf* Present_HydraulicChoke2Plug *CHOOKE(2)%AreaChoke) ! Initialised in Choke Startup + !write(*,*) 'CHOOKE(2)%WashoutMalf , CHOOKE(2)%AreaChoke=' ,CHOOKE(2)%WashoutMalf , CHOOKE(2)%AreaChoke + + + CHOOKE(1)%AreaChokeFinal= CHOOKE(1)%AreaChoke + CHOOKE(2)%AreaChokeFinal= CHOOKE(2)%AreaChoke + + ! 144: ft^2 to in^2 + CALL SetHydraulicChock1(100 - nint((CHOOKE(1)%AreaChokeFinal/(ChokeAreaFullyOpen/144.))*100)) ! for manifold valve + CALL SetHydraulicChock2(100 - nint((CHOOKE(2)%AreaChokeFinal/(ChokeAreaFullyOpen/144.))*100)) ! for manifold valve + + + !write(*,*) 'CHOOKE(1)%PercentClose=' , CHOOKE(1)%PercentClose ! close percent 0 to 100 + !write(*,*) 'ChokePosition=' , ChokePosition ! close position 0 to 10 for display + !write(*,*) 'CHOOKE(1)%AreaChokeFinal=' , CHOOKE(1)%AreaChokeFinal ! Open Area (in^2) with clearance + !write(*,*) '(ChokeAreaFullyOpen/144.)=' , (ChokeAreaFullyOpen/144.) + !write(*,*) 'valve value=' , 100 - nint((CHOOKE(1)%AreaChokeFinal/(ChokeAreaFullyOpen/144.))*100) ! percent close 0 to 100 with clearance + !write(*,*) 'Valve(33)%Status=' , Valve(33)%Status ! T : open , F: close + + + + + +! =================== calculating Area + + + + !write(*,*) 'CHOOKE(1)%AreaChoke= ' , CHOOKE(1)%AreaChoke + + + +! WRITE(150,50) alpha_timeair,alpha_Qair,alpha_pairp, & +! alpha_Pdownstrem,alpha_diffpair,alpha_lossesair,CHOOKE(CHNUMBER)%PassedCourse +!50 FORMAT(7(f15.5)) + + +!======================================================================================== +!======================================================================================== + + ! write(*,*) PassedCourse + + + + end diff --git a/Equipments/ChokeControl/CHOKE.f90 b/Equipments/ChokeControl/CHOKE.f90 new file mode 100644 index 0000000..bac2dc7 --- /dev/null +++ b/Equipments/ChokeControl/CHOKE.f90 @@ -0,0 +1,207 @@ + + +module choke + + USE CHOKEVARIABLES + !USE CDataDisplayConsoleVariables, CasingPressureDataDisplay=>CasingPressure!, StandPipePressureDataDisplay=>StandPipePressure + USE CChokeProblemsVariables + !use CChokeControlPanelVariables, StandPipePressureChoke=>StandPipePressure + use MudSystemVARIABLES + USE CChokeManifoldVariables + + contains + + subroutine CHOKE_MainBody + + implicit none + Integer I + + INTEGER CHNUMBER + + + ! time2=time2+0.1 + + +!=========================================================================== + + !StandPipePressureChoke= STGauge_Pressure ! from module mud system + ! CasingPressure = CasingPressureDataDisplay + + + + +!=========================================================================== +! +! HYDRAULIC CHOKE CONTROL +! +!=========================================================================== + + + IF(ChokeSelectorSwitch== 1) THEN + Choke1LED=1 + Choke2LED=0 + CHNUMBER=1 + ELSE + Choke2LED=1 + Choke1LED=0 + CHNUMBER=2 + ENDIF + + + + + if (ABS(ChokeControlLever)==1.0 .AND. ChokePanelRigAirSwitch == 1 .AND. (CHOOKE(1)%FailMalf==0 .OR. CHOOKE(2)%FailMalf==0)) then + CALL PIPE_RAMS_CHOKE(CHNUMBER) + end if + + + + + + IF (Choke1LED==1) THEN + ChokePosition= (1 - GaugeChokePositionMailf) * CHOOKE(1)%PercentClose*10 ! display monitor + ELSE ! Choke2LED==1 + ChokePosition= (1 - GaugeChokePositionMailf) * CHOOKE(2)%PercentClose*10 ! display monitor + ENDIF + + + +! =================== calculating Area + + ! AreaChoke=0.5 + ! .91 >> 9 percent clearance + + CHOOKE(1)%AreaChoke=0.01334635-(0.01334635* MIN(CHOOKE(1)%PercentClose / 0.91 , 1.0)) !ft^2 0.01334635 is ChokeAreaFullyOpen (ft^2) + CHOOKE(2)%AreaChoke=0.01334635-(0.01334635* MIN(CHOOKE(2)%PercentClose/ 0.91 , 1.0)) !ft^2 + + !write(*,*) 'CHOOKE(1)%AreaChoke= ' , CHOOKE(1)%AreaChoke + + + + + HydraulicChoke1WashoutCoef= HydraulicChoke1WashoutCoef * CHOOKE(1)%WashoutMalf + HydraulicChoke1WashoutCoef= MIN( 0.5 , HydraulicChoke1WashoutCoef+ CHOOKE(1)%WashoutMalf*(0.5/(180.0/DeltaT_Choke)) ) ! 0.5 = maximum washout coef , 180.0 sec = 3 min duration time + + HydraulicChoke2WashoutCoef= HydraulicChoke2WashoutCoef * CHOOKE(2)%WashoutMalf + HydraulicChoke2WashoutCoef= MIN( 0.5 , HydraulicChoke2WashoutCoef+ CHOOKE(2)%WashoutMalf*(0.5/(180.0/DeltaT_Choke)) ) ! 0.5 = maximum washout coef , 180.0 sec = 3 min duration time + + + !write(*,*) 'HydraulicChoke1WashoutCoef=' , HydraulicChoke1WashoutCoef + + IF (CHOOKE(1)%PlugMalf == 1) THEN + + Present_HydraulicChoke1Plug= Present_HydraulicChoke1Plug * CHOOKE(1)%PlugMalf + ! integer: HydraulicChoke1PluggedPercent,HydraulicChoke1PluggedPercent_Old,PlugTimeCounter,ChokePlugTimeDelay + ! real: Present_HydraulicChoke1Plug,DeltaPlug1Percent + + !write(*,*) 'HydraulicChoke1PluggedPercent=' , HydraulicChoke1PluggedPercent + + if ( (HydraulicChoke1PluggedPercent - HydraulicChoke1PluggedPercent_Old) /= 0) then + DeltaPlug1Percent = (REAL(HydraulicChoke1PluggedPercent)/100.) - Present_HydraulicChoke1Plug + Plug1TimeCounter = 0 + !write(*,*) 'DeltaPlug1Percent, Present_HydraulicChoke1Plug = ' ,DeltaPlug1Percent , Present_HydraulicChoke1Plug + endif + + + Plug1TimeCounter= Plug1TimeCounter + 1 + + HydraulicChoke1PluggedPercent_Old= HydraulicChoke1PluggedPercent + + if (Plug1TimeCounter <= ChokePlugTimeDelay) then !ChokePlugTimeDelay=1800 + + Present_HydraulicChoke1Plug = Present_HydraulicChoke1Plug + CHOOKE(1)%PlugMalf* ((DeltaPlug1Percent / real(ChokePlugTimeDelay))) ! real(ChokePlugTimeDelay)= 600.0 + + endif + + !write(*,*) 'Present_HydraulicChoke1Plug=' , Present_HydraulicChoke1Plug + + ENDIF + + + + + + + IF (CHOOKE(2)%PlugMalf == 1) THEN + + Present_HydraulicChoke2Plug= Present_HydraulicChoke2Plug * CHOOKE(2)%PlugMalf + ! integer: HydraulicChoke2PluggedPercent,HydraulicChoke2PluggedPercent_Old,PlugTimeCounter,ChokePlugTimeDelay + ! real: Present_HydraulicChoke2Plug,DeltaPlug2Percent + + + if ( (HydraulicChoke2PluggedPercent - HydraulicChoke2PluggedPercent_Old) /= 0 ) then + DeltaPlug2Percent = (REAL(HydraulicChoke2PluggedPercent)/100.) - Present_HydraulicChoke2Plug + Plug2TimeCounter = 0 + endif + + Plug2TimeCounter= Plug2TimeCounter + 1 + + HydraulicChoke2PluggedPercent_Old= HydraulicChoke2PluggedPercent + + if (Plug2TimeCounter <= ChokePlugTimeDelay) then !ChokePlugTimeDelay=1800 + + Present_HydraulicChoke2Plug = Present_HydraulicChoke2Plug + CHOOKE(2)%PlugMalf *((DeltaPlug2Percent / real(ChokePlugTimeDelay))) ! real(ChokePlugTimeDelay)= 1800.0 + + endif + + ENDIF + + + + + + + + ! fully open area is 123/64 in^2 = 0.01334635 ft^2 + CHOOKE(1)%AreaChoke=CHOOKE(1)%AreaChoke+(CHOOKE(1)%WashoutMalf*HydraulicChoke1WashoutCoef*ChokeAreaFullyOpen/144.0) ! Initialised in Choke Startup + + !write(*,*) 'CHOOKE(1)%WashoutMalf , CHOOKE(1)%AreaChoke=' ,CHOOKE(1)%WashoutMalf , CHOOKE(1)%AreaChoke + + CHOOKE(1)%AreaChoke=CHOOKE(1)%AreaChoke-(CHOOKE(1)%PlugMalf* Present_HydraulicChoke1Plug *CHOOKE(1)%AreaChoke) ! Initialised in Choke Startup + + CHOOKE(2)%AreaChoke=CHOOKE(2)%AreaChoke+(CHOOKE(2)%WashoutMalf*HydraulicChoke2WashoutCoef*ChokeAreaFullyOpen/144.0) ! Initialised in Choke Startup + CHOOKE(2)%AreaChoke=CHOOKE(2)%AreaChoke-(CHOOKE(2)%PlugMalf* Present_HydraulicChoke2Plug *CHOOKE(2)%AreaChoke) ! Initialised in Choke Startup + !write(*,*) 'CHOOKE(2)%WashoutMalf , CHOOKE(2)%AreaChoke=' ,CHOOKE(2)%WashoutMalf , CHOOKE(2)%AreaChoke + + + CHOOKE(1)%AreaChokeFinal= CHOOKE(1)%AreaChoke + CHOOKE(2)%AreaChokeFinal= CHOOKE(2)%AreaChoke + + ! 144: ft^2 to in^2 + CALL SetHydraulicChock1(100 - nint((CHOOKE(1)%AreaChokeFinal/(ChokeAreaFullyOpen/144.))*100)) ! for manifold valve + CALL SetHydraulicChock2(100 - nint((CHOOKE(2)%AreaChokeFinal/(ChokeAreaFullyOpen/144.))*100)) ! for manifold valve + + + !write(*,*) 'CHOOKE(1)%PercentClose=' , CHOOKE(1)%PercentClose ! close percent 0 to 100 + !write(*,*) 'ChokePosition=' , ChokePosition ! close position 0 to 10 for display + !write(*,*) 'CHOOKE(1)%AreaChokeFinal=' , CHOOKE(1)%AreaChokeFinal ! Open Area (in^2) with clearance + !write(*,*) '(ChokeAreaFullyOpen/144.)=' , (ChokeAreaFullyOpen/144.) + !write(*,*) 'valve value=' , 100 - nint((CHOOKE(1)%AreaChokeFinal/(ChokeAreaFullyOpen/144.))*100) ! percent close 0 to 100 with clearance + !write(*,*) 'Valve(33)%Status=' , Valve(33)%Status ! T : open , F: close + + + + + +! =================== calculating Area + + !AreaChoke= CHOOKE(1)%AreaChoke !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< badan moteghayer 1 ya 2 shavad + +! write(*,*) 'AreaChoke:',AreaChoke + +!=========================================================================== +! MUD PUMP STROKES +! & TOTAL STROKE- CHOKE CONTROL PANEL +!=========================================================================== + +!************************* IN MUD SYSTEM MODULE************************* + + + + end subroutine CHOKE_MainBody + + + + + +end module CHOKE \ No newline at end of file diff --git a/Equipments/ChokeControl/CHOKE_VARIABLES.f90 b/Equipments/ChokeControl/CHOKE_VARIABLES.f90 new file mode 100644 index 0000000..6ea4819 --- /dev/null +++ b/Equipments/ChokeControl/CHOKE_VARIABLES.f90 @@ -0,0 +1,106 @@ +MODULE CHOKEVARIABLES +!IMPLICIT DOUBLEPRECISION(A-H,O-Z) +use CBopControlPanelVariables +use CEquipmentsConstants +use CSimulationVariables +use CAccumulatorVariables +use CBopStackVariables +use CChokeControlPanelVariables + +IMPLICIT NONE + +!=========================================================================== +! CHOKE VARIABLES +!=========================================================================== +REAL Ycritical,Cp,Cv,CL,kRatio,nPolytripic,x1,SGliquid,WaterDensity,LiquidDensity,VL,VG1 +REAL epsilon_step,epsilon_abs,step_size,Ycritical_a,Ycritical_b,Ycritical_c +REAL G2,Cdrag,Pwh,MixDens2,Yratio_a,Yratio_b,Yratio_c,Yratio,Yratio_low,Yratio_high +REAL FlowRate,Patm,MassFlux,LiquidPPG,time2,AreaChoke +REAL eps_step,eps_abs,Yratiomat(100),Yrario_actual,Yrario +REAL :: DegreeOpen,GRAVITY1=9.81!,PercentClose +REAL ChokedMassFlux,ChokedFlowRate,PwhChoked +REAL TotalStrokes1,TotalStrokes2 +!INTEGER WashoutMalf,PlugMalf,failMalf +INTEGER GaugeChokePositionMailf,SoundChokePump +Real Cumulative_AirVolume_Choke +Real HydraulicChoke1WashoutCoef,HydraulicChoke2WashoutCoef + +Real Present_HydraulicChoke1Plug, Present_HydraulicChoke2Plug,DeltaPlug1Percent,DeltaPlug2Percent +Integer HydraulicChoke1PluggedPercent_Old,HydraulicChoke2PluggedPercent_Old,Plug1TimeCounter,Plug2TimeCounter,ChokePlugTimeDelay +Real ChokeAreaFullyOpen +!=========================================================================== +! AIR DRIVEN PUMP VARIABLES +!=========================================================================== +REAL QAIR_PUMP,cc1,cc2,cc3,cc4,cc5 +PARAMETER PI=3.141593 +INTEGER ChokeAirFail +!============================================================================ +! OIL & ENVIRONMENT VARIABLES +!============================================================================ +REAL:: SG=1.12,WDENS=1000,GRAVITY=9.81,RE_CR=2000,NU=9e-6 +!specific gravity of liquid +!water density(kg/m^3) + + +!=========================================================================== +! AIR PUMP LINE COMPUTATIONAL VARIABLES +!=========================================================================== +!logical ChokeIsClosing,ChokeIsOpening +REAL ChokeControlLeverOld +REAL P_AIRP,QITER,DELTAV_AIR,TIME,DeltaT_Choke,TOL_AIR +REAL diffp_air,losses_air,pipe_loss1air,minor_loss1air,static_loss1air +integer NO_PIPINGS_AIRPLINE,NO_MINORS_AIRPLINE +REAL,ALLOCATABLE:: Re_air(:),DIAM_AIR_MM(:),DIAM_AIR_INCH(:),AREA_AIR(:),REL_ROUGHAIR(:),LENGT_AIR(:),LF_AIR(:),CV_AIR(:),NOTE_AIR(:) +REAL,ALLOCATABLE:: fric_air(:),fricloss_air(:),minlosspa_air(:),minloss_air(:),MINORS_AIRPUMP(:,:) +REAL,ALLOCATABLE:: MINORDIAM_AIR_INCH(:),MINORAREA_AIR(:) +REAL,ALLOCATABLE:: ROUGHNESS_AIRPLINE(:),PIPINGS_AIRPUMP(:,:) +REAL Acylinder,CourseBase!,PassedCourse +REAL alpha_Qair,alpha_timeair,alpha_pairp,alpha_diffpair,alpha_lossesair,alpha_Pdownstrem,Pdownstrem + + + +!================================================================================= + + TYPE, PUBLIC :: CHOKE_TypeVars + + + + + INTEGER WashoutMalf,PlugMalf,failMalf + REAL PercentClose,PassedCourse,AreaChoke,AreaChokeFinal + logical ChokeIsClosing,ChokeIsOpening + + + + END TYPE CHOKE_TypeVars + + TYPE(CHOKE_TypeVars), DIMENSION(1:2) :: CHOOKE + + + + + + + !TYPE, PUBLIC :: BOP_TypeVars2D + !REAL, ALLOCATABLE:: minlosspa(:,:),minloss(:,:) + !REAL,ALLOCATABLE:: Re_ramline(:,:),fric(:,:),fricloss(:,:) + ! + ! + !END TYPE BOP_TypeVars2D + ! + !TYPE(BOP_TypeVars2D) :: RAMS + + + + ! 1 : CHOKE1 + ! 2 : CHOKE2 + + + + +END MODULE + + + + + diff --git a/Equipments/ChokeControl/ChokeControlMain.f90 b/Equipments/ChokeControl/ChokeControlMain.f90 new file mode 100644 index 0000000..900c7c6 --- /dev/null +++ b/Equipments/ChokeControl/ChokeControlMain.f90 @@ -0,0 +1,60 @@ +module ChokeControlMain + implicit none + public + contains + + subroutine ChokeControl_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(ChokeControl_Init) + call OnSimulationStop%Add(ChokeControl_Init) + call OnChokeControlStep%Add(ChokeControl_Step) + call OnChokeControlOutput%Add(ChokeControl_Output) + call OnChokeControlMain%Add(ChokeControlMainBody) + end subroutine + + subroutine ChokeControl_Init + implicit none + end subroutine ChokeControl_Init + + subroutine ChokeControl_Step + implicit none + end subroutine ChokeControl_Step + + subroutine ChokeControl_Output + implicit none + end subroutine ChokeControl_Output + + subroutine ChokeControlMainBody + use CRigSizeVariables + use CHOKE + implicit none + + CALL Choke_StartUp() + loop1: DO + CALL CHOKE_MainBody + call sleepqq(100) + !IF (IsStopped==.true.) THEN + ! EXIT loop1 + !ENDIF + !write(*,*) '1111111111111' + if(IsStopped) then +!write(*,*) '22222222222222' + + CALL DEALLOCATE_ARRAYS_CHOKE() +!write(*,*) '333333333' + + call Quit() + end if + + + + ENDDO loop1 + + CLOSE(150) + + !CALL DEALLOCATE_ARRAYS_CHOKE() + + end subroutine ChokeControlMainBody + +end module ChokeControlMain \ No newline at end of file diff --git a/Equipments/ChokeControl/ChokeStartup.f90 b/Equipments/ChokeControl/ChokeStartup.f90 new file mode 100644 index 0000000..783f94f --- /dev/null +++ b/Equipments/ChokeControl/ChokeStartup.f90 @@ -0,0 +1,137 @@ + SUBROUTINE Choke_StartUp() + + USE CHOKEVARIABLES + USE CChokeProblemsVariables + implicit none + + CALL LOSS_INPUTS_CHOKE() + + !OPEN(150,FILE='CHOKE_AIRPUMP_OUTPUTS.DAT') + + + !CHOOKE(1)%WashoutMalf=1 + !CHOOKE(1)%PlugMalf=0 + !CHOOKE(1)%FailMalf=0 + ! + !CHOOKE(2)%WashoutMalf=1 + !CHOOKE(2)%PlugMalf=0 + !CHOOKE(2)%FailMalf=0 + ! + ! + !ChokeAirFail=0 + ! + !GaugeChokePositionMailf=0 + + + + + + + + kRatio=1.4 +Cp=0.24 +CL=0.8 + +x1=0.5 + +LiquidPPG=9. +LiquidDensity=LiquidPPG*7.48 !lbm/ft**3 + +VL=1.0/LiquidDensity !SpecificVolume of Liquid + +Cv=Cp/kRatio + +nPolytripic=1+(x1*(Cp-Cv)/(x1*Cv+(1-x1)*CL)) + +VG1=1./0.748 !lbm/ft**3 Specific Volume of Air, Upstream + +Cdrag=0.8 +Pwh=1400. !psi + + +Patm=14.7 +MixDens2=x1*VG1 !lbm/ft**3 + + + +epsilon_abs= 1e-5 +epsilon_step= 1e-5 + + +!ChokeDiameter= 32/64. !in + +CHOOKE%PercentClose= 0.0 + !AreaChoke=0.01334635 + + ! CHOOKE(1)%AreaChoke=0.01334635 +!ChokeAreaFullyOpen = 123.d0 / 64.d0 ! fully open area is 123/64 in^2 = 0.01334635 ft^2 + +DeltaT_Choke=0.1 +!TotalStrokes1=0. +!TotalStrokes2=0. + +HydraulicChoke1WashoutCoef= 0.0 +HydraulicChoke2WashoutCoef= 0.0 + + + +ChokePlugTimeDelay = int(180./DeltaT_Choke) ! =1800 = 180/0.1 : for 3 min delay + +Present_HydraulicChoke1Plug = REAL(HydraulicChoke1PluggedPercent)/100. +HydraulicChoke1PluggedPercent_Old= HydraulicChoke1PluggedPercent +Plug1TimeCounter= 0 +DeltaPlug1Percent = 0.0 + +Present_HydraulicChoke2Plug = REAL(HydraulicChoke2PluggedPercent)/100. +HydraulicChoke2PluggedPercent_Old= HydraulicChoke2PluggedPercent +Plug2TimeCounter= 0 +DeltaPlug2Percent = 0.0 + + + + + + +!======================AIRPUMP INPUTS(CONSTANTS)=========================== + CourseBase= 24. !cm + CHOOKE%PassedCourse= 0. + ChokePosition=0. + + Acylinder= PI*(8.**2)/4. ! (CM^2), 8=DIAMETER, 24=course , 3785.412: cm^3 to galon + + + CHOOKE%ChokeIsOpening = .false. + CHOOKE%ChokeIsClosing = .false. + + + P_AIRP=0 + + cc1 = 0.1354; cc2 = -2.066; cc3 = -21.09; cc4 = -51.36; cc5 = 5935 ! FOR OUTPUT IN GPM + ! cc1 = 4.754e-07; cc2 = -0.0001676; cc3 = -0.03953; cc4 = -2.223; cc5 = 5935 FOR OUTPUT IN IN^3/MIN + + +Pdownstrem= 4950 !+0.01*Pchoke (psi) <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +Qiter=5. !(gpm) + +! Q=0.0003585; true +time=0 +tol_air=0.05 + +alpha_Qair=0 +alpha_timeair=0 +alpha_Pdownstrem=Pdownstrem +alpha_diffpair=0 +alpha_lossesair=0 + + + + + + + + + + + + + end \ No newline at end of file diff --git a/Equipments/Drawworks/DWBrakeSound.f90 b/Equipments/Drawworks/DWBrakeSound.f90 new file mode 100644 index 0000000..2818ffa --- /dev/null +++ b/Equipments/Drawworks/DWBrakeSound.f90 @@ -0,0 +1,91 @@ +subroutine DWBrakeSound + + ! Use Drawworks_VARIABLES + ! Use CSounds + ! + !IMPLICIT NONE + ! + ! Real :: DW_MainBrakeTorque , DW_DrumRPM + ! + ! + ! + ! DW_MainBrakeTorque = ((Drawworks%Diameter/2.0d0)*Drawworks%BreakLoad)*(Drawworks%ManualBreak/100.0d0) ![N.m] + ! DW_MainBrakeTorque = DW_MainBrakeTorque/800.d0 ! Scaling: 0<=DW_MainBrakeTorque=<100 + ! !print*, 'DW_MainBrakeTorque0=' , DW_MainBrakeTorque + ! if ( DW_MainBrakeTorque>100. ) then + ! DW_MainBrakeTorque = 100.d0 + ! end if + ! + ! + ! + ! DW_DrumRPM = Drawworks%w_drum + ! DW_DrumRPM = DW_DrumRPM*10.d0+(Drawworks%ManualBreak/100.0d0) ! Scaling: 0<=DW_DrumRPM=<1000 + ! !print*, 'DW_DrumRPM0=' , DW_DrumRPM + ! !if ( DW_DrumRPM>=0. .and. DW_DrumRPM<=1. ) then + ! ! DW_DrumRPM = 1.0 + ! !end if + ! if ( DW_DrumRPM>1000.d0 ) then + ! DW_DrumRPM = 1000.d0 + ! end if + ! + ! + ! Drawworks%SoundDwBrake = INT((DW_MainBrakeTorque*DW_DrumRPM)) ! 0<=SoundDWBrake=<100000 + ! Call SetSoundDwBrake( Drawworks%SoundDwBrake ) + ! + ! + ! !print*, 'Drawworks%SoundDwBrake=' , Drawworks%SoundDwBrake + ! !print*, 'DW_DrumRPM=' , DW_DrumRPM + ! !print*, 'DW_MainBrakeTorque=' , DW_MainBrakeTorque + ! !print*, 'Drawworks%ManualBreak=' , Drawworks%ManualBreak + + + + + + Use Drawworks_VARIABLES + Use CSounds + Use TD_StringConnectionData + + IMPLICIT NONE + + Real :: DW_MainBrakeTorque , DW_DrumRPM + + + + !DW_MainBrakeTorque = ((Drawworks%Diameter/2.0d0)*Drawworks%BreakLoad)*(Drawworks%ManualBreak/100.0d0) ![N.m] + !DW_MainBrakeTorque = DW_MainBrakeTorque/800.d0 ! Scaling: 0<=DW_MainBrakeTorque=<100 + !print*, 'DW_MainBrakeTorque0=' , DW_MainBrakeTorque + !if ( DW_MainBrakeTorque>100. ) then + ! DW_MainBrakeTorque = 100.d0 + !end if + + + + DW_DrumRPM = Drawworks%w_drum + !DW_DrumRPM = DW_DrumRPM*10.d0+(Drawworks%ManualBreak/100.0d0) ! Scaling: 0<=DW_DrumRPM=<1000 + !print*, 'DW_DrumRPM0=' , DW_DrumRPM + !!if ( DW_DrumRPM>=0. .and. DW_DrumRPM<=1. ) then + !! DW_DrumRPM = 1.0 + !!end if + !if ( DW_DrumRPM>1000.d0 ) then + ! DW_DrumRPM = 1000.d0 + !end if + + + !Drawworks%SoundDwBrake = INT((DW_MainBrakeTorque*DW_DrumRPM)) ! 0<=SoundDWBrake=<100000 + Drawworks%SoundDwBrake = INT((TD_DrawworksLoadInput/20000.)*DW_DrumRPM) + if ( Drawworks%ManualBreak==0. ) then + Drawworks%SoundDwBrake = 0 + end if + Drawworks%SoundDwBrake = Drawworks%SoundDwBrake*10 + Call SetSoundDwBrake( Drawworks%SoundDwBrake ) + + + !print*, 'Drawworks%SoundDwBrake=' , Drawworks%SoundDwBrake + !print*, 'DW_DrumRPM=' , DW_DrumRPM + !print*, 'TD_DrawworksLoadInput=' , TD_DrawworksLoadInput + !print*, 'Drawworks%ManualBreak=' , Drawworks%ManualBreak + + + +END subroutine \ No newline at end of file diff --git a/Equipments/Drawworks/DWFixModeMotion.f90 b/Equipments/Drawworks/DWFixModeMotion.f90 new file mode 100644 index 0000000..e01a795 --- /dev/null +++ b/Equipments/Drawworks/DWFixModeMotion.f90 @@ -0,0 +1,28 @@ +subroutine DWFixModeMotion + + Use Drawworks_VARIABLES + Use CHookVariables + + IMPLICIT NONE + + + + Drawworks%Hook_Height_final = Drawworks%Hook_Height_final ![ft] + Call Set_HookHeight(real(Drawworks%Hook_Height_final)) + Drawworks%Hook_Height= Drawworks%Hook_Height_final/3.280839895 ![m] + Drawworks%w_drum = 0. + Drawworks%w_old_drum = 0. + Drawworks%w = 0. + Drawworks%w_old = 0. + !Drawworks%ia = 0. ?????????? + !Drawworks%ia_old = 0. ?????????? + !Drawworks%x = 0. ?????????? + !Drawworks%x_old = 0. ?????????? + !Drawworks%y = 0. ?????????? + !Drawworks%y_old = 0. ?????????? + Drawworks%motion = 0 + + + + +END subroutine \ No newline at end of file diff --git a/Equipments/Drawworks/DWMalfunction_ClutchDisengage.f90 b/Equipments/Drawworks/DWMalfunction_ClutchDisengage.f90 new file mode 100644 index 0000000..d21dbf0 --- /dev/null +++ b/Equipments/Drawworks/DWMalfunction_ClutchDisengage.f90 @@ -0,0 +1,19 @@ +subroutine DWMalfunction_ClutchDisengage + + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CHoistingVariables + use Drawworks_VARIABLES + + IMPLICIT NONE + + !! Drawworks Malfunction ----> Clutch Disengage + !if ( Drawworks%ClutchDisengageMalf==1 ) then + ! Drawworks%ClutchMode=0 + ! return + !end if + + + + +END subroutine \ No newline at end of file diff --git a/Equipments/Drawworks/DWMalfunction_ClutchEngage.f90 b/Equipments/Drawworks/DWMalfunction_ClutchEngage.f90 new file mode 100644 index 0000000..9399564 --- /dev/null +++ b/Equipments/Drawworks/DWMalfunction_ClutchEngage.f90 @@ -0,0 +1,55 @@ +subroutine DWMalfunction_ClutchEngage + + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CHoistingVariables + use Drawworks_VARIABLES + use CSounds + use CLog4 + IMPLICIT NONE + + + + + + ! Sound Generation + if ( Drawworks%SoundClutch) then + Drawworks%SoundClutch = .false. + Call SetSoundDwClutch(Drawworks%SoundClutch) + end if + if ( DW_OldClutchMode/=0 .and. DWClutchLever==0 ) then + Drawworks%SoundClutch = .true. + Call SetSoundDwClutch(Drawworks%SoundClutch) + end if + DW_OldClutchMode = DWClutchLever + + + + + ! Drawworks Malfunction ----> Clutch Engage + if ( Drawworks%ClutchEngageMalf==1 ) then + if ( Drawworks%ClutchMode==1 .or. Drawworks%ClutchMode==-1 ) then + Drawworks%ClutchMode = Drawworks%ClutchMode + else if ( Drawworks%ClutchMode==0 ) then + Drawworks%ClutchMode = -1 + end if + return + end if + + + + + ! Drawworks Malfunction ----> Clutch Disengage + if ( Drawworks%ClutchDisengageMalf==1 ) then + Drawworks%ClutchMode = 0 + return + end if + + + Drawworks%ClutchMode = DWClutchLever + + + + + +end subroutine \ No newline at end of file diff --git a/Equipments/Drawworks/DWMalfunction_MotorFailure.f90 b/Equipments/Drawworks/DWMalfunction_MotorFailure.f90 new file mode 100644 index 0000000..013856f --- /dev/null +++ b/Equipments/Drawworks/DWMalfunction_MotorFailure.f90 @@ -0,0 +1,20 @@ +subroutine DWMalfunction_MotorFailure + + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CHoistingVariables + use Drawworks_VARIABLES + + IMPLICIT NONE + + + + + if (Drawworks%MotorFaileMalf==1) then + Drawworks%Conv_Ratio = 1.0D0 + end if + + + + +END subroutine \ No newline at end of file diff --git a/Equipments/Drawworks/DrawworksMain.f90 b/Equipments/Drawworks/DrawworksMain.f90 new file mode 100644 index 0000000..bdf0b49 --- /dev/null +++ b/Equipments/Drawworks/DrawworksMain.f90 @@ -0,0 +1,171 @@ +module DrawworksMain + implicit none + public + contains + + subroutine Drawworks_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(Drawworks_Init) + call OnSimulationStop%Add(Drawworks_Init) + call OnDrawworksStep%Add(Drawworks_Step) + call OnDrawworksOutput%Add(Drawworks_Output) + call OnDrawworksMain%Add(DrawworksMainBody) + end subroutine + + subroutine Drawworks_Init + implicit none + end subroutine Drawworks_Init + + subroutine Drawworks_Step + implicit none + end subroutine Drawworks_Step + + subroutine Drawworks_Output + implicit none + end subroutine Drawworks_Output + + subroutine DrawworksMainBody + + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CHoistingVariables + use CSimulationVariables + use Drawworks_VARIABLES + use CHookVariables + use CWarningsVariables + use CSounds + + + implicit none + + integer,dimension(8) :: DW_START_TIME, DW_END_TIME + INTEGER :: DW_SolDuration + + + + + Call Drawworks_StartUp + loopdrawsim : do + + CALL DATE_AND_TIME(values=DW_START_TIME) + if (IsPortable) then + Drawworks%AssignmentSwitch = 1 + else + Drawworks%AssignmentSwitch = AssignmentSwitch + end if + if((any(Drawworks%AssignmentSwitch==(/1,2,3,4,5,7,8,9,10,11/))) .and. (DWSwitch==-1) .and. (DWThrottle==0.)) then + + + Drawworks%SoundBlower = .true. + Call SetSoundBlowerDW(Drawworks%SoundBlower) + DWBLWR = 1 + + loopDrawworks1 : do + + CALL DATE_AND_TIME(values=DW_START_TIME) + if (IsPortable) then + Drawworks%AssignmentSwitch = 1 + else + Drawworks%AssignmentSwitch = AssignmentSwitch + end if + if(any(Drawworks%AssignmentSwitch==(/1,2,5,7,8,9,10,11/))) then + Drawworks%NumberOfTracMotor = 2.0d0 + else if (any(Drawworks%AssignmentSwitch==(/3,4/))) then + Drawworks%NumberOfTracMotor = 1.0d0 + end if + + Call Drawworks_Solver + DW_TDHookHeight = Drawworks%Hook_Height_final + if ( Drawworks%motion==+1 ) then + Drawworks%SoundRev = 0 ![rpm] , Integer + Call SetSoundDwRev( Drawworks%SoundRev ) + Drawworks%SoundFw = INT(Drawworks%w_drum) ![rpm] , Integer + Call SetSoundDwFw(Drawworks%SoundFw) + Call DWBrakeSound + else + Drawworks%SoundFw = 0 ![rpm] , Integer + Call SetSoundDwFw(Drawworks%SoundFw) + Drawworks%SoundRev = INT(Drawworks%w_drum) ![rpm] , Integer + Call SetSoundDwRev( Drawworks%SoundRev ) + Call DWBrakeSound + end if + DW_OldTransMode = DWTransmisionLever + + if (IsPortable) then + Drawworks%AssignmentSwitch = 1 + else + Drawworks%AssignmentSwitch = AssignmentSwitch + end if + if ((any(Drawworks%AssignmentSwitch==(/6,12/))) .or. (any(DWSwitch==(/0,1/))) .or. (IsStopped == .true.)) then + Drawworks%SoundBlower = .false. + Call SetSoundBlowerDW(Drawworks%SoundBlower) + DWBLWR = 0 + !Call Drawworks_Solver_FreeTractionMotor + exit loopDrawworks1 + end if + + CALL DATE_AND_TIME(values=DW_END_TIME) + DW_SolDuration = 100-(DW_END_TIME(5)*3600000+DW_END_TIME(6)*60000+DW_END_TIME(7)*1000+DW_END_TIME(8)-DW_START_TIME(5)*3600000-DW_START_TIME(6)*60000-DW_START_TIME(7)*1000-DW_START_TIME(8)) + if(DW_SolDuration > 0.0d0) then + CALL sleepqq(DW_SolDuration) + end if + + end do loopDrawworks1 + + + else + + + if (IsPortable) then + Drawworks%AssignmentSwitch = 1 + else + Drawworks%AssignmentSwitch = AssignmentSwitch + end if + if((any(Drawworks%AssignmentSwitch==(/1,2,3,4,5,7,8,9,10,11/))) .and. (DWSwitch==-1)) then + Drawworks%SoundBlower = .true. + Call SetSoundBlowerDW(Drawworks%SoundBlower) + DWBLWR = 1 + else + Drawworks%SoundBlower = .false. + Call SetSoundBlowerDW(Drawworks%SoundBlower) + DWBLWR = 0 + end if + + Call Drawworks_Solver_FreeTractionMotor + DW_TDHookHeight = Drawworks%Hook_Height_final + if ( Drawworks%motion==+1 ) then + Drawworks%SoundRev = 0 ![rpm] , Integer + Call SetSoundDwRev( Drawworks%SoundRev ) + Drawworks%SoundFw = INT(Drawworks%w_drum) ![rpm] , Integer + Call SetSoundDwFw(Drawworks%SoundFw) + Call DWBrakeSound + else + Drawworks%SoundFw = 0 ![rpm] , Integer + Call SetSoundDwFw(Drawworks%SoundFw) + Drawworks%SoundRev = INT(Drawworks%w_drum) ![rpm] , Integer + Call SetSoundDwRev( Drawworks%SoundRev ) + Call DWBrakeSound + end if + DW_OldTransMode = DWTransmisionLever + + + end if + + if (IsStopped == .true.) then + exit loopdrawsim + end if + + + CALL DATE_AND_TIME(values=DW_END_TIME) + DW_SolDuration = 100-(DW_END_TIME(5)*3600000+DW_END_TIME(6)*60000+DW_END_TIME(7)*1000+DW_END_TIME(8)-DW_START_TIME(5)*3600000-DW_START_TIME(6)*60000-DW_START_TIME(7)*1000-DW_START_TIME(8)) + !print*, 'time=', DW_SolDuration + if(DW_SolDuration > 0.0d0) then + CALL sleepqq(DW_SolDuration) + end if + + end do loopdrawsim + + end subroutine DrawworksMainBody + +end module DrawworksMain \ No newline at end of file diff --git a/Equipments/Drawworks/Drawworks_Diff_Equations.f90 b/Equipments/Drawworks/Drawworks_Diff_Equations.f90 new file mode 100644 index 0000000..1b3e25e --- /dev/null +++ b/Equipments/Drawworks/Drawworks_Diff_Equations.f90 @@ -0,0 +1,218 @@ +!---------------------------------------------- +! subroutine dia +!---------------------------------------------- + +subroutine dia(x1,x2,x3,x5,x6,x7) !dia(t ia w fii x y) + + Use Drawworks_VARIABLES + + IMPLICIT NONE + REAL :: x1,x2,x3,x5,x6,x7 + + !Drawworks%Vt = x6+Kpi*(Kpn*((30.*Drawworks%w_ref/pi)-(30.*x3/pi))-x2) + Drawworks%ia_ref = x7+Kpn*((30.0d0*Drawworks%w_ref/pi)-(30.0d0*x3/pi)) + if ( Drawworks%ia_ref>1400. ) then + Drawworks%ia_ref = 1400. + end if + + Drawworks%Vt = x6+(Kpi*(Drawworks%ia_ref-x2)) + IF (Drawworks%Vt>810.0d0) THEN + Drawworks%Vt = 810.0d0 + ELSE IF (Drawworks%Vt<0.0d0) THEN + Drawworks%Vt = 0.0d0 + END IF + + IF (x2<=1150.0d0) THEN + x5 = 6.3304d-3*x2 + ELSE IF (x2>1150.0d0) THEN + x5 = (2.8571d-7)*(x2-1150.0d0)+7.280d0 + END IF + + Drawworks%Ea = x5*x3 + Drawworks%dia = (Drawworks%Vt-(Ra+Rf)*x2-Drawworks%Ea)/(La+Lf) + + end subroutine + + + + + + + +!---------------------------------------------- +! subroutine dw +!---------------------------------------------- + +subroutine dw(x1,x2,x3,x4,x5) !x1=t, x2=ia, x3=w, x4=fii, x5=TL + + Use Drawworks_VARIABLES + + IMPLICIT NONE + REAL :: x1,x2,x3,x4,x5 + + IF (x2<=1150.) THEN + x4 = 6.3304d-3*x2 + ELSE IF (x2>1150.0d0) THEN + x4 = 2.8571d-7*(x2-1150.0d0)+7.280d0 + END IF + + Drawworks%Te = x4*x2 + IF (Drawworks%Conv_Ratio==1.) THEN + Drawworks%Te = 0.0d0 + END IF + + Drawworks%EddyTorque = (1.039d5*exp(4.343d-4*(30.0d0*(x3/Drawworks%Conv_Ratio)/pi)))+(-1.036d5*exp(-.047920d0*(30.0d0*(x3/Drawworks%Conv_Ratio)/pi))) ![Lbf.ft] + !IF (Drawworks%EddyTorque>115000.0d0) THEN + ! Drawworks%EddyTorque = 115000.0d0 + !END IF + Drawworks%EddyTorque = 1.3558179480d0*Drawworks%EddyTorque ![N.m] + + Drawworks%TL = ((Drawworks%F_fastline*(Drawworks%Diameter/2.0d0))+(Drawworks%EddyTorque*(Drawworks%EddyBreak/100.0d0))+(((Drawworks%Diameter/2.0d0)*Drawworks%BreakLoad)*(Drawworks%ManualBreak/100.0d0)))/Drawworks%Conv_Ratio + Drawworks%TL = Drawworks%TL/Drawworks%NumberOfTracMotor + + Drawworks%dw = (Drawworks%Te-Drawworks%TL)/Drawworks%J_coef + +end subroutine + + + + + + + +!---------------------------------------------- +! subroutine dx +!---------------------------------------------- + +subroutine dx(x1,x2,x3,x4,x5) + + Use Drawworks_VARIABLES + + IMPLICIT NONE + REAL :: x1,x2,x3,x4,x5 + + Drawworks%ia_ref = x5+Kpn*((30.0d0*Drawworks%w_ref/pi)-(30.0d0*x3/pi)) + if ( Drawworks%ia_ref>1400. ) then + Drawworks%ia_ref = 1400. + end if + + Drawworks%dx = Kii*(Drawworks%ia_ref-x2) + +end subroutine + + + + + + + +!---------------------------------------------- +! subroutine dy +!---------------------------------------------- + +subroutine dy(x1,x2,x3,x4,x5) + + Use Drawworks_VARIABLES + + IMPLICIT NONE + REAL :: x1,x2,x3,x4,x5 + + Drawworks%dy = Kin*((30.0d0*Drawworks%w_ref/pi)-(30.0d0*x3/pi)) + +end subroutine + + + + + + + + +!---------------------------------------------- +! subroutine dw_freeTrac_Dmotion +!---------------------------------------------- + +subroutine dw_freeTrac_Dmotion(x1,x2) !x1=t , x2=w + + Use Drawworks_VARIABLES + + IMPLICIT NONE + REAL :: x1, x2 + + Drawworks%EddyTorque = (1.039d5*exp(4.343d-4*(30.0d0*(x2)/pi)))+(-1.036d5*exp(-.047920d0*(30.0d0*(x2)/pi))) ![Lbf.ft] + IF (Drawworks%EddyTorque>115000.0d0) THEN + Drawworks%EddyTorque = 115000.0d0 + END IF + Drawworks%EddyTorque = 1.3558179480d0*Drawworks%EddyTorque ![N.m] + + Drawworks%dw_freeTrac_Dmotion = ((Drawworks%F_fastline*(Drawworks%Diameter/2.0d0))-(Drawworks%EddyTorque*(Drawworks%EddyBreak/100.0d0))-(((Drawworks%Diameter/2.0d0)*Drawworks%BreakLoad)*(Drawworks%ManualBreak/100.0d0)))/Drawworks%J_coef + +end subroutine + + + + + + + + + +!---------------------------------------------- +! subroutine dw_freeTrac +!---------------------------------------------- +subroutine dw_freeTrac(x1,x2) !x1=t, x2=w + + Use Drawworks_VARIABLES + + IMPLICIT NONE + REAL :: x1, x2 + + Drawworks%EddyTorque = (1.039d5*exp(4.343d-4*(30.0d0*(x2)/pi)))+(-1.036d5*exp(-.047920d0*(30.0d0*(x2)/pi))) ![Lbf.ft] + IF (Drawworks%EddyTorque>115000.0d0) THEN + Drawworks%EddyTorque = 115000.0d0 + END IF + Drawworks%EddyTorque = 1.3558179480d0*Drawworks%EddyTorque ![N.m] + + Drawworks%dw_freeTrac = (-(Drawworks%F_fastline*(Drawworks%Diameter/2.0d0))-(Drawworks%EddyTorque*(Drawworks%EddyBreak/100.0d0))-(((Drawworks%Diameter/2.0d0)*Drawworks%BreakLoad)*(Drawworks%ManualBreak/100.0d0)))/Drawworks%J_coef + +end subroutine + + + + + + + + + +!---------------------------------------------- +! subroutine dw_DawnMotion +!---------------------------------------------- + +subroutine dw_DawnMotion(x1,x2,x3,x4,x5) !x1=t, x2=ia, x3=w, x4=fii, x5=TL + + Use Drawworks_VARIABLES + + IMPLICIT NONE + REAL :: x1,x2,x3,x4,x5 + + IF (x2<=1150.0d0) THEN + x4 = 6.3304d-3*x2 + ELSE IF (x2>1150.0d0) THEN + x4 = 2.8571d-7*(x2-1150.0d0)+7.280d0 + END IF + + Drawworks%Te = x4*x2 + + Drawworks%EddyTorque = (1.039d5*exp(4.343d-4*(30.0d0*(x3/Drawworks%Conv_Ratio)/pi)))+(-1.036d5*exp(-.047920d0*(30.0d0*(x3/Drawworks%Conv_Ratio)/pi))) ![Lbf.ft] + IF (Drawworks%EddyTorque>115000.0d0) THEN + Drawworks%EddyTorque = 115000.0d0 + END IF + Drawworks%EddyTorque = 1.3558179480d0*Drawworks%EddyTorque ![N.m] + + Drawworks%TL = ((Drawworks%F_fastline*(Drawworks%Diameter/2.0d0))-(Drawworks%EddyTorque*(Drawworks%EddyBreak/100.0d0))-(((Drawworks%Diameter/2.0d0)*Drawworks%BreakLoad)*(Drawworks%ManualBreak/100.0d0)))/Drawworks%Conv_Ratio + Drawworks%TL = Drawworks%TL/Drawworks%NumberOfTracMotor + + Drawworks%dw_DawnMotion = (Drawworks%TL-Drawworks%Te)/Drawworks%J_coef + +end subroutine \ No newline at end of file diff --git a/Equipments/Drawworks/Drawworks_Direction.f90 b/Equipments/Drawworks/Drawworks_Direction.f90 new file mode 100644 index 0000000..7399789 --- /dev/null +++ b/Equipments/Drawworks/Drawworks_Direction.f90 @@ -0,0 +1,119 @@ +subroutine Drawworks_Direction + + Use CDrillingConsoleVariables + Use CDataDisplayConsoleVariables + Use Drawworks_VARIABLES + + IMPLICIT NONE + + + + + + if (Drawworks%Conv_Ratio==1.d0) then + + + IF (Drawworks%motion==+1) THEN + Call Drawworks_Free_Traction_motor_Dir + if (Drawworks%w_drum_Dir<=0.) then + Drawworks%motion = 0 + else + Drawworks%motion = +1 + Call Drawworks_Free_Traction_motor + Drawworks%w = Drawworks%w_drum*Drawworks%Conv_Ratio + Drawworks%w_old = Drawworks%w_old_drum*Drawworks%Conv_Ratio + end if + ELSE + if (((Drawworks%F_fastline*(Drawworks%Diameter/2.0d0))-(((Drawworks%Diameter/2.0d0)*Drawworks%BreakLoad)*(Drawworks%ManualBreak/100.0d0)))<=0.) then + Drawworks%motion = 0 + Drawworks%w_drum = 0.0d0 + Drawworks%w_old_drum = 0.0d0 + Drawworks%w = Drawworks%w_drum*Drawworks%Conv_Ratio + Drawworks%w_old = Drawworks%w_old_drum*Drawworks%Conv_Ratio + Drawworks%Hook_Height = Drawworks%Hook_Height + + Drawworks%ia = 0. + Drawworks%ia_old = 0. + Drawworks%x = 0. + Drawworks%x_old = 0. + Drawworks%y = 0. + Drawworks%y_old = 0. + else + Drawworks%motion = -1 + Call Drawworks_Free_Traction_motor_dawn_motion + Drawworks%w = Drawworks%w_drum*Drawworks%Conv_Ratio + Drawworks%w_old = Drawworks%w_old_drum*Drawworks%Conv_Ratio + end if + + END IF + + + else + + IF (Drawworks%motion==-1) THEN + Drawworks%w = -Drawworks%w + Drawworks%w_old = -Drawworks%w_old + Drawworks%w_drum = -Drawworks%w_drum + Drawworks%w_old_drum = -Drawworks%w_old_drum + END IF + Call Drawworks_Traction_motor_ClutchMode_Dir + IF (Drawworks%w_Dir>0.) then + + Drawworks%motion = +1 + Call Drawworks_Traction_motor_ClutchMode + Drawworks%w_drum = Drawworks%w/Drawworks%Conv_Ratio + Drawworks%w_old_drum = Drawworks%w_old/Drawworks%Conv_Ratio + ELSE + Drawworks%EddyTorque = (1.039d5*exp(4.343d-4*(30.0d0*(Drawworks%w/Drawworks%Conv_Ratio)/pi)))+(-1.036d5*exp(-.047920d0*(30.0d0*(Drawworks%w/Drawworks%Conv_Ratio)/pi))) !Lbf.ft + if (Drawworks%EddyTorque>115000.) then + Drawworks%EddyTorque = 115000.0d0 + end if + Drawworks%EddyTorque = 1.355817948*Drawworks%EddyTorque ![N.m] + if ((Drawworks%F_fastline*(Drawworks%Diameter/2.0d0))>((((Drawworks%Diameter/2.0d0)*Drawworks%BreakLoad)*(Drawworks%ManualBreak/100.0d0))+(Drawworks%EddyTorque*(Drawworks%EddyBreak/100.0d0)))) then + Drawworks%motion = -1 + + IF (Drawworks%w_drum<0.) THEN + Drawworks%w = -Drawworks%w + Drawworks%w_old = -Drawworks%w_old + !Drawworks%w = 0. !??????????????? + !Drawworks%w_old = 0. !??????????????? + Drawworks%w_drum = -Drawworks%w_drum + Drawworks%w_old_drum = -Drawworks%w_old_drum + END IF + + Drawworks%Conv_Ratio = 1. + Call Drawworks_Free_Traction_motor_dawn_motion + Drawworks%w = Drawworks%w_drum*Drawworks%Conv_Ratio + Drawworks%w_old = Drawworks%w_old_drum*Drawworks%Conv_Ratio + !Drawworks%w_drum = Drawworks%w/Drawworks%Conv_Ratio + !Drawworks%w_old_drum = Drawworks%w_old/Drawworks%Conv_Ratio + else + Drawworks%motion = 0 + Drawworks%w_drum = 0.0d0 + Drawworks%w_old_drum = 0.0d0 + Drawworks%w = Drawworks%w_drum*Drawworks%Conv_Ratio + Drawworks%w_old = Drawworks%w_old_drum*Drawworks%Conv_Ratio + Drawworks%Hook_Height = Drawworks%Hook_Height + + Drawworks%ia = 0. + Drawworks%ia_old = 0. + Drawworks%x = 0. + Drawworks%x_old = 0. + Drawworks%y = 0. + Drawworks%y_old = 0. + end if + + END IF + + end if + + + + Call DWBrakeSound + + !print* , 'Drawworks%ia_new=' , Drawworks%ia_new + !print* , 'Drawworks%ia_ref=' , Drawworks%ia_ref + !print* , 'Drawworks%Vt=' , Drawworks%Vt + !print* , 'Drawworks%w_new=' , Drawworks%w_new + +end subroutine Drawworks_Direction \ No newline at end of file diff --git a/Equipments/Drawworks/Drawworks_Free_Traction_motor.f90 b/Equipments/Drawworks/Drawworks_Free_Traction_motor.f90 new file mode 100644 index 0000000..9b97ec6 --- /dev/null +++ b/Equipments/Drawworks/Drawworks_Free_Traction_motor.f90 @@ -0,0 +1,86 @@ +subroutine Drawworks_Free_Traction_motor + + + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use Drawworks_VARIABLES + + IMPLICIT NONE + + + REAL, allocatable, dimension(:) :: w_array + Integer :: jj, kk + REAL :: sigma_w + + + + + + !Drawworks%w_drum = Drawworks%w/Drawworks%Conv_Ratio + + Drawworks%time = Drawworks%time_step + Drawworks%dt = 1.d-5 + Drawworks%error = .001 + +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + Drawworks%n = Drawworks%time/Drawworks%dt + + if (allocated(w_array)) deallocate(w_array) + allocate(w_array(0:Drawworks%n)) + w_array(0) = Drawworks%w_drum + + Drawworks%i = 1 + +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + DO WHILE (Drawworks%i<=Drawworks%n) + + + !>>>>>>>>>>>> Runge-Kutta Method (2nd order) <<<<<<<<<<<<<< + + call dw_freeTrac((Drawworks%i*Drawworks%dt),Drawworks%w_drum) + Drawworks%K1w = Drawworks%dt*Drawworks%dw_freeTrac + + call dw_freeTrac((Drawworks%i*Drawworks%dt)+(Drawworks%dt),Drawworks%w_drum+(Drawworks%K1w)) + Drawworks%K2w = Drawworks%dt*Drawworks%dw_freeTrac + + Drawworks%w_new_drum = Drawworks%w_old_drum+((Drawworks%K1w+Drawworks%K2w)/2.) + + Drawworks%w_old_drum = Drawworks%w_new_drum + Drawworks%w_drum = Drawworks%w_new_drum + + w_array(Drawworks%i) = Drawworks%w_new_drum + + Drawworks%i = Drawworks%i+1 + + + END DO +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + + + + + +!>>>>>>>>> Hook Height Calculation <<<<<<<<<<< + !>>>>>>>>>>>> Simpson1/3 Method <<<<<<<<<<<<<< + sigma_w = w_array(0)+w_array(Drawworks%n) + + do jj = 1,Drawworks%n-1,2 + sigma_w = sigma_w+(4.0d0*w_array(jj)) + end do + + do kk = 2,Drawworks%n-2,2 + sigma_w = sigma_w+(2.0d0*w_array(kk)) + end do + + Drawworks%Hook_Height = Drawworks%Hook_Height+(((Drawworks%Diameter/2.0d0)*(Drawworks%dt*sigma_w/3.0d0))/Drawworks%NumberOfLine) + + + + + + + + +END subroutine Drawworks_Free_Traction_motor \ No newline at end of file diff --git a/Equipments/Drawworks/Drawworks_Free_Traction_motor_Dir.f90 b/Equipments/Drawworks/Drawworks_Free_Traction_motor_Dir.f90 new file mode 100644 index 0000000..071238b --- /dev/null +++ b/Equipments/Drawworks/Drawworks_Free_Traction_motor_Dir.f90 @@ -0,0 +1,61 @@ +subroutine Drawworks_Free_Traction_motor_Dir + + + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use Drawworks_VARIABLES + + IMPLICIT NONE + + + Integer :: jj, kk + REAL, allocatable, dimension(:) :: w_array + REAL :: sigma_w + + + + + + !Drawworks%w_drum = Drawworks%w/Drawworks%Conv_Ratio + + Drawworks%time = Drawworks%time_step + Drawworks%dt = 1.d-5 + Drawworks%error = .001 + + Drawworks%w_drum_Dir = Drawworks%w_drum + Drawworks%w_old_drum_Dir = Drawworks%w_old_drum + +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + Drawworks%n = Drawworks%time/Drawworks%dt + + Drawworks%i = 1 + +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + DO WHILE (Drawworks%i<=Drawworks%n) + + + !>>>>>>>>>>>> Runge-Kutta Method (2nd order) <<<<<<<<<<<<<< + + call dw_freeTrac((Drawworks%i*Drawworks%dt),Drawworks%w_drum_Dir) + Drawworks%K1w = Drawworks%dt*Drawworks%dw_freeTrac + + call dw_freeTrac((Drawworks%i*Drawworks%dt)+(Drawworks%dt),Drawworks%w_drum_Dir+(Drawworks%K1w)) + Drawworks%K2w = Drawworks%dt*Drawworks%dw_freeTrac + + Drawworks%w_new_drum_Dir = Drawworks%w_old_drum_Dir+((Drawworks%K1w+Drawworks%K2w)/2.0d0) + + Drawworks%w_old_drum_Dir = Drawworks%w_new_drum_Dir + Drawworks%w_drum_Dir = Drawworks%w_new_drum_Dir + + Drawworks%i = Drawworks%i+1 + + + END DO +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + + + + +END subroutine Drawworks_Free_Traction_motor_Dir \ No newline at end of file diff --git a/Equipments/Drawworks/Drawworks_Free_Traction_motor_dawn_motion.f90 b/Equipments/Drawworks/Drawworks_Free_Traction_motor_dawn_motion.f90 new file mode 100644 index 0000000..56bb467 --- /dev/null +++ b/Equipments/Drawworks/Drawworks_Free_Traction_motor_dawn_motion.f90 @@ -0,0 +1,86 @@ +subroutine Drawworks_Free_Traction_motor_dawn_motion + + + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use Drawworks_VARIABLES + + IMPLICIT NONE + + + REAL, allocatable, dimension(:) :: w_array + Integer :: jj, kk + REAL :: sigma_w + + + + + + !Drawworks%w_drum = Drawworks%w/Drawworks%Conv_Ratio + + Drawworks%time = Drawworks%time_step + Drawworks%dt = 1.d-5 + Drawworks%error = .001 + +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + Drawworks%n = Drawworks%time/Drawworks%dt + + if (allocated(w_array)) deallocate(w_array) + allocate(w_array(0:Drawworks%n)) + w_array(0) = Drawworks%w_drum + + Drawworks%i = 1 + +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + DO WHILE (Drawworks%i<=Drawworks%n) + + + !>>>>>>>>>>>> Runge-Kutta Method (2nd order) <<<<<<<<<<<<<< + + call dw_freeTrac_Dmotion((Drawworks%i*Drawworks%dt),Drawworks%w_drum) + Drawworks%K1w = Drawworks%dt*Drawworks%dw_freeTrac_Dmotion + + call dw_freeTrac_Dmotion((Drawworks%i*Drawworks%dt)+(Drawworks%dt),Drawworks%w_drum+(Drawworks%K1w)) + Drawworks%K2w = Drawworks%dt*Drawworks%dw_freeTrac_Dmotion + + Drawworks%w_new_drum = Drawworks%w_old_drum+((Drawworks%K1w+Drawworks%K2w)/2.) + + Drawworks%w_old_drum = Drawworks%w_new_drum + Drawworks%w_drum = Drawworks%w_new_drum + + w_array(Drawworks%i) = Drawworks%w_new_drum + + Drawworks%i = Drawworks%i+1 + + + END DO +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + !print* , 'Drawworksdir555=',Drawworks%F_fastline , (Drawworks%F_fastline*(Drawworks%Diameter/2.0d0)) , (Drawworks%EddyTorque*(Drawworks%EddyBreak/100.0d0)) , (((Drawworks%Diameter/2.0d0)*Drawworks%BreakLoad)*(Drawworks%ManualBreak/100.0d0)) , Drawworks%ManualBreak + + + + + + +!>>>>>>>>> Hook Height Calculation <<<<<<<<<<< + !>>>>>>>>>>>> Simpson1/3 Method <<<<<<<<<<<<<< + sigma_w = w_array(0)+w_array(Drawworks%n) + + do jj=1,Drawworks%n-1,2 + sigma_w = sigma_w+(4.0d0*w_array(jj)) + end do + + do kk=2,Drawworks%n-2,2 + sigma_w = sigma_w+(2.0d0*w_array(kk)) + end do + + Drawworks%Hook_Height = Drawworks%Hook_Height-(((Drawworks%Diameter/2.0d0)*(Drawworks%dt*sigma_w/3.0d0))/Drawworks%NumberOfLine) + + !deallocate(w_array) + + + + + +END subroutine Drawworks_Free_Traction_motor_dawn_motion \ No newline at end of file diff --git a/Equipments/Drawworks/Drawworks_INPUTS.f90 b/Equipments/Drawworks/Drawworks_INPUTS.f90 new file mode 100644 index 0000000..2f82d70 --- /dev/null +++ b/Equipments/Drawworks/Drawworks_INPUTS.f90 @@ -0,0 +1,250 @@ +subroutine Drawworks_INPUTS + + Use CDrillingConsoleVariables + Use CDataDisplayConsoleVariables + Use CHoistingVariables + Use CSimulationVariables + Use CSlipsEnumVariables + Use CKellyConnectionEnumVariables + Use CElevatorConnectionEnumVariables + Use COperationConditionEnumVariables + Use COperationScenariosVariables + Use CSwingEnumVariables + Use CUnityInputs + Use CTdsConnectionModesEnumVariables + Use CTdsElevatorModesEnumVariables + Use CTdsSwingEnumVariables + Use VARIABLES + Use Drawworks_VARIABLES + Use TD_StringConnectionData + Use TD_DrillStemComponents + + IMPLICIT NONE + + + + Call DWMalfunction_ClutchEngage + + + + Drawworks%TransMode = DWTransmisionLever + Drawworks%Direction_Var = DWSwitch + + + if (IsPortable) then + if (Drawworks%Direction_Var==-1 .and. Clutch==1) then !in FWD mode + Drawworks%Conv_Ratio = Drawworks%FWD_Conv_Ratio(Drawworks%ClutchMode,Drawworks%TransMode) + else + Drawworks%Conv_Ratio = 1.d0 + end if + else + if (Drawworks%Direction_Var==-1) then !in FWD mode + Drawworks%Conv_Ratio = Drawworks%FWD_Conv_Ratio(Drawworks%ClutchMode,Drawworks%TransMode) + else if (Drawworks%Direction_Var==+1) then !in REV mode + Drawworks%Conv_Ratio = 1.d0 + else if (Drawworks%Direction_Var==0) then !in OFF mode + Drawworks%Conv_Ratio = 1.d0 + end if + end if + + + + !===> Main Brake and Eddy Brake + Drawworks%EddyBreak = EddyBreakLever*0.5 !0 Brake Load (Main Brake) + Drawworks%BreakLoad = DrillingLineBreakingLoad ![Lbf] + Drawworks%BreakLoad = 4.448221619*Drawworks%BreakLoad ![N] + + + + !===> F_fastline + Drawworks%F_fastline = real(TD_DrawworksLoadInput) ![Lbf] + Drawworks%F_fastline = 4.448221619*Drawworks%F_fastline ![N] + + + + !===> min&max Hook Height + if ( DriveType==1 .and. Get_OperationCondition()==OPERATION_DRILL ) then + if ( Get_Swing()==SWING_WELL_END .and. Get_KellyConnection()==KELLY_CONNECTION_NOTHING ) then + DW_DrillModeCond = 1 + Drawworks%min_Hook_Height = TD_TopJointHeight+HKL-RE ![ft] HKL=63.76=Kelly Ass. Height , RE=Release + Drawworks%max_Hook_Height = 120.d0 ![ft] + else if ( Get_Swing()==SWING_WELL_END .and. Get_KellyConnection()==KELLY_CONNECTION_SINGLE ) then + DW_DrillModeCond = 2 + Drawworks%min_Hook_Height = TD_TopJointHeight+HKL+PL-RE ![ft] PL=30=Pipe Lenght + Drawworks%max_Hook_Height = 120.d0 ![ft] + else if ( Get_Swing()==SWING_WELL_END .and. Get_KellyConnection() == KELLY_CONNECTION_STRING ) then + DW_DrillModeCond = 3 + Drawworks%min_Hook_Height = 21.44d0-RE ![ft] ?????????? check 21.44=(TD_KellyConst-TD_KellyElementConst) + Drawworks%max_Hook_Height = 120.d0 ![ft] + else if ( Get_Swing()==SWING_MOUSE_HOLE_END .and. Get_KellyConnection()==KELLY_CONNECTION_NOTHING ) then + DW_DrillModeCond = 4 + Drawworks%min_Hook_Height = 66.d0-RE ![ft] + Drawworks%max_Hook_Height = 120.d0 ![ft] + else if ( Get_Swing()==SWING_MOUSE_HOLE_END .and. Get_KellyConnection()==KELLY_CONNECTION_SINGLE ) then + DW_DrillModeCond = 5 + Drawworks%min_Hook_Height = 65.1d0-RE ![ft] + Drawworks%max_Hook_Height = 120.d0 ![ft] + else if ( Get_Swing()==SWING_RAT_HOLE_END ) then + DW_DrillModeCond = 6 + Drawworks%min_Hook_Height = 66.d0-RE ![ft] + Drawworks%max_Hook_Height = 120.d0 ![ft] + end if + else if ( DriveType==1 .and. Get_OperationCondition()==OPERATION_TRIP ) then + if ( Get_Swing()==SWING_WELL_END .and. Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING ) then + DW_DrillModeCond = 7 + Drawworks%min_Hook_Height = 18.38d0 ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_Swing()==SWING_WELL_END .and. Get_ElevatorConnection() == ELEVATOR_CONNECTION_STAND ) then + DW_DrillModeCond = 8 + Drawworks%min_Hook_Height = TD_TopJointHeight+HL+SL-(3.d0*RE) ![ft] HL=17.81=Hook Assy , SL=90=Stand Length , 3: chon meghdari az toole loole(tool joint) dakhele elevator gharar migirad + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_Swing()==SWING_WELL_END .and. Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE ) then + DW_DrillModeCond = 9 + Drawworks%min_Hook_Height = TD_TopJointHeight+HL+PL-(3.d0*RE) ![ft] 3: chon meghdari az toole loole(tool joint) balaye elevator mimanad + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_Swing()==SWING_WELL_END .and. Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING ) then + DW_DrillModeCond = 10 + Drawworks%min_Hook_Height = 18.5d0-RE ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_Swing()==SWING_MOUSE_HOLE_END .and. Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING ) then + DW_DrillModeCond = 11 + Drawworks%min_Hook_Height = 19.38d0-RE ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_Swing()==SWING_MOUSE_HOLE_END .and. Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE ) then + DW_DrillModeCond = 12 + Drawworks%min_Hook_Height = 17.73d0-RE ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_Swing()==SWING_RAT_HOLE_END ) then + DW_DrillModeCond = 13 + Drawworks%min_Hook_Height = 27.41d0-RE ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_Swing()==SWING_WELL_END .and. Get_ElevatorConnection() == ELEVATOR_LATCH_STRING ) then + DW_DrillModeCond = 14 + Drawworks%min_Hook_Height = 18.38d0 ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_Swing()==SWING_WELL_END .and. Get_ElevatorConnection() == ELEVATOR_LATCH_SINGLE ) then + DW_DrillModeCond = 25 !warning & collision + Drawworks%min_Hook_Height = 18.38d0 !????????????????? ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_Swing()==SWING_MOUSE_HOLE_END .and. Get_ElevatorConnection() == ELEVATOR_LATCH_SINGLE ) then + DW_DrillModeCond = 26 + Drawworks%min_Hook_Height = 10.38d0 !????????????????? ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_Swing()==SWING_WELL_END .and. Get_ElevatorConnection() == ELEVATOR_LATCH_STAND ) then + DW_DrillModeCond = 27 + Drawworks%min_Hook_Height = 18.38d0 !????????????????? ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + end if + else if ( DriveType==0 ) then + if ( Get_TdsSwing()==TDS_SWING_TILT_END ) then + if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_LATCH_SINGLE ) then + DW_DrillModeCond = 15 + Drawworks%min_Hook_Height = 15.0d0 ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_SINGLE ) then + DW_DrillModeCond = 16 + Drawworks%min_Hook_Height = 15.0d0 ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_NOTHING ) then + DW_DrillModeCond = 17 + Drawworks%min_Hook_Height = 15.0d0 ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + end if + else if ( Get_TdsSwing()==TDS_SWING_OFF_END ) then + if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_LATCH_STRING ) then + DW_DrillModeCond = 18 + Drawworks%min_Hook_Height = max(16.0d0,TD_TopJointHeight) ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_STRING ) then + DW_DrillModeCond = 19 + Drawworks%min_Hook_Height = TD_TopJointHeight ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_STRING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_NOTHING ) then + DW_DrillModeCond = 20 + Drawworks%min_Hook_Height = TD_TopJointHeight ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_NOTHING ) then + DW_DrillModeCond = 21 + Drawworks%min_Hook_Height = max(16.0d0,TD_TopJointHeight) ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_LATCH_STAND ) then + DW_DrillModeCond = 22 + Drawworks%min_Hook_Height = max(16.0d0,TD_TopJointHeight) ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_STAND ) then + DW_DrillModeCond = 23 + Drawworks%min_Hook_Height = max(16.0d0,TD_TopJointHeight) ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_SPINE .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_NOTHING ) then + DW_DrillModeCond = 24 + Drawworks%min_Hook_Height = TD_TopJointHeight ![ft] + Drawworks%max_Hook_Height = 140.d0 ![ft] + end if + end if + end if + + + + !print* , 'DW_DrillModeCond=' , DW_DrillModeCond + !!print* , 'Drawworks%min_Hook_Height=' , Drawworks%min_Hook_Height + !!print* , 'Drawworks%max_Hook_Height=' , Drawworks%max_Hook_Height + !print* , 'Drawworks%Hook_Height_final=' , Drawworks%Hook_Height_final + !print*, 'TD_DrillStemComponentsNumbs2=' , TD_DrillStemComponentsNumbs + !print*, 'TD_TopJointHeight2=' , TD_TopJointHeight + !print*, 'TD_DrillStemTotalLength2=', TD_DrillStemTotalLength + + + + + !===> SLIPS SET , No Motion + if ( DriveType==1 .and. Get_Slips() == SLIPS_SET_END .and. Get_KellyConnection() == KELLY_CONNECTION_STRING ) then + Drawworks%ManualBreak = 100.d0 + Drawworks%N_ref = 0.d0 + end if + + if ( DriveType==0 .and. Get_Slips() == SLIPS_SET_END .and. (Get_TdsConnectionModes()==TDS_CONNECTION_SPINE .or. Get_TdsConnectionModes()==TDS_CONNECTION_STRING) ) then + Drawworks%ManualBreak = 100.d0 + Drawworks%N_ref = 0.d0 + end if + + !if ( Get_Slips() == SLIPS_SET_END .and. Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .and. Drawworks%motion==+1 ) then + ! Drawworks%ManualBreak = 100.d0 + ! Drawworks%N_ref = 0.d0 + !!else if ( Get_Slips() == SLIPS_SET_END .and. Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .and. Drawworks%motion/=+1 ) then + !! Drawworks%N_ref = 0.d0 + !! !Call DWFixModeMotion + !! !print*, 'ELEVATOR_CONNECTION_STRING' + !end if + + + + !===> Closed BOP Rams , No Motion + !if ( PipeRam1_Situation_forTD==1 .or. PipeRam2_Situation_forTD==1 .or. ShearBop_Situation_forTD==1 ) then + if ( ShearBop_Situation_forTD==1 .and. (any(DW_DrillModeCond==(/3,10,19,20,24/))) ) then + Drawworks%ManualBreak = 100.d0 + Drawworks%N_ref = 0.d0 + end if + + + + + +end subroutine Drawworks_INPUTS \ No newline at end of file diff --git a/Equipments/Drawworks/Drawworks_Solver.f90 b/Equipments/Drawworks/Drawworks_Solver.f90 new file mode 100644 index 0000000..f1d2482 --- /dev/null +++ b/Equipments/Drawworks/Drawworks_Solver.f90 @@ -0,0 +1,379 @@ +subroutine Drawworks_Solver + + Use CDrillingConsoleVariables + Use CDataDisplayConsoleVariables + Use CHoistingVariables + Use CUnityInputs + Use Drawworks_VARIABLES + Use CHookVariables + Use CWarningsVariables + Use COperationConditionEnumVariables + Use CSlipsEnumVariables + Use CElevatorConnectionEnumVariables + Use CTdsConnectionModesEnumVariables + Use CTdsElevatorModesEnumVariables + Use TD_DrillStemComponents + Use TD_WellGeometry + Use CWarningsVariables + Use TD_GeneralData + Use CSounds + + IMPLICIT NONE + + + Integer :: j + Integer :: CrownCollision_Status , FloorCollision_Status , CrownWarning_Status , FloorWarning_Status + real :: time + + + + + +!>>>>>>>>>>>>>>>>>>>> N_Ref <<<<<<<<<<<<<<<<<<<<<<<< + + Drawworks%N_Throtle = DWThrottle ![rpm] + Drawworks%N_Accelarator = (DWAcceleretor/100.0)*965.0 ![rpm] + !print* , 'Drawworks%N_Throtle=' , Drawworks%N_Throtle + !print* , 'DWAcceleretor=' , DWAcceleretor + !print* , 'Drawworks%N_Accelarator=' , Drawworks%N_Accelarator + IF (Drawworks%N_Throtle>Drawworks%N_Accelarator) THEN + Drawworks%N_new = Drawworks%N_Throtle + !print* , 'Drawworks%N_Throtle' + ELSE + Drawworks%N_new = Drawworks%N_Accelarator + !print* , 'Drawworks%N_Accelarator' + END IF + if (((Drawworks%N_new-Drawworks%N_old)/Drawworks%time_step)>193.) then + Drawworks%N_ref = (193.*Drawworks%time_step)+Drawworks%N_old + else if (((Drawworks%N_old-Drawworks%N_new)/Drawworks%time_step)>193.) then + Drawworks%N_ref = (-193.*Drawworks%time_step)+Drawworks%N_old + else + Drawworks%N_ref = Drawworks%N_new + end if + Drawworks%N_old = Drawworks%N_ref + !print* , 'Drawworks%N_ref=' , Drawworks%N_ref + + + + + Call Drawworks_INPUTS + + + ! Drawworks Malfunction ----> Drive Motor Failure + Call DWMalfunction_MotorFailure + + + + + !=====> Drawworks Gears Abuse + if ( DW_OldTransMode==0 .and. Drawworks%TransMode/=0 .and. Drawworks%w_drum/=0. .and. Drawworks%ClutchMode/=0 ) then + Call Activate_DrawworksGearsAbuse() + Drawworks%SoundGearCrash = .true. + Call SetSoundDwGearCrash(Drawworks%SoundGearCrash) + Drawworks%ManualBreak = 100. + !Drawworks%N_ref = 0. + Call DWFixModeMotion + Drawworks%SoundRev = INT(Drawworks%w_drum) ![rpm] , Integer + Call SetSoundDwRev( Drawworks%SoundRev ) + return + else + Drawworks%SoundGearCrash = .false. + Call SetSoundDwGearCrash(Drawworks%SoundGearCrash) + end if + if ( DrawworksGearsAbuse==1 ) then + return + end if + + + + + + Call Drawworks_Direction + + + + + +!==================================================== +! Collision & Warning +!==================================================== + if ( CrownCollision == .false. ) then + CrownCollision_Status = 0 + end if + if ( FloorCollision == .false. ) then + FloorCollision_Status = 0 + end if + + !if ( CrownWarning == .false. ) then + ! CrownWarning_Status = 0 + !end if + !if ( FloorWarning == .false. ) then + ! FloorWarning_Status = 0 + !end if + + + + + + + + !==================================================== + ! Crown Collision (Max_Hook_Height) + !==================================================== + if ( ((3.280839895*Drawworks%Hook_Height)>=Drawworks%max_Hook_Height) .and. (any(DW_DrillModeCond==(/3,4,7,10,11,12,14/))) ) then + if ( CrownCollision_Status==0 .and. Drawworks%motion==1 ) then + Call Activate_CrownCollision() + CrownCollision_Status = 1 + Drawworks%SoundCrownCollision = .true. + Call SetSoundCrownCollision(Drawworks%SoundCrownCollision) + else + Drawworks%SoundCrownCollision = .false. + Call SetSoundCrownCollision(Drawworks%SoundCrownCollision) + end if + do While ( CrownCollision==1 ) + Call DWFixModeMotion + end do + if ( Drawworks%motion==-1 ) then + Drawworks%Hook_Height_final = 3.280839895*Drawworks%Hook_Height ![ft] + Call Set_HookHeight(real(Drawworks%Hook_Height_final)) + else + Call DWFixModeMotion + end if + return + end if + + + + + + + + !==================================================== + ! Floor Collision (Min_Hook_Height) + !==================================================== + if ( ((3.280839895*Drawworks%Hook_Height)<=Drawworks%min_Hook_Height) .and. (any(DW_DrillModeCond==(/3,4,7,10,11,12,14/))) ) then + if ( FloorCollision_Status==0 .and. Drawworks%motion==-1 ) then + Call Activate_FloorCollision() + Drawworks%SoundFloorCollision = .true. + Call SetSoundFloorCollision(Drawworks%SoundFloorCollision) + FloorCollision_Status = 1 + else + Drawworks%SoundFloorCollision = .false. + Call SetSoundFloorCollision(Drawworks%SoundFloorCollision) + end if + Do While ( FloorCollision ==1 ) + Call DWFixModeMotion + End Do + if ( Drawworks%motion==1 ) then + Drawworks%Hook_Height_final = 3.280839895*Drawworks%Hook_Height ![ft] + Call Set_HookHeight(real(Drawworks%Hook_Height_final)) + else + Call DWFixModeMotion + end if + return + end if + + + + + + + + + !==================================================== + ! Crown Warning + !==================================================== + if ( ((3.280839895*Drawworks%Hook_Height)>=Drawworks%max_Hook_Height) .and. (any(DW_DrillModeCond==(/1,2,5,6,8,9,13/))) ) then + !if ( crownwarning_Status==0 .and. Drawworks%motion==1 ) then ?????????? + ! Call Activate_crownwarning() ?????????? + !Drawworks%SoundCrownCollision = .true. + !Call SetSoundCrownCollision(Drawworks%SoundCrownCollision) + ! CrownWarning_Status = 1 ?????????? + !else + ! Drawworks%SoundCrownCollision = .false. + !Call SetSoundCrownCollision(Drawworks%SoundCrownCollision) + !end if ?????????? + if ( Drawworks%motion==-1 ) then + Drawworks%Hook_Height_final = 3.280839895*Drawworks%Hook_Height ![ft] + Call Set_HookHeight(real(Drawworks%Hook_Height_final)) + else + Call DWFixModeMotion + end if + return + end if + + + + + + + + !==================================================== + ! Floor Warning + !==================================================== + if ( ((3.280839895*Drawworks%Hook_Height)<=Drawworks%min_Hook_Height) .and. (any(DW_DrillModeCond==(/1,2,5,6,8,9,13/))) ) then + !if ( floorwarning_Status==0 .and. Drawworks%motion==-1 ) then ?????????? + ! Call Activate_floorwarning() ?????????? + !Drawworks%SoundCrownCollision = .true. + !Call SetSoundCrownCollision(Drawworks%SoundCrownCollision) + ! floorwarning_Status = 1 ?????????? + !else + !Drawworks%SoundCrownCollision = .false. + !Call SetSoundCrownCollision(Drawworks%SoundCrownCollision) + !end if ?????????? + if ( Drawworks%motion==1 ) then + Drawworks%Hook_Height_final = 3.280839895*Drawworks%Hook_Height ![ft] + Call Set_HookHeight(real(Drawworks%Hook_Height_final)) + else + Call DWFixModeMotion + end if + return + end if + + + + + + + + + + + !==================================================== + ! ELEVATOR CONNECTION STRING (SLIPS SET , No Motion) + !==================================================== + if ( DriveType==1 .and. Get_Slips() == SLIPS_SET_END .and. Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING .and. Drawworks%motion/=-1 ) then + !if ( Drawworks%motion/=-1 ) then + Call DWFixModeMotion + return + !end if + end if + + if ( DriveType==0 .and. Get_Slips() == SLIPS_SET_END .and. (Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_STRING) .and. Drawworks%motion/=-1 ) then + !if ( Drawworks%motion/=-1 ) then + Call DWFixModeMotion + return + !end if + end if + + + + + + + + + + + + !==================================================== + ! RAM & ToolJoint Collision (Top of RAM) + !==================================================== + Do j = 2,4 !startup problem ??????? + if ( TD_BOPElementNo(j)/=0 ) then + if ( ((TD_BOPHeight(j)-TD_BOPThickness)<=(TD_DrillStems(TD_BOPElementNo(j))%TopDepth+TD_DrillStems(TD_BOPElementNo(j))%ToolJointRange)) .and. ((TD_BOPHeight(j)-TD_BOPThickness)>TD_DrillStems(TD_BOPElementNo(j))%TopDepth) .and. (TD_BOPRamDiam(j)<(2.d0*12.d0*TD_DrillStems(TD_BOPElementNo(j))%RtoolJoint)) ) then + if ( Drawworks%motion==1 ) then + Drawworks%Hook_Height_final = 3.280839895*Drawworks%Hook_Height ![ft] + Call Set_HookHeight(real(Drawworks%Hook_Height_final)) + else + Call DWFixModeMotion + end if + return + end if + end if + End Do + + + + + + + + + + !==================================================== + ! RAM & ToolJoint Collision (Bottom of RAM) + !==================================================== + Do j = 2,4 + if ( TD_BOPElementNo(j)/=0 ) then + if ( ((TD_BOPHeight(j)+TD_BOPThickness)>=(TD_DrillStems(TD_BOPElementNo(j))%DownDepth-TD_DrillStems(TD_BOPElementNo(j))%ToolJointRange)) .and. ((TD_BOPHeight(j)+TD_BOPThickness) 0.0) call FillingWell_By_BellNipple ! Filling Well Through BellNipple ( Path j11 ) + !if (MUD(10)%Q > 0.0) call FillingWell_By_Pumps ! Filling Well Through Pumps ( Path j19 ) + + !write(*,*) 'TD_RemoveVolume,Get_JointConnectionPossible=' , TD_RemoveVolume,Get_JointConnectionPossible() + + if (TD_RemoveVolume > 0.) call DisconnectingPipe !! .and. Get_JointConnectionPossible() == .false.) call DisconnectingPipe + + + IF (KickFlux .AND. NOT(KickOffBottom)) THEN + call Kick_Influx + endif + + + + + IF ( NewInfluxNumber > 0 ) THEN + !write(*,*) 'KickOffBottom , ROP=' , KickOffBottom , Rate_of_Penetration + call Kick_Migration + endif + +! ============================ must be after migration ============================== + + DO KickNumber= NewInfluxNumber-NoGasPocket+1 , NewInfluxNumber + ! FINDING NEW KICK LOCATIONS: + Ann_KickLoc= 0 + Op_KickLoc= 0 + ChokeLine_KickLoc= 0 + + do i = 1, Ann_MudOrKick%Length () + if (Ann_MudOrKick%Array(i) == KickNumber) then + Ann_KickLoc = i + exit + endif + end do + + do i = 1, Op_MudOrKick%Length () + if (Op_MudOrKick%Array(i) == KickNumber) then + Op_KickLoc = i + exit + endif + end do + + do i = 1, ChokeLine_MudOrKick%Length () + if (ChokeLine_MudOrKick%Array(i) == KickNumber) then + ChokeLine_KickLoc = i + exit + endif + end do + +! ============================ must be after migration-end =========================== + + IF (ALLOCATED(GasPocketWeight%Array) .and. KickNumber == NewInfluxNumber .AND. NOT(KickOffBottom) .AND. WellHeadIsOpen) THEN + + cycle + + ELSE IF (ALLOCATED(GasPocketWeight%Array)) THEN + + if (((GasPocketDeltaVol%Array(NewInfluxNumber - KickNumber + 1) > 0.0 .AND. WellHeadIsOpen) .or. KickExpansion_DueToMudLost) ) call Kick_Expansion + + if ((GasPocketDeltaVol%Array(NewInfluxNumber - KickNumber + 1) < 0.0 ) .OR. WellHeadIsOpen == .FALSE.) CALL Kick_Contraction + + ENDIF + + + ENDDO + + + + + LostInTripOutIsDone= .false. + + if( DeltaVolumeOp >= 0.0 .and. Get_KellyConnection()==KELLY_CONNECTION_STRING) then + !write(*,*) 'DeltaVolumeOp=' , DeltaVolumeOp + call Pump_and_TripIn + elseif (DeltaVolumeOp < 0.0) then + ! when we have Utube and tripping out simultaneously, it uses "TripOut_and_Pump" subroutine, and then Utube code is done + ! "Utube" and "Pump_and_TripIn" subroutines, not to be used simultaneously because "Utube" code supports trip in + call TripOut_and_Pump + endif + + WellOutletDensity= Ann_Density%Last() ! (ppg) used in MudSystem + + + + if (MUD(4)%Q > 0.) then ! ( j4 > 0 ) ! THIS CIRCULATION CODE IS JUST FOR LINE J4, AND NOT NEEDED FOR LINE J18 + call ChokeLineMud + endif + + + call Choke_GasSound + + !WRITE(*,*) 'CIRCU-Ann_Saved_MudDischarged_Volume' , Ann_Saved_MudDischarged_Volume + +! ****Utube is called in Plot Subroutine**** + + Call Instructor_CirculationMud_Edit + + + + call PlotFinalMudElements + + MudChecked= .true. + UtubePossibility= .true. + + + !WRITE(*,*) '***********************************************************************' + + + + +end subroutine CirculationCodeSelect \ No newline at end of file diff --git a/Equipments/MudSystem/Deallocate_Normal_Circulation.f90 b/Equipments/MudSystem/Deallocate_Normal_Circulation.f90 new file mode 100644 index 0000000..442e8f4 --- /dev/null +++ b/Equipments/MudSystem/Deallocate_Normal_Circulation.f90 @@ -0,0 +1,189 @@ +subroutine DEALLOCATE_ARRAYS_NormalCirculation() ! is called in module FluidFlowMain + USE MudSystemVARIABLES + implicit none + + +if(allocated(Xstart_PipeSection)) deallocate(Xstart_PipeSection) +if(allocated(Xend_PipeSection)) deallocate(Xend_PipeSection) +if(allocated(PipeSection_VolumeCapacity)) deallocate(PipeSection_VolumeCapacity) +if(allocated(Area_PipeSectionFt)) deallocate(Area_PipeSectionFt) +if(allocated(OD_PipeSectionInch)) deallocate(OD_PipeSectionInch) +if(allocated(ID_PipeSectionInch)) deallocate(ID_PipeSectionInch) +if(allocated(Xstart_OpSection)) deallocate(Xstart_OpSection) +if(allocated(Xend_OpSection)) deallocate(Xend_OpSection) +if(allocated(Area_OpSectionFt)) deallocate(Area_OpSectionFt) +if(allocated(OD_OpSectionInch)) deallocate(OD_OpSectionInch) +if(allocated(ID_OpSectionInch)) deallocate(ID_OpSectionInch) +if(allocated(OpSection_VolumeCapacity)) deallocate(OpSection_VolumeCapacity) +if(allocated(GeoTypeOp)) deallocate(GeoTypeOp) +if(allocated(GeoType)) deallocate(GeoType) + + + call Hz_MudDischarged_Volume%Empty() + call Hz_Mud_Backhead_X%Empty() + call Hz_Mud_Backhead_section%Empty() + call Hz_Mud_Forehead_X%Empty() + call Hz_Mud_Forehead_section%Empty() + call Hz_Density%Empty() + call Hz_RemainedVolume_in_LastSection%Empty() + call Hz_EmptyVolume_inBackheadLocation%Empty() + call Hz_MudOrKick%Empty() + + + call St_MudDischarged_Volume%Empty() + call St_Mud_Backhead_X%Empty() + call St_Mud_Backhead_section%Empty() + call St_Mud_Forehead_X%Empty() + call St_Mud_Forehead_section%Empty() + call St_Density%Empty() + call St_RemainedVolume_in_LastSection%Empty() + call St_EmptyVolume_inBackheadLocation%Empty() + call St_MudOrKick%Empty() + + + call Ann_MudDischarged_Volume%Empty() + call Ann_Mud_Backhead_X%Empty() + call Ann_Mud_Backhead_section%Empty() + call Ann_Mud_Forehead_X%Empty() + call Ann_Mud_Forehead_section%Empty() + call Ann_Density%Empty() + call Ann_RemainedVolume_in_LastSection%Empty() + call Ann_EmptyVolume_inBackheadLocation%Empty() + call Ann_MudOrKick%Empty() + call Ann_CuttingMud%Empty() + + + call Op_MudDischarged_Volume%Empty() + call Op_Mud_Backhead_X%Empty() + call Op_Mud_Backhead_section%Empty() + call Op_Mud_Forehead_X%Empty() + call Op_Mud_Forehead_section%Empty() + call Op_Density%Empty() + call Op_RemainedVolume_in_LastSection%Empty() + call Op_EmptyVolume_inBackheadLocation%Empty() + call Op_MudOrKick%Empty() + + + call ChokeLine_MudDischarged_Volume%Empty() + call ChokeLine_Mud_Backhead_X%Empty() + call ChokeLine_Mud_Backhead_section%Empty() + call ChokeLine_Mud_Forehead_X%Empty() + call ChokeLine_Mud_Forehead_section%Empty() + call ChokeLine_Density%Empty() + call ChokeLine_RemainedVolume_in_LastSection%Empty() + call ChokeLine_EmptyVolume_inBackheadLocation%Empty() + call ChokeLine_MudOrKick%Empty() + + + call Xend_MudElement%Empty() + call Xstart_MudElement%Empty() + call TVDend_MudElement%Empty() + call TVDstart_MudElement%Empty() + call Density_MudElement%Empty() + call MudGeoType%Empty() + call PipeID_MudElement%Empty() + call PipeOD_MudElement%Empty() + call MudType_MudElement%Empty() + + call Xend_OpMudElement%Empty() + call Xstart_OpMudElement%Empty() + call TVDend_OpMudElement%Empty() + call TVDstart_OPMudElement%Empty() + call Density_OpMudElement%Empty() + call PipeID_OpMudElement%Empty() + call PipeOD_OpMudElement%Empty() + call MudTypeOp_MudElement%Empty() + + + + end subroutine + + + +subroutine RemoveAnnulusMudArrays(ilocal) + USE MudSystemVARIABLES + implicit none + + INTEGER :: ilocal + + + call Ann_MudDischarged_Volume%Remove (ilocal) + call Ann_Mud_Backhead_X%Remove (ilocal) + call Ann_Mud_Backhead_section%Remove (ilocal) + call Ann_Mud_Forehead_X%Remove (ilocal) + call Ann_Mud_Forehead_section%Remove (ilocal) + call Ann_Density%Remove (ilocal) + call Ann_RemainedVolume_in_LastSection%Remove (ilocal) + call Ann_EmptyVolume_inBackheadLocation%Remove (ilocal) + call Ann_MudOrKick%Remove (ilocal) + call Ann_CuttingMud%Remove (ilocal) + + + + end subroutine + + +subroutine RemoveStringMudArrays(ilocal) + USE MudSystemVARIABLES + implicit none + + INTEGER :: ilocal + + + call St_MudDischarged_Volume%Remove (ilocal) + call St_Mud_Backhead_X%Remove (ilocal) + call St_Mud_Backhead_section%Remove (ilocal) + call St_Mud_Forehead_X%Remove (ilocal) + call St_Mud_Forehead_section%Remove (ilocal) + call St_Density%Remove (ilocal) + call St_RemainedVolume_in_LastSection%Remove (ilocal) + call St_EmptyVolume_inBackheadLocation%Remove (ilocal) + call St_MudOrKick%Remove (ilocal) + + + + end subroutine + + +subroutine RemoveOpMudArrays(ilocal) + USE MudSystemVARIABLES + implicit none + + INTEGER :: ilocal + + + call Op_MudDischarged_Volume%Remove (ilocal) + call Op_Mud_Backhead_X%Remove (ilocal) + call Op_Mud_Backhead_section%Remove (ilocal) + call Op_Mud_Forehead_X%Remove (ilocal) + call Op_Mud_Forehead_section%Remove (ilocal) + call Op_Density%Remove (ilocal) + call Op_RemainedVolume_in_LastSection%Remove (ilocal) + call Op_EmptyVolume_inBackheadLocation%Remove (ilocal) + call Op_MudOrKick%Remove (ilocal) + + + + end subroutine + +subroutine RemoveHzMudArrays(ilocal) + USE MudSystemVARIABLES + implicit none + + INTEGER :: ilocal + + + call Hz_MudDischarged_Volume%Remove (ilocal) + call Hz_Mud_Backhead_X%Remove (ilocal) + call Hz_Mud_Backhead_section%Remove (ilocal) + call Hz_Mud_Forehead_X%Remove (ilocal) + call Hz_Mud_Forehead_section%Remove (ilocal) + call Hz_Density%Remove (ilocal) + call Hz_RemainedVolume_in_LastSection%Remove (ilocal) + call Hz_EmptyVolume_inBackheadLocation%Remove (ilocal) + call Hz_MudOrKick%Remove (ilocal) + + + + end subroutine + \ No newline at end of file diff --git a/Equipments/MudSystem/Disconnecting_Pipe.f90 b/Equipments/MudSystem/Disconnecting_Pipe.f90 new file mode 100644 index 0000000..5bf5661 --- /dev/null +++ b/Equipments/MudSystem/Disconnecting_Pipe.f90 @@ -0,0 +1,108 @@ +subroutine DisconnectingPipe ! is called in subroutine CirculationCodeSelect + + Use GeoElements_FluidModule + USE CMudPropertiesVariables + USE MudSystemVARIABLES + USE Pump_VARIABLES + use CDrillWatchVariables + use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + USE sROP_Other_Variables + USE sROP_Variables + Use KickVariables + USE TD_DrillStemComponents + Use CKellyConnectionEnumVariables + Use CUnityOutputs + USE CManifolds + + implicit none + + Real(8) ExcessMudVolume, ExcessMudVolume_Remained + write(*,*) 'DisconnectingPipe' + + !TD_RemoveVolume= TD_RemoveVolume* 7.48051948 ! ft^3 to gal + + ExcessMudVolume= sum(St_MudDischarged_Volume%Array(:)) - sum(PipeSection_VolumeCapacity(2:F_StringIntervalCounts)) + + + ! ======if(ExcessMudVolume <= 0.) No Modification Needed Because Removed Pipe was Empty===== + + if (Get_KellyConnection() == KELLY_CONNECTION_NOTHING .and. Valve(56)%Status == .False.) ExcessMudVolume= 0.d0 !Valve(56)%Status == .False. :: safety valve installed + + if (ExcessMudVolume > 0.) then + + if ( Valve(53)%Status == .true. ) then + MudBucketVolume= ExcessMudVolume + else + MudBucketVolume= 0.0 + endif + + + + + +!========================Flow Disconnect Unity Input Signals================= + + !if ( Get_JointConnectionPossible() == .false. ) then + if (Get_KellyConnection() == KELLY_CONNECTION_NOTHING) then + Call Set_FlowKellyDisconnect(.true.) + else + Call Set_FlowPipeDisconnect(.true.) + endif + !endif + + + +!====================Flow Disconnect Unity Input Signals-End================= + + + + +!========================Disconnecting Pipe from the String================= + + ExcessMudVolume_Remained= ExcessMudVolume ! ft^3 to gal + + + imud=1 + + Do + + if(St_MudDischarged_Volume%Array(imud) < ExcessMudVolume_Remained) then + ExcessMudVolume_Remained= ExcessMudVolume_Remained- St_MudDischarged_Volume%Array(imud) + call St_MudDischarged_Volume%Remove (imud) + call St_Mud_Backhead_X%Remove (imud) + call St_Mud_Backhead_section%Remove (imud) + call St_Mud_Forehead_X%Remove (imud) + call St_Mud_Forehead_section%Remove (imud) + call St_Density%Remove (imud) + call St_RemainedVolume_in_LastSection%Remove (imud) + call St_EmptyVolume_inBackheadLocation%Remove (imud) + call St_MudOrKick%Remove (imud) + + elseif(St_MudDischarged_Volume%Array(imud) > ExcessMudVolume_Remained) then + St_MudDischarged_Volume%Array(imud)= St_MudDischarged_Volume%Array(imud)- ExcessMudVolume_Remained + exit + + else !(St_MudDischarged_Volume%Array(imud) == ExcessMudVolume_Remained) + call St_MudDischarged_Volume%Remove (imud) + call St_Mud_Backhead_X%Remove (imud) + call St_Mud_Backhead_section%Remove (imud) + call St_Mud_Forehead_X%Remove (imud) + call St_Mud_Forehead_section%Remove (imud) + call St_Density%Remove (imud) + call St_RemainedVolume_in_LastSection%Remove (imud) + call St_EmptyVolume_inBackheadLocation%Remove (imud) + call St_MudOrKick%Remove (imud) + exit + + endif + + enddo + + + + +!=================Disconnecting Pipe from the String - End=================== + endif + + + end subroutine DisconnectingPipe \ No newline at end of file diff --git a/Equipments/MudSystem/Elements_Creation.f90 b/Equipments/MudSystem/Elements_Creation.f90 new file mode 100644 index 0000000..316e127 --- /dev/null +++ b/Equipments/MudSystem/Elements_Creation.f90 @@ -0,0 +1,274 @@ +subroutine ElementsCreation ! is called in subroutine Fluid_Flow_Solver + + Use GeoElements_FluidModule + USE CMudPropertiesVariables + USE MudSystemVARIABLES + USE Pump_VARIABLES + !USE CHOKEVARIABLES + !USE CDataDisplayConsoleVariables , StandPipePressureDataDisplay=>StandPipePressure + !use CManifolds + use CDrillWatchVariables + !use CHOKEVARIABLES + !use CChokeManifoldVariables + use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + USE sROP_Other_Variables + USE sROP_Variables + Use KickVariables + + + implicit none + + integer jelement, jmud, jsection,ielement,i + integer jopelement,jopmud,jopsection + +!===========================================================WELL============================================================ +!===========================================================WELL============================================================ + + if(allocated(Xstart_PipeSection)) deallocate(Xstart_PipeSection) + if(allocated(Xend_PipeSection)) deallocate(Xend_PipeSection) + if(allocated(PipeSection_VolumeCapacity)) deallocate(PipeSection_VolumeCapacity) + if(allocated(Area_PipeSectionFt)) deallocate(Area_PipeSectionFt) + if(allocated(GeoType)) deallocate(GeoType) + if(allocated(OD_PipeSectionInch)) deallocate(OD_PipeSectionInch) + if(allocated(ID_PipeSectionInch)) deallocate(ID_PipeSectionInch) + if(allocated(Angle_PipeSection)) deallocate(Angle_PipeSection) + + if(allocated(Xstart_OpSection)) deallocate(Xstart_OpSection) + if(allocated(Xend_OpSection)) deallocate(Xend_OpSection) + if(allocated(OpSection_VolumeCapacity)) deallocate(OpSection_VolumeCapacity) + if(allocated(Area_OpSectionFt)) deallocate(Area_OpSectionFt) + if(allocated(GeoTypeOp)) deallocate(GeoTypeOp) + if(allocated(OD_OpSectionInch)) deallocate(OD_OpSectionInch) + if(allocated(ID_OpSectionInch)) deallocate(ID_OpSectionInch) + if(allocated(Angle_OpSection)) deallocate(Angle_OpSection) + + + +ALLOCATE (Xstart_PipeSection(F_StringIntervalCounts+F_AnnulusIntervalCounts),Xend_PipeSection(F_StringIntervalCounts+F_AnnulusIntervalCounts) & + ,PipeSection_VolumeCapacity(F_StringIntervalCounts+F_AnnulusIntervalCounts),Area_PipeSectionFt(F_StringIntervalCounts+F_AnnulusIntervalCounts), & + GeoType(F_StringIntervalCounts+F_AnnulusIntervalCounts),OD_PipeSectionInch(F_StringIntervalCounts+F_AnnulusIntervalCounts),ID_PipeSectionInch(F_StringIntervalCounts+F_AnnulusIntervalCounts)) + + +ALLOCATE (Xstart_OpSection(F_BottomHoleIntervalCounts),Xend_OpSection(F_BottomHoleIntervalCounts) & + ,OpSection_VolumeCapacity(F_BottomHoleIntervalCounts),Area_OpSectionFt(F_BottomHoleIntervalCounts), & + GeoTypeOp(F_BottomHoleIntervalCounts),OD_OpSectionInch(F_BottomHoleIntervalCounts),ID_OpSectionInch(F_BottomHoleIntervalCounts)) + + OpSection=0 + isection=0 + + + DO iisection=1, F_IntervalsTotalCounts + IF (F_Interval(iisection)%GeoType == 1) THEN + OpSection= OpSection+1 + Xstart_OpSection(OpSection)= (F_Interval(iisection)%StartDepth) + Xend_OpSection(OpSection)= (F_Interval(iisection)%EndDepth) + Area_OpSectionFt(OpSection)= PII*((F_Interval(iisection)%OD/12.0d0)**2-(F_Interval(iisection)%ID/12.0d0)**2)/4.0d0 !D(in), AREA(ft^2) + OD_OpSectionInch(OpSection)= (F_Interval(iisection)%OD) + ID_OpSectionInch(OpSection)= (F_Interval(iisection)%ID) !REAL(F_Interval(iisection)%Volume) + GeoTypeOp(OpSection)= F_Interval(iisection)%GeoType ! niaz nist ehtemalan + !Angle_OpSection(OpSection)= F_Interval(iisection)%Angle + !write(*,*) 'iisection=' , iisection + !write(*,*) 'StartDepth=' , F_Interval(iisection)%StartDepth + !write(*,*) 'EndDepth=' , F_Interval(iisection)%EndDepth + !write(*,*) 'OD=' , F_Interval(iisection)%OD + !write(*,*) 'ID=' , F_Interval(iisection)%ID + ELSE + isection= isection+1 + Xstart_PipeSection(isection)= (F_Interval(iisection)%StartDepth) + !write(*,*) 'F_Interval(iisection)%StartDepth=' , F_Interval(iisection)%StartDepth + Xend_PipeSection(isection)= (F_Interval(iisection)%EndDepth) + !write(*,*) 'F_Interval(iisection)%EndDepth=' , F_Interval(iisection)%EndDepth + + OD_PipeSectionInch(isection)= (F_Interval(iisection)%OD) + Area_PipeSectionFt(isection)= PII*((F_Interval(iisection)%OD/12.0d0)**2-(F_Interval(iisection)%ID/12.0d0)**2)/4.0d0 !D(in), AREA(ft^2) + ID_PipeSectionInch(isection)= (F_Interval(iisection)%ID) + !PipeSection_VolumeCapacity(isection)= Area_PipeSectionFt(isection)* ABS(Xend_PipeSection(isection)-Xstart_PipeSection(isection))* 7.48051948 !REAL(F_Interval(iisection)%Volume) ! (gal) + GeoType(isection)= F_Interval(iisection)%GeoType + !Angle_PipeSection(isection)= F_Interval(iisection)%Angle + ENDIF + + ENDDO + + + + call Xstart_MudElement%Empty() + call Xstart_MudElement%Add(Xstart_PipeSection(1)) + + + call Xstart_OpMudElement%Empty() + call Xstart_OpMudElement%Add(Xstart_OpSection(1)) + + + call TVDstart_MudElement%Empty() + call TVD_Calculator(Xstart_PipeSection(1),MudCircVerticalDepth) + call TVDstart_MudElement%Add(MudCircVerticalDepth) + + + call TVDstart_OPMudElement%Empty() + call TVD_Calculator(Xstart_OpSection(1),MudCircVerticalDepth) + call TVDstart_OPMudElement%Add(MudCircVerticalDepth) + + + + NoPipeSections= isection ! sections in string and annulus(GeoType 0 & 2) + + + DO OpSection= 1,F_BottomHoleIntervalCounts + OpSection_VolumeCapacity(OpSection)= Area_OpSectionFt(OpSection)* ABS(Xend_OpSection(OpSection)-Xstart_OpSection(OpSection))* 7.48051948d0 !REAL(F_Interval(iisection)%Volume) + ENDDO + + DO isection= 1,NoPipeSections + PipeSection_VolumeCapacity(isection)= Area_PipeSectionFt(isection)* ABS(Xend_PipeSection(isection)-Xstart_PipeSection(isection))* 7.48051948d0 !REAL(F_Interval(iisection)%Volume) ! (gal) + ENDDO + + + + + !types: Mud= 0 Kick=1 + +!=========================================== + if (FirstMudSet==0) then + call Hz_MudDischarged_Volume%AddToFirst(PipeSection_VolumeCapacity(1)) !startup initial + call Hz_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(1)) + call Hz_Mud_Backhead_section%AddToFirst (1) + call Hz_Mud_Forehead_X%AddToFirst (Xend_PipeSection(1)) + call Hz_Mud_Forehead_section%AddToFirst (1) + call Hz_Density%AddToFirst (ActiveDensity) ! initial(ppg) + call Hz_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Hz_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Hz_MudOrKick%AddToFirst (0) + + + call St_MudDischarged_Volume%AddToFirst(sum(PipeSection_VolumeCapacity(2:F_StringIntervalCounts))) !startup initial + call St_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(2)) + call St_Mud_Backhead_section%AddToFirst (2) + call St_Mud_Forehead_X%AddToFirst (Xend_PipeSection(F_StringIntervalCounts)) + call St_Mud_Forehead_section%AddToFirst (F_StringIntervalCounts) + call St_Density%AddToFirst (ActiveDensity) ! initial(ppg) + call St_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call St_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call St_MudOrKick%AddToFirst (0) + + + call Ann_MudDischarged_Volume%AddToFirst(sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections))) + call Ann_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) + call Ann_Mud_Backhead_section%AddToFirst (F_StringIntervalCounts+1) + call Ann_Mud_Forehead_X%AddToFirst (Xend_PipeSection(NoPipeSections)) + call Ann_Mud_Forehead_section%AddToFirst (NoPipeSections) + call Ann_Density%AddToFirst (ActiveDensity) ! initial(ppg) + call Ann_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Ann_MudOrKick%AddToFirst (0) + call Ann_CuttingMud%AddToFirst (0) + + OldPosition= Xend_PipeSection(F_StringIntervalCounts) + + OldAnnulusCapacity= sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + + + call ChokeLine_MudDischarged_Volume%AddToFirst(ChokeLine_VolumeCapacity) + call ChokeLine_Mud_Backhead_X%AddToFirst (0.0d0) + call ChokeLine_Mud_Backhead_section%AddToFirst (1) + call ChokeLine_Mud_Forehead_X%AddToFirst (ChokeLineLength) + call ChokeLine_Mud_Forehead_section%AddToFirst (1) + call ChokeLine_Density%AddToFirst (ActiveDensity) ! initial(ppg) + call ChokeLine_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call ChokeLine_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call ChokeLine_MudOrKick%AddToFirst (0) + + + call Op_MudDischarged_Volume%AddToFirst (sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts))) + call Op_Mud_Backhead_X%AddToFirst (Xstart_OpSection(1)) + call Op_Mud_Backhead_section%AddToFirst (1) + call Op_Mud_Forehead_X%AddToFirst (Xend_OpSection(F_BottomHoleIntervalCounts)) + call Op_Mud_Forehead_section%AddToFirst (F_BottomHoleIntervalCounts) + call Op_Density%AddToFirst (ActiveDensity) + call Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Op_MudOrKick%AddToFirst (0) + + !F_StringIntervalCountsOld= F_StringIntervalCounts ! is used for adding new pipe to string + F_StringIntervalCounts_Old= F_StringIntervalCounts ! is used for adding new pipe to string + + + FirstMudSet= 1 + endif + + +!===================== Trip Detection ================ + + !DeltaVolumeOp > 0 : Trip in + !DeltaVolumeOp < 0 : Trip out + + + DeltaVolumeOp= ((Xend_PipeSection(F_StringIntervalCounts)-OldPosition)*PII*((OD_PipeSectionInch(F_StringIntervalCounts+1)/12.0d0)**2)/4.0d0)* 7.48051948d0! ft^3 to gal ! D(in) + DeltaVolumeOp = INT(DeltaVolumeOp * 100000.d0) / 100000.d0 + + DeltaVolumePipe= ((Xend_PipeSection(F_StringIntervalCounts)-OldPosition)*PII*((ID_PipeSectionInch(F_StringIntervalCounts+F_AnnulusIntervalCounts)/12.0d0)**2)/4.0d0)* 7.48051948d0! ft^3 to gal + DeltaVolumePipe = INT(DeltaVolumePipe * 100000.d0) / 100000.d0 + + !DeltaVolumeAnnulusCapacity= ((Xend_PipeSection(F_StringIntervalCounts)-OldPosition))*Area_PipeSectionFt(NoPipeSections)* 7.48051948d0! ft^3 to gal + DrillStringSpeed = (Xend_PipeSection(F_StringIntervalCounts)-OldPosition) / 0.1 + + DeltaVolumeAnnulusCapacity= sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) - OldAnnulusCapacity + + + !write(*,*) 'DeltaVolumeAnnulusCapacity= ' , DeltaVolumeAnnulusCapacity + + !write(*,*) 'DeltaVolumePipe=' , DeltaVolumePipe + !write(*,*) 'DeltaVolumeOp=' , DeltaVolumeOp + ! + ! + !write(*,*) 'Bit here=' , Xend_PipeSection(F_StringIntervalCounts) + + + + + OldAnnulusCapacity= sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + + OldPosition= Xend_PipeSection(F_StringIntervalCounts) + + ! Needed for trip in or out: + if (Hz_Mud_Backhead_X%Length() == 0) then + + CALL ErrorStop('Hz_Mud_Backhead_X Length is 0') + endif + + + Hz_Mud_Backhead_X%Array(1)= Xstart_PipeSection(1) + Hz_Mud_Backhead_section%Array(1)= 1 + + AddedElementsToString = F_StringIntervalCounts - F_StringIntervalCounts_Old + St_Mud_Backhead_X%Array(1)= Xstart_PipeSection(2) + St_Mud_Backhead_section%Array(1)= 2 + Ann_Mud_Backhead_X%Array(1)= Xstart_PipeSection(F_StringIntervalCounts+1) + Ann_Mud_Backhead_section%Array(1)= F_StringIntervalCounts+1 + Op_Mud_Backhead_X%Array(1)= Xstart_OpSection(1) + Op_Mud_Backhead_section%Array(1)= 1 + ChokeLine_Mud_Backhead_X%Array(1)= 0. + ChokeLine_Mud_Backhead_section%Array(1)= 1 + + + F_StringIntervalCounts_Old= F_StringIntervalCounts +!write(*,*) 'Xstart_PipeSection(2)' , Xstart_PipeSection(2) +!write(*,*) 'Xend_PipeSection(1)' , Xend_PipeSection(1) + + +!=================================================== + + ! + !DeltaWellCap= sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) - WellCapOld + !WellCapOld= sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) + !write(*,*) 'DeltaWellCap=' , DeltaWellCap + ! + ! + ! + !DeltaAnnCap= sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) - AnnCapOld + !AnnCapOld= sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + !write(*,*) 'DeltaAnnCap=' , DeltaAnnCap + + end subroutine ElementsCreation + + + + diff --git a/Equipments/MudSystem/FillingWell_By_BellNipple.f90 b/Equipments/MudSystem/FillingWell_By_BellNipple.f90 new file mode 100644 index 0000000..cfa5af7 --- /dev/null +++ b/Equipments/MudSystem/FillingWell_By_BellNipple.f90 @@ -0,0 +1,215 @@ +subroutine FillingWell_By_BellNipple ! is called in subroutine CirculationCodeSelect + + ! this subroutine is for lines: 1) BellNippleToWell-NonFullWell : MUD(8)%Q + ! 2) PumpsToWell_KillLine : MUD(10)%Q + + Use GeoElements_FluidModule + USE CMudPropertiesVariables + USE MudSystemVARIABLES + USE Pump_VARIABLES + use CDrillWatchVariables + use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + USE sROP_Other_Variables + USE sROP_Variables + Use KickVariables + + implicit none + + real(8) deltaV,Xposition,FillingDensity + + integer kloc,SectionPosition + + + + + ! Well Is Not Full + + + + if (Ann_MudOrKick%Last() == 104) then ! Last Element is air we must observe: Ann_Mud_Forehead_X%Last()=0.0 + + write(*,*) 'FillingWell_By_BellNipple-Last Element is air' + + !write(*,*) '*Ann_Mud_Forehead_X%Last()=' , Ann_Mud_Forehead_X%Last() + !write(*,*) '*Ann_MudOrKick%Last()=' , Ann_MudOrKick%Last() + + + + FillingDensity= BellNippleDensity + +!**************************** + if ( Ann_MudDischarged_Volume%Last() > (((MUD(8)%Q+MUD(10)%Q)/60.)*DeltaT_Mudline)) then ! air baghi mimune + + kloc= Ann_MudDischarged_Volume%Length()-1 + + + + deltaV= ((MUD(8)%Q+MUD(10)%Q)/60.)*DeltaT_Mudline + + Ann_MudDischarged_Volume%Array(Ann_MudDischarged_Volume%Length())= Ann_MudDischarged_Volume%Array(Ann_MudDischarged_Volume%Length()) - deltaV + + +!========================ANNULUS ENTRANCE==================== + + if (ABS(Ann_Density%Array(kloc) - FillingDensity) >= DensityMixTol) then ! new mud is pumped + call Ann_Density%AddTo (kloc, FillingDensity) + call Ann_MudDischarged_Volume%AddTo (kloc, 0.0d0) + call Ann_Mud_Forehead_X%AddTo (kloc, 0.0d0) + call Ann_Mud_Forehead_section%AddTo (kloc, 1) + call Ann_Mud_Backhead_X%AddTo (kloc, 0.0d0) + call Ann_Mud_Backhead_section%AddTo (kloc, NoPipeSections) + call Ann_RemainedVolume_in_LastSection%AddTo (kloc, 0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddTo (kloc, 0.0d0) + call Ann_MudOrKick%AddTo (kloc, 0) + call Ann_CuttingMud%AddTo (kloc,0) + + !AnnulusSuctionDensity_Old= Hz_Density_Utube + endif + +!========================ANNULUS==================== + + Ann_MudDischarged_Volume%Array(kloc)= Ann_MudDischarged_Volume%Array(kloc)+ deltaV !(gal) + + + + else ! ( Ann_MudDischarged_Volume%Last() <= (((MUD(8)%Q+MUD(10)%Q)/60.)*DeltaT_Mudline)) then ! air baghi namune + + + + + kloc= Ann_MudDischarged_Volume%Length()-1 + + deltaV= Ann_MudDischarged_Volume%Last() + + + + if (ABS(Ann_Density%Array(kloc)-FillingDensity)< DensityMixTol .and. Ann_CuttingMud%Array(kloc)==0) then ! .OR. (Ann_MudDischarged_Volume%Array(kloc)< 42.) ) then ! 1-Pockets are Merged + Ann_Density%Array(kloc)= (Ann_Density%Array(kloc)*Ann_MudDischarged_Volume%Array(kloc)+FillingDensity*deltaV)/(Ann_MudDischarged_Volume%Array(kloc)+deltaV) + Ann_MudDischarged_Volume%Array(kloc)= Ann_MudDischarged_Volume%Array(kloc)+deltaV + Ann_Mud_Forehead_X%Array(kloc)= Xend_PipeSection(NoPipeSections) + Ann_Mud_Forehead_section%Array(kloc)= NoPipeSections + !Ann_Mud_Backhead_X%Array(kloc)= no change + !Ann_Mud_Backhead_section%Array(kloc)= no change + Ann_RemainedVolume_in_LastSection%Array(kloc)= (0.0) + Ann_EmptyVolume_inBackheadLocation%Array(kloc)= (0.0) + + call Ann_MudDischarged_Volume%Remove (kloc+1) + call Ann_Mud_Backhead_X%Remove (kloc+1) + call Ann_Mud_Backhead_section%Remove (kloc+1) + call Ann_Mud_Forehead_X%Remove (kloc+1) + call Ann_Mud_Forehead_section%Remove (kloc+1) + call Ann_Density%Remove (kloc+1) + call Ann_RemainedVolume_in_LastSection%Remove (kloc+1) + call Ann_EmptyVolume_inBackheadLocation%Remove (kloc+1) + call Ann_MudOrKick%Remove (kloc+1) + call Ann_CuttingMud%Remove (kloc+1) + + + else ! 2-Merging conditions are not meeted, so new pocket== air is replaced with filling mud + Ann_Density%Array(kloc+1) =FillingDensity + Ann_MudOrKick%Array(kloc+1)= 0 + + endif + + + endif + + ! end condition (Ann_MudOrKick%Last() == 104) ! Last Element is air + +!********************************************************************************************************************************************************** + + + + + else ! (Ann_MudOrKick%Last() == 0) then ! Last Element is NOT air- so we must observe: Ann_Mud_Forehead_X%Last()/=0.0 + + !write(*,*) 'FillingWell_By_BellNipple-Last Element is NOT air' + ! + !write(*,*) '*Ann_Mud_Forehead_X%Last()=' , Ann_Mud_Forehead_X%Last() + !write(*,*) '*Ann_MudOrKick%Last()=' , Ann_MudOrKick%Last() + + + deltaV= ((MUD(8)%Q+MUD(10)%Q)/60.)*DeltaT_Mudline + + kloc= Ann_MudDischarged_Volume%Length() + + + + + +!========================ANNULUS ENTRANCE==================== + + if (ABS(Ann_Density%Last() - FillingDensity) >= DensityMixTol .or. Ann_CuttingMud%Last()==1) then ! .OR. (Ann_MudDischarged_Volume%Array(kloc)>42.) ) then ! new mud is pumped + Xposition= Ann_Mud_Forehead_X%Last() + SectionPosition= Ann_Mud_Forehead_section%Last() + call Ann_Density%Add (FillingDensity) + call Ann_MudDischarged_Volume%Add (0.0d0) + call Ann_Mud_Forehead_X%Add (Xposition) + call Ann_Mud_Forehead_section%Add (SectionPosition) + call Ann_Mud_Backhead_X%Add (Xposition) + call Ann_Mud_Backhead_section%Add (SectionPosition) + call Ann_RemainedVolume_in_LastSection%Add (0.0d0) + call Ann_EmptyVolume_inBackheadLocation%Add (0.0d0) + call Ann_MudOrKick%Add (0) + call Ann_CuttingMud%Add (0) + + !AnnulusSuctionDensity_Old= Hz_Density_Utube + !endif + +!========================ANNULUS==================== + + Ann_MudDischarged_Volume%Array(Ann_MudDischarged_Volume%Length())= Ann_MudDischarged_Volume%Array(Ann_MudDischarged_Volume%Length())+ deltaV !(gal) + + + else ! Merged with last Mud + Ann_Density%Array(kloc)= (Ann_Density%Array(kloc)*Ann_MudDischarged_Volume%Array(kloc)+FillingDensity*deltaV)/(Ann_MudDischarged_Volume%Array(kloc)+deltaV) + Ann_MudDischarged_Volume%Array(kloc)= Ann_MudDischarged_Volume%Array(kloc)+deltaV + !Ann_Mud_Forehead_X%Array(kloc)= Xend_PipeSection(NoPipeSections) + !Ann_Mud_Forehead_section%Array(kloc)= NoPipeSections + !Ann_Mud_Backhead_X%Array(kloc)= no change + !Ann_Mud_Backhead_section%Array(kloc)= no change + Ann_RemainedVolume_in_LastSection%Array(kloc)= (0.0) + Ann_EmptyVolume_inBackheadLocation%Array(kloc)= (0.0) + endif + + + + + + + endif + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + end subroutine FillingWell_By_BellNipple \ No newline at end of file diff --git a/Equipments/MudSystem/Kick_Expansion_and_Contraction.f90 b/Equipments/MudSystem/Kick_Expansion_and_Contraction.f90 new file mode 100644 index 0000000..277aa6f --- /dev/null +++ b/Equipments/MudSystem/Kick_Expansion_and_Contraction.f90 @@ -0,0 +1,235 @@ +subroutine Kick_Expansion ! is called in subroutine CirculationCodeSelect + + Use GeoElements_FluidModule + USE CMudPropertiesVariables + USE MudSystemVARIABLES + USE Pump_VARIABLES + use CDrillWatchVariables + use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + USE sROP_Other_Variables + USE sROP_Variables + USE CReservoirVariables + USE KickVARIABLES + + + implicit none + real(8) ExpansionVolume + + + !write(*,*) 'Kick Expansion' + +ExpansionVolume= GasPocketDeltaVol%Array(NewInfluxNumber - KickNumber + 1) * 7.48 + +IF ( Kickexpansion_DueToMudLost ) ExpansionVolume = ((Qlost/60.0d0)*DeltaT_Mudline) + + +!============================== kick zire mate bashad ============================== + + if (Op_KickLoc > 0 .and. Ann_KickLoc==0) then ! .and. Op_KickLoc /= Op_MudOrKick%Length ()) then + + !write(*,*) 'expansion (1)' + + + Op_MudDischarged_Volume%Array(Op_KickLoc)= Op_MudDischarged_Volume%Array(Op_KickLoc)+ ExpansionVolume + + + !if (MUD(4)%Q > 0.) then + ! + ! if (abs(ChokeLine_Density%Array(1)-Ann_Density%Last())< DensityMixTol) then + ! ChokeLine_MudDischarged_Volume%Array(1)= ChokeLine_MudDischarged_Volume%Array(1) + ExpansionVolume + ! else + ! call ChokeLine_Density%AddToFirst (Ann_Density%Last()) + ! call ChokeLine_MudDischarged_Volume%AddToFirst (ExpansionVolume) ! farz kardam ke hameye hajm ro ba yek density ezafe konim + ! call ChokeLine_Mud_Forehead_X%AddToFirst (0.0d0) + ! call ChokeLine_Mud_Forehead_section%AddToFirst (1) + ! call ChokeLine_Mud_Backhead_X%AddToFirst (0.0d0) + ! call ChokeLine_Mud_Backhead_section%AddToFirst (1) + ! call ChokeLine_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + ! call ChokeLine_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + ! call ChokeLine_MudOrKick%AddToFirst (Ann_MudOrKick%Last()) + ! endif + ! + !endif + + endif +!======================================================================================== + + + +!============================= foreheade dar fazaye annulus bashad =========================== + ! agar kick be entehaye annulus reside bashe, expansion ra emaal nemikonim + if (Ann_KickLoc > 0) then ! .and. Ann_KickLoc /= Ann_MudOrKick%Length ()) then + !write(*,*) 'expansion (2)' + + !if ( sum(Ann_MudDischarged_Volume%Array(1:Ann_KickLoc)) + ExpansionVolume > sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) ) then ! agar khast az mate rad kone + ! ExpansionVolume= sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) - sum(Ann_MudDischarged_Volume%Array(1:Ann_KickLoc)) + !endif + + Ann_MudDischarged_Volume%Array(Ann_KickLoc)= Ann_MudDischarged_Volume%Array(Ann_KickLoc)+ ExpansionVolume + + !if (MUD(4)%Q > 0.) then + ! + ! + ! if (abs(ChokeLine_Density%Array(1)-Ann_Density%Last())< DensityMixTol) then + ! ChokeLine_MudDischarged_Volume%Array(1)= ChokeLine_MudDischarged_Volume%Array(1) + ExpansionVolume + ! else + ! call ChokeLine_Density%AddToFirst (Ann_Density%Last()) + ! call ChokeLine_MudDischarged_Volume%AddToFirst (ExpansionVolume) ! farz kardam ke hameye hajm ro ba yek density ezafe konim + ! call ChokeLine_Mud_Forehead_X%AddToFirst (0.0d0) + ! call ChokeLine_Mud_Forehead_section%AddToFirst (1) + ! call ChokeLine_Mud_Backhead_X%AddToFirst (0.0d0) + ! call ChokeLine_Mud_Backhead_section%AddToFirst (1) + ! call ChokeLine_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + ! call ChokeLine_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + ! call ChokeLine_MudOrKick%AddToFirst (Ann_MudOrKick%Last()) + ! endif + ! + !endif + + endif +!======================================================================================== + + + + + +!=============================== foreheade dar choke line bashad ============================= + + if (ChokeLine_KickLoc > 0 .and. Ann_KickLoc==0) then + + ChokeLine_MudDischarged_Volume%Array(ChokeLine_KickLoc)= ChokeLine_MudDischarged_Volume%Array(ChokeLine_KickLoc)+ ExpansionVolume + + endif + + +!======================================================================================== + + !write(*,*) 'Expansion======0' + ! !do imud=1, Ann_MudDischarged_Volume%Length() + ! ! write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + ! !enddo + ! + ! do imud=1, Op_MudDischarged_Volume%Length() + ! write(*,*) 'Op:', imud, Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) ,Op_MudOrKick%Array(imud) + ! enddo + !write(*,*) '0======expansion' + + + + end subroutine Kick_Expansion + + + + + +subroutine Kick_Contraction ! is called in subroutine CirculationCodeSelect + + Use GeoElements_FluidModule + USE CMudPropertiesVariables + USE MudSystemVARIABLES + USE Pump_VARIABLES + use CDrillWatchVariables + use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + USE sROP_Other_Variables + USE sROP_Variables + USE CReservoirVariables + USE KickVARIABLES + USE CError + + + implicit none + + integer jelement, jmud, jsection,ielement,i + integer jopelement,jopmud,jopsection + real(8) ContractionVolume + + +!********************************************************* + +! contraction is always with pump flow + +!********************************************************* + !write(*,*) 'Kick Contraction' + + !MUD(2)%Q= Total_Pump_Gpm + StringFlowRate= MUD(2)%Q + AnnulusFlowRate= MUD(2)%Q + + if (NewPipeFilling == 0) then + StringFlowRate= 0. + AnnulusFlowRate= 0. + endif + + + + + + !if (WellHeadIsOpen) then + ContractionVolume= - GasPocketDeltaVol%Array(NewInfluxNumber - KickNumber + 1) * 7.48 + !else + !ContractionVolume = (StringFlowRate/60.0d0)*DeltaT_Mudline + DeltaVolumePipe + if (KickNumber == 1 .and. WellHeadIsOpen==.false.) ContractionVolume = ContractionVolume + (StringFlowRate/60.0d0)*DeltaT_Mudline + DeltaVolumePipe + !endif + + +!************************************************************************************************************************************************************************** + + ! pump mud is added in "pump&TripIn" code + + IF (Op_KickLoc > 0 .and. Ann_KickLoc == 0) then ! All of kick is under bit (iloc == 1) + + Op_MudDischarged_Volume%Array(Op_KickLoc)= Op_MudDischarged_Volume%Array(Op_KickLoc) - ( ContractionVolume ) + + ELSE IF (Op_KickLoc == 0 .AND. Ann_KickLoc > 0 .AND. ChokeLine_KickLoc == 0) THEN ! All of kick is an Annulus (iloc == 1) + + Ann_MudDischarged_Volume%Array(Ann_KickLoc)= Ann_MudDischarged_Volume%Array(Ann_KickLoc) - ( ContractionVolume ) + + ELSE IF (Ann_KickLoc == 0 .AND. ChokeLine_KickLoc > 0) THEN ! kick is in chokeline only + + ChokeLine_MudDischarged_Volume%Array(ChokeLine_KickLoc)= ChokeLine_MudDischarged_Volume%Array(ChokeLine_KickLoc) - ( ContractionVolume ) + + ELSE IF (Op_KickLoc > 0 .AND. Ann_KickLoc > 0) THEN ! Kick is around bit (iloc==2) + + if (Ann_MudDischarged_Volume%Array(1) > ContractionVolume ) then + + Ann_MudDischarged_Volume%Array(1)= Ann_MudDischarged_Volume%Array(1) - ( ContractionVolume ) + + + elseif (Op_MudDischarged_Volume%Last() > ContractionVolume ) then + + Op_MudDischarged_Volume%Array(Op_MudDischarged_Volume%Length())= Op_MudDischarged_Volume%Array(Op_MudDischarged_Volume%Length()) - ( ContractionVolume ) + + else + Call ErrorStop ('kick contraction error 1') + endif + + ELSE IF (Ann_KickLoc > 0 .AND. ChokeLine_KickLoc > 0) THEN + + if (ChokeLine_MudDischarged_Volume%Array(1) > ContractionVolume ) then + + ChokeLine_MudDischarged_Volume%Array(1) = ChokeLine_MudDischarged_Volume%Array(1) - ( ContractionVolume ) + + + elseif (Ann_MudDischarged_Volume%Last() > ContractionVolume ) then + + Ann_MudDischarged_Volume%Array(Ann_MudDischarged_Volume%Length())= Ann_MudDischarged_Volume%Array(Ann_MudDischarged_Volume%Length()) - ( ContractionVolume ) + + else + Call ErrorStop ('kick contraction error 2') + endif + + + + endif + + ! write(*,*) 'contract======0' + !! !do imud=1, Ann_MudDischarged_Volume%Length() + !! ! write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + !! !enddo + !! + ! do imud=1, Op_MudDischarged_Volume%Length() + ! write(*,*) 'Op:', imud, Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) ,Op_MudOrKick%Array(imud) + ! enddo + !write(*,*) '0======contract' + +end subroutine Kick_Contraction diff --git a/Equipments/MudSystem/Kick_Influx.f90 b/Equipments/MudSystem/Kick_Influx.f90 new file mode 100644 index 0000000..c29d54a --- /dev/null +++ b/Equipments/MudSystem/Kick_Influx.f90 @@ -0,0 +1,215 @@ +subroutine Kick_Influx ! is called in subroutine CirculationCodeSelect + + Use GeoElements_FluidModule + USE CMudPropertiesVariables + USE MudSystemVARIABLES + USE Pump_VARIABLES + use CDrillWatchVariables + use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + USE sROP_Other_Variables + USE sROP_Variables + Use KickVariables + + + implicit none + + +!===========================================================WELL============================================================ +!===========================================================WELL============================================================ + + !write(*,*) 'Kick Influx' + + +!=================== Bottom Hole Kick Influx ENTRANCE(due to Kick) =================== + + Kick_Density= 2 + NewInflux_Density= Kick_Density + + + if ( NewInfluxElementCreated==0 ) then ! new kick is pumped- (it is set to zero in sheykh subroutine after a new kick influx) + call Op_Density%AddToFirst (NewInflux_Density) + call Op_MudDischarged_Volume%AddToFirst (0.0d0) + call Op_Mud_Forehead_X%AddToFirst (Xstart_OpSection(1)) + call Op_Mud_Forehead_section%AddToFirst (1) + call Op_Mud_Backhead_X%AddToFirst (Xstart_OpSection(1)) + call Op_Mud_Backhead_section%AddToFirst (1) + call Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Op_MudOrKick%AddToFirst (NewInfluxNumber) ! KickNumber= NewInfluxNumber + + + NewInfluxElementCreated= 1 + endif + + + Op_MudDischarged_Volume%Array(1)= Op_MudDischarged_Volume%Array(1)+ ((GasKickPumpFlowRate/60.0d0)*DeltaT_Mudline) !(gal) due to KickFlux + !write(*,*) 'kick volume ok=' , Op_MudDischarged_Volume%Array(1) + + + + end subroutine Kick_Influx + + + + + + + + + + + +subroutine Instructor_CirculationMud_Edit ! is called in subroutine CirculationCodeSelect + + Use KickVariables + Use MudSystemVARIABLES + USE TD_DrillStemComponents + Use CUnityInputs + Use CUnityOutputs + USE CKellyConnectionEnumVariables + USE UTUBEVARS + use sROP_Variables + use sROP_Other_Variables + use CDownHoleVariables + + + implicit none + + + + + + if ( AnnDrillMud == .true. .and. (Rate_of_Penetration>0. .and. DeltaVolumeOp>0.0) ) then + + do imud= 1, Ann_Density%Length() + + if ( Ann_MudOrKick%Array(imud) == 0 ) then + Ann_Density%Array(imud)= (St_Density%Last() * AnnulusFlowRate + 141.4296E-4*Rate_of_Penetration*Diameter_of_Bit**2)/(AnnulusFlowRate+6.7995E-4*Rate_of_Penetration*Diameter_of_Bit**2) + Ann_CuttingMud%Array(imud)= 1 + endif + + enddo + + endif + + + if ( AnnCirculateMud == .true. ) then + + do imud= 1, Ann_Density%Length() + + if ( Ann_MudOrKick%Array(imud) == 0 ) then + Ann_Density%Array(imud)= ActiveTankDensity + Ann_CuttingMud%Array(imud)= 0 + endif + + enddo + + do imud= 1, St_Density%Length() + + St_Density%Array(imud)= ActiveTankDensity + + enddo + + endif + + + + + end subroutine Instructor_CirculationMud_Edit + + + +subroutine ShoeLostSub ! is called in subroutine CirculationCodeSelect + + Use KickVariables + Use MudSystemVARIABLES + USE TD_DrillStemComponents + Use CUnityInputs + Use CUnityOutputs + USE CKellyConnectionEnumVariables + USE UTUBEVARS + use sROP_Variables + use sROP_Other_Variables + use CDownHoleVariables + use CShoeVariables + USE PressureDisplayVARIABLES + Use CWarningsVariables + + + implicit none + + ShoeLost= .false. + Kickexpansion_DueToMudLost= .false. + + ShoeMudPressure= PressureGauges(5) + + + UGBOSuccessionCounter = UGBOSuccessionCounter + 1 + !write(*,*) 'check point 1' + + if (InactiveFracture == .FALSE. .AND. ((ShoeMudPressure >= FormationLostPressure) .or. ShoeFractured )) then + !write(*,*) 'check point 2 ,UGBOSuccessionCounter' , UGBOSuccessionCounter + + ! if ShoeFractured changed to true , then time counter is not needed more + if ( UGBOSuccessionCounter /= UGBOSuccessionCounterOld+1 .and. ShoeFractured==.false. ) then + UGBOSuccessionCounter = 0 ! also in starup + UGBOSuccessionCounterOld = 0 ! also in starup + return + else + UGBOSuccessionCounterOld= UGBOSuccessionCounter + endif + + if ( UGBOSuccessionCounter < 10 .and. ShoeFractured==.false.) then + return + endif + + !write(*,*) 'check point 3 ,UGBOSuccessionCounter' , UGBOSuccessionCounter + + + + ShoeFractured= .true. + + ShoeMudViscosity= MAX(ShoeMudViscosity, 12.d0) + !write(*,*) 'ShoeMudDensity , ShoeMudViscosity' , ShoeMudDensity , ShoeMudViscosity + ShoeLostCoef = 10.**(-8) * 1.15741d0 * 7.08d0 * 1000000.d0 * 1.d0 * ShoeMudDensity / & + (ShoeMudViscosity * LOG(10000.d0)) + !write(*,*) 'lost parameters 1' , ShoeMudPressure , FormationLostPressure + Qlost = MAX( (ShoeLostCoef * (ShoeMudPressure - (FormationLostPressure/2.0))) , 0.d0 ) + if (Qlost > 0.0) then + ShoeLost= .true. + else + ShoeLost= .false. + endif + + !write(*,*) 'Qlost=' , Qlost, ShoeMudPressure, FormationLostPressure + call Activate_UndergroundBlowout() + + + do imud= 1, Ann_Mud_Forehead_X%Length() + + IF ( ShoeLost .and. ShoeDepth < Ann_Mud_Backhead_X%Array(imud) .and. ShoeDepth >= Ann_Mud_Forehead_X%Array(imud) & + .and. Ann_MudOrKick%Array(imud) == 0 .and. WellHeadIsOpen == .FALSE. ) then + + Kickexpansion_DueToMudLost= .true. + write(*,*) 'Kickexpansion_DueToMudLost' + + EXIT + + ENDIF + + + enddo + + + + endif + + if (UndergroundBlowout == .false.) ShoeLost= .false. + + + + end subroutine ShoeLostSub + + + + \ No newline at end of file diff --git a/Equipments/MudSystem/Kick_Migration.f90 b/Equipments/MudSystem/Kick_Migration.f90 new file mode 100644 index 0000000..377589d --- /dev/null +++ b/Equipments/MudSystem/Kick_Migration.f90 @@ -0,0 +1,1181 @@ +subroutine Kick_Migration ! is called in subroutine CirculationCodeSelect + + Use GeoElements_FluidModule + USE CMudPropertiesVariables + USE MudSystemVARIABLES + USE Pump_VARIABLES + use CDrillWatchVariables + use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + USE sROP_Other_Variables + USE sROP_Variables + USE CReservoirVariables + USE KickVARIABLES + + + implicit none + + integer jelement, jmud, jsection,ielement,i + integer jopelement,jopmud,jopsection,CuttingValue + + + !MUD(2)%Q= Total_Pump_Gpm + !StringFlowRate= MUD(2)%Q + !AnnulusFlowRate= MUD(2)%Q + ! + !if (NewPipeFilling == 0) then + ! StringFlowRate= 0. + ! AnnulusFlowRate= 0. + !endif + + !StringFlowRateFinal= StringFlowRate + !AnnulusFlowRateFinal= AnnulusFlowRate + + + + !write(*,*) 'MUD(2)%Q=====' , MUD(2)%Q + !write(*,*) 'Kick Migration,NewInfluxNumber:' , NewInfluxNumber + + + + !FirstSetKickMigration + !write(*,*) 'NewInfluxNumber=' , NewInfluxNumber +DO KickNumber= NewInfluxNumber-NoGasPocket+1 , NewInfluxNumber + !write(*,*) 'KickNumber=' , KickNumber + + if (KickFlux .AND. NOT(KickOffBottom) .and. KickNumber == NewInfluxNumber) cycle + + if ( KickNumber == Ann_MudOrKick%Last() ) cycle ! when the last element in Annulus is kick, Migration is not called + + !write(*,*) 'Migration will be done for,KickNumber=' ,KickNumber + +!=================== Bottom Hole ENTRANCE(due to Kick) =================== + + !KickDx= (AutoMigrationRate/60.)*DeltaT_Mudline !3600 (ft/min)= 6 ft set in start up + + + Op_KickLoc= 0 + Ann_KickLoc= 0 + ChokeLine_KickLoc= 0 + + + do i = 1, Op_MudOrKick%Length () + if (Op_MudOrKick%Array(i) == KickNumber) then + Op_KickLoc = i + exit + endif + end do + + do i = 1, Ann_MudOrKick%Length () + if (Ann_MudOrKick%Array(i) == KickNumber) then + Ann_KickLoc = i + exit + endif + end do + + do i = 1, ChokeLine_MudOrKick%Length () + if (ChokeLine_MudOrKick%Array(i) == KickNumber) then + ChokeLine_KickLoc = i + exit + endif + end do + + !write(*,*) 'Op_KickLoc=' , Op_KickLoc + !write(*,*) 'Ann_KickLoc=' , Ann_KickLoc + !!write(*,*) 'ChokeLine_KickLoc=' , ChokeLine_KickLoc + ! + ! + !write(*,*) 'Op_MudOrKick%Length ()=' , Op_MudOrKick%Length () + ! + ! + + + + +!============================== foreheade kick be mate reside bashad *3 ============================== + + if (Op_KickLoc == Op_MudOrKick%Length () .and. Ann_KickLoc==0 ) then + !write(*,*) '****3' + + iloc= 2 + + KickDv= Area_OpSectionFt(Op_Mud_Forehead_section%Array(Op_KickLoc)) * KickDx * 7.48051948d0 ! ft^3 to gal + + + MinKickDv= min( KickDv,Ann_MudDischarged_Volume%Array (1), Op_MudDischarged_Volume%Last () ) + + NewDensity= Ann_Density%Array (1) + NewVolume= MinKickDv + + if ( MinKickDv == KickDv ) then !eleman bala sari baghi mimund, paeeni(kick) ham baghi mimund + + Ann_MudDischarged_Volume%Array (1)= Ann_MudDischarged_Volume%Array (1) - MinKickDv + + call Ann_Density%AddToFirst (Op_Density%Last()) + call Ann_MudDischarged_Volume%AddToFirst (MinKickDv) + call Ann_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) + call Ann_Mud_Forehead_section%AddToFirst (F_StringIntervalCounts+1) + call Ann_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) + call Ann_Mud_Backhead_section%AddToFirst (F_StringIntervalCounts+1) + call Ann_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Ann_MudOrKick%AddToFirst (KickNumber) + call Ann_CuttingMud%AddToFirst (0) + + Op_MudDischarged_Volume%Array (Op_KickLoc)= Op_MudDischarged_Volume%Array (Op_KickLoc) - MinKickDv + + ! backheade kick zire mate bashad + if (Op_KickLoc > 1) then + !if ( Op_Density%Array (Op_KickLoc-1) /= NewDensity ) then + + if ( ABS(Op_Density%Array (Op_KickLoc-1) - NewDensity) >= DensityMixTol ) then + + + Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + + call Op_Density%AddTo (Op_KickLoc,NewDensity) + call Op_MudDischarged_Volume%AddTo (Op_KickLoc,NewVolume) + call Op_Mud_Forehead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + call Op_Mud_Forehead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + call Op_Mud_Backhead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + call Op_Mud_Backhead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + call Op_RemainedVolume_in_LastSection%AddTo (Op_KickLoc,0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddTo (Op_KickLoc,0.0d0) + call Op_MudOrKick%AddTo (Op_KickLoc,0) + + + else !Op_Density%Array (imudKick-1) == NewDensity + + Op_Density%Array(Op_KickLoc-1)= (Op_Density%Array(Op_KickLoc-1)*Op_MudDischarged_Volume%Array(Op_KickLoc-1)+NewDensity*NewVolume)/(Op_MudDischarged_Volume%Array(Op_KickLoc-1)+NewVolume) + Op_MudDischarged_Volume%Array(Op_KickLoc-1)= Op_MudDischarged_Volume%Array(Op_KickLoc-1) + NewVolume + + endif + else !if Op_KickLoc == 1 (*****Migration Start*****) *3-1=============================== + !write(*,*) '****3-1' + + + call Op_Density%AddToFirst (NewDensity) + call Op_MudDischarged_Volume%AddToFirst (NewVolume) + call Op_Mud_Forehead_X%AddToFirst (Old_KickBackHead_X) + call Op_Mud_Forehead_section%AddToFirst (Old_KickBackHead_Section) + call Op_Mud_Backhead_X%AddToFirst (Old_KickBackHead_X) + call Op_Mud_Backhead_section%AddToFirst (Old_KickBackHead_Section) + call Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Op_MudOrKick%AddToFirst (0) + + endif + + + + elseif ( MinKickDv == Ann_MudDischarged_Volume%Array (1) ) then ! eleman bala sari baghi nemimund + + Ann_Density%Array(1)= Op_Density%Last() + Ann_MudOrKick%Array(1)= KickNumber + + Op_MudDischarged_Volume%Array (Op_KickLoc)= Op_MudDischarged_Volume%Array (Op_KickLoc) - MinKickDv + + ! backheade kick zire mate bashad + if (Op_KickLoc > 1) then + + !if ( Op_Density%Array (Op_KickLoc-1) /= NewDensity ) then + + if ( ABS(Op_Density%Array (Op_KickLoc-1) - NewDensity) >= DensityMixTol ) then + + + Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + + call Op_Density%AddTo (Op_KickLoc,NewDensity) + call Op_MudDischarged_Volume%AddTo (Op_KickLoc,NewVolume) + call Op_Mud_Forehead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + call Op_Mud_Forehead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + call Op_Mud_Backhead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + call Op_Mud_Backhead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + call Op_RemainedVolume_in_LastSection%AddTo (Op_KickLoc,0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddTo (Op_KickLoc,0.0d0) + call Op_MudOrKick%AddTo (Op_KickLoc,0) + + + else !Op_Density%Array (imudKick-1) == NewDensity + + Op_Density%Array(Op_KickLoc-1)= (Op_Density%Array(Op_KickLoc-1)*Op_MudDischarged_Volume%Array(Op_KickLoc-1)+NewDensity*NewVolume)/(Op_MudDischarged_Volume%Array(Op_KickLoc-1)+NewVolume) + Op_MudDischarged_Volume%Array(Op_KickLoc-1)= Op_MudDischarged_Volume%Array(Op_KickLoc-1) + NewVolume + + endif + + else !if Op_KickLoc == 1 (*****Migration Start*****) *3-2=============================== + !write(*,*) '****3-2' + + + call Op_Density%AddToFirst (NewDensity) + call Op_MudDischarged_Volume%AddToFirst (NewVolume) + call Op_Mud_Forehead_X%AddToFirst (Old_KickBackHead_X) + call Op_Mud_Forehead_section%AddToFirst (Old_KickBackHead_Section) + call Op_Mud_Backhead_X%AddToFirst (Old_KickBackHead_X) + call Op_Mud_Backhead_section%AddToFirst (Old_KickBackHead_Section) + call Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Op_MudOrKick%AddToFirst (0) + + endif + + + ! + elseif ( MinKickDv == Op_MudDischarged_Volume%Last () ) then ! eleman balaee baghi mimund, kick hazf mishod + + Ann_MudDischarged_Volume%Array (1)= Ann_MudDischarged_Volume%Array (1) - MinKickDv + + call Ann_Density%AddToFirst (Op_Density%Last()) + call Ann_MudDischarged_Volume%AddToFirst (MinKickDv) + call Ann_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) + call Ann_Mud_Forehead_section%AddToFirst (F_StringIntervalCounts+1) + call Ann_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) + call Ann_Mud_Backhead_section%AddToFirst (F_StringIntervalCounts+1) + call Ann_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Ann_MudOrKick%AddToFirst (KickNumber) + call Ann_CuttingMud%AddToFirst (0) + + + Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + + call Op_MudDischarged_Volume%Remove (Op_KickLoc) + call Op_Mud_Backhead_X%Remove (Op_KickLoc) + call Op_Mud_Backhead_section%Remove (Op_KickLoc) + call Op_Mud_Forehead_X%Remove (Op_KickLoc) + call Op_Mud_Forehead_section%Remove (Op_KickLoc) + call Op_Density%Remove (Op_KickLoc) + call Op_RemainedVolume_in_LastSection%Remove (Op_KickLoc) + call Op_EmptyVolume_inBackheadLocation%Remove (Op_KickLoc) + call Op_MudOrKick%Remove (Op_KickLoc) + + + ! backheade kick zire mate bashad + if (Op_KickLoc > 1) then + !if ( Op_Density%Array (Op_KickLoc-1) /= NewDensity ) then + + if ( ABS(Op_Density%Array (Op_KickLoc-1) - NewDensity) >= DensityMixTol ) then + + + + call Op_Density%AddTo (Op_KickLoc,NewDensity) + call Op_MudDischarged_Volume%AddTo (Op_KickLoc,NewVolume) + call Op_Mud_Forehead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + call Op_Mud_Forehead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + call Op_Mud_Backhead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + call Op_Mud_Backhead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + call Op_RemainedVolume_in_LastSection%AddTo (Op_KickLoc,0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddTo (Op_KickLoc,0.0d0) + call Op_MudOrKick%AddTo (Op_KickLoc,0) + + + else !Op_Density%Array (imudKick-1) == NewDensity + + Op_Density%Array(Op_KickLoc-1)= (Op_Density%Array(Op_KickLoc-1)*Op_MudDischarged_Volume%Array(Op_KickLoc-1)+NewDensity*NewVolume)/(Op_MudDischarged_Volume%Array(Op_KickLoc-1)+NewVolume) + Op_MudDischarged_Volume%Array(Op_KickLoc-1)= Op_MudDischarged_Volume%Array(Op_KickLoc-1) + NewVolume + + endif + + else !if Op_KickLoc == 1 (*****Migration Start*****) *3-3=============================== + !write(*,*) '****3-3' + + call Op_Density%AddToFirst (NewDensity) + call Op_MudDischarged_Volume%AddToFirst (NewVolume) + call Op_Mud_Forehead_X%AddToFirst (Old_KickBackHead_X) + call Op_Mud_Forehead_section%AddToFirst (Old_KickBackHead_Section) + call Op_Mud_Backhead_X%AddToFirst (Old_KickBackHead_X) + call Op_Mud_Backhead_section%AddToFirst (Old_KickBackHead_Section) + call Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Op_MudOrKick%AddToFirst (0) + + endif + + + + + endif + + + endif + +!======================================================================================== + + +!============================== foreheade kick be mate reside bashad *3 with pump ============================== + +! if (Op_KickLoc == Op_MudOrKick%Length () .and. Ann_KickLoc==0 .and. AnnulusFlowRate /= 0.0 ) then +! write(*,*) '****3 with pump' +! +! KickMigration_2SideBit= .true. +! !iloc= 2 +! +! !KickDv= Area_OpSectionFt(Op_Mud_Forehead_section%Array(Op_KickLoc)) * KickDx * 7.48051948 ! ft^3 to gal +! +!!farz mikonam baraye in yek iteration kick az OP hazf nemishavad va hajme aan bishtar az pump flow ast +! +! KickDv= ((AnnulusFlowRate/60.0d0)*DeltaT_Mudline) +! +! call Ann_Density%AddToFirst (Kick_Density) +! call Ann_MudDischarged_Volume%AddToFirst (KickDv) +! call Ann_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) +! call Ann_Mud_Forehead_section%AddToFirst (F_StringIntervalCounts+1) +! call Ann_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) +! call Ann_Mud_Backhead_section%AddToFirst (F_StringIntervalCounts+1) +! call Ann_RemainedVolume_in_LastSection%AddToFirst (0.0d0) +! call Ann_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) +! call Ann_MudOrKick%AddToFirst (KickNumber) +! call Ann_CuttingMud%AddToFirst (0) +! +! Op_MudDischarged_Volume%Array (Op_KickLoc)= Op_MudDischarged_Volume%Array (Op_KickLoc) - MinKickDv +! +! ! +! !if ( ((AnnulusFlowRate/60.)*DeltaT_Mudline) >= KickDv ) then ! sorate pump bishtar az kick bashad +! ! +! ! KickDv= ((AnnulusFlowRate/60.)*DeltaT_Mudline) +! +! +! +! ! BackHead: +! if ( Op_Density%Array (Op_KickLoc-1) /= St_Density%Last() ) then +! +! +! Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) +! Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) +! +! call Op_Density%AddTo (Op_KickLoc,St_Density%Last()) +! call Op_MudDischarged_Volume%AddTo (Op_KickLoc,KickDv) +! call Op_Mud_Forehead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) +! call Op_Mud_Forehead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) +! call Op_Mud_Backhead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) +! call Op_Mud_Backhead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) +! call Op_RemainedVolume_in_LastSection%AddTo (Op_KickLoc,0.0d0) +! call Op_EmptyVolume_inBackheadLocation%AddTo (Op_KickLoc,0.0d0) +! call Op_MudOrKick%AddTo (Op_KickLoc,0) +! +! +! else !Op_Density%Array (imudKick-1) == NewDensity +! +! Op_MudDischarged_Volume%Array (Op_KickLoc-1)= Op_MudDischarged_Volume%Array (Op_KickLoc-1) + KickDv +! +! endif +! +! +! +! +! endif + +!======================================================================================== + + +!============================= tamame kick zire mate bashad *1 ================================ + if ( Op_KickLoc>0 .and. Op_KickLoc < Op_MudOrKick%Length () ) then + !write(*,*) '****1' + !iloc= 1 + + KickDv= Area_OpSectionFt(Op_Mud_Forehead_section%Array(Op_KickLoc)) * KickDx * 7.48051948d0 ! ft^3 to gal + + + Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + + if ( KickDv < Op_MudDischarged_Volume%Array (Op_KickLoc+1) ) then !eleman bala sari baghi mimund + + !write(*,*) 'cond 11111111111111' + + Op_MudDischarged_Volume%Array (Op_KickLoc+1)= Op_MudDischarged_Volume%Array (Op_KickLoc+1) - KickDv + + NewDensity= Op_Density%Array (Op_KickLoc+1) + NewVolume= KickDv + + else !KickDv > Op_MudDischarged_Volume%Array (imudKick+1) eleman baghi nemimund + + ! write(*,*) 'cond 22222222222222222' + + + KickDv= Op_MudDischarged_Volume%Array (Op_KickLoc+1) + + NewVolume= KickDv + NewDensity= Op_Density%Array (Op_KickLoc+1) + + + + + call Op_MudDischarged_Volume%Remove (Op_KickLoc+1) + call Op_Mud_Backhead_X%Remove (Op_KickLoc+1) + call Op_Mud_Backhead_section%Remove (Op_KickLoc+1) + call Op_Mud_Forehead_X%Remove (Op_KickLoc+1) + call Op_Mud_Forehead_section%Remove (Op_KickLoc+1) + call Op_Density%Remove (Op_KickLoc+1) + call Op_RemainedVolume_in_LastSection%Remove (Op_KickLoc+1) + call Op_EmptyVolume_inBackheadLocation%Remove (Op_KickLoc+1) + call Op_MudOrKick%Remove (Op_KickLoc+1) + + endif + + ! backheade kick zire mate bashad + if (Op_KickLoc > 1) then + !if ( Op_Density%Array (Op_KickLoc-1) /= NewDensity ) then + + if ( ABS(Op_Density%Array (Op_KickLoc-1) - NewDensity) >= DensityMixTol ) then + + + + + call Op_Density%AddTo (Op_KickLoc,NewDensity) + call Op_MudDischarged_Volume%AddTo (Op_KickLoc,NewVolume) + call Op_Mud_Forehead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + call Op_Mud_Forehead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + call Op_Mud_Backhead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + call Op_Mud_Backhead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + call Op_RemainedVolume_in_LastSection%AddTo (Op_KickLoc,0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddTo (Op_KickLoc,0.0d0) + call Op_MudOrKick%AddTo (Op_KickLoc,0) + + else !Op_Density%Array (Op_KickLoc-1) == NewDensity + + Op_Density%Array(Op_KickLoc-1)= (Op_Density%Array(Op_KickLoc-1)*Op_MudDischarged_Volume%Array(Op_KickLoc-1)+NewDensity*NewVolume)/(Op_MudDischarged_Volume%Array(Op_KickLoc-1)+NewVolume) + Op_MudDischarged_Volume%Array(Op_KickLoc-1)= Op_MudDischarged_Volume%Array(Op_KickLoc-1) + NewVolume + + endif + else !if Op_KickLoc == 1 (*****Migration Start*****) *5-1=============================== + !write(*,*) '****5-1' + + call Op_Density%AddToFirst (NewDensity) + call Op_MudDischarged_Volume%AddToFirst (NewVolume) + call Op_Mud_Forehead_X%AddToFirst (Old_KickBackHead_X) + call Op_Mud_Forehead_section%AddToFirst (Old_KickBackHead_Section) + call Op_Mud_Backhead_X%AddToFirst (Old_KickBackHead_X) + call Op_Mud_Backhead_section%AddToFirst (Old_KickBackHead_Section) + call Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Op_MudOrKick%AddToFirst (0) + + endif + + + endif + +!======================================================================================== + + !write(*,*) 'a) density and cutting:' , Ann_Density%Length() , Ann_CuttingMud%Length() + + +!=========================== tamame kick balaye mate bashad *2 ================================== + + if ( Ann_KickLoc > 0 .and. Op_KickLoc==0 ) then + !write(*,*) '****2' + + !iloc= 1 + + KickDv= Area_PipeSectionFt(Ann_Mud_Forehead_section%Array(Ann_KickLoc)) * KickDx * 7.48051948d0 ! ft^3 to gal + + NewDensity= Ann_Density%Array (Ann_KickLoc+1) + NewVolume= KickDv + CuttingValue= Ann_CuttingMud%Array (Ann_KickLoc+1) + + if ( KickDv < Ann_MudDischarged_Volume%Array (Ann_KickLoc+1) ) then !eleman bala sari baghi mimund + + Ann_MudDischarged_Volume%Array (Ann_KickLoc+1)= Ann_MudDischarged_Volume%Array (Ann_KickLoc+1) - KickDv + + else !KickDv > Ann_MudDischarged_Volume%Array (imudKick+1) eleman baghi nemimund + + KickDv= Ann_MudDischarged_Volume%Array (Ann_KickLoc+1) + NewVolume= KickDv + + call Ann_MudDischarged_Volume%Remove (Ann_KickLoc+1) + call Ann_Mud_Backhead_X%Remove (Ann_KickLoc+1) + call Ann_Mud_Backhead_section%Remove (Ann_KickLoc+1) + call Ann_Mud_Forehead_X%Remove (Ann_KickLoc+1) + call Ann_Mud_Forehead_section%Remove (Ann_KickLoc+1) + call Ann_Density%Remove (Ann_KickLoc+1) + call Ann_RemainedVolume_in_LastSection%Remove (Ann_KickLoc+1) + call Ann_EmptyVolume_inBackheadLocation%Remove (Ann_KickLoc+1) + call Ann_MudOrKick%Remove (Ann_KickLoc+1) + call Ann_CuttingMud%Remove (Ann_KickLoc+1) + + endif + + ! backheade kick balaye mate bashad + + if (Ann_KIckLoc > 1) then + !if ( Ann_Density%Array (Ann_KickLoc-1) /= NewDensity ) then + + if ( ABS(Ann_Density%Array (Ann_KickLoc-1) - NewDensity) >= DensityMixTol ) then + + Old_KickBackHead_X= Ann_Mud_Backhead_X%Array (Ann_KickLoc) + Old_KickBackHead_Section= Ann_Mud_Backhead_section%Array (Ann_KickLoc) + + + call Ann_Density%AddTo (Ann_KickLoc,NewDensity) + call Ann_MudDischarged_Volume%AddTo (Ann_KickLoc,NewVolume) + call Ann_Mud_Forehead_X%AddTo (Ann_KickLoc,Old_KickBackHead_X) + call Ann_Mud_Forehead_section%AddTo (Ann_KickLoc,Old_KickBackHead_Section) + call Ann_Mud_Backhead_X%AddTo (Ann_KickLoc,Old_KickBackHead_X) + call Ann_Mud_Backhead_section%AddTo (Ann_KickLoc,Old_KickBackHead_Section) + call Ann_RemainedVolume_in_LastSection%AddTo (Ann_KickLoc,0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddTo (Ann_KickLoc,0.0d0) + call Ann_MudOrKick%AddTo (Ann_KickLoc,0) + call Ann_CuttingMud%AddTo (Ann_KickLoc,0) + + else !Op_Density%Array (imudKick-1) == NewDensity + + Ann_Density%Array(Ann_KickLoc-1)= (Ann_Density%Array(Ann_KickLoc-1)*Ann_MudDischarged_Volume%Array(Ann_KickLoc-1)+NewDensity*NewVolume)/(Ann_MudDischarged_Volume%Array(Ann_KickLoc-1)+NewVolume) + Ann_MudDischarged_Volume%Array(Ann_KickLoc-1)= Ann_MudDischarged_Volume%Array(Ann_KickLoc-1) + NewVolume + + + endif + + else !if Ann_KickLoc == 1 *6 =============================== + !write(*,*) '****6' + + Old_KickBackHead_X= Ann_Mud_Backhead_X%Array (Ann_KickLoc) + Old_KickBackHead_Section= Ann_Mud_Backhead_section%Array (Ann_KickLoc) + + + call Ann_Density%AddToFirst (NewDensity) + call Ann_MudDischarged_Volume%AddToFirst (NewVolume) + call Ann_Mud_Forehead_X%AddToFirst (Old_KickBackHead_X) + call Ann_Mud_Forehead_section%AddToFirst (Old_KickBackHead_Section) + call Ann_Mud_Backhead_X%AddToFirst (Old_KickBackHead_X) + call Ann_Mud_Backhead_section%AddToFirst (Old_KickBackHead_Section) + call Ann_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Ann_MudOrKick%AddToFirst (0) + call Ann_CuttingMud%AddToFirst (CuttingValue) + + endif + + endif + + !======================================================================================== + + + + + + + +!============================== kick 2 tarafe mate bashad *4 ============================== + + if ( Ann_KickLoc > 0 .and. Op_KickLoc > 0 ) then + !write(*,*) '****4' + + iloc= 2 + + KickDv= Area_PipeSectionFt(Ann_Mud_Forehead_section%Array(Ann_KickLoc)) * KickDx * 7.48051948d0 ! ft^3 to gal + + + MinKickDv= min( KickDv,Ann_MudDischarged_Volume%Array (Ann_KickLoc+1), Op_MudDischarged_Volume%Last () ) ! Ann_KickLoc+1=2 Op_MudDischarged_Volume%Last ()=kick + + NewDensity= Ann_Density%Array (Ann_KickLoc+1) + NewVolume= MinKickDv + + if ( MinKickDv == KickDv ) then !eleman bala sari baghi mimund, paeeni(kick) dar OP ham baghi mimund + !write(*,*) '****4----1' + + + Ann_MudDischarged_Volume%Array (Ann_KickLoc+1)= Ann_MudDischarged_Volume%Array (Ann_KickLoc+1) - MinKickDv + + Ann_MudDischarged_Volume%Array (Ann_KickLoc)= Ann_MudDischarged_Volume%Array (Ann_KickLoc) + MinKickDv ! Ann_KickLoc= 1 + + Op_MudDischarged_Volume%Array (Op_KickLoc)= Op_MudDischarged_Volume%Array (Op_KickLoc) - MinKickDv ! Op_KickLoc= last + + + ! backheade kick zire mate bashad + if ( Op_KickLoc>1) then + + !if ( Op_Density%Array (Op_KickLoc-1) /= NewDensity ) then + + if ( ABS(Op_Density%Array (Op_KickLoc-1) - NewDensity) >= DensityMixTol ) then + + Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + + call Op_Density%AddTo (Op_KickLoc,NewDensity) + call Op_MudDischarged_Volume%AddTo (Op_KickLoc,NewVolume) + call Op_Mud_Forehead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + call Op_Mud_Forehead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + call Op_Mud_Backhead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + call Op_Mud_Backhead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + call Op_RemainedVolume_in_LastSection%AddTo (Op_KickLoc,0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddTo (Op_KickLoc,0.0d0) + call Op_MudOrKick%AddTo (Op_KickLoc,0) + + + else ! merge + + Op_Density%Array(Op_KickLoc-1)= (Op_Density%Array(Op_KickLoc-1)*Op_MudDischarged_Volume%Array(Op_KickLoc-1)+NewDensity*NewVolume)/(Op_MudDischarged_Volume%Array(Op_KickLoc-1)+NewVolume) + Op_MudDischarged_Volume%Array(Op_KickLoc-1)= Op_MudDischarged_Volume%Array(Op_KickLoc-1) + NewVolume + + endif + + else !if Op_KickLoc == 1 (*****Migration Start*****) *5-2=============================== + !write(*,*) '****5-2' + + Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + + + call Op_Density%AddToFirst (NewDensity) + call Op_MudDischarged_Volume%AddToFirst (NewVolume) + call Op_Mud_Forehead_X%AddToFirst (Old_KickBackHead_X) + call Op_Mud_Forehead_section%AddToFirst (Old_KickBackHead_Section) + call Op_Mud_Backhead_X%AddToFirst (Old_KickBackHead_X) + call Op_Mud_Backhead_section%AddToFirst (Old_KickBackHead_Section) + call Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Op_MudOrKick%AddToFirst (0) + + endif + + + + elseif ( MinKickDv == Ann_MudDischarged_Volume%Array (Ann_KickLoc+1) ) then ! eleman bala sari baghi nemimund + !write(*,*) '****4----2' + + call Ann_MudDischarged_Volume%Remove (Ann_KickLoc+1) + call Ann_Mud_Backhead_X%Remove (Ann_KickLoc+1) + call Ann_Mud_Backhead_section%Remove (Ann_KickLoc+1) + call Ann_Mud_Forehead_X%Remove (Ann_KickLoc+1) + call Ann_Mud_Forehead_section%Remove (Ann_KickLoc+1) + call Ann_Density%Remove (Ann_KickLoc+1) + call Ann_RemainedVolume_in_LastSection%Remove (Ann_KickLoc+1) + call Ann_EmptyVolume_inBackheadLocation%Remove (Ann_KickLoc+1) + call Ann_MudOrKick%Remove (Ann_KickLoc+1) + call Ann_CuttingMud%Remove (Ann_KickLoc+1) + + Ann_MudDischarged_Volume%Array (Ann_KickLoc)= Ann_MudDischarged_Volume%Array (Ann_KickLoc) + MinKickDv ! Ann_KickLoc= 1 + + Op_MudDischarged_Volume%Array (Op_KickLoc)= Op_MudDischarged_Volume%Array (Op_KickLoc) - MinKickDv ! Op_KickLoc= last + + ! backheade kick zire mate bashad + if (Op_KickLoc > 1) then + + !if ( Op_Density%Array (Op_KickLoc-1) /= NewDensity ) then + + if ( ABS(Op_Density%Array (Op_KickLoc-1) - NewDensity) >= DensityMixTol ) then + + + Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + + call Op_Density%AddTo (Op_KickLoc,NewDensity) + call Op_MudDischarged_Volume%AddTo (Op_KickLoc,NewVolume) + call Op_Mud_Forehead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + call Op_Mud_Forehead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + call Op_Mud_Backhead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + call Op_Mud_Backhead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + call Op_RemainedVolume_in_LastSection%AddTo (Op_KickLoc,0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddTo (Op_KickLoc,0.0d0) + call Op_MudOrKick%AddTo (Op_KickLoc,0) + + + else !Op_Density%Array (imudKick-1) == NewDensity + Op_Density%Array(Op_KickLoc-1)= (Op_Density%Array(Op_KickLoc-1)*Op_MudDischarged_Volume%Array(Op_KickLoc-1)+NewDensity*NewVolume)/(Op_MudDischarged_Volume%Array(Op_KickLoc-1)+NewVolume) + Op_MudDischarged_Volume%Array(Op_KickLoc-1)= Op_MudDischarged_Volume%Array(Op_KickLoc-1) + NewVolume + + endif + + else !if Op_KickLoc == 1 (*****Migration Start*****) *5-2=============================== + + Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + + + call Op_Density%AddToFirst (NewDensity) + call Op_MudDischarged_Volume%AddToFirst (NewVolume) + call Op_Mud_Forehead_X%AddToFirst (Old_KickBackHead_X) + call Op_Mud_Forehead_section%AddToFirst (Old_KickBackHead_Section) + call Op_Mud_Backhead_X%AddToFirst (Old_KickBackHead_X) + call Op_Mud_Backhead_section%AddToFirst (Old_KickBackHead_Section) + call Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Op_MudOrKick%AddToFirst (0) + + endif + + + elseif ( MinKickDv == Op_MudDischarged_Volume%Last () ) then ! eleman balaee baghi mimund, kick az OP kamel kharej mishod + !write(*,*) '****4----3' + + + + Ann_MudDischarged_Volume%Array (Ann_KickLoc+1)= Ann_MudDischarged_Volume%Array (Ann_KickLoc+1) - MinKickDv + + Ann_MudDischarged_Volume%Array (Ann_KickLoc)= Ann_MudDischarged_Volume%Array (Ann_KickLoc) + MinKickDv ! Ann_KickLoc= 1 + + + + Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + + + call Op_MudDischarged_Volume%Remove (Op_KickLoc) ! Op_KickLoc= last + call Op_Mud_Backhead_X%Remove (Op_KickLoc) + call Op_Mud_Backhead_section%Remove (Op_KickLoc) + call Op_Mud_Forehead_X%Remove (Op_KickLoc) + call Op_Mud_Forehead_section%Remove (Op_KickLoc) + call Op_Density%Remove (Op_KickLoc) + call Op_RemainedVolume_in_LastSection%Remove (Op_KickLoc) + call Op_EmptyVolume_inBackheadLocation%Remove (Op_KickLoc) + call Op_MudOrKick%Remove (Op_KickLoc) + + ! backheade kick zire mate bashad + if (Op_KickLoc > 1) then + + !if ( Op_Density%Array (Op_KickLoc-1) /= NewDensity ) then + + if ( ABS(Op_Density%Array (Op_KickLoc-1) - NewDensity) >= DensityMixTol ) then + + + call Op_Density%AddTo (Op_KickLoc,NewDensity) + call Op_MudDischarged_Volume%AddTo (Op_KickLoc,NewVolume) + call Op_Mud_Forehead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + call Op_Mud_Forehead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + call Op_Mud_Backhead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + call Op_Mud_Backhead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + call Op_RemainedVolume_in_LastSection%AddTo (Op_KickLoc,0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddTo (Op_KickLoc,0.0d0) + call Op_MudOrKick%AddTo (Op_KickLoc,0) + + else !Op_Density%Array (imudKick-1) == NewDensity + Op_Density%Array(Op_KickLoc-1)= (Op_Density%Array(Op_KickLoc-1)*Op_MudDischarged_Volume%Array(Op_KickLoc-1)+NewDensity*NewVolume)/(Op_MudDischarged_Volume%Array(Op_KickLoc-1)+NewVolume) + Op_MudDischarged_Volume%Array(Op_KickLoc-1)= Op_MudDischarged_Volume%Array(Op_KickLoc-1) + NewVolume + + endif + + else !if Op_KickLoc == 1 (*****Migration Start*****) *5-2=============================== + + call Op_Density%AddToFirst (NewDensity) + call Op_MudDischarged_Volume%AddToFirst (NewVolume) + call Op_Mud_Forehead_X%AddToFirst (Old_KickBackHead_X) + call Op_Mud_Forehead_section%AddToFirst (Old_KickBackHead_Section) + call Op_Mud_Backhead_X%AddToFirst (Old_KickBackHead_X) + call Op_Mud_Backhead_section%AddToFirst (Old_KickBackHead_Section) + call Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Op_MudOrKick%AddToFirst (0) + + endif + + iloc= 1 ! ok + + endif + + + endif + +!======================================================================================== + + + +!============================== kick 2 tarafe mate bashad *4 with pump ============================== + + ! + !if ( Ann_KickLoc > 0 .and. Op_KickLoc > 0 .and. AnnulusFlowRate /= 0.0 ) then + ! write(*,*) '****4 with pump' + ! + ! KickMigration_2SideBit= .true. + ! + ! !iloc= 2 + ! + ! KickDv= Area_PipeSectionFt(Ann_Mud_Forehead_section%Array(Ann_KickLoc)) * KickDx * 7.48051948d0 ! ft^3 to gal + ! !MinKickDv= min( KickDv,Ann_MudDischarged_Volume%Array (Ann_KickLoc+1), Op_MudDischarged_Volume%Last () ) ! Ann_KickLoc+1=2 Op_MudDischarged_Volume%Last ()=kick + ! + ! + ! !MinKickDv= min( KickDv,Ann_MudDischarged_Volume%Array (Ann_KickLoc+1), Op_MudDischarged_Volume%Last () ) ! Ann_KickLoc+1=2 Op_MudDischarged_Volume%Last ()=kick + ! ! + ! !NewDensity= Ann_Density%Array (Ann_KickLoc+1) + ! !NewVolume= MinKickDv + ! + ! + ! if ( ((AnnulusFlowRate/60.0d0)*DeltaT_Mudline) >= KickDv ) then ! sorate pump bishtar az kick bashad---tu in halat aslan kari be elemane balaiye kick tuye Ann nadarim + ! !WRITE(*,*) '*****sorate pump bishtar az kick*******' + ! MinKickDv= ((AnnulusFlowRate/60.0d0)*DeltaT_Mudline) ! dar asl maxKickDv ast + ! + ! + ! + ! + ! + ! + ! + ! + ! if ( Op_MudDischarged_Volume%Last () > MinKickDv ) then !eleman paeeni(kick) dar OP baghi mimund + ! + ! Ann_MudDischarged_Volume%Array (Ann_KickLoc)= Ann_MudDischarged_Volume%Array (Ann_KickLoc) + MinKickDv ! Ann_KickLoc= 1 + ! + ! Op_MudDischarged_Volume%Array (Op_KickLoc)= Op_MudDischarged_Volume%Array (Op_KickLoc) - MinKickDv ! Op_KickLoc= last + ! + ! Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + ! Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + ! ! backheade kick zire mate bashad + ! if ( Op_KickLoc>1) then + ! + ! if ( Op_Density%Array (Op_KickLoc-1) /= St_Density%Last() ) then + ! + ! + ! Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + ! Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + ! + ! call Op_Density%AddTo (Op_KickLoc,St_Density%Last()) + ! call Op_MudDischarged_Volume%AddTo (Op_KickLoc,MinKickDv) + ! call Op_Mud_Forehead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + ! call Op_Mud_Forehead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + ! call Op_Mud_Backhead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + ! call Op_Mud_Backhead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + ! call Op_RemainedVolume_in_LastSection%AddTo (Op_KickLoc,0.0d0) + ! call Op_EmptyVolume_inBackheadLocation%AddTo (Op_KickLoc,0.0d0) + ! call Op_MudOrKick%AddTo (Op_KickLoc,0) + ! + ! + ! else !Op_Density%Array (imudKick-1) == NewDensity + ! + ! Op_MudDischarged_Volume%Array (Op_KickLoc-1)= Op_MudDischarged_Volume%Array (Op_KickLoc-1) + NewVolume + ! + ! endif + ! + ! else !if Op_KickLoc == 1 (*****Migration Start*****) *5-2=============================== + ! write(*,*) '****5-2 with pump' + ! + ! + ! !Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + ! !Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + ! + ! + ! call Op_Density%AddToFirst (St_Density%Last()) + ! call Op_MudDischarged_Volume%AddToFirst (MinKickDv) + ! call Op_Mud_Forehead_X%AddToFirst (Old_KickBackHead_X) + ! call Op_Mud_Forehead_section%AddToFirst (Old_KickBackHead_Section) + ! call Op_Mud_Backhead_X%AddToFirst (Old_KickBackHead_X) + ! call Op_Mud_Backhead_section%AddToFirst (Old_KickBackHead_Section) + ! call Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + ! call Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + ! call Op_MudOrKick%AddToFirst (0) + ! + ! endif + ! + ! elseif ( Op_MudDischarged_Volume%Last () <= MinKickDv ) then !eleman paeeni(kick) dar OP baghi nemimund yani kick az OP kamel kharej mishod + ! + ! MinKickDv= Op_MudDischarged_Volume%Last () + ! + ! + ! write(*,*) '****4----3 with pump a' + ! + ! + ! Ann_MudDischarged_Volume%Array (Ann_KickLoc+1)= Ann_MudDischarged_Volume%Array (Ann_KickLoc+1) + ((AnnulusFlowRate/60.0d0)*DeltaT_Mudline)-MinKickDv + ! + ! Ann_MudDischarged_Volume%Array (Ann_KickLoc)= Ann_MudDischarged_Volume%Array (Ann_KickLoc) + MinKickDv ! Ann_KickLoc= 1 + ! + ! call Op_MudDischarged_Volume%Remove (Op_KickLoc) ! Op_KickLoc= last + ! call Op_Mud_Backhead_X%Remove (Op_KickLoc) + ! call Op_Mud_Backhead_section%Remove (Op_KickLoc) + ! call Op_Mud_Forehead_X%Remove (Op_KickLoc) + ! call Op_Mud_Forehead_section%Remove (Op_KickLoc) + ! call Op_Density%Remove (Op_KickLoc) + ! call Op_RemainedVolume_in_LastSection%Remove (Op_KickLoc) + ! call Op_EmptyVolume_inBackheadLocation%Remove (Op_KickLoc) + ! call Op_MudOrKick%Remove (Op_KickLoc) + ! + ! + ! ! backheade kick zire mate bashad + ! if (Op_KickLoc > 1) then + ! + ! if ( Op_Density%Array (Op_KickLoc-1) /= St_Density%Last() ) then + ! + ! + ! !Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + ! !Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + ! + ! call Op_Density%AddTo (Op_KickLoc,St_Density%Last()) + ! call Op_MudDischarged_Volume%AddTo (Op_KickLoc,MinKickDv) + ! call Op_Mud_Forehead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + ! call Op_Mud_Forehead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + ! call Op_Mud_Backhead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + ! call Op_Mud_Backhead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + ! call Op_RemainedVolume_in_LastSection%AddTo (Op_KickLoc,0.0d0) + ! call Op_EmptyVolume_inBackheadLocation%AddTo (Op_KickLoc,0.0d0) + ! call Op_MudOrKick%AddTo (Op_KickLoc,0) + ! + ! + ! + ! else !Op_Density%Array (imudKick-1) == NewDensity + ! + ! + ! Op_MudDischarged_Volume%Array (Op_KickLoc-1)= Op_MudDischarged_Volume%Array (Op_KickLoc-1) + MinKickDv + ! + ! endif + ! + ! else !if Op_KickLoc == 1 (*****Migration Start*****) *5-2=============================== + ! + ! + ! Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + ! Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + ! + ! + ! call Op_Density%AddToFirst (St_Density%Last()) + ! call Op_MudDischarged_Volume%AddToFirst (MinKickDv) + ! call Op_Mud_Forehead_X%AddToFirst (Old_KickBackHead_X) + ! call Op_Mud_Forehead_section%AddToFirst (Old_KickBackHead_Section) + ! call Op_Mud_Backhead_X%AddToFirst (Old_KickBackHead_X) + ! call Op_Mud_Backhead_section%AddToFirst (Old_KickBackHead_Section) + ! call Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + ! call Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + ! call Op_MudOrKick%AddToFirst (0) + ! + ! endif + ! + ! + ! endif ! ende 2 halat ke kick tuye Op baghi bemune ya namune- dar halati ke ((AnnulusFlowRate/60.)*DeltaT_Mudline) >= KickDv ) ! sorate pump bishtar az kick bashad + ! + ! + ! + ! + ! else !if( ((AnnulusFlowRate/60.)*DeltaT_Mudline) < KickDv ) then ! sorate pump kamtar az kick bashad + ! !WRITE(*,*) '*****sorate pump kamtar az kick*******' + ! + ! + ! + ! + ! MinKickDv= min( KickDv,Ann_MudDischarged_Volume%Array (Ann_KickLoc+1), Op_MudDischarged_Volume%Last () ) ! Ann_KickLoc+1=2 Op_MudDischarged_Volume%Last ()=kick + ! + ! + ! + ! !write(*,*) 'MinKickDv=' , MinKickDv + ! + ! + ! if ( MinKickDv == KickDv ) then !eleman bala sari baghi mimund, paeeni(kick) dar OP ham baghi mimund + ! !write(*,*) '****4----1 with pump' + ! !write(*,*) 'St_Density%Last()=' , St_Density%Last() + ! !write(*,*) '((AnnulusFlowRate/60.)*DeltaT_Mudline)=' , ((AnnulusFlowRate/60.)*DeltaT_Mudline) + ! !write(*,*) 'Ann_Density%Array(Ann_KickLoc+1)=' , Ann_Density%Array(Ann_KickLoc+1) + ! !write(*,*) '(MinKickDv-((AnnulusFlowRate/60.)*DeltaT_Mudline))=' , (MinKickDv-((AnnulusFlowRate/60.)*DeltaT_Mudline)) + ! + ! + ! NewDensity= (St_Density%Last()*((AnnulusFlowRate/60.0d0)*DeltaT_Mudline) + Ann_Density%Array(Ann_KickLoc+1)*(MinKickDv-((AnnulusFlowRate/60.0d0)*DeltaT_Mudline))) & + ! / (((AnnulusFlowRate/60.0d0)*DeltaT_Mudline) + (MinKickDv-((AnnulusFlowRate/60.0d0)*DeltaT_Mudline))) + ! NewVolume= MinKickDv + ! + ! + ! Ann_MudDischarged_Volume%Array (Ann_KickLoc+1)= Ann_MudDischarged_Volume%Array (Ann_KickLoc+1) - (MinKickDv-((AnnulusFlowRate/60.0d0)*DeltaT_Mudline)) + ! + ! Ann_MudDischarged_Volume%Array (Ann_KickLoc)= Ann_MudDischarged_Volume%Array (Ann_KickLoc) + MinKickDv ! Ann_KickLoc= 1 + ! + ! Op_MudDischarged_Volume%Array (Op_KickLoc)= Op_MudDischarged_Volume%Array (Op_KickLoc) - MinKickDv ! Op_KickLoc= last + ! + ! + ! ! backheade kick zire mate bashad + ! if ( Op_KickLoc>1) then + ! + ! + ! + ! if ( ABS(Op_Density%Array (Op_KickLoc-1) - NewDensity) > DensityMixTol) then ! .OR. (Op_MudDischarged_Volume%Array (Op_KickLoc-1)>42.) ) then + ! + ! + ! + ! Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + ! Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + ! + ! call Op_Density%AddTo (Op_KickLoc,NewDensity) + ! call Op_MudDischarged_Volume%AddTo (Op_KickLoc,NewVolume) + ! call Op_Mud_Forehead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + ! call Op_Mud_Forehead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + ! call Op_Mud_Backhead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + ! call Op_Mud_Backhead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + ! call Op_RemainedVolume_in_LastSection%AddTo (Op_KickLoc,0.0d0) + ! call Op_EmptyVolume_inBackheadLocation%AddTo (Op_KickLoc,0.0d0) + ! call Op_MudOrKick%AddTo (Op_KickLoc,0) + ! + ! + ! else !Merge Condition + ! + ! Op_MudDischarged_Volume%Array (Op_KickLoc-1)= Op_MudDischarged_Volume%Array (Op_KickLoc-1) + NewVolume + ! Op_Density%Array (Op_KickLoc-1)= (Op_MudDischarged_Volume%Array (Op_KickLoc-1)*Op_Density%Array (Op_KickLoc-1)+NewVolume*NewDensity) / & + ! (Op_MudDischarged_Volume%Array (Op_KickLoc-1)+NewVolume) + ! + ! + ! endif + ! + ! else !if Op_KickLoc == 1 (*****Migration Start*****) *5-2=============================== + ! write(*,*) '****5-2 with pump' + ! + ! Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + ! Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + ! + ! + ! call Op_Density%AddToFirst (NewDensity) + ! call Op_MudDischarged_Volume%AddToFirst (NewVolume) + ! call Op_Mud_Forehead_X%AddToFirst (Old_KickBackHead_X) + ! call Op_Mud_Forehead_section%AddToFirst (Old_KickBackHead_Section) + ! call Op_Mud_Backhead_X%AddToFirst (Old_KickBackHead_X) + ! call Op_Mud_Backhead_section%AddToFirst (Old_KickBackHead_Section) + ! call Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + ! call Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + ! call Op_MudOrKick%AddToFirst (0) + ! + ! endif + ! + ! + ! + ! elseif ( MinKickDv == Ann_MudDischarged_Volume%Array (Ann_KickLoc+1) ) then ! eleman bala sari baghi nemimund + ! write(*,*) '****4----2 with pump' + ! + ! NewDensity= (St_Density%Last()*((AnnulusFlowRate/60.0d0)*DeltaT_Mudline) + Ann_Density%Array(Ann_KickLoc+1)*(MinKickDv-((AnnulusFlowRate/60.0d0)*DeltaT_Mudline))) & + ! / (((AnnulusFlowRate/60.0d0)*DeltaT_Mudline) + Ann_MudDischarged_Volume%Array (Ann_KickLoc+1)) + ! NewVolume= MinKickDv + ! + ! call RemoveAnnulusMudArrays(Ann_KickLoc+1) + ! + ! Ann_MudDischarged_Volume%Array (Ann_KickLoc)= Ann_MudDischarged_Volume%Array (Ann_KickLoc) + MinKickDv ! Ann_KickLoc= 1 + ! + ! Op_MudDischarged_Volume%Array (Op_KickLoc)= Op_MudDischarged_Volume%Array (Op_KickLoc) - MinKickDv ! Op_KickLoc= last + ! + ! ! backheade kick zire mate bashad + ! if (Op_KickLoc > 1) then + ! + ! if ( ABS(Op_Density%Array (Op_KickLoc-1) - NewDensity) > DensityMixTol) then ! .OR. (Op_MudDischarged_Volume%Array (Op_KickLoc-1)>42.) ) then + ! + ! ! + ! Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + ! Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + ! + ! call Op_Density%AddTo (Op_KickLoc,NewDensity) + ! call Op_MudDischarged_Volume%AddTo (Op_KickLoc,NewVolume) + ! call Op_Mud_Forehead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + ! call Op_Mud_Forehead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + ! call Op_Mud_Backhead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + ! call Op_Mud_Backhead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + ! call Op_RemainedVolume_in_LastSection%AddTo (Op_KickLoc,0.0d0) + ! call Op_EmptyVolume_inBackheadLocation%AddTo (Op_KickLoc,0.0d0) + ! call Op_MudOrKick%AddTo (Op_KickLoc,0) + ! + ! + ! else !Merge Condition + ! + ! Op_MudDischarged_Volume%Array (Op_KickLoc-1)= Op_MudDischarged_Volume%Array (Op_KickLoc-1) + NewVolume + ! Op_Density%Array (Op_KickLoc-1)= (Op_MudDischarged_Volume%Array (Op_KickLoc-1)*Op_Density%Array (Op_KickLoc-1)+NewVolume*NewDensity) / & + ! (Op_MudDischarged_Volume%Array (Op_KickLoc-1)+NewVolume) + ! + ! + ! + ! endif + ! + ! else !if Op_KickLoc == 1 (*****Migration Start*****) *5-2=============================== + ! + ! Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + ! Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + ! + ! + ! call Op_Density%AddToFirst (NewDensity) + ! call Op_MudDischarged_Volume%AddToFirst (NewVolume) + ! call Op_Mud_Forehead_X%AddToFirst (Old_KickBackHead_X) + ! call Op_Mud_Forehead_section%AddToFirst (Old_KickBackHead_Section) + ! call Op_Mud_Backhead_X%AddToFirst (Old_KickBackHead_X) + ! call Op_Mud_Backhead_section%AddToFirst (Old_KickBackHead_Section) + ! call Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + ! call Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + ! call Op_MudOrKick%AddToFirst (0) + ! + ! endif + ! + ! + ! elseif ( MinKickDv == Op_MudDischarged_Volume%Last () ) then ! eleman balaee baghi mimund, kick az OP kamel kharej mishod + ! write(*,*) '****4----3 with pump b' + ! + ! NewDensity= St_Density%Last() + ! NewVolume= MinKickDv + ! + ! + ! Old_KickBackHead_X= Op_Mud_Backhead_X%Array (Op_KickLoc) + ! Old_KickBackHead_Section= Op_Mud_Backhead_section%Array (Op_KickLoc) + ! + ! + ! !Ann_MudDischarged_Volume%Array (Ann_KickLoc+1)= Ann_MudDischarged_Volume%Array (Ann_KickLoc+1) - MinKickDv farz kardam dast be elemane balaee nazanam + ! + ! Ann_MudDischarged_Volume%Array (Ann_KickLoc)= Ann_MudDischarged_Volume%Array (Ann_KickLoc) + MinKickDv ! Ann_KickLoc= 1 + ! !write(*,*) 'pointer 1' + ! call Op_MudDischarged_Volume%Remove (Op_KickLoc) ! Op_KickLoc= last + ! call Op_Mud_Backhead_X%Remove (Op_KickLoc) + ! call Op_Mud_Backhead_section%Remove (Op_KickLoc) + ! call Op_Mud_Forehead_X%Remove (Op_KickLoc) + ! call Op_Mud_Forehead_section%Remove (Op_KickLoc) + ! call Op_Density%Remove (Op_KickLoc) + ! call Op_RemainedVolume_in_LastSection%Remove (Op_KickLoc) + ! call Op_EmptyVolume_inBackheadLocation%Remove (Op_KickLoc) + ! call Op_MudOrKick%Remove (Op_KickLoc) + ! + ! !write(*,*) 'pointer 2' + ! + ! ! backheade kick zire mate bashad + ! if (Op_KickLoc > 1) then + ! + ! if ( ABS(Op_Density%Array (Op_KickLoc-1) - NewDensity) > DensityMixTol) then ! .OR. (Op_MudDischarged_Volume%Array (Op_KickLoc-1)>42.) ) then + ! !write(*,*) 'pointer 3' + ! + ! + ! + ! + ! call Op_Density%AddTo (Op_KickLoc,NewDensity) + ! call Op_MudDischarged_Volume%AddTo (Op_KickLoc,NewVolume) + ! call Op_Mud_Forehead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + ! call Op_Mud_Forehead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + ! call Op_Mud_Backhead_X%AddTo (Op_KickLoc,Old_KickBackHead_X) + ! call Op_Mud_Backhead_section%AddTo (Op_KickLoc,Old_KickBackHead_Section) + ! call Op_RemainedVolume_in_LastSection%AddTo (Op_KickLoc,0.0d0) + ! call Op_EmptyVolume_inBackheadLocation%AddTo (Op_KickLoc,0.0d0) + ! call Op_MudOrKick%AddTo (Op_KickLoc,0) + ! + ! !write(*,*) 'pointer 4' + ! + ! else !Merge Condition + ! + ! Op_MudDischarged_Volume%Array (Op_KickLoc-1)= Op_MudDischarged_Volume%Array (Op_KickLoc-1) + NewVolume + ! Op_Density%Array (Op_KickLoc-1)= (Op_MudDischarged_Volume%Array (Op_KickLoc-1)*Op_Density%Array (Op_KickLoc-1)+NewVolume*NewDensity) / & + ! (Op_MudDischarged_Volume%Array (Op_KickLoc-1)+NewVolume) + ! + ! endif + ! + ! else !if Op_KickLoc == 1 (*****Migration Start*****) *5-2=============================== + ! !write(*,*) 'pointer 5' + ! + ! + ! !write(*,*) 'pointer 6' + ! + ! + ! call Op_Density%AddToFirst (NewDensity) + ! call Op_MudDischarged_Volume%AddToFirst (NewVolume) + ! call Op_Mud_Forehead_X%AddToFirst (Old_KickBackHead_X) + ! call Op_Mud_Forehead_section%AddToFirst (Old_KickBackHead_Section) + ! call Op_Mud_Backhead_X%AddToFirst (Old_KickBackHead_X) + ! call Op_Mud_Backhead_section%AddToFirst (Old_KickBackHead_Section) + ! call Op_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + ! call Op_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + ! call Op_MudOrKick%AddToFirst (0) + ! !write(*,*) 'pointer 7' + ! + ! endif + ! + ! + ! endif + ! + ! + ! + ! endif !( ((AnnulusFlowRate/60.)*DeltaT_Mudline) < KickDv ) ! sorate pump kamtar az kick bashad + ! + ! + ! + ! + ! endif + +!======================================================================================== + +ENDDO ! KickNumber= 1, NewInfluxNumber + + + !write(*,*) 'c)Ann_MudDischarged_Volume%Array(:)=' , sum(Ann_MudDischarged_Volume%Array(:)) + + + + end subroutine Kick_Migration \ No newline at end of file diff --git a/Equipments/MudSystem/MudSystem.f90 b/Equipments/MudSystem/MudSystem.f90 new file mode 100644 index 0000000..ba554ae --- /dev/null +++ b/Equipments/MudSystem/MudSystem.f90 @@ -0,0 +1,3553 @@ +module MudSystem + + USE MudSystemVARIABLES + USE PressureDisplayVARIABLES + USE FricPressDropVars + USE Fluid_Flow_Startup_Vars + USE CMudPropertiesVariables + USE CManifolds + USE CPumpsVariables + USE CUnityOutputs + use CWarningsVariables + use DynamicIntegerArray + use CError + use CLog1 + USE CDataDisplayConsoleVariables + use CStudentStationVariables , PitGainLossReset=>PitGainLossZero + + + implicit none + + real j2,j12,j13,jj2,jj12,jj13 + real A71,A72,A73 + integer j3,B71,B77,B78 + integer j4 + real C71,C77,C78 + integer j5 + integer j6,D71,D80 + integer j7,j8,j9,j10,j11 + real E71,E72,E73 + real F71,F72,F73 + integer j14 + real G82,G83,G84 + integer j15 + real H82,H83,H84 + integer j16,K82,K83,K84,K79,K78 + integer j17,L82,L83,L84,L79,L78 + integer j18 + real M71,M77,M78, Pump1toCh,Pump2toCh,Pump3toCh,Denominator_a + integer j19 + real N82,N83,N84 + integer j20 + integer j21 + real unityreturn + + + + real(8) DumpPump1,DumpPump2,DumpCementPump,Denominator + real(8) Mp1Coef,Mp2Coef,CpCoef + real(8) PumpPressure1,PumpPressure2,PumpPressure3 + integer Mp1_NoPath,Mp2_NoPath,Cp_NoPath + real P1toSt,P2toSt,CptoSt + real(8) MaxWorkingPressure1,MaxWorkingPressure2,MaxWorkingPressure3,MaxWorkingPressure + + REAL(8) DumpFromKelly, DumpFromFillupHead + real(8) AddedVolumeToTank,PUMP1_Flow_Rate_Old,PUMP2_Flow_Rate_Old,PUMP3_Flow_Rate_Old + real(8) VolumeToActive,VolumeToBellNipple,BellNipple_FlowCoef,ChokeLine_FlowCoef + + + REAL RealJ2,RealJ12,RealJ13,RealJ4,RealJ18 + INTEGER active32,active33,active34,active35,active29 + + logical condition1, condition2, condition3, condition4, condition5, condition6, condition7, condition8, condition9, condition10, condition11, condition12, condition13, condition14, condition15 + logical condition16,condition17,condition18,condition19,condition20,condition21,condition22,condition23,condition24,condition25,condition26,condition27,condition28,condition29,condition30,condition31 + logical condition32,condition33,condition34,condition35,condition36,condition37,condition38,condition39,condition40,condition41,condition42,condition43,condition44,condition45 + logical condition46,condition47,condition48,condition49,condition50,condition51,condition52,condition53,condition54,condition55,condition56,condition57,condition58 + logical condition59,condition60,condition61 + logical ac32, ac33, ac34, ac35, ac29 + logical ThereIsPathFrom_71_72_73_To_82, ThereIsPathFrom_71_72_73_To_83, ThereIsPathFrom_71_72_73_To_84 + logical DumpFromKelly_Pump1, DumpFromKelly_Pump2, DumpFromKelly_Pump3 + logical DumpFromTopDrive_Pump1,DumpFromTopDrive_Pump2,DumpFromTopDrive_Pump3 + logical DumpFromFillupHead_Pump1, DumpFromFillupHead_Pump2, DumpFromFillupHead_Pump3 + logical State1,State2, State3, State4 + type(DynamicIntegerArrayType) Pump1_Lasts,Pump2_Lasts, Pump3_Lasts + REAL MP1_Q, MP2_Q, MP3_Q + real TimePassed + + real(8) active_after, active_before, active_increase, total_active_increase,total_decrease,sys_total_injected + real(8) total_annFlow,total_DeltaVPipe + contains + + subroutine LineupAndPath() + implicit none + +!=========================================================================== +! MUDLINE CODE +!=========================================================================== + ! Initialize + j2=0 + jj2=0 + A71=0 + A72=0 + A73=0 + RealJ2=0.0 + + j3=0 + B71=0 + B77=0 + B78=0 + + j4=0 + C71=0. + C77=0. + C78=0. + active32=0 + active33=0 + active34=0 + active35=0 + active29=0 + + + j5=0 + + j6=0 + D71=0 + D80=0 + + j7=0 + + j8=0 + + j9=0 + j10=0 + j11=0 + + j12=0 + jj12=0 + E71=0 + E72=0 + E73=0 + RealJ12=0.0 + + j13=0 + jj13=0 + F71=0 + F72=0 + F73=0 + RealJ13=0.0 + + j14=0 + G82=0 + G83=0 + G84=0 + + DumpPump1=0. + DumpPump2=0. + DumpCementPump=0. + + j15=0 + H82=0.0 + H83=0.0 + H84=0.0 + + Mp1Coef= 0.0 + Mp1Coef= 0.0 + CpCoef= 0.0 + + Mp1_NoPath= 0 + Mp2_NoPath= 0 + Cp_NoPath= 0 + + j16=0 + K82=0 + K83=0 + K84=0 + K78=0 + K79=0 + + + j17=0 + L82=0 + L83=0 + L84=0 + L78=0 + L79=0 + + j18=0 + M71=0. + M77=0. + M78=0. + Pump1toCh=0. + Pump2toCh=0. + Pump3toCh=0. + + + j19=0 + N82=0 + N83=0 + N84=0 + + j20=0 + + j21=0 + + + +!=========================================================================== + + !===============TanksToMudPump1================= + if(condition1) then + j2=j2+1 + A71=1 + jj2=1 + endif + + if(condition2) then + j2=j2+1 + A72=1 + jj2=1 + endif + + if(condition3) then + j2=j2+1 + A73=1 + jj2=1 + endif + + !================================================ + + !============BellNippleToPits-FullWell============== + if(FirstMudSet== 1 ) then !.and. WellisNOTFull== .false.) then ! Well Must Be Full !Ann_Mud_Forehead_X%Last()==AboveAnnularHeight .and. Ann_Density%Last()/=0.0) + if(condition4) then + j3=j3+1 + B71=1 + endif + + if(condition5) then + j3=j3+1 + B77=1 + endif + + if(condition6) then + j3=j3+1 + B78=1 + endif + + endif + + !================================================ + + !============WellToChokeManifold(Through 26)============== + if(condition7) then + j4=j4+1 + C71=1. + endif + + if(condition8) then + j4=j4+1 + C77=1. + endif + + if(condition45) then + j4=j4+1 + C78=1. + endif + if (ac32) active32=1 + if (ac33) active33=1 + if (ac34) active34=1 + if (ac35) active35=1 + if (ac29) active29=1 !BYPASS VALVE + + + + !================================================ + + + !============ActiveTankToTripTank============== + if(condition9) then + j5=j5+1 + endif + !================================================ + + !write(*,*) 'j5====' , j5 + !============TripTankToActiveTank And BellNipple============== + if(condition10) then + j6=j6+1 + D71=1 + endif + + if(condition11) then + j6=j6+1 + D80=1 + endif + !================================================ + + !============ActiveTankToDump============== + if(condition12) then + j7=j7+1 + endif + !================================================ + + !============TripTankToDump============== + if(condition13) then + j8=j8+1 + endif + !================================================ + + !============WellToBellNipple============== + if(condition14) then + j9=j9+1 + endif + !================================================ + + !============MudBucketToBellNipple============== + if(condition15) then + j10=j10+1 + endif + !================================================ + + !============BellNippleToWell-NonFullWell============== + + + if(condition16 .and. FirstMudSet== 1 .and. BellNippleVolume > 0.0001 .and. WellisNOTFull) then + + write(*,*) 'MUD(7)%Q=' , MUD(7)%Q + write(*,*) 'BellNippleVolume=' , BellNippleVolume + + + write(*,*) 'MudVolume_InjectedFromAnn-WellToBellNipple=' , MudVolume_InjectedFromAnn + + write(*,*) 'int:::=' , (Ann_Mud_Forehead_X%Last() - AboveAnnularHeight) + write(*,*) 'Ann_Mud_Forehead_X%Last()=' , Ann_Mud_Forehead_X%Last() + write(*,*) 'AboveAnnularHeight=' , AboveAnnularHeight + write(*,*) 'Ann_Density%Last()=' , Ann_Density%Last() + CALL ErrorStop('error stop1') + + j11=j11+1 + endif + !================================================ + + !===============TanksToMudPump2=================== + + if(condition17) then + j12=j12+1 + E71=1 + jj12=1 + endif + + if(condition18) then + j12=j12+1 + E72=1 + jj12=1 + endif + + if(condition19) then + j12=j12+1 + E73=1 + jj12=1 + endif + + !================================================ + + !===============TanksToCementPump=================== + if(condition20) then + j13=j13+1 + F71=1 + jj13=1 + endif + + if(condition21) then + j13=j13+1 + F72=1 + jj13=1 + endif + + if(condition22) then + j13=j13+1 + F73=1 + jj13=1 + endif + + !================================================ + + !===============PumpsToString=================== + if(condition23) then + j14=j14+1 + G82=1 + endif + + if(condition24) then + j14=j14+1 + G83=1 + endif + + if(condition25) then + j14=j14+1 + G84=1 + endif + !================================================ + + + !===============PumpsToDump=================== + if(condition26) then + DumpPump1=1.0 + endif + + if(condition27) then + DumpPump2=1.0 + endif + + if(condition28) then + DumpCementPump=1.0 + endif + !================================================ + + + !=======MudPumps1&2ToActiveTank_Through65&66========== + if(condition29) then + !write(*,*) 'condition 29' + j15=j15+1 + H82=1.0 + endif + + if(condition30) then + j15=j15+1 + H83=1.0 + endif + + !================================================ + + + !=======CementPumpToActiveTank_Through65========== + + if(condition31) then + + H84=1.0 + + endif + !================================================ + + !write(*,*) 'condition32===' , condition32 + + !============MudPump1HasNoPath=================== + if(condition32Final) then + !write(*,*) 'MudPump1HasNoPath' + Mp1_NoPath = 1 + endif + !================================================ + + !============MudPump2HasNoPath=================== + if(condition33Final) then + !write(*,*) 'MudPump2HasNoPath' + Mp2_NoPath = 1 + endif + !================================================ + + + !============CementPumpHasNoPath=================== + if(condition34Final) then + Cp_NoPath = 1 + endif + !================================================ + + !===============PathsToGauge75=================== + if(condition35) then !Pump1 to Gauge75 + j16=j16+1 + K82=1 + endif + + if(condition36) then !Pump2 to Gauge75 + j16=j16+1 + K83=1 + endif + + if(condition37) then !Pump3 to Gauge75 + j16=j16+1 + K84=1 + endif + + if(condition38) then !String to Gauge75 + j16=j16+1 + K79=1 + endif + + if(condition39) then !Dump to Gauge75 + j16=j16+1 + K78=1 + endif + + !================================================ + !write(*,*) '****j16=' , j16 + !===============PathsToGauge76=================== + if(condition40) then !Pump1 to Gauge76 + j17=j17+1 + L82=1 + endif + + if(condition41) then !Pump2 to Gauge76 + j17=j17+1 + L83=1 + endif + + if(condition42) then !Pump3 to Gauge76 + j17=j17+1 + L84=1 + endif + + if(condition43) then !String to Gauge76 + j17=j17+1 + L79=1 + endif + + if(condition44) then !Dump to Gauge76 + j17=j17+1 + L78=1 + endif + + !================================================ + + !====Pump1-StandPipeManifoldToChokeManifold-Through ChokeLine==== + if(condition46) then + j18=j18+1 + M71=1. + Pump1toCh= 1. + endif + + if(condition47) then + j18=j18+1 + M77=1. + Pump1toCh= 1. + endif + + if(condition48) then + j18=j18+1 + M78=1. + Pump1toCh= 1. + endif + !================================================================= + + + !====Pump2-StandPipeManifoldToChokeManifold-Through ChokeLine==== + if(condition49) then + j18=j18+1 + M71=1. + Pump2toCh= 1. + endif + + if(condition50) then + j18=j18+1 + M77=1. + Pump2toCh= 1. + endif + + if(condition51) then + j18=j18+1 + M78=1. + Pump2toCh= 1. + endif + !================================================================= + + + !====Pump3-StandPipeManifoldToChokeManifold-Through ChokeLine==== + if(condition52) then + j18=j18+1 + M71=1. + Pump3toCh= 1. + endif + + if(condition53) then + j18=j18+1 + M77=1. + Pump3toCh= 1. + endif + + if(condition54) then + j18=j18+1 + M78=1. + Pump3toCh= 1. + endif + !================================================================= + + + !===============PumpsToWell_KillLine============ + if(condition55) then + j19=j19+1 + N82=1 + endif + + if(condition56) then + j19=j19+1 + N83=1 + endif + + if(condition57) then + j19=j19+1 + N84=1 + endif + !================================================ + + !===============WellToChokeLineGauge============ + if(condition58) then + j20=j20+1 + endif + + if (j20>0) then + WellToChokeLineGauge= .true. + else + WellToChokeLineGauge= .false. + endif + !================================================ + + + !============ChokeLineGaugeToTanks=============== + if(condition59) then + j21=j21+1 + endif + + if(condition60) then + j21=j21+1 + endif + + if(condition61) then + j21=j21+1 + endif + + if (j21>0) then + ChokeLineGaugeToTanks= .true. + else + ChokeLineGaugeToTanks= .false. + endif + !================================================ + + + end subroutine + + subroutine main + Use GeoElements_FluidModule + USE Pump_VARIABLES + USE CHOKEVARIABLES + USE CDataDisplayConsoleVariables , StandPipePressureDataDisplay=>StandPipePressure + use CDrillWatchVariables , MudWeightIn2 => MudWeightIn, MudWeightOut2 => MudWeightOut, PumpPressureDW => PumpPressure + use CHOKEVARIABLES + use CChokeManifoldVariables + use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + Use KickVariables + Use CHoistingVariables + + implicit none + + Integer I + + + MudSys_timeCounter = MudSys_timeCounter + 1 + + if (ChokePanelStrokeResetSwitch == 1) then + MudSys_timeCounter= 0 + endif + + !WRITE (*,*) 'MudSys_timeCounter', MudSys_timeCounter + + + + + + + + + + + if (MudPump1ReliefValveIsSet==.false.) MudPump1ReliefValvePressure=6000. + if (MudPump2ReliefValveIsSet==.false.) MudPump2ReliefValvePressure=6000. + if (CementPumpReliefValveIsSet==.false.) CementPumpReliefValvePressure=6000. + + + + + + + + + + + + + + + + + + + + +!=========================================================================================================================== +!=========================================================================================================================== + + +! >>> Should Be on Top of Other Codes <<< + + + !ActiveTankVolume= ActiveMudVolumeGal ! update from student input + !ActiveTankDensity= ActiveDensity ! update from student input + !ReserveTankVolume= ReserveMudVolumeGal ! update from student input + !ReserveTankDensity= ReserveDensity ! update from student input + + + + if (j7 > 0) then !ActiveTankToDump + ActiveTankDensity= 0. + ActiveTankVolume= 0. + endif + + + if (j8 > 0) then !TripTankToDump + TripTankDensityCalc= 0. + TripTankVolumeCalc= 0. + endif + + + +!=========================================================================================================================== +!=========================================================================================================================== + if (j15 > 0) then !MudPumps1&2ToActiveTank_Through65&66 + !write(*,*) 'j15 is open' + ! << if H82 or H83 or H4 are open, no flow goes to other parts of system >> + + + if (j2>0) Mp1Coef= 1.0 + if (j12>0) Mp2Coef= 1.0 + + + if (j2 /= 0 .or. j12/= 0) then + + + ActiveTankDensity = (ActiveTankDensity*ActiveTankVolume+ Mp1Coef*Mp1Density*(PUMP(1)%Flow_Rate*DeltaT_Mudline/60.) + Mp2Coef*Mp2Density*(PUMP(2)%Flow_Rate*DeltaT_Mudline/60.))/ & + (ActiveTankVolume+ Mp1Coef*(PUMP(1)%Flow_Rate*DeltaT_Mudline/60.) + Mp2Coef*(PUMP(2)%Flow_Rate*DeltaT_Mudline/60.)) + + ActiveTankVolume= ActiveTankVolume+ Mp1Coef*PUMP(1)%Flow_Rate*DeltaT_Mudline/60. + Mp2Coef*PUMP(2)%Flow_Rate*DeltaT_Mudline/60. + !write(*,*) 'active by j15' + endif + + + ActiveTankVolume=min(ActiveTankVolume , ActiveTotalTankCapacityGal-ActiveSettledContentsGal) + !if ActiveTankVolume is higher, excess amount is dumped + + endif + + + if (H84 > 0.0) then !CementPumpToCementTank_Through67 + + if (j13>0) CpCoef= 1.0 + + + CementTankDensityCalc= (CementTankDensityCalc*CementTankVolumeCalc+ CpCoef*Mp3Density*(PUMP(3)%Flow_Rate*DeltaT_Mudline/60.) ) / & + (CementTankVolumeCalc+CpCoef*(PUMP(3)%Flow_Rate*DeltaT_Mudline/60.)) + + CementTankVolumeCalc= CementTankVolumeCalc+ CpCoef*(PUMP(3)%Flow_Rate*DeltaT_Mudline/60.) + + + endif + +!=========================================================================================================================== +!=========================================================================================================================== + + + ! DUMP Path + + PumpsDumpVolume= PumpsDumpVolume+ (jj2*(1-H82)*DumpPump1*PUMP(1)%Flow_Rate + jj12*(1-H83)*DumpPump2*PUMP(2)%Flow_Rate + jj13*(1-H84)*DumpCementPump*PUMP(3)%Flow_Rate) *DeltaT_Mudline/60. + PumpsDumpFlowRate= jj2*(1-H82)*DumpPump1*PUMP(1)%Flow_Rate + jj12*(1-H83)*DumpPump2*PUMP(2)%Flow_Rate + jj13*(1-H84)*DumpCementPump*PUMP(3)%Flow_Rate + !write(*,*) 'PumpsDumpFlowRate=' , PumpsDumpFlowRate + + if (DriveType==1 .and. PumpsDumpFlowRate > 0.0 .and. (DumpFromKelly_Pump1 .or. DumpFromKelly_Pump2 .or. DumpFromKelly_Pump3)) then + !write(*,*) 'Set_FlowFromKelly(.TRUE.)' + call Activate_PumpWithKellyDisconnected() + !write(*,*) 'PumpsDumpFlowRate=' , PumpsDumpFlowRate + CALL Set_FlowFromKelly(min(PumpsDumpFlowRate/6.,100.)) ! .TRUE. before + elseif (DriveType==1) then + call Deactivate_PumpWithKellyDisconnected() + CALL Set_FlowFromKelly(0.0) ! .FALSE. before + !write(*,*) 'Set_FlowFromKelly(.FALSE.)' + + endif + !write(*,*) 'DumpFromFillupHead_Pump1=' , DumpFromFillupHead_Pump1 + + + if (DriveType==0 .and. PumpsDumpFlowRate > 0.0 .and. (DumpFromTopDrive_Pump1 .or. DumpFromTopDrive_Pump2 .or. DumpFromTopDrive_Pump3)) then + !write(*,*) 'Set_FlowFromKelly(.TRUE.)' + call Activate_PumpWithTopdriveDisconnected() + CALL Set_FlowFromKelly(min(PumpsDumpFlowRate/6.,100.)) ! .TRUE. before + elseif (DriveType==0) then + call Deactivate_PumpWithTopdriveDisconnected() + CALL Set_FlowFromKelly(0.0) ! .FALSE. before + !write(*,*) 'Set_FlowFromKelly(.FALSE.)' + + endif + + + + if (PumpsDumpFlowRate > 0.0 .and. (DumpFromFillupHead_Pump1 .or. DumpFromFillupHead_Pump2 .or. DumpFromFillupHead_Pump3)) then + + !call Activate_PumpWithKellyDisconnected() + CALL Set_FlowFromFillupHead(min(PumpsDumpFlowRate/6.,100.)) ! .TRUE. before + else + !call Deactivate_PumpWithKellyDisconnected() + CALL Set_FlowFromFillupHead(0.0) ! .FALSE. before + + endif + + + + +!####C_Program -----> DriveType = + ! = 0 TopDrive_DriveType + ! = 1 Kelly_DriveType +!=========================================================================================================================== +!=========================================================================================================================== + ! ****** Calculating Maximum Working Pressure + + + if (MudPump1ReliefValveIsSet) then + MaxWorkingPressure1= MudPump1ReliefValvePressure + else + MaxWorkingPressure1= 6000. !psi + endif + + + if (MudPump2ReliefValveIsSet) then + MaxWorkingPressure2= MudPump2ReliefValvePressure + else + MaxWorkingPressure2= 6000. !psi + endif + + if (CementPumpReliefValveIsSet) then + MaxWorkingPressure3= CementPumpReliefValveIsSet + else + MaxWorkingPressure3= 6000. !psi + endif + + + if (State1) then + MaxWorkingPressure= min(MaxWorkingPressure1 , MaxWorkingPressure2 , MaxWorkingPressure3) + MaxWorkingPressure1= MaxWorkingPressure + MaxWorkingPressure2= MaxWorkingPressure + MaxWorkingPressure3= MaxWorkingPressure + endif + + + if (State2) then + MaxWorkingPressure= min(MaxWorkingPressure1 , MaxWorkingPressure2) + MaxWorkingPressure1= MaxWorkingPressure + MaxWorkingPressure2= MaxWorkingPressure + endif + + if (State3) then + MaxWorkingPressure= min(MaxWorkingPressure1 , MaxWorkingPressure3) + MaxWorkingPressure1= MaxWorkingPressure + MaxWorkingPressure3= MaxWorkingPressure + endif + + + if (State4) then + MaxWorkingPressure= min(MaxWorkingPressure2 , MaxWorkingPressure3) + MaxWorkingPressure2= MaxWorkingPressure + MaxWorkingPressure3= MaxWorkingPressure + endif + ! Calculating Maximum Working Pressure ****** + +!=========================================================================================================================== +!=========================================================================================================================== + + + ! ****** Blown Conditions + + !G: PumpsToString Coefficient + !jJ2,Jj12,Jj13: TanksToMudPump Coefficient + !H: Pumps To Tank_Through65 or 67 Coefficient + + !write(*,*) 'j12=' , j12 + !write(*,*) 'H83=' , H83 + !write(*,*) 'DumpPump2=' , DumpPump2 + !write(*,*) 'G83=' , G83 + + + + + PumpPressure1= jj2*(1-H82)*(1-DumpPump1)*G82* PressureGauges(1) + PumpPressure2= jj12*(1-H83)*(1-DumpPump2)*G83* PressureGauges(1) + PumpPressure3= jj13*(1-H84)*(1-DumpCementPump)*G84* PressureGauges(1) + ! + !write(*,*) 'jj2 , H82 , DumpPump1 , G82,PresCsureGauges(1)=' , jj2 , H82 , DumpPump1 , G82,PressureGauges(1) + !write(*,*) '1)PumpPressure1=' , PumpPressure1 + + !write(*,*) 'PumpPressure2=' , PumpPressure2 + + PumpToManifoldMudVol = 3.0 * 42.0 + !PumpToManifoldCompressedMudVol = PumpToManifoldCompressedMudVol + MP1_Q / ConvMinToSec * dt + !PumpToManifoldDeltaPDueToCompressibility = PumpToManifoldCompressedMudVol / (MudCompressibility * PumpToManifoldMudVol) + + IF(Mp1_NoPath == 1 .and. ThereIsPathFrom_71_72_73_To_82 .and. MP1_Q > 0.0) then + PumpToManifoldCompressedMudVol = PumpToManifoldCompressedMudVol + MP1_Q / ConvMinToSec * dt + PumpPressure1= PumpToManifoldCompressedMudVol / (MudCompressibility * PumpToManifoldMudVol) + write(*,*) '21)PumpPressure1=' , PumpPressure1 + + WRITE (*,*) ' valve 1 ', Valve(1)%Status + WRITE (*,*) ' valve 4 ', Valve(4)%Status + WRITE (*,*) ' valve 6 ', Valve(6)%Status + WRITE (*,*) ' valve 7 ', Valve(7)%Status + WRITE (*,*) ' valve 8 ', Valve(8)%Status + WRITE (*,*) ' valve 9 ', Valve(9)%Status + WRITE (*,*) ' valve 13 ', Valve(13)%Status + WRITE (*,*) ' valve 68 ', Valve(68)%Status + WRITE (*,*) ' valve 69 ', Valve(69)%Status + WRITE (*,*) ' valve 48 ', Valve(48)%Status + + !call DisplayOpenPathsWrite() + + ENDIF + + IF(Mp2_NoPath == 1 .and. ThereIsPathFrom_71_72_73_To_83 .and. MP2_Q > 0.0 ) then + PumpToManifoldCompressedMudVol = PumpToManifoldCompressedMudVol + MP2_Q / ConvMinToSec * dt + PumpPressure2= PumpToManifoldCompressedMudVol / (MudCompressibility * PumpToManifoldMudVol) + write(*,*) '22)PumpPressure1=' , PumpPressure2 + + WRITE (*,*) ' -valve 1 ', Valve(1)%Status + WRITE (*,*) ' -valve 4 ', Valve(4)%Status + WRITE (*,*) ' -valve 6 ', Valve(6)%Status + WRITE (*,*) ' -valve 7 ', Valve(7)%Status + WRITE (*,*) ' -valve 8 ', Valve(8)%Status + WRITE (*,*) ' -valve 9 ', Valve(9)%Status + WRITE (*,*) ' -valve 13 ', Valve(13)%Status + WRITE (*,*) ' -valve 68 ', Valve(68)%Status + WRITE (*,*) ' -valve 69 ', Valve(69)%Status + WRITE (*,*) ' -valve 48 ', Valve(48)%Status + + !call DisplayOpenPathsWrites() + ENDIF + + IF(Cp_NoPath == 1 .and. ThereIsPathFrom_71_72_73_To_84 .AND. MP3_Q > 0.0 ) then + PumpToManifoldCompressedMudVol = PumpToManifoldCompressedMudVol + MP3_Q / ConvMinToSec * dt + PumpPressure3= PumpToManifoldCompressedMudVol / (MudCompressibility * PumpToManifoldMudVol) + ENDIF + +!***************************************************************************** + + + !if(((Mp1_NoPath == 1 .and. ThereIsPathFrom_71_72_73_To_82) .or. ( PumpPressure1 >= MaxWorkingPressure1 ) & + !.or.(J14> 0 .and. j4==0 .and. j9==0 .and. NOT(ALLOCATED(GasPocketWeight%Array)))) .and. MP1_Q > 0.0 ) then + !write(*,*) ' failurrrrre ' + + if (PumpPressure1 >= MaxWorkingPressure1 .and. MP1_Q > 0.0) then + + + write(*,*) 'mp1,if=' , PumpPressure1 , MaxWorkingPressure1 , MP1_Q + Pump1BlownCount = Pump1BlownCount + 1 + !if (Pump1BlownStarted == .FALSE.) then + ! write(*,*) 'if (Pump1BlownStarted == .FALSE. ) then' + ! Pump1BlownInTimeStep = SimulationTime + BlownThresholdInSecond + ! Pump1BlownStarted = .TRUE. + !endif + !write(*,*) 'SimulationTime===', SimulationTime, Pump1BlownInTimeStep + if(MudPump1ReliefValveIsSet .and. Pump1BlownCount >= BlownThreshold) then + write(*,*) 'valve 65 open, BLOWN' + call ChangeValve(65, .TRUE.) + PumpToManifoldCompressedMudVol= 0.0 + Pump1BlownCount = 0 + !Pump1BlownStarted = .FALSE. + !else + ! write(*,*) 'PumpPressure1= 6000 psi' + ! PumpPressure1= 6000. !psi + endif + !else + !Pump1BlownInTimeStep = 0 + !Pump1BlownStarted = .FALSE. + !write(*,*) 'Pump1BlownStarted = .FALSE.' + endif + + !write(*,*) ' valve 65=' , Valve(65)%Status + + + + !if(((Mp2_NoPath == 1 .and. ThereIsPathFrom_71_72_73_To_83) .or. PumpPressure2 >= MaxWorkingPressure2 & + !.or.(J14> 0 .and. j4==0 .and. j9==0 .and. NOT(ALLOCATED(GasPocketWeight%Array))) ) .and. MP2_Q > 0.0 ) then + + if(PumpPressure2 >= MaxWorkingPressure2 .and. MP2_Q > 0.0 ) then + + write(*,*) 'mp2,if=' , PumpPressure2 , MaxWorkingPressure2 , MP2_Q + Pump2BlownCount = Pump2BlownCount + 1 + !if (Pump2BlownStarted == .FALSE. ) then + ! Pump2BlownInTimeStep = SimulationTime + BlownThresholdInSecond + ! Pump2BlownStarted = .TRUE. + !endif + !if (MudPump2ReliefValveIsSet .and. SimulationTime >= Pump2BlownInTimeStep .and. Pump2BlownStarted) then + if (MudPump2ReliefValveIsSet .and. Pump2BlownCount >= BlownThreshold) then + write(*,*) 'valve 66 open, BLOWN' + call ChangeValve(66, .TRUE.) + PumpToManifoldCompressedMudVol= 0.0 + Pump2BlownCount = 0 + !Pump2BlownInTimeStep = 0 + !Pump2BlownStarted = .FALSE. + !else + ! PumpPressure2= 6000. !psi + endif + !else + !Pump2BlownInTimeStep = 0 + !Pump2BlownStarted = .FALSE. + endif + + !if(((Cp_NoPath == 1 .and. ThereIsPathFrom_71_72_73_To_84) .or. PumpPressure3 >= MaxWorkingPressure3 & + !.or.(J14> 0 .and. j4==0 .and. j9==0 .and. NOT(ALLOCATED(GasPocketWeight%Array)))) .and. MP3_Q > 0.0 ) then + + if(PumpPressure3 >= MaxWorkingPressure3 .and. MP3_Q > 0.0 ) then + Pump3BlownCount = Pump3BlownCount + 1 + if (CementPumpReliefValveIsSet .and. Pump3BlownCount >= BlownThreshold) then + !write(*,*) 'valve 67 open, BLOWN' + call ChangeValve(67, .TRUE.) + PumpToManifoldCompressedMudVol= 0.0 + Pump3BlownCount = 0 + !else + ! PumpPressure3= 6000. !psi + endif + !else + !Pump3BlownInTimeStep = 0 + !Pump3BlownStarted = .FALSE. + endif + + !write(*,*) '3)PumpPressure1=' , PumpPressure1 + + if (PumpPressure1>= 6000.) then + Pump1BlownCount = Pump1BlownCount + 1 + if(Pump1BlownCount >= BlownThreshold) then + call ChangeValve(65, .TRUE.) + PumpToManifoldCompressedMudVol= 0.0 + call Activate_Pump1Failure() + Pump1OffFailure= .true. + Pump1BlownCount = 0 + endif + !else + !Pump1BlownInTimeStep = 0 + !Pump1BlownStarted = .FALSE. + endif + + if (PumpPressure2>= 6000.) then + Pump2BlownCount = Pump2BlownCount + 1 + if(Pump2BlownCount >= BlownThreshold) then + call ChangeValve(66, .TRUE.) + PumpToManifoldCompressedMudVol= 0.0 + call Activate_Pump2Failure() + Pump2OffFailure= .true. + Pump2BlownCount = 0 + endif + !else + !Pump2BlownInTimeStep = 0 + !Pump2BlownStarted = .FALSE. + endif + + if (PumpPressure3>= 6000.) then + Pump3BlownCount = Pump3BlownCount + 1 + if(Pump3BlownCount >= BlownThreshold) then + call ChangeValve(67, .TRUE.) + PumpToManifoldCompressedMudVol= 0.0 + call Activate_Pump3Failure() + Pump3OffFailure= .true. + Pump3BlownCount = 0 + endif + !else + !Pump3BlownInTimeStep = 0 + !Pump3BlownStarted = .FALSE. + endif + ! Blown Conditions ******** + + +!=========================================================================================================================== +!=========================================================================================================================== + if (j9 > 0 ) then !.and. WellisNOTFull== .false.) then !WellToBellNipple + !write(*,*) 'j9 is open' + + + !MUD(7)%Q= ( Ann_Saved_MudDischarged_Volume_Final+Ann_Kick_Saved_Volume_Final - ((Qlost/60.0d0)*DeltaT_Mudline) )*60.d0/DeltaT_Mudline + MUD(7)%Q= ( MudVolume_InjectedFromAnn + Ann_Kick_Saved_Volume )*60.d0/DeltaT_Mudline !Injected is referred only to Mud + + + if (j4 > 0) then + BellNipple_FlowCoef= 13.625/(13.625+ChokeLineId) ! 13.625= BellNipple ID (inch) + MUD(7)%Q= BellNipple_FlowCoef * MUD(7)%Q + endif + + !total_annFlow= total_annFlow+(AnnulusFlowRateFinal/600.d0) + !total_DeltaVPipe= total_DeltaVPipe + DeltaVolumePipe + !write(*,*) 'total_annFlow,total_DeltaVPipe' , total_annFlow,total_DeltaVPipe + + + + if (MUD(7)%Q < 0.0 ) MUD(7)%Q= 0.0 !.or. WellisNOTFull== .true.) MUD(7)%Q= 0.0 + !!AnnulusFlowRateFinal: flow from string mud , DeltaVolumeOp: due to trip in + + !write(*,*) 'MUD(7)%Q=' , MUD(7)%Q + !write(*,*) 'MudVolume_InjectedFromAnn-WellToBellNipple=' , MudVolume_InjectedFromAnn + !write(*,*) 'Ann_Kick_Saved_Volume=' , Ann_Kick_Saved_Volume + + sys_total_injected= sys_total_injected+ MudVolume_InjectedFromAnn + + + if (ChokePanelStrokeResetSwitch == 1) then + sys_total_injected= 0. + endif + + !write(*,*) 'sys_total_injected=' , sys_total_injected + + + + + + !WellOutletDensity= Ann_Density%Last() ! (ppg) <<< in CirculationCodeSelect Code + + + if ((BellNippleVolume+((MUD(7)%Q/60.)*DeltaT_Mudline)) /= 0.0) then + + BellNippleDensity= ((BellNippleDensity*BellNippleVolume)+(WellOutletDensity*(MUD(7)%Q/60.)*DeltaT_Mudline))/(BellNippleVolume+((MUD(7)%Q/60.)*DeltaT_Mudline)) + else + BellNippleDensity= 0.0 + endif + + + !IF (WellisNOTFull== .false.) THEN ! well must be full to do this order + BellNippleVolume= BellNippleVolume+ ((MUD(7)%Q/60.)*DeltaT_Mudline) + !ENDIF + + + VolumeToBellNipple= VolumeToBellNipple + BellNippleVolume + !write(*,*) 'VolumeToBellNipple*****=' , VolumeToBellNipple + + !write(*,*) 'BellNippleVolume in j9=' , BellNippleVolume , MUD(7)%Q + + + + + endif + + + if (j9 == 0 ) then !.or. WellisNOTFull== .true.) then + !write(*,*) 'WellisNOTFull=' , WellisNOTFull + MUD(7)%Q=0.0 ! for normal circulation input + endif + + if (j9 > 0) then + WellToPitsOpen= .true. + else + WellToPitsOpen= .false. + endif + + +!=========================================================================================================================== +!=========================================================================================================================== + + + if (j10 > 0) then !MudBucketToBellNipple + !write(*,*) 'j10 is open' + + ! + !MudBucketVolume= 0. + !MudBucketDensity= 0. + + + ! MudBucketVolume gets value in DisconnectingPipe subroutine + BellNippleVolume= BellNippleVolume+ MudBucketVolume + BellNippleDensity= ActiveTankDensity + + MudBucketVolume= 0. + + + endif + + + +!=========================================================================================================================== +!=========================================================================================================================== + + if (j6 > 0) then !TripTankToActiveTank And BellNipple + !write(*,*) 'j6 is open' + !write(*,*) 'active by j6' + MUD(6)%Q= 300. ! constant flow rate(gpm) + + + TripTankVolumeCalc= TripTankVolumeCalc - ((MUD(6)%Q/60.)*DeltaT_Mudline) + + + !write(*,*) 'ActiveTankVolume before=', ActiveTankVolume + + + if (j6 == 1 .and. D71==1) then + !write(*,*) 'add to active' + ActiveTankDensity= ((ActiveTankDensity*ActiveTankVolume)+(TripTankDensityCalc*(MUD(6)%Q/60.)*DeltaT_Mudline))/(ActiveTankVolume+((MUD(6)%Q/60.)*DeltaT_Mudline)) + ActiveTankVolume= ActiveTankVolume+ ((MUD(6)%Q/60.)*DeltaT_Mudline) + !write(*,*) 'ActiveTankVolume after=', ActiveTankVolume + + endif + + if (j6 == 1 .and. D80==1) then + BellNippleDensity= ((BellNippleDensity*BellNippleVolume)+(TripTankDensityCalc*(MUD(6)%Q/60.)*DeltaT_Mudline))/(BellNippleVolume+((MUD(6)%Q/60.)*DeltaT_Mudline)) + BellNippleVolume= BellNippleVolume+ ((MUD(6)%Q/60.)*DeltaT_Mudline) + endif + + if (j6 == 2) then + ActiveTankDensity= ((ActiveTankDensity*ActiveTankVolume)+(TripTankDensityCalc*(0.5*MUD(6)%Q/60.)*DeltaT_Mudline))/(ActiveTankVolume+((0.5*MUD(6)%Q/60.)*DeltaT_Mudline)) + BellNippleDensity= ((BellNippleDensity*BellNippleVolume)+(TripTankDensityCalc*(0.5*MUD(6)%Q/60.)*DeltaT_Mudline))/(BellNippleVolume+((0.5*MUD(6)%Q/60.)*DeltaT_Mudline)) + + ActiveTankVolume= ActiveTankVolume+ ((0.5*MUD(6)%Q/60.)*DeltaT_Mudline) + BellNippleVolume= BellNippleVolume+ ((0.5*MUD(6)%Q/60.)*DeltaT_Mudline) + endif + + + + ActiveTankVolume=min(ActiveTankVolume , ActiveTotalTankCapacityGal-ActiveSettledContentsGal) + !if ActiveTankVolume is higher, excess amount is dumped + + endif + + if (j6 == 0) then + MUD(6)%Q=0.0 + endif + +!=========================================================================================================================== +!=========================================================================================================================== + + CALL Set_FlowFromReturnLine(.false.) + + + if (j3 > 0) then !BellNippleToPits-FullWell - must be after **WellToBellNipple(j9)** + !write(*,*) 'j3 is open' + + !write(*,*) 'active by j3' + !BellNipple flow rate= sum flow rate (well+ mudbucket+ triptank) + + !Well to BellNipple: BellNippleVolume + !MudBucket to BellNipple: BellNippleVolume + !TripTnak to BellNipple: BellNippleVolume + + MUD(3)%Q = (BellNippleVolume/DeltaT_Mudline)*60.d0 ! (gpm) + + + !write(*,*) 'BellNippleVolume in j3 =' , BellNippleVolume + + !write(*,*) 'MUD(3)%Q =' , MUD(3)%Q + + call Set_FlowRate(real(100.*min(MUD(3)%Q,PedalMeter)/PedalMeter, 8)) ! for unity display + unityreturn = real(100.*min(MUD(3)%Q,PedalMeter)/PedalMeter, 8) + + !write(*,*) 'unity return=' , real(100.*min(MUD(3)%Q,PedalMeter)/PedalMeter, 8) + + + + + if (MUD(3)%Q > PedalMeter .and. B78==0) then + BellNippleDumpVolume= BellNippleDumpVolume + ((MUD(3)%Q/60.)*DeltaT_Mudline - (PedalMeter/60.)*DeltaT_Mudline) + + !BellNippleDumpRate= MUD(3)%Q - PedalMeter + + CALL Set_FlowFromReturnLine(.TRUE.) ! for unity display + + endif + + !VolumeToActive = VolumeToActive + BellNippleVolume + !write(*,*) 'VolumeToActive*******=' , VolumeToActive + + + active_before= ActiveTankVolume + + + BellNippleVolume= BellNippleVolume- ((MUD(3)%Q/60.)*DeltaT_Mudline) ! to be 0. + + + + if ( BellNippleDensity > 1.0) then + + if (j3 == 1 .and. B71==1) then !(volumes in galon) + + + MUD(3)%Q = min(MUD(3)%Q , PedalMeter) + !write(*,*) 'MUD(3)%Q=' , MUD(3)%Q + + IF (ActiveAutoDensity == .FALSE.) THEN + + ActiveTankDensity= ((ActiveTankDensity*ActiveTankVolume)+(BellNippleDensity*(MUD(3)%Q/60.)*DeltaT_Mudline))/(ActiveTankVolume+((MUD(3)%Q/60.)*DeltaT_Mudline)) + ActiveTankVolume= ActiveTankVolume+ ((MUD(3)%Q/60.)*DeltaT_Mudline) + + !write(*,*) 'active increase bell 1=' , ((MUD(3)%Q/60.)*DeltaT_Mudline) + + + ELSEIF (ActiveAutoDensity .and. BellNippleDensity > ActiveTankDensity) THEN + + + ActiveTankVolume= ActiveTankVolume+ ((20.8d0-BellNippleDensity)/(20.8d0-ActiveTankDensity))*((MUD(3)%Q/60.d0)*DeltaT_Mudline) ! asumed cutting density = 20.8 ppg + !write(*,*) 'active increase bell 2=' , ((20.8d0-BellNippleDensity)/(20.8d0-ActiveTankDensity))*((MUD(3)%Q/60.d0)*DeltaT_Mudline) + ELSEIF (ActiveAutoDensity .and. BellNippleDensity < 5.0) THEN + + ActiveTankVolume= ActiveTankVolume+ ((2.d0-BellNippleDensity)/(2.d0-ActiveTankDensity))*((MUD(3)%Q/60.d0)*DeltaT_Mudline) ! asumed GAS density = 2.0 ppg + !write(*,*) 'active increase bell 3=' , ((2.d0-BellNippleDensity)/(2.d0-ActiveTankDensity))*((MUD(3)%Q/60.d0)*DeltaT_Mudline) + + ELSEIF (ActiveAutoDensity .and. 5.0 < BellNippleDensity .and. BellNippleDensity <= ActiveTankDensity) THEN + !write(*,*) ' Auto true 3' + + + ActiveTankVolume= ActiveTankVolume+ ((MUD(3)%Q/60.d0)*DeltaT_Mudline) + !write(*,*) 'active increase bell 4=' , ((MUD(3)%Q/60.d0)*DeltaT_Mudline) + + ENDIF + endif + + if (j3 == 1 .and. B77==1) then + + MUD(3)%Q = min(MUD(3)%Q , PedalMeter) + + IF (ActiveAutoDensity == .FALSE.) THEN + + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(BellNippleDensity*(MUD(3)%Q/60.)*DeltaT_Mudline))/(TripTankVolumeCalc+((MUD(3)%Q/60.)*DeltaT_Mudline)) + TripTankVolumeCalc= TripTankVolumeCalc+ (MUD(3)%Q/60.)*DeltaT_Mudline + + ELSEIF (ActiveAutoDensity .and. BellNippleDensity > ActiveTankDensity) THEN + + AddedVolumeToTank= ((20.8d0-BellNippleDensity)/(20.8d0-ActiveTankDensity))*((MUD(3)%Q/60.d0)*DeltaT_Mudline) + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ActiveTankDensity*AddedVolumeToTank))/(TripTankVolumeCalc+AddedVolumeToTank) + + TripTankVolumeCalc= TripTankVolumeCalc+ AddedVolumeToTank + + ELSEIF (ActiveAutoDensity .and. BellNippleDensity < 5.0) THEN + + AddedVolumeToTank= ((2.d0-BellNippleDensity)/(2.d0-ActiveTankDensity))*((MUD(3)%Q/60.d0)*DeltaT_Mudline) ! asumed GAS density = 2.0 ppg + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ActiveTankDensity*AddedVolumeToTank))/(TripTankVolumeCalc+AddedVolumeToTank) + + TripTankVolumeCalc= TripTankVolumeCalc+ AddedVolumeToTank + + ELSEIF (ActiveAutoDensity .and. 5.0 < BellNippleDensity .and. BellNippleDensity <= ActiveTankDensity) THEN + + AddedVolumeToTank= ((MUD(3)%Q/60.d0)*DeltaT_Mudline) + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ActiveTankDensity*AddedVolumeToTank))/(TripTankVolumeCalc+AddedVolumeToTank) + + TripTankVolumeCalc= TripTankVolumeCalc+ AddedVolumeToTank + + ENDIF + + endif + + + if (j3 == 1 .and. B78==1) then + + BellNippleDumpVolume= BellNippleDumpVolume+ (MUD(3)%Q/60.d0)*DeltaT_Mudline + + !BellNippleDumpRate= MUD(3)%Q + + endif + + + + if (j3 == 2) then !78 is not allowded in this position + + MUD(3)%Q = min(MUD(3)%Q , PedalMeter) + + IF (ActiveAutoDensity == .FALSE.) THEN + + ActiveTankDensity= ((ActiveTankDensity*ActiveTankVolume)+(BellNippleDensity*(0.5*MUD(3)%Q/60.)*DeltaT_Mudline))/(ActiveTankVolume+((0.5*MUD(3)%Q/60.)*DeltaT_Mudline)) + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(BellNippleDensity*(0.5*MUD(3)%Q/60.)*DeltaT_Mudline))/(TripTankVolumeCalc+((0.5*MUD(3)%Q/60.)*DeltaT_Mudline)) + + ActiveTankVolume= ActiveTankVolume+ ((0.5*MUD(3)%Q/60.)*DeltaT_Mudline) + TripTankVolumeCalc= TripTankVolumeCalc+ ((0.5*MUD(3)%Q/60.)*DeltaT_Mudline) + + ELSEIF (ActiveAutoDensity .and. BellNippleDensity > ActiveTankDensity) THEN + + + AddedVolumeToTank= ((20.8d0-BellNippleDensity)/(20.8d0-ActiveTankDensity))*((0.5d0*MUD(3)%Q/60.d0)*DeltaT_Mudline) + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ActiveTankDensity*AddedVolumeToTank))/(TripTankVolumeCalc+AddedVolumeToTank) + + ActiveTankVolume= ActiveTankVolume+ AddedVolumeToTank + TripTankVolumeCalc= TripTankVolumeCalc+ AddedVolumeToTank + + ELSEIF (ActiveAutoDensity .and. 5.0 < ActiveTankDensity) THEN + + AddedVolumeToTank= ((2.d0-BellNippleDensity)/(2.d0-ActiveTankDensity))*((0.5d0*MUD(3)%Q/60.d0)*DeltaT_Mudline) ! asumed GAS density = 2.0 ppg + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ActiveTankDensity*AddedVolumeToTank))/(TripTankVolumeCalc+AddedVolumeToTank) + + ActiveTankVolume= ActiveTankVolume+ AddedVolumeToTank + TripTankVolumeCalc= TripTankVolumeCalc+ AddedVolumeToTank + + ELSEIF (ActiveAutoDensity .and. 5.0 < BellNippleDensity .and. BellNippleDensity <= ActiveTankDensity) THEN + + AddedVolumeToTank= ((MUD(3)%Q/60.d0)*DeltaT_Mudline) + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ActiveTankDensity*AddedVolumeToTank))/(TripTankVolumeCalc+AddedVolumeToTank) + + ActiveTankVolume= ActiveTankVolume+ AddedVolumeToTank + TripTankVolumeCalc= TripTankVolumeCalc+ AddedVolumeToTank + + + ENDIF + + + endif + + endif !( BellNippleDensity > 1.0) then + + active_after= ActiveTankVolume + + active_increase = active_after - active_before + + total_active_increase= total_active_increase + active_increase + + if (ChokePanelStrokeResetSwitch == 1) then + total_active_increase= 0. + endif + + !write(*,*) 'total_active_increase=' , total_active_increase + + + + !write(*,*) 'ReturnFlowRate=MUD(3)%Q= after' , MUD(3)%Q + + ReturnFlowRate = MUD(3)%Q + + TripTankVolumeCalc = min(TripTankVolumeCalc,50.*42.) !50. BBL *42. gal/BBL = gal + !if TripTankVolumeCalc>50 BBl, excess value(TripTankVolumeCalc-50) is dumped + + ActiveTankVolume = min(ActiveTankVolume , ActiveTotalTankCapacityGal - ActiveSettledContentsGal) + !if ActiveTankVolume is higher, excess amount is dumped + !write(*,*) 'BellNippleDensity=' , BellNippleDensity + + !MudWeightOut2 = BellNippleDensity !for drillwatch display + !write(*,*) 'MudWeightOut2=' , MudWeightOut2 + + !write(*,*) + + + endif + + if (j3 == 0) then + MUD(3)%Q=0.0 ! for normal circulation input + call Set_FlowRate(0d0) + endif + + + +!=========================================================================================================================== +!=========================================================================================================================== + + + + if (j11 > 0 .and. MudChecked== .true.) then !BellNippleToWell-NonFullWell ( FillingWell_By_BellNipple subroutine is called for this state ) + !write(*,*) 'j11 is open' + MudChecked= .false. !to be sure that well is not full after arranging muds + !WellToPitsOpen = .TRUE. + + !BellNipple flow rate= sum flow rate (well+ mudbucket+ triptank) + + !Well to BellNipple: BellNippleVolume + !MudBucket to BellNipple: BellNippleVolume + !TripTnak to BellNipple: BellNippleVolume + + MUD(8)%Q = (BellNippleVolume/DeltaT_Mudline)*60. + !write(*,*) 'MUD(8)%Q=' , MUD(8)%Q + + + BellNippleVolume= BellNippleVolume- ((MUD(8)%Q/60.)*DeltaT_Mudline) ! to be 0. + !write(*,*) 'BellNippleVolume-2nd Mode=' , BellNippleVolume + + !BellNippleDensity + ! + ! + !BellNippleDensity , MUD(8)%Q be code gel dade beshe + !shart: j11 > 0 , MUD(8)%Q > 0.0 + + + endif + + if (j11 == 0) then + MUD(8)%Q=0.0 ! for normal circulation input + !WellToPitsOpen= .false. + endif + + + +!=========================================================================================================================== +!=========================================================================================================================== + + + + !WRITE (*,*) 'choke condition', j4, ChokeLineNOTFull + if (j4 > 0 .and. ChokeLineNOTFull== .false.) then !WellToChokeManifold(Through 26) + !write(*,*) 'j4 is open' + !write(*,*) 'active by j4' + + + + !MUD(4)%Q= ( Ann_Saved_MudDischarged_Volume_Final+Ann_Kick_Saved_Volume_Final - ((Qlost/60.0d0)*DeltaT_Mudline) )*60.d0/DeltaT_Mudline + MUD(4)%Q= ( MudVolume_InjectedFromAnn + Ann_Kick_Saved_Volume )*60.d0/DeltaT_Mudline !Injected is referred only to Mud + + + !if ( WellisNOTFull== .true. ) MUD(4)%Q= 0.0 + + + if (j9 > 0) then + ChokeLine_FlowCoef= ChokeLineId/(13.625+ChokeLineId) ! 13.625= BellNipple ID (inch) + MUD(4)%Q= ChokeLine_FlowCoef * MUD(4)%Q + endif + + + !call Log_1('MUD(4)%Q=', MUD(4)%Q) + + ChokeOutletDensity= ChokeLine_Density%Last() ! <<< in CirculationCodeSelect Code + + + !MudWeightOut2= ChokeOutletDensity !for drillwatch display +! + !AnnulusFlowRateFinal: flow from string mud , DeltaVolumeOp: due to trip in + + + + + + RealJ4= real(j4) + + !C71: Active Tank C77: Trip Tank C78: ChokeManifoldDump + + if ( BellNippleDensity > 1.0) then + ! IN ALL CONDITIONS EFFECT OF 78 IS COMPUTED BY RealJ4 + if (C71==1 .and. C77==0) then !(volumes in galon) RealJ4: 1 OR 2(IF 78 IS OPEN) + + IF (ActiveAutoDensity == .FALSE.) THEN + + ActiveTankDensity= ((ActiveTankDensity*ActiveTankVolume)+(ChokeOutletDensity*((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline))/(ActiveTankVolume+(((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline)) + ActiveTankVolume= ActiveTankVolume+ (((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline) + !write(*,*) 'active increase choke1=' , (((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline) + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline) + + ELSEIF (ActiveAutoDensity .and. ChokeOutletDensity > ActiveTankDensity) THEN + + + ActiveTankVolume= ActiveTankVolume+ ((20.8d0-ChokeOutletDensity)/(20.8d0-ActiveTankDensity))*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) ! asumed cutting density = 20.8 ppg + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1./RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + !write(*,*) 'active increase choke2=' , ((20.8d0-ChokeOutletDensity)/(20.8d0-ActiveTankDensity))*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + + ELSEIF (ActiveAutoDensity .and. ChokeOutletDensity < 5.0) THEN + + ActiveTankVolume= ActiveTankVolume+ ((2.d0-ChokeOutletDensity)/(2.d0-ActiveTankDensity))*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) ! asumed GAS density = 2.0 ppg + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + !write(*,*) 'active increase choke3=' ,((2.d0-ChokeOutletDensity)/(2.d0-ActiveTankDensity))*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + + ELSEIF (ActiveAutoDensity .and. 5.0 < ChokeOutletDensity .and. ChokeOutletDensity <= ActiveTankDensity) THEN + !write(*,*) ' Auto true 3' + + + ActiveTankVolume= ActiveTankVolume+ (((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + + !write(*,*) 'active increase choke4=' , (((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + + ENDIF + + + + endif + + if (C77==1 .and. C71==0) then !RealJ4: 1 OR 2(IF 78 IS OPEN) + + IF (ActiveAutoDensity == .FALSE.) THEN + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ChokeOutletDensity*((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline))/(TripTankVolumeCalc+(((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline)) + TripTankVolumeCalc= TripTankVolumeCalc+ (((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline) + + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline) + + ELSEIF (ActiveAutoDensity .and. ChokeOutletDensity > ActiveTankDensity) THEN + + AddedVolumeToTank= ((20.8d0-ChokeOutletDensity)/(20.8d0-ActiveTankDensity))*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ActiveTankDensity*AddedVolumeToTank))/(TripTankVolumeCalc+AddedVolumeToTank) + + TripTankVolumeCalc= TripTankVolumeCalc+ AddedVolumeToTank + + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + + + ELSEIF (ActiveAutoDensity .and. ChokeOutletDensity < 5.0) THEN + + AddedVolumeToTank= ((2.d0-ChokeOutletDensity)/(2.d0-ActiveTankDensity))*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) ! asumed GAS density = 2.0 ppg + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ActiveTankDensity*AddedVolumeToTank))/(TripTankVolumeCalc+AddedVolumeToTank) + + TripTankVolumeCalc= TripTankVolumeCalc+ AddedVolumeToTank + + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + + ELSEIF (ActiveAutoDensity .and. 5.0 < ChokeOutletDensity .and. ChokeOutletDensity <= ActiveTankDensity) THEN + + AddedVolumeToTank= (((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ActiveTankDensity*AddedVolumeToTank))/(TripTankVolumeCalc+AddedVolumeToTank) + + TripTankVolumeCalc= TripTankVolumeCalc+ AddedVolumeToTank + + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + + ENDIF + + + + endif + + if (C71==1 .and. C77==1) then !RealJ4: 2 OR 3(IF 78 IS OPEN) + + IF (ActiveAutoDensity == .FALSE.) THEN + ActiveTankDensity= ((ActiveTankDensity*ActiveTankVolume)+(ChokeOutletDensity*((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline))/(ActiveTankVolume+(((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline)) + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ChokeOutletDensity*((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline))/(TripTankVolumeCalc+(((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline)) + + ActiveTankVolume= ActiveTankVolume+ (((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline) + TripTankVolumeCalc= TripTankVolumeCalc+ (((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline) + + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline) + + ELSEIF (ActiveAutoDensity .and. ChokeOutletDensity > ActiveTankDensity) THEN + + + AddedVolumeToTank= ((20.8d0-ChokeOutletDensity)/(20.8d0-ActiveTankDensity))*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ActiveTankDensity*AddedVolumeToTank))/(TripTankVolumeCalc+AddedVolumeToTank) + + ActiveTankVolume= ActiveTankVolume+ AddedVolumeToTank + TripTankVolumeCalc= TripTankVolumeCalc+ AddedVolumeToTank + + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + + ELSEIF (ActiveAutoDensity .and. 5.0 < ActiveTankDensity) THEN + + AddedVolumeToTank= ((2.d0-ChokeOutletDensity)/(2.d0-ActiveTankDensity))*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) ! asumed GAS density = 2.0 ppg + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ActiveTankDensity*AddedVolumeToTank))/(TripTankVolumeCalc+AddedVolumeToTank) + + ActiveTankVolume= ActiveTankVolume+ AddedVolumeToTank + TripTankVolumeCalc= TripTankVolumeCalc+ AddedVolumeToTank + + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + + ELSEIF (ActiveAutoDensity .and. 5.0 < ChokeOutletDensity .and. ChokeOutletDensity <= ActiveTankDensity) THEN + + AddedVolumeToTank= ((1.d0/RealJ4)*MUD(4)%Q/60.d0) + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ActiveTankDensity*AddedVolumeToTank))/(TripTankVolumeCalc+AddedVolumeToTank) + + ActiveTankVolume= ActiveTankVolume+ AddedVolumeToTank + TripTankVolumeCalc= TripTankVolumeCalc+ AddedVolumeToTank + + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1.d0/RealJ4)*MUD(4)%Q/60.d0)*DeltaT_Mudline) + + + ENDIF + + + endif + + + if (C71==0 .and. C77==0 .and. C78==1) then !RealJ4: 1 + ! autodensity niaz nadarad + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ (((1./RealJ4)*MUD(4)%Q/60.)*DeltaT_Mudline) + + endif + + + + endif ! if ( BellNippleDensity > 1.0) then + + + TripTankVolumeCalc=min(TripTankVolumeCalc,50.*42.) !50. BBL *42. gal/BBL = gal + !if TripTankVolumeCalc>50 BBl, excess value(TripTankVolumeCalc-50) is dumped + + ActiveTankVolume=min(ActiveTankVolume , ActiveTotalTankCapacityGal-ActiveSettledContentsGal) + !if ActiveTankVolume is higher, excess amount is dumped + + endif + + + + + + if (j4 == 0 .or. ChokeLineNOTFull== .true.) then + !Pressure_BeforeChokes=0.0 ! for normal circulation input + MUD(4)%Q=0.0 ! for CirculationCodeSelect input. + endif + + + if (j4 > 0) then + WellToChokeManifoldOpen= .true. + else + WellToChokeManifoldOpen= .false. + endif + +!=========================================================================================================================== +!=========================================================================================================================== + + if (j18 > 0) then !StandPipeManifoldToChokeManifold-Through ChokeLine + !write(*,*) 'j18 is open' + !write(*,*) 'active by j18' + +! STEP 1: REDUCTION FROM PUMPS STEP 1: REDUCTION FROM PUMPS STEP 1: REDUCTION FROM PUMPS (SAME TO PumpsToString LINE) + ! (NOT NEEDED) + + + +! STEP 2: ADD TO TANKS STEP 2: ADD TO TANKS STEP 2: ADD TO TANKS STEP 2: ADD TO TANKS (SAME TO WellToChokeManifold LINE) + + !Pump1toCh: PumpsToChokeManifold Coefficient + !Jj2,Jj12,Jj13: TanksToMudPump Coefficient + !H: Pumps To Tank_Through65 or 67 Coefficient + + MUD(9)%Q= jj2*(1-H82)*(1-DumpPump1)*Pump1toCh*PUMP(1)%Flow_Rate + jj12*(1-H83)*(1-DumpPump2)*Pump2toCh*PUMP(2)%Flow_Rate + jj13*(1-H84)*(1-DumpCementPump)*Pump3toCh*PUMP(3)%Flow_Rate + + + + Denominator_a= (jj2*(1.-H82)*(1.-DumpPump1)*Pump1toCh*PUMP(1)%Flow_Rate + jj12*(1.-H83)*(1.-DumpPump2)*Pump2toCh*PUMP(2)%Flow_Rate + jj13*(1.-H84)*(1.-DumpCementPump)*Pump3toCh*PUMP(3)%Flow_Rate) + + if (Denominator_a /= 0.) then + Density_Ch= (jj2*(1.-H82)*(1.-DumpPump1)*Pump1toCh*Mp1Density*PUMP(1)%Flow_Rate + jj12*(1.-H83)*(1.-DumpPump2)*Pump2toCh*Mp2Density*PUMP(2)%Flow_Rate + jj13*(1.-H84)*(1.-DumpCementPump)*Pump3toCh*Mp3Density*PUMP(3)%Flow_Rate)/ & + Denominator_a + !write(*,*) 'Density_Ch=' , Density_Ch + ! + ! else + !Density_Ch= 0.0 + endif + + + RealJ18= M71+M77+M78 + + !C71: Active Tank C77: Trip Tank C78: ChokeManifoldDump + + + ! IN ALL CONDITIONS EFFECT OF 78 IS COMPUTED BY RealJ18 + if (M71==1 .and. M77==0) then !(volumes in galon) RealJ18: 1 OR 2(IF 78 IS OPEN) + + ! autodensity niaz nadarad + ActiveTankDensity= ((ActiveTankDensity*ActiveTankVolume)+(Density_Ch*((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline))/(ActiveTankVolume+(((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline)) + ActiveTankVolume= ActiveTankVolume+ (((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline) + + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline) + + endif + + if (M77==1 .and. M71==0) then !RealJ18: 1 OR 2(IF 78 IS OPEN) + + ! autodensity niaz nadarad + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(Density_Ch*((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline))/(TripTankVolumeCalc+(((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline)) + TripTankVolumeCalc= TripTankVolumeCalc+ (((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline) + + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline) + + endif + + if (M71==1 .and. M77==1) then !RealJ18: 2 OR 3(IF 78 IS OPEN) + + ! autodensity niaz nadarad + ActiveTankDensity= ((ActiveTankDensity*ActiveTankVolume)+(Density_Ch*((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline))/(ActiveTankVolume+(((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline)) + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(Density_Ch*((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline))/(TripTankVolumeCalc+(((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline)) + + ActiveTankVolume= ActiveTankVolume+ (((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline) + TripTankVolumeCalc= TripTankVolumeCalc+ (((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline) + + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ C78*(((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline) + + endif + + + if (M71==0 .and. M77==0 .and. M78==1) then !RealJ18: 1 + ! autodensity niaz nadarad + ChokeManifoldDumpVolume= ChokeManifoldDumpVolume+ (((1./RealJ18)*MUD(9)%Q/60.)*DeltaT_Mudline) + + endif + + + + + + + + + TripTankVolumeCalc=min(TripTankVolumeCalc,50.*42.) !50. BBL *42. gal/BBL = gal + !if TripTankVolumeCalc>50 BBl, excess value(TripTankVolumeCalc-50) is dumped + + ActiveTankVolume=min(ActiveTankVolume , ActiveTotalTankCapacityGal-ActiveSettledContentsGal) + !if ActiveTankVolume is higher, excess amount is dumped + + endif + + + if (j18 == 0) then + MUD(9)%Q=0.0 + endif + + +!=========================================================================================================================== +!=========================================================================================================================== + + if (j5 > 0 .and. (ActiveTankVolume/ActiveTankFloorArea) > (TripTankVolumeCalc/TripTankFloorArea)) then !ActiveTankToTripTank + ! second condition is for Utube flow + !write(*,*) 'j5 is open' + + ! ActiveTankVolume/ActiveTankFloorArea... means tank height + MUD(5)%Q= 300. ! constant flow rate(gpm) + + + ActiveTankVolume= ActiveTankVolume - ((MUD(5)%Q/60.)*DeltaT_Mudline) + TripTankVolumeCalc= TripTankVolumeCalc + ((MUD(5)%Q/60.)*DeltaT_Mudline) + + TripTankDensityCalc= ((TripTankDensityCalc*TripTankVolumeCalc)+(ActiveTankDensity*(MUD(5)%Q/60.)*DeltaT_Mudline))/(TripTankVolumeCalc+((MUD(5)%Q/60.)*DeltaT_Mudline)) + + + + TripTankVolumeCalc=min(TripTankVolumeCalc,50.*42.) !50. BBL *42. gal/BBL = gal + !if TripTankVolumeCalc>50, excess value(TripTankVolumeCalc-50) is dumped + + endif + + if (j5 == 0) then + MUD(5)%Q=0.0 + endif + +!=========================================================================================================================== +!=========================================================================================================================== + + if (j16 > 0) then !PathsToGauge75 + + if (K79 == 1) then + + PressureGauge75= PressureGauges(1) !String to Gauge75 + + elseif (K82 == 1 .and. k83 == 0 .and. k84 == 0 .and. k78 == 0) then + PressureGauge75= PumpPressure1 + elseif (K82 == 0 .and. k83 == 1 .and. k84 == 0 .and. k78 == 0) then + PressureGauge75= PumpPressure2 + elseif (K82 == 0 .and. k83 == 0 .and. k84 == 1 .and. k78 == 0) then + PressureGauge75= PumpPressure3 + elseif (K82 == 0 .and. k83 == 0 .and. k84 == 0 .and. k78 == 1) then + PressureGauge75= 0. + endif + + !if (K82 == 1) PressureGauge75= PumpPressure1 !Pump1 to Gauge75' + !if (K83 == 1) PressureGauge75= PumpPressure2 !Pump2 to Gauge75 + !if (K84 == 1) PressureGauge75= PumpPressure3 !Pump3 to Gauge75 + !if (K78 == 1) PressureGauge75= 0. !Dump to Gauge75 + + endif + + + StandPipeGauge1= (1 - StandPipeGauge1Malf) * PressureGauge75 ! for STManifold Display + !write(*,*) 'PressureGauge75=' , PressureGauge75 + !P1toSt= jj2*(1-H82)*(1-DumpPump1)*G82 + !P2toSt= jj12*(1-H83)*(1-DumpPump2)*G83 + !CptoSt= jj13*(1-H84)*(1-DumpCementPump)*G84 +!=========================================================================================================================== +!=========================================================================================================================== + + if (j17 > 0) then !PumpsToGauge76 + + if (L79 == 1) then + + PressureGauge76= PressureGauges(1) !String to Gauge76 + + elseif (L82 == 1 .and. L83 == 0 .and. L84 == 0 .and. L78 == 0) then + PressureGauge76= PumpPressure1 + elseif (L82 == 0 .and. L83 == 1 .and. L84 == 0 .and. L78 == 0) then + PressureGauge76= PumpPressure2 + elseif (L82 == 0 .and. L83 == 0 .and. L84 == 1 .and. L78 == 0) then + PressureGauge76= PumpPressure3 + elseif (L82 == 0 .and. L83 == 0 .and. L84 == 0 .and. L78 == 1) then + PressureGauge76= 0. + endif + + + !if (L79 == 1) PressureGauge76= PressureGauges(1) !String to Gauge76 + !if (L82 == 1) PressureGauge76= PumpPressure1 !Pump1 to Gauge76 + !if (L83 == 1) PressureGauge76= PumpPressure2 !Pump2 to Gauge76 + !if (L84 == 1) PressureGauge76= PumpPressure3 !Pump3 to Gauge76 + !if (L78 == 1) PressureGauge76= 0. !Dump to Gauge76 + + endif + StandPipeGauge2= (1 - StandPipeGauge2Malf) * PressureGauge76 ! for STManifold Display +!=========================================================================================================================== +!=========================================================================================================================== + ! + !if (PressureGauge75 == PressureGauges(1)) then ! means: 75 goes to string + ! PumpPressureDW= PressureGauges(1) !for DrillWatch Display + ! CALL Set_StandPipePressure(real(PressureGauges(1) , 8)) !for Data Display Console + !endif + ! + ! + !if (PressureGauge76 == PressureGauges(1)) then ! means: 76 goes to string + ! PumpPressureDW= PressureGauges(1) !for DrillWatch Display + ! CALL Set_StandPipePressure(real(PressureGauges(1) , 8)) !for Data Display Console + !endif + ! + !if (PressureGauge75 /= PressureGauges(1) .and. PressureGauge76 /= PressureGauges(1)) then ! means: non of gauges go to string + ! PumpPressureDW= max(PressureGauge75,PressureGauge76) !for DrillWatch Display + ! !StandPipePressureGauge= max(PressureGauge75,PressureGauge76) !for Data Display Console + ! CALL Set_StandPipePressure(real(max(PressureGauge75,PressureGauge76) , 8)) !for Data Display Console + !endif + !write(*,*) 'TapSelector=' , TapSelector + + + if (TapSelector == .false.) then + + PumpPressureDW= PressureGauge75 !for DrillWatch Display + CALL Set_StandPipePressure(real((1-DrillPipePressureMalf)*PressureGauge75 , 8)) !for Data Display Console + else + PumpPressureDW= PressureGauge76 !for DrillWatch Display + CALL Set_StandPipePressure(real((1-DrillPipePressureMalf)*PressureGauge76 , 8)) !for Data Display Console + endif + +!=========================================================================================================================== +!=========================================================================================================================== + ! SHOULD BE AT LAST TO HAVE THE CORRECT DENSITIES FOR Suction_Density_MudSystem + + if (j2 > 0) then !TanksToMudPump1 + + + !Relief= 0: deactive 1: active PUMP(1)%Flow_Rate , PUMP(2)%Flow_Rate + + + RealJ2= real(j2) + + if (A71==1 .and. (ActiveTankVolume-(((1./RealJ2)*PUMP(1)%Flow_Rate/60.)*DeltaT_Mudline)) < 0.0) then + A71= 0 + RealJ2= RealJ2-1 + write(*,*) 'ActiveTank Level Warning' + call Activate_ActiveTankUnderVolume() + endif + + if (A72==1 .and. (ReserveTankVolume-(((1./RealJ2)*PUMP(1)%Flow_Rate/60.)*DeltaT_Mudline)) < 0.0) then + A72= 0 + RealJ2= RealJ2-1 + write(*,*) 'ReserveTank Level Warning' + endif + + if (A71==3 .and. (CementTankVolumeCalc-(((1./RealJ2)*PUMP(1)%Flow_Rate/60.)*DeltaT_Mudline)) < 0.0) then + A73= 0 + RealJ2= RealJ2-1 + write(*,*) 'CementTank Level Warning' + endif + + + if(RealJ2> 0.0) then + + ActiveTankVolume= ActiveTankVolume- A71*(((1./RealJ2)*PUMP(1)%Flow_Rate/60.)*DeltaT_Mudline) + ReserveTankVolume= ReserveTankVolume- A72*(((1./RealJ2)*PUMP(1)%Flow_Rate/60.)*DeltaT_Mudline) + CementTankVolumeCalc= CementTankVolumeCalc- A73*(((1./RealJ2)*PUMP(1)%Flow_Rate/60.)*DeltaT_Mudline) + !write(*,*) 'Active-decline=' , A71*(((1./RealJ2)*PUMP(1)%Flow_Rate/60.)*DeltaT_Mudline) + total_decrease= total_decrease+ A71*(((1./RealJ2)*PUMP(1)%Flow_Rate/60.)*DeltaT_Mudline) + + if (ChokePanelStrokeResetSwitch == 1) then + total_decrease= 0. + endif + !write(*,*) 'total_decrease=' , total_decrease + + + Mp1Density= (A71*ActiveTankDensity+A72*ReserveTankDensity+A73*CementTankDensityCalc)/RealJ2 + else + write(*,*) 'stop' + endif + + + + endif + + +!=========================================================================================================================== +!=========================================================================================================================== + ! SHOULD BE AT LAST TO HAVE THE CORRECT DENSITIES FOR Suction_Density_MudSystem + + if (j12 > 0) then !TanksToMudPump2 + + + !Relief= 0: deactive 1: active PUMP(1)%Flow_Rate , PUMP(2)%Flow_Rate + + RealJ12= real(J12) + + if (E71==1 .and. (ActiveTankVolume-(((1/RealJ12)*PUMP(2)%Flow_Rate/60.)*DeltaT_Mudline)) < 0.0) then + E71= 0 + RealJ12= RealJ12-1 + write(*,*) 'ActiveTank Level Warning' + endif + + if (E72==1 .and. (ReserveTankVolume-(((1/RealJ12)*PUMP(2)%Flow_Rate/60.)*DeltaT_Mudline)) < 0.0) then + E72= 0 + RealJ12= RealJ12-1 + write(*,*) 'ReserveTank Level Warning' + endif + + if (E71==3 .and. (CementTankVolumeCalc-(((1/RealJ12)*PUMP(2)%Flow_Rate/60.)*DeltaT_Mudline)) < 0.0) then + E73= 0 + RealJ12= RealJ12-1 + write(*,*) 'CementTank Level Warning' + endif + + + if(RealJ12> 0.0) then + + ActiveTankVolume= ActiveTankVolume- E71*(((1/RealJ12)*PUMP(2)%Flow_Rate/60.)*DeltaT_Mudline) + ReserveTankVolume= ReserveTankVolume- E72*(((1/RealJ12)*PUMP(2)%Flow_Rate/60.)*DeltaT_Mudline) + CementTankVolumeCalc= CementTankVolumeCalc- E73*(((1/RealJ12)*PUMP(2)%Flow_Rate/60.)*DeltaT_Mudline) + + + + Mp2Density= (E71*ActiveTankDensity+E72*ReserveTankDensity+E73*CementTankDensityCalc)/RealJ12 + else + write(*,*) 'stop' + endif + + + endif + + +!=========================================================================================================================== +!=========================================================================================================================== + ! SHOULD BE AT LAST TO HAVE THE CORRECT DENSITIES FOR Suction_Density_MudSystem + + if (j13 > 0) then !TanksToCementPump + + + !Relief= 0: deactive 1: active PUMP(1)%Flow_Rate , PUMP(2)%Flow_Rate + + + RealJ13= real(J13) + + if (F71==1 .and. (ActiveTankVolume-(((1/RealJ13)*PUMP(3)%Flow_Rate/60.)*DeltaT_Mudline)) < 0.0) then + F71= 0 + RealJ13= RealJ13-1 + write(*,*) 'ActiveTank Level Warning' + endif + + if (F72==1 .and. (ReserveTankVolume-(((1/RealJ13)*PUMP(3)%Flow_Rate/60.)*DeltaT_Mudline)) < 0.0) then + F72= 0 + RealJ13= RealJ13-1 + write(*,*) 'ReserveTank Level Warning' + endif + + if (F71==3 .and. (CementTankVolumeCalc-(((1/RealJ13)*PUMP(3)%Flow_Rate/60.)*DeltaT_Mudline)) < 0.0) then + F73= 0 + RealJ13= RealJ13-1 + write(*,*) 'CementTank Level Warning' + endif + + + if(RealJ13> 0.0) then + + ActiveTankVolume= ActiveTankVolume- F71*(((1/RealJ13)*PUMP(3)%Flow_Rate/60.)*DeltaT_Mudline) + ReserveTankVolume= ReserveTankVolume- F72*(((1/RealJ13)*PUMP(3)%Flow_Rate/60.)*DeltaT_Mudline) + CementTankVolumeCalc= CementTankVolumeCalc- F73*(((1/RealJ13)*PUMP(3)%Flow_Rate/60.)*DeltaT_Mudline) + + + Mp3Density= (F71*ActiveTankDensity+F72*ReserveTankDensity+F73*CementTankDensityCalc)/RealJ13 + else + write(*,*) 'stop' + endif + + + endif + + + +!=========================================================================================================================== +!=========================================================================================================================== + ! SHOULD BE AT LAST TO HAVE THE CORRECT DENSITIES FOR Suction_Density_MudSystem + + if (j14 > 0) then !PumpsToString Suction_Density_MudSystem is used for Mud Circulation Code + !write(*,*) 'j14 is open' + !call Log_1('j14 is open') + + ! << if H82 or H83 or H4 are open, no flow goes to other parts of system >> + + ! pump flow rate1 be sharti be samte string miravad ke masire j2 bar gharar bashad + ! pump flow rate2 be sharti be samte string miravad ke masire j12 bar gharar bashad + ! pump flow rate3 be sharti be samte string miravad ke masire j13 bar gharar bashad + + !G: PumpsToString Coefficient + !Jj2,Jj12,Jj13: TanksToMudPump Coefficient + !H: Pumps To Tank_Through65 or 67 Coefficient + ! + !write(*,*) 'jj2=' , jj2 + !write(*,*) 'jj12=' , jj12 + !write(*,*) 'jj13=' , jj13 + !write(*,*) 'H82=' , H82 + !write(*,*) 'H83=' , H83 + !write(*,*) 'H84=' , H84 + !write(*,*) 'DumpPump1=' , DumpPump1 + !write(*,*) 'DumpPump2=' , DumpPump2 + !write(*,*) 'DumpCementPump=' , DumpCementPump + !write(*,*) 'G82=' , G82 + !write(*,*) 'G83=' , G83 + !write(*,*) 'G84=' , G84 + !write(*,*) 'Mp1Density=' , Mp1Density + !write(*,*) 'Mp2Density=' , Mp2Density + !write(*,*) 'Mp3Density=' , Mp3Density + ! + ! + + + + !PumpsDumpVolume= PumpsDumpVolume+ jj2*(1-H82)*DumpPump1*PUMP(1)%Flow_Rate + jj12*(1-H83)*DumpPump2*PUMP(2)%Flow_Rate + jj13*(1-H84)*DumpCementPump*PUMP(3)%Flow_Rate + + Denominator= (jj2*(1.-H82)*(1.-DumpPump1)*G82*PUMP(1)%Flow_Rate + jj12*(1.-H83)*(1.-DumpPump2)*G83*PUMP(2)%Flow_Rate + jj13*(1.-H84)*(1.-DumpCementPump)*G84*PUMP(3)%Flow_Rate) + + if (Denominator /= 0.) then + Suction_Density_MudSystem= (jj2*(1.-H82)*(1.-DumpPump1)*G82*Mp1Density*PUMP(1)%Flow_Rate + jj12*(1.-H83)*(1.-DumpPump2)*G83*Mp2Density*PUMP(2)%Flow_Rate + jj13*(1.-H84)*(1.-DumpCementPump)*G84*Mp3Density*PUMP(3)%Flow_Rate)/ & + Denominator + endif + + CompressedMudDensity= Suction_Density_MudSystem + + MudWeightIn2= Suction_Density_MudSystem !for drillwatch display + + + MUD(2)%Q= jj2*(1-H82)*(1-DumpPump1)*G82*PUMP(1)%Flow_Rate + jj12*(1-H83)*(1-DumpPump2)*G83*PUMP(2)%Flow_Rate + jj13*(1-H84)*(1-DumpCementPump)*G84*PUMP(3)%Flow_Rate + + !write(*,*) 'MUD(2)%Q=' , MUD(2)%Q + + + + !jj2*(1-H82)*(1-DumpPump1)*G82 :if ==1, Pump1 to String is open + !jj12*(1-H83)*(1-DumpPump2)*G83 :if ==1, Pump2 to String is open + !jj13*(1-H84)*(1-DumpCementPump)*G84 :if ==1, Cement to String is open + + + + endif + + if (j14 == 0) then ! for normal circulation input + MUD(2)%Q=0.0 + !PumpPressure1= 0.0 + !PumpPressure2= 0.0 + !PumpPressure3= 0.0 + endif + + + +!=========================================================================================================================== +!=========================================================================================================================== + + if (j19 > 0 .and. MudChecked== .true.) then !PumpsToWell_KillLine Suction_Density_PumpsToWell is used for Mud Circulation Code + !write(*,*) 'j19 is open' + MudChecked= .false. !to be sure that well is not full after arranging muds + + ! << if H82 or H83 or H4 are open, no flow goes to other parts of system >> + + ! pump flow rate1 be sharti be samte well miravad ke masire j2 bar gharar bashad + ! pump flow rate2 be sharti be samte well miravad ke masire j12 bar gharar bashad + ! pump flow rate3 be sharti be samte well miravad ke masire j13 bar gharar bashad + + !G: PumpsToString Coefficient + !Jj2,Jj12,Jj13: TanksToMudPump Coefficient + !H: Pumps To Tank_Through65 or 67 Coefficient + ! + !write(*,*) 'jj2=' , jj2 + !write(*,*) 'jj12=' , jj12 + !write(*,*) 'jj13=' , jj13 + !write(*,*) 'H82=' , H82 + !write(*,*) 'H83=' , H83 + !write(*,*) 'H84=' , H84 + !write(*,*) 'DumpPump1=' , DumpPump1 + !write(*,*) 'DumpPump2=' , DumpPump2 + !write(*,*) 'DumpCementPump=' , DumpCementPump + !write(*,*) 'G82=' , G82 + !write(*,*) 'G83=' , G83 + !write(*,*) 'G84=' , G84 + !write(*,*) 'Mp1Density=' , Mp1Density + !write(*,*) 'Mp2Density=' , Mp2Density + !write(*,*) 'Mp3Density=' , Mp3Density + ! + ! + + + + !PumpsDumpVolume= PumpsDumpVolume+ jj2*(1-H82)*DumpPump1*PUMP(1)%Flow_Rate + jj12*(1-H83)*DumpPump2*PUMP(2)%Flow_Rate + jj13*(1-H84)*DumpCementPump*PUMP(3)%Flow_Rate + + Denominator= (jj2*(1.-H82)*(1.-DumpPump1)*N82*PUMP(1)%Flow_Rate + jj12*(1.-H83)*(1.-DumpPump2)*N83*PUMP(2)%Flow_Rate + jj13*(1.-H84)*(1.-DumpCementPump)*N84*PUMP(3)%Flow_Rate) + + if (Denominator /= 0.) then + Suction_Density_PumpsToWell= (jj2*(1.-H82)*(1.-DumpPump1)*N82*Mp1Density*PUMP(1)%Flow_Rate + jj12*(1.-H83)*(1.-DumpPump2)*N83*Mp2Density*PUMP(2)%Flow_Rate + jj13*(1.-H84)*(1.-DumpCementPump)*N84*Mp3Density*PUMP(3)%Flow_Rate)/ & + Denominator + endif + + + + + + MUD(10)%Q= jj2*(1-H82)*(1-DumpPump1)*N82*PUMP(1)%Flow_Rate + jj12*(1-H83)*(1-DumpPump2)*N83*PUMP(2)%Flow_Rate + jj13*(1-H84)*(1-DumpCementPump)*N84*PUMP(3)%Flow_Rate + + + + + + + endif + + if (j19 == 0) then ! for normal circulation input + MUD(10)%Q=0.0 + !PumpPressure1= 0.0 + !PumpPressure2= 0.0 + !PumpPressure3= 0.0 + endif +!=========================================================================================================================== +!=========================================================================================================================== + + + +!AnnulusFlowRateFinal = 0.d0 ! this is a reset for calculated flow rate in UTUBES,TRIPIN,TRIPOUT codes + + + + + + + + + + + + + +!!====================================================================== +!! Well Head Condition Determination +!!====================================================================== + + + if ( WellToChokeManifoldOpen .or. WellToPitsOpen) then + WellHeadIsOpen= .true. + else + WellHeadIsOpen= .false. + endif + + + + + + + +!!====================================================================== +!! WARNINGS +!!====================================================================== + + + IF (Valve(65)%Status == .TRUE.) call Activate_Pump1PopOffValveBlown() !Pump1PopOffValveBlown= .TRUE. + IF (Valve(66)%Status == .TRUE.) call Activate_Pump2PopOffValveBlown() ! Pump2PopOffValveBlown= .TRUE. + IF (Valve(67)%Status == .TRUE.) call Activate_Pump3PopOffValveBlown() !Pump2PopOffValveBlown= .TRUE. + + + IF (ActiveTankVolume >= (ActiveTotalTankCapacityGal-ActiveSettledContentsGal)) THEN + ActiveTankVolume = (ActiveTotalTankCapacityGal-ActiveSettledContentsGal) + call Activate_ActiveTankOverflow() + ELSE + call Deactivate_ActiveTankOverflow() + ENDIF + + + +!!====================================================================== +!! UPDATING TANKS DENSITIES & Volumes FOR MUD CIRCULATION +!!====================================================================== + + !write(*,*) 'ReserveTankVolume=' , real(ReserveTankVolume) + + call Set_ActiveMudVolume_StudentStation(real(ActiveTankVolume/42.,8)) ! 42: gal to bbl + call Set_ActiveDensity_StudentStation(real(ActiveTankDensity,8)) + call Set_ReserveMudVolume_StudentStation(real(ReserveTankVolume/42.,8)) ! 42: gal to bbl + call Set_ReserveDensity_StudentStation(real(ReserveTankDensity,8)) + KillMudVolume= ReserveTankVolume/42. ! for DrillWatch + !PitGainLose= + + +!!====================================================================== +!! DRILLING DATA DISPLAY +!!====================================================================== + + + IF (TotalStrokeCounterResetSwitch == 1) then !for drilling data display + TotalStrokesPump1=0. + TotalStrokesPump2=0. + ENDIF + + TotalStrokesPump1=TotalStrokesPump1+((MP1SPMGauge)/60.)*DeltaT_Mudline !for drilling data display + TotalStrokesPump2=TotalStrokesPump2+((MP2SPMGauge)/60.)*DeltaT_Mudline !for drilling data display + GraphTotalStrokes=GraphTotalStrokes+((MP1SPMGauge)/60.)*DeltaT_Mudline+((MP2SPMGauge)/60.)*DeltaT_Mudline + + + Total_Stroke_Counter_For_Plot = Total_Stroke_Counter_For_Plot + ((MP1SPMGauge + MP2SPMGauge) / 60.0) * DeltaT_Mudline + + CALL SetTotalStrokes(INT(Total_Stroke_Counter_For_Plot)) + + TotalStrokeCounter= real(nint(TotalStrokesPump1+TotalStrokesPump2)) !for drilling data display + +!=========================================================================== +! MUD PUMP STROKES +! & TOTAL STROKE- CHOKE CONTROL PANEL +!=========================================================================== + !write(*,*) 'a)))' , ChokePanelStrokeResetSwitch + if (ChokePanelStrokeResetSwitch == 1) then + IF (ChokePanelPumpSelectorSwitch == 1) THEN + !write(*,*) '1 reset' + TotalStrokes1 =0. + elseif (ChokePanelPumpSelectorSwitch == 2) THEN + !write(*,*) '2 reset' + TotalStrokes2 =0. + else + !write(*,*) 'both reset' + + TotalStrokes1 =0. + TotalStrokes2 =0. + endif + endif + + !write(*,*) 'b)))' , ChokePanelStrokeResetSwitch + + + TotalStrokes1= TotalStrokes1+((MP1SPMGauge)/60.)*DeltaT_Mudline + TotalStrokes2= TotalStrokes2+((MP2SPMGauge)/60.)*DeltaT_Mudline + + + + IF (ChokePanelPumpSelectorSwitch == 1) THEN + ChokePanelSPMCounter = real(nint(MP1SPMGauge)) + ChokePanelTotalStrokeCounter = real(nint(TotalStrokes1)) + ELSEIF (ChokePanelPumpSelectorSwitch == 2) THEN + ChokePanelSPMCounter = real(nint(MP2SPMGauge)) + ChokePanelTotalStrokeCounter = real(nint(TotalStrokes2)) + ELSE + ChokePanelSPMCounter= real(nint(MP1SPMGauge+MP2SPMGauge)) + ChokePanelTotalStrokeCounter = real(nint(TotalStrokes1+TotalStrokes2)) + ENDIF + + ! ChokePanelStrokeResetSwitch = 0 +!====================================================================== + +!!====================================================================== +!! MUD VOLUME TOTALIZER DISPLAY VALUES +!!====================================================================== + + + PitVolume= ActiveTankVolume/42.d0 !(bbl) For DrillWatch Display + + !write(*,*) 'PitVolume,ActiveTankVolume=' ,PitVolume,ActiveTankVolume + + + MudTank1_vol= ActiveTankVolume/3. ! (gal) + MudTank2_vol= ActiveTankVolume/3. ! (gal) + MudTank3_vol= ActiveTankVolume/3. ! (gal) + MudTank4_vol= TripTankVolumeCalc + + + + + + IF (MVTPowerSwitch==1) THEN + MudTanksVolumeGauge= (1 - MudTanksVolumeGaugeMalf) *((MudTank1_vol*MudTank1Switch)+(MudTank2_vol*MudTank2Switch)+ & + (MudTank3_vol*MudTank3Switch)+(MudTank4_vol*MudTank4Switch)+ActiveTankSettled) !(gal) + ELSEIF (MVTPowerSwitch==0) THEN + MudTanksVolumeGauge= (1 - MudTanksVolumeGaugeMalf) *0. + ENDIF + +!!====================================================================== +!! MUD VOLUME TOTALIZER +!!====================================================================== + + + + + IF (MVTPowerSwitch==1 .and. IsPortable==.false.) THEN + + + + IF (MVTSetAlarmSwitch==0) THEN + + PitGainLossGauge= ( ((ActiveTankVolume/42.) - RefrencePitVolume)) - PitGainLossGaugeMalf*(( ((ActiveTankVolume/42.) - RefrencePitVolume))+50) !(bbl) + + ELSEIF (MVTSetAlarmSwitch==-1) THEN + + + MVT_MinVol_Allowded= PitGainLossZero+ MIN(0.,(MVTSetAlarmLowKnob-50))-0.1 + PitGainLossGauge= MVT_MinVol_Allowded - PitGainLossGaugeMalf*(MVT_MinVol_Allowded+50) + ! - PitGainLossGaugeMalf*(MVT_MinVol_Allowded+50) : Malf effect + !PitGainLose=(MVT_MinVol_Allowded) ! DrillWatch (incorrect) + !RefrencePitVolume= ActiveTankVolume/42. !(bbl) + + ELSE !(MVTSetAlarmSwitch==1) + + MVT_MaxVol_Allowded= PitGainLossZero+ MAX(0., (MVTSetAlarmHighKnob-50.))+0.1 + PitGainLossGauge= MVT_MaxVol_Allowded - PitGainLossGaugeMalf*(MVT_MaxVol_Allowded+50) + ! - PitGainLossGaugeMalf*(MVT_MaxVol_Allowded+50) : Malf effect + !PitGainLose=(MVT_MaxVol_Allowded) ! DrillWatch (incorrect) + !RefrencePitVolume= ActiveTankVolume/42. !(bbl) + ENDIF + + !PitGainLossZero_Old= PitGainLossZero + !MVTCoarseKnob_Old= MVTCoarseKnob + !MVTFineKnob_Old= MVTFineKnob + !FirstSet_Time= .false. + + + + IF ( ActiveTankVolume/42. < (RefrencePitVolume-ABS(MVT_MinVol_Allowded)) .OR. ActiveTankVolume/42. > (RefrencePitVolume+ABS(MVT_MaxVol_Allowded)) ) THEN + + MVTAlarmLED = 1 !(blinking) + IF (MVTHornSwitch) THEN + Buzzer2= .TRUE. + ELSE + Buzzer2= .FALSE. + ENDIF + + ELSE + MVTAlarmLED = 0 !(OFF) + Buzzer2= .false. + ENDIF + + + + ELSEIF (MVTPowerSwitch==0) THEN + !MudTanksVolumeGauge= 0. + PitGainLossGauge= -50 + MVTAlarmLED= 0 + Buzzer2= .false. + + + ENDIF + +!!====================================================================== +!! RETURN CALCULATIONS +!!====================================================================== + + + + + PercentFlow= (ReturnFlowRate/PedalMeter) *100. !(percent) ! for DrillWatch display + if (abs(PercentFlow - unityreturn) > 1.0) then + + write(*,*) 'PercentFlow,ReturnFlowRate,PedalMeter=' , PercentFlow,ReturnFlowRate,PedalMeter + write(*,*) 'unityreturn=' , unityreturn + endif + + + ! ReturnFlowRate=800. set in startup as initial value + ReturnFlowPercent= (ReturnFlowRate/PedalMeter) *100. !(percent) + !write(*,*) 'ReturnFlowPercent,ReturnFlowRate=' , ReturnFlowPercent,ReturnFlowRate + ! if ReturnFlowRate>PedalMeter, excess value(ReturnFlowRate-PedalMeter) is dumped in the code before + + +!!====================================================================== +!! DRILL WATCH +!!====================================================================== + + PitGainLose= ((ActiveTankVolume/42.) - RefrencePitVolume_DrillWatch) ! DrillWatch + !write(*,*) 'PitGainLose galon' , PitGainLose*42. + + + if (IsPortable) then + + MVT_MinVol_Allowded= PitAlarmLow + MVT_MaxVol_Allowded= PitAlarmHigh + + IF ( ActiveTankVolume/42. < (RefrencePitVolume-ABS(MVT_MinVol_Allowded)) .OR. ActiveTankVolume/42. > (RefrencePitVolume+ABS(MVT_MaxVol_Allowded)) ) THEN + + MVTAlarmLED = 1 !(blinking) + IF (MVTHornSwitch) THEN + Buzzer2= .TRUE. + ELSE + Buzzer2= .FALSE. + ENDIF + + ELSE + MVTAlarmLED = 0 !(OFF) + Buzzer2= .false. + ENDIF + + endif + + + if (PitGainLossReset) then + + PitGainLose= 0.d0 !DrillWatch + RefrencePitVolume_DrillWatch= ActiveTankVolume/42. !(bbl) !DrillWatch + !********************************************* + + PitGainLossGauge= 0. !MFF Indicator + RefrencePitVolume= ActiveTankVolume/42. !(bbl) !MFF Indicator + + endif + + + + + + + +!!====================================================================== +!! MUD FLOW-FILL INDICATOR +!!====================================================================== + + IF (MFFIPowerSwitch==1 .and. IsPortable==.false.) THEN + + +!====================TotalStrokes Reset and Calculate====================== + if (MFFIResetTotalStrokes == 1) then + IF (MFFIPumpSelectorSwitch == 1) THEN + TotalStrokes1MFFI =0. + elseif (MFFIPumpSelectorSwitch == 2) THEN + TotalStrokes2MFFI =0. + else + TotalStrokes1MFFI =0. + TotalStrokes2MFFI =0. + endif + endif + TotalStrokes1MFFI= TotalStrokes1MFFI+((MP1SPMGauge)/60.)*DeltaT_Mudline + TotalStrokes2MFFI= TotalStrokes2MFFI+((MP2SPMGauge)/60.)*DeltaT_Mudline + +!==================FillStrokes Reset and Calculate========================= + if (MFFIResetFillCounter == 1) then + IF (MFFIPumpSelectorSwitch == 1) THEN + TotalFillStrokes1MFFI =0. + elseif (MFFIPumpSelectorSwitch == 2) THEN + TotalFillStrokes2MFFI =0. + else + TotalFillStrokes1MFFI =0. + TotalFillStrokes2MFFI =0. + endif + endif + + + TotalFillStrokes1MFFI= TotalFillStrokes1MFFI+((MP1SPMGauge)/60.)*DeltaT_Mudline + TotalFillStrokes2MFFI= TotalFillStrokes2MFFI+((MP2SPMGauge)/60.)*DeltaT_Mudline +!=================================================================== + + + if (MFFIPumpSelectorSwitch == 1) then + MFFITotalStrokeCounter = real(nint(TotalStrokes1MFFI)) !TotalStroke LED + elseif (MFFIPumpSelectorSwitch == 2) then + MFFITotalStrokeCounter = real(nint(TotalStrokes2MFFI)) !TotalStroke LED + elseif (MFFIPumpSelectorSwitch == 3) then + MFFITotalStrokeCounter = real(nint(TotalStrokes1MFFI+TotalStrokes2MFFI)) !TotalStroke LED + endif + + + IF (MFFIFillSPMSelectorSwitch== .false.) THEN !(spm mode) + if (MFFIPumpSelectorSwitch == 1) then + FillStrokeCounter = real(nint(MP1SPMGauge)) !Fill or SPM LED + elseif (MFFIPumpSelectorSwitch == 2) then + FillStrokeCounter = real(nint(MP2SPMGauge)) !Fill or SPM LED + elseif (MFFIPumpSelectorSwitch == 3) then + FillStrokeCounter= real(nint(MP1SPMGauge+MP2SPMGauge)) !Fill or SPM LED + endif + + ELSE ! (MFFIFillSPMSelectorSwitch== .true.) then !(fill mode) + if (ReturnFlowRate== 0) then + if (MFFIPumpSelectorSwitch == 1) then + FillStrokeCounter = real(nint(TotalFillStrokes1MFFI)) !Fill or SPM LED + elseif (MFFIPumpSelectorSwitch == 2) then + FillStrokeCounter = real(nint(TotalFillStrokes2MFFI)) !Fill or SPM LED + elseif (MFFIPumpSelectorSwitch == 3) then + FillStrokeCounter= real(nint(TotalFillStrokes1MFFI+TotalFillStrokes2MFFI)) !Fill or SPM LED + endif + + + TotalFilledStrokesBy1MFFI = real(nint(TotalFillStrokes1MFFI))! for values=fix on LED after the well filled + TotalFilledStrokesBy2MFFI = real(nint(TotalFillStrokes2MFFI))! for values=fix on LED after the well filled + TotalFilledStrokesBy1and2MFFI= real(nint(TotalFillStrokes1MFFI+TotalFillStrokes2MFFI))! for values=fix on LED after the well filled + + + + else !(ReturnFlowRate>0) + + ! these values=fix on LED after the well filled + if (MFFIPumpSelectorSwitch == 1) then + FillStrokeCounter = TotalFilledStrokesBy1MFFI !Fill or SPM LED + elseif (MFFIPumpSelectorSwitch == 2) then + FillStrokeCounter = TotalFilledStrokesBy2MFFI !Fill or SPM LED + elseif (MFFIPumpSelectorSwitch == 3) then + FillStrokeCounter= TotalFilledStrokesBy1and2MFFI !Fill or SPM LED + endif + endif + + + ENDIF + + + + !=================================================================================== + + + + + if (ReturnFlowRate>0) then + MFFIPumpLED=1 !(Returns Lamp) + else + MFFIPumpLED=0 !(Returns Lamp) + endif + + + + IF (MFFISetAlarmSwitch==0) THEN + + ReturnMudFlowGauge= (1 - ReturnMudFlowGaugeMalf)*ReturnFlowPercent !(percent) + + ELSEIF (MFFISetAlarmSwitch==-1) THEN + MFFI_MinPercent_Allowded=MFFISetAlarmLowKnob + ReturnMudFlowGauge= (1 - ReturnMudFlowGaugeMalf)*MFFI_MinPercent_Allowded + + ELSE !(MFFISetAlarmSwitch==1) + + MFFI_MaxPercent_Allowded=MFFISetAlarmHighKnob + ReturnMudFlowGauge= (1 - ReturnMudFlowGaugeMalf)*MFFI_MaxPercent_Allowded + ENDIF + + + IF (ReturnFlowPercentMFFI_MaxPercent_Allowded) THEN + !write(*,*) 'alarm return:' , ReturnFlowRate + MFFIAlarmLED = 2 !(blinking) + IF (MFFIHornSwitch) THEN + Buzzer3= .true. + ELSE + Buzzer3= .FALSE. + ENDIF + ELSE + MFFIAlarmLED = 0 !(OFF) + Buzzer3= .false. + ENDIF + !=================================================================================== + + + ELSEIF (MFFIPowerSwitch==0) THEN + ReturnMudFlowGauge= 0. + FillStrokeCounter= 0 + MFFITotalStrokeCounter= 0 + MFFIAlarmLED= 0 + Buzzer3= .false. + ENDIF + + + if ( IsPortable ) then + + MFFI_MinPercent_Allowded=RetFlowAlarmLow + MFFI_MaxPercent_Allowded=RetFlowAlarmHigh + + + IF (ReturnFlowPercentMFFI_MaxPercent_Allowded) THEN + + MFFIAlarmLED = 1 !(blinking) + IF (MFFIHornSwitch) THEN + Buzzer3= .true. + ELSE + Buzzer3= .FALSE. + ENDIF + ELSE + MFFIAlarmLED = 0 !(OFF) + Buzzer3= .false. + ENDIF + + endif + + +!!====================================================================== +!! TRIP TANK PANEL DISPLAY VALUES +!!====================================================================== + + TripTankVolume2= TripTankVolumeCalc/42. !(Drill Watch display) + TripTankDensity2= TripTankDensityCalc !(display) + + + IF (TripTankPowerSwitch==1 .and. IsPortable==.false.) THEN + + IF (TripTankSetAlarmSwitch==0) THEN + + TripTankGauge= (1 - TripTankPressure_DataDisplayMalf) * TripTankVolumeCalc ! (gal) + ELSEIF (TripTankSetAlarmSwitch==-1) THEN + + TripTank_MinVol_Allowded= TripTankSetAlarmLow/2. ! 2: because knob input is 0-100 but gauge is 0-50 + TripTankGauge= (1 - TripTankPressure_DataDisplayMalf) * TripTank_MinVol_Allowded + + ELSE !(TripTankSetAlarmSwitch==1) + TripTank_MaxVol_Allowded= TripTankSetAlarmHigh/2. ! 2: because knob input is 0-100 but gauge is 0-50 + TripTankGauge= (1 - TripTankPressure_DataDisplayMalf) * TripTank_MaxVol_Allowded + ENDIF + + + + IF ((TripTankVolumeCalc < TripTank_MinVol_Allowded) .OR. (TripTankVolumeCalc > TripTank_MaxVol_Allowded)) THEN + TripTankAlarmLED = 2 !(blinking) + IF (TripTankHornSwitch) THEN + Buzzer1= .true. + ELSE + Buzzer1= .false. + ENDIF + ELSE + TripTankAlarmLED = 0 !(OFF) + Buzzer1= .false. + ENDIF + + TripTankPumpLED= TripTankPumpSwitch + + + ELSEIF (TripTankPowerSwitch==0) THEN + TripTankGauge= 0. !(gal) + TripTankAlarmLED= 0 + TripTankPumpLED= 0 + Buzzer1= .false. + ENDIF + + + if ( IsPortable ) then + + TripTank_MinVol_Allowded= TripAlarmLow + TripTank_MaxVol_Allowded= TripAlarmHigh + + + IF ((TripTankVolumeCalc < TripTank_MinVol_Allowded) .OR. (TripTankVolumeCalc > TripTank_MaxVol_Allowded)) THEN + TripTankAlarmLED = 1 !(blinking) + IF (TripTankHornSwitch) THEN + Buzzer1= .true. + ELSE + Buzzer1= .false. + ENDIF + ELSE + TripTankAlarmLED = 0 !(OFF) + Buzzer1= .false. + ENDIF + + endif + + + + + !write(*,*) '=====================================================================' + + + + if (IsStopped) return + + end subroutine main + + + + + !=================================================================================================================== + !=================================================================================================================== + !=================================================================================================================== + + subroutine ActiveMudVolumeChanged(v) + !use CLog4 + implicit none + real(8), intent (in) :: v + !call Log_4('ActiveMudVolumeChanged=', v) + ActiveTankVolume= ActiveMudVolumeGal ! update from student input + end subroutine + + subroutine ActiveDensityChanged(v) + !use CLog4 + implicit none + real(8), intent (in) :: v + !call Log_4('ActiveDensityChanged=', v) + ActiveTankDensity= ActiveDensity ! update from student input + end subroutine + + subroutine ReserveMudVolumeChanged(v) + !use CLog4 + implicit none + real(8), intent (in) :: v + !call Log_4('ReserveMudVolumeChanged=', v) + ReserveTankVolume= ReserveMudVolumeGal ! update from student input + end subroutine + + subroutine ReserveDensityChanged(v) + !use CLog4 + implicit none + real(8), intent (in) :: v + !call Log_4('ReserveDensityChanged=', v) + ReserveTankDensity= ReserveDensity ! update from student input + end subroutine + + subroutine SetupMudSystem() + use CPathChangeEvents + use CMudPropertiesVariables + implicit none + + call BeforeTraverse%Add(InitialVarsBeforePathsChanges) + call AfterTraverse%Add(AfterPathsChanges) + call OnPathOpen%Add(WhenPathOpen) + + + call OnActiveMudVolumeChange%Add(ActiveMudVolumeChanged) + call OnActiveDensityChange%Add(ActiveDensityChanged) + call OnReserveMudVolumeChange%Add(ReserveMudVolumeChanged) + call OnReserveDensityChange%Add(ReserveDensityChanged) + + end subroutine + + subroutine AfterPathsChanges() + implicit none + integer i + + if(Pump1_Lasts%Length() <= 0) return + do i = 1, Pump1_Lasts%Length() + if(Pump2_Lasts%Length() <= 0) cycle + if(any(Pump2_Lasts%Array == Pump1_Lasts%Array(i))) then + State2 = .true. ! Pumps 1 & 2 have same destination + !print*, 'State2 = .true.' + endif + if(Pump3_Lasts%Length() <= 0) cycle + if(any(Pump3_Lasts%Array == Pump1_Lasts%Array(i))) then + State3 = .true. ! Pumps 1 & 3 have same destination + !print*, 'State3 = .true.' + endif + enddo + + if(Pump2_Lasts%Length() <= 0) return + do i = 1, Pump2_Lasts%Length() + if(Pump3_Lasts%Length() <= 0) cycle + if(any(Pump3_Lasts%Array == Pump2_Lasts%Array(i))) then + State4 = .true. ! Pumps 2 & 3 have same destination + !print*, 'State4 = .true.' + endif + enddo + + State1 = State2 .and. State3 ! Pumps 1 & 2 & 3 have same destination + !if(State1) print*, 'State1 = .true.' + + end subroutine + + subroutine InitialVarsBeforePathsChanges() + implicit none + + condition1 = .false. + condition2 = .false. + condition3 = .false. + condition4 = .false. + condition5 = .false. + condition6 = .false. + condition7 = .false. + condition8 = .false. + condition9 = .false. + condition10 = .false. + condition11 = .false. + condition12 = .false. + condition13 = .false. + condition14 = .false. + condition15 = .false. + condition16 = .false. + condition17 = .false. + condition18 = .false. + condition19 = .false. + condition20 = .false. + condition21 = .false. + condition22 = .false. + condition23 = .false. + condition24 = .false. + condition25 = .false. + condition26 = .false. + condition27 = .false. + condition28 = .false. + condition29 = .false. + condition30 = .false. + condition31 = .false. + condition32 = .true. + condition33 = .true. + condition34 = .true. + condition35 = .false. + condition36 = .false. + condition37 = .false. + condition38 = .false. + condition39 = .false. + condition40 = .false. + condition41 = .false. + condition42 = .false. + condition43 = .false. + condition44 = .false. + condition45 = .false. + condition46 = .false. + condition47 = .false. + condition48 = .false. + condition49 = .false. + condition50 = .false. + condition51 = .false. + condition52 = .false. + condition53 = .false. + condition54 = .false. + condition55 = .false. + condition56 = .false. + condition57 = .false. + condition58 = .false. + condition59= .false. + condition60= .false. + condition61= .false. + + + + + + + + !ThereIsPathFrom82 = .false. + !!print*, "ThereIsPathFrom82=",ThereIsPathFrom82 + !ThereIsPathFrom83 = .false. + !!print*, "ThereIsPathFrom82=",ThereIsPathFrom82 + !ThereIsPathFrom84 = .false. + !!print*, "ThereIsPathFrom82=",ThereIsPathFrom82 + + ThereIsPathFrom_71_72_73_To_82 = .false. + !print*, "ThereIsPathFrom_71_72_73_To_82=",ThereIsPathFrom_71_72_73_To_82 + ThereIsPathFrom_71_72_73_To_83 = .false. + !print*, "ThereIsPathFrom_71_72_73_To_83=",ThereIsPathFrom_71_72_73_To_83 + ThereIsPathFrom_71_72_73_To_84 = .false. + !print*, "ThereIsPathFrom_71_72_73_To_84=",ThereIsPathFrom_71_72_73_To_84 + + DumpFromKelly_Pump1 = .false. + DumpFromFillupHead_Pump1 = .false. + DumpFromTopDrive_Pump1 = .false. + + + DumpFromKelly_Pump2 = .false. + DumpFromFillupHead_Pump2 = .false. + DumpFromTopDrive_Pump2 = .false. + + + DumpFromKelly_Pump3 = .false. + DumpFromFillupHead_Pump3 = .false. + DumpFromTopDrive_Pump3 = .false. + + + + State1 = .false. + State2 = .false. + State3 = .false. + State4 = .false. + + call Pump1_Lasts%Empty() + call Pump2_Lasts%Empty() + call Pump3_Lasts%Empty() + + + + + + ac32 = .false. + ac33 = .false. + ac34 = .false. + ac35 = .false. + ac29 = .false. + + end subroutine + + subroutine WhenPathOpen(valves) + use Pump_VARIABLES + implicit none + integer, allocatable, intent (in) :: valves(:) + integer :: first, last + if (.not.allocated(valves)) return + if(size(valves) <= 0) return + + if ( any(valves == 32)) ac32 = .true. + if ( any(valves == 33)) ac33 = .true. + if ( any(valves == 34)) ac34 = .true. + if ( any(valves == 35)) ac35 = .true. + if ( any(valves == 29)) ac29 = .true. + + + first = 1 + last = size(valves) + + MP1_Q = PUMP(1)%Flow_Rate + MP2_Q = PUMP(2)%Flow_Rate + MP3_Q = PUMP(3)%Flow_Rate + + + + if(valves(first) == 82) call Pump1_Lasts%Add(valves(last)) + if(valves(first) == 83) call Pump2_Lasts%Add(valves(last)) + if(valves(first) == 84) call Pump3_Lasts%Add(valves(last)) + + !print*, '==============================================' + !do i = 1, Pump1_Lasts%Length() + ! print*, 'mp1=', Pump1_Lasts%Array(i) + !enddo + ! + !print*, '-------------------------------' + ! + !do i = 1, Pump2_Lasts%Length() + ! print*, 'mp2=', Pump2_Lasts%Array(i) + !enddo + ! + !print*, '-------------------------------' + ! + ! + !do i = 1, Pump3_Lasts%Length() + ! print*, 'mp3=', Pump3_Lasts%Array(i) + !enddo + ! + !print*, '==============================================' + + + !if(valves(first)==82 .and. (valves(last)==79 .or. valves(last)==78 .or. valves(last)==77 .or. valves(last)==71)) then + ! ThereIsPathFrom82 = .true. + ! !print*, "ThereIsPathFrom82=",ThereIsPathFrom82 + !endif + ! + !if(valves(first)==83 .and. (valves(last)==79 .or. valves(last)==78 .or. valves(last)==77 .or. valves(last)==71)) then + ! ThereIsPathFrom83 = .true. + ! !print*, "ThereIsPathFrom83=",ThereIsPathFrom83 + !endif + ! + !if(valves(first)==84 .and. (valves(last)==79 .or. valves(last)==78 .or. valves(last)==77 .or. valves(last)==71)) then + ! ThereIsPathFrom84 = .true. + ! !print*, "ThereIsPathFrom84=",ThereIsPathFrom84 + !endif + + if(valves(last)==82 .and. (valves(first)==71 .or. valves(first)==72 .or. valves(first)==73)) then + ThereIsPathFrom_71_72_73_To_82 = .true. + !print*, "ThereIsPathFrom_71_72_73_To_82=",ThereIsPathFrom_71_72_73_To_82 + endif + + if(valves(last)==83 .and. (valves(first)==71 .or. valves(first)==72 .or. valves(first)==73)) then + ThereIsPathFrom_71_72_73_To_83 = .true. + !print*, "ThereIsPathFrom_71_72_73_To_83=",ThereIsPathFrom_71_72_73_To_83 + endif + + if(valves(last)==84 .and. (valves(first)==71 .or. valves(first)==72 .or. valves(first)==73)) then + ThereIsPathFrom_71_72_73_To_84 = .true. + !print*, "ThereIsPathFrom_71_72_73_To_84=",ThereIsPathFrom_71_72_73_To_84 + endif + + !if (.not.allocated(OpenPaths)) exit + !===============TanksToMudPump1=================== + if(valves(last)==82) then + if(valves(first)==71) then + !j2=j2+1 + !A71=1 + condition1 = .true. + endif + + if(valves(first)==72) then + !j2=j2+1 + !A72=1 + condition2 = .true. + endif + + if(valves(first)==73) then + !j2=j2+1 + !A73=1 + condition3 = .true. + endif + + endif + !================================================ + + + !============BellNippleToPits-FullWell(MLnumber=3)============== + + if ( Valve(41)%Status == .false. .and. Valve(42)%Status == .false. ) then + call ChangeValve(60, .TRUE.) + else + call ChangeValve(60, .FALSE.) + endif + + if(valves(first)==80 .and. valves(last)==71 .and. any(valves == 42)) condition4 = .true. + if(valves(first)==80 .and. valves(last)==77 .and. any(valves == 41)) condition5 = .true. + if(valves(first)==80 .and. valves(last)==78) condition6 = .true. + + !================================================ + + + !============WellToChokeManifold(Through 26)============== + if(valves(first)==79 .and. any(valves == 26)) then + if(valves(last)==71) then + !j4=j4+1 + !C71=1. + condition7 = .true. + endif + + if(valves(last)==77) then + !j4=j4+1 + !C77=1. + condition8 = .true. + endif + + if(valves(last)==78) then + !j4=j4+1 + !C78=1. + condition45 = .true. + endif + + endif + + !================================================ + + + !============ActiveTankToTripTank============== + if(valves(first)==71 .and. valves(last)==77) then + !j5=j5+1 + condition9 = .true. + endif + !================================================ + + + + !============TripTankToActiveTank And BellNipple============== + if(valves(first)==77) then + if(valves(last)==71) then + !j6=j6+1 + !D71=1 + condition10 = .true. + endif + + if(valves(last)==80) then + !j6=j6+1 + !D80=1 + condition11 = .true. + endif + + endif + !================================================ + + + !============ActiveTankToDump============== + if(valves(first)==71 .and. valves(last)==78) then + !j7=j7+1 + condition12 = .true. + endif + !================================================ + + + !============TripTankToDump============== + if(valves(first)==77 .and. valves(last)==78) then + !j8=j8+1 + condition13 = .true. + endif + !================================================ + + + !============WellToBellNipple============== + if(valves(first)==79 .and. valves(last)==80) then + !j9=j9+1 + condition14 = .true. + endif + !================================================ + + !============MudBucketToBellNipple============== + if(valves(first)==81 .and. valves(last)==80) then + !j10=j10+1 + condition15 = .true. + endif + !================================================ + + + !============BellNippleToWell-NonFullWell============== + if(valves(first)==80 .and. valves(last)==79) then ! Well is NOT Full + !j11=j11+1 + condition16 = .true. + endif + !================================================ + + !===============TanksToMudPump2=================== + if(valves(last)==83) then + if(valves(first)==71) then + !j12=j12+1 + !E71=1 + condition17 = .true. + endif + + if(valves(first)==72) then + !j12=j12+1 + !E72=1 + condition18 = .true. + endif + + if(valves(first)==73) then + !j12=j12+1 + !E73=1 + condition19 = .true. + endif + + endif + !================================================ + + + !===============TanksToCementPump=================== + if(valves(last)==84) then + if(valves(first)==71) then + !j13=j13+1 + !F71=1 + condition20 = .true. + endif + + if(valves(first)==72) then + !j13=j13+1 + !F72=1 + condition21 = .true. + endif + + if(valves(first)==73) then + !j13=j13+1 + !F73=1 + condition22 = .true. + endif + + endif + !================================================ + + !===============PumpsToString=================== + if(valves(last)==79) then + if(valves(first)==82) then + !j14=j14+1 + !G82=1 + condition23 = .true. + endif + + if(valves(first)==83) then + !j14=j14+1 + !G83=1 + condition24 = .true. + endif + + if(valves(first)==84) then + !j14=j14+1 + !G84=1 + condition25 = .true. + endif + + endif + !================================================ + + + + + + !============MudPump1HasPath=================== + if(ThereIsPathFrom_71_72_73_To_82 .and. (valves(first)==82 .and. (valves(last)==79 .or. valves(last)==78 .or. valves(last)==77 .or. valves(last)==71))) then + !Mp1_NoPath= 0 + condition32 = .false. + endif + condition32Final = condition32 + !================================================ + + + !============MudPump2HasPath=================== + if(ThereIsPathFrom_71_72_73_To_83 .and. (valves(first)==83 .and. (valves(last)==79 .or. valves(last)==78 .or. valves(last)==77 .or. valves(last)==71))) then + !write(*,*) 'condition33 ******' + !Mp2_NoPath= 0 + condition33 = .false. + endif + condition33Final= condition33 + !================================================ + + + !============CementPumpHasNoPath=================== + if(ThereIsPathFrom_71_72_73_To_84 .and. (valves(first)==84 .and. (valves(last)==79 .or. valves(last)==78 .or. valves(last)==77 .or. valves(last)==71))) then + !Cp_NoPath= 1 + condition34 = .false. + endif + condition34Final = condition34 + !================================================ + + + + + !===============PumpsToDump=================== + !DumpFromKelly = 0.0 + !DumpFromFillupHead= 0.0 + + if(valves(last)==78) then + if(valves(first)==82) then + !DumpPump1=1 + condition26 = .true. + IF(any(valves == 56)) DumpFromKelly_Pump1 = .true. + IF(any(valves == 14)) DumpFromFillupHead_Pump1 = .true. + IF(any(valves == 70)) DumpFromTopDrive_Pump1 = .true. + + + endif + + + if(valves(first)==83) then + !DumpPump2=1 + print*, "THERE IS DUMP" + condition27 = .true. + IF(any(valves == 56)) DumpFromKelly_Pump2 = .true. + IF(any(valves == 14)) DumpFromFillupHead_Pump2 = .true. + IF(any(valves == 70)) DumpFromTopDrive_Pump2 = .true. + + endif + + + if(valves(first)==84) then + !DumpCementPump=1 + condition28 = .true. + IF(any(valves == 56)) DumpFromKelly_Pump3 = .true. + IF(any(valves == 14)) DumpFromFillupHead_Pump3 = .true. + IF(any(valves == 70)) DumpFromTopDrive_Pump3 = .true. + + endif + + ! DumpFromKelly + !if (DumpFromKelly_Pump1 .or. DumpFromKelly_Pump2 .or. DumpFromKelly_Pump3) then + ! DumpFromKelly = 1.0 + !else + ! DumpFromKelly = 0.0 + !endif + + + ! DumpFromFillupHead + if (DumpFromFillupHead_Pump1 .or. DumpFromFillupHead_Pump2 .or. DumpFromFillupHead_Pump3) then + DumpFromFillupHead = 1.0 + else + DumpFromFillupHead = 0.0 + endif + + endif + + + + !================================================ + + + !=======MudPumps1&2ToActiveTank_Through65&66========== + + ! << if H82 or H83 or H4 are open, no flow goes to other parts of system >> + + + if(valves(last)==71) then + if(valves(first)==82 .and. any(valves == 65)) then + !j15=j15+1 + !H82=1.0 + condition29 = .true. + endif + + if(valves(first)==83 .and. any(valves == 66)) then + !j15=j15+1 + !H83=1.0 + condition30 = .true. + endif + + endif + !================================================ + + !=======CementPumpToCementTank_Through67========== + + ! << if H82 or H83 or H4 are open, no flow goes to other parts of system >> + + + if(valves(last)==73 .and. valves(first)==84 .and. any(valves == 67)) then + + !H84=1.0 + condition31 = .true. + + endif + !================================================ + + + + !===============PathsToGauge75=================== + if(valves(last)==75) then + if(valves(first)==82) then !Pump1 to Gauge75 + !j16=j16+1 + !K82=1 + condition35 = .true. + endif + + if(valves(first)==83) then !Pump2 to Gauge75 + !j16=j16+1 + !K83=1 + condition36 = .true. + endif + + if(valves(first)==84) then !Pump3 to Gauge75 + !j16=j16+1 + !K84=1 + condition37 = .true. + endif + + if(valves(first)==79) then !String to Gauge75 + !j16=j16+1 + !K79=1 + condition38 = .true. + endif + + if(valves(first)==78) then !Dump to Gauge75 + !j16=j16+1 + !K78=1 + condition39 = .true. + endif + + endif + !================================================ + + !===============PathsToGauge76=================== + if(valves(last)==76) then + if(valves(first)==82) then !Pump1 to Gauge76 + !j17=j17+1 + !L82=1 + condition40 = .true. + endif + + if(valves(first)==83) then !Pump2 to Gauge76 + !j17=j17+1 + !L83=1 + condition41 = .true. + endif + + if(valves(first)==84) then !Pump3 to Gauge76 + !j17=j17+1 + !L84=1 + condition42 = .true. + endif + + if(valves(first)==79) then !String to Gauge76 + !j17=j17+1 + !L79=1 + condition43 = .true. + endif + + if(valves(first)==78) then !Dump to Gauge76 + !j17=j17+1 + !L78=1 + condition44 = .true. + endif + + endif + !================================================ + + + !====Pump1-StandPipeManifoldToChokeManifold-Through ChokeLine==== + if(valves(first)==82 .and. any(valves == 2)) then + if(valves(last)==71) then + !j18=j18+1 + !M71=1. + !Pump1toCh= 1. + condition46 = .true. + endif + + if(valves(last)==77) then + !j18=j18+1 + !M77=1. + !Pump1toCh= 1. + condition47 = .true. + endif + + if(valves(last)==78) then + !j18=j18+1 + !M78=1. + !Pump1toCh= 1. + condition48 = .true. + endif + + endif + !================================================================= + + + !====Pump2-StandPipeManifoldToChokeManifold-Through ChokeLine==== + if(valves(first)==83 .and. any(valves == 2)) then + if(valves(last)==71) then + !j18=j18+1 + !M71=1. + !Pump2toCh= 1. + condition49 = .true. + endif + + if(valves(last)==77) then + !j18=j18+1 + !M77=1. + !Pump2toCh= 1. + condition50 = .true. + endif + + if(valves(last)==78) then + !j18=j18+1 + !M78=1. + !Pump2toCh= 1. + condition51 = .true. + endif + + endif + !================================================================= + + + !====Pump3-StandPipeManifoldToChokeManifold-Through ChokeLine==== + if(valves(first)==84 .and. any(valves == 2)) then + if(valves(last)==71) then + !j18=j18+1 + !M71=1. + !Pump3toCh= 1. + condition52 = .true. + endif + + if(valves(last)==77) then + !j18=j18+1 + !M77=1. + !Pump3toCh= 1. + condition53 = .true. + endif + + if(valves(last)==78) then + !j18=j18+1 + !M78=1. + !Pump3toCh= 1. + condition54 = .true. + endif + + endif + !================================================================= + + + + + !===============PumpsToWell_KillLine============ + if(valves(last)==79) then + if(valves(first)==82) then + !j19=j19+1 + !N82=1 + condition55 = .true. + endif + + if(valves(first)==83) then + !j19=j19+1 + !N83=1 + condition56 = .true. + endif + + if(valves(first)==84) then + !j19=j19+1 + !N84=1 + condition57 = .true. + endif + + endif + !================================================ + + !===============WellToChokeLineGauge============ + if(valves(first)==79 .and. valves(last)==85) then + !j20=j20+1 + condition58 = .true. + endif + !================================================ + + + !============ChokeLineGaugeToTanks=============== + if(valves(first)==85) then + if(valves(last)==71) then + !j21=j21+1 + condition59 = .true. + endif + + if(valves(last)==77) then + !j21=j21+1 + condition60 = .true. + endif + + if(valves(last)==78) then + !j21=j21+1 + condition61 = .true. + endif + + endif + !================================================ + + + + + + + + + + end subroutine + + + + +end module MudSystem \ No newline at end of file diff --git a/Equipments/MudSystem/MudSystemMain.f90 b/Equipments/MudSystem/MudSystemMain.f90 new file mode 100644 index 0000000..898626a --- /dev/null +++ b/Equipments/MudSystem/MudSystemMain.f90 @@ -0,0 +1,85 @@ +module MudSystemMain + implicit none + public + contains + + subroutine MudSystem_Setup() + use CSimulationVariables + use MudSystem + implicit none + call SetupMudSystem() + call OnSimulationStop%Add(MudSystem_Stop) + call OnMudSystemStart%Add(MudSystem_Start) + call OnMudSystemStep%Add(MudSystem_Step) + call OnMudSystemMain%Add(MudSystemMainBody) + end subroutine + + subroutine MudSystem_Stop + implicit none + !print* , 'MudSystem_Stop' + CALL DEALLOCATE_ARRAYS_MudSystem() + end subroutine MudSystem_Stop + + subroutine MudSystem_Start + implicit none + !print* , 'MudSystem_Start' + CALL MudSystem_StartUp() + end subroutine MudSystem_Start + + subroutine MudSystem_Step + use MudSystem + use CManifolds + implicit none + !print* , 'MudSystem_Step' + !CALL main + if(IsTraverse) then + call LineupAndPath() + IsTraverse = .false. + endif + call main() + end subroutine MudSystem_Step + + subroutine MudSystemMainBody + USE CSimulationVariables + use MudSystem + implicit none + +! INTEGER :: MudDuration +! integer,dimension(8) :: MudStartTime , MudEndTime +! +!CALL MudSystem_StartUp() +! loop1: DO +! +! CALL DATE_AND_TIME(values=MudStartTime) +! !WRITE (*,*) '***MudSys_timeCounter', MudSys_timeCounter +! +! +! CALL main +! +! CALL DATE_AND_TIME(values=MudEndTime) +! +! MudDuration = 3600000 * (MudEndTime(5) - MudStartTime(5)) + 60000 * (MudEndTime(6) - MudStartTime(6)) + 1000 * (MudEndTime(7) - MudStartTime(7)) + (MudEndTime(8) - MudStartTime(8)) +! +! if (MudDuration < 100) then +! ELSE +! WRITE (*,*) 'Mud System run duration exceeded 100 ms and =', MudDuration +! end if +! +! IF (IsStopped==.true.) THEN +! EXIT loop1 +! ENDIF +! +! !CALL DATE_AND_TIME(values=FlowEndTime) +! !WRITE (*,*) 'FlowEndTime=' , FlowEndTime +! +! !FlowDuration = FlowEndTime(8) - FlowStartTime(8) +! +! !WRITE (*,*) 'FlowDuration Mud system=' , FlowDuration +! +! ENDDO loop1 +! +! CALL DEALLOCATE_ARRAYS_MudSystem() + + end subroutine MudSystemMainBody + +end module MudSystemMain \ No newline at end of file diff --git a/Equipments/MudSystem/MudSystemStartup.f90 b/Equipments/MudSystem/MudSystemStartup.f90 new file mode 100644 index 0000000..f48c2f0 --- /dev/null +++ b/Equipments/MudSystem/MudSystemStartup.f90 @@ -0,0 +1,501 @@ + SUBROUTINE NormalCirculation_StartUp() ! is called in module FluidFlowMain + + USE MudSystemVARIABLES + use CTanksVariables + USE CMudPropertiesVariables + Use GeoElements_FluidModule + Use KickVariables + Use CUnityOutputs + Use CShoeVariables + USE Pump_VARIABLES + + implicit none + + ! temporary varibales for solving pressure jerks -- 1399-11-09 + !Pump1BlownInTimeStep = 0 + !Pump2BlownInTimeStep = 0 + !Pump3BlownInTimeStep = 0 + + !Pump1BlownStarted = .FALSE. + !Pump2BlownStarted = .FALSE. + !Pump3BlownStarted = .FALSE. + + Pump1BlownCount = 0 + Pump2BlownCount = 0 + Pump3BlownCount = 0 + + +DeltaWellCap=0. +WellCapOld = 0. +AnnCapOld=0. +DeltaAnnCap=0. + + + Total_Stroke_Counter_For_Plot = 0.0 + + DeltaT_Mudline=0.1 !second + + Call Set_FlowKellyDisconnect(.false.) + Call Set_FlowPipeDisconnect(.false.) + +!HZ_ADD= 0.d0 +Flow_timeCounter= 0 +MudSys_timeCounter= 0 +FluidFlowCounter = 0 +!======================================================================== +! MUD CIRCULATION STARTUP +!======================================================================== + + FormationLostPressure= LeakOff * ShoeDepth + ShoeFractured= .false. + + UGBOSuccessionCounter = 0 ! also in starup + UGBOSuccessionCounterOld = 0 ! also in starup + + + + ChokeLineFlowRate= 0.0 + StringFlowRate= 0.0 + AnnulusFlowRate= 0.0 + + MudVolume_InjectedFromAnn= 0.D0 + MudVolume_InjectedToBH= 0.D0 + + DensityMixTol= 0.1 !(ppg) + CuttingDensityMixTol= 0.5 + NewPipeFilling= 1 + UtubeFilling= 1 + UtubeEmptyVolume= 0.0 + + UtubeMode1Activated= .false. + UtubeMode2Activated= .false. + UtubePossibility= .false. + + + !KickMigration_2SideBit = .FALSE. + + KickDx= (AutoMigrationRate/3600.)*DeltaT_Mudline !AutoMigrationRate (ft/h)= ft per DeltaT_Mudline + + + NewInfluxElementCreated= 0 + NewInfluxNumber= 0 + + !KickVolumeinAnnulus= 0.0 + KickDeltaVinAnnulus= 0.0 + GasKickPumpFlowRate= 0.0 + + FirstMudSet= 0 + FirstSetUtube1=0 + FirstSetUtube2=0 + SuctionMud=1 + ImudCount= 1 + imud=1 + iLoc= 1 ! for Kick + + Suction_Density_MudSystem= ActiveDensity + SuctionDensity_Old= ActiveDensity ! initial(ppg) + StringDensity_Old= ActiveDensity ! initial(ppg) + AnnulusSuctionDensity_Old= ActiveDensity ! initial(ppg) + ChokeLineDensity_Old= ActiveDensity ! initial(ppg) + + TotalAddedVolume= 0. + + + xx=0. + + + + END SUBROUTINE NormalCirculation_StartUp + + + + + + + + SUBROUTINE MudSystem_StartUp() + USE CMudPropertiesVariables + USE MudSystemVARIABLES + USE CDataDisplayConsoleVariables + USE CHOKEVARIABLES + USE Pump_VARIABLES + USE CBopStackVariables + USE CPumpsVariables + use CTanksVariables + USE KickVariables + implicit none + + + + + + CALL MUDLINE_LOSS_INPUTS() + +!Total_Pump_Gpm=10. ! Initial Value + MUD%Q=0. ! Initial Value + + Q_flow32=0. + Q_flow33=0. + Q_flow34=0. + Q_flow35=0. + + DeltaT_Mudline=0.1 !second + + GasKickPumpFlowRate= 0. + BellNippleVolume= 0. + BellNippleDensity= 0. + MudBucketVolume= 0. + MudBucketDensity= 0. + BellNippleDumpVolume= 0. + !BellNippleDumpRate= 0. + !BellNippleToPitsRate= 0.0 + MudChecked= .true. + + condition32Final= .TRUE. + condition33Final= .TRUE. + condition34Final= .TRUE. + + +PressureGauge75= 0.0 +PressureGauge76 = 0.0 + + +!!====================================================================== +!! TRIP TANK +!!====================================================================== + + TripTank_MinVol_Allowded= 50.*42. !(bbl to gal, initial value) + TripTank_MaxVol_Allowded= 50. *42. !(bbl to gal, initial value) + + +ActiveTankFloorArea= (ActiveTotalTankCapacityGal) / (7.48051948*100./12.) ! (ft^2) - Tank Height= 100 inch , 12=inch to ft 7.48051948=gal to ft^3 +TripTankFloorArea= (50.*42.) / (7.48051948*100./12.) ! (ft^2) - 50.*42.=Trip Tank Capacity in BBl*42= Gal , Tank Height= 100 inch , 12=inch to ft 7.48051948=gal to ft^3 + + + +TripTank_Vol= InitialTripTankMudVolumeGal !(gal) +TripTank_Dens= 1. +TripTankGauge=0. + + + +ReturnToTrip_Q= 1. +ActiveToTrip_Q= 1. + + +TripTankPump_Q= .8 + + +ReturnToTrip_Dens=1.0 ! ppg(lbm/gal) +ActiveToTrip_Dens=1.0 + +!!====================================================================== +!! MUD VOLUME TOTALIZER +!!====================================================================== + +Mp1Density= 0.0 !(VALVE82) +Mp2Density= 0.0 !(VALVE83) +Mp3Density= 0.0 !(VALVE84) + + +ReserveTankVolume= ReserveMudVolumeGal ! initial volume (gal) +ReserveTankDensity= ReserveDensity ! initial + + + +CementTankVolumeCalc= CementTankVolume !movaghat--- initial volume (gal) +CementTankDensityCalc= CementTankDensity !movaghat--- initial + +PumpsDumpVolume=0.0 +PumpsDumpFlowRate= 0.0 + + + +ActiveTankVolume= ActiveMudVolumeGal ! initial volume (gal) +RefrencePitVolume= ActiveTankVolume/42. !(bbl) +RefrencePitVolume_DrillWatch= ActiveTankVolume/42. !(bbl) + +MVT_MinVol_Allowded= 0. +MVT_MaxVol_Allowded= 0. + +MudTank1_vol= ActiveMudVolumeGal/3. ! (gal) +MudTank2_vol= ActiveMudVolumeGal/3. ! (gal) +MudTank3_vol= ActiveMudVolumeGal/3. ! (gal) +ActiveTankSettled= ActiveSettledContentsGal ! (gal) +MudTank4_vol= InitialTripTankMudVolumeGal ! (gal) + +TripTankVolumeCalc= InitialTripTankMudVolumeGal ! initial volume (gal) +ActiveTankDensity= ActiveDensity ! initial(ppg) +TripTankDensityCalc= TripTankDensity ! initial(ppg) + +ChokeManifoldDumpVolume= 0.0 + +PitGainLossZero= 0. +PitGainLossZero_Old= PitGainLossZero +MVTCoarseKnob_Old= MVTCoarseKnob +MVTFineKnob_Old= MVTFineKnob +FirstSet_Time= .true. + + + +PedalMeter= PedalFlowMeter !1600. !(gpm) +ReturnFlowRate=0. + + + + TotalStrokes1MFFI =0. + TotalStrokes2MFFI =0. + + TotalStrokesPump1=0. + TotalStrokesPump2=0. + GraphTotalStrokes=0. + + + TotalStrokes1 =0. + TotalStrokes2 =0. + + + + + + + end + + + + + + + + + + + +SUBROUTINE MUDLINE_LOSS_INPUTS() +USE MudSystemVARIABLES +USE CBopStackVariables +USE CPumpsVariables +implicit none +INTEGER I + + + +!=========================================================================== +! MUDLINE MINOR LOSSES INPUT +!=========================================================================== + +NO_MudMinors=4 + +ALLOCATE (MudMinors(NO_MudMinors,4)) + +! ID(INCH) LF CV NOTE(BAR) DESCRIPTION +MudMinors(1,1)= MudPump1Output +MudMinors(1,2:4)= (/1.5*8., 0., 0./) !elbow (MLnumber=1,,PumpsToString) +MudMinors(2,1)= MudPump1Output +MudMinors(2,2:4)= (/1.5*6., 0., 0./) !elbow (MLnumber=2,,STGaugeToString) +MudMinors(3,1:4)= (/0., 0., 0., 0./) !elbow (MLnumber=3,,WellToPits) +MudMinors(4,1)= ChokeLineId +MudMinors(4,2:4)= (/1.5*7., 0., 0./) !elbow (MLnumber=4,,WellToChokeManifold) + + + +ALLOCATE (MINORDIAMETER_MUDLINE(NO_MudMinors),AREAMINOR_MUDLINE(NO_MudMinors),LF_MUDLINE(NO_MudMinors),CV_MUDLINE(NO_MudMinors) & + ,NOTE_MUDLINE(NO_MudMinors)) + + + +DO I=1,NO_MudMinors + MINORDIAMETER_MUDLINE(I)=MudMinors(I,1) + LF_MUDLINE(I)=MudMinors(I,2) + CV_MUDLINE(I)=MudMinors(I,3) + NOTE_MUDLINE(I)=MudMinors(I,4) + + + AREAMINOR_MUDLINE(I)=PII*(MINORDIAMETER_MUDLINE(I)*0.0254)**2/4. !D(in), AREA(m^2) +ENDDO + +!=========================================================================== +! MUDLINE PIPNING LOSSES INPUT +!=========================================================================== +NO_PIPINGSMUDLINE=4 + +ALLOCATE (PIPINGS_MUDLINE(NO_PIPINGSMUDLINE,3)) + + ! ID(INCH) L(FEET) ROUGHNESS(MM)=e DESCRIPTION +PIPINGS_MUDLINE(1,1)= MudPump1Output +PIPINGS_MUDLINE(1,2:3)= (/265., 0.03/) !(MLnumber=1,,PumpsToString) +PIPINGS_MUDLINE(2,1)= MudPump1Output +PIPINGS_MUDLINE(2,2:3)= (/100., 0.03/) !(MLnumber=2,,STGaugeToString) +PIPINGS_MUDLINE(3,1:3)= (/0., 0., 0./) !(MLnumber=3,,WellToPits) +PIPINGS_MUDLINE(4,1)= ChokeLineId +PIPINGS_MUDLINE(4,2)= ChokeLineLength +PIPINGS_MUDLINE(4,3)= 0.03 !(MLnumber=4,,WellToChokeManifold) + +Area_ChokeLineFt= PII*((ChokeLineId/12.)**2)/4. !D(in), AREA(ft^2) +ChokeLine_VolumeCapacity= Area_ChokeLineFt* ChokeLineLength* 7.48051948 ! (gal) + + ALLOCATE (DIAM_MUDLINE_INCH(NO_PIPINGSMUDLINE), & + AREA_MUDLINE(NO_PIPINGSMUDLINE),LENGT_MUDLINE(NO_PIPINGSMUDLINE),ROUGHNESS_MUDLINE(NO_PIPINGSMUDLINE),RELROUGH_MUDLINE(NO_PIPINGSMUDLINE)) + + +DO I=1,NO_PIPINGSMUDLINE + DIAM_MUDLINE_INCH(I)=PIPINGS_MUDLINE(I,1) + LENGT_MUDLINE(I)=PIPINGS_MUDLINE(I,2) + ROUGHNESS_MUDLINE(I)=PIPINGS_MUDLINE(I,3) + + + + AREA_MUDLINE(I)=PII*(DIAM_MUDLINE_INCH(I)*0.0254)**2/4 !D(in), AREA(m^2) + RELROUGH_MUDLINE(I)=ROUGHNESS_MUDLINE(I)/(DIAM_MUDLINE_INCH(I)*25.4) !e/D + !DIAM_MUDLINE_MM(I)=DIAM_MUDLINE_MM(I)*.001 ! (m) + LENGT_MUDLINE(I)=LENGT_MUDLINE(I)*.3048 ! (m) +ENDDO + + +!=========================================================================== +! MUDLINE STATIC LOSSES INPUT +!=========================================================================== + +! Height are in (meter) +Pumps_Height= 0. +STpipeGauge_Height= 2. !(m) +Pits_Height= 1. !(m) +ChokeManifold_Height= 1.*0.3048 !(ft to meter) +WellChokeExit_Height= GroundLevel-KillHeight + + + + + + + + + + + + + + END + + + + + SUBROUTINE MUDLINE_LOSSES(MLnumber) + + USE MudSystemVARIABLES + implicit none + integer I + INTEGER MLnumber + + +!===============================PIPE LOSS=================================== + MUD(MLnumber)%Re_MUDline=MUD(MLnumber)%Q*6.30902e-5*DIAM_MUDLINE_INCH(MLnumber)*0.0254/(AREA_MUDLINE(MLnumber)*MUD(MLnumber)%nu) !<<<<<< nu: DOROST SHAVAD.ALAN DAR STARTUP SET SHODE +!write(*,*) 'MUD(MLnumber)%Re_MUDline=' , MUD(MLnumber)%Re_MUDline +! Q*6.30902e-5 for (gpm) to (m^3/sec) + if ( MUD(MLnumber)%Re_MUDlineStandPipePressure + !use CManifolds + use CDrillWatchVariables + !use CHOKEVARIABLES + !use CChokeManifoldVariables + use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + USE sROP_Other_Variables + USE sROP_Variables + Use KickVariables + USE CKellyConnectionEnumVariables + USE UTUBEVARS + use CLog1 + Use CError + Use , intrinsic :: IEEE_Arithmetic + + implicit none + + integer jelement, jmud, jsection,ielement,i + integer jopelement,jopmud,jopsection + character(len=120) :: temp1, temp2 + + + + + if (ChokePanelStrokeResetSwitch == 1) then + write(*,*) 'well cap=' , sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) + DeltaWellCap= sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) - WellCapOld + WellCapOld= sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) + write(*,*) 'cap_reset,DeltaWellCap=' , DeltaWellCap + endif + + + + +!========================ANNULUS END================= +if ((Ann_Mud_Forehead_X%Last() - AboveAnnularHeight) > 0.8 .or. Ann_Density%Last()==0.0) then ! for Line (BellNippleToWell-NonFullWell) + WellisNOTFull= .true. +else + WellisNOTFull= .false. +endif + +!WRITE(*,*) 'Ann_Mud_Forehead_X%Last() , KillHeight', Ann_Mud_Forehead_X%Last() , KillHeight +if ((Ann_Mud_Forehead_X%Last() - KillHeight)>0.8 .or. Ann_Density%Last()==0.0) then ! for Line j4 , WellToChokeManifold(Through 26) + ChokeLineNOTFull= .true. +else + ChokeLineNOTFull= .false. +endif + + + +!========================================================= + + jmud= 1 + jsection= 1 + jelement= 0 ! number of final mud elements + + + + call Xend_MudElement%Empty() + call TVDend_MudElement%Empty() + call Density_MudElement%Empty() + call MudGeoType%Empty() + call PipeID_MudElement%Empty() + call PipeOD_MudElement%Empty() + !call Angle_MudElement%Empty() + call MudType_MudElement%Empty() + + + + DO WHILE(jmud <= Hz_Mud_Forehead_X%Length() .and. jsection<=1) + + jelement= jelement+1 + TrueMinValue= min(Hz_Mud_Forehead_X%Array(jmud), Xend_PipeSection(jsection)) + + call Xend_MudElement%Add(TrueMinValue) + call TVD_Calculator(TrueMinValue,MudCircVerticalDepth) + call TVDend_MudElement%Add(MudCircVerticalDepth) + call Density_MudElement%Add(Hz_Density%Array(jmud)) + call PipeID_MudElement%Add(ID_PipeSectionInch(jsection)) + call PipeOD_MudElement%Add(OD_PipeSectionInch(jsection)) + !call Angle_MudElement%Add(Angle_PipeSection(jsection)) + call MudType_MudElement%Add(Hz_MudOrKick%Array(jmud)) + + + if (Xend_MudElement%Array(jelement)== Hz_Mud_Forehead_X%Array(jmud)) then + jmud= jmud+1 + else + jsection= jsection+1 + endif + + ENDDO + + NoHorizontalMudElements= jelement + + + + + jmud= 1 + jsection= 2 + + DO WHILE(jmud <= St_Mud_Forehead_X%Length() .and. jsection<=F_StringIntervalCounts) + + jelement= jelement+1 + TrueMinValue= min(St_Mud_Forehead_X%Array(jmud), Xend_PipeSection(jsection)) + + call Xend_MudElement%Add(TrueMinValue) + call TVD_Calculator(TrueMinValue,MudCircVerticalDepth) + call TVDend_MudElement%Add(MudCircVerticalDepth) + call Density_MudElement%Add(St_Density%Array(jmud)) + call PipeID_MudElement%Add(ID_PipeSectionInch(jsection)) + call PipeOD_MudElement%Add(OD_PipeSectionInch(jsection)) + !call Angle_MudElement%Add(Angle_PipeSection(jsection)) + call MudType_MudElement%Add(St_MudOrKick%Array(jmud)) + + + if (Xend_MudElement%Array(jelement)== St_Mud_Forehead_X%Array(jmud)) then + jmud= jmud+1 + else + jsection= jsection+1 + endif + + ENDDO + + NoStringMudElements= jelement- NoHorizontalMudElements + + + + + + jmud= 1 + jsection= F_StringIntervalCounts+1 + DO WHILE(jmud<= Ann_Mud_Forehead_X%Length() .and. jsection<=NoPipeSections) + + jelement= jelement+1 + TrueMinValue= max(Ann_Mud_Forehead_X%Array(jmud), Xend_PipeSection(jsection)) + + call Xend_MudElement%Add(TrueMinValue) + call TVD_Calculator(TrueMinValue,MudCircVerticalDepth) + call TVDend_MudElement%Add(MudCircVerticalDepth) + call Density_MudElement%Add(Ann_Density%Array(jmud)) + call PipeID_MudElement%Add(ID_PipeSectionInch(jsection)) + call PipeOD_MudElement%Add(OD_PipeSectionInch(jsection)) + !call Angle_MudElement%Add(Angle_PipeSection(jsection)) + call MudType_MudElement%Add(Ann_MudOrKick%Array(jmud)) + + + if (Xend_MudElement%Array(jelement)== Ann_Mud_Forehead_X%Array(jmud)) then + jmud= jmud+1 + else + jsection= jsection+1 + endif + + ENDDO + + do i= 2, Xend_MudElement%Length() + if ( i== NoHorizontalMudElements+NoStringMudElements+1) then + call Xstart_MudElement%Add (Ann_Mud_Backhead_X%Array(1)) ! start of annulus + call TVD_Calculator(Ann_Mud_Backhead_X%Array(1),MudCircVerticalDepth) + call TVDstart_MudElement%Add(MudCircVerticalDepth) + elseif ( i== NoHorizontalMudElements+1 ) then + call Xstart_MudElement%Add (St_Mud_Backhead_X%Array(1)) ! start of stirng + call TVD_Calculator(St_Mud_Backhead_X%Array(1),MudCircVerticalDepth) + call TVDstart_MudElement%Add(MudCircVerticalDepth) + else + call Xstart_MudElement%Add(Xend_MudElement%Array(i-1)) ! normal calculation + call TVDstart_MudElement%Add(TVDend_MudElement%Array(i-1)) ! normal calculation + endif + + enddo + + NoCasingMudElements = jelement- NoStringMudElements- NoHorizontalMudElements + + +!=========================For Torque and Drag======================== + if (allocated(TDXstart_MudElementArray)) deallocate(TDXstart_MudElementArray) + allocate(TDXstart_MudElementArray(NoHorizontalMudElements+NoStringMudElements+NoCasingMudElements)) + if (allocated(TDXend_MudElementArray)) deallocate(TDXend_MudElementArray) + allocate(TDXend_MudElementArray(NoHorizontalMudElements+NoStringMudElements+NoCasingMudElements)) + if (allocated(TDDensity_MudElementArray)) deallocate(TDDensity_MudElementArray) + allocate(TDDensity_MudElementArray(NoHorizontalMudElements+NoStringMudElements+NoCasingMudElements)) + + TDNoHorizontalMudElements= NoHorizontalMudElements + TDNoStringMudElements= NoStringMudElements + TDNoCasingMudElements= NoCasingMudElements + + + TDXstart_MudElementArray(:) = Xstart_MudElement%Array(:) + TDXend_MudElementArray(:) = Xend_MudElement%Array(:) + TDDensity_MudElementArray(:) = Density_MudElement%Array(:) +!===================================================================== + + + !do i=NoHorizontalMudElements+1, NoHorizontalMudElements+NoStringMudElements ! 2-string elements + ! write(*,333) 'STRING:', i,'Xstart\=', Xstart_MudElement%Array(i), 'Xend=' , Xend_MudElement%Array(i), 'Density=' , Density_MudElement%Array(i), 'MudType=' , MudType_MudElement%Array(i) + !enddo + + + + !================================================================ + + ! Open Hole Mud Elements + jopmud= 1 + jopsection= 1 + jopelement= 0 ! number of final mud elements + + + call Xend_OpMudElement%Empty() + call TVDend_OpMudElement%Empty() + call Density_OpMudElement%Empty() + call PipeID_OpMudElement%Empty() + call PipeOD_OpMudElement%Empty() + !call Angle_OpMudElement%Empty() + call MudTypeOp_MudElement%Empty() + + + + DO WHILE(jopmud<= Op_Mud_Forehead_X%Length() .and. jopsection<=F_BottomHoleIntervalCounts) + + jopelement= jopelement+1 + TrueMinValue= max(Op_Mud_Forehead_X%Array(jopmud), Xend_OpSection(jopsection)) + call Xend_OpMudElement%Add(TrueMinValue) + call TVD_Calculator(TrueMinValue,MudCircVerticalDepth) + call TVDend_OpMudElement%Add(MudCircVerticalDepth) + call Density_OpMudElement%Add(Op_Density%Array(jopmud)) + call PipeID_OpMudElement%Add(ID_OpSectionInch(jopsection)) + call PipeOD_OpMudElement%Add(OD_OpSectionInch(jopsection)) + !call Angle_MudElement%Add(Angle_PipeSection(jopsection)) + call MudTypeOp_MudElement%Add(Op_MudOrKick%Array(jopmud)) + + + if (Xend_OpMudElement%Array(jopelement)== Op_Mud_Forehead_X%Array(jopmud)) then + jopmud= jopmud+1 + else + jopsection= jopsection+1 + endif + + ENDDO + + do i= 2, Xend_OpMudElement%Length() + call Xstart_OpMudElement%Add(Xend_OpMudElement%Array(i-1)) + call TVDstart_OpMudElement%Add(TVDend_OpMudElement%Array(i-1)) + enddo + + NoBottomHoleMudElements = jopelement + + + !================================================================ + + + + if(allocated(StringMudElement)) deallocate(StringMudElement) + allocate(StringMudElement(NoStringMudElements)) + + if(allocated(CasingMudElement)) deallocate(CasingMudElement) + allocate(CasingMudElement(NoCasingMudElements+NoBottomHoleMudElements)) + + istring=0 + icasing=0 + + BitMudDensity= Density_MudElement%Array(NoHorizontalMudElements+NoStringMudElements) ! (for ROP module) + !================================================================ + + !============================ UTUBE ============================= + + !IF (UtubePossibility== .true. .and. Get_KellyConnection() /= KELLY_CONNECTION_STRING .and. WellHeadIsOpen) THEN + IF (UtubePossibility== .true. .and. TD_FluidStringConnectionMode==0 .and. WellHeadIsOpen .AND. NoGasPocket == 0) THEN + CALL WellPressureDataTransfer + !WRITE (*,*) ' U-Tube Done 1' + CALL Utube + !WRITE (*,*) ' U-Tube Done 2' + if (QUtubeInput> 0.0) call Utube1_and_TripIn + if (QUtubeOutput> 0.0) call Utube2_and_TripIn + END IF + + !========================== UTUBE- end ========================= + + ! do imud=1, st_MudDischarged_Volume%Length() + ! write(*,*) 'st-plot:', imud, St_MudDischarged_Volume%Array(imud), St_Mud_Backhead_X%Array(imud) ,St_Mud_Forehead_X%Array(imud) + !enddo +!==================== Display ======================== + !do i=1, St_MudOrKick%Length() + ! write(*,555) i,'St_Volume(i), type=' ,St_MudDischarged_Volume%Array(i),St_MudOrKick%Array(i) + ! + ! IF (IEEE_Is_NaN(St_MudDischarged_Volume%Array(i))) call ErrorStop('NaN in St Volume-Plot') + ! IF (St_MudDischarged_Volume%Array(i)<0.) call ErrorStop('St Volume <0' , St_MudDischarged_Volume%Array(i)) + !enddo + + + IF (ANY(IEEE_Is_NaN(Op_MudDischarged_Volume%Array(:))) .OR. ANY(Op_MudDischarged_Volume%Array(:) <= 0.0)) THEN + do i = 1 , Op_MudOrKick%Length() + write(*,555) i,'Op_Volume(i), type=' ,Op_MudDischarged_Volume%Array(i) , Op_MudOrKick%Array(i) , Op_Density%Array(i) + end do + call ErrorStop('NaN in Op Volume-Plot or Op Volume <=0') + END IF + + + IF (ANY(IEEE_Is_NaN(Ann_MudDischarged_Volume%Array(:))) .OR. ANY(Ann_MudDischarged_Volume%Array(:) <= 0.0)) THEN + do i = 1 , Ann_MudOrKick%Length() + write(*,555) i,'Ann_Volume(i), type=' ,Ann_MudDischarged_Volume%Array(i) , Ann_MudOrKick%Array(i) , Ann_Density%Array(i) + end do + call ErrorStop('NaN in Ann Volume-Plot or Ann Volume <=0') + END IF + + !do i=1, Ann_MudOrKick%Length() + ! !write(*,555) i,'Ann_Volume(i), type=' ,Ann_MudDischarged_Volume%Array(i),Ann_MudOrKick%Array(i),Ann_Density%Array(i) + ! + ! IF (IEEE_Is_NaN(Ann_MudDischarged_Volume%Array(i))) call ErrorStop('NaN in Ann Volume-Plot') + ! IF (Ann_MudDischarged_Volume%Array(i)<=0.) call ErrorStop('Ann Volume <=0' , Ann_MudDischarged_Volume%Array(i)) + !enddo + +555 FORMAT(I3,5X,A42,(f12.5),5X,I3,5X,(f12.5)) + + NoStringMudElementsForPlot= NoStringMudElements + + ! 1-Horizontal Mud Elements are not shown + !write(*,333) 'Horiz:', 1,'Xstart\=', Xstart_MudElement%Array(1), 'Xend=' , Xend_MudElement%Array(1), 'Density=' , Density_MudElement%Array(1), 'MudType=' , MudType_MudElement%Array(1) + + do i=NoHorizontalMudElements+1, NoHorizontalMudElements+NoStringMudElements ! 2-string elements + if (Xend_MudElement%Array(i) <= 0.0) then + NoStringMudElementsForPlot= NoStringMudElementsForPlot-1 + cycle + endif + istring= istring+1 + StringMudElement(istring)%StartMd = Xstart_MudElement%Array(i) + StringMudElement(istring)%EndMd = Xend_MudElement%Array(i) + !StringMudElement(istring)%Id = PipeID_MudElement%Array(i) + !StringMudElement(istring)%Od = PipeOD_MudElement%Array(i) + StringMudElement(istring)%Density = Density_MudElement%Array(i) + + if (MudType_MudElement%Array(i) == 104) then + MudType_MudElement%Array(i)= 4 ! air + elseif (MudType_MudElement%Array(i) > 0 .and. MudType_MudElement%Array(i) < 100) then ! all kicks + MudType_MudElement%Array(i)= 1 ! gas kick + endif + + StringMudElement(istring)%MudType = MudType_MudElement%Array(i) + !write(*,333) 'STRING:', i,'Xstart\=', Xstart_MudElement%Array(i), 'Xend=' , Xend_MudElement%Array(i), 'Density=' , Density_MudElement%Array(i), 'MudType=' , MudType_MudElement%Array(i) + enddo + + + + do i=Xend_MudElement%Length(), NoHorizontalMudElements+NoStringMudElements+1 , -1 ! 3-casing elements + icasing= icasing+1 + CasingMudElement(icasing)%StartMd = Xend_MudElement%Array(i) + CasingMudElement(icasing)%EndMd = Xstart_MudElement%Array(i) + !CasingMudElement(icasing)%Id = PipeID_MudElement%Array(i) + !CasingMudElement(icasing)%Od = PipeOD_MudElement%Array(i) + !write(*,333) 'CASING:', i,'Xstart\=', Xstart_MudElement%Array(i), 'Xend=' , Xend_MudElement%Array(i), 'Density=' , Density_MudElement%Array(i), 'MudType=' , MudType_MudElement%Array(i) + !call Log_1(temp1) + !write(*,444) 'CASING:', i,'Xstart\=', Xstart_MudElement%Array(i), 'Xend=' , Xend_MudElement%Array(i), 'PipeID_MudElement%Array(i)=' , PipeID_MudElement%Array(i), 'PipeOD_MudElement%Array(i)=' , PipeOD_MudElement%Array(i) + CasingMudElement(icasing)%Density = Density_MudElement%Array(i) + + if (MudType_MudElement%Array(i) == 104) then + MudType_MudElement%Array(i)= 4 ! air + elseif (MudType_MudElement%Array(i) > 0 .and. MudType_MudElement%Array(i) < 100) then + MudType_MudElement%Array(i)= 1 ! gas kick + endif + + CasingMudElement(icasing)%MudType = MudType_MudElement%Array(i) + + enddo + + do i= NoBottomHoleMudElements, 1 , -1 ! 4-open hole elements + icasing= icasing+1 + CasingMudElement(icasing)%StartMd = Xend_OpMudElement%Array(i) + CasingMudElement(icasing)%EndMd = Xstart_OpMudElement%Array(i) + !CasingMudElement(icasing)%Id = PipeID_OpMudElement%Array(i) + !CasingMudElement(icasing)%Od = PipeOD_OpMudElement%Array(i) + !write(*,333) 'OpenHole:',i,'Xstart\=', Xstart_OpMudElement%Array(i), 'Xend=' , Xend_OpMudElement%Array(i), 'Density=' , Density_OpMudElement%Array(i), 'MudType=' , MudTypeOp_MudElement%Array(i) + !call Log_1(temp2) + !write(*,444) 'OpenHole:',i,'Xstart\=', Xstart_OpMudElement%Array(i), 'Xend=' , Xend_OpMudElement%Array(i), 'PipeID_MudElement%Array(i)=' , PipeID_MudElement%Array(i), 'PipeOD_MudElement%Array(i)=' , PipeOD_MudElement%Array(i) + CasingMudElement(icasing)%Density = Density_OpMudElement%Array(i) + + if (MudTypeOp_MudElement%Array(i) == 104) then + MudTypeOp_MudElement%Array(i)= 4 ! air + elseif (MudTypeOp_MudElement%Array(i) > 0 .and. MudTypeOp_MudElement%Array(i) < 100) then + MudTypeOp_MudElement%Array(i)= 1 ! gas kick + endif + + CasingMudElement(icasing)%MudType = MudTypeOp_MudElement%Array(i) + enddo + + + +333 FORMAT(A10,I3,5X,A8,(f12.5),5X,A8,(f12.5),5X,A8,(f12.5),5X,A8,I3) +444 FORMAT(A10,I2,5X,A8,(f12.3),5X,A8,(f12.3),5X,A8,(f12.3),5X,A8,(f12.3)) + + + + ! shomare gozari be tartib HZ mud, ST mud, Casing + ! shomare gzari OpenHole jodagane ast az 1 + + call SetStringFluids(NoStringMudElementsForPlot, StringMudElement) !for data display in string + call SetAnnalusFluids(NoCasingMudElements+NoBottomHoleMudElements, CasingMudElement) !for data display in casing + + +!=========================================================================================================================== +!=========================================================================================================================== + + + end subroutine PlotFinalMudElements + + + diff --git a/Equipments/MudSystem/Pump_and_Trip_In.f90 b/Equipments/MudSystem/Pump_and_Trip_In.f90 new file mode 100644 index 0000000..7a2c79b --- /dev/null +++ b/Equipments/MudSystem/Pump_and_Trip_In.f90 @@ -0,0 +1,1626 @@ +subroutine Pump_and_TripIn ! is called in subroutine CirculationCodeSelect + + Use GeoElements_FluidModule + USE CMudPropertiesVariables + USE MudSystemVARIABLES + USE Pump_VARIABLES + !USE CHOKEVARIABLES + !USE CDataDisplayConsoleVariables , StandPipePressureDataDisplay=>StandPipePressure + !use CManifolds + use CDrillWatchVariables + !use CHOKEVARIABLES + !use CChokeManifoldVariables + use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + USE sROP_Other_Variables + USE sROP_Variables + Use KickVariables + Use CShoeVariables + + + implicit none + +integer i,ii,AddLocation +!===========================================================WELL============================================================ +!===========================================================WELL============================================================ + + StringFlowRate= MUD(2)%Q + AnnulusFlowRate= MUD(2)%Q + + + !write(*,*) 'Trip In' + + +!========================Horizontal PIPE ENTRANCE================= + + if (ABS(SuctionDensity_Old - Suction_Density_MudSystem) >= DensityMixTol) then ! new mud is pumped + + call Hz_Density%AddToFirst (Suction_Density_MudSystem) + call Hz_MudDischarged_Volume%AddToFirst (0.0d0) + call Hz_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(1)) + call Hz_Mud_Forehead_section%AddToFirst (1) + call Hz_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(1)) + call Hz_Mud_Backhead_section%AddToFirst (1) + call Hz_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Hz_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Hz_MudOrKick%AddToFirst (0) + + SuctionDensity_Old= Suction_Density_MudSystem + endif + +!========================Horizontal PIPE STRING================= + + Hz_MudDischarged_Volume%Array(1)= Hz_MudDischarged_Volume%Array(1)+ ((StringFlowRate/60.0d0)*DeltaT_Mudline) !(gal) + + total_add = total_add + ((StringFlowRate/60.0d0)*DeltaT_Mudline) + + if (ChokePanelStrokeResetSwitch == 1) then + total_add= 0. + endif + + + !write(*,*) ' total decrease(add to HZ)=' , total_add + !write(*,*) ' add to HZ=' , ((StringFlowRate/60.0d0)*DeltaT_Mudline) + +imud=0 + do while (imud < Hz_Mud_Forehead_X%Length()) + imud = imud + 1 + + if (imud> 1) then + Hz_Mud_Backhead_X%Array(imud)= Hz_Mud_Forehead_X%Array(imud-1) + Hz_Mud_Backhead_section%Array(imud)= Hz_Mud_Forehead_section%Array(imud-1) + endif + + + DirectionCoef= (Xend_PipeSection(Hz_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(Hz_Mud_Backhead_section%Array(imud))) & + / ABS(Xend_PipeSection(Hz_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(Hz_Mud_Backhead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + Hz_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Xend_PipeSection(Hz_Mud_Backhead_section%Array(imud))- Hz_Mud_Backhead_X%Array(imud))* & + Area_PipeSectionFt(Hz_Mud_Backhead_section%Array(imud)) !(ft^3) + Hz_EmptyVolume_inBackheadLocation%Array(imud)= Hz_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + + if ( Hz_MudDischarged_Volume%Array(imud) <= Hz_EmptyVolume_inBackheadLocation%Array(imud)) then + Hz_Mud_Forehead_section%Array(imud)= Hz_Mud_Backhead_section%Array(imud) + Hz_Mud_Forehead_X%Array(imud)= Hz_Mud_Backhead_X%Array(imud)+ DirectionCoef*(Hz_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_PipeSectionFt(Hz_Mud_Backhead_section%Array(imud)) + + else + + + isection= Hz_Mud_Backhead_section%Array(imud)+1 + Hz_RemainedVolume_in_LastSection%Array(imud)= Hz_MudDischarged_Volume%Array(imud)- Hz_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection > 1) then ! (horizontal pipe exit) + Hz_MudDischarged_Volume%Array(imud)= Hz_MudDischarged_Volume%Array(imud)- Hz_RemainedVolume_in_LastSection%Array(imud) + Hz_Mud_Forehead_X%Array(imud)= Xend_PipeSection(1) + Hz_Mud_Forehead_section%Array(imud)= 1 + + if (Hz_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the string + call RemoveHzMudArrays(imud) + endif + + exit + endif + + xx= Hz_RemainedVolume_in_LastSection%Array(imud)/ PipeSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + Hz_Mud_Forehead_section%Array(imud)= isection + Hz_Mud_Forehead_X%Array(imud)= (xx * (Xend_PipeSection(isection)- Xstart_PipeSection(isection)))+ Xstart_PipeSection(isection) + exit + else + Hz_RemainedVolume_in_LastSection%Array(imud)= Hz_RemainedVolume_in_LastSection%Array(imud)- PipeSection_VolumeCapacity(isection) + isection= isection+ 1 + + endif + + enddo + + endif + + enddo +!========================Horizontal PIPE END================= + + +!========================Utube1 Air Element Removing================= + + !if (UtubeMode1Activated== .true.) then ! StringUpdate == .true. + ! + ! + ! !StringDensity_Old= St_Density%Array(2) + ! + ! write(*,*) 'StringDensity_Old=' , StringDensity_Old + ! + ! UtubeMode1Activated= .false. + !endif + +!========================Utube1 Air Element Removing End================= + +!!========================Utube2 Removing from Annulus================= not needed 97.04.26 +! +! if (UtubeMode2Activated== .true.) then ! StringUpdate == .true. +! +! if (Ann_MudOrKick%Last() == 104) then !movaghati. albate age merge anjam shode bashe moshkeli nist +! call RemoveAnnulusMudArrays(Ann_MudOrKick%Length()) +! endif +! +! UtubeMode2Activated= .false. +! endif +! +! +!!========================Utube2 Removing from Annulus End================= + +!========================New Pipe Filling================= + + !if (F_StringIntervalCounts > F_StringIntervalCountsOld) then ! StringUpdate == .true. + if (AddedElementsToString > 0) then ! StringUpdate == .true. + + !NoPipeAdded= F_StringIntervalCounts - F_StringIntervalCountsOld + + + NewPipeFilling=0 + + IF (St_MudOrKick%First() == 104) then + St_MudDischarged_Volume%Array(1) = St_MudDischarged_Volume%Array(1) + sum(PipeSection_VolumeCapacity(2:1+AddedElementsToString)) ! new pipe is filled by air + else + call St_Density%AddToFirst (0.d0) + call St_MudDischarged_Volume%AddToFirst (sum(PipeSection_VolumeCapacity(2:1+AddedElementsToString))) + call St_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(2)) + call St_Mud_Forehead_section%AddToFirst (2) + call St_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(2)) + call St_Mud_Backhead_section%AddToFirst (2) + call St_RemainedVolume_in_LastSection%AddToFirst (0.d0) + call St_EmptyVolume_inBackheadLocation%AddToFirst (0.d0) + call St_MudOrKick%AddToFirst (104) + endif + + endif + + !F_StringIntervalCountsOld= F_StringIntervalCounts + + + + if (NewPipeFilling == 0) then ! 2= is the first element of string (1= is for Hz pipe) + + + LackageMudVolume= St_MudDischarged_Volume%Array(1) ! = Air element + + + write(*,*) 'LackageMudVolume=' , LackageMudVolume + + + + if (ABS(St_Density%Array(2) - Hz_Density%Last()) >= DensityMixTol) then ! new mud is pumped + call St_Density%AddTo (2,Hz_Density%Last()) + call St_MudDischarged_Volume%AddTo (2, 0.d0) + call St_Mud_Forehead_X%AddTo (2,Xstart_PipeSection(2)) + call St_Mud_Forehead_section%AddTo (2 , 2) + call St_Mud_Backhead_X%AddTo (2,Xstart_PipeSection(2)) + call St_Mud_Backhead_section%AddTo (2 ,2) + call St_RemainedVolume_in_LastSection%AddTo (2,0.d0) + call St_EmptyVolume_inBackheadLocation%AddTo (2,0.d0) + call St_MudOrKick%AddTo (2,0) + + !StringDensity_Old= Hz_Density%Last() + endif + + + St_MudDischarged_Volume%Array(2)= St_MudDischarged_Volume%Array(2)+ min( ((StringFlowRate/60.0d0)*DeltaT_Mudline), LackageMudVolume) !(gal) + + St_MudDischarged_Volume%Array(1)= St_MudDischarged_Volume%Array(1)- min( ((StringFlowRate/60.0d0)*DeltaT_Mudline), LackageMudVolume) ! air(gal) + + !LackageMudVolumeAfterFilling= sum(PipeSection_VolumeCapacity(2:F_StringIntervalCounts)) - sum(St_MudDischarged_Volume%Array(:)) + + LackageMudVolumeAfterFilling= St_MudDischarged_Volume%Array(1) ! last time it should be zero + + + + if (LackageMudVolumeAfterFilling == 0.) then + NewPipeFilling= 1 + call RemoveStringMudArrays(1) + St_Mud_Backhead_X%Array(1) = Xstart_PipeSection(2) + St_Mud_Backhead_section%Array(1) = 2 + endif + + endif + +!========================New Pipe Filling End================= + + + + + if (NewPipeFilling == 0) then + StringFlowRate= 0. + AnnulusFlowRate= 0. + endif + + StringFlowRateFinal= StringFlowRate + AnnulusFlowRateFinal= AnnulusFlowRate + + + + +!========================STRING ENTRANCE================= + + if (StringFlowRateFinal > 0.0 .and. ABS(St_Density%First() - Hz_Density%Last()) >= DensityMixTol) then ! new mud is pumped + call St_Density%AddToFirst (Hz_Density%Last()) + call St_MudDischarged_Volume%AddToFirst (0.0d0) + call St_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(2)) + call St_Mud_Forehead_section%AddToFirst (2) + call St_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(2)) + call St_Mud_Backhead_section%AddToFirst (2) + call St_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call St_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call St_MudOrKick%AddToFirst (0) + + !StringDensity_Old= Hz_Density%Last() + endif + + + St_MudDischarged_Volume%Array(1)= St_MudDischarged_Volume%Array(1)+ ((StringFlowRate/60.0d0)*DeltaT_Mudline) !(gal) + +!=============== save String Mud data=========== + + + + + StMudVolumeSum= 0.d0 + !St_MudSaved_Density= 0.d0 + St_Saved_MudDischarged_Volume= 0.d0 + !Saved_St_MudOrKick= 0 + !Ann_to_Choke_2mud= .false. + + do imud=1, St_MudDischarged_Volume%Length() + + StMudVolumeSum = StMudVolumeSum + St_MudDischarged_Volume%Array(imud) + + if ( StMudVolumeSum > sum(PipeSection_VolumeCapacity(2:F_StringIntervalCounts)) ) then + + !IF (St_MudOrKick%Array(imud) == 0) THEN + St_MudSaved_Density = St_Density%Array(imud) + St_Saved_MudDischarged_Volume = StMudVolumeSum - sum(PipeSection_VolumeCapacity(2:F_StringIntervalCounts)) + !ELSEIF (St_MudOrKick%Array(imud) > 0 .AND. St_MudOrKick%Array(imud) <100) THEN ! 104= AIR + ! St_Kick_Saved_Volume = StMudVolumeSum - sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + ! Saved_St_MudOrKick= St_MudOrKick%Array (imud) + ! St_KickSaved_Density= St_Density%Array(imud) + !END IF + + do ii= imud + 1, St_MudDischarged_Volume%Length() + !IF (St_MudOrKick%Array(ii) == 0) THEN + St_MudSaved_Density = ((St_MudSaved_Density * St_Saved_MudDischarged_Volume) + (St_Density%Array(ii) * St_MudDischarged_Volume%Array(ii))) / (St_Saved_MudDischarged_Volume + St_MudDischarged_Volume%Array(ii)) + St_Saved_MudDischarged_Volume = St_Saved_MudDischarged_Volume + St_MudDischarged_Volume%Array(ii) + + !ELSEIF (St_MudOrKick%Array(imud) > 0 .AND. St_MudOrKick%Array(imud) <100) THEN ! 104= AIR + ! St_Kick_Saved_Volume = St_Kick_Saved_Volume + St_MudDischarged_Volume%Array(ii) + ! Saved_St_MudOrKick= St_MudOrKick%Array (ii) + ! St_KickSaved_Density= St_Density%Array(ii) + !END IF + enddo + + + !WRITE (*,*) 'St_Saved_Mud_Volume, St_Kick_Saved_Volume', St_Saved_MudDischarged_Volume, St_Kick_Saved_Volume + exit ! exits do + + endif + + enddo +St_Saved_MudDischarged_Volume_Final = St_Saved_MudDischarged_Volume + +IF (WellHeadIsOpen) MudVolume_InjectedToBH = St_Saved_MudDischarged_Volume_Final +!====================================================================== + +!========================STRING================= + +imud=0 + do while (imud < St_Mud_Forehead_X%Length()) + imud = imud + 1 + + if (imud> 1) then + St_Mud_Backhead_X%Array(imud)= St_Mud_Forehead_X%Array(imud-1) + St_Mud_Backhead_section%Array(imud)= St_Mud_Forehead_section%Array(imud-1) + endif + + DirectionCoef= (Xend_PipeSection(St_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(St_Mud_Backhead_section%Array(imud))) & + / ABS(Xend_PipeSection(St_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(St_Mud_Backhead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + St_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Xend_PipeSection(St_Mud_Backhead_section%Array(imud))- St_Mud_Backhead_X%Array(imud))* & + Area_PipeSectionFt(St_Mud_Backhead_section%Array(imud)) !(ft^3) + St_EmptyVolume_inBackheadLocation%Array(imud)= St_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + + !write(*,*) 'St_Mud_Backhead_section%Array(1)=' , St_Mud_Backhead_section%Array(1) + !write(*,*) 'Xend_PipeSection(St_Mud_Backhead_section%Array(1))=' , Xend_PipeSection(St_Mud_Backhead_section%Array(1)) + ! + !write(*,*) 'St_EmptyVolume_inBackheadLocation%Array(1)=' , St_EmptyVolume_inBackheadLocation%Array(1) + !write(*,*) 'St_Mud_Backhead_X%Array(1)=' , St_Mud_Backhead_X%Array(1) + + + if ( St_MudDischarged_Volume%Array(imud) <= St_EmptyVolume_inBackheadLocation%Array(imud)) then + St_Mud_Forehead_section%Array(imud)= St_Mud_Backhead_section%Array(imud) + St_Mud_Forehead_X%Array(imud)= St_Mud_Backhead_X%Array(imud)+ DirectionCoef*(St_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_PipeSectionFt(St_Mud_Backhead_section%Array(imud)) + ! 7.48 is for gal to ft^3 + + else + + isection= St_Mud_Backhead_section%Array(imud)+1 + St_RemainedVolume_in_LastSection%Array(imud)= St_MudDischarged_Volume%Array(imud)- St_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection > F_StringIntervalCounts) then ! last pipe section(string exit) F_StringIntervalCounts includes Horizontal line + St_MudDischarged_Volume%Array(imud)= St_MudDischarged_Volume%Array(imud)- St_RemainedVolume_in_LastSection%Array(imud) + St_Mud_Forehead_X%Array(imud)= Xend_PipeSection(F_StringIntervalCounts) + St_Mud_Forehead_section%Array(imud)= F_StringIntervalCounts + + if (St_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the string + call RemoveStringMudArrays(imud) + endif + + exit + endif + + xx= St_RemainedVolume_in_LastSection%Array(imud)/ PipeSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + St_Mud_Forehead_section%Array(imud)= isection + St_Mud_Forehead_X%Array(imud)= (xx * (Xend_PipeSection(isection)- Xstart_PipeSection(isection)))+ Xstart_PipeSection(isection) + exit + else + St_RemainedVolume_in_LastSection%Array(imud)= St_RemainedVolume_in_LastSection%Array(imud)- PipeSection_VolumeCapacity(isection) + isection= isection+ 1 + + + endif + + enddo + + endif + + enddo + + + !write(*,*) ' a before==' + ! + ! do imud=1, Op_MudDischarged_Volume%Length() + ! write(*,*) 'Op:', imud, Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) ,Op_MudOrKick%Array(imud) + ! enddo + ! + ! do imud=1, Ann_MudDischarged_Volume%Length() + ! write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + ! enddo + ! + !write(*,*) '==== a before' + + + + + !write(*,*) ' iloc (a): ' , iloc + +!========================STRING END================= + + IF (Op_MudOrKick%Last() /= 0 .and. Op_MudOrKick%Last()==Ann_MudOrKick%First()) iLoc=2 ! it may be 1,2,3 or more, all of them are kick +!write(*,*) ' iloc (b): ' , iloc + +!=============================Add PumpFlowRate to Bottom Hole ============================== + !if ( AnnulusFlowRate>0.0 ) then + if ( MudVolume_InjectedToBH > 0.0 ) then + + + if (KickOffBottom) then ! (kickOffBottom = F) means kick is next to the bottom hole and usually kick is entering the + AddLocation= Op_Density%Length()-iloc+1+1 ! well, thus pumped mud should be placed above the kick + else + AddLocation= Op_Density%Length()+1 + endif + !write(*,*) 'AddLocation====' , AddLocation + if ( AddLocation== 0) CALL ErrorStop ('AddLocation=0') + + + if ( ABS(St_Density%Last() - Op_Density%Array(AddLocation-1)) >= DensityMixTol ) then + !write(*,*) 'new pocket**' + !write(*,*) 'St_Density%Last()=' , St_Density%Last() + !write(*,*) 'Op_Density%Array(AddLocation-1)=' , Op_Density%Array(AddLocation-1) + + + call Op_Density% AddTo (AddLocation,St_Density%Last()) + !call Op_MudDischarged_Volume%AddTo (AddLocation,((AnnulusFlowRate/60.d0)*DeltaT_Mudline)) + call Op_MudDischarged_Volume%AddTo (AddLocation,MudVolume_InjectedToBH) + call Op_Mud_Forehead_X%AddTo (AddLocation,Xstart_OpSection(1)) + call Op_Mud_Forehead_section%AddTo (AddLocation,1) + call Op_Mud_Backhead_X%AddTo (AddLocation,Xstart_OpSection(1)) + call Op_Mud_Backhead_section%AddTo (AddLocation,1) + call Op_RemainedVolume_in_LastSection%AddTo (AddLocation,0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddTo (AddLocation,0.0d0) + call Op_MudOrKick%AddTo (AddLocation,0) + else + !write(*,*) 'merge**' + !write(*,*) 'density before=' , Op_Density%Array(AddLocation-1) + !write(*,*) 'St_Density%Last() for mix=' , St_Density%Last() + + !Op_Density%Array(AddLocation-1)= (Op_Density%Array(AddLocation-1)*Op_MudDischarged_Volume%Array(AddLocation-1)+St_Density%Last()*((AnnulusFlowRate/60.d0)*DeltaT_Mudline))/(Op_MudDischarged_Volume%Array(AddLocation-1)+((AnnulusFlowRate/60.d0)*DeltaT_Mudline)) + !Op_MudDischarged_Volume%Array(AddLocation-1)= Op_MudDischarged_Volume%Array(AddLocation-1) + ((AnnulusFlowRate/60.d0)*DeltaT_Mudline) + + Op_Density%Array(AddLocation-1)= (Op_Density%Array(AddLocation-1)*Op_MudDischarged_Volume%Array(AddLocation-1)+St_Density%Last()*MudVolume_InjectedToBH)/(Op_MudDischarged_Volume%Array(AddLocation-1)+MudVolume_InjectedToBH) + Op_MudDischarged_Volume%Array(AddLocation-1)= Op_MudDischarged_Volume%Array(AddLocation-1) + MudVolume_InjectedToBH + !write(*,*) 'density after=' , Op_Density%Array(AddLocation-1) + + endif + + endif +!=======================Add PumpFlowRate to Bottom Hole- End ============================== + + + + +!=============== save OP Mud data to transfer to the annulus enterance due to tripin or kick + OpMudVolumeSum= 0.d0 + !Op_MudSaved_Density= 0.d0 + !Op_KickSaved_Density= 0.d0 + Op_Saved_MudDischarged_Volume= 0.d0 + Op_Kick_Saved_Volume= 0.d0 + Saved_Op_MudOrKick= 0 + + + + !write(*,*) 'Op_Capacity===' , sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) + !write(*,*) 'Op_MudDischarged_Volume%Length()===' , Op_MudDischarged_Volume%Length() + ! + + do imud=1, Op_MudDischarged_Volume%Length() + !write(*,*) 'imud, Op_MudDischarged_Volume%Array(imud)=' , imud,Op_MudDischarged_Volume%Array(imud) + + OpMudVolumeSum= OpMudVolumeSum + Op_MudDischarged_Volume%Array(imud) + + if ( OpMudVolumeSum > sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) ) then + + IF (Op_MudOrKick%Array(imud) == 0) THEN + Op_MudSaved_Density = Op_Density%Array(imud) + Op_Saved_MudDischarged_Volume = OpMudVolumeSum - sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) + ELSE + Op_Kick_Saved_Volume = OpMudVolumeSum - sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) + !write(*,*) 'cond 1- Op_MudOrKick%Array (imud),Op_Density%Array(imud):' ,Op_MudOrKick%Array (imud),Op_Density%Array(imud) + Saved_Op_MudOrKick= Op_MudOrKick%Array (imud) + Op_KickSaved_Density= Op_Density%Array(imud) + iloc= 2 + END IF + + do ii= imud + 1, Op_MudDischarged_Volume%Length() + IF (Op_MudOrKick%Array(ii) == 0) THEN + Op_MudSaved_Density = ((Op_MudSaved_Density * Op_Saved_MudDischarged_Volume) + (Op_Density%Array(ii) * Op_MudDischarged_Volume%Array(ii))) / (Op_Saved_MudDischarged_Volume + Op_MudDischarged_Volume%Array(ii)) + Op_Saved_MudDischarged_Volume = Op_Saved_MudDischarged_Volume + Op_MudDischarged_Volume%Array(ii) + ELSE + Op_Kick_Saved_Volume = Op_Kick_Saved_Volume + Op_MudDischarged_Volume%Array(ii) + !write(*,*) 'cond 2- Op_MudOrKick%Array (ii),Op_Density%Array(ii):' ,Op_MudOrKick%Array (ii),Op_Density%Array(ii) + Saved_Op_MudOrKick= Op_MudOrKick%Array (ii) + Op_KickSaved_Density= Op_Density%Array(ii) + iloc= 2 + END IF + enddo + + exit ! exits do + + endif + + enddo + !WRITE (*,*) 'Op_Saved_MudDischarged_Volume, Op_Kick_Saved_Volume',Op_Saved_MudDischarged_Volume, Op_Kick_Saved_Volume +!write(*,*) ' iloc (c): ' , iloc + +!====================================================================== + +!====================================================================== + + + + + + !if (iLoc == 1) then + MudSection= F_StringIntervalCounts+1 + BackheadX= Xstart_PipeSection(F_StringIntervalCounts+1) + !elseif (iLoc == 2) then + ! MudSection= Kick_Forehead_section + ! BackheadX= Kick_Forehead_X + !endif + +!========================ANNULUS ENTRANCE==================== + !if (KickMigration_2SideBit == .FALSE.) then ! because its effect is applied in Migration Code + ! !write(*,*) 'iloc=====' , iLoc bejaye Rate_of_Penetration ==0. in bude: DeltaVolumeOp == 0.0 + ! if (ABS(AnnulusSuctionDensity_Old-St_Density%Last()) >= DensityMixTol .OR. (DeltaVolumeOp == 0.0 .and. ABS(Ann_Density%Array(iLoc)-St_Density%Last())>=DensityMixTol .and. AnnulusFlowRate/=0.0d0) ) then ! new mud is pumped + ! call Ann_Density%AddTo (iLoc,St_Density%Last()) + ! call Ann_MudDischarged_Volume%AddTo (iLoc,0.0d0) + ! call Ann_Mud_Forehead_X%AddTo (iLoc,BackheadX) + ! call Ann_Mud_Forehead_section%AddTo (iLoc,MudSection) + ! call Ann_Mud_Backhead_X%AddTo (iLoc,BackheadX) + ! call Ann_Mud_Backhead_section%AddTo (iLoc,MudSection) + ! call Ann_RemainedVolume_in_LastSection%AddTo (iLoc,0.0d0) + ! call Ann_EmptyVolume_inBackheadLocation%AddTo (iLoc,0.0d0) + ! call Ann_MudOrKick%AddTo (iLoc,0) + ! call Ann_CuttingMud%AddTo (iLoc,0) + ! !write(*,*) 'c) annLength=' , Ann_Density%Length() + ! + ! AnnulusSuctionDensity_Old= St_Density%Last() + ! + ! MudIsChanged= .true. + ! endif + ! + ! Ann_MudDischarged_Volume%Array(iLoc)= Ann_MudDischarged_Volume%Array(iLoc)+ ((AnnulusFlowRate/60.d0)*DeltaT_Mudline) !(gal) + ! + !endif + + + + + + + Ann_Mud_Backhead_section%Array(1)= MudSection !it is needed to be updated for a condition that one pipe is removed from Annulus due to trip out + Ann_Mud_Backhead_X%Array(1)= BackheadX + + + + ! write(*,*) 'zero)Ann_Mud sum=' , sum(Ann_MudDischarged_Volume%Array(:)) + ! + ! + !write(*,*) 'pump added-before add to ann==' + ! + ! do imud=1, Op_MudDischarged_Volume%Length() + ! write(*,*) 'Op:', imud, Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) ,Op_MudOrKick%Array(imud) + ! enddo + ! + ! do imud=1, Ann_MudDischarged_Volume%Length() + ! write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + ! enddo + ! + !write(*,*) '====pump added-before add to ann' + + + +!========================Tripping In==================== + +!write(*,*) 'DeltaVolumeOp=' , DeltaVolumeOp + if (Rate_of_Penetration==0.) then ! .and. Op_MudOrKick%Last() == 0) then ! trip in mode(loole paeen) Mud + + !write(*,*) 'Tripping In' + !write(*,*) 'before' ,'Ann_Volume%Array(1)=' , Ann_MudDischarged_Volume%Array(1) + + !if ( MudIsChanged== .true. ) then + ! call RemoveAnnulusMudArrays(iLoc) + !endif + + + if (Op_Kick_Saved_Volume > 0.0 .and. Ann_MudOrKick%First() == 0) then + write(*,*) 'Kick influx enters Annulus' + call Ann_Density%AddToFirst (Op_KickSaved_Density) + call Ann_MudDischarged_Volume%AddToFirst (Op_Kick_Saved_Volume) + call Ann_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) + call Ann_Mud_Forehead_section%AddToFirst (F_StringIntervalCounts+1) + call Ann_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) + call Ann_Mud_Backhead_section%AddToFirst (F_StringIntervalCounts+1) + call Ann_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Ann_MudOrKick%AddToFirst (Saved_Op_MudOrKick) !<<<<<<<< + call Ann_CuttingMud%AddToFirst (0) + elseif (Op_Kick_Saved_Volume > 0.0 .and. Ann_MudOrKick%First() /= 0) then + Ann_MudDischarged_Volume%Array(1)= Ann_MudDischarged_Volume%Array(1) + Op_Kick_Saved_Volume + endif + + + if (Op_Saved_MudDischarged_Volume> 0.0) then + NewDensity= Op_MudSaved_Density + NewVolume= Op_Saved_MudDischarged_Volume + !write(*,*) 'NewVolume=' , NewVolume + !write(*,*) 'iloc=' , iloc,'Ann_MudDischarged_Volume%Array(1)=' , Ann_MudDischarged_Volume%Array(1) + + + + if ((Rate_of_Penetration==0 .and. abs(Ann_Density%Array(iLoc)-NewDensity)< DensityMixTol) & + .or. (Rate_of_Penetration>0. .and. Ann_CuttingMud%Array(iLoc)==1 .and. abs(Ann_Density%Array(iLoc)-NewDensity)< CuttingDensityMixTol) & + .or. (Rate_of_Penetration>0. .and. Ann_CuttingMud%Array(iLoc)==0 .and. Ann_MudDischarged_Volume%Array(iLoc) < 42.) ) then ! 1-Pockets are Merged + + Ann_Density%Array(iLoc)= (Ann_Density%Array(iLoc)*Ann_MudDischarged_Volume%Array(iLoc)+NewDensity*NewVolume)/(Ann_MudDischarged_Volume%Array(iLoc)+NewVolume) + Ann_MudDischarged_Volume%Array(iLoc)= Ann_MudDischarged_Volume%Array(iLoc)+NewVolume + Ann_Mud_Forehead_X%Array(iLoc)= BackheadX + Ann_Mud_Forehead_section%Array(iLoc)= MudSection + Ann_Mud_Backhead_X%Array(iLoc)= BackheadX + Ann_Mud_Backhead_section%Array(iLoc)= MudSection + Ann_RemainedVolume_in_LastSection%Array(iLoc)= (0.0d0) + Ann_EmptyVolume_inBackheadLocation%Array(iLoc)= (0.0d0) + !write(*,*) 'merge' ,'Ann_Volume%Array(1)=' , Ann_MudDischarged_Volume%Array(1) + + else ! 2-Merging conditions are not meeted, so new pocket + call Ann_Density%AddTo (iLoc,NewDensity) + call Ann_MudDischarged_Volume%AddTo (iLoc,NewVolume) + call Ann_Mud_Forehead_X%AddTo (iLoc,BackheadX) + call Ann_Mud_Forehead_section%AddTo (iLoc,MudSection) + call Ann_Mud_Backhead_X%AddTo (iLoc,BackheadX) + call Ann_Mud_Backhead_section%AddTo (iLoc,MudSection) + call Ann_RemainedVolume_in_LastSection%AddTo (iLoc,0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddTo (iLoc,0.0d0) + call Ann_MudOrKick%AddTo (iLoc,0) + call Ann_CuttingMud%AddTo (iLoc,0) + !write(*,*) 'd) annLength=' , Ann_Density%Length() + !write(*,*) 'new' ,'Ann_Volume%Array(1)=' , Ann_MudDischarged_Volume%Array(1) + + endif + endif + + endif + +!========================Tripping In - End==================== + +!========================Drilling Mode======================== + + if (Rate_of_Penetration>0. .and. DeltaVolumeOp>0.0) then ! trip in mode(loole paeen) DrillingMode== .true. + !write(*,*) 'Drilling Mode' + + !if ( MudIsChanged== .true. ) then + ! call RemoveAnnulusMudArrays(iLoc) + !endif + !write(*,*) 'before' ,'Ann_Volume%Array(1)=' , Ann_MudDischarged_Volume%Array(1) + + + !NewDensity= (St_Density%Last() * AnnulusFlowRate + 141.4296E-4*Rate_of_Penetration*Diameter_of_Bit**2)/(AnnulusFlowRate+6.7995E-4*Rate_of_Penetration*Diameter_of_Bit**2) + + NewDensity= St_Density%Last() + + + !NewVolume= ((AnnulusFlowRate/60.0d0)*DeltaT_Mudline)+DeltaVolumeOp + !!! Density in ppg, flow rate in gpm, ROP in ft/s, bit diameter in inch + + + do imud=1, Op_MudDischarged_Volume%Length() + if ( Op_MudOrKick%Array(imud) == 0 ) then + Op_Density%Array(imud)= NewDensity + + endif + enddo + + + + if (Op_Kick_Saved_Volume > 0.0 .and. Ann_MudOrKick%First() == 0) then + write(*,*) 'Kick influx enters Annulus first time' + !write(*,*) 'Saved_Op_MudOrKick=',Saved_Op_MudOrKick + call Ann_Density%AddToFirst (Op_KickSaved_Density) + call Ann_MudDischarged_Volume%AddToFirst (Op_Kick_Saved_Volume) + call Ann_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) + call Ann_Mud_Forehead_section%AddToFirst (F_StringIntervalCounts+1) + call Ann_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) + call Ann_Mud_Backhead_section%AddToFirst (F_StringIntervalCounts+1) + call Ann_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Ann_MudOrKick%AddToFirst (Saved_Op_MudOrKick) !<<<<<<<< + call Ann_CuttingMud%AddToFirst (0) + elseif (Op_Kick_Saved_Volume > 0.0 .and. Ann_MudOrKick%First() /= 0) then + Ann_MudDischarged_Volume%Array(1)= Ann_MudDischarged_Volume%Array(1) + Op_Kick_Saved_Volume + endif + + + if (Op_Saved_MudDischarged_Volume> 0.0) then + !write(*,*) 'Op_Saved_Mud added' + NewDensity= NewDensity !(drilling density) + NewVolume= Op_Saved_MudDischarged_Volume + DeltaVolumeOp ! (DeltaVolumeOp: for Cuttings Volume) + !write(*,*) 'NewVolume=' , NewVolume + !write(*,*) 'iloc=' , iloc,'Ann_MudDischarged_Volume%Array(1)=' , Ann_MudDischarged_Volume%Array(1) + + if ( (Ann_CuttingMud%Array(iloc)==1 .and. abs(Ann_Density%Array(iLoc)-NewDensity)< CuttingDensityMixTol ) & + .or. (Ann_CuttingMud%Array(iLoc)==0 .and. Ann_MudDischarged_Volume%Array(iLoc) < 42.) ) then ! 1-Pockets are Merged + + Ann_Density%Array(iLoc)= (Ann_Density%Array(iLoc)*Ann_MudDischarged_Volume%Array(iLoc)+NewDensity*NewVolume)/(Ann_MudDischarged_Volume%Array(iLoc)+NewVolume) + Ann_MudDischarged_Volume%Array(iLoc)= Ann_MudDischarged_Volume%Array(iLoc)+NewVolume + Ann_Mud_Forehead_X%Array(iLoc)= BackheadX + Ann_Mud_Forehead_section%Array(iLoc)= MudSection + Ann_Mud_Backhead_X%Array(iLoc)= BackheadX + Ann_Mud_Backhead_section%Array(iLoc)= MudSection + Ann_RemainedVolume_in_LastSection%Array(iLoc)= (0.0d0) + Ann_EmptyVolume_inBackheadLocation%Array(iLoc)= (0.0d0) + Ann_CuttingMud%Array(iLoc)= 1 + !write(*,*) 'merge' ,'Ann_Volume%Array(1)=' , Ann_MudDischarged_Volume%Array(1) + + else ! 2-Merging conditions are not meeted, so new pocket + !write(*,*) 'before e) ', iloc, Ann_Density%Array(iLoc),NewDensity + !write(*,*) 'before e) Ann_MudDischarged_Volume%Array(iLoc)=' , Ann_MudDischarged_Volume%Array(iLoc) + + + call Ann_Density%AddTo (iLoc,NewDensity) + call Ann_MudDischarged_Volume%AddTo (iLoc,NewVolume) + call Ann_Mud_Forehead_X%AddTo (iLoc,BackheadX) + call Ann_Mud_Forehead_section%AddTo (iLoc,MudSection) + call Ann_Mud_Backhead_X%AddTo (iLoc,BackheadX) + call Ann_Mud_Backhead_section%AddTo (iLoc,MudSection) + call Ann_RemainedVolume_in_LastSection%AddTo (iLoc,0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddTo (iLoc,0.0d0) + call Ann_MudOrKick%AddTo (iLoc,0) + call Ann_CuttingMud%AddTo (iLoc,1) ! 1= cutting 0= mud + !write(*,*) 'new' ,'Ann_Volume%Array(1)=' , Ann_MudDischarged_Volume%Array(1) + + !write(*,*) 'e) annLength=' , Ann_Density%Length() + + + endif + + + endif + + endif +!=================================================================== + + !write(*,*) 'after add to ann==' + ! + ! do imud=1, Op_MudDischarged_Volume%Length() + ! write(*,*) 'Op:', imud, Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) ,Op_MudOrKick%Array(imud) + ! enddo + ! + ! do imud=1, Ann_MudDischarged_Volume%Length() + ! write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + ! enddo + ! + !write(*,*) '==after add to ann' + + NewVolume= ((AnnulusFlowRate/60.d0)*DeltaT_Mudline) - Op_Saved_MudDischarged_Volume + + if (iloc==2 .and. Op_MudOrKick%Last()==0 .and. NewVolume > 0.d0 ) then ! for avoid kick separation + !write(*,*) 'avoid kick separation' + + + NewDensity= Op_MudSaved_Density + + call RemoveOpMudArrays(Op_Density%Length()) ! mud here is removed and then will be added to iloc=2 in Ann + if ( Ann_MudDischarged_Volume%Array(1) > ((AnnulusFlowRate/60.d0)*DeltaT_Mudline)- Op_Saved_MudDischarged_Volume) then! 1st in Ann = kick + !write(*,*) 'mode1' + Ann_MudDischarged_Volume%Array(1)= Ann_MudDischarged_Volume%Array(1) - (((AnnulusFlowRate/60.d0)*DeltaT_Mudline) -Op_Saved_MudDischarged_Volume) + Op_MudDischarged_Volume%Array(Op_Density%Length())= Op_MudDischarged_Volume%Array(Op_Density%Length())+ (((AnnulusFlowRate/60.d0)*DeltaT_Mudline) - Op_Saved_MudDischarged_Volume) !kick + else + call RemoveAnnulusMudArrays(1) !kick is removed + iloc= 1 + Op_MudDischarged_Volume%Array(Op_Density%Length())= Op_MudDischarged_Volume%Array(Op_Density%Length())+ (((AnnulusFlowRate/60.d0)*DeltaT_Mudline) - Op_Saved_MudDischarged_Volume) + !write(*,*) 'mode2' + + ! including a little expand + endif + + + if ((Rate_of_Penetration==0 .and. abs(Ann_Density%Array(iLoc)-NewDensity)< DensityMixTol) & + .or. (Rate_of_Penetration>0. .and. Ann_CuttingMud%Array(iLoc)==1 .and. abs(Ann_Density%Array(iLoc)-NewDensity)< CuttingDensityMixTol) & + .or. (Rate_of_Penetration>0. .and. Ann_CuttingMud%Array(iLoc)==0 .and. Ann_MudDischarged_Volume%Array(iLoc) < 42.) ) then ! 1-Pockets are Merged + + Ann_Density%Array(iLoc)= (Ann_Density%Array(iLoc)*Ann_MudDischarged_Volume%Array(iLoc)+NewDensity*NewVolume)/(Ann_MudDischarged_Volume%Array(iLoc)+NewVolume) + Ann_MudDischarged_Volume%Array(iLoc)= Ann_MudDischarged_Volume%Array(iLoc)+NewVolume + Ann_Mud_Forehead_X%Array(iLoc)= BackheadX + Ann_Mud_Forehead_section%Array(iLoc)= MudSection + Ann_Mud_Backhead_X%Array(iLoc)= BackheadX + Ann_Mud_Backhead_section%Array(iLoc)= MudSection + Ann_RemainedVolume_in_LastSection%Array(iLoc)= (0.0d0) + Ann_EmptyVolume_inBackheadLocation%Array(iLoc)= (0.0d0) + else ! 2-Merging conditions are not meeted, so new pocket + call Ann_Density%AddTo (iLoc,NewDensity) + call Ann_MudDischarged_Volume%AddTo (iLoc,NewVolume) + call Ann_Mud_Forehead_X%AddTo (iLoc,BackheadX) + call Ann_Mud_Forehead_section%AddTo (iLoc,MudSection) + call Ann_Mud_Backhead_X%AddTo (iLoc,BackheadX) + call Ann_Mud_Backhead_section%AddTo (iLoc,MudSection) + call Ann_RemainedVolume_in_LastSection%AddTo (iLoc,0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddTo (iLoc,0.0d0) + call Ann_MudOrKick%AddTo (iLoc,0) + call Ann_CuttingMud%AddTo (iLoc,0) + !write(*,*) 'd) annLength=' , Ann_Density%Length() + + endif + + + endif +!=================================================================== + if( Op_MudOrKick%Last() == 1 .and. Ann_MudOrKick%First() == 0 ) then + + write(*,*) '***error2****==' + + write(*,*) 'Op_Kick_Saved_Volume,Op_Saved_MudDischarged_Volume=' , Op_Kick_Saved_Volume,Op_Saved_MudDischarged_Volume + + + write(*,*) 'after add to ann==' + + do imud=1, Op_MudDischarged_Volume%Length() + write(*,*) 'Op:', imud, Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) ,Op_MudOrKick%Array(imud) + enddo + + do imud=1, Ann_MudDischarged_Volume%Length() + write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + enddo + + write(*,*) '==after add to ann' + + write(*,*) 'NewVolume,Op_MudOrKick%Last=' , NewVolume,Op_MudOrKick%Last() + write(*,*) '==***error2****' + + endif + + + + + +!=============== save Ann Mud data to transfer to the ChokeLine enterance + AnnMudVolumeSum= 0.d0 + !Ann_MudSaved_Density= 0.d0 + !Ann_KickSaved_Density= 0.d0 + Ann_Saved_MudDischarged_Volume= 0.d0 + Ann_Kick_Saved_Volume= 0.d0 + Saved_Ann_MudOrKick= 0 + Ann_to_Choke_2mud= .false. + + + + + do imud=1, Ann_MudDischarged_Volume%Length() + + AnnMudVolumeSum= AnnMudVolumeSum + Ann_MudDischarged_Volume%Array(imud) + + if ( AnnMudVolumeSum > sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) ) then + + IF (Ann_MudOrKick%Array(imud) == 0) THEN + Ann_MudSaved_Density = Ann_Density%Array(imud) + Ann_Saved_MudDischarged_Volume = AnnMudVolumeSum - sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + ELSEIF (Ann_MudOrKick%Array(imud) > 0 .AND. Ann_MudOrKick%Array(imud) <100) THEN ! 104= AIR + Ann_Kick_Saved_Volume = AnnMudVolumeSum - sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + Saved_Ann_MudOrKick= Ann_MudOrKick%Array (imud) + Ann_KickSaved_Density= Ann_Density%Array(imud) + END IF + + do ii= imud + 1, Ann_MudDischarged_Volume%Length() + IF (Ann_MudOrKick%Array(ii) == 0) THEN + Ann_MudSaved_Density = ((Ann_MudSaved_Density * Ann_Saved_MudDischarged_Volume) + (Ann_Density%Array(ii) * Ann_MudDischarged_Volume%Array(ii))) / (Ann_Saved_MudDischarged_Volume + Ann_MudDischarged_Volume%Array(ii)) + Ann_Saved_MudDischarged_Volume = Ann_Saved_MudDischarged_Volume + Ann_MudDischarged_Volume%Array(ii) + Ann_to_Choke_2mud= .true. + ELSEIF (Ann_MudOrKick%Array(ii) > 0 .AND. Ann_MudOrKick%Array(ii) <100) THEN ! 104= AIR + Ann_Kick_Saved_Volume = Ann_Kick_Saved_Volume + Ann_MudDischarged_Volume%Array(ii) + Saved_Ann_MudOrKick= Ann_MudOrKick%Array (ii) + Ann_KickSaved_Density= Ann_Density%Array(ii) + END IF + enddo + + + !WRITE (*,*) 'Ann_Saved_Mud_Volume, Ann_Kick_Saved_Volume', Ann_Saved_MudDischarged_Volume, Ann_Kick_Saved_Volume + exit + + endif + + enddo +Ann_Saved_MudDischarged_Volume_Final= Ann_Saved_MudDischarged_Volume !+ Ann_Kick_Saved_Volume +Ann_Kick_Saved_Volume_Final= Ann_Kick_Saved_Volume +IF (WellHeadIsOpen) MudVolume_InjectedFromAnn = Ann_Saved_MudDischarged_Volume_Final -((Qlost/60.0d0)*DeltaT_Mudline) +!WRITE (*,*) 'MudVolume_InjectedFromAnn=', MudVolume_InjectedFromAnn +!====================================================================== + + !write(*,*) 'c)Ann_Mud sum=' , sum(Ann_MudDischarged_Volume%Array(:)) + !write(*,*) 'Ann cap=' , sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + !write(*,*) 'Ann_Saved_Mud=' , Ann_Saved_MudDischarged_Volume + + total_injected = total_injected + MudVolume_InjectedFromAnn + + if (ChokePanelStrokeResetSwitch == 1) then + total_injected= 0. + endif + + !write(*,*) ' total injected-tripin =' , total_injected + !write(*,*) 'injected-tripin =' , MudVolume_InjectedFromAnn + + + + + +!======================== Annulus ==================== + + !MudIsChanged= .false. + +imud= 0 + + do while (imud < Ann_Mud_Forehead_X%Length()) + imud = imud + 1 + + if (imud> 1) then + Ann_Mud_Backhead_X%Array(imud)= Ann_Mud_Forehead_X%Array(imud-1) + Ann_Mud_Backhead_section%Array(imud)= Ann_Mud_Forehead_section%Array(imud-1) + endif + + + +! <<< Fracture Shoe Lost + IF ( ShoeLost .and. ShoeDepth < Ann_Mud_Backhead_X%Array(imud) .and. ShoeDepth >= Ann_Mud_Forehead_X%Array(imud) ) then + !write(*,*) 'ShoeLost imud,AnnVolume(imud), VolumeLost:' , imud,Ann_MudDischarged_Volume%Array(imud), (( Qlost/60.0d0)*DeltaT_Mudline) + Ann_MudDischarged_Volume%Array(imud)= Ann_MudDischarged_Volume%Array(imud)-((Qlost/60.0d0)*DeltaT_Mudline) !(gal) + if (Ann_MudDischarged_Volume%Array(imud) < 0.0) then + !write(*,*) 'mud is removed by shoe lost, imud=' , imud + call RemoveAnnulusMudArrays(imud) + imud= imud-1 + cycle + endif + + ENDIF +! Fracture Shoe Lost >>> + + + DirectionCoef= (Xend_PipeSection(Ann_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(Ann_Mud_Backhead_section%Array(imud))) & + / ABS(Xend_PipeSection(Ann_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(Ann_Mud_Backhead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + Ann_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Xend_PipeSection(Ann_Mud_Backhead_section%Array(imud))- Ann_Mud_Backhead_X%Array(imud))* & + Area_PipeSectionFt(Ann_Mud_Backhead_section%Array(imud)) !(ft^3) + Ann_EmptyVolume_inBackheadLocation%Array(imud)= Ann_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + + if ( Ann_MudDischarged_Volume%Array(imud) <= Ann_EmptyVolume_inBackheadLocation%Array(imud)) then + Ann_Mud_Forehead_section%Array(imud)= Ann_Mud_Backhead_section%Array(imud) + Ann_Mud_Forehead_X%Array(imud)= Ann_Mud_Backhead_X%Array(imud)+ DirectionCoef*(Ann_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_PipeSectionFt(Ann_Mud_Backhead_section%Array(imud)) + ! 7.48 is for gal to ft^3 + + else + + isection= Ann_Mud_Backhead_section%Array(imud)+1 + Ann_RemainedVolume_in_LastSection%Array(imud)= Ann_MudDischarged_Volume%Array(imud)- Ann_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection > NoPipeSections) then ! last pipe section(well exit) + Ann_MudDischarged_Volume%Array(imud)= Ann_MudDischarged_Volume%Array(imud)- Ann_RemainedVolume_in_LastSection%Array(imud) + Ann_Mud_Forehead_X%Array(imud)= Xend_PipeSection(NoPipeSections) + Ann_Mud_Forehead_section%Array(imud)= NoPipeSections + + if (Ann_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the well + !write(*,*) 'remove******' + call RemoveAnnulusMudArrays(imud) + endif + exit + endif + + xx= Ann_RemainedVolume_in_LastSection%Array(imud)/ PipeSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + Ann_Mud_Forehead_section%Array(imud)= isection + Ann_Mud_Forehead_X%Array(imud)= (xx * (Xend_PipeSection(isection)- Xstart_PipeSection(isection)))+ Xstart_PipeSection(isection) + exit + else + Ann_RemainedVolume_in_LastSection%Array(imud)= Ann_RemainedVolume_in_LastSection%Array(imud)- PipeSection_VolumeCapacity(isection) + isection= isection+ 1 + + endif + + enddo + + endif +! write(*,*) 'imud=' , imud +!write(*,*) 'Pinter4 **Ann_Length()=' , Ann_Mud_Forehead_X%Length() +! write(*,*) 'Ann_Density%Array (imud)=' , Ann_Density%Array (imud) +! +! +!write(*,*) imud,'Ann_Mud_Forehead_X%Array(imud)=' , Ann_Mud_Forehead_X%Array(imud) + + !if (Ann_Mud_Forehead_X%Array(imud) < Xend_PipeSection(NoPipeSections)) then + ! Ann_Mud_Forehead_X%Array(imud) = Xend_PipeSection(NoPipeSections) ! for error preventing + !endif + + !write(*,*) imud, 'Ann_MudDischarged_Volume%Array(imud)=' , Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) + + + enddo + + if (Ann_Mud_Forehead_X%Last() < Xend_PipeSection(NoPipeSections)) then + Ann_Mud_Forehead_X%Array(Ann_Mud_Forehead_X%Length()) = Xend_PipeSection(NoPipeSections) ! for error preventing + endif + +!========================ANNULUS END================= + !write(*,*) 'sum(Ann_MudDischarged_Volume%Array())=' , sum(Ann_MudDischarged_Volume%Array(:)) + +!========================================================= + + + !write(*,*) 'before======2' + ! + ! do imud=1, Op_MudDischarged_Volume%Length() + ! write(*,*) 'Op:', imud, Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) ,Op_MudOrKick%Array(imud) + ! enddo + !write(*,*) '2======before' + + +!========================Bottom Hole================= +imud=0 + do while (imud < Op_Mud_Forehead_X%Length()) + imud = imud + 1 + + if (imud> 1) then + Op_Mud_Backhead_X%Array(imud)= Op_Mud_Forehead_X%Array(imud-1) + Op_Mud_Backhead_section%Array(imud)= Op_Mud_Forehead_section%Array(imud-1) + endif + !write(*,*) 'imud**=' , imud + DirectionCoef= (Xend_OpSection(Op_Mud_Backhead_section%Array(imud))-Xstart_OpSection(Op_Mud_Backhead_section%Array(imud))) & + / ABS(Xend_OpSection(Op_Mud_Backhead_section%Array(imud))-Xstart_OpSection(Op_Mud_Backhead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + Op_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Xend_OpSection(Op_Mud_Backhead_section%Array(imud))- Op_Mud_Backhead_X%Array(imud))* & + Area_OpSectionFt(Op_Mud_Backhead_section%Array(imud)) !(ft^3) + Op_EmptyVolume_inBackheadLocation%Array(imud)= Op_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + !write(*,*) ' Op_EmptyVolume_inBackheadLocation%Array(1) =' , Op_EmptyVolume_inBackheadLocation%Array(1) + if ( Op_EmptyVolume_inBackheadLocation%Array(1) < 0.0) CALL ErrorStop1 ('Negative Empty volume') + + if ( Op_MudDischarged_Volume%Array(imud) <= Op_EmptyVolume_inBackheadLocation%Array(imud)) then + Op_Mud_Forehead_section%Array(imud)= Op_Mud_Backhead_section%Array(imud) + Op_Mud_Forehead_X%Array(imud)= Op_Mud_Backhead_X%Array(imud)+ DirectionCoef*(Op_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_OpSectionFt(Op_Mud_Backhead_section%Array(imud)) + ! 7.48 is for gal to ft^3 + + else + + + isection= Op_Mud_Backhead_section%Array(imud)+1 + Op_RemainedVolume_in_LastSection%Array(imud)= Op_MudDischarged_Volume%Array(imud)- Op_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection > F_BottomHoleIntervalCounts) then ! last pipe section(well exit) + !if( imud==1) KickDeltaVinAnnulus= Op_RemainedVolume_in_LastSection%Array(imud) ! Kick enters Annulus space + Op_MudDischarged_Volume%Array(imud)= Op_MudDischarged_Volume%Array(imud)- Op_RemainedVolume_in_LastSection%Array(imud) + Op_Mud_Forehead_X%Array(imud)= Xend_OpSection(F_BottomHoleIntervalCounts) + Op_Mud_Forehead_section%Array(imud)= F_BottomHoleIntervalCounts + + if (Op_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the well + call RemoveOpMudArrays(imud) + endif + + exit + endif + + xx= Op_RemainedVolume_in_LastSection%Array(imud)/ OpSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + Op_Mud_Forehead_section%Array(imud)= isection + Op_Mud_Forehead_X%Array(imud)= (xx * (Xend_OpSection(isection)- Xstart_OpSection(isection)))+ Xstart_OpSection(isection) + exit + else + Op_RemainedVolume_in_LastSection%Array(imud)= Op_RemainedVolume_in_LastSection%Array(imud)- OpSection_VolumeCapacity(isection) + isection= isection+ 1 + + endif + + enddo + + endif +! for OP remove: + + if (Op_Mud_Forehead_X%Array(imud)== Xend_OpSection(F_BottomHoleIntervalCounts)) then + totalLength = Op_MudDischarged_Volume%Length() + do while(imud < totalLength) + + !imud = imud + 1 + call RemoveOpMudArrays(totalLength) + totalLength = totalLength - 1 + + + enddo + + exit ! + + endif + + + + + !if (Op_Mud_Forehead_X%Array(imud)== Xend_OpSection(F_BottomHoleIntervalCounts)) then + ! totalLength = Op_MudDischarged_Volume%Length() + ! do while(imud <= totalLength) + ! + ! imud = imud + 1 + ! call RemoveOpMudArrays(imud) + ! totalLength = totalLength - 1 + ! + ! + ! enddo + ! + ! exit ! + ! + !endif + + enddo + + !write(*,*) 'OpSection_VolumeCapacity sum=' , sum(OpSection_VolumeCapacity(:)) + + + +!========================Bottom Hole END================= + + + !write(*,*) 'after sorting==' + ! + ! do imud=1, Op_MudDischarged_Volume%Length() + ! write(*,*) 'Op:', imud, Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) ,Op_MudOrKick%Array(imud) + ! enddo + ! + ! do imud=1, Ann_MudDischarged_Volume%Length() + ! write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + ! enddo + ! + ! ! + ! !do imud=1, st_MudDischarged_Volume%Length() + ! ! write(*,*) 'st:', imud, St_MudDischarged_Volume%Array(imud), St_Mud_Backhead_X%Array(imud) ,St_Mud_Forehead_X%Array(imud) + ! !enddo + ! + !write(*,*) '==after sorting' + + + ! write(*,*) 'after sorting st==' + ! + ! do imud=1, st_MudDischarged_Volume%Length() + ! write(*,*) 'st-plot:', imud, St_MudDischarged_Volume%Array(imud), St_Mud_Backhead_X%Array(imud) ,St_Mud_Forehead_X%Array(imud),St_Density%Array(imud) + ! enddo + ! + !write(*,*) '==after sorting st' + + + + + !write(*,*) '**Ann_Kick_Saved_Final,Mud_InjectedFromAnn' , Ann_Kick_Saved_Volume_Final,MudVolume_InjectedFromAnn + + end subroutine Pump_and_TripIn + + + + + + + + + + + + subroutine ChokeLineMud ! is called in subroutine CirculationCodeSelect + + Use GeoElements_FluidModule + USE CMudPropertiesVariables + USE MudSystemVARIABLES + USE Pump_VARIABLES + !USE CHOKEVARIABLES + !USE CDataDisplayConsoleVariables , StandPipePressureDataDisplay=>StandPipePressure + !use CManifolds + use CDrillWatchVariables + !use CHOKEVARIABLES + !use CChokeManifoldVariables + use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + USE sROP_Other_Variables + USE sROP_Variables + Use KickVariables + USE PressureDisplayVARIABLES + Use CError + Use , intrinsic :: IEEE_Arithmetic + + + implicit none + + integer i,ii,error_occured + + error_occured = 0 + + + + + !write(*,*) 'begining chokeline==' + !write(*,*) 'Ann last:', Ann_MudDischarged_Volume%Last(), Ann_Density%Last() ,Ann_MudOrKick%Last() + ! + !do imud=1, ChokeLine_MudDischarged_Volume%Length() + ! write(*,*) 'ChokeLine:', imud, ChokeLine_MudDischarged_Volume%Array(imud), ChokeLine_Density%Array(imud) ,ChokeLine_MudOrKick%Array(imud) + !enddo + + + + !write(*,*) 'Ann_Kick_Saved_Volume_Final,MudVolume_InjectedFromAnn' , Ann_Kick_Saved_Volume_Final,MudVolume_InjectedFromAnn + + !write(*,*) 'begining chokeline==' + + + + + + + + ChokeLineFlowRate = MUD(4)%Q + !WRITE (*,*) 'MUD(4)%Q', MUD(4)%Q + + + if (NewPipeFilling == 0) then ! .or. UtubeFilling==0) then + ChokeLineFlowRate= 0. + endif + + + do imud=1, ChokeLine_MudDischarged_Volume%Length()-2 + if ( ChokeLine_MudOrKick%Array(imud) ==1 .and. ChokeLine_MudOrKick%Array(imud+1) ==0 .and. ChokeLine_MudOrKick%Array(imud+2) ==1 ) then + write(*,*) 'error_location is 1' + error_occured = 1 + endif + enddo + + + + ! + !do imud=1, st_MudDischarged_Volume%Length() + ! write(*,*) 'st:', imud, St_MudDischarged_Volume%Array(imud), St_Mud_Backhead_X%Array(imud) ,St_Mud_Forehead_X%Array(imud) + !enddo + + + !========================CHOKE LINE ENTRANCE================= + + !if ( Ann_Kick_Saved_Volume > 0.0 .and. ( Ann_Saved_MudDischarged_Volume-((Qlost/60.0d0)*DeltaT_Mudline) ) == 0.0 ) then + if ( Ann_Kick_Saved_Volume > 1.0e-5 .and. ( MudVolume_InjectedFromAnn ) <= 1.0e-5 ) then + + !WRITE (*,*) 'only kick enters to chokeline, Casing pressure = ', PressureGauges(2) + + if (ChokeLine_MudOrKick%First() == 0) then + call ChokeLine_Density%AddToFirst (Ann_KickSaved_Density) + call ChokeLine_MudDischarged_Volume%AddToFirst (0.d0) + call ChokeLine_Mud_Forehead_X%AddToFirst (0.0d0) + call ChokeLine_Mud_Forehead_section%AddToFirst (1) + call ChokeLine_Mud_Backhead_X%AddToFirst (0.0d0) + call ChokeLine_Mud_Backhead_section%AddToFirst (1) + call ChokeLine_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call ChokeLine_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call ChokeLine_MudOrKick%AddToFirst (Saved_Ann_MudOrKick) + + ChokeLineDensity_Old= Ann_KickSaved_Density + + endif + + ChokeLine_MudDischarged_Volume%Array(1)= ChokeLine_MudDischarged_Volume%Array(1)+ Ann_Kick_Saved_Volume !(gal) + + endif + + + do imud=1, ChokeLine_MudDischarged_Volume%Length()-2 + if ( ChokeLine_MudOrKick%Array(imud) ==1 .and. ChokeLine_MudOrKick%Array(imud+1) ==0 .and. ChokeLine_MudOrKick%Array(imud+2) ==1 ) then + write(*,*) 'error_location is 2' + + error_occured = 1 + + endif + enddo + + + + !if ( Ann_Kick_Saved_Volume == 0.0 .and. ( Ann_Saved_MudDischarged_Volume - ((Qlost/60.0d0)*DeltaT_Mudline) ) > 0.0 ) then + if ( Ann_Kick_Saved_Volume <= 1.0e-5 .and. MudVolume_InjectedFromAnn > 1.0e-5 ) then + + !WRITE (*,*) 'only mud enters to chokeline' + + + if ((Ann_to_Choke_2mud == .false. .and. ABS(ChokeLineDensity_Old - Ann_MudSaved_Density) >= DensityMixTol) .or. ChokeLine_MudOrKick%First() /= 0) then ! new mud is pumped + call ChokeLine_Density%AddToFirst (Ann_MudSaved_Density) + call ChokeLine_MudDischarged_Volume%AddToFirst (0.0d0) + call ChokeLine_Mud_Forehead_X%AddToFirst (0.0d0) + call ChokeLine_Mud_Forehead_section%AddToFirst (1) + call ChokeLine_Mud_Backhead_X%AddToFirst (0.0d0) + call ChokeLine_Mud_Backhead_section%AddToFirst (1) + call ChokeLine_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call ChokeLine_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call ChokeLine_MudOrKick%AddToFirst (0) + + ChokeLineDensity_Old= Ann_MudSaved_Density + endif + + !ChokeLine_MudDischarged_Volume%Array(1)= ChokeLine_MudDischarged_Volume%Array(1)+ (Ann_Saved_MudDischarged_Volume - ((Qlost/60.0d0)*DeltaT_Mudline) ) !(gal) + ChokeLine_MudDischarged_Volume%Array(1)= ChokeLine_MudDischarged_Volume%Array(1)+ (MudVolume_InjectedFromAnn) !(gal) + + + + endif + + + + do imud=1, ChokeLine_MudDischarged_Volume%Length()-2 + if ( ChokeLine_MudOrKick%Array(imud) ==1 .and. ChokeLine_MudOrKick%Array(imud+1) ==0 .and. ChokeLine_MudOrKick%Array(imud+2) ==1 ) then + write(*,*) 'error_location is 3' + error_occured = 1 + + endif + enddo + + + !if ( Ann_Kick_Saved_Volume > 0.0 .and. (Ann_Saved_MudDischarged_Volume - ((Qlost/60.0d0)*DeltaT_Mudline) ) > 0.0 .and. ChokeLine_MudOrKick%First() /= 0 ) then + if ( Ann_Kick_Saved_Volume > 1.0e-5 .and. (MudVolume_InjectedFromAnn) > 1.0e-5 .and. ChokeLine_MudOrKick%First() /= 0 ) then + + WRITE (*,*) 'Kick Enters Choke line Last Time' + + ChokeLine_MudDischarged_Volume%Array(1)= ChokeLine_MudDischarged_Volume%Array(1)+ Ann_Kick_Saved_Volume !(gal) + + + + call ChokeLine_Density%AddToFirst (Ann_MudSaved_Density) + !call ChokeLine_MudDischarged_Volume%AddToFirst (Ann_Saved_MudDischarged_Volume - ((Qlost/60.0d0)*DeltaT_Mudline) ) + call ChokeLine_MudDischarged_Volume%AddToFirst (MudVolume_InjectedFromAnn) + call ChokeLine_Mud_Forehead_X%AddToFirst (0.0d0) + call ChokeLine_Mud_Forehead_section%AddToFirst (1) + call ChokeLine_Mud_Backhead_X%AddToFirst (0.0d0) + call ChokeLine_Mud_Backhead_section%AddToFirst (1) + call ChokeLine_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call ChokeLine_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call ChokeLine_MudOrKick%AddToFirst (0) + + ChokeLineDensity_Old= Ann_MudSaved_Density + + + + + + !ELSE if ( Ann_Kick_Saved_Volume > 0.0 .and. ( Ann_Saved_MudDischarged_Volume - ((Qlost/60.0d0)*DeltaT_Mudline) ) > 0.0 .and. ChokeLine_MudOrKick%First() == 0 ) then + ELSE if ( Ann_Kick_Saved_Volume > 1.0e-5 .and. ( MudVolume_InjectedFromAnn ) > 1.0e-5 .and. ChokeLine_MudOrKick%First() == 0 ) then + WRITE (*,*) 'Kick Enters Choke line First Time' + + + + !ChokeLine_MudDischarged_Volume%Array(1)= ChokeLine_MudDischarged_Volume%Array(1)+ ( Ann_Saved_MudDischarged_Volume - ((Qlost/60.0d0)*DeltaT_Mudline) ) !(gal) + ChokeLine_MudDischarged_Volume%Array(1)= ChokeLine_MudDischarged_Volume%Array(1)+ ( MudVolume_InjectedFromAnn ) !(gal) + + + + + call ChokeLine_Density%AddToFirst (Ann_KickSaved_Density) + call ChokeLine_MudDischarged_Volume%AddToFirst (Ann_Kick_Saved_Volume) + call ChokeLine_Mud_Forehead_X%AddToFirst (0.0d0) + call ChokeLine_Mud_Forehead_section%AddToFirst (1) + call ChokeLine_Mud_Backhead_X%AddToFirst (0.0d0) + call ChokeLine_Mud_Backhead_section%AddToFirst (1) + call ChokeLine_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call ChokeLine_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call ChokeLine_MudOrKick%AddToFirst (Saved_Ann_MudOrKick) + + ChokeLineDensity_Old= Ann_KickSaved_Density + + + endif + + do imud=1, ChokeLine_MudDischarged_Volume%Length()-2 + if ( ChokeLine_MudOrKick%Array(imud) ==1 .and. ChokeLine_MudOrKick%Array(imud+1) ==0 .and. ChokeLine_MudOrKick%Array(imud+2) ==1 ) then + write(*,*) 'error_location is 4' + error_occured = 1 + + endif + enddo + + if (error_occured == 1) then + + do imud=1, ChokeLine_MudDischarged_Volume%Length() + write(*,*) 'ChokeLine:', imud, ChokeLine_Density%Array(imud) ,ChokeLine_MudOrKick%Array(imud) + enddo + + endif + + +!========================================================== + + ! + !write(*,*) 'after add chokeline==' + ! + ! do imud=1, ChokeLine_MudDischarged_Volume%Length() + ! write(*,*) 'ChokeLine:', imud, ChokeLine_MudDischarged_Volume%Array(imud), ChokeLine_Density%Array(imud) ,ChokeLine_MudOrKick%Array(imud) + ! enddo + ! + !write(*,*) 'after add chokeline==' + ! + ! + + +!=============== save Choke Mud data========================== + ChokeMudVolumeSum= 0.d0 + !Ann_MudSaved_Density= 0.d0 + !Ann_KickSaved_Density= 0.d0 + Choke_Saved_MudDischarged_Volume= 0.d0 + Choke_Kick_Saved_Volume= 0.d0 + Saved_Choke_MudOrKick= 0 + + + + + do imud=1, ChokeLine_MudDischarged_Volume%Length() + + ChokeMudVolumeSum= ChokeMudVolumeSum + ChokeLine_MudDischarged_Volume%Array(imud) + + if ( ChokeMudVolumeSum > ChokeLine_VolumeCapacity ) then + + IF (ChokeLine_MudOrKick%Array(imud) == 0) THEN + Choke_MudSaved_Density = ChokeLine_Density%Array(imud) + Choke_Saved_MudDischarged_Volume = ChokeMudVolumeSum - ChokeLine_VolumeCapacity + ELSEIF (ChokeLine_MudOrKick%Array(imud) > 0 .AND. ChokeLine_MudOrKick%Array(imud) <100) THEN ! 104= AIR + Choke_Kick_Saved_Volume = ChokeMudVolumeSum - ChokeLine_VolumeCapacity + Saved_Choke_MudOrKick= ChokeLine_MudOrKick%Array (imud) + Choke_KickSaved_Density= ChokeLine_Density%Array(imud) + END IF + + do ii= imud + 1, ChokeLine_MudDischarged_Volume%Length() + + IF (ChokeLine_MudOrKick%Array(ii) == 0) THEN + Choke_MudSaved_Density = ((Choke_MudSaved_Density * Choke_Saved_MudDischarged_Volume) + (ChokeLine_Density%Array(ii) * ChokeLine_MudDischarged_Volume%Array(ii))) / (Choke_Saved_MudDischarged_Volume + ChokeLine_MudDischarged_Volume%Array(ii)) + Choke_Saved_MudDischarged_Volume = Choke_Saved_MudDischarged_Volume + ChokeLine_MudDischarged_Volume%Array(ii) + ELSEIF (ChokeLine_MudOrKick%Array(ii) > 0 .AND. ChokeLine_MudOrKick%Array(ii) <100) THEN ! 104= AIR + Choke_Kick_Saved_Volume = Choke_Kick_Saved_Volume + ChokeLine_MudDischarged_Volume%Array(ii) + Saved_Choke_MudOrKick= ChokeLine_MudOrKick%Array (ii) + Choke_KickSaved_Density= ChokeLine_Density%Array(ii) + END IF + enddo + + + !WRITE (*,*) 'Choke_Saved_Mud_Volume, Choke_Kick_Saved_Volume', Choke_Saved_MudDischarged_Volume, Choke_Kick_Saved_Volume + exit ! exits do + + endif + + enddo +Choke_Saved_MudDischarged_Volume_Final= Choke_Saved_MudDischarged_Volume !+ Choke_Kick_Saved_Volume +Choke_Kick_Saved_Volume_Final= Choke_Kick_Saved_Volume +!====================================================================== + + + ! + !do imud=1, ChokeLine_MudDischarged_Volume%Length() + ! write(*,*) 'a)ChokeLine:', imud, ChokeLine_MudDischarged_Volume%Array(imud) ,ChokeLine_MudOrKick%Array(imud) + !enddo + + + !write(*,*) 'choke_Mud sum=' , sum(ChokeLine_MudDischarged_Volume%Array(:)) + !write(*,*) 'choke_cap=' , ChokeLine_VolumeCapacity + !write(*,*) 'Choke_Saved_Mud=' , Choke_Saved_MudDischarged_Volume_Final + !write(*,*) 'Choke_Saved_Kick=' , Choke_Kick_Saved_Volume_Final + + + +!========================Choke Line================= + +imud=0 + do while (imud < ChokeLine_Mud_Forehead_X%Length()) + imud = imud + 1 + + if (imud> 1) then + ChokeLine_Mud_Backhead_X%Array(imud)= ChokeLine_Mud_Forehead_X%Array(imud-1) + ChokeLine_Mud_Backhead_section%Array(imud)= ChokeLine_Mud_Forehead_section%Array(imud-1) + endif + + + !DirectionCoef= (Xend_PipeSection(St_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(St_Mud_Backhead_section%Array(imud))) & + ! / ABS(Xend_PipeSection(St_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(St_Mud_Backhead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + ChokeLine_EmptyVolume_inBackheadLocation%Array(imud)= (ChokeLineLength- ChokeLine_Mud_Backhead_X%Array(imud))* Area_ChokeLineFt !(ft^3) + + ChokeLine_EmptyVolume_inBackheadLocation%Array(imud)= ChokeLine_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + if ( ChokeLine_MudDischarged_Volume%Array(imud) <= ChokeLine_EmptyVolume_inBackheadLocation%Array(imud)) then + ChokeLine_Mud_Forehead_section%Array(imud)= ChokeLine_Mud_Backhead_section%Array(imud) + ChokeLine_Mud_Forehead_X%Array(imud)= ChokeLine_Mud_Backhead_X%Array(imud)+ (ChokeLine_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_ChokeLineFt + ! 7.48 is for gal to ft^3 + + else + + isection= ChokeLine_Mud_Backhead_section%Array(imud)+1 + ChokeLine_RemainedVolume_in_LastSection%Array(imud)= ChokeLine_MudDischarged_Volume%Array(imud)- ChokeLine_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection > 1) then ! last pipe section(Chokeline exit) + ChokeLine_MudDischarged_Volume%Array(imud)= ChokeLine_MudDischarged_Volume%Array(imud)- ChokeLine_RemainedVolume_in_LastSection%Array(imud) + ChokeLine_Mud_Forehead_X%Array(imud)= ChokeLineLength + ChokeLine_Mud_Forehead_section%Array(imud)= 1 + if (ChokeLine_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the string + call ChokeLine_MudDischarged_Volume%Remove (imud) + call ChokeLine_Mud_Backhead_X%Remove (imud) + call ChokeLine_Mud_Backhead_section%Remove (imud) + call ChokeLine_Mud_Forehead_X%Remove (imud) + call ChokeLine_Mud_Forehead_section%Remove (imud) + call ChokeLine_Density%Remove (imud) + call ChokeLine_RemainedVolume_in_LastSection%Remove (imud) + call ChokeLine_EmptyVolume_inBackheadLocation%Remove (imud) + call ChokeLine_MudOrKick%Remove (imud) + + endif + exit + endif + + xx= ChokeLine_RemainedVolume_in_LastSection%Array(imud)/ ChokeLine_VolumeCapacity !(gal) + + if (xx<= 1.0) then + ChokeLine_Mud_Forehead_section%Array(imud)= isection + ChokeLine_Mud_Forehead_X%Array(imud)= xx * ChokeLineLength + exit + else + ChokeLine_RemainedVolume_in_LastSection%Array(imud)= ChokeLine_RemainedVolume_in_LastSection%Array(imud)- ChokeLine_VolumeCapacity + isection= isection+ 1 + + + endif + + enddo + + endif + + enddo +!========================Choke Line END================= + + !do imud=1, ChokeLine_MudDischarged_Volume%Length() + ! write(*,*) 'b)ChokeLine:', imud, ChokeLine_MudDischarged_Volume%Array(imud) ,ChokeLine_MudOrKick%Array(imud) + !enddo + + ChokeOutletDensity= ChokeLine_Density%Last() ! used in MudSystem + + + + + + do i=1, ChokeLine_MudOrKick%Length() + !write(*,555) i,'Choke_Volume(i), type=' ,ChokeLine_MudDischarged_Volume%Array(i),ChokeLine_MudOrKick%Array(i) + + IF (IEEE_Is_NaN(ChokeLine_MudDischarged_Volume%Array(i))) call ErrorStop('NaN in Choke Volume-Plot') + IF (ChokeLine_MudDischarged_Volume%Array(i)<=0.) call ErrorStop('Choke Volume= <=0' , ChokeLine_MudDischarged_Volume%Array(i)) + enddo + +555 FORMAT(I3,5X,A42,(f12.5),5X,I3) + + + !write(*,*) 'after sorting chokeline==' + !IF (ANY(ChokeLine_MudOrKick%Array(:) > 0)) THEN + ! do imud=1, ChokeLine_MudDischarged_Volume%Length() + ! write(*,*) 'ChokeLine:', imud, ChokeLine_MudDischarged_Volume%Array(imud), ChokeLine_Density%Array(imud) ,ChokeLine_MudOrKick%Array(imud) + ! enddo + !END IF + + + !do imud=1, Ann_MudDischarged_Volume%Length() + ! write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + !enddo + ! + !write(*,*) 'Ann cap=' , sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + ! write(*,*) 'Ann mud sum vol=' , sum(Ann_MudDischarged_Volume%Array(:)) + + + !write(*,*) '==after sorting chokeline' + + + end subroutine ChokeLineMud + + + + + +subroutine Choke_GasSound ! is called in subroutine CirculationCodeSelect + + +use CSounds + !Use GeoElements_FluidModule + !USE CMudPropertiesVariables + USE MudSystemVARIABLES + !USE Pump_VARIABLES + !!USE CHOKEVARIABLES + !!USE CDataDisplayConsoleVariables , StandPipePressureDataDisplay=>StandPipePressure + !!use CManifolds + !use CDrillWatchVariables + !!use CHOKEVARIABLES + !!use CChokeManifoldVariables + !use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + !USE sROP_Other_Variables + !USE sROP_Variables + !Use KickVariables + !USE PressureDisplayVARIABLES + !Use CError + !Use , intrinsic :: IEEE_Arithmetic + + + + + + if ( ChokeLine_MudOrKick%Last() > 0 .AND. WellToChokeManifoldOpen == .true.) then + !WellToChokeManifoldWasOpen + + SoundGasThroughChoke = 100 !100:chon dar adadhaye kamtar az 100 seda ghaat mishavad. eslah shavad.5.8.98 !int (min(ChokeLineFlowRate/2. , 100.)) + print* , 'SoundGasThroughChoke1=', SoundGasThroughChoke + !WRITE (*,*) 'WellToChokeManifoldWasOpen-Sound', WellToChokeManifoldWasOpen + WRITE (*,*) 'WellToChokeManifoldOpen', WellToChokeManifoldOpen + else + SoundGasThroughChoke = 0 + print* , 'SoundGasThroughChoke2=', SoundGasThroughChoke + endif + !print* , 'SoundGasThroughChoke3=', SoundGasThroughChoke + + + + call SetSoundGasThroughChoke(SoundGasThroughChoke) + + + end subroutine Choke_GasSound \ No newline at end of file diff --git a/Equipments/MudSystem/Trip_Out_andPump.f90 b/Equipments/MudSystem/Trip_Out_andPump.f90 new file mode 100644 index 0000000..18921d2 --- /dev/null +++ b/Equipments/MudSystem/Trip_Out_andPump.f90 @@ -0,0 +1,1366 @@ +subroutine TripOut_and_Pump ! is called in subroutine CirculationCodeSelect + + Use GeoElements_FluidModule + USE CMudPropertiesVariables + USE MudSystemVARIABLES + USE Pump_VARIABLES + !USE CHOKEVARIABLES + !USE CDataDisplayConsoleVariables , StandPipePressureDataDisplay=>StandPipePressure + !use CManifolds + use CDrillWatchVariables + !use CHOKEVARIABLES + !use CChokeManifoldVariables + use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + USE sROP_Other_Variables + USE sROP_Variables + Use KickVariables + Use CShoeVariables + + implicit none + +integer i,ii,AddLocation, iloc_edited, iloc_changedTo2 +Real(8) ExcessMudVolume_Remained,SavedDensityForOp + +!===========================================================WELL============================================================ +!===========================================================WELL============================================================ + + StringFlowRate= MUD(2)%Q + AnnulusFlowRate= MUD(2)%Q + !write(*,*) 'MUD(2)%Q=====' , MUD(2)%Q + + + write(*,*) 'Trip Out' + + ! write(*,*) 'check point 1==' + ! + ! + ! + ! do imud=1, Ann_MudDischarged_Volume%Length() + ! write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + ! enddo + ! + ! write(*,*) 'Ann cap=' , sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + ! write(*,*) 'Ann mud sum vol=' , sum(Ann_MudDischarged_Volume%Array(:)) + ! + ! + !write(*,*) '==check point 1' + +!========================Horizontal PIPE ENTRANCE================= + + if (ABS(SuctionDensity_Old - Suction_Density_MudSystem) >= DensityMixTol) then ! new mud is pumped + + call Hz_Density%AddToFirst (Suction_Density_MudSystem) + call Hz_MudDischarged_Volume%AddToFirst (0.0d0) + call Hz_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(1)) + call Hz_Mud_Forehead_section%AddToFirst (1) + call Hz_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(1)) + call Hz_Mud_Backhead_section%AddToFirst (1) + call Hz_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Hz_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Hz_MudOrKick%AddToFirst (0) + + SuctionDensity_Old= Suction_Density_MudSystem + endif + +!========================Horizontal PIPE STRING================= + + Hz_MudDischarged_Volume%Array(1)= Hz_MudDischarged_Volume%Array(1)+ ((StringFlowRate/60.0d0)*DeltaT_Mudline) !(gal) + + + total_add = total_add + ((StringFlowRate/60.0d0)*DeltaT_Mudline) + + + if (ChokePanelStrokeResetSwitch == 1) then + total_add= 0. + endif + + !write(*,*) ' total decrease(add to HZ)=' , total_add + !write(*,*) ' add to HZ=' , ((StringFlowRate/60.0d0)*DeltaT_Mudline) + + + +imud=0 + do while (imud < Hz_Mud_Forehead_X%Length()) + imud = imud + 1 + + if (imud> 1) then + Hz_Mud_Backhead_X%Array(imud)= Hz_Mud_Forehead_X%Array(imud-1) + Hz_Mud_Backhead_section%Array(imud)= Hz_Mud_Forehead_section%Array(imud-1) + endif + + + DirectionCoef= (Xend_PipeSection(Hz_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(Hz_Mud_Backhead_section%Array(imud))) & + / ABS(Xend_PipeSection(Hz_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(Hz_Mud_Backhead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + Hz_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Xend_PipeSection(Hz_Mud_Backhead_section%Array(imud))- Hz_Mud_Backhead_X%Array(imud))* & + Area_PipeSectionFt(Hz_Mud_Backhead_section%Array(imud)) !(ft^3) + Hz_EmptyVolume_inBackheadLocation%Array(imud)= Hz_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + + if ( Hz_MudDischarged_Volume%Array(imud) <= Hz_EmptyVolume_inBackheadLocation%Array(imud)) then + Hz_Mud_Forehead_section%Array(imud)= Hz_Mud_Backhead_section%Array(imud) + Hz_Mud_Forehead_X%Array(imud)= Hz_Mud_Backhead_X%Array(imud)+ DirectionCoef*(Hz_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_PipeSectionFt(Hz_Mud_Backhead_section%Array(imud)) + + else + + + isection= Hz_Mud_Backhead_section%Array(imud)+1 + Hz_RemainedVolume_in_LastSection%Array(imud)= Hz_MudDischarged_Volume%Array(imud)- Hz_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection > 1) then ! (horizontal pipe exit) + Hz_MudDischarged_Volume%Array(imud)= Hz_MudDischarged_Volume%Array(imud)- Hz_RemainedVolume_in_LastSection%Array(imud) + Hz_Mud_Forehead_X%Array(imud)= Xend_PipeSection(1) + Hz_Mud_Forehead_section%Array(imud)= 1 + + if (Hz_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the string + call RemoveHzMudArrays(imud) + endif + + exit + endif + + xx= Hz_RemainedVolume_in_LastSection%Array(imud)/ PipeSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + Hz_Mud_Forehead_section%Array(imud)= isection + Hz_Mud_Forehead_X%Array(imud)= (xx * (Xend_PipeSection(isection)- Xstart_PipeSection(isection)))+ Xstart_PipeSection(isection) + exit + else + Hz_RemainedVolume_in_LastSection%Array(imud)= Hz_RemainedVolume_in_LastSection%Array(imud)- PipeSection_VolumeCapacity(isection) + isection= isection+ 1 + + endif + + enddo + + endif + + enddo +!========================Horizontal PIPE END================= + + + +!========================Utube1 Air Element Removing================= + + !if (UtubeMode1Activated== .true.) then ! StringUpdate == .true. + ! + ! StringDensity_Old= St_Density%Array(2) + ! + ! UtubeMode1Activated= .false. + !endif + +!========================Utube1 Air Element Removing================= + + +!========================Utube2 Removing from Annulus================= + + if (UtubeMode2Activated== .true.) then ! StringUpdate == .true. + TotalAddedVolume=0. + + if (Ann_MudOrKick%Last() == 104) then !movaghati. albate age merge anjam shode bashe moshkeli nist + call RemoveAnnulusMudArrays(Ann_MudOrKick%Length()) + endif + + UtubeMode2Activated= .false. + endif + + +!========================Utube2 Removing from Annulus End================= + +!========================New Pipe Filling================= + + if (AddedElementsToString > 0) then ! StringUpdate == .true. + + !NoPipeAdded= F_StringIntervalCounts - F_StringIntervalCountsOld + + + NewPipeFilling=0 + + IF (St_MudOrKick%First() == 104) then + St_MudDischarged_Volume%Array(1) = St_MudDischarged_Volume%Array(1) + sum(PipeSection_VolumeCapacity(2:1+AddedElementsToString)) ! new pipe is filled by air + else + call St_Density%AddToFirst (0.d0) + call St_MudDischarged_Volume%AddToFirst (sum(PipeSection_VolumeCapacity(2:1+AddedElementsToString))) + call St_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(2)) + call St_Mud_Forehead_section%AddToFirst (2) + call St_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(2)) + call St_Mud_Backhead_section%AddToFirst (2) + call St_RemainedVolume_in_LastSection%AddToFirst (0.d0) + call St_EmptyVolume_inBackheadLocation%AddToFirst (0.d0) + call St_MudOrKick%AddToFirst (104) + endif + + endif + + !F_StringIntervalCountsOld= F_StringIntervalCounts + + + + if (NewPipeFilling == 0) then ! 2= is the first element of string (1= is for Hz pipe) + + + LackageMudVolume= St_MudDischarged_Volume%Array(1) ! = Air element + + + !write(*,*) 'LackageMudVolume=' , LackageMudVolume + + + + if (ABS(St_Density%Array(2) - Hz_Density%Last()) >= DensityMixTol) then ! new mud is pumped + call St_Density%AddTo (2,Hz_Density%Last()) + call St_MudDischarged_Volume%AddTo (2,0.d0) + call St_Mud_Forehead_X%AddTo (2,Xstart_PipeSection(2)) + call St_Mud_Forehead_section%AddTo (2 , 2) + call St_Mud_Backhead_X%AddTo (2,Xstart_PipeSection(2)) + call St_Mud_Backhead_section%AddTo (2 ,2) + call St_RemainedVolume_in_LastSection%AddTo (2,0.d0) + call St_EmptyVolume_inBackheadLocation%AddTo (2,0.d0) + call St_MudOrKick%AddTo (2,0) + + !StringDensity_Old= Hz_Density%Last() + endif + + + St_MudDischarged_Volume%Array(2)= St_MudDischarged_Volume%Array(2)+ min( ((StringFlowRate/60.0d0)*DeltaT_Mudline), LackageMudVolume) !(gal) + + St_MudDischarged_Volume%Array(1)= St_MudDischarged_Volume%Array(1)- min( ((StringFlowRate/60.0d0)*DeltaT_Mudline), LackageMudVolume) ! air(gal) + + !LackageMudVolumeAfterFilling= sum(PipeSection_VolumeCapacity(2:F_StringIntervalCounts)) - sum(St_MudDischarged_Volume%Array(:)) + + LackageMudVolumeAfterFilling= St_MudDischarged_Volume%Array(1) ! last time it should be zero + + + + if (LackageMudVolumeAfterFilling == 0.) then + NewPipeFilling= 1 + call RemoveStringMudArrays(1) + St_Mud_Backhead_X%Array(1) = Xstart_PipeSection(2) + St_Mud_Backhead_section%Array(1) = 2 + endif + + endif + +!========================New Pipe Filling End================= + + + if (NewPipeFilling == 0) then + StringFlowRate= 0. + AnnulusFlowRate= 0. + endif + + StringFlowRateFinal= StringFlowRate + AnnulusFlowRateFinal= AnnulusFlowRate + + +!========================STRING ENTRANCE================= + if (StringFlowRateFinal > 0.0 .and. ABS(St_Density%First() - Hz_Density%Last()) >= DensityMixTol) then ! new mud is pumped + !if (ABS(StringDensity_Old - Hz_Density%Last()) >= DensityMixTol) then ! new mud is pumped + call St_Density%AddToFirst (Hz_Density%Last()) + call St_MudDischarged_Volume%AddToFirst (0.0d0) + call St_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(2)) + call St_Mud_Forehead_section%AddToFirst (2) + call St_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(2)) + call St_Mud_Backhead_section%AddToFirst (2) + call St_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call St_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call St_MudOrKick%AddToFirst (0) + + !StringDensity_Old= Hz_Density%Last() + endif + St_MudDischarged_Volume%Array(1)= St_MudDischarged_Volume%Array(1)+ ((StringFlowRate/60.0d0)*DeltaT_Mudline) !(gal) + +!=============== save String Mud data=========== + StMudVolumeSum= 0.d0 + !St_MudSaved_Density= 0.d0 + St_Saved_MudDischarged_Volume= 0.d0 + !Saved_St_MudOrKick= 0 + !Ann_to_Choke_2mud= .false. + + do imud=1, St_MudDischarged_Volume%Length() + + StMudVolumeSum= StMudVolumeSum + St_MudDischarged_Volume%Array(imud) + + if ( StMudVolumeSum > sum(PipeSection_VolumeCapacity(2:F_StringIntervalCounts)) ) then + + !IF (St_MudOrKick%Array(imud) == 0) THEN + St_MudSaved_Density = St_Density%Array(imud) + St_Saved_MudDischarged_Volume = StMudVolumeSum - sum(PipeSection_VolumeCapacity(2:F_StringIntervalCounts)) + !ELSEIF (St_MudOrKick%Array(imud) > 0 .AND. St_MudOrKick%Array(imud) <100) THEN ! 104= AIR + ! St_Kick_Saved_Volume = StMudVolumeSum - sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + ! Saved_St_MudOrKick= St_MudOrKick%Array (imud) + ! St_KickSaved_Density= St_Density%Array(imud) + !END IF + + do ii= imud + 1, St_MudDischarged_Volume%Length() + !IF (St_MudOrKick%Array(ii) == 0) THEN + St_MudSaved_Density = ((St_MudSaved_Density * St_Saved_MudDischarged_Volume) + (St_Density%Array(ii) * St_MudDischarged_Volume%Array(ii))) / (St_Saved_MudDischarged_Volume + St_MudDischarged_Volume%Array(ii)) + St_Saved_MudDischarged_Volume = St_Saved_MudDischarged_Volume + St_MudDischarged_Volume%Array(ii) + + !ELSEIF (St_MudOrKick%Array(imud) > 0 .AND. St_MudOrKick%Array(imud) <100) THEN ! 104= AIR + ! St_Kick_Saved_Volume = St_Kick_Saved_Volume + St_MudDischarged_Volume%Array(ii) + ! Saved_St_MudOrKick= St_MudOrKick%Array (ii) + ! St_KickSaved_Density= St_Density%Array(ii) + !END IF + enddo + + + !WRITE (*,*) 'St_Saved_Mud_Volume, St_Kick_Saved_Volume', St_Saved_MudDischarged_Volume, St_Kick_Saved_Volume + exit ! exits do + + endif + + enddo +St_Saved_MudDischarged_Volume_Final= St_Saved_MudDischarged_Volume + +IF (WellHeadIsOpen) MudVolume_InjectedToBH = St_Saved_MudDischarged_Volume_Final + +!====================================================================== + + +!========================STRING================= + +imud=0 + do while (imud < St_Mud_Forehead_X%Length()) + imud = imud + 1 + + if (imud> 1) then + St_Mud_Backhead_X%Array(imud)= St_Mud_Forehead_X%Array(imud-1) + St_Mud_Backhead_section%Array(imud)= St_Mud_Forehead_section%Array(imud-1) + endif + + DirectionCoef= (Xend_PipeSection(St_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(St_Mud_Backhead_section%Array(imud))) & + / ABS(Xend_PipeSection(St_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(St_Mud_Backhead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + St_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Xend_PipeSection(St_Mud_Backhead_section%Array(imud))- St_Mud_Backhead_X%Array(imud))* & + Area_PipeSectionFt(St_Mud_Backhead_section%Array(imud)) !(ft^3) + St_EmptyVolume_inBackheadLocation%Array(imud)= St_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + if ( St_MudDischarged_Volume%Array(imud) <= St_EmptyVolume_inBackheadLocation%Array(imud)) then + St_Mud_Forehead_section%Array(imud)= St_Mud_Backhead_section%Array(imud) + St_Mud_Forehead_X%Array(imud)= St_Mud_Backhead_X%Array(imud)+ DirectionCoef*(St_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_PipeSectionFt(St_Mud_Backhead_section%Array(imud)) + ! 7.48 is for gal to ft^3 + + else + + isection= St_Mud_Backhead_section%Array(imud)+1 + St_RemainedVolume_in_LastSection%Array(imud)= St_MudDischarged_Volume%Array(imud)- St_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection > F_StringIntervalCounts) then ! last pipe section(string exit) + St_MudDischarged_Volume%Array(imud)= St_MudDischarged_Volume%Array(imud)- St_RemainedVolume_in_LastSection%Array(imud) + St_Mud_Forehead_X%Array(imud)= Xend_PipeSection(F_StringIntervalCounts) + St_Mud_Forehead_section%Array(imud)= F_StringIntervalCounts + + if (St_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the string + call RemoveStringMudArrays(imud) + endif + + exit + endif + + xx= St_RemainedVolume_in_LastSection%Array(imud)/ PipeSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + St_Mud_Forehead_section%Array(imud)= isection + St_Mud_Forehead_X%Array(imud)= (xx * (Xend_PipeSection(isection)- Xstart_PipeSection(isection)))+ Xstart_PipeSection(isection) + exit + else + St_RemainedVolume_in_LastSection%Array(imud)= St_RemainedVolume_in_LastSection%Array(imud)- PipeSection_VolumeCapacity(isection) + isection= isection+ 1 + + + endif + + enddo + + endif + + enddo +!========================STRING END================= + + !write(*,*) ' a before==' + ! + ! do imud=1, Op_MudDischarged_Volume%Length() + ! write(*,*) 'Op:', imud, Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) ,Op_MudOrKick%Array(imud) + ! enddo + ! + ! do imud=1, Ann_MudDischarged_Volume%Length() + ! write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + ! enddo + ! + ! write(*,*) 'Ann cap=' , sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + ! write(*,*) 'Ann mud sum vol=' , sum(Ann_MudDischarged_Volume%Array(:)) + ! + ! + !write(*,*) '==== a before' + + iloc_changedTo2 = 0 + + IF (Op_MudOrKick%Last() /= 0 .and. Op_MudOrKick%Last()==Ann_MudOrKick%First()) then + iLoc=2 ! it may be 1,2,3 or more, all of them are kick + iloc_changedTo2= 1 + endif + + + + iloc_edited= 0 + !write(*,*) sum(Op_MudDischarged_Volume%Array(:)) , ((AnnulusFlowRate/60.d0)*DeltaT_Mudline) , Ann_MudDischarged_Volume%First() , sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) + if (iloc==2 .and. sum(Op_MudDischarged_Volume%Array(:))+((AnnulusFlowRate/60.d0)*DeltaT_Mudline)+Ann_MudDischarged_Volume%First() < sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) ) then + iloc = 1 + iloc_edited = 1 + !write(*,*) 'hellooooooo' + endif + + +!write(*,*) 'ann-cap:' , sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1 :F_StringIntervalCounts+F_AnnulusIntervalCounts) ) + + + !write(*,*) 'iloc====' , iloc + !MudVolume_InjectedToBH + + +!=============================Add PumpFlowRate to Bottom Hole ============================== + !if ( AnnulusFlowRate>0.0 ) then + if ( MudVolume_InjectedToBH > 0.0 ) then + + + if (KickOffBottom) then ! (kickOffBottom = F) means kick is next to the bottom hole and usually kick is entering the + AddLocation= Op_Density%Length()-iloc+1+1 ! well, thus pumped mud should be placed above the kick + else + AddLocation= Op_Density%Length()+1 + endif + !write(*,*) 'AddLocation====' , AddLocation + if ( AddLocation== 0) CALL ErrorStop ('AddLocation=0') + + + if ( ABS(St_Density%Last() - Op_Density%Array(AddLocation-1)) >= DensityMixTol ) then + !write(*,*) 'new pocket**' + !write(*,*) 'St_Density%Last()=' , St_Density%Last() + !write(*,*) 'Op_Density%Array(AddLocation-1)=' , Op_Density%Array(AddLocation-1) + + + call Op_Density% AddTo (AddLocation,St_Density%Last()) + !call Op_MudDischarged_Volume%AddTo (AddLocation,((AnnulusFlowRate/60.d0)*DeltaT_Mudline)) + call Op_MudDischarged_Volume%AddTo (AddLocation,MudVolume_InjectedToBH) + call Op_Mud_Forehead_X%AddTo (AddLocation,Xstart_OpSection(1)) + call Op_Mud_Forehead_section%AddTo (AddLocation,1) + call Op_Mud_Backhead_X%AddTo (AddLocation,Xstart_OpSection(1)) + call Op_Mud_Backhead_section%AddTo (AddLocation,1) + call Op_RemainedVolume_in_LastSection%AddTo (AddLocation,0.0d0) + call Op_EmptyVolume_inBackheadLocation%AddTo (AddLocation,0.0d0) + call Op_MudOrKick%AddTo (AddLocation,0) + else + !write(*,*) 'merge**' + !write(*,*) 'density before=' , Op_Density%Array(AddLocation-1) + !write(*,*) 'St_Density%Last() for mix=' , St_Density%Last() + + !Op_Density%Array(AddLocation-1)= (Op_Density%Array(AddLocation-1)*Op_MudDischarged_Volume%Array(AddLocation-1)+St_Density%Last()*((AnnulusFlowRate/60.d0)*DeltaT_Mudline))/(Op_MudDischarged_Volume%Array(AddLocation-1)+((AnnulusFlowRate/60.d0)*DeltaT_Mudline)) + !Op_MudDischarged_Volume%Array(AddLocation-1)= Op_MudDischarged_Volume%Array(AddLocation-1) + ((AnnulusFlowRate/60.d0)*DeltaT_Mudline) + + Op_Density%Array(AddLocation-1)= (Op_Density%Array(AddLocation-1)*Op_MudDischarged_Volume%Array(AddLocation-1)+St_Density%Last()*MudVolume_InjectedToBH)/(Op_MudDischarged_Volume%Array(AddLocation-1)+MudVolume_InjectedToBH) + Op_MudDischarged_Volume%Array(AddLocation-1)= Op_MudDischarged_Volume%Array(AddLocation-1) + MudVolume_InjectedToBH + !write(*,*) 'density after=' , Op_Density%Array(AddLocation-1) + + endif + + endif +!=======================Add PumpFlowRate to Bottom Hole- End ============================== + + !write(*,*) 'pump added-before add to ann==' + ! + ! do imud=1, Op_MudDischarged_Volume%Length() + ! write(*,*) 'Op:', imud, Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) ,Op_MudOrKick%Array(imud) + ! enddo + ! + ! do imud=1, Ann_MudDischarged_Volume%Length() + ! write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + ! enddo + ! + ! write(*,*) 'Ann cap=' , sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + ! write(*,*) 'Ann mud sum vol=' , sum(Ann_MudDischarged_Volume%Array(:)) + ! + ! + ! + !write(*,*) 'pump added====before add to ann' + + +!=============== save OP Mud data to transfer to the annulus enterance due to tripin or kick + OpMudVolumeSum= 0.d0 + !Op_MudSaved_Density= 0.d0 + !Op_KickSaved_Density= 0.d0 + Op_Saved_MudDischarged_Volume= 0.d0 + Op_Kick_Saved_Volume= 0.d0 + Saved_Op_MudOrKick= 0 + Op_NeededVolume_ToFill= 0.d0 + + + + + do imud=1, Op_MudDischarged_Volume%Length() + + OpMudVolumeSum= OpMudVolumeSum + Op_MudDischarged_Volume%Array(imud) + + if ( OpMudVolumeSum > sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) ) then !1st mode + + IF (Op_MudOrKick%Array(imud) == 0) THEN + Op_MudSaved_Density = Op_Density%Array(imud) + Op_Saved_MudDischarged_Volume = OpMudVolumeSum - sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) + ELSE + + Op_Kick_Saved_Volume = OpMudVolumeSum - sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) + Saved_Op_MudOrKick= Op_MudOrKick%Array (imud) + Op_KickSaved_Density= Op_Density%Array(imud) + iloc= 2 + iloc_changedTo2= 2 + END IF + + do ii= imud + 1, Op_MudDischarged_Volume%Length() + IF (Op_MudOrKick%Array(ii) == 0) THEN + Op_MudSaved_Density = ((Op_MudSaved_Density * Op_Saved_MudDischarged_Volume) + (Op_Density%Array(ii) * Op_MudDischarged_Volume%Array(ii))) / (Op_Saved_MudDischarged_Volume + Op_MudDischarged_Volume%Array(ii)) + Op_Saved_MudDischarged_Volume = Op_Saved_MudDischarged_Volume + Op_MudDischarged_Volume%Array(ii) + ELSE + Op_Kick_Saved_Volume = Op_Kick_Saved_Volume + Op_MudDischarged_Volume%Array(ii) + Saved_Op_MudOrKick= Op_MudOrKick%Array (ii) + Op_KickSaved_Density= Op_Density%Array(ii) + iloc= 2 + iloc_changedTo2= 3 + END IF + enddo + + exit ! exits do + + endif + + enddo + + if ( sum(Op_MudDischarged_Volume%Array(:)) < sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) ) then !2nd & 3rd mode + + Op_NeededVolume_ToFill= sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) - sum(Op_MudDischarged_Volume%Array(:)) + endif + + + ! + !write(*,*) 'Op_NeededVolume_ToFill=' , Op_NeededVolume_ToFill + !write(*,*) 'Op_Saved_MudDischarged_Volume=' , Op_Saved_MudDischarged_Volume + !write(*,*) 'Op_Kick_Saved_Volume=' , Op_Kick_Saved_Volume + ! + !write(*,*) 'op cap=' , sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) + !write(*,*) ' op sum mud=' , sum(Op_MudDischarged_Volume%Array(:)) + + + + + +!====================================================================== + + + + +!========================Tripping Out- 1st & 3rd Mode==================== + + + + if ( (Op_Kick_Saved_Volume > 0.0 .or. Op_Saved_MudDischarged_Volume> 0.0) .or. & ! 1st Mode-Pump flow is more than trip out so fluid Level in Annulus Increases + (Op_NeededVolume_ToFill < ABS(DeltaVolumeAnnulusCapacity)) ) then !3rd Mode-fluid Level in Annulus Increases + + + !if ( Op_Kick_Saved_Volume > 0.0 .or. Op_Saved_MudDischarged_Volume> 0.0 ) write(*,*) 'trip out 1st mode' + + if ( Op_NeededVolume_ToFill > 0.0 .and. Op_NeededVolume_ToFill < ABS(DeltaVolumeAnnulusCapacity) ) then + ! write(*,*) 'trip out 3rd mode' + + NewVolume= 0.d0 ! for condition iloc=1 + + SavedDensityForOp= Ann_Density%Array(1) + + ExcessMudVolume_Remained= Op_NeededVolume_ToFill + + + imud=1 + + Do + + if(Ann_MudDischarged_Volume%Array(imud) < ExcessMudVolume_Remained) then + ExcessMudVolume_Remained= ExcessMudVolume_Remained- Ann_MudDischarged_Volume%Array(imud) + call Ann_MudDischarged_Volume%Remove (imud) + call Ann_Mud_Backhead_X%Remove (imud) + call Ann_Mud_Backhead_section%Remove (imud) + call Ann_Mud_Forehead_X%Remove (imud) + call Ann_Mud_Forehead_section%Remove (imud) + call Ann_Density%Remove (imud) + call Ann_RemainedVolume_in_LastSection%Remove (imud) + call Ann_EmptyVolume_inBackheadLocation%Remove (imud) + call Ann_MudOrKick%Remove (imud) + + elseif(Ann_MudDischarged_Volume%Array(imud) > ExcessMudVolume_Remained) then + Ann_MudDischarged_Volume%Array(imud)= Ann_MudDischarged_Volume%Array(imud)- ExcessMudVolume_Remained + exit + + else !(Ann_MudDischarged_Volume%Array(imud) == ExcessMudVolume_Remained) + call Ann_MudDischarged_Volume%Remove (imud) + call Ann_Mud_Backhead_X%Remove (imud) + call Ann_Mud_Backhead_section%Remove (imud) + call Ann_Mud_Forehead_X%Remove (imud) + call Ann_Mud_Forehead_section%Remove (imud) + call Ann_Density%Remove (imud) + call Ann_RemainedVolume_in_LastSection%Remove (imud) + call Ann_EmptyVolume_inBackheadLocation%Remove (imud) + call Ann_MudOrKick%Remove (imud) + exit + + endif + + enddo + + + !write(*,*) 'Op_NeededVolume_ToFill=' ,Op_NeededVolume_ToFill + !write(*,*) 'ABS(DeltaVolumeAnnulusCapacity)=' ,ABS(DeltaVolumeAnnulusCapacity) + !write(*,*) 'Op_MudOrKick%Last()=' ,Op_MudOrKick%Last() + !write(*,*) 'iloc=' ,iloc + !write(*,*) 'iloc_edited=' ,iloc_edited + + + endif + + + ! (AnnulusFlowRate/60.)*DeltaT_Mudline) - DeltaVolumeOp will be added to annulus + + !if (iLoc == 1) then + MudSection= F_StringIntervalCounts+1 + BackheadX= Xstart_PipeSection(F_StringIntervalCounts+1) + !elseif (iLoc == 2) then + ! MudSection= Kick_Forehead_section + ! BackheadX= Kick_Forehead_X + !endif + +!========================ANNULUS ENTRANCE==================== + !if (KickMigration_2SideBit == .FALSE.) then + ! if ( ABS(AnnulusSuctionDensity_Old - St_Density%Last()) >= DensityMixTol ) then ! new mud is pumped + ! call Ann_Density%AddTo (iLoc,St_Density%Last()) + ! call Ann_MudDischarged_Volume%AddTo (iLoc,0.0d0) + ! call Ann_Mud_Forehead_X%AddTo (iLoc,BackheadX) + ! call Ann_Mud_Forehead_section%AddTo (iLoc,MudSection) + ! call Ann_Mud_Backhead_X%AddTo (iLoc,BackheadX) + ! call Ann_Mud_Backhead_section%AddTo (iLoc,MudSection) + ! call Ann_RemainedVolume_in_LastSection%AddTo (iLoc,0.0d0) + ! call Ann_EmptyVolume_inBackheadLocation%AddTo (iLoc,0.0d0) + ! call Ann_MudOrKick%AddTo (iLoc,0) + ! call Ann_CuttingMud%AddTo (iLoc,0) + ! + ! AnnulusSuctionDensity_Old= St_Density%Last() + ! + ! MudIsChanged= .true. + ! endif + ! + ! Ann_MudDischarged_Volume%Array(iLoc)= Ann_MudDischarged_Volume%Array(iLoc)+ ((AnnulusFlowRate/60.0d0)*DeltaT_Mudline) - ((2-iloc)*ABS(DeltaVolumePipe)) !(gal) + ! + !endif + + + + + Ann_Mud_Backhead_section%Array(1)= MudSection !it is needed to be updated for (a condition that one pipe is removed from Annulus due to trip out)- (and add pipe) + Ann_Mud_Backhead_X%Array(1)= BackheadX + + + + !iloc=1 : (2-iloc)=1 normal + !iloc=2 : (2-iloc)=0 kick influx or migration is in annulus + +!========================Same to Tripping In==================== + + !write(*,*) 'Op_Kick_Saved_Volume,Op_Saved_MudDischarged_Volume=' , Op_Kick_Saved_Volume,Op_Saved_MudDischarged_Volume + + + if (Op_Kick_Saved_Volume > 0.0 .and. Ann_MudOrKick%First() == 0) then !1st Mode + write(*,*) 'Kick influx enters Annulus' + call Ann_Density%AddToFirst (Op_KickSaved_Density) + call Ann_MudDischarged_Volume%AddToFirst (Op_Kick_Saved_Volume) + call Ann_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) + call Ann_Mud_Forehead_section%AddToFirst (F_StringIntervalCounts+1) + call Ann_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) + call Ann_Mud_Backhead_section%AddToFirst (F_StringIntervalCounts+1) + call Ann_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call Ann_MudOrKick%AddToFirst (Saved_Op_MudOrKick) !<<<<<<<< + call Ann_CuttingMud%AddToFirst (0) + elseif (Op_Kick_Saved_Volume > 0.0 .and. Ann_MudOrKick%First() /= 0) then + Ann_MudDischarged_Volume%Array(1)= Ann_MudDischarged_Volume%Array(1) + Op_Kick_Saved_Volume + endif + + + + if ( Op_NeededVolume_ToFill > 0.0 .and. (Op_NeededVolume_ToFill < ABS(DeltaVolumeAnnulusCapacity)) .and. Op_MudOrKick%Last() == 0 .and. (iloc==2 .or. iloc_edited==1)) then !3rd Mode + !write(*,*) 'checkpoint 0' + !! for avoid kick separation -Op_MudOrKick%Last() == 0: because of pump + NewVolume= ((AnnulusFlowRate/60.d0)*DeltaT_Mudline) ! =volume that should be added to iloc=2 in Ann + call RemoveOpMudArrays(Op_Density%Length()) ! mud here is removed and then will be added to iloc=2 in Ann in %%1 section + if ( Ann_MudDischarged_Volume%Array(1) > ((AnnulusFlowRate/60.d0)*DeltaT_Mudline) ) then! 1st in Ann = kick ,, we expect: ((AnnulusFlowRate/60.d0)*DeltaT_Mudline)= OpMudVolLast + Ann_MudDischarged_Volume%Array(1)= Ann_MudDischarged_Volume%Array(1) - ((AnnulusFlowRate/60.d0)*DeltaT_Mudline) + Op_MudDischarged_Volume%Array(Op_Density%Length())= Op_MudDischarged_Volume%Array(Op_Density%Length())+ ((AnnulusFlowRate/60.d0)*DeltaT_Mudline) ! kick + else + call RemoveAnnulusMudArrays(1) !kick is removed + iloc= 1 + Op_MudDischarged_Volume%Array(Op_Density%Length())= Op_MudDischarged_Volume%Array(Op_Density%Length())+ ((AnnulusFlowRate/60.d0)*DeltaT_Mudline) + write(*,*) 'little expand' + ! including a little expand + endif + endif + + if (Op_Saved_MudDischarged_Volume> 0.0) then !1st Mode + NewDensity= Op_MudSaved_Density + !write(*,*) 'iloc,...' , iloc,((AnnulusFlowRate/60.d0)*DeltaT_Mudline),Op_Saved_MudDischarged_Volume + if (iloc==1) then + !write(*,*) 'checkpoint 1' + NewVolume= Op_Saved_MudDischarged_Volume + elseif (real(((AnnulusFlowRate/60.d0)*DeltaT_Mudline)) - real(Op_Saved_MudDischarged_Volume) > 0.d0 ) then ! for avoid kick separation + !write(*,*) 'checkpoint 2' + NewVolume= ((AnnulusFlowRate/60.d0)*DeltaT_Mudline) !- Op_Saved_MudDischarged_Volume + call RemoveOpMudArrays(Op_Density%Length()) ! mud here is removed and then will be added to iloc=2 in Ann + if ( Ann_MudDischarged_Volume%Array(1) > (((AnnulusFlowRate/60.d0)*DeltaT_Mudline) - Op_Saved_MudDischarged_Volume) ) then! 1st in Ann = kick + Ann_MudDischarged_Volume%Array(1)= Ann_MudDischarged_Volume%Array(1) - (((AnnulusFlowRate/60.d0)*DeltaT_Mudline) - Op_Saved_MudDischarged_Volume) + Op_MudDischarged_Volume%Array(Op_Density%Length())= Op_MudDischarged_Volume%Array(Op_Density%Length())+ (((AnnulusFlowRate/60.d0)*DeltaT_Mudline) - Op_Saved_MudDischarged_Volume) !kick + else + call RemoveAnnulusMudArrays(1) !kick is removed + iloc =1 + Op_MudDischarged_Volume%Array(Op_Density%Length())= Op_MudDischarged_Volume%Array(Op_Density%Length())+ (((AnnulusFlowRate/60.d0)*DeltaT_Mudline) - Op_Saved_MudDischarged_Volume) + write(*,*) 'little expand' + + ! including a little expand + endif + + + else ! iloc==2 , ((AnnulusFlowRate/60.d0)*DeltaT_Mudline) == Op_Saved_MudDischarged_Volume + !write(*,*) 'checkpoint 3' + NewVolume= Op_Saved_MudDischarged_Volume ! it is normal mode + endif + + + endif + + !write(*,*) 'NewVolume=' ,NewVolume + + + if( Ann_Density%Length() == 1 .and. iloc ==2 ) then + + write(*,*) '***errorb****==' + + write(*,*) 'iloc_edited=' , iloc_edited + write(*,*) 'iloc_changedTo2=' , iloc_changedTo2 + + write(*,*) 'Op_Capacity===' , sum(OpSection_VolumeCapacity(1:F_BottomHoleIntervalCounts)) + + WRITE (*,*) 'Op_Saved_MudDischarged_Volume, Op_Kick_Saved_Volume',Op_Saved_MudDischarged_Volume, Op_Kick_Saved_Volume + + do imud=1, Op_MudDischarged_Volume%Length() + write(*,*) 'Op:', imud, Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) ,Op_MudOrKick%Array(imud) + enddo + + do imud=1, Ann_MudDischarged_Volume%Length() + write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + enddo + + + + write(*,*) '==***errorb****' + endif + + + + + + if ((Rate_of_Penetration==0 .and. abs(Ann_Density%Array(iLoc)-NewDensity)< DensityMixTol) & !%%1 section + .or. (Rate_of_Penetration>0. .and. Ann_CuttingMud%Array(iLoc)==1 .and. abs(Ann_Density%Array(iLoc)-NewDensity)< CuttingDensityMixTol) & + .or. (Rate_of_Penetration>0. .and. Ann_CuttingMud%Array(iLoc)==0 .and. Ann_MudDischarged_Volume%Array(iLoc) < 42.) ) then ! 1-Pockets are Merged + !write(*,*) '%%1 section a)' + Ann_Density%Array(iLoc)= (Ann_Density%Array(iLoc)*Ann_MudDischarged_Volume%Array(iLoc)+NewDensity*NewVolume)/(Ann_MudDischarged_Volume%Array(iLoc)+NewVolume) + Ann_MudDischarged_Volume%Array(iLoc)= Ann_MudDischarged_Volume%Array(iLoc)+NewVolume + Ann_Mud_Forehead_X%Array(iLoc)= BackheadX + Ann_Mud_Forehead_section%Array(iLoc)= MudSection + Ann_Mud_Backhead_X%Array(iLoc)= BackheadX + Ann_Mud_Backhead_section%Array(iLoc)= MudSection + Ann_RemainedVolume_in_LastSection%Array(iLoc)= (0.0d0) + Ann_EmptyVolume_inBackheadLocation%Array(iLoc)= (0.0d0) + else ! 2-Merging conditions are not meeted, so new pocket + !write(*,*) '%%1 section b)' + + call Ann_Density%AddTo (iLoc,NewDensity) + call Ann_MudDischarged_Volume%AddTo (iLoc,NewVolume) + call Ann_Mud_Forehead_X%AddTo (iLoc,BackheadX) + call Ann_Mud_Forehead_section%AddTo (iLoc,MudSection) + call Ann_Mud_Backhead_X%AddTo (iLoc,BackheadX) + call Ann_Mud_Backhead_section%AddTo (iLoc,MudSection) + call Ann_RemainedVolume_in_LastSection%AddTo (iLoc,0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddTo (iLoc,0.0d0) + call Ann_MudOrKick%AddTo (iLoc,0) + call Ann_CuttingMud%AddTo (iLoc,0) + !write(*,*) 'd) annLength=' , Ann_Density%Length() + + endif + + + + +!========================Same to Tripping In - End==================== + + !write(*,*) 'b)Ann_Mud sum=' , sum(Ann_MudDischarged_Volume%Array(:)) + + !write(*,*) 'no======2' + ! + ! do imud=1, Op_MudDischarged_Volume%Length() + ! write(*,*) 'Op:', imud, Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) ,Op_MudOrKick%Array(imud) + ! enddo + ! + ! do imud=1, Ann_MudDischarged_Volume%Length() + ! write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + ! enddo + ! + ! + ! write(*,*) 'Ann cap=' , sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + ! write(*,*) 'Ann mud sum vol=' , sum(Ann_MudDischarged_Volume%Array(:)) + ! + ! + !write(*,*) '2======no' + +!=============== save Ann Mud data to transfer to the ChokeLine enterance + AnnMudVolumeSum= 0.d0 + !Ann_MudSaved_Density= 0.d0 + !Ann_KickSaved_Density= 0.d0 + Ann_Saved_MudDischarged_Volume= 0.d0 + Ann_Kick_Saved_Volume= 0.d0 + Saved_Ann_MudOrKick= 0 + Ann_to_Choke_2mud= .false. + + + + + do imud=1, Ann_MudDischarged_Volume%Length() + + AnnMudVolumeSum= AnnMudVolumeSum + Ann_MudDischarged_Volume%Array(imud) + + if ( AnnMudVolumeSum > sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) ) then + + IF (Ann_MudOrKick%Array(imud) == 0) THEN + Ann_MudSaved_Density = Ann_Density%Array(imud) + Ann_Saved_MudDischarged_Volume = AnnMudVolumeSum - sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + ELSEIF (Ann_MudOrKick%Array(imud) > 0 .AND. Ann_MudOrKick%Array(imud) <100) THEN ! 104= AIR + Ann_Kick_Saved_Volume = AnnMudVolumeSum - sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + Saved_Ann_MudOrKick= Ann_MudOrKick%Array (imud) + Ann_KickSaved_Density= Ann_Density%Array(imud) + END IF + + do ii= imud + 1, Ann_MudDischarged_Volume%Length() + IF (Ann_MudOrKick%Array(ii) == 0) THEN + Ann_MudSaved_Density = ((Ann_MudSaved_Density * Ann_Saved_MudDischarged_Volume) + (Ann_Density%Array(ii) * Ann_MudDischarged_Volume%Array(ii))) / (Ann_Saved_MudDischarged_Volume + Ann_MudDischarged_Volume%Array(ii)) + Ann_Saved_MudDischarged_Volume = Ann_Saved_MudDischarged_Volume + Ann_MudDischarged_Volume%Array(ii) + Ann_to_Choke_2mud= .true. + ELSEIF (Ann_MudOrKick%Array(ii) > 0 .AND. Ann_MudOrKick%Array(ii) <100) THEN ! 104= AIR + Ann_Kick_Saved_Volume = Ann_Kick_Saved_Volume + Ann_MudDischarged_Volume%Array(ii) + Saved_Ann_MudOrKick= Ann_MudOrKick%Array (ii) + Ann_KickSaved_Density= Ann_Density%Array(ii) + END IF + enddo + + exit ! exits do + + endif + + enddo + +Ann_Saved_MudDischarged_Volume_Final= Ann_Saved_MudDischarged_Volume +Ann_Kick_Saved_Volume_Final= Ann_Kick_Saved_Volume + !write(*,*) 'Ann cap=' , sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + !write(*,*) 'Ann mud sum vol=' , sum(Ann_MudDischarged_Volume%Array(:)) + +IF (WellHeadIsOpen) MudVolume_InjectedFromAnn = Ann_Saved_MudDischarged_Volume_Final-((Qlost/60.0d0)*DeltaT_Mudline) + !NoGasPocket +!write(*,*) 'Ann_Saved_Mud_Vol,Ann_Kick_Saved_Vol=' , Ann_Saved_MudDischarged_Volume,Ann_Kick_Saved_Volume + +!====================================================================== + + + !write(*,*) 'Ann_Saved_Mud=' , Ann_Saved_MudDischarged_Volume +!======================== Annulus ==================== + + !MudIsChanged= .false. + +imud= 0 + + do while (imud < Ann_Mud_Forehead_X%Length()) + imud = imud + 1 + + if (imud> 1) then + Ann_Mud_Backhead_X%Array(imud)= Ann_Mud_Forehead_X%Array(imud-1) + Ann_Mud_Backhead_section%Array(imud)= Ann_Mud_Forehead_section%Array(imud-1) + endif + + ! write(*,*) 'imud==' , imud + !write(*,*) '***)Ann_Mud_Backhead_section(imud)= ' , Ann_Mud_Backhead_section%Array(imud), Ann_density%Array(imud) + + + DirectionCoef= (Xend_PipeSection(Ann_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(Ann_Mud_Backhead_section%Array(imud))) & + / ABS(Xend_PipeSection(Ann_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(Ann_Mud_Backhead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + Ann_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Xend_PipeSection(Ann_Mud_Backhead_section%Array(imud))- Ann_Mud_Backhead_X%Array(imud))* & + Area_PipeSectionFt(Ann_Mud_Backhead_section%Array(imud)) !(ft^3) + Ann_EmptyVolume_inBackheadLocation%Array(imud)= Ann_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + + if ( Ann_MudDischarged_Volume%Array(imud) <= Ann_EmptyVolume_inBackheadLocation%Array(imud)) then + Ann_Mud_Forehead_section%Array(imud)= Ann_Mud_Backhead_section%Array(imud) + Ann_Mud_Forehead_X%Array(imud)= Ann_Mud_Backhead_X%Array(imud)+ DirectionCoef*(Ann_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_PipeSectionFt(Ann_Mud_Backhead_section%Array(imud)) + ! 7.48 is for gal to ft^3 + + else + + isection= Ann_Mud_Backhead_section%Array(imud)+1 + Ann_RemainedVolume_in_LastSection%Array(imud)= Ann_MudDischarged_Volume%Array(imud)- Ann_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection > NoPipeSections) then ! last pipe section(well exit) + Ann_MudDischarged_Volume%Array(imud)= Ann_MudDischarged_Volume%Array(imud)- Ann_RemainedVolume_in_LastSection%Array(imud) + Ann_Mud_Forehead_X%Array(imud)= Xend_PipeSection(NoPipeSections) + Ann_Mud_Forehead_section%Array(imud)= NoPipeSections + + if (Ann_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the well + call RemoveAnnulusMudArrays(imud) + endif + + exit + endif + + xx= Ann_RemainedVolume_in_LastSection%Array(imud)/ PipeSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + Ann_Mud_Forehead_section%Array(imud)= isection + Ann_Mud_Forehead_X%Array(imud)= (xx * (Xend_PipeSection(isection)- Xstart_PipeSection(isection)))+ Xstart_PipeSection(isection) + exit + else + Ann_RemainedVolume_in_LastSection%Array(imud)= Ann_RemainedVolume_in_LastSection%Array(imud)- PipeSection_VolumeCapacity(isection) + isection= isection+ 1 + + endif + + enddo + + endif + + enddo + + if (Ann_Mud_Forehead_X%Last() < Xend_PipeSection(NoPipeSections)) then + Ann_Mud_Forehead_X%Array(Ann_Mud_Forehead_X%Length()) = Xend_PipeSection(NoPipeSections) ! for error preventing + endif + +!========================ANNULUS END================= + + + +!************************************************************************************************************************* + +!========================Tripping Out- 2nd Mode==================== + + + elseif ( Op_NeededVolume_ToFill > ABS(DeltaVolumeAnnulusCapacity) ) then !pump is off or Pump flow is less than trip out so fluid Level in Annulus decreases + !write(*,*) 'trip out 2nd mode' + + + SavedDensityForOp= Ann_Density%Array(1) +!========================ANNULUS ENTRANCE==================== + + ! <<< SIMILAR TO UTUBE 2 >>> + if ( Ann_Density%Last() /= 0.0 ) then ! new mud is pumped + call Ann_Density%Add (0.0d0) + call Ann_MudDischarged_Volume%Add (0.0d0) + call Ann_Mud_Forehead_X%Add (Xend_PipeSection(NoPipeSections)) + call Ann_Mud_Forehead_section%Add (NoPipeSections) + call Ann_Mud_Backhead_X%Add (Xstart_PipeSection(NoPipeSections)) + call Ann_Mud_Backhead_section%Add (NoPipeSections) + call Ann_RemainedVolume_in_LastSection%Add (0.0d0) + call Ann_EmptyVolume_inBackheadLocation%Add (0.0d0) + call Ann_MudOrKick%Add (104) + call Ann_CuttingMud%Add (0) + + !AnnulusSuctionDensity_Old= Hz_Density%Last() + endif + + Ann_Mud_Forehead_section%Array(Ann_Mud_Forehead_section%Length())= NoPipeSections !it is needed to be updated for (a condition that one pipe is removed from Annulus due to trip out)- (and add pipe) + Ann_Mud_Forehead_X%Array(Ann_Mud_Forehead_X%Length())= Xend_PipeSection(NoPipeSections) + + + Ann_MudDischarged_Volume%Array(Ann_MudDischarged_Volume%Length())= Ann_MudDischarged_Volume%Last()+ (Op_NeededVolume_ToFill - ABS(DeltaVolumeAnnulusCapacity)) ! Op_NeededVolume_ToFill !ABS(DeltaVolumePipe) - ((AnnulusFlowRate/60.)*DeltaT_Mudline) !(gal) + +!=================================================================== + + + + if ( (iloc==2 .or. iloc_edited==1) .and. Op_MudOrKick%Last()==0 ) then ! for avoid kick separation + !write(*,*) 'here mud should be removed from Op last' + + if (abs(Ann_Density%Array(iloc)-Op_Density%Last())< DensityMixTol) then + + Ann_Density%Array(iLoc)= (Ann_Density%Array(iLoc)*Ann_MudDischarged_Volume%Array(iLoc)+Op_Density%Last()*Op_MudDischarged_Volume%Last())/(Ann_MudDischarged_Volume%Array(iLoc)+Op_MudDischarged_Volume%Last()) + Ann_MudDischarged_Volume%Array(iLoc)= Ann_MudDischarged_Volume%Array(iLoc)+Op_MudDischarged_Volume%Last() ! OP_Last is mud(effect of pump added mud) + Ann_Mud_Forehead_X%Array(iLoc)= BackheadX + Ann_Mud_Forehead_section%Array(iLoc)= MudSection + Ann_Mud_Backhead_X%Array(iLoc)= BackheadX + Ann_Mud_Backhead_section%Array(iLoc)= MudSection + Ann_RemainedVolume_in_LastSection%Array(iLoc)= (0.0d0) + Ann_EmptyVolume_inBackheadLocation%Array(iLoc)= (0.0d0) + !write(*,*) 'merge' ,'Ann_Volume%Array(1)=' , Ann_MudDischarged_Volume%Array(1) + + else ! 2-Merging conditions are not meeted, so new pocket + call Ann_Density%AddTo (iLoc,Op_Density%Last()) + call Ann_MudDischarged_Volume%AddTo (iLoc,Op_MudDischarged_Volume%Last()) + call Ann_Mud_Forehead_X%AddTo (iLoc,BackheadX) + call Ann_Mud_Forehead_section%AddTo (iLoc,MudSection) + call Ann_Mud_Backhead_X%AddTo (iLoc,BackheadX) + call Ann_Mud_Backhead_section%AddTo (iLoc,MudSection) + call Ann_RemainedVolume_in_LastSection%AddTo (iLoc,0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddTo (iLoc,0.0d0) + call Ann_MudOrKick%AddTo (iLoc,0) + call Ann_CuttingMud%AddTo (iLoc,0) + endif + + Op_NeededVolume_ToFill= Op_NeededVolume_ToFill + Op_MudDischarged_Volume%Last() ! OP_Last is mud(effect of pump added mud) + + call RemoveOpMudArrays(Op_MudOrKick%Length()) + + + endif +!=================================================================== + + +!=============== save Ann Mud data to transfer to the ChokeLine enterance + !AnnMudVolumeSum= 0.d0 + !!Ann_MudSaved_Density= 0.d0 + !!Ann_KickSaved_Density= 0.d0 + Ann_Saved_MudDischarged_Volume= 0.d0 + Ann_Kick_Saved_Volume= 0.d0 + !Saved_Ann_MudOrKick= 0 + !Ann_to_Choke_2mud= .false. + + + + + !do imud=1, Ann_MudDischarged_Volume%Length() + ! + ! AnnMudVolumeSum= AnnMudVolumeSum + Ann_MudDischarged_Volume%Array(imud) + ! + ! if ( AnnMudVolumeSum > sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) ) then + ! + ! IF (Ann_MudOrKick%Array(imud) == 0) THEN + ! Ann_MudSaved_Density = Ann_Density%Array(imud) + ! Ann_Saved_MudDischarged_Volume = AnnMudVolumeSum - sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + ! ELSEIF (Ann_MudOrKick%Array(imud) > 0 .AND. Ann_MudOrKick%Array(imud) <100) THEN ! 104= AIR + ! Ann_Kick_Saved_Volume = AnnMudVolumeSum - sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + ! Saved_Ann_MudOrKick= Ann_MudOrKick%Array (imud) + ! Ann_KickSaved_Density= Ann_Density%Array(imud) + ! END IF + ! + ! do ii= imud + 1, Ann_MudDischarged_Volume%Length() + ! IF (Ann_MudOrKick%Array(ii) == 0) THEN + ! Ann_MudSaved_Density = ((Ann_MudSaved_Density * Ann_Saved_MudDischarged_Volume) + (Ann_Density%Array(ii) * Ann_MudDischarged_Volume%Array(ii))) / (Ann_Saved_MudDischarged_Volume + Ann_MudDischarged_Volume%Array(ii)) + ! Ann_Saved_MudDischarged_Volume = Ann_Saved_MudDischarged_Volume + Ann_MudDischarged_Volume%Array(ii) + ! Ann_to_Choke_2mud= .true. + ! ELSEIF (Ann_MudOrKick%Array(ii) > 0 .AND. Ann_MudOrKick%Array(ii) <100) THEN ! 104= AIR + ! Ann_Kick_Saved_Volume = Ann_Kick_Saved_Volume + Ann_MudDischarged_Volume%Array(ii) + ! Saved_Ann_MudOrKick= Ann_MudOrKick%Array (ii) + ! Ann_KickSaved_Density= Ann_Density%Array(ii) + ! END IF + ! enddo + ! + ! exit ! exits do + ! + ! endif + ! + !enddo + + + ! write(*,*) 'check point 2==' + ! + ! + ! + ! do imud=1, Ann_MudDischarged_Volume%Length() + ! write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + ! enddo + ! + ! write(*,*) 'Ann cap=' , sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + ! write(*,*) 'Ann mud sum vol=' , sum(Ann_MudDischarged_Volume%Array(:)) + ! + ! + !write(*,*) '==check point 2' + + + + + +Ann_Saved_MudDischarged_Volume_Final= Ann_Saved_MudDischarged_Volume +Ann_Kick_Saved_Volume_Final= Ann_Kick_Saved_Volume + !write(*,*) 'Ann cap=' , sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + !write(*,*) 'Ann mud sum vol=' , sum(Ann_MudDischarged_Volume%Array(:)) + + !write(*,*) 'Ann_Saved_MudDischarged_Volume_Final=' , Ann_Saved_MudDischarged_Volume_Final + + + +IF (WellHeadIsOpen) MudVolume_InjectedFromAnn = Ann_Saved_MudDischarged_Volume_Final-((Qlost/60.0d0)*DeltaT_Mudline) + !! NoGasPocket > 0 .AND. + +!write(*,*) 'Ann_Saved_Mud_Vol,Ann_Kick_Saved_Vol=' , Ann_Saved_MudDischarged_Volume,Ann_Kick_Saved_Volume + + +!====================================================================== + +!========================ANNULUS==================== + ! <<< SIMILAR TO UTUBE 2 >>> + + !write(*,*) Ann_MudOrKick%Last(), 'DeltaVolumePipe , after volume=' ,ABS(DeltaVolumePipe), Ann_MudDischarged_Volume%Last() +imud= Ann_Mud_Forehead_X%Length() + 1 + + do while (imud > 1) + imud = imud - 1 + + if (imud< Ann_Mud_Forehead_X%Length()) then + Ann_Mud_Forehead_X%Array(imud)= Ann_Mud_Backhead_X%Array(imud+1) + Ann_Mud_Forehead_section%Array(imud)= Ann_Mud_Backhead_section%Array(imud+1) + endif + + +! <<< Fracture Shoe Lost + IF ( ShoeLost .and. ShoeDepth < Ann_Mud_Backhead_X%Array(imud) .and. ShoeDepth >= Ann_Mud_Forehead_X%Array(imud) ) then + !write(*,*) 'ShoeLost imud,AnnVolume(imud), VolumeLost:' , imud,Ann_MudDischarged_Volume%Array(imud), (( Qlost/60.0d0)*DeltaT_Mudline) + Ann_MudDischarged_Volume%Array(imud)= Ann_MudDischarged_Volume%Array(imud)-((Qlost/60.0d0)*DeltaT_Mudline) !(gal) + if (Ann_MudDischarged_Volume%Array(imud) < 0.0) then + !write(*,*) 'mud is removed by shoe lost, imud=' , imud + call RemoveAnnulusMudArrays(imud) + imud= imud-1 + cycle + endif + LostInTripOutIsDone= .true. + ENDIF +! Fracture Shoe Lost >>> + + + + + + + + + !write(*,*) 'a)imud,Ann_Mud_Forehead_section=',imud,Ann_Mud_Forehead_section%Array(imud) + + DirectionCoef= (Xend_PipeSection(Ann_Mud_Forehead_section%Array(imud))-Xstart_PipeSection(Ann_Mud_Forehead_section%Array(imud))) & + / ABS(Xend_PipeSection(Ann_Mud_Forehead_section%Array(imud))-Xstart_PipeSection(Ann_Mud_Forehead_section%Array(imud))) + ! +1 for string , -1 for annulus + + !write(*,*) 'b)imud,Forehead_X,Xstart_PipeSection=',imud,Ann_Mud_Forehead_X%Array(imud),Xstart_PipeSection(Ann_Mud_Forehead_section%Array(imud)) + + Ann_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Ann_Mud_Forehead_X%Array(imud)- Xstart_PipeSection(Ann_Mud_Forehead_section%Array(imud)))* & + Area_PipeSectionFt(Ann_Mud_Forehead_section%Array(imud)) !(ft^3) + Ann_EmptyVolume_inBackheadLocation%Array(imud)= Ann_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + if ( Ann_MudDischarged_Volume%Array(imud) <= Ann_EmptyVolume_inBackheadLocation%Array(imud)) then + Ann_Mud_Backhead_section%Array(imud)= Ann_Mud_Forehead_section%Array(imud) + Ann_Mud_Backhead_X%Array(imud)= Ann_Mud_Forehead_X%Array(imud)- DirectionCoef*(Ann_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_PipeSectionFt(Ann_Mud_Forehead_section%Array(imud)) + ! 7.48051948 is for gal to ft^3 + else + isection= Ann_Mud_Forehead_section%Array(imud)-1 + Ann_RemainedVolume_in_LastSection%Array(imud)= Ann_MudDischarged_Volume%Array(imud)- Ann_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection < F_StringIntervalCounts+1) then ! last pipe section(well exit) F_StringIntervalCounts+1 is the first section in Annulus + Ann_MudDischarged_Volume%Array(imud)= Ann_MudDischarged_Volume%Array(imud)- Ann_RemainedVolume_in_LastSection%Array(imud) + Ann_Mud_Backhead_X%Array(imud)= Xstart_PipeSection(F_StringIntervalCounts+1) + Ann_Mud_Backhead_section%Array(imud)= F_StringIntervalCounts+1 + + if (Ann_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the well + call RemoveAnnulusMudArrays(imud) + endif + + exit + endif + + xx= Ann_RemainedVolume_in_LastSection%Array(imud)/ PipeSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + Ann_Mud_Backhead_section%Array(imud)= isection + Ann_Mud_Backhead_X%Array(imud)= (xx * (Xstart_PipeSection(isection)- Xend_PipeSection(isection)))+ Xend_PipeSection(isection) + exit + else + Ann_RemainedVolume_in_LastSection%Array(imud)= Ann_RemainedVolume_in_LastSection%Array(imud)- PipeSection_VolumeCapacity(isection) + isection= isection- 1 + + + endif + + enddo + + endif + + enddo +!========================ANNULUS END================= + + endif ! end of 1st &3rd & 2nd Mode + + +!************************************************************************************************************************* + + + + + + +!======================== Bottom Hole Entrance ========================== + !if (iloc == 1) then + if ( Op_NeededVolume_ToFill > 0.0 ) then ! it is needed for 2nd & 3rd mode + !write(*,*) 'op add for 2nd & 3rd mode done' + + + + if ( ABS(Op_Density%Last() - SavedDensityForOp ) >= DensityMixTol) then ! .OR. (Op_MudDischarged_Volume%Last()>42.) ) then ! 1-Merging conditions are not meeted, so new pocket + + call Op_Density%Add (SavedDensityForOp) + call Op_MudDischarged_Volume%Add (Op_NeededVolume_ToFill) + call Op_Mud_Forehead_X%Add (0.0d0) + call Op_Mud_Forehead_section%Add (1) + call Op_Mud_Backhead_X%Add (0.0d0) + call Op_Mud_Backhead_section%Add (1) + call Op_RemainedVolume_in_LastSection%Add (0.0d0) + call Op_EmptyVolume_inBackheadLocation%Add (0.0d0) + call Op_MudOrKick%Add (Ann_MudOrKick%Array(1)) + else ! 2-Pockets are Merged + + Op_Density%Array (Op_Density%Length())= (SavedDensityForOp*Op_NeededVolume_ToFill+Op_Density%Last()*Op_MudDischarged_Volume%Last())/(Op_MudDischarged_Volume%Last()+Op_NeededVolume_ToFill) + Op_MudDischarged_Volume%Array (Op_Density%Length())= Op_MudDischarged_Volume%Array (Op_Density%Length()) + Op_NeededVolume_ToFill + Op_RemainedVolume_in_LastSection%Array (Op_Density%Length())= 0.0 + Op_EmptyVolume_inBackheadLocation%Array (Op_Density%Length())= 0.0 + + endif + + endif + + + + +!============================= Bottom Hole ============================== + +imud=0 + do while (imud < Op_Mud_Forehead_X%Length()) + imud = imud + 1 + + if (imud> 1) then + Op_Mud_Backhead_X%Array(imud)= Op_Mud_Forehead_X%Array(imud-1) + Op_Mud_Backhead_section%Array(imud)= Op_Mud_Forehead_section%Array(imud-1) + endif + + DirectionCoef= (Xend_OpSection(Op_Mud_Backhead_section%Array(imud))-Xstart_OpSection(Op_Mud_Backhead_section%Array(imud))) & + / ABS(Xend_OpSection(Op_Mud_Backhead_section%Array(imud))-Xstart_OpSection(Op_Mud_Backhead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + + Op_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Xend_OpSection(Op_Mud_Backhead_section%Array(imud))- Op_Mud_Backhead_X%Array(imud))* & + Area_OpSectionFt(Op_Mud_Backhead_section%Array(imud)) !(ft^3) + Op_EmptyVolume_inBackheadLocation%Array(imud)= Op_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + + if ( Op_MudDischarged_Volume%Array(imud) <= Op_EmptyVolume_inBackheadLocation%Array(imud)) then + Op_Mud_Forehead_section%Array(imud)= Op_Mud_Backhead_section%Array(imud) + Op_Mud_Forehead_X%Array(imud)= Op_Mud_Backhead_X%Array(imud)+ DirectionCoef*(Op_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_OpSectionFt(Op_Mud_Backhead_section%Array(imud)) + ! 7.48051948 is for gal to ft^3 + + else + + isection= Op_Mud_Backhead_section%Array(imud)+1 + Op_RemainedVolume_in_LastSection%Array(imud)= Op_MudDischarged_Volume%Array(imud)- Op_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection > F_BottomHoleIntervalCounts) then ! last pipe section(well exit) + !if( imud==1) KickDeltaVinAnnulus= Op_RemainedVolume_in_LastSection%Array(imud) ! Kick enters Annulus space + Op_MudDischarged_Volume%Array(imud)= Op_MudDischarged_Volume%Array(imud)- Op_RemainedVolume_in_LastSection%Array(imud) + Op_Mud_Forehead_X%Array(imud)= Xend_OpSection(F_BottomHoleIntervalCounts) + Op_Mud_Forehead_section%Array(imud)= F_BottomHoleIntervalCounts + + if (Op_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the well + call Op_MudDischarged_Volume%Remove (imud) + call Op_Mud_Backhead_X%Remove (imud) + call Op_Mud_Backhead_section%Remove (imud) + call Op_Mud_Forehead_X%Remove (imud) + call Op_Mud_Forehead_section%Remove (imud) + call Op_Density%Remove (imud) + call Op_RemainedVolume_in_LastSection%Remove (imud) + call Op_EmptyVolume_inBackheadLocation%Remove (imud) + call Op_MudOrKick%Remove (imud) + + endif + + exit + endif + + xx= Op_RemainedVolume_in_LastSection%Array(imud)/ OpSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + Op_Mud_Forehead_section%Array(imud)= isection + Op_Mud_Forehead_X%Array(imud)= (xx * (Xend_OpSection(isection)- Xstart_OpSection(isection)))+ Xstart_OpSection(isection) + exit + else + Op_RemainedVolume_in_LastSection%Array(imud)= Op_RemainedVolume_in_LastSection%Array(imud)- OpSection_VolumeCapacity(isection) + isection= isection+ 1 + + endif + + enddo + + endif + + enddo + + + +!========================Bottom Hole END================= + ! write(*,*) 'after sorting==' + !!! + ! do imud=1, Op_MudDischarged_Volume%Length() + ! write(*,*) 'Op:', imud, Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) ,Op_MudOrKick%Array(imud) + ! enddo + ! + ! do imud=1, Ann_MudDischarged_Volume%Length() + ! write(*,*) 'Ann:', imud, Ann_MudDischarged_Volume%Array(imud), Ann_Density%Array(imud) ,Ann_MudOrKick%Array(imud) + ! enddo + !!! + !! write(*,*) 'Ann cap=' , sum(PipeSection_VolumeCapacity(F_StringIntervalCounts+1:NoPipeSections)) + !! write(*,*) 'Ann mud sum vol=' , sum(Ann_MudDischarged_Volume%Array(:)) + !!! + !!! + !write(*,*) '==after sorting' + +!========================================================= + + + total_injected = total_injected + MudVolume_InjectedFromAnn + + if (ChokePanelStrokeResetSwitch == 1) then + total_injected= 0. + endif + !write(*,*) ' MudVolume_InjectedFromAnn =' , MudVolume_InjectedFromAnn + + !write(*,*) ' total injected-tripout =' , total_injected + !write(*,*) ' injected-tripout =' , MudVolume_InjectedFromAnn + + + + + + + + end subroutine TripOut_and_Pump + + + diff --git a/Equipments/MudSystem/Utube1_and_Trip_In.f90 b/Equipments/MudSystem/Utube1_and_Trip_In.f90 new file mode 100644 index 0000000..f01639d --- /dev/null +++ b/Equipments/MudSystem/Utube1_and_Trip_In.f90 @@ -0,0 +1,532 @@ +SUBROUTINE Utube1_and_TripIn ! is called in subroutine CirculationCodeSelect string to annulus + + Use UTUBEVARS + Use GeoElements_FluidModule + USE CMudPropertiesVariables + USE MudSystemVARIABLES + USE Pump_VARIABLES + USE sROP_Variables + use CDrillWatchVariables + use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + Use CShoeVariables + Use CUnityOutputs + + implicit none + + write(*,*) 'Utube1 code' +!===========================================================WELL============================================================ +!===========================================================WELL============================================================ + UtubeMode1Activated= .true. + !write(*,*) 'QUTubeInput=' , QUTubeInput + !Qinput=5000. + StringFlowRate= QUTubeInput ! (gpm) + AnnulusFlowRate= QUTubeInput + StringFlowRateFinal= StringFlowRate + AnnulusFlowRateFinal= AnnulusFlowRate +!=========================================== + + if (FirstSetUtube1==0) then + ! call St_MudDischarged_Volume%AddToFirst (REAL(sum(F_Interval(1:F_StringIntervalCounts)%Volume))) !startup initial + ! call St_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(1)) + ! call St_Mud_Backhead_section%AddToFirst (1) + ! call St_Mud_Forehead_X%AddToFirst (Xend_PipeSection(F_StringIntervalCounts)) + ! call St_Mud_Forehead_section%AddToFirst (F_StringIntervalCounts) + ! call St_Density%AddToFirst (REAL(ActiveDensity)) ! initial(ppg) + ! call St_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + ! call St_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + ! + ! call Ann_MudDischarged_Volume%AddToFirst (REAL(sum(F_Interval((F_StringIntervalCounts+F_BottomHoleIntervalCounts+1):F_IntervalsTotalCounts)%Volume))) !startup initial + ! call Ann_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) + ! call Ann_Mud_Backhead_section%AddToFirst (F_StringIntervalCounts+1) + ! call Ann_Mud_Forehead_X%AddToFirst (Xend_PipeSection(NoPipeSections)) + ! call Ann_Mud_Forehead_section%AddToFirst (NoPipeSections) + ! call Ann_Density%AddToFirst (REAL(ActiveDensity)) ! initial(ppg) + ! call Ann_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + ! call Ann_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + !Hz_Density%Array(:)= 0.0 !commented + !Hz_MudOrKick%Array(:)= 104 !commented + + Hz_Density_Utube= 0.0 + Hz_MudOrKick_Utube= 104 + + FirstSetUtube1= 1 + endif + + + + +!========================Horizontal PIPE ENTRANCE================= + + !if (SuctionDensity_Old >= (ActiveDensity+0.05) .or. SuctionDensity_Old <= (ActiveDensity-0.05)) then ! new mud is pumped + ! !ImudCount= ImudCount+1 + ! !SuctionMud= ImudCount + ! call Hz_Density%AddToFirst (REAL(ActiveDensity)) !ActiveDensity : badan in moteghayer bayad avaz beshe + ! call Hz_MudDischarged_Volume%AddToFirst (0.0d0) + ! call Hz_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(1)) + ! call Hz_Mud_Forehead_section%AddToFirst (1) + ! call Hz_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(1)) + ! call Hz_Mud_Backhead_section%AddToFirst (1) + ! call Hz_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + ! call Hz_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + ! call Hz_MudOrKick%AddToFirst (0) + ! + ! SuctionDensity_Old= ActiveDensity + !endif + +!========================Horizontal PIPE STRING================= + + !commented + +! Hz_MudDischarged_Volume%Array(1)= Hz_MudDischarged_Volume%Array(1)+ ((StringFlowRate/60.)*DeltaT_Mudline) !(gal) +! +!imud=0 +! do while (imud < Hz_Mud_Forehead_X%Length()) +! imud = imud + 1 +! +! if (imud> 1) then +! Hz_Mud_Backhead_X%Array(imud)= Hz_Mud_Forehead_X%Array(imud-1) +! Hz_Mud_Backhead_section%Array(imud)= Hz_Mud_Forehead_section%Array(imud-1) +! endif +! +! +! DirectionCoef= (Xend_PipeSection(Hz_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(Hz_Mud_Backhead_section%Array(imud))) & +! / ABS(Xend_PipeSection(Hz_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(Hz_Mud_Backhead_section%Array(imud))) +! ! +1 for string , -1 for annulus +! +! +! Hz_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Xend_PipeSection(Hz_Mud_Backhead_section%Array(imud))- Hz_Mud_Backhead_X%Array(imud))* & +! Area_PipeSectionFt(Hz_Mud_Backhead_section%Array(imud)) !(ft^3) +! Hz_EmptyVolume_inBackheadLocation%Array(imud)= Hz_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948 ! ft^3 to gal +! +! +! if ( Hz_MudDischarged_Volume%Array(imud) <= Hz_EmptyVolume_inBackheadLocation%Array(imud)) then +! Hz_Mud_Forehead_section%Array(imud)= Hz_Mud_Backhead_section%Array(imud) +! Hz_Mud_Forehead_X%Array(imud)= Hz_Mud_Backhead_X%Array(imud)+ DirectionCoef*(Hz_MudDischarged_Volume%Array(imud)/7.48051948)/Area_PipeSectionFt(Hz_Mud_Backhead_section%Array(imud)) +! ! 7.48 is for gal to ft^3 +! else +! +! isection= Hz_Mud_Backhead_section%Array(imud)+1 +! Hz_RemainedVolume_in_LastSection%Array(imud)= Hz_MudDischarged_Volume%Array(imud)- Hz_EmptyVolume_inBackheadLocation%Array(imud) +! +! do +! if (isection > 1) then ! (horizontal pipe exit) +! Hz_MudDischarged_Volume%Array(imud)= Hz_MudDischarged_Volume%Array(imud)- Hz_RemainedVolume_in_LastSection%Array(imud) +! Hz_Mud_Forehead_X%Array(imud)= Xend_PipeSection(1) +! Hz_Mud_Forehead_section%Array(imud)= 1 +! if (Hz_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the string +! call Hz_MudDischarged_Volume%Remove (imud) +! call Hz_Mud_Backhead_X%Remove (imud) +! call Hz_Mud_Backhead_section%Remove (imud) +! call Hz_Mud_Forehead_X%Remove (imud) +! call Hz_Mud_Forehead_section%Remove (imud) +! call Hz_Density%Remove (imud) +! call Hz_RemainedVolume_in_LastSection%Remove (imud) +! call Hz_EmptyVolume_inBackheadLocation%Remove (imud) +! call Hz_MudOrKick%Remove (imud) +! +! endif +! exit +! endif +! +! xx= Hz_RemainedVolume_in_LastSection%Array(imud)/ PipeSection_VolumeCapacity(isection) !(gal) +! +! if (xx<= 1.0) then +! Hz_Mud_Forehead_section%Array(imud)= isection +! Hz_Mud_Forehead_X%Array(imud)= (xx * (Xend_PipeSection(isection)- Xstart_PipeSection(isection)))+ Xstart_PipeSection(isection) +! exit +! else +! Hz_RemainedVolume_in_LastSection%Array(imud)= Hz_RemainedVolume_in_LastSection%Array(imud)- PipeSection_VolumeCapacity(isection) +! isection= isection+ 1 +! +! +! endif +! +! enddo +! +! endif +! +! enddo + + !commented + +!========================Horizontal PIPE END================= + +!========================STRING ENTRANCE================= + !write(*,*) 'a) St_Density%Length()=' , St_Density%Length() + + if (ABS(St_Density%First() - Hz_Density_Utube) >= DensityMixTol) then ! new mud is pumped + call St_Density%AddToFirst (Hz_Density_Utube) + call St_MudDischarged_Volume%AddToFirst (0.0d0) + call St_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(2)) + call St_Mud_Forehead_section%AddToFirst (2) + call St_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(2)) + call St_Mud_Backhead_section%AddToFirst (2) + call St_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + call St_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + call St_MudOrKick%AddToFirst (Hz_MudOrKick_Utube) ! Hz_MudOrKick%Last() = 104 + + !StringDensity_Old= Hz_Density_Utube + endif + !write(*,*) 'b) St_Density%Length()=' , St_Density%Length() + !write(*,*) 'b) St_Density%Array(1)=' , St_Density%Array(1) + !write(*,*) 'b) St_MudOrKick%Array(1)=' , St_MudOrKick%Array(1) + + +!========================STRING================= + !WRITE (*,*) 'Utube1 StringFlowRate', StringFlowRate + St_MudDischarged_Volume%Array(1)= St_MudDischarged_Volume%Array(1)+ ((StringFlowRate/60.d0)*DeltaT_Mudline) !(gal) + +imud=0 + do while (imud < St_Mud_Forehead_X%Length()) + imud = imud + 1 + + + if (imud> 1) then + St_Mud_Backhead_X%Array(imud)= St_Mud_Forehead_X%Array(imud-1) + St_Mud_Backhead_section%Array(imud)= St_Mud_Forehead_section%Array(imud-1) + endif + + DirectionCoef= (Xend_PipeSection(St_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(St_Mud_Backhead_section%Array(imud))) & + / ABS(Xend_PipeSection(St_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(St_Mud_Backhead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + St_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Xend_PipeSection(St_Mud_Backhead_section%Array(imud))- St_Mud_Backhead_X%Array(imud))* & + Area_PipeSectionFt(St_Mud_Backhead_section%Array(imud)) !(ft^3) + St_EmptyVolume_inBackheadLocation%Array(imud)= St_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + if ( St_MudDischarged_Volume%Array(imud) <= St_EmptyVolume_inBackheadLocation%Array(imud)) then + St_Mud_Forehead_section%Array(imud)= St_Mud_Backhead_section%Array(imud) + St_Mud_Forehead_X%Array(imud)= St_Mud_Backhead_X%Array(imud)+ DirectionCoef*(St_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_PipeSectionFt(St_Mud_Backhead_section%Array(imud)) + ! 7.48 is for gal to ft^3 + else + + isection= St_Mud_Backhead_section%Array(imud)+1 + St_RemainedVolume_in_LastSection%Array(imud)= St_MudDischarged_Volume%Array(imud)- St_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection > F_StringIntervalCounts) then ! last pipe section(string exit) F_StringIntervalCounts includes Horizontal line + St_MudDischarged_Volume%Array(imud)= St_MudDischarged_Volume%Array(imud)- St_RemainedVolume_in_LastSection%Array(imud) + St_Mud_Forehead_X%Array(imud)= Xend_PipeSection(F_StringIntervalCounts) + St_Mud_Forehead_section%Array(imud)= F_StringIntervalCounts + + if (St_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the string + call RemoveStringMudArrays(imud) + endif + + exit + endif + + xx= St_RemainedVolume_in_LastSection%Array(imud)/ PipeSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + St_Mud_Forehead_section%Array(imud)= isection + St_Mud_Forehead_X%Array(imud)= (xx * (Xend_PipeSection(isection)- Xstart_PipeSection(isection)))+ Xstart_PipeSection(isection) + exit + else + St_RemainedVolume_in_LastSection%Array(imud)= St_RemainedVolume_in_LastSection%Array(imud)- PipeSection_VolumeCapacity(isection) + isection= isection+ 1 + + + endif + + enddo + + endif + + enddo +!========================STRING END================= + +!========================== tripping in for OP remove =============================== + + !if (DeltaVolumeOp>0. .and. DeltaVolumeOp< Op_MudDischarged_Volume%Last()) then + ! Op_MudDischarged_Volume%Array(Op_MudDischarged_Volume%Length())= Op_MudDischarged_Volume%Array(Op_MudDischarged_Volume%Length()) - DeltaVolumeOp + !else + ! Op_MudDischarged_Volume%Array(Op_MudDischarged_Volume%Length()-1)= Op_MudDischarged_Volume%Array(Op_MudDischarged_Volume%Length()-1) - (DeltaVolumeOp-Op_MudDischarged_Volume%Last()) + ! + ! call Op_MudDischarged_Volume%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_Mud_Backhead_X%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_Mud_Backhead_section%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_Mud_Forehead_X%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_Mud_Forehead_section%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_Density%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_RemainedVolume_in_LastSection%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_EmptyVolume_inBackheadLocation%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_MudOrKick%Remove (Op_MudDischarged_Volume%Length()) + !endif + ! + +!============================= Bottom Hole ============================== + + !Op_MudDischarged_Volume%Array(1)= Op_MudDischarged_Volume%Array(1)+ ((GasKickPumpFlowRate/60.)*DeltaT_Mudline) !(gal) due to KickFlux +imud=0 + do while (imud < Op_Mud_Forehead_X%Length()) + imud = imud + 1 + + if (imud> 1) then + Op_Mud_Backhead_X%Array(imud)= Op_Mud_Forehead_X%Array(imud-1) + Op_Mud_Backhead_section%Array(imud)= Op_Mud_Forehead_section%Array(imud-1) + endif + + + DirectionCoef= (Xend_OpSection(Op_Mud_Backhead_section%Array(imud))-Xstart_OpSection(Op_Mud_Backhead_section%Array(imud))) & + / ABS(Xend_OpSection(Op_Mud_Backhead_section%Array(imud))-Xstart_OpSection(Op_Mud_Backhead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + + Op_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Xend_OpSection(Op_Mud_Backhead_section%Array(imud))- Op_Mud_Backhead_X%Array(imud))* & + Area_OpSectionFt(Op_Mud_Backhead_section%Array(imud)) !(ft^3) + Op_EmptyVolume_inBackheadLocation%Array(imud)= Op_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + + if ( Op_MudDischarged_Volume%Array(imud) <= Op_EmptyVolume_inBackheadLocation%Array(imud)) then + Op_Mud_Forehead_section%Array(imud)= Op_Mud_Backhead_section%Array(imud) + Op_Mud_Forehead_X%Array(imud)= Op_Mud_Backhead_X%Array(imud)+ DirectionCoef*(Op_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_OpSectionFt(Op_Mud_Backhead_section%Array(imud)) + ! 7.48 is for gal to ft^3 + + else + + isection= Op_Mud_Backhead_section%Array(imud)+1 + Op_RemainedVolume_in_LastSection%Array(imud)= Op_MudDischarged_Volume%Array(imud)- Op_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection > F_BottomHoleIntervalCounts) then ! last pipe section(well exit) + if( imud==1) KickDeltaVinAnnulus= Op_RemainedVolume_in_LastSection%Array(imud) ! Kick enters Annulus space + Op_MudDischarged_Volume%Array(imud)= Op_MudDischarged_Volume%Array(imud)- Op_RemainedVolume_in_LastSection%Array(imud) + Op_Mud_Forehead_X%Array(imud)= Xend_OpSection(F_BottomHoleIntervalCounts) + Op_Mud_Forehead_section%Array(imud)= F_BottomHoleIntervalCounts + + if (Op_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the well + call RemoveOpMudArrays(imud) + endif + + exit + endif + + xx= Op_RemainedVolume_in_LastSection%Array(imud)/ OpSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + Op_Mud_Forehead_section%Array(imud)= isection + Op_Mud_Forehead_X%Array(imud)= (xx * (Xend_OpSection(isection)- Xstart_OpSection(isection)))+ Xstart_OpSection(isection) + exit + else + Op_RemainedVolume_in_LastSection%Array(imud)= Op_RemainedVolume_in_LastSection%Array(imud)- OpSection_VolumeCapacity(isection) + isection= isection+ 1 + + endif + + enddo + + endif + + + if (Op_Mud_Forehead_X%Array(imud)== Xend_OpSection(F_BottomHoleIntervalCounts)) then + totalLength = Op_MudDischarged_Volume%Length() + do while(imud < totalLength) + + !imud = imud + 1 + call RemoveOpMudArrays(totalLength) + totalLength = totalLength - 1 + + + enddo + + exit ! + + endif + + !WRITE(*,*) imud,'Op_MudDischarged_Volume%Array(imud)' , Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) + + + + enddo + + + !write(*,*) 'Op_Mud_Forehead_X%Length()' , Op_Mud_Forehead_X%Length() + ! + ! WRITE(*,*) 'Xend_PipeSection(F_StringIntervalCounts)' , Xend_PipeSection(F_StringIntervalCounts) + ! WRITE(*,*) 'Op_Mud_Backhead_X%Array(1)' , Op_Mud_Backhead_X%Array(1) + ! WRITE(*,*) 'Op_Mud_Forehead_X%Array(1)' , Op_Mud_Forehead_X%Array(1) + ! WRITE(*,*) 'Op_Mud_Backhead_X%Array(2)' , Op_Mud_Backhead_X%Array(2) + ! WRITE(*,*) 'Op_Mud_Forehead_X%Array(2)' , Op_Mud_Forehead_X%Array(2) +!========================Bottom Hole END================= + + if (iLoc == 1) then + MudSection= F_StringIntervalCounts+1 + BackheadX= Xstart_PipeSection(F_StringIntervalCounts+1) + elseif (iLoc == 2) then + MudSection= Kick_Forehead_section + BackheadX= Kick_Forehead_X + endif + +!========================ANNULUS ENTRANCE==================== + + !write(*,*) 'iloc=====' , iLoc + if ((ABS(AnnulusSuctionDensity_Old - St_Density%Last()) >= DensityMixTol) .OR. (DeltaVolumeOp == 0.0 .and. ABS(Ann_Density%Array(iLoc)-St_Density%Last())>=DensityMixTol .and. AnnulusFlowRate/=0.0d0) ) then ! new mud is pumped + call Ann_Density%AddTo (iLoc,St_Density%Last()) + call Ann_MudDischarged_Volume%AddTo (iLoc,0.0d0) + call Ann_Mud_Forehead_X%AddTo (iLoc,BackheadX) + call Ann_Mud_Forehead_section%AddTo (iLoc,MudSection) + call Ann_Mud_Backhead_X%AddTo (iLoc,BackheadX) + call Ann_Mud_Backhead_section%AddTo (iLoc,MudSection) + call Ann_RemainedVolume_in_LastSection%AddTo (iLoc,0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddTo (iLoc,0.0d0) + call Ann_MudOrKick%AddTo (iLoc,0) + call Ann_CuttingMud%AddTo (iloc,0) + + AnnulusSuctionDensity_Old= St_Density%Last() + + MudIsChanged= .true. + endif + + Ann_MudDischarged_Volume%Array(iLoc)= Ann_MudDischarged_Volume%Array(iLoc)+ ((AnnulusFlowRate/60.0d0)*DeltaT_Mudline) !(gal) + +!========================Tripping In==================== + +!write(*,*) 'DeltaVolumeOp=' , DeltaVolumeOp + if (DeltaVolumeOp > 0.0 .and. MudIsChanged== .false.) then !.and. DrillingMode== .false.) then ! trip in mode(loole paeen) + + !write(*,*) 'Tripping In' + + NewDensity= (St_Density%Last()*((AnnulusFlowRate/60.)*DeltaT_Mudline)+Op_Density%Last()*DeltaVolumeOp)/(((AnnulusFlowRate/60.0d0)*DeltaT_Mudline)+DeltaVolumeOp) + NewVolume= ((AnnulusFlowRate/60.)*DeltaT_Mudline)+DeltaVolumeOp + + !write(*,*) 'Ann_MudDischarged_Volume%Array(1)=', Ann_MudDischarged_Volume%Array(1), 'NewVolume=', NewVolume + + if (abs(Ann_Density%Array(iLoc)-NewDensity)< DensityMixTol) then ! 1-Pockets are Merged - (ROP is 0) + Ann_Density%Array(iLoc)= (Ann_Density%Array(iLoc)*Ann_MudDischarged_Volume%Array(iLoc)+NewDensity*NewVolume)/(Ann_MudDischarged_Volume%Array(iLoc)+NewVolume) + Ann_MudDischarged_Volume%Array(iLoc)= Ann_MudDischarged_Volume%Array(iLoc)+DeltaVolumeOp + Ann_Mud_Forehead_X%Array(iLoc)= BackheadX + Ann_Mud_Forehead_section%Array(iLoc)= MudSection + Ann_Mud_Backhead_X%Array(iLoc)= BackheadX + Ann_Mud_Backhead_section%Array(iLoc)= MudSection + Ann_RemainedVolume_in_LastSection%Array(iLoc)= (0.0d0) + Ann_EmptyVolume_inBackheadLocation%Array(iLoc)= (0.0d0) + else ! 2-Merging conditions are not meeted, so new pocket + call Ann_Density%AddTo (iLoc,NewDensity) + call Ann_MudDischarged_Volume%AddTo (iLoc,NewVolume) + call Ann_Mud_Forehead_X%AddTo (iLoc,BackheadX) + call Ann_Mud_Forehead_section%AddTo (iLoc,MudSection) + call Ann_Mud_Backhead_X%AddTo (iLoc,BackheadX) + call Ann_Mud_Backhead_section%AddTo (iLoc,MudSection) + call Ann_RemainedVolume_in_LastSection%AddTo (iLoc,0.0d0) + call Ann_EmptyVolume_inBackheadLocation%AddTo (iLoc,0.0d0) + call Ann_MudOrKick%AddTo (iLoc,0) + call Ann_CuttingMud%AddTo (iLoc,0) + + endif + + + elseif (DeltaVolumeOp > 0.0 .and. MudIsChanged== .true. .and. Rate_of_Penetration==0.) then + Ann_Density%Array(iLoc)= NewDensity + Ann_MudDischarged_Volume%Array(iLoc)= NewVolume + Ann_Mud_Forehead_X%Array(iLoc)= BackheadX + Ann_Mud_Forehead_section%Array(iLoc)= MudSection + Ann_Mud_Backhead_X%Array(iLoc)= BackheadX + Ann_Mud_Backhead_section%Array(iLoc)= MudSection + Ann_RemainedVolume_in_LastSection%Array(iLoc)= (0.0d0) + Ann_EmptyVolume_inBackheadLocation%Array(iLoc)= (0.0d0) + endif + + +!========================Tripping In - End==================== + + +!======================== ANNULUS ==================== + + MudIsChanged= .false. + +imud= 0 + + do while (imud < Ann_Mud_Forehead_X%Length()) + imud = imud + 1 + + if (imud> 1) then + Ann_Mud_Backhead_X%Array(imud)= Ann_Mud_Forehead_X%Array(imud-1) + Ann_Mud_Backhead_section%Array(imud)= Ann_Mud_Forehead_section%Array(imud-1) + endif + + +! <<< Fracture Shoe Lost + IF ( ShoeLost .and. LostInTripOutIsDone== .false. .and. ShoeDepth < Ann_Mud_Backhead_X%Array(imud) .and. ShoeDepth >= Ann_Mud_Forehead_X%Array(imud) ) then + !write(*,*) 'ShoeLost imud,AnnVolume(imud), VolumeLost:' , imud,Ann_MudDischarged_Volume%Array(imud), (( Qlost/60.0d0)*DeltaT_Mudline) + Ann_MudDischarged_Volume%Array(imud)= Ann_MudDischarged_Volume%Array(imud)-((Qlost/60.0d0)*DeltaT_Mudline) !(gal) + if (Ann_MudDischarged_Volume%Array(imud) < 0.0) then + !write(*,*) 'mud is removed by shoe lost, imud=' , imud + call RemoveAnnulusMudArrays(imud) + imud= imud-1 + cycle + endif + ENDIF +! Fracture Shoe Lost >>> + + + + + + + + + DirectionCoef= (Xend_PipeSection(Ann_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(Ann_Mud_Backhead_section%Array(imud))) & + / ABS(Xend_PipeSection(Ann_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(Ann_Mud_Backhead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + Ann_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Xend_PipeSection(Ann_Mud_Backhead_section%Array(imud))- Ann_Mud_Backhead_X%Array(imud))* & + Area_PipeSectionFt(Ann_Mud_Backhead_section%Array(imud)) !(ft^3) + Ann_EmptyVolume_inBackheadLocation%Array(imud)= Ann_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + + if ( Ann_MudDischarged_Volume%Array(imud) <= Ann_EmptyVolume_inBackheadLocation%Array(imud)) then + Ann_Mud_Forehead_section%Array(imud)= Ann_Mud_Backhead_section%Array(imud) + Ann_Mud_Forehead_X%Array(imud)= Ann_Mud_Backhead_X%Array(imud)+ DirectionCoef*(Ann_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_PipeSectionFt(Ann_Mud_Backhead_section%Array(imud)) + ! 7.48 is for gal to ft^3 + + else + + isection= Ann_Mud_Backhead_section%Array(imud)+1 + Ann_RemainedVolume_in_LastSection%Array(imud)= Ann_MudDischarged_Volume%Array(imud)- Ann_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection > NoPipeSections) then ! last pipe section(well exit) + Ann_MudDischarged_Volume%Array(imud)= Ann_MudDischarged_Volume%Array(imud)- Ann_RemainedVolume_in_LastSection%Array(imud) + Ann_Mud_Forehead_X%Array(imud)= Xend_PipeSection(NoPipeSections) + Ann_Mud_Forehead_section%Array(imud)= NoPipeSections + + if (Ann_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the well + call RemoveAnnulusMudArrays(imud) + endif + + exit + endif + + xx= Ann_RemainedVolume_in_LastSection%Array(imud)/ PipeSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + Ann_Mud_Forehead_section%Array(imud)= isection + Ann_Mud_Forehead_X%Array(imud)= (xx * (Xend_PipeSection(isection)- Xstart_PipeSection(isection)))+ Xstart_PipeSection(isection) + exit + else + Ann_RemainedVolume_in_LastSection%Array(imud)= Ann_RemainedVolume_in_LastSection%Array(imud)- PipeSection_VolumeCapacity(isection) + isection= isection+ 1 + + endif + + enddo + + endif + + enddo +!========================ANNULUS END================= + + !if ( WellisNOTFull == .false. ) then + ! write(*,*) 'AnnulusFlowRate==' , AnnulusFlowRate + ! call Set_FlowRate(real(100.*min(AnnulusFlowRate,PedalMeter)/(PedalMeter/10.), 8)) + ! + ! + !endif + + + +end subroutine Utube1_and_TripIn \ No newline at end of file diff --git a/Equipments/MudSystem/Utube2_and_Trip_In.f90 b/Equipments/MudSystem/Utube2_and_Trip_In.f90 new file mode 100644 index 0000000..2ad45a3 --- /dev/null +++ b/Equipments/MudSystem/Utube2_and_Trip_In.f90 @@ -0,0 +1,517 @@ +SUBROUTINE Utube2_and_TripIn ! is called in subroutine CirculationCodeSelect annulus to string + + Use UTUBEVARS + Use GeoElements_FluidModule + USE CMudPropertiesVariables + USE MudSystemVARIABLES + USE Pump_VARIABLES + use CDrillWatchVariables + use CTanksVariables, TripTankVolume2 => TripTankVolume, TripTankDensity2 => TripTankDensity + Use CShoeVariables + + implicit none + + write(*,*) 'Utube2 code' + +!===========================================================WELL============================================================ +!===========================================================WELL============================================================ + + UtubeMode2Activated= .true. + write(*,*) 'QUtubeOutput=' , QUtubeOutput + !QUTubeInput=5000. + StringFlowRate= QUtubeOutput ! (gpm) + AnnulusFlowRate= QUtubeOutput + StringFlowRateFinal= StringFlowRate + AnnulusFlowRateFinal= AnnulusFlowRate +!=========================================== + + if (FirstSetUtube2==0) then + ! call St_MudDischarged_Volume%AddToFirst (REAL(sum(F_Interval(1:F_StringIntervalCounts)%Volume))) !startup initial + ! call St_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(1)) + ! call St_Mud_Backhead_section%AddToFirst (1) + ! call St_Mud_Forehead_X%AddToFirst (Xend_PipeSection(F_StringIntervalCounts)) + ! call St_Mud_Forehead_section%AddToFirst (F_StringIntervalCounts) + ! call St_Density%AddToFirst (REAL(ActiveDensity)) ! initial(ppg) + ! call St_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + ! call St_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + ! + ! call Ann_MudDischarged_Volume%AddToFirst (REAL(sum(F_Interval((F_StringIntervalCounts+F_BottomHoleIntervalCounts+1):F_IntervalsTotalCounts)%Volume))) !startup initial + ! call Ann_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(F_StringIntervalCounts+1)) + ! call Ann_Mud_Backhead_section%AddToFirst (F_StringIntervalCounts+1) + ! call Ann_Mud_Forehead_X%AddToFirst (Xend_PipeSection(NoPipeSections)) + ! call Ann_Mud_Forehead_section%AddToFirst (NoPipeSections) + ! call Ann_Density%AddToFirst (REAL(ActiveDensity)) ! initial(ppg) + ! call Ann_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + ! call Ann_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + !Hz_Density%Array(:)= 0.0 + !Hz_MudOrKick%Array(:)= 104 + + Hz_Density_Utube= 0.0 + Hz_MudOrKick_Utube= 104 + + FirstSetUtube2= 1 + endif + + + + +!========================Horizontal PIPE ENTRANCE================= + + !if (SuctionDensity_Old >= (ActiveDensity+0.05) .or. SuctionDensity_Old <= (ActiveDensity-0.05)) then ! new mud is pumped + ! !ImudCount= ImudCount+1 + ! !SuctionMud= ImudCount + ! call Hz_Density%AddToFirst (REAL(ActiveDensity)) !ActiveDensity : badan in moteghayer bayad avaz beshe + ! call Hz_MudDischarged_Volume%AddToFirst (0.0d0) + ! call Hz_Mud_Forehead_X%AddToFirst (Xstart_PipeSection(1)) + ! call Hz_Mud_Forehead_section%AddToFirst (1) + ! call Hz_Mud_Backhead_X%AddToFirst (Xstart_PipeSection(1)) + ! call Hz_Mud_Backhead_section%AddToFirst (1) + ! call Hz_RemainedVolume_in_LastSection%AddToFirst (0.0d0) + ! call Hz_EmptyVolume_inBackheadLocation%AddToFirst (0.0d0) + ! call Hz_MudOrKick%AddToFirst (0) + + ! deltaV= 0. + ! + ! SuctionDensity_Old= ActiveDensity + !endif + +!========================Horizontal PIPE STRING================= + + !commented + +! Hz_MudDischarged_Volume%Array(1)= Hz_MudDischarged_Volume%Array(1)+ ((StringFlowRate/60.)*DeltaT_Mudline) !(gal) +! +!imud=0 +! do while (imud < Hz_Mud_Forehead_X%Length()) +! imud = imud + 1 +! +! if (imud> 1) then +! Hz_Mud_Backhead_X%Array(imud)= Hz_Mud_Forehead_X%Array(imud-1) +! Hz_Mud_Backhead_section%Array(imud)= Hz_Mud_Forehead_section%Array(imud-1) +! endif +! +! +! DirectionCoef= (Xend_PipeSection(Hz_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(Hz_Mud_Backhead_section%Array(imud))) & +! / ABS(Xend_PipeSection(Hz_Mud_Backhead_section%Array(imud))-Xstart_PipeSection(Hz_Mud_Backhead_section%Array(imud))) +! ! +1 for string , -1 for annulus +! +! +! Hz_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Xend_PipeSection(Hz_Mud_Backhead_section%Array(imud))- Hz_Mud_Backhead_X%Array(imud))* & +! Area_PipeSectionFt(Hz_Mud_Backhead_section%Array(imud)) !(ft^3) +! Hz_EmptyVolume_inBackheadLocation%Array(imud)= Hz_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948 ! ft^3 to gal +! +! +! if ( Hz_MudDischarged_Volume%Array(imud) <= Hz_EmptyVolume_inBackheadLocation%Array(imud)) then +! Hz_Mud_Forehead_section%Array(imud)= Hz_Mud_Backhead_section%Array(imud) +! Hz_Mud_Forehead_X%Array(imud)= Hz_Mud_Backhead_X%Array(imud)+ DirectionCoef*(Hz_MudDischarged_Volume%Array(imud)/7.48051948)/Area_PipeSectionFt(Hz_Mud_Backhead_section%Array(imud)) +! ! 7.48051948 is for gal to ft^3 +! else +! +! isection= Hz_Mud_Backhead_section%Array(imud)+1 +! Hz_RemainedVolume_in_LastSection%Array(imud)= Hz_MudDischarged_Volume%Array(imud)- Hz_EmptyVolume_inBackheadLocation%Array(imud) +! +! do +! if (isection > 1) then ! (horizontal pipe exit) +! Hz_MudDischarged_Volume%Array(imud)= Hz_MudDischarged_Volume%Array(imud)- Hz_RemainedVolume_in_LastSection%Array(imud) +! Hz_Mud_Forehead_X%Array(imud)= Xend_PipeSection(1) +! Hz_Mud_Forehead_section%Array(imud)= 1 +! if (Hz_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the string +! call Hz_MudDischarged_Volume%Remove (imud) +! call Hz_Mud_Backhead_X%Remove (imud) +! call Hz_Mud_Backhead_section%Remove (imud) +! call Hz_Mud_Forehead_X%Remove (imud) +! call Hz_Mud_Forehead_section%Remove (imud) +! call Hz_Density%Remove (imud) +! call Hz_RemainedVolume_in_LastSection%Remove (imud) +! call Hz_EmptyVolume_inBackheadLocation%Remove (imud) +! call Hz_MudOrKick%Remove (imud) +! endif +! exit +! endif +! +! xx= Hz_RemainedVolume_in_LastSection%Array(imud)/ PipeSection_VolumeCapacity(isection) !(gal) +! +! if (xx<= 1.0) then +! Hz_Mud_Forehead_section%Array(imud)= isection +! Hz_Mud_Forehead_X%Array(imud)= (xx * (Xend_PipeSection(isection)- Xstart_PipeSection(isection)))+ Xstart_PipeSection(isection) +! exit +! else +! Hz_RemainedVolume_in_LastSection%Array(imud)= Hz_RemainedVolume_in_LastSection%Array(imud)- PipeSection_VolumeCapacity(isection) +! isection= isection+ 1 +! +! +! endif +! +! enddo +! +! endif +! +! enddo + + !commented + +!========================Horizontal PIPE END================= + +!========================ANNULUS ENTRANCE==================== + + if (ABS(AnnulusSuctionDensity_Old - Hz_Density_Utube) >= DensityMixTol ) then ! new mud is pumped + call Ann_Density%Add (Hz_Density_Utube) + call Ann_MudDischarged_Volume%Add (0.0d0) + call Ann_Mud_Forehead_X%Add (Xend_PipeSection(NoPipeSections)) + call Ann_Mud_Forehead_section%Add (NoPipeSections) + call Ann_Mud_Backhead_X%Add (Xstart_PipeSection(NoPipeSections)) + call Ann_Mud_Backhead_section%Add (NoPipeSections) + call Ann_RemainedVolume_in_LastSection%Add (0.0d0) + call Ann_EmptyVolume_inBackheadLocation%Add (0.0d0) + call Ann_MudOrKick%Add (Hz_MudOrKick_Utube) ! Hz_MudOrKick%Last() = 104 + call Ann_CuttingMud%Add (0) + + AnnulusSuctionDensity_Old= Hz_Density_Utube + endif + +!========================ANNULUS==================== + + Ann_MudDischarged_Volume%Array(Ann_MudDischarged_Volume%Length())= Ann_MudDischarged_Volume%Last()+ ((AnnulusFlowRate/60.)*DeltaT_Mudline) !(gal) + +imud= Ann_Mud_Forehead_X%Length() + 1 + + do while (imud > 1) + imud = imud - 1 + + if (imud< Ann_Mud_Forehead_X%Length()) then + Ann_Mud_Forehead_X%Array(imud)= Ann_Mud_Backhead_X%Array(imud+1) + Ann_Mud_Forehead_section%Array(imud)= Ann_Mud_Backhead_section%Array(imud+1) + endif + +! <<< Fracture Shoe Lost + IF ( ShoeLost .and. LostInTripOutIsDone== .false. .and. ShoeDepth < Ann_Mud_Backhead_X%Array(imud) .and. ShoeDepth >= Ann_Mud_Forehead_X%Array(imud) ) then + !write(*,*) 'ShoeLost imud,AnnVolume(imud), VolumeLost:' , imud,Ann_MudDischarged_Volume%Array(imud), (( Qlost/60.0d0)*DeltaT_Mudline) + Ann_MudDischarged_Volume%Array(imud)= Ann_MudDischarged_Volume%Array(imud)-((Qlost/60.0d0)*DeltaT_Mudline) !(gal) + if (Ann_MudDischarged_Volume%Array(imud) < 0.0) then + !write(*,*) 'mud is removed by shoe lost, imud=' , imud + call RemoveAnnulusMudArrays(imud) + imud= imud-1 + cycle + endif + ENDIF +! Fracture Shoe Lost >>> + + + DirectionCoef= (Xend_PipeSection(Ann_Mud_Forehead_section%Array(imud))-Xstart_PipeSection(Ann_Mud_Forehead_section%Array(imud))) & + / ABS(Xend_PipeSection(Ann_Mud_Forehead_section%Array(imud))-Xstart_PipeSection(Ann_Mud_Forehead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + Ann_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Ann_Mud_Forehead_X%Array(imud)- Xstart_PipeSection(Ann_Mud_Forehead_section%Array(imud)))* & + Area_PipeSectionFt(Ann_Mud_Forehead_section%Array(imud)) !(ft^3) + Ann_EmptyVolume_inBackheadLocation%Array(imud)= Ann_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + + if ( Ann_MudDischarged_Volume%Array(imud) <= Ann_EmptyVolume_inBackheadLocation%Array(imud)) then + Ann_Mud_Backhead_section%Array(imud)= Ann_Mud_Forehead_section%Array(imud) + Ann_Mud_Backhead_X%Array(imud)= Ann_Mud_Forehead_X%Array(imud)- DirectionCoef*(Ann_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_PipeSectionFt(Ann_Mud_Forehead_section%Array(imud)) + ! 7.48051948 is for gal to ft^3 + else + + isection= Ann_Mud_Forehead_section%Array(imud)-1 + Ann_RemainedVolume_in_LastSection%Array(imud)= Ann_MudDischarged_Volume%Array(imud)- Ann_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection < F_StringIntervalCounts+1) then ! last pipe section(well exit) F_StringIntervalCounts+1 is the first section in Annulus + Ann_MudDischarged_Volume%Array(imud)= Ann_MudDischarged_Volume%Array(imud)- Ann_RemainedVolume_in_LastSection%Array(imud) + Ann_Mud_Backhead_X%Array(imud)= Xstart_PipeSection(F_StringIntervalCounts+1) + Ann_Mud_Backhead_section%Array(imud)= F_StringIntervalCounts+1 + + if (Ann_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the well + call RemoveAnnulusMudArrays(imud) + endif + + exit + endif + + xx= Ann_RemainedVolume_in_LastSection%Array(imud)/ PipeSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + Ann_Mud_Backhead_section%Array(imud)= isection + Ann_Mud_Backhead_X%Array(imud)= (xx * (Xstart_PipeSection(isection)- Xend_PipeSection(isection)))+ Xend_PipeSection(isection) + exit + else + Ann_RemainedVolume_in_LastSection%Array(imud)= Ann_RemainedVolume_in_LastSection%Array(imud)- PipeSection_VolumeCapacity(isection) + isection= isection- 1 + + + endif + + enddo + + endif + + enddo +!========================ANNULUS END================= + +!========================== tripping in for OP remove =============================== + + !if (DeltaVolumeOp>0. .and. DeltaVolumeOp< Op_MudDischarged_Volume%Last()) then + ! Op_MudDischarged_Volume%Array(Op_MudDischarged_Volume%Length())= Op_MudDischarged_Volume%Array(Op_MudDischarged_Volume%Length()) - DeltaVolumeOp + !else + ! Op_MudDischarged_Volume%Array(Op_MudDischarged_Volume%Length()-1)= Op_MudDischarged_Volume%Array(Op_MudDischarged_Volume%Length()-1) - (DeltaVolumeOp-Op_MudDischarged_Volume%Last()) + ! + ! call Op_MudDischarged_Volume%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_Mud_Backhead_X%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_Mud_Backhead_section%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_Mud_Forehead_X%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_Mud_Forehead_section%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_Density%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_RemainedVolume_in_LastSection%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_EmptyVolume_inBackheadLocation%Remove (Op_MudDischarged_Volume%Length()) + ! call Op_MudOrKick%Remove (Op_MudDischarged_Volume%Length()) + !endif + ! + +!============================= Bottom Hole ============================== + + !Op_MudDischarged_Volume%Array(1)= Op_MudDischarged_Volume%Array(1)+ ((GasKickPumpFlowRate/60.)*DeltaT_Mudline) !(gal) due to KickFlux +imud=0 + do while (imud < Op_Mud_Forehead_X%Length()) + imud = imud + 1 + + if (imud> 1) then + Op_Mud_Backhead_X%Array(imud)= Op_Mud_Forehead_X%Array(imud-1) + Op_Mud_Backhead_section%Array(imud)= Op_Mud_Forehead_section%Array(imud-1) + endif + + + DirectionCoef= (Xend_OpSection(Op_Mud_Backhead_section%Array(imud))-Xstart_OpSection(Op_Mud_Backhead_section%Array(imud))) & + / ABS(Xend_OpSection(Op_Mud_Backhead_section%Array(imud))-Xstart_OpSection(Op_Mud_Backhead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + + Op_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (Xend_OpSection(Op_Mud_Backhead_section%Array(imud))- Op_Mud_Backhead_X%Array(imud))* & + Area_OpSectionFt(Op_Mud_Backhead_section%Array(imud)) !(ft^3) + Op_EmptyVolume_inBackheadLocation%Array(imud)= Op_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + + if ( Op_MudDischarged_Volume%Array(imud) <= Op_EmptyVolume_inBackheadLocation%Array(imud)) then + Op_Mud_Forehead_section%Array(imud)= Op_Mud_Backhead_section%Array(imud) + Op_Mud_Forehead_X%Array(imud)= Op_Mud_Backhead_X%Array(imud)+ DirectionCoef*(Op_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_OpSectionFt(Op_Mud_Backhead_section%Array(imud)) + ! 7.48051948 is for gal to ft^3 + + else + + isection= Op_Mud_Backhead_section%Array(imud)+1 + Op_RemainedVolume_in_LastSection%Array(imud)= Op_MudDischarged_Volume%Array(imud)- Op_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection > F_BottomHoleIntervalCounts) then ! last pipe section(well exit) + if( imud==1) KickDeltaVinAnnulus= Op_RemainedVolume_in_LastSection%Array(imud) ! Kick enters Annulus space + Op_MudDischarged_Volume%Array(imud)= Op_MudDischarged_Volume%Array(imud)- Op_RemainedVolume_in_LastSection%Array(imud) + Op_Mud_Forehead_X%Array(imud)= Xend_OpSection(F_BottomHoleIntervalCounts) + Op_Mud_Forehead_section%Array(imud)= F_BottomHoleIntervalCounts + + if (Op_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the well + call RemoveOpMudArrays(imud) + endif + + exit + endif + + xx= Op_RemainedVolume_in_LastSection%Array(imud)/ OpSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + Op_Mud_Forehead_section%Array(imud)= isection + Op_Mud_Forehead_X%Array(imud)= (xx * (Xend_OpSection(isection)- Xstart_OpSection(isection)))+ Xstart_OpSection(isection) + exit + else + Op_RemainedVolume_in_LastSection%Array(imud)= Op_RemainedVolume_in_LastSection%Array(imud)- OpSection_VolumeCapacity(isection) + isection= isection+ 1 + + endif + + enddo + + endif + + if (Op_Mud_Forehead_X%Array(imud)== Xend_OpSection(F_BottomHoleIntervalCounts)) then + totalLength = Op_MudDischarged_Volume%Length() + do while(imud < totalLength) + + !imud = imud + 1 + call RemoveOpMudArrays(totalLength) + totalLength = totalLength - 1 + + + enddo + + exit ! + + endif + + !WRITE(*,*) imud,'Op_MudDischarged_Volume%Array(imud)' , Op_MudDischarged_Volume%Array(imud), Op_Density%Array(imud) + + + + + + + enddo + + + !write(*,*) 'Op_Mud_Forehead_X%Length()' , Op_Mud_Forehead_X%Length() + ! + ! WRITE(*,*) 'Xend_PipeSection(F_StringIntervalCounts)' , Xend_PipeSection(F_StringIntervalCounts) + ! WRITE(*,*) 'Op_Mud_Backhead_X%Array(1)' , Op_Mud_Backhead_X%Array(1) + ! WRITE(*,*) 'Op_Mud_Forehead_X%Array(1)' , Op_Mud_Forehead_X%Array(1) + ! WRITE(*,*) 'Op_Mud_Backhead_X%Array(2)' , Op_Mud_Backhead_X%Array(2) + ! WRITE(*,*) 'Op_Mud_Forehead_X%Array(2)' , Op_Mud_Forehead_X%Array(2) +!========================Bottom Hole END================= + + + + + ! NO KICK + + + +!========================STRING ENTRANCE================= + + if ((ABS(St_Density%Last() - Ann_Density%First()) >= DensityMixTol) .OR. (DeltaVolumeOp == 0.0 .and. St_Density%Last() /= Ann_Density%Array(1) .and. StringFlowRate/=0.0d0)) then ! new mud is pumped + + !if ((ABS(StringDensity_Old - Ann_Density%First()) >= DensityMixTol) .OR. (DeltaVolumeOp == 0.0 .and. St_Density%Last() /= Ann_Density%Array(1) .and. StringFlowRate/=0.0d0)) then ! new mud is pumped + call St_Density%Add (Ann_Density%First()) + call St_MudDischarged_Volume%Add (0.0d0) + call St_Mud_Forehead_X%Add (Xend_PipeSection(F_StringIntervalCounts)) + call St_Mud_Forehead_section%Add (F_StringIntervalCounts) + call St_Mud_Backhead_X%Add (Xstart_PipeSection(F_StringIntervalCounts)) + call St_Mud_Backhead_section%Add (F_StringIntervalCounts) + call St_RemainedVolume_in_LastSection%Add (0.0d0) + call St_EmptyVolume_inBackheadLocation%Add (0.0d0) + call St_MudOrKick%Add (0) + + !StringDensity_Old= Ann_Density%First() + + MudIsChanged= .true. + endif + + St_MudDischarged_Volume%Array(St_MudDischarged_Volume%Length())= St_MudDischarged_Volume%Last()+ ((StringFlowRate/60.0d0)*DeltaT_Mudline) !(gal) + +!========================Tripping In==================== + +!write(*,*) 'DeltaVolumeOp=' , DeltaVolumeOp +write(*,*) 'DeltaVolumeOp=' , DeltaVolumeOp + if (DeltaVolumeOp > 0.0 .and. MudIsChanged== .false.) then !.and. DrillingMode== .false.) then ! trip in mode(loole paeen) + + !write(*,*) 'Tripping In' + + NewDensity= (Ann_Density%First()*((StringFlowRate/60.0d0)*DeltaT_Mudline)+Op_Density%Last()*DeltaVolumeOp)/(((StringFlowRate/60.0d0)*DeltaT_Mudline)+DeltaVolumeOp) + NewVolume= ((StringFlowRate/60.0d0)*DeltaT_Mudline)+DeltaVolumeOp + + !write(*,*) 'St_MudDischarged_Volume%Last()=', St_MudDischarged_Volume%Last(), 'NewVolume=', NewVolume + + if (abs(St_Density%Last()-NewDensity)< DensityMixTol) then ! .OR. (St_MudDischarged_Volume%Last()< 42.) ) then !+ NewVolume)< 42.) then ! 1-Pockets are Merged + St_Density%Array(St_Density%Length())= (St_Density%Last()*St_MudDischarged_Volume%Last()+NewDensity*NewVolume)/(St_MudDischarged_Volume%Last()+NewVolume) + St_MudDischarged_Volume%Array(St_Density%Length())= St_MudDischarged_Volume%Last()+DeltaVolumeOp + St_Mud_Forehead_X%Array(St_Density%Length())= (Xend_PipeSection(F_StringIntervalCounts)) + St_Mud_Forehead_section%Array(St_Density%Length())= (F_StringIntervalCounts) + St_Mud_Backhead_X%Array(St_Density%Length())= (Xstart_PipeSection(F_StringIntervalCounts)) + St_Mud_Backhead_section%Array(St_Density%Length())= (F_StringIntervalCounts) + St_RemainedVolume_in_LastSection%Array(St_Density%Length())= (0.0d0) + St_EmptyVolume_inBackheadLocation%Array(St_Density%Length())= (0.0d0) + else ! 2-Merging conditions are not meeted, so new pocket + call St_Density%Add (NewDensity) + call St_MudDischarged_Volume%Add (NewVolume) + call St_Mud_Forehead_X%Add (Xend_PipeSection(F_StringIntervalCounts)) + call St_Mud_Forehead_section%Add (F_StringIntervalCounts) + call St_Mud_Backhead_X%Add (Xstart_PipeSection(F_StringIntervalCounts)) + call St_Mud_Backhead_section%Add (F_StringIntervalCounts) + call St_RemainedVolume_in_LastSection%Add (0.0d0) + call St_EmptyVolume_inBackheadLocation%Add (0.0d0) + call St_MudOrKick%Add (0) + endif + + + elseif (DeltaVolumeOp > 0.0 .and. MudIsChanged== .true.) then + St_Density%Array(St_Density%Length())= NewDensity + St_MudDischarged_Volume%Array(St_Density%Length())= NewVolume + St_Mud_Forehead_X%Array(St_Density%Length())= (Xend_PipeSection(F_StringIntervalCounts)) + St_Mud_Forehead_section%Array(St_Density%Length())= (F_StringIntervalCounts) + St_Mud_Backhead_X%Array(St_Density%Length())= (Xstart_PipeSection(F_StringIntervalCounts)) + St_Mud_Backhead_section%Array(St_Density%Length())= (F_StringIntervalCounts) + St_RemainedVolume_in_LastSection%Array(St_Density%Length())= (0.0d0) + St_EmptyVolume_inBackheadLocation%Array(St_Density%Length())= (0.0d0) + endif + + +!========================Tripping In - End==================== + + +!======================== STRING ==================== + + MudIsChanged= .false. + + imud= St_Mud_Forehead_X%Length() + 1 + + do while (imud > 1) + imud = imud - 1 + + if (imud< St_Mud_Forehead_X%Length()) then + St_Mud_Forehead_X%Array(imud)= St_Mud_Backhead_X%Array(imud+1) + St_Mud_Forehead_section%Array(imud)= St_Mud_Backhead_section%Array(imud+1) + endif + + + DirectionCoef= (Xend_PipeSection(St_Mud_Forehead_section%Array(imud))-Xstart_PipeSection(St_Mud_Forehead_section%Array(imud))) & + / ABS(Xend_PipeSection(St_Mud_Forehead_section%Array(imud))-Xstart_PipeSection(St_Mud_Forehead_section%Array(imud))) + ! +1 for string , -1 for annulus + + + St_EmptyVolume_inBackheadLocation%Array(imud)= DirectionCoef* (St_Mud_Forehead_X%Array(imud)- Xstart_PipeSection(St_Mud_Forehead_section%Array(imud)))* & + Area_PipeSectionFt(St_Mud_Backhead_section%Array(imud)) !(ft^3) + St_EmptyVolume_inBackheadLocation%Array(imud)= St_EmptyVolume_inBackheadLocation%Array(imud)* 7.48051948d0 ! ft^3 to gal + + + if ( St_MudDischarged_Volume%Array(imud) <= St_EmptyVolume_inBackheadLocation%Array(imud)) then + St_Mud_Backhead_section%Array(imud)= St_Mud_Forehead_section%Array(imud) + St_Mud_Backhead_X%Array(imud)= St_Mud_Forehead_X%Array(imud)- DirectionCoef*(St_MudDischarged_Volume%Array(imud)/7.48051948d0)/Area_PipeSectionFt(St_Mud_Forehead_section%Array(imud)) + ! 7.48051948 is for gal to ft^3 + else + + isection= St_Mud_Backhead_section%Array(imud)-1 + St_RemainedVolume_in_LastSection%Array(imud)= St_MudDischarged_Volume%Array(imud)- St_EmptyVolume_inBackheadLocation%Array(imud) + + do + if (isection < 1) then ! last pipe section(string exit) + St_MudDischarged_Volume%Array(imud)= St_MudDischarged_Volume%Array(imud)- St_RemainedVolume_in_LastSection%Array(imud) + St_Mud_Backhead_X%Array(imud)= Xstart_PipeSection(2) + St_Mud_Backhead_section%Array(imud)= 2 + + if (St_MudDischarged_Volume%Array(imud)<= 0.0d0) then ! imud is completely exited form the string + call RemoveStringMudArrays(imud) + endif + + exit + endif + + xx= St_RemainedVolume_in_LastSection%Array(imud)/ PipeSection_VolumeCapacity(isection) !(gal) + + if (xx<= 1.0) then + St_Mud_Backhead_section%Array(imud)= isection + St_Mud_Backhead_X%Array(imud)= (xx * (Xstart_PipeSection(isection)- Xend_PipeSection(isection)))+ Xend_PipeSection(isection) + exit + else + St_RemainedVolume_in_LastSection%Array(imud)= St_RemainedVolume_in_LastSection%Array(imud)- PipeSection_VolumeCapacity(isection) + isection= isection- 1 + + endif + + enddo + + endif + + enddo +!========================STRING END================= + + + + +end subroutine Utube2_and_TripIn \ No newline at end of file diff --git a/Equipments/PowerLimits.f90 b/Equipments/PowerLimits.f90 new file mode 100644 index 0000000..ef3d414 --- /dev/null +++ b/Equipments/PowerLimits.f90 @@ -0,0 +1,44 @@ +subroutine PowerLimits + !subroutine PowerLimits(Power_sigma) + + USE Pump_VARIABLES, only: PUMP + USE Drawworks_VARIABLES, only: Drawworks + USE RTable_VARIABLES, only: RTable + USE CPowerVariables, only: NumberOfgenerators, GeneratorPowerRating + USE CDrillingConsoleVariables + USE equipments_PowerLimit + + IMPLICIT NONE + !integer :: ii + + + Power_sigma=2.d0*(PUMP(1)%Vt*PUMP(1)%ia_new)+2.d0*(PUMP(2)%Vt*PUMP(2)%ia_new)+2.d0*(PUMP(3)%Vt*PUMP(3)%ia_new)+(RTable%Vt*RTable%ia_new)+2.d0*(Drawworks%Vt*Drawworks%ia_new) + !write(*,*) 'Power_sigma=', Power_sigma + + + power_num_of_Jenerators=sngl(NumberOfgenerators) + Jenerator_power=GeneratorPowerRating + drilling_console_Jenerators(1)=GEN1BTNLED + drilling_console_Jenerators(2)=GEN2BTNLED + drilling_console_Jenerators(3)=GEN3BTNLED + drilling_console_Jenerators(4)=GEN4BTNLED + + drilling_num_of_Jenerators=0.d0 + !do ii=1,4 + ! if (drilling_console_Jenerators(ii)=1) then + ! drilling_num_of_Jenerators=drilling_num_of_Jenerators+1. + ! end if + !end do + drilling_num_of_Jenerators=sngl(sum(drilling_console_Jenerators)) + !drilling_num_of_Jenerators=1.d0 + + if (power_num_of_Jenerators>drilling_num_of_Jenerators) then + num_of_active_Jenerators=drilling_num_of_Jenerators + else if (power_num_of_Jenerators<=drilling_num_of_Jenerators) then + num_of_active_Jenerators=power_num_of_Jenerators + end if + + max_Power_sigma=num_of_active_Jenerators*Jenerator_power + + +end subroutine PowerLimits \ No newline at end of file diff --git a/Equipments/Pumps.old/ON_mode_simulation.f90 b/Equipments/Pumps.old/ON_mode_simulation.f90 new file mode 100644 index 0000000..b6efbd0 --- /dev/null +++ b/Equipments/Pumps.old/ON_mode_simulation.f90 @@ -0,0 +1,80 @@ +subroutine ON_mode_simulation(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use equipments_PowerLimit + + IMPLICIT NONE + INTEGER :: Pump_No + + Call Pump_INPUTS + + ! Torque unit = (in.lbf) + PUMP(Pump_No)%Torque = (63025./132000.)*(1./PUMP(Pump_No)%Trans_Ratio)*(PUMP(Pump_No)%Piston_Area*PUMP(Pump_No)%Stroke_Length*PUMP(Pump_No)%StandPipe_Pressure/PUMP(Pump_No)%Mech_Efficiency/PUMP(Pump_No)%Vol_Efficiency) + + !call PowerLimits + + Call Pump_Traction_Motor(Pump_No) + + if (PUMP(Pump_No)%N_ref<=0.) then + PUMP(Pump_No)%w_ref = 0. + PUMP(Pump_No)%w_old = 0. + PUMP(Pump_No)%w = 0. + PUMP(Pump_No)%w_new = 0. + PUMP(Pump_No)%ia_old = 0. + PUMP(Pump_No)%ia = 0. + PUMP(Pump_No)%ia_new = 0. + PUMP(Pump_No)%x_old = 0. + PUMP(Pump_No)%x = 0. + PUMP(Pump_No)%x_new = 0. + end if + + if (Power_sigma>max_Power_sigma) then + PUMP(Pump_No)%Vt_old = PUMP(Pump_No)%Vt_old + else + PUMP(Pump_No)%Vt_old = PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + IF (PUMP(Pump_No)%Vt_old>810.) THEN + PUMP(Pump_No)%Vt_old = 810. + ELSE IF (PUMP(Pump_No)%Vt_old<0.) THEN + PUMP(Pump_No)%Vt_old = 0. + END IF + + end if + + !PUMP(Pump_No)%Vt=PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + !IF (PUMP(Pump_No)%Vt>810.) THEN + ! PUMP(Pump_No)%Vt=810. + !ELSE IF (PUMP(Pump_No)%Vt<0.) THEN + ! PUMP(Pump_No)%Vt=0. + !END IF + + PUMP(Pump_No)%Speed = 30.*PUMP(Pump_No)%w_new/pi !Speed [RPM] + + Call Set_MP1SPMGauge( sngl(1-PUMP(1)%SPMGaugeMalf)*real((PUMP(1)%Speed/PUMP(1)%Trans_Ratio),8) ) + SPM1 = MP1SPMGauge + Call Set_MP2SPMGauge( sngl(1-PUMP(2)%SPMGaugeMalf)*real((PUMP(2)%Speed/PUMP(2)%Trans_Ratio),8) ) + SPM2 = MP2SPMGauge + + Call Pump_Solver(Pump_No) + Call Pump_Total_Counts + !print*, 'PUMP(1)%Flow_Rate=' , PUMP(1)%Flow_Rate + IF (PUMP(1)%Flow_Rate>0.) Then + Call OpenPump1() + !print*, 'open pump 1' + Else + Call ClosePump1() + !print*, 'close pump 1' + End if + + IF (PUMP(2)%Flow_Rate>0.) Then + Call OpenPump2() + Else + Call ClosePump2() + End if + + +end subroutine ON_mode_simulation \ No newline at end of file diff --git a/Equipments/Pumps.old/Off_mode_Simulation.f90 b/Equipments/Pumps.old/Off_mode_Simulation.f90 new file mode 100644 index 0000000..529ebf4 --- /dev/null +++ b/Equipments/Pumps.old/Off_mode_Simulation.f90 @@ -0,0 +1,51 @@ +subroutine Off_mode_Simulation(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + + IMPLICIT NONE + INTEGER :: Pump_No + + CALL Pump_INPUTS + + !================================================================== + ! Rate limit for off Mode + + Do while (((PUMP(Pump_No)%N_old-0.0d0)/PUMP(Pump_No)%time_step)>386.) + PUMP(Pump_No)%N_ref = (-386.*PUMP(Pump_No)%time_step)+PUMP(Pump_No)%N_old + !else + ! PUMP(1)%N_ref=0.0d0 + !end if + + Call ON_mode_simulation(Pump_No) + + PUMP(Pump_No)%N_old = PUMP(Pump_No)%N_ref + Call sleepqq (80) !????????????????? + End Do + !================================================================== + + PUMP(Pump_No)%Speed = 0.0d0 + Call Set_MP1SPMGauge( sngl(1-PUMP(1)%SPMGaugeMalf)*real((PUMP(1)%Speed/PUMP(1)%Trans_Ratio),8) ) + SPM1 = MP1SPMGauge + Call Set_MP2SPMGauge( sngl(1-PUMP(2)%SPMGaugeMalf)*real((PUMP(2)%Speed/PUMP(2)%Trans_Ratio),8) ) + SPM2 = MP2SPMGauge + PUMP(Pump_No)%w = 0. + PUMP(Pump_No)%w_old = 0.0d0 + PUMP(Pump_No)%w_new = 0.0d0 + PUMP(Pump_No)%ia = 0.0d0 + PUMP(Pump_No)%ia_old = 0.0d0 + PUMP(Pump_No)%ia_new = 0.0d0 + PUMP(Pump_No)%x = 0.0d0 + PUMP(Pump_No)%x_old = 0.0d0 + PUMP(Pump_No)%x_new = 0.0d0 + + Call Pump_Solver(Pump_No) + + Call Pump_Total_Counts + + +end subroutine off_mode_simulation \ No newline at end of file diff --git a/Equipments/Pumps.old/Pump1_OffMode_Solver.f90 b/Equipments/Pumps.old/Pump1_OffMode_Solver.f90 new file mode 100644 index 0000000..16d4013 --- /dev/null +++ b/Equipments/Pumps.old/Pump1_OffMode_Solver.f90 @@ -0,0 +1,68 @@ +subroutine Pump1_OffMode_Solver(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use CSounds + + + IMPLICIT NONE + INTEGER :: Pump_No + + + + CALL Pump_INPUTS + + + + !================================================================== + ! Rate limit for off Mode + + Do while (((PUMP(Pump_No)%N_old-0.0d0)/PUMP(Pump_No)%time_step)>386.0d0) + PUMP(Pump_No)%N_ref = (-386.0d0*PUMP(Pump_No)%time_step)+PUMP(Pump_No)%N_old + !else + ! PUMP(1)%N_ref=0.0d0 + !end if + + Call Pump1_OnMode_Solver(Pump_No) + + PUMP(Pump_No)%N_old = PUMP(Pump_No)%N_ref + Call sleepqq (80) !????????????????? + End Do + !================================================================== + + + + PUMP(Pump_No)%Speed = 0.0d0 + PUMP(Pump_No)%w = 0.0d0 + PUMP(Pump_No)%w_old = 0.0d0 + PUMP(Pump_No)%w_new = 0.0d0 + PUMP(Pump_No)%ia = 0.0d0 + PUMP(Pump_No)%ia_old = 0.0d0 + PUMP(Pump_No)%ia_new = 0.0d0 + PUMP(Pump_No)%x = 0.0d0 + PUMP(Pump_No)%x_old = 0.0d0 + PUMP(Pump_No)%x_new = 0.0d0 + + + Call Pump_Solver(Pump_No) + + Call Pump_Total_Counts + + + + Call Set_MP1SPMGauge( sngl(1-PUMP(1)%SPMGaugeMalf)*real((PUMP(1)%Speed/PUMP(1)%Trans_Ratio),8) ) + SPM1 = MP1SPMGauge + PUMP(1)%SoundSPM = INT(PUMP(1)%Speed/PUMP(1)%Trans_Ratio) + Call SetSoundMP1( PUMP(1)%SoundSPM ) + !Call Set_MP2SPMGauge( real((PUMP(2)%Speed/PUMP(2)%Trans_Ratio),8) ) + !SPM2 = MP2SPMGauge + !print*, 'PUMP(1)%Speed2=', PUMP(1)%Speed + !print*, 'PUMP(Pump_No)%N_ref2=', PUMP(Pump_No)%N_ref + + + +end subroutine Pump1_OffMode_Solver \ No newline at end of file diff --git a/Equipments/Pumps.old/Pump1_OnMode_Solver.f90 b/Equipments/Pumps.old/Pump1_OnMode_Solver.f90 new file mode 100644 index 0000000..358ba54 --- /dev/null +++ b/Equipments/Pumps.old/Pump1_OnMode_Solver.f90 @@ -0,0 +1,120 @@ +subroutine Pump1_OnMode_Solver(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use equipments_PowerLimit + use CSounds + use CWarningsVariables + + + IMPLICIT NONE + INTEGER :: Pump_No + + + + Call Pump_INPUTS + + + ! Torque unit = [in.lbf] + PUMP(Pump_No)%Torque = (63025./132000.)*(1./PUMP(Pump_No)%Trans_Ratio)*(PUMP(Pump_No)%Piston_Area*PUMP(Pump_No)%Stroke_Length*PUMP(Pump_No)%StandPipe_Pressure/PUMP(Pump_No)%Mech_Efficiency/PUMP(Pump_No)%Vol_Efficiency) + + !call PowerLimits + + !print*, 'PUMP(1)%Torque=', PUMP(1)%Torque + Call Pump_Traction_Motor(Pump_No) + + !print*, 'PUMP(1)%w_new=', PUMP(1)%w_new + + if (PUMP(Pump_No)%N_ref<=0.) then + PUMP(Pump_No)%w_ref = 0. + PUMP(Pump_No)%w_old = 0. + PUMP(Pump_No)%w = 0. + PUMP(Pump_No)%w_new = 0. + PUMP(Pump_No)%ia_old = 0. + PUMP(Pump_No)%ia = 0. + PUMP(Pump_No)%ia_new = 0. + PUMP(Pump_No)%x_old = 0. + PUMP(Pump_No)%x = 0. + PUMP(Pump_No)%x_new = 0. + end if + + + + + if (Power_sigma>max_Power_sigma) then + PUMP(Pump_No)%Vt_old = PUMP(Pump_No)%Vt_old + else + PUMP(Pump_No)%Vt_old = PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + IF (PUMP(Pump_No)%Vt_old>810.) THEN + PUMP(Pump_No)%Vt_old = 810. + ELSE IF (PUMP(Pump_No)%Vt_old<0.) THEN + PUMP(Pump_No)%Vt_old = 0. + END IF + end if + + + + + !PUMP(Pump_No)%Vt=PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + !IF (PUMP(Pump_No)%Vt>810.) THEN + ! PUMP(Pump_No)%Vt=810. + !ELSE IF (PUMP(Pump_No)%Vt<0.) THEN + ! PUMP(Pump_No)%Vt=0. + !END IF + + + + PUMP(Pump_No)%Speed = 30.d0*PUMP(Pump_No)%w_new/pi !Speed [RPM] + + if ( Pump1Failure == .true. ) then + PUMP(1)%Speed = 0.d0 + PUMP(1)%w = 0.d0 + PUMP(1)%w_new = 0.d0 + PUMP(1)%w_old = 0.d0 + end if + + + + Call Pump_Solver(Pump_No) + Call Pump_Total_Counts + + + + Call Set_MP1SPMGauge( sngl(1-PUMP(1)%SPMGaugeMalf)*real((PUMP(1)%Speed/PUMP(1)%Trans_Ratio),8) ) + SPM1 = MP1SPMGauge + PUMP(1)%SoundSPM = INT(PUMP(1)%Speed/PUMP(1)%Trans_Ratio) + Call SetSoundMP1( PUMP(1)%SoundSPM ) + !Call Set_MP2SPMGauge( real((PUMP(2)%Speed/PUMP(2)%Trans_Ratio),8) ) + !SPM2 = MP2SPMGauge + + + + IF (PUMP(1)%Flow_Rate>0.) Then + Call OpenPump1() + Else + Call ClosePump1() + End if + + + !IF (PUMP(2)%Flow_Rate>0.) Then + ! Call OpenPump2() + !Else + ! Call ClosePump2() + !End if + + !print*, 'PUMP(1)%Speed=', PUMP(1)%Speed + !print*, 'PUMP(1)%Torque=', PUMP(1)%Torque + !print*, 'Power_sigma=', Power_sigma + !print*, 'power_num_of_Jenerators=', power_num_of_Jenerators + !print*, 'drilling_num_of_Jenerators=', drilling_num_of_Jenerators + !print*, 'max_Power_sigma=', max_Power_sigma + !print*, 'PUMP(1)%Vt=', PUMP(1)%Vt + !print*, 'PUMP(1)%SoundSPM=', PUMP(1)%SoundSPM + !print*, 'PUMP(1)%ia_new=', PUMP(1)%ia_new + + +end subroutine Pump1_OnMode_Solver \ No newline at end of file diff --git a/Equipments/Pumps.old/Pump2_OffMode_Solver.f90 b/Equipments/Pumps.old/Pump2_OffMode_Solver.f90 new file mode 100644 index 0000000..f74658c --- /dev/null +++ b/Equipments/Pumps.old/Pump2_OffMode_Solver.f90 @@ -0,0 +1,69 @@ +subroutine Pump2_OffMode_Solver(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use CSounds + + + IMPLICIT NONE + INTEGER :: Pump_No + + + + CALL Pump_INPUTS + + + + !================================================================== + ! Rate limit for off Mode + + Do while (((PUMP(Pump_No)%N_old-0.0d0)/PUMP(Pump_No)%time_step)>386.) + PUMP(Pump_No)%N_ref = (-386.*PUMP(Pump_No)%time_step)+PUMP(Pump_No)%N_old + !else + ! PUMP(1)%N_ref=0.0d0 + !end if + + Call Pump2_OnMode_Solver(Pump_No) + + PUMP(Pump_No)%N_old = PUMP(Pump_No)%N_ref + Call sleepqq (80) !????????????????? + End Do + !================================================================== + + + + + PUMP(Pump_No)%Speed = 0.0d0 + PUMP(Pump_No)%w = 0.0d0 + PUMP(Pump_No)%w_old = 0.0d0 + PUMP(Pump_No)%w_new = 0.0d0 + PUMP(Pump_No)%ia = 0.0d0 + PUMP(Pump_No)%ia_old = 0.0d0 + PUMP(Pump_No)%ia_new = 0.0d0 + PUMP(Pump_No)%x = 0.0d0 + PUMP(Pump_No)%x_old = 0.0d0 + PUMP(Pump_No)%x_new = 0.0d0 + + + + Call Pump_Solver(Pump_No) + + Call Pump_Total_Counts + + + + !Call Set_MP1SPMGauge( real((PUMP(1)%Speed/PUMP(1)%Trans_Ratio),8) ) + !SPM1 = MP1SPMGauge + Call Set_MP2SPMGauge( sngl(1-PUMP(2)%SPMGaugeMalf)*real((PUMP(2)%Speed/PUMP(2)%Trans_Ratio),8) ) + SPM2 = MP2SPMGauge + PUMP(2)%SoundSPM = INT(PUMP(2)%Speed/PUMP(2)%Trans_Ratio) + Call SetSoundMP2( PUMP(2)%SoundSPM ) + + + + +end subroutine Pump2_OffMode_Solver \ No newline at end of file diff --git a/Equipments/Pumps.old/Pump2_OnMode_Solver.f90 b/Equipments/Pumps.old/Pump2_OnMode_Solver.f90 new file mode 100644 index 0000000..eba9e2f --- /dev/null +++ b/Equipments/Pumps.old/Pump2_OnMode_Solver.f90 @@ -0,0 +1,108 @@ +subroutine Pump2_OnMode_Solver(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use equipments_PowerLimit + use CSounds + use CWarningsVariables + + + IMPLICIT NONE + INTEGER :: Pump_No + + + + + Call Pump_INPUTS + + ! Torque unit = [in.lbf] + PUMP(Pump_No)%Torque = (63025./132000.)*(1./PUMP(Pump_No)%Trans_Ratio)*(PUMP(Pump_No)%Piston_Area*PUMP(Pump_No)%Stroke_Length*PUMP(Pump_No)%StandPipe_Pressure/PUMP(Pump_No)%Mech_Efficiency/PUMP(Pump_No)%Vol_Efficiency) + + + !call PowerLimits + + + + Call Pump_Traction_Motor(Pump_No) + + if (PUMP(Pump_No)%N_ref<=0.) then + PUMP(Pump_No)%w_ref = 0. + PUMP(Pump_No)%w_old = 0. + PUMP(Pump_No)%w = 0. + PUMP(Pump_No)%w_new = 0. + PUMP(Pump_No)%ia_old = 0. + PUMP(Pump_No)%ia = 0. + PUMP(Pump_No)%ia_new = 0. + PUMP(Pump_No)%x_old = 0. + PUMP(Pump_No)%x = 0. + PUMP(Pump_No)%x_new = 0. + end if + + + + if (Power_sigma>max_Power_sigma) then + PUMP(Pump_No)%Vt_old = PUMP(Pump_No)%Vt_old + else + PUMP(Pump_No)%Vt_old = PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + IF (PUMP(Pump_No)%Vt_old>810.) THEN + PUMP(Pump_No)%Vt_old = 810. + ELSE IF (PUMP(Pump_No)%Vt_old<0.) THEN + PUMP(Pump_No)%Vt_old = 0. + END IF + end if + + + + + !PUMP(Pump_No)%Vt=PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + !IF (PUMP(Pump_No)%Vt>810.) THEN + ! PUMP(Pump_No)%Vt=810. + !ELSE IF (PUMP(Pump_No)%Vt<0.) THEN + ! PUMP(Pump_No)%Vt=0. + !END IF + + PUMP(Pump_No)%Speed = 30.*PUMP(Pump_No)%w_new/pi !Speed [RPM] + + if ( Pump2Failure == .true. ) then + PUMP(2)%Speed = 0.d0 + PUMP(2)%w = 0.d0 + PUMP(2)%w_new = 0.d0 + PUMP(2)%w_old = 0.d0 + end if + + + Call Pump_Solver(Pump_No) + Call Pump_Total_Counts + + + + !Call Set_MP1SPMGauge( real((PUMP(1)%Speed/PUMP(1)%Trans_Ratio),8) ) + !SPM1 = MP1SPMGauge + Call Set_MP2SPMGauge( sngl(1-PUMP(2)%SPMGaugeMalf)*real((PUMP(2)%Speed/PUMP(2)%Trans_Ratio),8) ) + SPM2 = MP2SPMGauge + PUMP(2)%SoundSPM = INT(PUMP(2)%Speed/PUMP(2)%Trans_Ratio) + Call SetSoundMP2( PUMP(2)%SoundSPM ) + + + + + !IF (PUMP(1)%Flow_Rate>0.) Then + ! Call OpenPump1() + !Else + ! Call ClosePump1() + !End if + + IF (PUMP(2)%Flow_Rate>0.) Then + Call OpenPump2() + Else + Call ClosePump2() + End if + + + + +end subroutine Pump2_OnMode_Solver \ No newline at end of file diff --git a/Equipments/Pumps.old/Pump3_OffMode_Solver.f90 b/Equipments/Pumps.old/Pump3_OffMode_Solver.f90 new file mode 100644 index 0000000..38c1370 --- /dev/null +++ b/Equipments/Pumps.old/Pump3_OffMode_Solver.f90 @@ -0,0 +1,55 @@ +subroutine Pump3_OffMode_Solver + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use CSounds + + + IMPLICIT NONE + INTEGER :: Pump_No + + + + CALL Pump_INPUTS + + + + !================================================================== + ! Rate limit for off Mode + + Do while (((PUMP(3)%N_old-0.0d0)/PUMP(3)%time_step)>386.) + PUMP(3)%N_ref = (-386.*PUMP(3)%time_step)+PUMP(3)%N_old + !else + ! PUMP(1)%N_ref=0.0d0 + !end if + + Call Pump3_OnMode_Solver + + PUMP(3)%N_old = PUMP(3)%N_ref + Call sleepqq (80) !????????????????? + End Do + !================================================================== + + + + + PUMP(3)%Speed = 0.0 + + Call Pump_Solver(3) + + Call Pump_Total_Counts + + + Call Set_MP1SPMGauge( real((PUMP(3)%Speed/PUMP(3)%Trans_Ratio),8) ) + SPM1 = MP1SPMGauge + PUMP(3)%SoundSPM = INT(PUMP(3)%Speed/PUMP(3)%Trans_Ratio) + Call SetSoundMP3( PUMP(3)%SoundSPM ) + + + + +end subroutine Pump3_OffMode_Solver \ No newline at end of file diff --git a/Equipments/Pumps.old/Pump3_OnMode_Solver.f90 b/Equipments/Pumps.old/Pump3_OnMode_Solver.f90 new file mode 100644 index 0000000..98f1975 --- /dev/null +++ b/Equipments/Pumps.old/Pump3_OnMode_Solver.f90 @@ -0,0 +1,57 @@ +subroutine Pump3_OnMode_Solver + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use equipments_PowerLimit + use CSounds + use CWarningsVariables + + + IMPLICIT NONE + INTEGER :: Pump_No + + + + Call Pump_INPUTS + + !! Torque unit = (in.lbf) + !PUMP(Pump_No)%Torque = (63025./132000.)*(1./PUMP(Pump_No)%Trans_Ratio)*(PUMP(Pump_No)%Piston_Area*PUMP(Pump_No)%Stroke_Length*PUMP(Pump_No)%StandPipe_Pressure/PUMP(Pump_No)%Mech_Efficiency/PUMP(Pump_No)%Vol_Efficiency) + + + + + + PUMP(3)%Speed = PUMP(3)%N_ref !Speed [RPM] + + if ( Pump3Failure == .true. ) then + PUMP(3)%Speed = 0.d0 + PUMP(3)%w = 0.d0 + PUMP(3)%w_new = 0.d0 + PUMP(3)%w_old = 0.d0 + end if + + Call Pump_Solver(3) + Call Pump_Total_Counts + + Call Set_MP1SPMGauge( real((PUMP(3)%Speed/PUMP(3)%Trans_Ratio),8) ) + SPM1 = MP1SPMGauge + PUMP(3)%SoundSPM = INT(PUMP(3)%Speed/PUMP(3)%Trans_Ratio) + Call SetSoundMP3( PUMP(3)%SoundSPM ) + + + + IF (PUMP(3)%Flow_Rate>0.) Then + Call OpenCementPump() + Else + Call CloseCementPump() + End if + + + + + +end subroutine Pump3_OnMode_Solver \ No newline at end of file diff --git a/Equipments/Pumps.old/Pump_INPUTS.f90 b/Equipments/Pumps.old/Pump_INPUTS.f90 new file mode 100644 index 0000000..2d018eb --- /dev/null +++ b/Equipments/Pumps.old/Pump_INPUTS.f90 @@ -0,0 +1,59 @@ +subroutine Pump_INPUTS + + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use Pump_VARIABLES + use MudSystem + + IMPLICIT NONE + + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<< + + if ( PUMP(1)%BlowPopOffMalf==1 ) then ! Pump1 Malfunction ----> Blow Pop-offs (Relief Valves) + PUMP(1)%StandPipe_Pressure = 0.d0 + else + PUMP(1)%StandPipe_Pressure = PumpPressure1 ![psi] + if ( PUMP(1)%StandPipe_Pressure<=14. ) then + PUMP(1)%StandPipe_Pressure = 14. + end if + end if + + + + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<< + + if ( PUMP(2)%BlowPopOffMalf==1 ) then ! Pump2 Malfunction ----> Blow Pop-offs (Relief Valves) + PUMP(2)%StandPipe_Pressure = 0.d0 + else + PUMP(2)%StandPipe_Pressure = PumpPressure2 ![psi] + if ( PUMP(2)%StandPipe_Pressure<=14. ) then + PUMP(2)%StandPipe_Pressure = 14. + end if + end if + + + + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 3 <<<<<<<<<<<<<<<<<<<<<<<<<<< + + if ( PUMP(3)%BlowPopOffMalf==1 ) then ! Pump3 Malfunction ----> Blow Pop-offs (Relief Valves) + PUMP(3)%StandPipe_Pressure = 0.d0 + else + PUMP(3)%StandPipe_Pressure = PumpPressure3 ![psi] + if ( PUMP(3)%StandPipe_Pressure<=14. ) then + PUMP(3)%StandPipe_Pressure = 14. + end if + end if + + + + + +end subroutine Pump_INPUTS \ No newline at end of file diff --git a/Equipments/Pumps.old/Pump_Solver.f90 b/Equipments/Pumps.old/Pump_Solver.f90 new file mode 100644 index 0000000..2adb3f4 --- /dev/null +++ b/Equipments/Pumps.old/Pump_Solver.f90 @@ -0,0 +1,29 @@ +subroutine Pump_Solver(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + + + IMPLICIT NONE + INTEGER :: Pump_No + + + + PUMP(Pump_No)%Flow_Rate = PUMP(Pump_No)%Piston_Area*PUMP(Pump_No)%Stroke_Length*(PUMP(Pump_No)%Speed/PUMP(Pump_No)%Trans_Ratio)*PUMP(Pump_No)%Vol_Efficiency/77.d0 ![gpm] + PUMP(Pump_No)%Hydraulic_HorsePower = PUMP(Pump_No)%Piston_Area*PUMP(Pump_No)%Stroke_Length*(PUMP(Pump_No)%Speed/PUMP(Pump_No)%Trans_Ratio)*PUMP(Pump_No)%StandPipe_Pressure/132000.d0 ![HHP] + PUMP(Pump_No)%TracMotor_Horsepower = PUMP(Pump_No)%Hydraulic_HorsePower/PUMP(Pump_No)%Mech_Efficiency/PUMP(Pump_No)%Vol_Efficiency ![HHP] + !PUMP(Pump_No)%Max_Pressure = (PUMP(Pump_No)%Max_Horsepower*1714.)/PUMP(Pump_No)%Flow_Rate ![psi] + + + if ( (PUMP(Pump_No)%StandPipe_Pressure*PUMP(Pump_No)%Flow_Rate)>(1714.d0*PUMP(Pump_No)%Max_Horsepower*PUMP(Pump_No)%Mech_Efficiency*PUMP(Pump_No)%Vol_Efficiency) ) then + PUMP(Pump_No)%Flow_Rate = (1714.d0*PUMP(Pump_No)%Max_Horsepower*PUMP(Pump_No)%Mech_Efficiency*PUMP(Pump_No)%Vol_Efficiency)/PUMP(Pump_No)%StandPipe_Pressure ![gpm] + PUMP(Pump_No)%Speed = ( (PUMP(Pump_No)%Flow_Rate*77.d0)/(PUMP(Pump_No)%Piston_Area*PUMP(Pump_No)%Stroke_Length) )*PUMP(Pump_No)%Trans_Ratio ![rpm] + end if + + + + +end subroutine Pump_Solver \ No newline at end of file diff --git a/Equipments/Pumps.old/Pump_StartUp.f90 b/Equipments/Pumps.old/Pump_StartUp.f90 new file mode 100644 index 0000000..98b9d2e --- /dev/null +++ b/Equipments/Pumps.old/Pump_StartUp.f90 @@ -0,0 +1,52 @@ +subroutine Pump_StartUp + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CPowerVariables + use Pump_VARIABLES + + IMPLICIT NONE + + !>>>>>>>>>>>>>>>>>>>>>>> PUMP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<< + PUMP(1)%Stroke_Length = MudPump1Stroke + PUMP(1)%Piston_Diameter = MudPump1LinerDiameter + PUMP(1)%Piston_Area = pi*PUMP(1)%Piston_Diameter*PUMP(1)%Piston_Diameter/4. + PUMP(1)%Mech_Efficiency = MudPump1MechanicalEfficiency + PUMP(1)%Vol_Efficiency = MudPump1VolumetricEfficiency + PUMP(1)%Max_Horsepower = MudPump1 + PUMP(1)%Inertia_Moment = 23.261341 ! 23.261341 [kg.m^2] = 552 [lb.ft^2] + PUMP(1)%J_coef = PUMP(1)%Inertia_Moment+(4.*(PUMP(1)%Inertia_Moment)) + PUMP(1)%Trans_Ratio = 965.0/MudPump1Maximum + PUMP(1)%time_step = .10 + PUMP(1)%Flow_Rate = 0. + Call Pump1_OffMode_Solver(1) + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<< + PUMP(2)%Stroke_Length = MudPump2Stroke + PUMP(2)%Piston_Diameter = MudPump2LinerDiameter + PUMP(2)%Piston_Area = pi*PUMP(2)%Piston_Diameter*PUMP(2)%Piston_Diameter/4. + PUMP(2)%Mech_Efficiency = MudPump2MechanicalEfficiency + PUMP(2)%Vol_Efficiency = MudPump2VolumetricEfficiency + PUMP(2)%Max_Horsepower = MudPump2 + PUMP(2)%Inertia_Moment = 23.261341 ! 23.261341 [kg.m^2] = 552 [lb.ft^2] + PUMP(2)%J_coef = PUMP(2)%Inertia_Moment+(4.*(PUMP(2)%Inertia_Moment)) + PUMP(2)%Trans_Ratio = 965.0/MudPump2Maximum + PUMP(2)%time_step = .10 + PUMP(2)%Flow_Rate = 0. + Call Pump2_OffMode_Solver(2) + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 3 <<<<<<<<<<<<<<<<<<<<<<<<<<< + PUMP(3)%Stroke_Length = CementPumpStroke + PUMP(3)%Piston_Diameter = CementPumpLinerDiameter + PUMP(3)%Piston_Area = pi*PUMP(3)%Piston_Diameter*PUMP(3)%Piston_Diameter/4. + PUMP(3)%Mech_Efficiency = CementPumpMechanicalEfficiency + PUMP(3)%Vol_Efficiency = CementPumpVolumetricEfficiency + PUMP(3)%Max_Horsepower = CementPump + PUMP(3)%Inertia_Moment = 23.261341 ! 23.261341 [kg.m^2] = 552 [lb.ft^2] + PUMP(3)%Trans_Ratio = 965.0/CementPumpMaximum + PUMP(3)%time_step = .10 + PUMP(3)%Flow_Rate = 0. + Call Pump3_OffMode_Solver + +end subroutine Pump_StartUp \ No newline at end of file diff --git a/Equipments/Pumps.old/Pump_Total_Counts.f90 b/Equipments/Pumps.old/Pump_Total_Counts.f90 new file mode 100644 index 0000000..e140c45 --- /dev/null +++ b/Equipments/Pumps.old/Pump_Total_Counts.f90 @@ -0,0 +1,11 @@ +subroutine Pump_Total_Counts + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + + IMPLICIT NONE + Total_Pump_GPM = PUMP(1)%Flow_Rate+PUMP(2)%Flow_Rate+PUMP(3)%Flow_Rate + Total_Pump_SPM = (PUMP(1)%Speed/PUMP(1)%Trans_Ratio)+(PUMP(2)%Speed/PUMP(2)%Trans_Ratio)+(PUMP(3)%Speed/PUMP(3)%Trans_Ratio) +end subroutine \ No newline at end of file diff --git a/Equipments/Pumps.old/Pump_Traction_Motor.f90 b/Equipments/Pumps.old/Pump_Traction_Motor.f90 new file mode 100644 index 0000000..c050d8e --- /dev/null +++ b/Equipments/Pumps.old/Pump_Traction_Motor.f90 @@ -0,0 +1,124 @@ +subroutine Pump_Traction_Motor(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + + + IMPLICIT NONE + INTEGER :: Pump_No + + + +!>>>>>>>>>>>>>>>>>>>>>>> DATA <<<<<<<<<<<<<<<<<<<<<<<<<<< + PUMP(Pump_No)%TL = 0.112985*PUMP(Pump_No)%Torque/2.d0 + + La = 1700.*1d-6 !170.*1d-6 !1700.*1d-6 + !Lf = 260.*1d-6 + Lf = 0.d0 + Ra = 9.5*1d-3 !0.1d0 !9.5*1d-3 + !Rf = 5.4*1d-3 + Rf = 0.d0 + + !******** controller ******* + Kpn = 11. !3. !=11. + !Kin = 50. + Kpi = 100. + Kii = 900. + + + PUMP(Pump_No)%time = PUMP(Pump_No)%time_step + PUMP(Pump_No)%dt = 1.d-5 + PUMP(Pump_No)%error = .001 + +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + PUMP(Pump_No)%n = PUMP(Pump_No)%time/PUMP(Pump_No)%dt + !PUMP(Pump_No)%w_ref = (pi*(PUMP(Pump_No)%N_ref+102.d0)/30.d0) + PUMP(Pump_No)%w_ref = (pi*(PUMP(Pump_No)%N_ref)/30.d0) + + !if (PUMP(Pump_No)%N_ref<=0.) then + ! PUMP(Pump_No)%w_ref = 0. + !end if + + + !if (PUMP(Pump_No)%N_ref<=0.) then + ! PUMP(Pump_No)%w_ref = 0. + ! PUMP(Pump_No)%w_old = 0. + ! PUMP(Pump_No)%w = 0. + !end if + + + PUMP(Pump_No)%ia_er = 1. + PUMP(Pump_No)%w_er = 1. + PUMP(Pump_No)%x_er = 1. + + + PUMP(Pump_No)%i = 1 + +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + DO WHILE (PUMP(Pump_No)%i<=PUMP(Pump_No)%n) + +!>>>>>>>>>>>> Runge-Kutta Method (4th order) <<<<<<<<<<<<<< + + call Pump_dx((PUMP(Pump_No)%i*PUMP(Pump_No)%dt),PUMP(Pump_No)%ia,PUMP(Pump_No)%w,PUMP(Pump_No)%x,Pump_No) + call Pump_dia((PUMP(Pump_No)%i*PUMP(Pump_No)%dt),PUMP(Pump_No)%ia,PUMP(Pump_No)%w,PUMP(Pump_No)%fii,PUMP(Pump_No)%x,Pump_No) + call Pump_dw((PUMP(Pump_No)%i*PUMP(Pump_No)%dt),PUMP(Pump_No)%ia,PUMP(Pump_No)%w,PUMP(Pump_No)%fii,PUMP(Pump_No)%TL,Pump_No) + PUMP(Pump_No)%K1x=PUMP(Pump_No)%dt*PUMP(Pump_No)%dx + PUMP(Pump_No)%K1ia=PUMP(Pump_No)%dt*PUMP(Pump_No)%dia + PUMP(Pump_No)%K1w=PUMP(Pump_No)%dt*PUMP(Pump_No)%dw + + call Pump_dx((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K1ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K1w/2.),PUMP(Pump_No)%x+(PUMP(Pump_No)%K1x/2.),Pump_No) + call Pump_dia((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K1ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K1w/2.),PUMP(Pump_No)%fii,PUMP(Pump_No)%x+(PUMP(Pump_No)%K1x/2.),Pump_No) + call Pump_dw((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K1ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K1w/2.),PUMP(Pump_No)%fii,PUMP(Pump_No)%TL,Pump_No) + PUMP(Pump_No)%K2x=PUMP(Pump_No)%dt*PUMP(Pump_No)%dx + PUMP(Pump_No)%K2ia=PUMP(Pump_No)%dt*PUMP(Pump_No)%dia + PUMP(Pump_No)%K2w=PUMP(Pump_No)%dt*PUMP(Pump_No)%dw + + call Pump_dx((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K2ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K2w/2.),PUMP(Pump_No)%x+(PUMP(Pump_No)%K2x/2.),Pump_No) + call Pump_dia((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K2ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K2w/2.),PUMP(Pump_No)%fii,PUMP(Pump_No)%x+(PUMP(Pump_No)%K2x/2.),Pump_No) + call Pump_dw((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K2ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K2w/2.),PUMP(Pump_No)%fii,PUMP(Pump_No)%TL,Pump_No) + PUMP(Pump_No)%K3x=PUMP(Pump_No)%dt*PUMP(Pump_No)%dx + PUMP(Pump_No)%K3ia=PUMP(Pump_No)%dt*PUMP(Pump_No)%dia + PUMP(Pump_No)%K3w=PUMP(Pump_No)%dt*PUMP(Pump_No)%dw + + call Pump_dx((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+PUMP(Pump_No)%dt,PUMP(Pump_No)%ia+PUMP(Pump_No)%K3ia,PUMP(Pump_No)%w+PUMP(Pump_No)%K3w,PUMP(Pump_No)%x+PUMP(Pump_No)%K3x,Pump_No) + call Pump_dia((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+PUMP(Pump_No)%dt,PUMP(Pump_No)%ia+PUMP(Pump_No)%K3ia,PUMP(Pump_No)%w+PUMP(Pump_No)%K3w,PUMP(Pump_No)%fii,PUMP(Pump_No)%x+PUMP(Pump_No)%K3x,Pump_No) + call Pump_dw((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+PUMP(Pump_No)%dt,PUMP(Pump_No)%ia+PUMP(Pump_No)%K3ia,PUMP(Pump_No)%w+PUMP(Pump_No)%K3w,PUMP(Pump_No)%fii,PUMP(Pump_No)%TL,Pump_No) + PUMP(Pump_No)%K4x=PUMP(Pump_No)%dt*PUMP(Pump_No)%dx + PUMP(Pump_No)%K4ia=PUMP(Pump_No)%dt*PUMP(Pump_No)%dia + PUMP(Pump_No)%K4w=PUMP(Pump_No)%dt*PUMP(Pump_No)%dw + + PUMP(Pump_No)%x_new = PUMP(Pump_No)%x_old+((PUMP(Pump_No)%K1x+(2.*PUMP(Pump_No)%K2x)+(2.*PUMP(Pump_No)%K3x)+PUMP(Pump_No)%K4x)/6.) + PUMP(Pump_No)%ia_new = PUMP(Pump_No)%ia_old+((PUMP(Pump_No)%K1ia+(2.*PUMP(Pump_No)%K2ia)+(2.*PUMP(Pump_No)%K3ia)+PUMP(Pump_No)%K4ia)/6.) + PUMP(Pump_No)%w_new = PUMP(Pump_No)%w_old+((PUMP(Pump_No)%K1w+(2.*PUMP(Pump_No)%K2w)+(2.*PUMP(Pump_No)%K3w)+PUMP(Pump_No)%K4w)/6.) + +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + + PUMP(Pump_No)%x_old = PUMP(Pump_No)%x_new + PUMP(Pump_No)%ia_old = PUMP(Pump_No)%ia_new + PUMP(Pump_No)%w_old = PUMP(Pump_No)%w_new + PUMP(Pump_No)%x = PUMP(Pump_No)%x_new + PUMP(Pump_No)%ia = PUMP(Pump_No)%ia_new + PUMP(Pump_No)%w = PUMP(Pump_No)%w_new + PUMP(Pump_No)%Te = PUMP(Pump_No)%fii*PUMP(Pump_No)%ia_new + + !PUMP(Pump_No)%Vt = PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + !IF (PUMP(Pump_No)%Vt>810.) THEN + ! PUMP(Pump_No)%Vt = 810. + !ELSE IF (PUMP(Pump_No)%Vt<0.) THEN + ! PUMP(Pump_No)%Vt = 0. + !END IF + + PUMP(Pump_No)%i = PUMP(Pump_No)%i+1 + + END DO +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + + + +end subroutine Pump_Traction_Motor \ No newline at end of file diff --git a/Equipments/Pumps.old/Pump_VARIABLES.f90 b/Equipments/Pumps.old/Pump_VARIABLES.f90 new file mode 100644 index 0000000..41141ba --- /dev/null +++ b/Equipments/Pumps.old/Pump_VARIABLES.f90 @@ -0,0 +1,61 @@ +MODULE Pump_VARIABLES + + + IMPLICIT NONE + PUBLIC + + + REAL , PARAMETER :: pi=3.14159265 + REAL :: La, Lf, Ra, Rf + REAL :: Kpn, Kin, Kpi, Kii + REAL :: Total_Pump_GPM, Total_Pump_SPM, Total_Stroke_Counter_For_Plot + +!**************************************************************************************************** +!**************** Define PUMP Array ************************************************************ + TYPE, PUBLIC :: Pump_Var + +!***** Pump_VARIABLES *************************** + INTEGER :: j , AssignmentSwitchh + INTEGER :: PowerFailMalf , BlowPopOffMalf , SPMGaugeMalf + + REAL :: Stroke_Length, Piston_Area, Piston_Diameter, Inertia_Moment + REAL :: Mech_Efficiency, Vol_Efficiency, Trans_Ratio + REAL :: StandPipe_Pressure , Max_Pressure + REAL :: Torque, Speed + REAL :: Flow_Rate, Hydraulic_HorsePower, TracMotor_Horsepower , Max_Horsepower + REAL :: simulation_time, time_step + + REAL(8) :: START_TIME, END_TIME + INTEGER :: INT_CPU_TIME, Dt_ref + +!***** Traction Motor_VARIABLES ***************** + INTEGER :: i, n + + REAL :: TL, Vt, J_coef, Ea, fii, Te + REAL :: time, dt, zaman + REAL :: ia, w, ia_old, w_old, ia_new, w_new + REAL :: error, ia_er, w_er ,x_er, y_er + REAL :: K1ia, K1w, K2ia, K2w, K3ia, K3w, K4ia, K4w + REAL :: K1x, K1y, K2x, K2y, K3x, K3y, K4x, K4y + REAL :: ia_ref, w_ref, N_ref ! N(rpm) , w(rad/s) + REAL :: x, y, x_old, y_old, x_new, y_new + REAL :: dia, dw, dx + REAL :: N_new, N_old + REAL :: Vt_old + + +!************* Sound_VARIABLES ********************** + INTEGER :: SoundSPM + Logical :: SoundBlower + + + END TYPE Pump_Var + + TYPE(Pump_Var), DIMENSION(1:3) :: PUMP +!*********************************************************************************************** +!**************************************************************************************************** + + + + +END MODULE Pump_VARIABLES \ No newline at end of file diff --git a/Equipments/Pumps.old/PumpsMain.f90 b/Equipments/Pumps.old/PumpsMain.f90 new file mode 100644 index 0000000..3582d4b --- /dev/null +++ b/Equipments/Pumps.old/PumpsMain.f90 @@ -0,0 +1,719 @@ +module PumpsMain + + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use Pump_VARIABLES + use CSounds + + implicit none + public + + contains + + + +! **************************************** +! ***** subroutine Pump1MainBody ***** +! **************************** + + subroutine Pump1_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(Pump1_Init) + call OnSimulationStop%Add(Pump1_Init) + call OnPump1Step%Add(Pump1_Step) + call OnPump1Output%Add(Pump1_Output) + call OnPump1Main%Add(Pump1MainBody) + end subroutine + + subroutine Pump1_Init + implicit none + end subroutine Pump1_Init + + !!Extracted from pump1MainBody + subroutine Pump1_Step + use CWarningsVariables + integer,dimension(8) :: MP_START_TIME, MP_END_TIME + INTEGER :: MP_SolDuration + + if (PUMP(1)%PowerFailMalf==1) then + !MP1BLWR=0 + Call Pump1_OffMode_Solver(1) + Call ClosePump1() + end if + ! Pump1 Warning ----> Failure + if (Pump1Failure==1) then + !MP1BLWR=0 + Call Pump1_OffMode_Solver(1) + Call ClosePump1() + end if + + ! Pump3 Malfunction ----> Power Failure + if (PUMP(3)%PowerFailMalf==1) then + Call Pump3_OffMode_Solver + !Call ClosePump3() + end if + ! Pump3 Warning ----> Failure + if (Pump3Failure==1) then + Call Pump3_OffMode_Solver + !Call ClosePump3() + end if + + + !print*, 'MP1Throttle=', MP1Throttle + if (IsPortable) then + PUMP(1)%AssignmentSwitchh = 1 + else + PUMP(1)%AssignmentSwitchh = AssignmentSwitch + end if + if((any(PUMP(1)%AssignmentSwitchh==(/1,2,3,4,9,10/))) .and. (MP1CPSwitch==-1) .and. (MP1Throttle==0.) .and. (PUMP(1)%PowerFailMalf==0)) then + !print*, 'pumps on' + !print*, 'PUMP(1)%AssignmentSwitchh=' , PUMP(1)%AssignmentSwitchh + PUMP(1)%SoundBlower = .true. + Call SetSoundBlowerMP1(PUMP(1)%SoundBlower) + MP1BLWR = 1 + + loop2: do + Call DrillingConsole_ScrLEDs + Call Pump_Total_Counts + + Call DATE_AND_TIME(values=MP_START_TIME) + + ! Pump1 Malfunction ----> Power Failure + if (PUMP(1)%PowerFailMalf==1) then + !MP1BLWR=0 + Call Pump1_OffMode_Solver(1) + Call ClosePump1() + exit loop2 + end if + + + ! Pump1 Warning ----> Failure + if (Pump1Failure==1) then + !MP1BLWR=0 + Call Pump1_OffMode_Solver(1) + Call ClosePump1() + exit loop2 + end if + + + PUMP(1)%N_new = MP1Throttle + if (((PUMP(1)%N_new-PUMP(1)%N_old)/PUMP(1)%time_step)>193.) then + PUMP(1)%N_ref =(193.*PUMP(1)%time_step)+PUMP(1)%N_old + else if (((PUMP(1)%N_old-PUMP(1)%N_new)/PUMP(1)%time_step)>193.) then + PUMP(1)%N_ref = (-193.*PUMP(1)%time_step)+PUMP(1)%N_old + else + PUMP(1)%N_ref = PUMP(1)%N_new + end if + !print*, 'PUMP(1)%N_ref=' , PUMP(1)%N_ref , MP1Throttle + Call Pump1_OnMode_Solver(1) + + !IF (PUMP(1)%Flow_Rate>0.) Then + ! Call OpenPump1() + !Else + ! Call ClosePump1() + !End if + + PUMP(1)%N_old = PUMP(1)%N_ref + + Call DATE_AND_TIME(values=MP_END_TIME) + MP_SolDuration = 100-(MP_END_TIME(5)*3600000+MP_END_TIME(6)*60000+MP_END_TIME(7)*1000+MP_END_TIME(8)-MP_START_TIME(5)*3600000-MP_START_TIME(6)*60000-MP_START_TIME(7)*1000-MP_START_TIME(8)) + !print*, 'MPtime=', MP_SolDuration + if(MP_SolDuration > 0.0) then + Call sleepqq(MP_SolDuration) + end if + + if (IsPortable) then + PUMP(1)%AssignmentSwitchh = 1 + else + PUMP(1)%AssignmentSwitchh = AssignmentSwitch + end if + if ((any(PUMP(1)%AssignmentSwitchh==(/5,6,7,8,11,12/))) .or. (MP1CPSwitch/=-1) .or. (IsStopped == .true.)) then + PUMP(1)%SoundBlower = .false. + Call SetSoundBlowerMP1(PUMP(1)%SoundBlower) + MP1BLWR = 0 + Call Pump1_OffMode_Solver(1) + Call ClosePump1() + exit loop2 + end if + end do loop2 + + else if( (MP1CPSwitch==1) .and. (MP1Throttle==0.) .and. (PUMP(3)%PowerFailMalf==0) ) then + + loop3: do + Call DATE_AND_TIME(values=MP_START_TIME) + !print*, 'PUMP(3) is on' + + ! Pump3 Malfunction ----> Power Failure + if (PUMP(3)%PowerFailMalf==1) then + Call Pump3_OffMode_Solver + !Call ClosePump3() + exit loop3 + end if + + + ! Pump3 Warning ----> Failure + if (Pump3Failure==1) then + !MP1BLWR=0 + Call Pump3_OffMode_Solver + !Call ClosePump3() !????????????? + exit loop3 + end if + + + PUMP(3)%N_new = MP1Throttle + if (((PUMP(3)%N_new-PUMP(3)%N_old)/PUMP(3)%time_step)>193.) then + PUMP(3)%N_ref =(193.*PUMP(3)%time_step)+PUMP(3)%N_old + else if (((PUMP(3)%N_old-PUMP(3)%N_new)/PUMP(3)%time_step)>193.) then + PUMP(3)%N_ref = (-193.*PUMP(3)%time_step)+PUMP(3)%N_old + else + PUMP(3)%N_ref = PUMP(3)%N_new + end if + + Call Pump3_OnMode_Solver + + IF (PUMP(3)%Flow_Rate>0.) Then + Call OpenCementPump() + Else + Call CloseCementPump() + End if + + PUMP(3)%N_old = PUMP(3)%N_ref + + Call DATE_AND_TIME(values=MP_END_TIME) + MP_SolDuration = 100-(MP_END_TIME(5)*3600000+MP_END_TIME(6)*60000+MP_END_TIME(7)*1000+MP_END_TIME(8)-MP_START_TIME(5)*3600000-MP_START_TIME(6)*60000-MP_START_TIME(7)*1000-MP_START_TIME(8)) + !print*, 'MPtime=', MP_SolDuration + if(MP_SolDuration > 0.0) then + Call sleepqq(MP_SolDuration) + end if + + if ((MP1CPSwitch/=1) .or. (IsStopped == .true.)) then + Call Pump3_OffMode_Solver + Call CloseCementPump() + exit loop3 + end if + end do loop3 + else + !print*, 'pumps off' + if (IsPortable) then + PUMP(1)%AssignmentSwitchh = 1 + !print*, 'PUMP(1)%AssignmentSwitchh2=' , PUMP(1)%AssignmentSwitchh + else + PUMP(1)%AssignmentSwitchh = AssignmentSwitch + !print*, 'PUMP(1)%AssignmentSwitchh22=' , PUMP(1)%AssignmentSwitchh , AssignmentSwitch + end if + if ((any(PUMP(1)%AssignmentSwitchh==(/1,2,3,4,9,10/))) .and. (MP1CPSwitch==-1)) then + PUMP(1)%SoundBlower = .true. + Call SetSoundBlowerMP1(PUMP(1)%SoundBlower) + MP1BLWR = 1 + else + PUMP(1)%SoundBlower = .false. + Call SetSoundBlowerMP1(PUMP(1)%SoundBlower) + MP1BLWR = 0 + end if + + + Call Pump1_OffMode_Solver(1) + Call ClosePump1() + Call Pump3_OffMode_Solver + Call CloseCementPump() + !print*, 'PUMP(1)%off=', PUMP(1)%dt , PUMP(1)%ia , PUMP(1)%w , PUMP(1)%n , PUMP(1)%x + end if + end subroutine Pump1_Step + + subroutine Pump1_Output + implicit none + end subroutine Pump1_Output + + subroutine Pump1MainBody + use ifport + use ifmt + use CWarningsVariables + !use equipments_PowerLimit + implicit none + + integer,dimension(8) :: MP_START_TIME, MP_END_TIME + INTEGER :: MP_SolDuration + + Call Pump_StartUp + loop1 : do + Call sleepqq(10) + Call DrillingConsole_ScrLEDs + !Call Pump_Total_Counts + ! Pump1 Malfunction ----> Power Failure + if (PUMP(1)%PowerFailMalf==1) then + !MP1BLWR=0 + Call Pump1_OffMode_Solver(1) + Call ClosePump1() + end if + ! Pump1 Warning ----> Failure + if (Pump1Failure==1) then + !MP1BLWR=0 + Call Pump1_OffMode_Solver(1) + Call ClosePump1() + end if + + + ! Pump3 Malfunction ----> Power Failure + if (PUMP(3)%PowerFailMalf==1) then + Call Pump3_OffMode_Solver + !Call ClosePump3() + end if + ! Pump3 Warning ----> Failure + if (Pump3Failure==1) then + Call Pump3_OffMode_Solver + !Call ClosePump3() + end if + + + !print*, 'MP1Throttle=', MP1Throttle + if (IsPortable) then + PUMP(1)%AssignmentSwitchh = 1 + else + PUMP(1)%AssignmentSwitchh = AssignmentSwitch + end if + if((any(PUMP(1)%AssignmentSwitchh==(/1,2,3,4,9,10/))) .and. (MP1CPSwitch==-1) .and. (MP1Throttle==0.) .and. (PUMP(1)%PowerFailMalf==0)) then + !print*, 'pumps on' + !print*, 'PUMP(1)%AssignmentSwitchh=' , PUMP(1)%AssignmentSwitchh + PUMP(1)%SoundBlower = .true. + Call SetSoundBlowerMP1(PUMP(1)%SoundBlower) + MP1BLWR = 1 + + loop2: do + Call DrillingConsole_ScrLEDs + Call Pump_Total_Counts + + Call DATE_AND_TIME(values=MP_START_TIME) + + ! Pump1 Malfunction ----> Power Failure + if (PUMP(1)%PowerFailMalf==1) then + !MP1BLWR=0 + Call Pump1_OffMode_Solver(1) + Call ClosePump1() + exit loop2 + end if + + + ! Pump1 Warning ----> Failure + if (Pump1Failure==1) then + !MP1BLWR=0 + Call Pump1_OffMode_Solver(1) + Call ClosePump1() + exit loop2 + end if + + + PUMP(1)%N_new = MP1Throttle + if (((PUMP(1)%N_new-PUMP(1)%N_old)/PUMP(1)%time_step)>193.) then + PUMP(1)%N_ref =(193.*PUMP(1)%time_step)+PUMP(1)%N_old + else if (((PUMP(1)%N_old-PUMP(1)%N_new)/PUMP(1)%time_step)>193.) then + PUMP(1)%N_ref = (-193.*PUMP(1)%time_step)+PUMP(1)%N_old + else + PUMP(1)%N_ref = PUMP(1)%N_new + end if + !print*, 'PUMP(1)%N_ref=' , PUMP(1)%N_ref , MP1Throttle + Call Pump1_OnMode_Solver(1) + + !IF (PUMP(1)%Flow_Rate>0.) Then + ! Call OpenPump1() + !Else + ! Call ClosePump1() + !End if + + PUMP(1)%N_old = PUMP(1)%N_ref + + Call DATE_AND_TIME(values=MP_END_TIME) + MP_SolDuration = 100-(MP_END_TIME(5)*3600000+MP_END_TIME(6)*60000+MP_END_TIME(7)*1000+MP_END_TIME(8)-MP_START_TIME(5)*3600000-MP_START_TIME(6)*60000-MP_START_TIME(7)*1000-MP_START_TIME(8)) + !print*, 'MPtime=', MP_SolDuration + if(MP_SolDuration > 0.0) then + Call sleepqq(MP_SolDuration) + end if + + if (IsPortable) then + PUMP(1)%AssignmentSwitchh = 1 + else + PUMP(1)%AssignmentSwitchh = AssignmentSwitch + end if + if ((any(PUMP(1)%AssignmentSwitchh==(/5,6,7,8,11,12/))) .or. (MP1CPSwitch/=-1) .or. (IsStopped == .true.)) then + PUMP(1)%SoundBlower = .false. + Call SetSoundBlowerMP1(PUMP(1)%SoundBlower) + MP1BLWR = 0 + Call Pump1_OffMode_Solver(1) + Call ClosePump1() + exit loop2 + end if + end do loop2 + + else if( (MP1CPSwitch==1) .and. (MP1Throttle==0.) .and. (PUMP(3)%PowerFailMalf==0) ) then + + loop3: do + Call DATE_AND_TIME(values=MP_START_TIME) + !print*, 'PUMP(3) is on' + + ! Pump3 Malfunction ----> Power Failure + if (PUMP(3)%PowerFailMalf==1) then + Call Pump3_OffMode_Solver + !Call ClosePump3() + exit loop3 + end if + + + ! Pump3 Warning ----> Failure + if (Pump3Failure==1) then + !MP1BLWR=0 + Call Pump3_OffMode_Solver + !Call ClosePump3() !????????????? + exit loop3 + end if + + + PUMP(3)%N_new = MP1Throttle + if (((PUMP(3)%N_new-PUMP(3)%N_old)/PUMP(3)%time_step)>193.) then + PUMP(3)%N_ref =(193.*PUMP(3)%time_step)+PUMP(3)%N_old + else if (((PUMP(3)%N_old-PUMP(3)%N_new)/PUMP(3)%time_step)>193.) then + PUMP(3)%N_ref = (-193.*PUMP(3)%time_step)+PUMP(3)%N_old + else + PUMP(3)%N_ref = PUMP(3)%N_new + end if + + Call Pump3_OnMode_Solver + + IF (PUMP(3)%Flow_Rate>0.) Then + Call OpenCementPump() + Else + Call CloseCementPump() + End if + + PUMP(3)%N_old = PUMP(3)%N_ref + + Call DATE_AND_TIME(values=MP_END_TIME) + MP_SolDuration = 100-(MP_END_TIME(5)*3600000+MP_END_TIME(6)*60000+MP_END_TIME(7)*1000+MP_END_TIME(8)-MP_START_TIME(5)*3600000-MP_START_TIME(6)*60000-MP_START_TIME(7)*1000-MP_START_TIME(8)) + !print*, 'MPtime=', MP_SolDuration + if(MP_SolDuration > 0.0) then + Call sleepqq(MP_SolDuration) + end if + + if ((MP1CPSwitch/=1) .or. (IsStopped == .true.)) then + Call Pump3_OffMode_Solver + Call CloseCementPump() + exit loop3 + end if + end do loop3 + + else + !print*, 'pumps off' + if (IsPortable) then + PUMP(1)%AssignmentSwitchh = 1 + !print*, 'PUMP(1)%AssignmentSwitchh2=' , PUMP(1)%AssignmentSwitchh + else + PUMP(1)%AssignmentSwitchh = AssignmentSwitch + !print*, 'PUMP(1)%AssignmentSwitchh22=' , PUMP(1)%AssignmentSwitchh , AssignmentSwitch + end if + if ((any(PUMP(1)%AssignmentSwitchh==(/1,2,3,4,9,10/))) .and. (MP1CPSwitch==-1)) then + PUMP(1)%SoundBlower = .true. + Call SetSoundBlowerMP1(PUMP(1)%SoundBlower) + MP1BLWR = 1 + else + PUMP(1)%SoundBlower = .false. + Call SetSoundBlowerMP1(PUMP(1)%SoundBlower) + MP1BLWR = 0 + end if + + + Call Pump1_OffMode_Solver(1) + Call ClosePump1() + Call Pump3_OffMode_Solver + Call CloseCementPump() + !print*, 'PUMP(1)%off=', PUMP(1)%dt , PUMP(1)%ia , PUMP(1)%w , PUMP(1)%n , PUMP(1)%x + + end if + + if (IsStopped == .true.) then + exit loop1 + end if + + end do loop1 + + + end subroutine Pump1MainBody + + + + + +! **************************************** +! ***** subroutine Pump2MainBody ***** +! **************************** + subroutine Pump2_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(Pump2_Init) + call OnSimulationStop%Add(Pump2_Init) + call OnPump2Step%Add(Pump2_Step) + call OnPump2Output%Add(Pump2_Output) + call OnPump2Main%Add(Pump2MainBody) + end subroutine + + subroutine Pump2_Init + implicit none + end subroutine Pump2_Init + + subroutine Pump2_Step + implicit none + end subroutine Pump2_Step + + subroutine Pump2_Output + implicit none + end subroutine Pump2_Output + + subroutine Pump2MainBody + use ifport + use ifmt + use CWarningsVariables + implicit none + + integer,dimension(8) :: MP_START_TIME, MP_END_TIME + INTEGER :: MP_SolDuration + + Call Pump_StartUp + loop1 : do + + Call sleepqq(10) + + ! Pump2 Malfunction ----> Power Failure + if (PUMP(2)%PowerFailMalf==1) then + Call ClosePump2() + !MP2BLWR=0 + Call Pump2_OffMode_Solver(2) + end if + + + ! Pump2 Warning ----> Failure + if (Pump2Failure==1) then + !MP1BLWR=0 + Call Pump2_OffMode_Solver(2) + Call ClosePump2() + end if + + + if (IsPortable) then + PUMP(2)%AssignmentSwitchh = 1 + else + PUMP(2)%AssignmentSwitchh = AssignmentSwitch + end if + if((any(PUMP(2)%AssignmentSwitchh==(/1,2,3,4,5,7,8,11/))) .and. (MP2Switch==1) .and. (MP2Throttle==0.).and. (PUMP(2)%PowerFailMalf==0)) then + + PUMP(2)%SoundBlower = .true. + Call SetSoundBlowerMP2(PUMP(2)%SoundBlower) + MP2BLWR = 1 + + loop2: do + CALL DATE_AND_TIME(values=MP_START_TIME) + + ! Pump2 Malfunction ----> Power Failure + if (PUMP(2)%PowerFailMalf==1) then + Call ClosePump2() + !MP2BLWR=0 + Call Pump2_OffMode_Solver(2) + exit loop2 + end if + + + ! Pump2 Warning ----> Failure + if (Pump2Failure==1) then + Call ClosePump2() + !MP2BLWR=0 + Call Pump2_OffMode_Solver(2) + exit loop2 + end if + + + PUMP(2)%N_new = MP2Throttle + if (((PUMP(2)%N_new-PUMP(2)%N_old)/PUMP(2)%time_step)>193.) then + PUMP(2)%N_ref = (193.*PUMP(2)%time_step)+PUMP(2)%N_old + else if (((PUMP(2)%N_old-PUMP(2)%N_new)/PUMP(2)%time_step)>193.) then + PUMP(2)%N_ref = (-193.*PUMP(2)%time_step)+PUMP(2)%N_old + else + PUMP(2)%N_ref = PUMP(2)%N_new + end if + + Call Pump2_OnMode_Solver(2) + + !IF (PUMP(2)%Flow_Rate>0.) Then + ! Call OpenPump2() + !Else + ! Call ClosePump2() + !End if + + PUMP(2)%N_old=PUMP(2)%N_ref + + Call DATE_AND_TIME(values=MP_END_TIME) + MP_SolDuration = 100-(MP_END_TIME(5)*3600000+MP_END_TIME(6)*60000+MP_END_TIME(7)*1000+MP_END_TIME(8)-MP_START_TIME(5)*3600000-MP_START_TIME(6)*60000-MP_START_TIME(7)*1000-MP_START_TIME(8)) + !print*, 'MPtime=', MP_SolDuration + if(MP_SolDuration > 0.0d0) then + CALL sleepqq(MP_SolDuration) + end if + + if (IsPortable) then + PUMP(2)%AssignmentSwitchh = 1 + else + PUMP(2)%AssignmentSwitchh = AssignmentSwitch + end if + if ((any(PUMP(2)%AssignmentSwitchh==(/6,9,10,12/))) .or. (MP2Switch==0) .or. (IsStopped == .true.)) then + Call ClosePump2() + PUMP(2)%SoundBlower = .false. + Call SetSoundBlowerMP2(PUMP(2)%SoundBlower) + MP2BLWR = 0 + Call Pump2_OffMode_Solver(2) + exit loop2 + end if + + end do loop2 + + else + + if (IsPortable) then + PUMP(2)%AssignmentSwitchh = 1 + else + PUMP(2)%AssignmentSwitchh = AssignmentSwitch + end if + if((any(PUMP(2)%AssignmentSwitchh==(/1,2,3,4,5,7,8,11/))) .and. (MP2Switch==1)) then + PUMP(2)%SoundBlower = .true. + Call SetSoundBlowerMP2(PUMP(2)%SoundBlower) + MP2BLWR = 1 + else + PUMP(2)%SoundBlower = .false. + Call SetSoundBlowerMP2(PUMP(2)%SoundBlower) + MP2BLWR = 0 + end if + + PUMP(2)%N_ref = MP2Throttle + Call ClosePump2() + Call Pump2_OffMode_Solver(2) + + end if + + if (IsStopped == .true.) then + exit loop1 + end if + + end do loop1 + + + end subroutine Pump2MainBody + + + + +! **************************************** +! ***** subroutine Pump3MainBody ***** +! **************************** + subroutine Pump3_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(Pump3_Init) + call OnSimulationStop%Add(Pump3_Init) + call OnPump3Step%Add(Pump3_Step) + call OnPump3Output%Add(Pump3_Output) + call OnPump3Main%Add(Pump3MainBody) + end subroutine + + subroutine Pump3_Init + implicit none + end subroutine Pump3_Init + + subroutine Pump3_Step + implicit none + end subroutine Pump3_Step + + subroutine Pump3_Output + implicit none + end subroutine Pump3_Output + + subroutine Pump3MainBody + use ifport + use ifmt + implicit none + + + integer,dimension(8) :: MP_START_TIME, MP_END_TIME + INTEGER :: MP_SolDuration + + !Call Pump_StartUp + !loop1 : do + ! + ! Call sleepqq(10) + ! + ! !!! Pump3 Malfunction ----> Power Failure + ! !!if (PUMP(1)%PowerFailMalf==1) then + ! !! !MP1BLWR=0 + ! !! Call Pump3_OffMode_Solver + ! !! Call ClosePump1() + ! !!end if + ! + ! !if( (MP1CPSwitch==1) .and. (MP1Throttle==0.) .and. (PUMP(3)%PowerFailMalf==0) ) then + !! + !! loop2: do + !! + !! Call DATE_AND_TIME(values=MP_START_TIME) + !! + !!!! ! Pump3 Malfunction ----> Power Failure + !!!! if (PUMP(1)%PowerFailMalf==1) then + !!!! !MP1BLWR=0 + !!!! Pump3_OffMode_Solver + !!!! Call ClosePump1() + !!!! exit loop2 + !!!! end if + !! + !! PUMP(3)%N_new = MP1Throttle + !! if (((PUMP(3)%N_new-PUMP(3)%N_old)/PUMP(3)%time_step)>193.) then + !! PUMP(3)%N_ref =(193.*PUMP(3)%time_step)+PUMP(3)%N_old + !! else if (((PUMP(3)%N_old-PUMP(3)%N_new)/PUMP(3)%time_step)>193.) then + !! PUMP(3)%N_ref = (-193.*PUMP(3)%time_step)+PUMP(3)%N_old + !! else + !! PUMP(3)%N_ref = PUMP(3)%N_new + !! end if + !! + !! Call Pump3_OnMode_Solver + !! + !! IF (PUMP(3)%Flow_Rate>0.) Then + !! Call OpenCementPump() + !! Else + !! Call CloseCementPump() + !! End if + !! + !! PUMP(3)%N_old = PUMP(3)%N_ref + !! + !! Call DATE_AND_TIME(values=MP_END_TIME) + !! MP_SolDuration = 100-(MP_END_TIME(6)*60000+MP_END_TIME(7)*1000+MP_END_TIME(8)-MP_START_TIME(6)*60000-MP_START_TIME(7)*1000-MP_START_TIME(8)) + !! !print*, 'MPtime=', MP_SolDuration + !! if(MP_SolDuration > 0.0) then + !! Call sleepqq(MP_SolDuration) + !! end if + !! + !! if ((MP1CPSwitch==0) .or. (IsStopped == .true.)) then + !! Call Pump3_OffMode_Solver + !! Call CloseCementPump() + !! exit loop2 + !! end if + !! end do loop2 + ! + ! else + ! + ! !Call Pump3_OffMode_Solver + ! !Call CloseCementPump() + ! + ! end if + ! + ! if (IsStopped == .true.) then + ! exit loop1 + ! end if + ! + !end do loop1 + + + end subroutine Pump3MainBody + +end module PumpsMain \ No newline at end of file diff --git a/Equipments/Pumps.old/pump_diff_eqs.f90 b/Equipments/Pumps.old/pump_diff_eqs.f90 new file mode 100644 index 0000000..091a1f3 --- /dev/null +++ b/Equipments/Pumps.old/pump_diff_eqs.f90 @@ -0,0 +1,105 @@ +subroutine Pump_dia(x1,x2,x3,x5,x6,Pump_No) + + use Pump_VARIABLES + use equipments_PowerLimit + + + IMPLICIT NONE + INTEGER :: Pump_No + REAL :: x1,x2,x3,x4,x5,x6 + + !Power_sigma=2.*(PUMP(1)%Vt*PUMP(1)%ia_new)+2.*(PUMP(2)%Vt*PUMP(2)%ia_new)+2.*(PUMP(3)%Vt*PUMP(3)%ia_new)+(RTable%Vt*RTable%ia_new)+2.*(Drawworks%Vt*Drawworks%ia_new) + + PUMP(Pump_No)%Vt = PUMP(Pump_No)%x_new+Kpi*((Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi)))+20.d0-PUMP(Pump_No)%ia_new) + IF (PUMP(Pump_No)%Vt>810.) THEN + PUMP(Pump_No)%Vt = 810.0 + ELSE IF (PUMP(Pump_No)%Vt<0.) THEN + PUMP(Pump_No)%Vt = 0.0d0 + END IF + + !call PowerLimits + ! + !if (Power_sigma>max_Power_sigma) then + ! PUMP(Pump_No)%Vt=PUMP(Pump_No)%Vt_old + !else + ! PUMP(Pump_No)%Vt=x6+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*x3/pi))-x2) + ! IF (PUMP(Pump_No)%Vt>810.) THEN + ! PUMP(Pump_No)%Vt=810. + !ELSE IF (PUMP(Pump_No)%Vt<0.) THEN + ! PUMP(Pump_No)%Vt=0. + !END IF + + + ! PUMP(Pump_No)%Vt_old=PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + ! IF (PUMP(Pump_No)%Vt_old>810.) THEN + ! PUMP(Pump_No)%Vt_old=810. + !ELSE IF (PUMP(Pump_No)%Vt_old<0.) THEN + ! PUMP(Pump_No)%Vt_old=0. + !END IF + + + !end if + + !IF (PUMP(Pump_No)%Vt>810.) THEN + ! PUMP(Pump_No)%Vt=810. + !ELSE IF (PUMP(Pump_No)%Vt<0.) THEN + ! PUMP(Pump_No)%Vt=0. + !END IF + + !PUMP(Pump_No)%Vt_old=PUMP(Pump_No)%Vt + + + !IF (x2<=1150.) THEN + ! x5 = 6.3304d-3*x2 + !ELSE IF (x2>1150.) THEN + ! x5 = 2.8571d-7*(x2-1150.)+7.28 + !END IF + x5 = 6.3304d-3*1150.0 + + PUMP(Pump_No)%Ea = x5*x3 + PUMP(Pump_No)%dia = (PUMP(Pump_No)%Vt-(Ra+Rf)*x2-PUMP(Pump_No)%Ea)/(La+Lf) + +end subroutine + + + + + + +!------------------------------------------------------------ +subroutine Pump_dw(x1,x2,x3,x4,x5,Pump_No) + + use Pump_VARIABLES + + IMPLICIT NONE + INTEGER :: Pump_No + REAL :: x1,x2,x3,x4,x5 + + !IF (x2<=1150.) THEN + ! x4 = 6.3304d-3*x2 + !ELSE IF (x2>1150.) THEN + ! x4 = 2.8571d-7*(x2-1150.)+7.28 + !END IF + x4 = 6.3304d-3*1150.0 + + PUMP(Pump_No)%Te = x4*x2 + PUMP(Pump_No)%dw = (PUMP(Pump_No)%Te-x5)/PUMP(Pump_No)%J_coef + +end subroutine + + + + + +!------------------------------------------------------------ +subroutine Pump_dx(x1,x2,x3,x4,Pump_No) + + use Pump_VARIABLES + + IMPLICIT NONE + INTEGER :: Pump_No + REAL :: x1,x2,x3,x4 + + PUMP(Pump_No)%dx = Kii*((Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*x3/pi)))+20.d0-x2) + +end subroutine \ No newline at end of file diff --git a/Equipments/Pumps.rar b/Equipments/Pumps.rar new file mode 100644 index 0000000000000000000000000000000000000000..a26a9681ba8734da6d33e32809c5509c23bf8754 GIT binary patch literal 13110 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 G@c#fgZIzw? literal 0 HcmV?d00001 diff --git a/Equipments/Pumps.rar.old b/Equipments/Pumps.rar.old new file mode 100644 index 0000000000000000000000000000000000000000..045fb7dccd27de39f2323cd17b322df67ef189d0 GIT binary patch literal 15312 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 OpQ#6UJOO@!1N=Xt1=Omax_Power_sigma) then + PUMP(Pump_No)%Vt_old = PUMP(Pump_No)%Vt_old + else + PUMP(Pump_No)%Vt_old = PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + IF (PUMP(Pump_No)%Vt_old>810.) THEN + PUMP(Pump_No)%Vt_old = 810. + ELSE IF (PUMP(Pump_No)%Vt_old<0.) THEN + PUMP(Pump_No)%Vt_old = 0. + END IF + + end if + + !PUMP(Pump_No)%Vt=PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + !IF (PUMP(Pump_No)%Vt>810.) THEN + ! PUMP(Pump_No)%Vt=810. + !ELSE IF (PUMP(Pump_No)%Vt<0.) THEN + ! PUMP(Pump_No)%Vt=0. + !END IF + + PUMP(Pump_No)%Speed = 30.*PUMP(Pump_No)%w_new/pi !Speed [RPM] + + Call Set_MP1SPMGauge( sngl(1-PUMP(1)%SPMGaugeMalf)*real((PUMP(1)%Speed/PUMP(1)%Trans_Ratio),8) ) + SPM1 = MP1SPMGauge + Call Set_MP2SPMGauge( sngl(1-PUMP(2)%SPMGaugeMalf)*real((PUMP(2)%Speed/PUMP(2)%Trans_Ratio),8) ) + SPM2 = MP2SPMGauge + + Call Pump_Solver(Pump_No) + Call Pump_Total_Counts + !print*, 'PUMP(1)%Flow_Rate=' , PUMP(1)%Flow_Rate + IF (PUMP(1)%Flow_Rate>0.) Then + Call OpenPump1() + !print*, 'open pump 1' + Else + Call ClosePump1() + !print*, 'close pump 1' + End if + + IF (PUMP(2)%Flow_Rate>0.) Then + Call OpenPump2() + Else + Call ClosePump2() + End if + + +end subroutine ON_mode_simulation \ No newline at end of file diff --git a/Equipments/Pumps/Off_mode_Simulation.f90 b/Equipments/Pumps/Off_mode_Simulation.f90 new file mode 100644 index 0000000..529ebf4 --- /dev/null +++ b/Equipments/Pumps/Off_mode_Simulation.f90 @@ -0,0 +1,51 @@ +subroutine Off_mode_Simulation(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + + IMPLICIT NONE + INTEGER :: Pump_No + + CALL Pump_INPUTS + + !================================================================== + ! Rate limit for off Mode + + Do while (((PUMP(Pump_No)%N_old-0.0d0)/PUMP(Pump_No)%time_step)>386.) + PUMP(Pump_No)%N_ref = (-386.*PUMP(Pump_No)%time_step)+PUMP(Pump_No)%N_old + !else + ! PUMP(1)%N_ref=0.0d0 + !end if + + Call ON_mode_simulation(Pump_No) + + PUMP(Pump_No)%N_old = PUMP(Pump_No)%N_ref + Call sleepqq (80) !????????????????? + End Do + !================================================================== + + PUMP(Pump_No)%Speed = 0.0d0 + Call Set_MP1SPMGauge( sngl(1-PUMP(1)%SPMGaugeMalf)*real((PUMP(1)%Speed/PUMP(1)%Trans_Ratio),8) ) + SPM1 = MP1SPMGauge + Call Set_MP2SPMGauge( sngl(1-PUMP(2)%SPMGaugeMalf)*real((PUMP(2)%Speed/PUMP(2)%Trans_Ratio),8) ) + SPM2 = MP2SPMGauge + PUMP(Pump_No)%w = 0. + PUMP(Pump_No)%w_old = 0.0d0 + PUMP(Pump_No)%w_new = 0.0d0 + PUMP(Pump_No)%ia = 0.0d0 + PUMP(Pump_No)%ia_old = 0.0d0 + PUMP(Pump_No)%ia_new = 0.0d0 + PUMP(Pump_No)%x = 0.0d0 + PUMP(Pump_No)%x_old = 0.0d0 + PUMP(Pump_No)%x_new = 0.0d0 + + Call Pump_Solver(Pump_No) + + Call Pump_Total_Counts + + +end subroutine off_mode_simulation \ No newline at end of file diff --git a/Equipments/Pumps/Pump1_MainSolver.f90 b/Equipments/Pumps/Pump1_MainSolver.f90 new file mode 100644 index 0000000..3bb1ffb --- /dev/null +++ b/Equipments/Pumps/Pump1_MainSolver.f90 @@ -0,0 +1,109 @@ +subroutine Pump1_MainSolver + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use equipments_PowerLimit + use CSounds + use CWarningsVariables + + + IMPLICIT NONE + + + Call DrillingConsole_ScrLEDs + Call Pump_Total_Counts + + if (MP1Throttle<=0.e0) then + PUMP(1)%K_throttle = 1 + end if + + if (IsPortable) then + PUMP(1)%AssignmentSwitchh = 1 + else + PUMP(1)%AssignmentSwitchh = AssignmentSwitch + end if + + if((any(PUMP(1)%AssignmentSwitchh==(/1,2,3,4,9,10/))) .and. (MP1CPSwitch==-1) .and. (PUMP(1)%K_throttle==1) .and. (PUMP(1)%PowerFailMalf==0) .and. (Pump1Failure==0) .and. (IsStopped == .false.)) then + + PUMP(1)%SoundBlower = .true. + Call SetSoundBlowerMP1(PUMP(1)%SoundBlower) + MP1BLWR = 1 + + !Call DrillingConsole_ScrLEDs + !Call Pump_Total_Counts + + + PUMP(1)%N_new = MP1Throttle + if (((PUMP(1)%N_new-PUMP(1)%N_old)/PUMP(1)%time_step)>193.) then + PUMP(1)%N_ref =(193.*PUMP(1)%time_step)+PUMP(1)%N_old + else if (((PUMP(1)%N_old-PUMP(1)%N_new)/PUMP(1)%time_step)>193.) then + PUMP(1)%N_ref = (-193.*PUMP(1)%time_step)+PUMP(1)%N_old + else + PUMP(1)%N_ref = PUMP(1)%N_new + end if + + Call Pump1_OnMode_Solver(1) + + !IF (PUMP(1)%Flow_Rate>0.) Then + ! Call OpenPump1() + !Else + ! Call ClosePump1() + !End if + + PUMP(1)%N_old = PUMP(1)%N_ref + + + + else if( (MP1CPSwitch==1) .and. (PUMP(1)%K_throttle==1) .and. (PUMP(3)%PowerFailMalf==0) .and. (Pump3Failure==0) .and. (IsStopped == .false.)) then + + + PUMP(3)%N_new = MP1Throttle + if (((PUMP(3)%N_new-PUMP(3)%N_old)/PUMP(3)%time_step)>193.) then + PUMP(3)%N_ref =(193.*PUMP(3)%time_step)+PUMP(3)%N_old + else if (((PUMP(3)%N_old-PUMP(3)%N_new)/PUMP(3)%time_step)>193.) then + PUMP(3)%N_ref = (-193.*PUMP(3)%time_step)+PUMP(3)%N_old + else + PUMP(3)%N_ref = PUMP(3)%N_new + end if + + Call Pump3_OnMode_Solver + + IF (PUMP(3)%Flow_Rate>0.) Then + Call OpenCementPump() + Else + Call CloseCementPump() + End if + + PUMP(3)%N_old = PUMP(3)%N_ref + + + + else + + if ((any(PUMP(1)%AssignmentSwitchh==(/1,2,3,4,9,10/))) .and. (MP1CPSwitch==-1) .and. (IsStopped == .false.)) then + PUMP(1)%SoundBlower = .true. + Call SetSoundBlowerMP1(PUMP(1)%SoundBlower) + MP1BLWR = 1 + else + PUMP(1)%SoundBlower = .false. + Call SetSoundBlowerMP1(PUMP(1)%SoundBlower) + MP1BLWR = 0 + end if + + + Call Pump1_OffMode_Solver(1) + Call ClosePump1() + Call Pump3_OffMode_Solver + Call CloseCementPump() + + PUMP(1)%K_throttle = 0 + + + end if + + +end subroutine Pump1_MainSolver \ No newline at end of file diff --git a/Equipments/Pumps/Pump1_OffMode_Solver.f90 b/Equipments/Pumps/Pump1_OffMode_Solver.f90 new file mode 100644 index 0000000..87d4b1d --- /dev/null +++ b/Equipments/Pumps/Pump1_OffMode_Solver.f90 @@ -0,0 +1,66 @@ +subroutine Pump1_OffMode_Solver(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use CSounds + + + IMPLICIT NONE + INTEGER :: Pump_No + + + + CALL Pump_INPUTS + + + + !================================================================== + ! Rate limit for off Mode + + if (((PUMP(Pump_No)%N_old-0.0d0)/PUMP(Pump_No)%time_step)>386.0d0) then + PUMP(Pump_No)%N_ref = (-386.0d0*PUMP(Pump_No)%time_step)+PUMP(Pump_No)%N_old + !else + ! PUMP(1)%N_ref=0.0d0 + !end if + + Call Pump1_OnMode_Solver(Pump_No) + + PUMP(Pump_No)%N_old = PUMP(Pump_No)%N_ref + + !================================================================== + else + + + PUMP(Pump_No)%Speed = 0.0d0 + PUMP(Pump_No)%w = 0.0d0 + PUMP(Pump_No)%w_old = 0.0d0 + PUMP(Pump_No)%w_new = 0.0d0 + PUMP(Pump_No)%ia = 0.0d0 + PUMP(Pump_No)%ia_old = 0.0d0 + PUMP(Pump_No)%ia_new = 0.0d0 + PUMP(Pump_No)%x = 0.0d0 + PUMP(Pump_No)%x_old = 0.0d0 + PUMP(Pump_No)%x_new = 0.0d0 + + + Call Pump_Solver(Pump_No) + + Call Pump_Total_Counts + + + + Call Set_MP1SPMGauge( sngl(1-PUMP(1)%SPMGaugeMalf)*real((PUMP(1)%Speed/PUMP(1)%Trans_Ratio),8) ) + SPM1 = MP1SPMGauge + PUMP(1)%SoundSPM = INT(PUMP(1)%Speed/PUMP(1)%Trans_Ratio) + Call SetSoundMP1( PUMP(1)%SoundSPM ) + !Call Set_MP2SPMGauge( real((PUMP(2)%Speed/PUMP(2)%Trans_Ratio),8) ) + !SPM2 = MP2SPMGauge + + + End if + +end subroutine Pump1_OffMode_Solver \ No newline at end of file diff --git a/Equipments/Pumps/Pump1_OnMode_Solver.f90 b/Equipments/Pumps/Pump1_OnMode_Solver.f90 new file mode 100644 index 0000000..358ba54 --- /dev/null +++ b/Equipments/Pumps/Pump1_OnMode_Solver.f90 @@ -0,0 +1,120 @@ +subroutine Pump1_OnMode_Solver(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use equipments_PowerLimit + use CSounds + use CWarningsVariables + + + IMPLICIT NONE + INTEGER :: Pump_No + + + + Call Pump_INPUTS + + + ! Torque unit = [in.lbf] + PUMP(Pump_No)%Torque = (63025./132000.)*(1./PUMP(Pump_No)%Trans_Ratio)*(PUMP(Pump_No)%Piston_Area*PUMP(Pump_No)%Stroke_Length*PUMP(Pump_No)%StandPipe_Pressure/PUMP(Pump_No)%Mech_Efficiency/PUMP(Pump_No)%Vol_Efficiency) + + !call PowerLimits + + !print*, 'PUMP(1)%Torque=', PUMP(1)%Torque + Call Pump_Traction_Motor(Pump_No) + + !print*, 'PUMP(1)%w_new=', PUMP(1)%w_new + + if (PUMP(Pump_No)%N_ref<=0.) then + PUMP(Pump_No)%w_ref = 0. + PUMP(Pump_No)%w_old = 0. + PUMP(Pump_No)%w = 0. + PUMP(Pump_No)%w_new = 0. + PUMP(Pump_No)%ia_old = 0. + PUMP(Pump_No)%ia = 0. + PUMP(Pump_No)%ia_new = 0. + PUMP(Pump_No)%x_old = 0. + PUMP(Pump_No)%x = 0. + PUMP(Pump_No)%x_new = 0. + end if + + + + + if (Power_sigma>max_Power_sigma) then + PUMP(Pump_No)%Vt_old = PUMP(Pump_No)%Vt_old + else + PUMP(Pump_No)%Vt_old = PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + IF (PUMP(Pump_No)%Vt_old>810.) THEN + PUMP(Pump_No)%Vt_old = 810. + ELSE IF (PUMP(Pump_No)%Vt_old<0.) THEN + PUMP(Pump_No)%Vt_old = 0. + END IF + end if + + + + + !PUMP(Pump_No)%Vt=PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + !IF (PUMP(Pump_No)%Vt>810.) THEN + ! PUMP(Pump_No)%Vt=810. + !ELSE IF (PUMP(Pump_No)%Vt<0.) THEN + ! PUMP(Pump_No)%Vt=0. + !END IF + + + + PUMP(Pump_No)%Speed = 30.d0*PUMP(Pump_No)%w_new/pi !Speed [RPM] + + if ( Pump1Failure == .true. ) then + PUMP(1)%Speed = 0.d0 + PUMP(1)%w = 0.d0 + PUMP(1)%w_new = 0.d0 + PUMP(1)%w_old = 0.d0 + end if + + + + Call Pump_Solver(Pump_No) + Call Pump_Total_Counts + + + + Call Set_MP1SPMGauge( sngl(1-PUMP(1)%SPMGaugeMalf)*real((PUMP(1)%Speed/PUMP(1)%Trans_Ratio),8) ) + SPM1 = MP1SPMGauge + PUMP(1)%SoundSPM = INT(PUMP(1)%Speed/PUMP(1)%Trans_Ratio) + Call SetSoundMP1( PUMP(1)%SoundSPM ) + !Call Set_MP2SPMGauge( real((PUMP(2)%Speed/PUMP(2)%Trans_Ratio),8) ) + !SPM2 = MP2SPMGauge + + + + IF (PUMP(1)%Flow_Rate>0.) Then + Call OpenPump1() + Else + Call ClosePump1() + End if + + + !IF (PUMP(2)%Flow_Rate>0.) Then + ! Call OpenPump2() + !Else + ! Call ClosePump2() + !End if + + !print*, 'PUMP(1)%Speed=', PUMP(1)%Speed + !print*, 'PUMP(1)%Torque=', PUMP(1)%Torque + !print*, 'Power_sigma=', Power_sigma + !print*, 'power_num_of_Jenerators=', power_num_of_Jenerators + !print*, 'drilling_num_of_Jenerators=', drilling_num_of_Jenerators + !print*, 'max_Power_sigma=', max_Power_sigma + !print*, 'PUMP(1)%Vt=', PUMP(1)%Vt + !print*, 'PUMP(1)%SoundSPM=', PUMP(1)%SoundSPM + !print*, 'PUMP(1)%ia_new=', PUMP(1)%ia_new + + +end subroutine Pump1_OnMode_Solver \ No newline at end of file diff --git a/Equipments/Pumps/Pump2_MainSolver.f90 b/Equipments/Pumps/Pump2_MainSolver.f90 new file mode 100644 index 0000000..e0976e1 --- /dev/null +++ b/Equipments/Pumps/Pump2_MainSolver.f90 @@ -0,0 +1,76 @@ +subroutine Pump2_MainSolver + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use equipments_PowerLimit + use CSounds + use CWarningsVariables + + + IMPLICIT NONE + + + if (MP2Throttle<=0.e0) then + PUMP(2)%K_throttle = 1 + end if + + if (IsPortable) then + PUMP(2)%AssignmentSwitchh = 1 + else + PUMP(2)%AssignmentSwitchh = AssignmentSwitch + end if + + if((any(PUMP(2)%AssignmentSwitchh==(/1,2,3,4,5,7,8,11/))) .and. (MP2Switch==1) .and. (PUMP(2)%K_throttle==1) .and. (PUMP(2)%PowerFailMalf==0) .and. (Pump2Failure==0) .and. (IsStopped == .false.)) then + + PUMP(2)%SoundBlower = .true. + Call SetSoundBlowerMP2(PUMP(2)%SoundBlower) + MP2BLWR = 1 + + + PUMP(2)%N_new = MP2Throttle + if (((PUMP(2)%N_new-PUMP(2)%N_old)/PUMP(2)%time_step)>193.) then + PUMP(2)%N_ref = (193.*PUMP(2)%time_step)+PUMP(2)%N_old + else if (((PUMP(2)%N_old-PUMP(2)%N_new)/PUMP(2)%time_step)>193.) then + PUMP(2)%N_ref = (-193.*PUMP(2)%time_step)+PUMP(2)%N_old + else + PUMP(2)%N_ref = PUMP(2)%N_new + end if + + Call Pump2_OnMode_Solver(2) + + !IF (PUMP(2)%Flow_Rate>0.) Then + ! Call OpenPump2() + !Else + ! Call ClosePump2() + !End if + + PUMP(2)%N_old=PUMP(2)%N_ref + + + else + + + if((any(PUMP(2)%AssignmentSwitchh==(/1,2,3,4,5,7,8,11/))) .and. (MP2Switch==1) .and. (IsStopped == .false.)) then + PUMP(2)%SoundBlower = .true. + Call SetSoundBlowerMP2(PUMP(2)%SoundBlower) + MP2BLWR = 1 + else + PUMP(2)%SoundBlower = .false. + Call SetSoundBlowerMP2(PUMP(2)%SoundBlower) + MP2BLWR = 0 + end if + + !PUMP(2)%N_ref = MP2Throttle + Call Pump2_OffMode_Solver(2) + Call ClosePump2() + + PUMP(2)%K_throttle = 0 + + end if + + +end subroutine Pump2_MainSolver \ No newline at end of file diff --git a/Equipments/Pumps/Pump2_OffMode_Solver.f90 b/Equipments/Pumps/Pump2_OffMode_Solver.f90 new file mode 100644 index 0000000..88c5e2c --- /dev/null +++ b/Equipments/Pumps/Pump2_OffMode_Solver.f90 @@ -0,0 +1,67 @@ +subroutine Pump2_OffMode_Solver(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use CSounds + + + IMPLICIT NONE + INTEGER :: Pump_No + + + + CALL Pump_INPUTS + + + + !================================================================== + ! Rate limit for off Mode + + if (((PUMP(Pump_No)%N_old-0.0d0)/PUMP(Pump_No)%time_step)>386.) then + PUMP(Pump_No)%N_ref = (-386.*PUMP(Pump_No)%time_step)+PUMP(Pump_No)%N_old + !else + ! PUMP(1)%N_ref=0.0d0 + !end if + + Call Pump2_OnMode_Solver(Pump_No) + + PUMP(Pump_No)%N_old = PUMP(Pump_No)%N_ref + + !================================================================== + else + + + PUMP(Pump_No)%Speed = 0.0d0 + PUMP(Pump_No)%w = 0.0d0 + PUMP(Pump_No)%w_old = 0.0d0 + PUMP(Pump_No)%w_new = 0.0d0 + PUMP(Pump_No)%ia = 0.0d0 + PUMP(Pump_No)%ia_old = 0.0d0 + PUMP(Pump_No)%ia_new = 0.0d0 + PUMP(Pump_No)%x = 0.0d0 + PUMP(Pump_No)%x_old = 0.0d0 + PUMP(Pump_No)%x_new = 0.0d0 + + + + Call Pump_Solver(Pump_No) + + Call Pump_Total_Counts + + + + !Call Set_MP1SPMGauge( real((PUMP(1)%Speed/PUMP(1)%Trans_Ratio),8) ) + !SPM1 = MP1SPMGauge + Call Set_MP2SPMGauge( sngl(1-PUMP(2)%SPMGaugeMalf)*real((PUMP(2)%Speed/PUMP(2)%Trans_Ratio),8) ) + SPM2 = MP2SPMGauge + PUMP(2)%SoundSPM = INT(PUMP(2)%Speed/PUMP(2)%Trans_Ratio) + Call SetSoundMP2( PUMP(2)%SoundSPM ) + + + end if + +end subroutine Pump2_OffMode_Solver \ No newline at end of file diff --git a/Equipments/Pumps/Pump2_OnMode_Solver.f90 b/Equipments/Pumps/Pump2_OnMode_Solver.f90 new file mode 100644 index 0000000..eba9e2f --- /dev/null +++ b/Equipments/Pumps/Pump2_OnMode_Solver.f90 @@ -0,0 +1,108 @@ +subroutine Pump2_OnMode_Solver(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use equipments_PowerLimit + use CSounds + use CWarningsVariables + + + IMPLICIT NONE + INTEGER :: Pump_No + + + + + Call Pump_INPUTS + + ! Torque unit = [in.lbf] + PUMP(Pump_No)%Torque = (63025./132000.)*(1./PUMP(Pump_No)%Trans_Ratio)*(PUMP(Pump_No)%Piston_Area*PUMP(Pump_No)%Stroke_Length*PUMP(Pump_No)%StandPipe_Pressure/PUMP(Pump_No)%Mech_Efficiency/PUMP(Pump_No)%Vol_Efficiency) + + + !call PowerLimits + + + + Call Pump_Traction_Motor(Pump_No) + + if (PUMP(Pump_No)%N_ref<=0.) then + PUMP(Pump_No)%w_ref = 0. + PUMP(Pump_No)%w_old = 0. + PUMP(Pump_No)%w = 0. + PUMP(Pump_No)%w_new = 0. + PUMP(Pump_No)%ia_old = 0. + PUMP(Pump_No)%ia = 0. + PUMP(Pump_No)%ia_new = 0. + PUMP(Pump_No)%x_old = 0. + PUMP(Pump_No)%x = 0. + PUMP(Pump_No)%x_new = 0. + end if + + + + if (Power_sigma>max_Power_sigma) then + PUMP(Pump_No)%Vt_old = PUMP(Pump_No)%Vt_old + else + PUMP(Pump_No)%Vt_old = PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + IF (PUMP(Pump_No)%Vt_old>810.) THEN + PUMP(Pump_No)%Vt_old = 810. + ELSE IF (PUMP(Pump_No)%Vt_old<0.) THEN + PUMP(Pump_No)%Vt_old = 0. + END IF + end if + + + + + !PUMP(Pump_No)%Vt=PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + !IF (PUMP(Pump_No)%Vt>810.) THEN + ! PUMP(Pump_No)%Vt=810. + !ELSE IF (PUMP(Pump_No)%Vt<0.) THEN + ! PUMP(Pump_No)%Vt=0. + !END IF + + PUMP(Pump_No)%Speed = 30.*PUMP(Pump_No)%w_new/pi !Speed [RPM] + + if ( Pump2Failure == .true. ) then + PUMP(2)%Speed = 0.d0 + PUMP(2)%w = 0.d0 + PUMP(2)%w_new = 0.d0 + PUMP(2)%w_old = 0.d0 + end if + + + Call Pump_Solver(Pump_No) + Call Pump_Total_Counts + + + + !Call Set_MP1SPMGauge( real((PUMP(1)%Speed/PUMP(1)%Trans_Ratio),8) ) + !SPM1 = MP1SPMGauge + Call Set_MP2SPMGauge( sngl(1-PUMP(2)%SPMGaugeMalf)*real((PUMP(2)%Speed/PUMP(2)%Trans_Ratio),8) ) + SPM2 = MP2SPMGauge + PUMP(2)%SoundSPM = INT(PUMP(2)%Speed/PUMP(2)%Trans_Ratio) + Call SetSoundMP2( PUMP(2)%SoundSPM ) + + + + + !IF (PUMP(1)%Flow_Rate>0.) Then + ! Call OpenPump1() + !Else + ! Call ClosePump1() + !End if + + IF (PUMP(2)%Flow_Rate>0.) Then + Call OpenPump2() + Else + Call ClosePump2() + End if + + + + +end subroutine Pump2_OnMode_Solver \ No newline at end of file diff --git a/Equipments/Pumps/Pump3_OffMode_Solver.f90 b/Equipments/Pumps/Pump3_OffMode_Solver.f90 new file mode 100644 index 0000000..4a09826 --- /dev/null +++ b/Equipments/Pumps/Pump3_OffMode_Solver.f90 @@ -0,0 +1,54 @@ +subroutine Pump3_OffMode_Solver + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use CSounds + + + IMPLICIT NONE + INTEGER :: Pump_No + + + + CALL Pump_INPUTS + + + + !================================================================== + ! Rate limit for off Mode + + if (((PUMP(3)%N_old-0.0d0)/PUMP(3)%time_step)>386.) then + PUMP(3)%N_ref = (-386.*PUMP(3)%time_step)+PUMP(3)%N_old + !else + ! PUMP(1)%N_ref=0.0d0 + !end if + + Call Pump3_OnMode_Solver + + PUMP(3)%N_old = PUMP(3)%N_ref + + !================================================================== + else + + + PUMP(3)%Speed = 0.0 + + Call Pump_Solver(3) + + Call Pump_Total_Counts + + + Call Set_MP1SPMGauge( real((PUMP(3)%Speed/PUMP(3)%Trans_Ratio),8) ) + SPM1 = MP1SPMGauge + PUMP(3)%SoundSPM = INT(PUMP(3)%Speed/PUMP(3)%Trans_Ratio) + Call SetSoundMP3( PUMP(3)%SoundSPM ) + + + end if + + +end subroutine Pump3_OffMode_Solver \ No newline at end of file diff --git a/Equipments/Pumps/Pump3_OnMode_Solver.f90 b/Equipments/Pumps/Pump3_OnMode_Solver.f90 new file mode 100644 index 0000000..98f1975 --- /dev/null +++ b/Equipments/Pumps/Pump3_OnMode_Solver.f90 @@ -0,0 +1,57 @@ +subroutine Pump3_OnMode_Solver + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use equipments_PowerLimit + use CSounds + use CWarningsVariables + + + IMPLICIT NONE + INTEGER :: Pump_No + + + + Call Pump_INPUTS + + !! Torque unit = (in.lbf) + !PUMP(Pump_No)%Torque = (63025./132000.)*(1./PUMP(Pump_No)%Trans_Ratio)*(PUMP(Pump_No)%Piston_Area*PUMP(Pump_No)%Stroke_Length*PUMP(Pump_No)%StandPipe_Pressure/PUMP(Pump_No)%Mech_Efficiency/PUMP(Pump_No)%Vol_Efficiency) + + + + + + PUMP(3)%Speed = PUMP(3)%N_ref !Speed [RPM] + + if ( Pump3Failure == .true. ) then + PUMP(3)%Speed = 0.d0 + PUMP(3)%w = 0.d0 + PUMP(3)%w_new = 0.d0 + PUMP(3)%w_old = 0.d0 + end if + + Call Pump_Solver(3) + Call Pump_Total_Counts + + Call Set_MP1SPMGauge( real((PUMP(3)%Speed/PUMP(3)%Trans_Ratio),8) ) + SPM1 = MP1SPMGauge + PUMP(3)%SoundSPM = INT(PUMP(3)%Speed/PUMP(3)%Trans_Ratio) + Call SetSoundMP3( PUMP(3)%SoundSPM ) + + + + IF (PUMP(3)%Flow_Rate>0.) Then + Call OpenCementPump() + Else + Call CloseCementPump() + End if + + + + + +end subroutine Pump3_OnMode_Solver \ No newline at end of file diff --git a/Equipments/Pumps/Pump_INPUTS.f90 b/Equipments/Pumps/Pump_INPUTS.f90 new file mode 100644 index 0000000..2d018eb --- /dev/null +++ b/Equipments/Pumps/Pump_INPUTS.f90 @@ -0,0 +1,59 @@ +subroutine Pump_INPUTS + + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use Pump_VARIABLES + use MudSystem + + IMPLICIT NONE + + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<< + + if ( PUMP(1)%BlowPopOffMalf==1 ) then ! Pump1 Malfunction ----> Blow Pop-offs (Relief Valves) + PUMP(1)%StandPipe_Pressure = 0.d0 + else + PUMP(1)%StandPipe_Pressure = PumpPressure1 ![psi] + if ( PUMP(1)%StandPipe_Pressure<=14. ) then + PUMP(1)%StandPipe_Pressure = 14. + end if + end if + + + + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<< + + if ( PUMP(2)%BlowPopOffMalf==1 ) then ! Pump2 Malfunction ----> Blow Pop-offs (Relief Valves) + PUMP(2)%StandPipe_Pressure = 0.d0 + else + PUMP(2)%StandPipe_Pressure = PumpPressure2 ![psi] + if ( PUMP(2)%StandPipe_Pressure<=14. ) then + PUMP(2)%StandPipe_Pressure = 14. + end if + end if + + + + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 3 <<<<<<<<<<<<<<<<<<<<<<<<<<< + + if ( PUMP(3)%BlowPopOffMalf==1 ) then ! Pump3 Malfunction ----> Blow Pop-offs (Relief Valves) + PUMP(3)%StandPipe_Pressure = 0.d0 + else + PUMP(3)%StandPipe_Pressure = PumpPressure3 ![psi] + if ( PUMP(3)%StandPipe_Pressure<=14. ) then + PUMP(3)%StandPipe_Pressure = 14. + end if + end if + + + + + +end subroutine Pump_INPUTS \ No newline at end of file diff --git a/Equipments/Pumps/Pump_Solver.f90 b/Equipments/Pumps/Pump_Solver.f90 new file mode 100644 index 0000000..2adb3f4 --- /dev/null +++ b/Equipments/Pumps/Pump_Solver.f90 @@ -0,0 +1,29 @@ +subroutine Pump_Solver(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + + + IMPLICIT NONE + INTEGER :: Pump_No + + + + PUMP(Pump_No)%Flow_Rate = PUMP(Pump_No)%Piston_Area*PUMP(Pump_No)%Stroke_Length*(PUMP(Pump_No)%Speed/PUMP(Pump_No)%Trans_Ratio)*PUMP(Pump_No)%Vol_Efficiency/77.d0 ![gpm] + PUMP(Pump_No)%Hydraulic_HorsePower = PUMP(Pump_No)%Piston_Area*PUMP(Pump_No)%Stroke_Length*(PUMP(Pump_No)%Speed/PUMP(Pump_No)%Trans_Ratio)*PUMP(Pump_No)%StandPipe_Pressure/132000.d0 ![HHP] + PUMP(Pump_No)%TracMotor_Horsepower = PUMP(Pump_No)%Hydraulic_HorsePower/PUMP(Pump_No)%Mech_Efficiency/PUMP(Pump_No)%Vol_Efficiency ![HHP] + !PUMP(Pump_No)%Max_Pressure = (PUMP(Pump_No)%Max_Horsepower*1714.)/PUMP(Pump_No)%Flow_Rate ![psi] + + + if ( (PUMP(Pump_No)%StandPipe_Pressure*PUMP(Pump_No)%Flow_Rate)>(1714.d0*PUMP(Pump_No)%Max_Horsepower*PUMP(Pump_No)%Mech_Efficiency*PUMP(Pump_No)%Vol_Efficiency) ) then + PUMP(Pump_No)%Flow_Rate = (1714.d0*PUMP(Pump_No)%Max_Horsepower*PUMP(Pump_No)%Mech_Efficiency*PUMP(Pump_No)%Vol_Efficiency)/PUMP(Pump_No)%StandPipe_Pressure ![gpm] + PUMP(Pump_No)%Speed = ( (PUMP(Pump_No)%Flow_Rate*77.d0)/(PUMP(Pump_No)%Piston_Area*PUMP(Pump_No)%Stroke_Length) )*PUMP(Pump_No)%Trans_Ratio ![rpm] + end if + + + + +end subroutine Pump_Solver \ No newline at end of file diff --git a/Equipments/Pumps/Pump_StartUp.f90 b/Equipments/Pumps/Pump_StartUp.f90 new file mode 100644 index 0000000..3625200 --- /dev/null +++ b/Equipments/Pumps/Pump_StartUp.f90 @@ -0,0 +1,73 @@ +subroutine Pump_StartUp + + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CPowerVariables + use Pump_VARIABLES + + + IMPLICIT NONE + + + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 1 <<<<<<<<<<<<<<<<<<<<<<<<<<< + PUMP(1)%Stroke_Length = MudPump1Stroke + PUMP(1)%Piston_Diameter = MudPump1LinerDiameter + PUMP(1)%Piston_Area = pi*PUMP(1)%Piston_Diameter*PUMP(1)%Piston_Diameter/4. + PUMP(1)%Mech_Efficiency = MudPump1MechanicalEfficiency + PUMP(1)%Vol_Efficiency = MudPump1VolumetricEfficiency + PUMP(1)%Max_Horsepower = MudPump1 + PUMP(1)%Inertia_Moment = 23.261341 ! 23.261341 [kg.m^2] = 552 [lb.ft^2] + PUMP(1)%J_coef = PUMP(1)%Inertia_Moment+(4.*(PUMP(1)%Inertia_Moment)) + PUMP(1)%Trans_Ratio = 965.0/MudPump1Maximum + PUMP(1)%time_step = .10 + + PUMP(1)%K_throttle = 0 + PUMP(1)%Flow_Rate = 0. + Call Pump1_OffMode_Solver(1) + + + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 2 <<<<<<<<<<<<<<<<<<<<<<<<<<< + PUMP(2)%Stroke_Length = MudPump2Stroke + PUMP(2)%Piston_Diameter = MudPump2LinerDiameter + PUMP(2)%Piston_Area = pi*PUMP(2)%Piston_Diameter*PUMP(2)%Piston_Diameter/4. + PUMP(2)%Mech_Efficiency = MudPump2MechanicalEfficiency + PUMP(2)%Vol_Efficiency = MudPump2VolumetricEfficiency + PUMP(2)%Max_Horsepower = MudPump2 + PUMP(2)%Inertia_Moment = 23.261341 ! 23.261341 [kg.m^2] = 552 [lb.ft^2] + PUMP(2)%J_coef = PUMP(2)%Inertia_Moment+(4.*(PUMP(2)%Inertia_Moment)) + PUMP(2)%Trans_Ratio = 965.0/MudPump2Maximum + PUMP(2)%time_step = .10 + + PUMP(2)%K_throttle = 0 + PUMP(2)%Flow_Rate = 0. + Call Pump2_OffMode_Solver(2) + + + + + +!>>>>>>>>>>>>>>>>>>>>>>> PUMP 3 <<<<<<<<<<<<<<<<<<<<<<<<<<< + PUMP(3)%Stroke_Length = CementPumpStroke + PUMP(3)%Piston_Diameter = CementPumpLinerDiameter + PUMP(3)%Piston_Area = pi*PUMP(3)%Piston_Diameter*PUMP(3)%Piston_Diameter/4. + PUMP(3)%Mech_Efficiency = CementPumpMechanicalEfficiency + PUMP(3)%Vol_Efficiency = CementPumpVolumetricEfficiency + PUMP(3)%Max_Horsepower = CementPump + PUMP(3)%Inertia_Moment = 23.261341 ! 23.261341 [kg.m^2] = 552 [lb.ft^2] + PUMP(3)%Trans_Ratio = 965.0/CementPumpMaximum + PUMP(3)%time_step = .10 + + PUMP(3)%Flow_Rate = 0. + Call Pump3_OffMode_Solver + + + + + +end subroutine Pump_StartUp \ No newline at end of file diff --git a/Equipments/Pumps/Pump_Total_Counts.f90 b/Equipments/Pumps/Pump_Total_Counts.f90 new file mode 100644 index 0000000..c6efa9e --- /dev/null +++ b/Equipments/Pumps/Pump_Total_Counts.f90 @@ -0,0 +1,17 @@ +subroutine Pump_Total_Counts + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + + IMPLICIT NONE + + + Total_Pump_GPM = PUMP(1)%Flow_Rate+PUMP(2)%Flow_Rate+PUMP(3)%Flow_Rate + Total_Pump_SPM = (PUMP(1)%Speed/PUMP(1)%Trans_Ratio)+(PUMP(2)%Speed/PUMP(2)%Trans_Ratio)+(PUMP(3)%Speed/PUMP(3)%Trans_Ratio) + + + +end subroutine \ No newline at end of file diff --git a/Equipments/Pumps/Pump_Traction_Motor.f90 b/Equipments/Pumps/Pump_Traction_Motor.f90 new file mode 100644 index 0000000..c050d8e --- /dev/null +++ b/Equipments/Pumps/Pump_Traction_Motor.f90 @@ -0,0 +1,124 @@ +subroutine Pump_Traction_Motor(Pump_No) + + use Pump_VARIABLES + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + + + IMPLICIT NONE + INTEGER :: Pump_No + + + +!>>>>>>>>>>>>>>>>>>>>>>> DATA <<<<<<<<<<<<<<<<<<<<<<<<<<< + PUMP(Pump_No)%TL = 0.112985*PUMP(Pump_No)%Torque/2.d0 + + La = 1700.*1d-6 !170.*1d-6 !1700.*1d-6 + !Lf = 260.*1d-6 + Lf = 0.d0 + Ra = 9.5*1d-3 !0.1d0 !9.5*1d-3 + !Rf = 5.4*1d-3 + Rf = 0.d0 + + !******** controller ******* + Kpn = 11. !3. !=11. + !Kin = 50. + Kpi = 100. + Kii = 900. + + + PUMP(Pump_No)%time = PUMP(Pump_No)%time_step + PUMP(Pump_No)%dt = 1.d-5 + PUMP(Pump_No)%error = .001 + +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + PUMP(Pump_No)%n = PUMP(Pump_No)%time/PUMP(Pump_No)%dt + !PUMP(Pump_No)%w_ref = (pi*(PUMP(Pump_No)%N_ref+102.d0)/30.d0) + PUMP(Pump_No)%w_ref = (pi*(PUMP(Pump_No)%N_ref)/30.d0) + + !if (PUMP(Pump_No)%N_ref<=0.) then + ! PUMP(Pump_No)%w_ref = 0. + !end if + + + !if (PUMP(Pump_No)%N_ref<=0.) then + ! PUMP(Pump_No)%w_ref = 0. + ! PUMP(Pump_No)%w_old = 0. + ! PUMP(Pump_No)%w = 0. + !end if + + + PUMP(Pump_No)%ia_er = 1. + PUMP(Pump_No)%w_er = 1. + PUMP(Pump_No)%x_er = 1. + + + PUMP(Pump_No)%i = 1 + +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + DO WHILE (PUMP(Pump_No)%i<=PUMP(Pump_No)%n) + +!>>>>>>>>>>>> Runge-Kutta Method (4th order) <<<<<<<<<<<<<< + + call Pump_dx((PUMP(Pump_No)%i*PUMP(Pump_No)%dt),PUMP(Pump_No)%ia,PUMP(Pump_No)%w,PUMP(Pump_No)%x,Pump_No) + call Pump_dia((PUMP(Pump_No)%i*PUMP(Pump_No)%dt),PUMP(Pump_No)%ia,PUMP(Pump_No)%w,PUMP(Pump_No)%fii,PUMP(Pump_No)%x,Pump_No) + call Pump_dw((PUMP(Pump_No)%i*PUMP(Pump_No)%dt),PUMP(Pump_No)%ia,PUMP(Pump_No)%w,PUMP(Pump_No)%fii,PUMP(Pump_No)%TL,Pump_No) + PUMP(Pump_No)%K1x=PUMP(Pump_No)%dt*PUMP(Pump_No)%dx + PUMP(Pump_No)%K1ia=PUMP(Pump_No)%dt*PUMP(Pump_No)%dia + PUMP(Pump_No)%K1w=PUMP(Pump_No)%dt*PUMP(Pump_No)%dw + + call Pump_dx((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K1ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K1w/2.),PUMP(Pump_No)%x+(PUMP(Pump_No)%K1x/2.),Pump_No) + call Pump_dia((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K1ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K1w/2.),PUMP(Pump_No)%fii,PUMP(Pump_No)%x+(PUMP(Pump_No)%K1x/2.),Pump_No) + call Pump_dw((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K1ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K1w/2.),PUMP(Pump_No)%fii,PUMP(Pump_No)%TL,Pump_No) + PUMP(Pump_No)%K2x=PUMP(Pump_No)%dt*PUMP(Pump_No)%dx + PUMP(Pump_No)%K2ia=PUMP(Pump_No)%dt*PUMP(Pump_No)%dia + PUMP(Pump_No)%K2w=PUMP(Pump_No)%dt*PUMP(Pump_No)%dw + + call Pump_dx((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K2ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K2w/2.),PUMP(Pump_No)%x+(PUMP(Pump_No)%K2x/2.),Pump_No) + call Pump_dia((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K2ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K2w/2.),PUMP(Pump_No)%fii,PUMP(Pump_No)%x+(PUMP(Pump_No)%K2x/2.),Pump_No) + call Pump_dw((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+(PUMP(Pump_No)%dt/2.),PUMP(Pump_No)%ia+(PUMP(Pump_No)%K2ia/2.),PUMP(Pump_No)%w+(PUMP(Pump_No)%K2w/2.),PUMP(Pump_No)%fii,PUMP(Pump_No)%TL,Pump_No) + PUMP(Pump_No)%K3x=PUMP(Pump_No)%dt*PUMP(Pump_No)%dx + PUMP(Pump_No)%K3ia=PUMP(Pump_No)%dt*PUMP(Pump_No)%dia + PUMP(Pump_No)%K3w=PUMP(Pump_No)%dt*PUMP(Pump_No)%dw + + call Pump_dx((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+PUMP(Pump_No)%dt,PUMP(Pump_No)%ia+PUMP(Pump_No)%K3ia,PUMP(Pump_No)%w+PUMP(Pump_No)%K3w,PUMP(Pump_No)%x+PUMP(Pump_No)%K3x,Pump_No) + call Pump_dia((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+PUMP(Pump_No)%dt,PUMP(Pump_No)%ia+PUMP(Pump_No)%K3ia,PUMP(Pump_No)%w+PUMP(Pump_No)%K3w,PUMP(Pump_No)%fii,PUMP(Pump_No)%x+PUMP(Pump_No)%K3x,Pump_No) + call Pump_dw((PUMP(Pump_No)%i*PUMP(Pump_No)%dt)+PUMP(Pump_No)%dt,PUMP(Pump_No)%ia+PUMP(Pump_No)%K3ia,PUMP(Pump_No)%w+PUMP(Pump_No)%K3w,PUMP(Pump_No)%fii,PUMP(Pump_No)%TL,Pump_No) + PUMP(Pump_No)%K4x=PUMP(Pump_No)%dt*PUMP(Pump_No)%dx + PUMP(Pump_No)%K4ia=PUMP(Pump_No)%dt*PUMP(Pump_No)%dia + PUMP(Pump_No)%K4w=PUMP(Pump_No)%dt*PUMP(Pump_No)%dw + + PUMP(Pump_No)%x_new = PUMP(Pump_No)%x_old+((PUMP(Pump_No)%K1x+(2.*PUMP(Pump_No)%K2x)+(2.*PUMP(Pump_No)%K3x)+PUMP(Pump_No)%K4x)/6.) + PUMP(Pump_No)%ia_new = PUMP(Pump_No)%ia_old+((PUMP(Pump_No)%K1ia+(2.*PUMP(Pump_No)%K2ia)+(2.*PUMP(Pump_No)%K3ia)+PUMP(Pump_No)%K4ia)/6.) + PUMP(Pump_No)%w_new = PUMP(Pump_No)%w_old+((PUMP(Pump_No)%K1w+(2.*PUMP(Pump_No)%K2w)+(2.*PUMP(Pump_No)%K3w)+PUMP(Pump_No)%K4w)/6.) + +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + + PUMP(Pump_No)%x_old = PUMP(Pump_No)%x_new + PUMP(Pump_No)%ia_old = PUMP(Pump_No)%ia_new + PUMP(Pump_No)%w_old = PUMP(Pump_No)%w_new + PUMP(Pump_No)%x = PUMP(Pump_No)%x_new + PUMP(Pump_No)%ia = PUMP(Pump_No)%ia_new + PUMP(Pump_No)%w = PUMP(Pump_No)%w_new + PUMP(Pump_No)%Te = PUMP(Pump_No)%fii*PUMP(Pump_No)%ia_new + + !PUMP(Pump_No)%Vt = PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + !IF (PUMP(Pump_No)%Vt>810.) THEN + ! PUMP(Pump_No)%Vt = 810. + !ELSE IF (PUMP(Pump_No)%Vt<0.) THEN + ! PUMP(Pump_No)%Vt = 0. + !END IF + + PUMP(Pump_No)%i = PUMP(Pump_No)%i+1 + + END DO +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + + + +end subroutine Pump_Traction_Motor \ No newline at end of file diff --git a/Equipments/Pumps/Pump_VARIABLES.f90 b/Equipments/Pumps/Pump_VARIABLES.f90 new file mode 100644 index 0000000..25d8b14 --- /dev/null +++ b/Equipments/Pumps/Pump_VARIABLES.f90 @@ -0,0 +1,64 @@ +MODULE Pump_VARIABLES + + + IMPLICIT NONE + PUBLIC + + + REAL , PARAMETER :: pi=3.14159265 + REAL :: La, Lf, Ra, Rf + REAL :: Kpn, Kin, Kpi, Kii + REAL :: Total_Pump_GPM, Total_Pump_SPM, Total_Stroke_Counter_For_Plot + + + + +!**************************************************************************************************** +!**************** Define PUMP Array ************************************************************ + TYPE, PUBLIC :: Pump_Var + +!***** Pump_VARIABLES *************************** + INTEGER :: j , AssignmentSwitchh + INTEGER :: PowerFailMalf , BlowPopOffMalf , SPMGaugeMalf , K_throttle + + REAL :: Stroke_Length, Piston_Area, Piston_Diameter, Inertia_Moment + REAL :: Mech_Efficiency, Vol_Efficiency, Trans_Ratio + REAL :: StandPipe_Pressure , Max_Pressure + REAL :: Torque, Speed + REAL :: Flow_Rate, Hydraulic_HorsePower, TracMotor_Horsepower , Max_Horsepower + REAL :: simulation_time, time_step + + REAL(8) :: START_TIME, END_TIME + INTEGER :: INT_CPU_TIME, Dt_ref + +!***** Traction Motor_VARIABLES ***************** + INTEGER :: i, n + + REAL :: TL, Vt, J_coef, Ea, fii, Te + REAL :: time, dt, zaman + REAL :: ia, w, ia_old, w_old, ia_new, w_new + REAL :: error, ia_er, w_er ,x_er, y_er + REAL :: K1ia, K1w, K2ia, K2w, K3ia, K3w, K4ia, K4w + REAL :: K1x, K1y, K2x, K2y, K3x, K3y, K4x, K4y + REAL :: ia_ref, w_ref, N_ref ! N(rpm) , w(rad/s) + REAL :: x, y, x_old, y_old, x_new, y_new + REAL :: dia, dw, dx + REAL :: N_new, N_old + REAL :: Vt_old + + +!************* Sound_VARIABLES ********************** + INTEGER :: SoundSPM + Logical :: SoundBlower + + + END TYPE Pump_Var + + TYPE(Pump_Var), DIMENSION(1:3) :: PUMP +!*********************************************************************************************** +!**************************************************************************************************** + + + + +END MODULE Pump_VARIABLES \ No newline at end of file diff --git a/Equipments/Pumps/PumpsMain.f90 b/Equipments/Pumps/PumpsMain.f90 new file mode 100644 index 0000000..3c63fc9 --- /dev/null +++ b/Equipments/Pumps/PumpsMain.f90 @@ -0,0 +1,249 @@ +module PumpsMain + + use CPumpsVariables + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use Pump_VARIABLES + use CSounds + + implicit none + public + + contains + + + +! **************************************** +! ***** subroutine Pump1MainBody ***** +! **************************** + + subroutine Pump1_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(Pump1_Init) + call OnSimulationStop%Add(Pump1_Init) + call OnPump1Step%Add(Pump1_Step) + call OnPump1Output%Add(Pump1_Output) + call OnPump1Main%Add(Pump1MainBody) + end subroutine + + subroutine Pump1_Init + implicit none + end subroutine Pump1_Init + + subroutine Pump1_Step + Call Pump1_MainSolver + end subroutine Pump1_Step + + subroutine Pump1_Output + implicit none + end subroutine Pump1_Output + + subroutine Pump1MainBody + use ifport + use ifmt + !use Pump1_MainSolver + use CWarningsVariables + !use equipments_PowerLimit + implicit none + + integer,dimension(8) :: MP_START_TIME, MP_END_TIME + INTEGER :: MP_SolDuration + + Call Pump_StartUp + + loop1 : do + + Call DATE_AND_TIME(values=MP_START_TIME) + + Call Pump1_MainSolver + + Call DATE_AND_TIME(values=MP_END_TIME) + MP_SolDuration = 100-(MP_END_TIME(5)*3600000+MP_END_TIME(6)*60000+MP_END_TIME(7)*1000+MP_END_TIME(8)-MP_START_TIME(5)*3600000-MP_START_TIME(6)*60000-MP_START_TIME(7)*1000-MP_START_TIME(8)) + if(MP_SolDuration > 0.0) then + Call sleepqq(MP_SolDuration) + end if + + if (IsStopped == .true.) then + exit loop1 + end if + + end do loop1 + + end subroutine Pump1MainBody + + + + + +! **************************************** +! ***** subroutine Pump2MainBody ***** +! **************************** + subroutine Pump2_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(Pump2_Init) + call OnSimulationStop%Add(Pump2_Init) + call OnPump2Step%Add(Pump2_Step) + call OnPump2Output%Add(Pump2_Output) + call OnPump2Main%Add(Pump2MainBody) + end subroutine + + subroutine Pump2_Init + implicit none + end subroutine Pump2_Init + + subroutine Pump2_Step + call Pump2_MainSolver + end subroutine Pump2_Step + + subroutine Pump2_Output + implicit none + end subroutine Pump2_Output + + subroutine Pump2MainBody + use ifport + use ifmt + use CWarningsVariables + implicit none + + integer,dimension(8) :: MP_START_TIME, MP_END_TIME + INTEGER :: MP_SolDuration + + Call Pump_StartUp + + loop1 : do + + Call DATE_AND_TIME(values=MP_START_TIME) + + Call Pump2_MainSolver + + Call DATE_AND_TIME(values=MP_END_TIME) + MP_SolDuration = 100-(MP_END_TIME(5)*3600000+MP_END_TIME(6)*60000+MP_END_TIME(7)*1000+MP_END_TIME(8)-MP_START_TIME(5)*3600000-MP_START_TIME(6)*60000-MP_START_TIME(7)*1000-MP_START_TIME(8)) + if(MP_SolDuration > 0.0) then + Call sleepqq(MP_SolDuration) + end if + + if (IsStopped == .true.) then + exit loop1 + end if + + end do loop1 + + + end subroutine Pump2MainBody + + + + +! **************************************** +! ***** subroutine Pump3MainBody ***** +! **************************** + subroutine Pump3_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(Pump3_Init) + call OnSimulationStop%Add(Pump3_Init) + call OnPump3Step%Add(Pump3_Step) + call OnPump3Output%Add(Pump3_Output) + call OnPump3Main%Add(Pump3MainBody) + end subroutine + + subroutine Pump3_Init + implicit none + end subroutine Pump3_Init + + subroutine Pump3_Step + implicit none + end subroutine Pump3_Step + + subroutine Pump3_Output + implicit none + end subroutine Pump3_Output + + subroutine Pump3MainBody + use ifport + use ifmt + implicit none + + + integer,dimension(8) :: MP_START_TIME, MP_END_TIME + INTEGER :: MP_SolDuration + + !Call Pump_StartUp + !loop1 : do + ! + ! Call sleepqq(10) + ! + ! !!! Pump3 Malfunction ----> Power Failure + ! !!if (PUMP(1)%PowerFailMalf==1) then + ! !! !MP1BLWR=0 + ! !! Call Pump3_OffMode_Solver + ! !! Call ClosePump1() + ! !!end if + ! + ! !if( (MP1CPSwitch==1) .and. (MP1Throttle==0.) .and. (PUMP(3)%PowerFailMalf==0) ) then + !! + !! loop2: do + !! + !! Call DATE_AND_TIME(values=MP_START_TIME) + !! + !!!! ! Pump3 Malfunction ----> Power Failure + !!!! if (PUMP(1)%PowerFailMalf==1) then + !!!! !MP1BLWR=0 + !!!! Pump3_OffMode_Solver + !!!! Call ClosePump1() + !!!! exit loop2 + !!!! end if + !! + !! PUMP(3)%N_new = MP1Throttle + !! if (((PUMP(3)%N_new-PUMP(3)%N_old)/PUMP(3)%time_step)>193.) then + !! PUMP(3)%N_ref =(193.*PUMP(3)%time_step)+PUMP(3)%N_old + !! else if (((PUMP(3)%N_old-PUMP(3)%N_new)/PUMP(3)%time_step)>193.) then + !! PUMP(3)%N_ref = (-193.*PUMP(3)%time_step)+PUMP(3)%N_old + !! else + !! PUMP(3)%N_ref = PUMP(3)%N_new + !! end if + !! + !! Call Pump3_OnMode_Solver + !! + !! IF (PUMP(3)%Flow_Rate>0.) Then + !! Call OpenCementPump() + !! Else + !! Call CloseCementPump() + !! End if + !! + !! PUMP(3)%N_old = PUMP(3)%N_ref + !! + !! Call DATE_AND_TIME(values=MP_END_TIME) + !! MP_SolDuration = 100-(MP_END_TIME(6)*60000+MP_END_TIME(7)*1000+MP_END_TIME(8)-MP_START_TIME(6)*60000-MP_START_TIME(7)*1000-MP_START_TIME(8)) + !! !print*, 'MPtime=', MP_SolDuration + !! if(MP_SolDuration > 0.0) then + !! Call sleepqq(MP_SolDuration) + !! end if + !! + !! if ((MP1CPSwitch==0) .or. (IsStopped == .true.)) then + !! Call Pump3_OffMode_Solver + !! Call CloseCementPump() + !! exit loop2 + !! end if + !! end do loop2 + ! + ! else + ! + ! !Call Pump3_OffMode_Solver + ! !Call CloseCementPump() + ! + ! end if + ! + ! if (IsStopped == .true.) then + ! exit loop1 + ! end if + ! + !end do loop1 + + + end subroutine Pump3MainBody + +end module PumpsMain \ No newline at end of file diff --git a/Equipments/Pumps/pump_diff_eqs.f90 b/Equipments/Pumps/pump_diff_eqs.f90 new file mode 100644 index 0000000..091a1f3 --- /dev/null +++ b/Equipments/Pumps/pump_diff_eqs.f90 @@ -0,0 +1,105 @@ +subroutine Pump_dia(x1,x2,x3,x5,x6,Pump_No) + + use Pump_VARIABLES + use equipments_PowerLimit + + + IMPLICIT NONE + INTEGER :: Pump_No + REAL :: x1,x2,x3,x4,x5,x6 + + !Power_sigma=2.*(PUMP(1)%Vt*PUMP(1)%ia_new)+2.*(PUMP(2)%Vt*PUMP(2)%ia_new)+2.*(PUMP(3)%Vt*PUMP(3)%ia_new)+(RTable%Vt*RTable%ia_new)+2.*(Drawworks%Vt*Drawworks%ia_new) + + PUMP(Pump_No)%Vt = PUMP(Pump_No)%x_new+Kpi*((Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi)))+20.d0-PUMP(Pump_No)%ia_new) + IF (PUMP(Pump_No)%Vt>810.) THEN + PUMP(Pump_No)%Vt = 810.0 + ELSE IF (PUMP(Pump_No)%Vt<0.) THEN + PUMP(Pump_No)%Vt = 0.0d0 + END IF + + !call PowerLimits + ! + !if (Power_sigma>max_Power_sigma) then + ! PUMP(Pump_No)%Vt=PUMP(Pump_No)%Vt_old + !else + ! PUMP(Pump_No)%Vt=x6+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*x3/pi))-x2) + ! IF (PUMP(Pump_No)%Vt>810.) THEN + ! PUMP(Pump_No)%Vt=810. + !ELSE IF (PUMP(Pump_No)%Vt<0.) THEN + ! PUMP(Pump_No)%Vt=0. + !END IF + + + ! PUMP(Pump_No)%Vt_old=PUMP(Pump_No)%x_new+Kpi*(Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*PUMP(Pump_No)%w_new/pi))-PUMP(Pump_No)%ia_new) + ! IF (PUMP(Pump_No)%Vt_old>810.) THEN + ! PUMP(Pump_No)%Vt_old=810. + !ELSE IF (PUMP(Pump_No)%Vt_old<0.) THEN + ! PUMP(Pump_No)%Vt_old=0. + !END IF + + + !end if + + !IF (PUMP(Pump_No)%Vt>810.) THEN + ! PUMP(Pump_No)%Vt=810. + !ELSE IF (PUMP(Pump_No)%Vt<0.) THEN + ! PUMP(Pump_No)%Vt=0. + !END IF + + !PUMP(Pump_No)%Vt_old=PUMP(Pump_No)%Vt + + + !IF (x2<=1150.) THEN + ! x5 = 6.3304d-3*x2 + !ELSE IF (x2>1150.) THEN + ! x5 = 2.8571d-7*(x2-1150.)+7.28 + !END IF + x5 = 6.3304d-3*1150.0 + + PUMP(Pump_No)%Ea = x5*x3 + PUMP(Pump_No)%dia = (PUMP(Pump_No)%Vt-(Ra+Rf)*x2-PUMP(Pump_No)%Ea)/(La+Lf) + +end subroutine + + + + + + +!------------------------------------------------------------ +subroutine Pump_dw(x1,x2,x3,x4,x5,Pump_No) + + use Pump_VARIABLES + + IMPLICIT NONE + INTEGER :: Pump_No + REAL :: x1,x2,x3,x4,x5 + + !IF (x2<=1150.) THEN + ! x4 = 6.3304d-3*x2 + !ELSE IF (x2>1150.) THEN + ! x4 = 2.8571d-7*(x2-1150.)+7.28 + !END IF + x4 = 6.3304d-3*1150.0 + + PUMP(Pump_No)%Te = x4*x2 + PUMP(Pump_No)%dw = (PUMP(Pump_No)%Te-x5)/PUMP(Pump_No)%J_coef + +end subroutine + + + + + +!------------------------------------------------------------ +subroutine Pump_dx(x1,x2,x3,x4,Pump_No) + + use Pump_VARIABLES + + IMPLICIT NONE + INTEGER :: Pump_No + REAL :: x1,x2,x3,x4 + + PUMP(Pump_No)%dx = Kii*((Kpn*((30.*PUMP(Pump_No)%w_ref/pi)-(30.*x3/pi)))+20.d0-x2) + +end subroutine \ No newline at end of file diff --git a/Equipments/RotaryTable/RTMalfunction_MotorFailure.f90 b/Equipments/RotaryTable/RTMalfunction_MotorFailure.f90 new file mode 100644 index 0000000..7a163a0 --- /dev/null +++ b/Equipments/RotaryTable/RTMalfunction_MotorFailure.f90 @@ -0,0 +1,17 @@ + subroutine RTMalfunction_MotorFailure + + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use RTable_VARIABLES + + IMPLICIT NONE + + + if ( RTable%MotorFaileMalf==1 ) then + RTable%N_new = 0.0 + end if + + + +END subroutine RTMalfunction_MotorFailure \ No newline at end of file diff --git a/Equipments/RotaryTable/RTTorqueLimit.f90 b/Equipments/RotaryTable/RTTorqueLimit.f90 new file mode 100644 index 0000000..ede42ec --- /dev/null +++ b/Equipments/RotaryTable/RTTorqueLimit.f90 @@ -0,0 +1,25 @@ +subroutine RTTorqueLimit + + Use equipments_PowerLimit + Use RTable_VARIABLES + + IMPLICIT NONE + + + + ! Rotary Table Malfunction ----> Drive Motor Limit Overide + if ( RTable%OverideTorqueLimitMalf==1 ) then + return + end if + + + + + IF (RTable%ia_ref>RTable%ia_ref_limit) THEN + RTable%ia_ref = RTable%ia_ref_limit + END IF + + + + +end subroutine \ No newline at end of file diff --git a/Equipments/RotaryTable/RTable_INPUTS.f90 b/Equipments/RotaryTable/RTable_INPUTS.f90 new file mode 100644 index 0000000..2f1dbc4 --- /dev/null +++ b/Equipments/RotaryTable/RTable_INPUTS.f90 @@ -0,0 +1,90 @@ +subroutine RTable_INPUTS + + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CTdsConnectionModesEnumVariables + use CTdsElevatorModesEnumVariables + use CHoistingVariables + use RTable_VARIABLES + use TD_DrillStemComponents + use CUnityInputs + use CSlipsEnumVariables + + IMPLICIT NONE + integer :: i + + + + !===> String Torque + !print* , 'TD_StringTorquert=' , TD_StringTorque + RTable%String_Torque = TD_StringTorque*12.d0 ![lb.ft]*12 ---> [lb.in] ????????? + !RTable%String_Torque = 20000. + RTable%String_Torque = 0.112984829*RTable%String_Torque ![N.m] + !print* , 'TD_StringTorquert2=' , RTable%String_Torque + + + + + !===> String_JCoef Calculation + if ( DriveType==0 ) then + if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_NOTHING ) then + RT_RotaryMode = 1 + RTable%String_JCoef = 0.0 + Do i = 1,TD_StringConfigurationCount + RTable%String_JCoef = RTable%String_JCoef+( (TD_DrillStem(i)%TotalWeight*((TD_DrillStem(i)%Id**2)+(TD_DrillStem(i)%Od**2)))/8.0 ) ![lb.ft^2] , Jz=(1/2)*m*(r1^2+r2^2) + End Do + RTable%String_JCoef = RTable%String_JCoef*0.0421401 ![kg.m^2] + else if ( Get_Slips() /= SLIPS_SET_END ) then + RT_RotaryMode = 2 + RTable%String_JCoef = 0.0 + RTable%String_Torque = 0.0 + else + RT_RotaryMode = 3 + RTable%String_JCoef = 0.0 + RTable%String_Torque = 0.0 + end if + else if ( DriveType==1 ) then + if ( Get_IsKellyBushingSetInTable() .or. Get_Slips() == SLIPS_SET_END ) then !if rotary connected to string + RT_RotaryMode = 4 + RTable%String_JCoef = 0.0 + Do i = 1,TD_StringConfigurationCount + RTable%String_JCoef = RTable%String_JCoef+( (TD_DrillStem(i)%TotalWeight*((TD_DrillStem(i)%Id**2)+(TD_DrillStem(i)%Od**2)))/8.0 ) ![lb.ft^2] , Jz=(1/2)*m*(r1^2+r2^2) + End Do + RTable%String_JCoef = RTable%String_JCoef*0.0421401 ![kg.m^2] + else + RT_RotaryMode = 5 + RTable%String_JCoef = 0.0 + RTable%String_Torque = 0.0 + end if + end if + !print*, 'DriveType=', DriveType , RT_RotaryMode , Get_IsKellyBushingSetInTable() , Get_Slips() + !if ( Get_IsKellyBushingSetInTable() .or. Get_Slips() == SLIPS_SET_END ) then !if rotary connected to string + ! RTable%String_JCoef = 0.0 + ! Do i = 1,TD_StringConfigurationCount + ! RTable%String_JCoef = RTable%String_JCoef+( (TD_DrillStem(i)%TotalWeight*((TD_DrillStem(i)%Id**2)+(TD_DrillStem(i)%Od**2)))/8.0 ) ![lb.ft^2] , Jz=(1/2)*m*(r1^2+r2^2) + ! End Do + ! RTable%String_JCoef = RTable%String_JCoef*0.0421401 ![kg.m^2] + !else + ! RTable%String_JCoef = 0.0 + ! RTable%String_Torque = 0.0 + !end if + !RTable%String_JCoef = RTable%String_JCoef/10. !???????? /10: with no reason, check it + + + + + !===> Transmission Mode + if (RTTransmissionLever==1) then ! in high mode + RTable%Conv_Ratio = RTable%High_Conv_Ratio + else if (RTTransmissionLever==-1) then ! in low mode + RTable%Conv_Ratio = RTable%Low_Conv_Ratio + else if (RTTransmissionLever==0) then ! in low mode + RTable%Conv_Ratio = RTable%Low_Conv_Ratio + end if + + + + + +end subroutine RTable_INPUTS \ No newline at end of file diff --git a/Equipments/RotaryTable/RTable_OffMode.f90 b/Equipments/RotaryTable/RTable_OffMode.f90 new file mode 100644 index 0000000..8618e7e --- /dev/null +++ b/Equipments/RotaryTable/RTable_OffMode.f90 @@ -0,0 +1,81 @@ +subroutine RTable_OffMode + + use RTable_VARIABLES + use CDataDisplayConsoleVariables + use CDrillingConsoleVariables + use CSimulationVariables + use CWarningsVariables + use CSounds + + IMPLICIT NONE + + + !================================================================== + ! Rate limit for off Mode + + Do while (((RTable%N_old-0.0d0)/RTable%time_step)>386.0d0) + RTable%N_ref = (-386.0d0*RTable%time_step)+RTable%N_old + !else + ! RTable%N_ref=0.0d0 + !end if + + CALL RTable_INPUTS + CALL RTable_Solver + RTable%N_old = RTable%N_ref + if ( RT_OldTransMode==0 .and. RTTransmissionLever/=0 .and. RTable%w_new/=0.d0 ) then + Call Activate_RotaryGearsAbuse() + RTable%SoundGearCrash = .true. + Call SetSoundRtGearCrash(RTable%SoundGearCrash) + else + RTable%SoundGearCrash = .false. + Call SetSoundRtGearCrash(RTable%SoundGearCrash) + end if + RT_OldTransMode = RTTransmissionLever + if (IsPortable) then + RTable%AssignmentSwitch = 1 + else + RTable%AssignmentSwitch = AssignmentSwitch + end if + if ((any(RTable%AssignmentSwitch==(/6,7,12/))) .or. (RTSwitch==0) .or. (IsStopped == .true.)) then + RTBLWR = 0 + end if + + Call sleepqq (80) !????????????????? + End Do + !================================================================== + + + RTable%N_ref = 0. + RTable%N_new = 0. + RTable%N_old = 0. + + + RTable%ia = 0. + RTable%ia_old = 0. + RTable%ia_new = 0. + RTable%x = 0. + RTable%x_old = 0. + RTable%x_new = 0. + RTable%y = 0. + RTable%y_old = 0. + RTable%y_new = 0. + RTable%w = 0. + RTable%w_old = 0. + RTable%w_new = 0. + RTable%Speed = 0. + RT_wOld = 0. + Call Set_RotaryRPMGauge(sngl(1-RTable%RpmGaugeMalf)*real(RTable%Speed,8)) + RTable%SoundRPM = INT(RTable%Speed) + Call SetSoundRT( RTable%SoundRPM ) + + !RotaryRPMGauge=RTable%Speed + !RPM=RotaryRPMGauge + RTable%Output_Current = 0. + RotaryTorqueGauge = ( ((RTable%J_coef+RTable%String_JCoef)*(((RTable%w_new/RTable%Conv_Ratio)-RT_wOld)/RTable%time_step))+(RTable%String_Torque) )*0.73756215 ![N.m]*0.73756215 = [ft.lbf] + RTable%Torque = ( ((RTable%J_coef+RTable%String_JCoef)*(((RTable%w_new/RTable%Conv_Ratio)-RT_wOld)/RTable%time_step))+(RTable%String_Torque) )*0.73756215 ![N.m]*0.73756215 = [ft.lbf] + Call Set_RotaryTorque(sngl(1-RTable%TorqueGaugeMalf)*real(RTable%Torque,8)) + !RotaryTorqueGauge=(RTable%String_Torque)/12. + + + +end subroutine RTable_OffMode \ No newline at end of file diff --git a/Equipments/RotaryTable/RTable_Solver.f90 b/Equipments/RotaryTable/RTable_Solver.f90 new file mode 100644 index 0000000..66b99f7 --- /dev/null +++ b/Equipments/RotaryTable/RTable_Solver.f90 @@ -0,0 +1,128 @@ +subroutine RTable_Solver + + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use CDrillWatchVariables + use RTable_VARIABLES + use CSounds + use equipments_PowerLimit + + IMPLICIT NONE + + REAL :: const , RT_RpmGaugeOutput + + + !RTable%TracTorque = RTable%String_Torque/RTable%Conv_Ratio/RTable%Mech_Efficiency + RT_wOld = RTable%w_new/RTable%Conv_Ratio + CALL RTable_Traction_Motor + + + if (RTable%N_ref<=0.) then + Call RTable_OffMode + end if + + + + + + !IF (RTable%ia_new<=1150.) THEN + RTable%fii = 6.3304d-3*1150. + !ELSE IF (RTable%ia_new>1150.) THEN + ! RTable%fii = 2.8571d-7*(RTable%ia_new-1150.)+7.28 + !END IF + + RTable%Te = RTable%fii*RTable%ia_new + const = RTable%J_coef+(RTable%String_JCoef/(RTable%Mech_Efficiency*RTable%Conv_Ratio)) + RTable%dw = (RTable%Te-RTable%TL)/(const) + + + + + if ( any(RT_RotaryMode==(/1,4/)) ) then !if rotary connected to string + RT_RpmGaugeOutput = (30.d0*RTable%w_new/pi)/RTable%Conv_Ratio + RTable%Speed = min(RT_RpmGaugeOutput,200.d0) !Speed [RPM] + Call Set_RotaryRPMGauge(sngl(1-RTable%RpmGaugeMalf)*real(RTable%Speed,8)) + RTable%SoundRPM = INT(RTable%Speed) + Call SetSoundRT( RTable%SoundRPM ) + !RotaryRPMGauge = RTable%Speed + !RPM = RotaryRPMGauge + RotaryTorqueGauge = ( ((RTable%J_coef+RTable%String_JCoef)*(((RTable%w_new/RTable%Conv_Ratio)-RT_wOld)/RTable%time_step))+(RTable%String_Torque) )*0.73756215 ![N.m]*0.73756215 = [ft.lbf] + RTable%Torque = ( ((RTable%J_coef+RTable%String_JCoef)*(((RTable%w_new/RTable%Conv_Ratio)-RT_wOld)/RTable%time_step))+(RTable%String_Torque) )*0.73756215 ![N.m]*0.73756215 = [ft.lbf] + Call Set_RotaryTorque(sngl(1-RTable%TorqueGaugeMalf)*real(RTable%Torque,8)) + Torque = RotaryTorqueGauge + !print*, 'RTable%Speed=', RTable%Speed + !print*, 'RTable%String_JCoef=', RTable%String_JCoef + !print*, 'RTable%String_Torque=', RTable%String_Torque + else if ( any(RT_RotaryMode==(/2,5/)) ) then + RTable%Speed = 0.0 + RT_RpmGaugeOutput = (30.d0*RTable%w_new/pi)/RTable%Conv_Ratio + RT_RpmGaugeOutput = min(RT_RpmGaugeOutput,200.d0) + !print*, 'RT_RpmGaugeOutputif=', RT_RpmGaugeOutput + Call Set_RotaryRPMGauge(sngl(1-RTable%RpmGaugeMalf)*real(RT_RpmGaugeOutput,8)) + RTable%SoundRPM = INT((30.d0*RTable%w_new/pi)/RTable%Conv_Ratio) + Call SetSoundRT( RTable%SoundRPM ) + RTable%Torque = 0.0 + Call Set_RotaryTorque(sngl(1-RTable%TorqueGaugeMalf)*real( (((RTable%J_coef+RTable%String_JCoef)*(((RTable%w_new/RTable%Conv_Ratio)-RT_wOld)/RTable%time_step))+(RTable%String_Torque))*0.73756215,8 )) + !print*, 'RT_Rpmtorqueif=', RTable%Torque , sngl(1-RTable%TorqueGaugeMalf)*real( (((RTable%J_coef+RTable%String_JCoef)*(((RTable%w_new/RTable%Conv_Ratio)-RT_wOld)/RTable%time_step))+(RTable%String_Torque))*0.73756215,8 ) + else if ( RT_RotaryMode==3 ) then + RTable%Speed = 0.0 + RT_RpmGaugeOutput = 0.d0 + Call Set_RotaryRPMGauge(sngl(1-RTable%RpmGaugeMalf)*real(RT_RpmGaugeOutput,8)) + RTable%SoundRPM = 0 + Call SetSoundRT( RTable%SoundRPM ) + RTable%Torque = 0.0 + Call Set_RotaryTorque(sngl(1-RTable%TorqueGaugeMalf)*real( 0.d0,8 )) + end if + + + + + + + !if ( RTable%String_JCoef/=0.0 ) then !if rotary connected to string + ! RT_RpmGaugeOutput = (30.d0*RTable%w_new/pi)/RTable%Conv_Ratio + ! RTable%Speed = min(RT_RpmGaugeOutput,200.d0) !Speed [RPM] + ! Call Set_RotaryRPMGauge(real(RTable%Speed,8)) + ! RTable%SoundRPM = INT(RTable%Speed) + ! Call SetSoundRT( RTable%SoundRPM ) + ! !RotaryRPMGauge = RTable%Speed + ! !RPM = RotaryRPMGauge + ! RotaryTorqueGauge = ( ((RTable%J_coef+RTable%String_JCoef)*(((RTable%w_new/RTable%Conv_Ratio)-RT_wOld)/RTable%time_step))+(RTable%String_Torque) )*0.73756215 ![N.m]*0.73756215 = [ft.lbf] + ! RTable%Torque = ( ((RTable%J_coef+RTable%String_JCoef)*(((RTable%w_new/RTable%Conv_Ratio)-RT_wOld)/RTable%time_step))+(RTable%String_Torque) )*0.73756215 ![N.m]*0.73756215 = [ft.lbf] + ! Call Set_RotaryTorque(real(RTable%Torque,8)) + ! Torque = RotaryTorqueGauge + !else + ! RTable%Speed = 0.0 + ! RT_RpmGaugeOutput = (30.d0*RTable%w_new/pi)/RTable%Conv_Ratio + ! RT_RpmGaugeOutput = min(RT_RpmGaugeOutput,200.d0) + ! Call Set_RotaryRPMGauge(real(RT_RpmGaugeOutput,8)) + ! RTable%SoundRPM = INT((30.d0*RTable%w_new/pi)/RTable%Conv_Ratio) + ! Call SetSoundRT( RTable%SoundRPM ) + ! RTable%Torque = 0.0 + ! Call Set_RotaryTorque(real( (((RTable%J_coef+RTable%String_JCoef)*(((RTable%w_new/RTable%Conv_Ratio)-RT_wOld)/RTable%time_step))+(RTable%String_Torque))*0.73756215,8 )) + !end if + + +!****************************************************************** + + + !!!!!RTable%Output_Current = (RTable%TracTorque*RTable%w_new)/RTable%Vt !???????????? + !!print*, 'Power_sigma=', Power_sigma + !!print*, 'power_num_of_Jenerators=', power_num_of_Jenerators + !!print*, 'drilling_num_of_Jenerators=', drilling_num_of_Jenerators + !!!print*, 'Jenerator_power=', Jenerator_power + !print*, 'RT_RpmGaugeOutput=', RT_RpmGaugeOutput + !!!print*, 'RTable%Vt=', RTable%Vt + !print*, 'RTable%w=', RTable%w_new + !print*, 'RTable%String_Torque=', RTable%String_Torque + !print*, 'RTable%Speed=', RTable%Speed + !!print*, 'RTable%Speed2=', ((30.*RTable%w_new/pi)/RTable%Conv_Ratio) + !!!!!!!print*, 'RTable%Te=', RTable%Te + !print*, 'RTable%TL=', RTable%TL + !!print*, 'RTable%ia=', RTable%ia_new + !!print*, 'RTable%ia_ref=', RTable%ia_ref + !!print*, 'RTable%ia_ref_limit=', RTable%ia_ref_limit + + +END subroutine RTable_Solver \ No newline at end of file diff --git a/Equipments/RotaryTable/RTable_StartUp.f90 b/Equipments/RotaryTable/RTable_StartUp.f90 new file mode 100644 index 0000000..d25e788 --- /dev/null +++ b/Equipments/RotaryTable/RTable_StartUp.f90 @@ -0,0 +1,42 @@ +subroutine RTable_StartUp + + use CDrillingConsoleVariables + use RTable_VARIABLES + + IMPLICIT NONE + + + + !RTable%=0. + + RTable%Inertia_Moment = 23.261341 ! 23.261341 [kg.m^2] = 552 [lb.ft^2] + RTable%J_coef = RTable%Inertia_Moment+(1.*(RTable%Inertia_Moment)) ! [kg.m^2]??????????? + RTable%String_JCoef = 0. !??????????????? + RTable%Mech_Efficiency = 0.930 + RTable%ConstLoad = 2000. ![lb.in] + RTable%ConstLoad = 0.112984829*RTable%ConstLoad ![N.m] + RTable%Torque = 0.0 + + + RTable%High_Conv_Ratio = 4.8250 + RTable%Low_Conv_Ratio = 7.310 + RTable%Conv_Ratio = RTable%Low_Conv_Ratio + RTable%time_step = .10 + + + RTable%w = 0.0 + RTable%w_new = 0.0 + + + + + RT_OldTransMode = RTTransmissionLever + + + + call RTable_OffMode + + + + +end subroutine RTable_StartUp \ No newline at end of file diff --git a/Equipments/RotaryTable/RTable_Traction_Motor.f90 b/Equipments/RotaryTable/RTable_Traction_Motor.f90 new file mode 100644 index 0000000..518d6d0 --- /dev/null +++ b/Equipments/RotaryTable/RTable_Traction_Motor.f90 @@ -0,0 +1,141 @@ +subroutine RTable_Traction_Motor + + use CDrillingConsoleVariables + use CDataDisplayConsoleVariables + use CSimulationVariables + use RTable_VARIABLES + use equipments_PowerLimit + + IMPLICIT NONE + + !integer :: jnomb + !jnomb = 0 + + !>>>>>>>>>>>>>>>>>>>>>>> DATA <<<<<<<<<<<<<<<<<<<<<<<<<<< + RTable%TL = (RTable%String_Torque+RTable%ConstLoad)/(RTable%Mech_Efficiency*RTable%Conv_Ratio) + !RTable%TL = 5700. + !print*, 'RTable%TLtr=', RTable%TL , RTable%Te + !print*, 'RTable%String_JCoef=', RTable%String_JCoef , RTable%J_coef+(RTable%String_JCoef/(RTable%Mech_Efficiency*RTable%Conv_Ratio)) + La = 1700.*1d-6 + Lf = 260.*1d-6 + Ra = 9.5*1d-3 + !Rf = 5.4*1d-3 + Rf = 0. + + !******** controller ******* + Kpn = 50.d0 + Kin = 3.d0 + Kpi = 100.d0 + Kii = 900.d0 + + RTable%time = RTable%time_step + RTable%dt = 1.d-5 + RTable%error = .001 + +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + RTable%n = RTable%time/RTable%dt + RTable%w_ref = (pi*(RTable%N_ref)/30.d0) + RTable%ia_ref_limit = RTTorqueLimitKnob*100.d0 + !print* , 'N_ref=' , RTThrottle , RTable%w_ref , RTable%N_ref + + RTable%ia_er = 1. + RTable%w_er = 1. + RTable%x_er = 1. + RTable%y_er = 1. + + RTable%i = 1 + +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + DO WHILE (RTable%i<=RTable%n) + + + !>>>>>>>>>>>> Runge-Kutta Method (4th order) <<<<<<<<<<<<<< + + call RTable_dx((RTable%i*RTable%dt),RTable%ia,RTable%w,RTable%x,RTable%y) + call RTable_dy((RTable%i*RTable%dt),RTable%ia,RTable%w,RTable%x,RTable%y) + call RTable_dia((RTable%i*RTable%dt),RTable%ia,RTable%w,RTable%fii,RTable%x,RTable%y) + call RTable_dw((RTable%i*RTable%dt),RTable%ia,RTable%w,RTable%fii,RTable%TL) + RTable%K1x = RTable%dt*RTable%dx + RTable%K1y = RTable%dt*RTable%dy + RTable%K1ia = RTable%dt*RTable%dia + RTable%K1w = RTable%dt*RTable%dw + + call RTable_dx((RTable%i*RTable%dt)+(RTable%dt/2.),RTable%ia+(RTable%K1ia/2.),RTable%w+(RTable%K1w/2.),RTable%x+(RTable%K1x/2.),RTable%y+(RTable%K1y/2.)) + call RTable_dy((RTable%i*RTable%dt)+(RTable%dt/2.),RTable%ia+(RTable%K1ia/2.),RTable%w+(RTable%K1w/2.),RTable%x+(RTable%K1x/2.),RTable%y+(RTable%K1y/2.)) + call RTable_dia((RTable%i*RTable%dt)+(RTable%dt/2.),RTable%ia+(RTable%K1ia/2.),RTable%w+(RTable%K1w/2.),RTable%fii,RTable%x+(RTable%K1x/2.),RTable%y+(RTable%K1y/2.)) + call RTable_dw((RTable%i*RTable%dt)+(RTable%dt/2.),RTable%ia+(RTable%K1ia/2.),RTable%w+(RTable%K1w/2.),RTable%fii,RTable%TL) + RTable%K2x = RTable%dt*RTable%dx + RTable%K2y = RTable%dt*RTable%dy + RTable%K2ia = RTable%dt*RTable%dia + RTable%K2w = RTable%dt*RTable%dw + + call RTable_dx((RTable%i*RTable%dt)+(RTable%dt/2.),RTable%ia+(RTable%K2ia/2.),RTable%w+(RTable%K2w/2.),RTable%x+(RTable%K2x/2.),RTable%y+(RTable%K2y/2.)) + call RTable_dy((RTable%i*RTable%dt)+(RTable%dt/2.),RTable%ia+(RTable%K2ia/2.),RTable%w+(RTable%K2w/2.),RTable%x+(RTable%K2x/2.),RTable%y+(RTable%K2y/2.)) + call RTable_dia((RTable%i*RTable%dt)+(RTable%dt/2.),RTable%ia+(RTable%K2ia/2.),RTable%w+(RTable%K2w/2.),RTable%fii,RTable%x+(RTable%K2x/2.),RTable%y+(RTable%K2y/2.)) + call RTable_dw((RTable%i*RTable%dt)+(RTable%dt/2.),RTable%ia+(RTable%K2ia/2.),RTable%w+(RTable%K2w/2.),RTable%fii,RTable%TL) + RTable%K3x = RTable%dt*RTable%dx + RTable%K3y = RTable%dt*RTable%dy + RTable%K3ia = RTable%dt*RTable%dia + RTable%K3w = RTable%dt*RTable%dw + + call RTable_dx((RTable%i*RTable%dt)+RTable%dt,RTable%ia+RTable%K3ia,RTable%w+RTable%K3w,RTable%x+RTable%K3x,RTable%y+RTable%K3y) + call RTable_dy((RTable%i*RTable%dt)+RTable%dt,RTable%ia+RTable%K3ia,RTable%w+RTable%K3w,RTable%x+RTable%K3x,RTable%y+RTable%K3y) + call RTable_dia((RTable%i*RTable%dt)+RTable%dt,RTable%ia+RTable%K3ia,RTable%w+RTable%K3w,RTable%fii,RTable%x+RTable%K3x,RTable%y+RTable%K3y) + call RTable_dw((RTable%i*RTable%dt)+RTable%dt,RTable%ia+RTable%K3ia,RTable%w+RTable%K3w,RTable%fii,RTable%TL) + RTable%K4x = RTable%dt*RTable%dx + RTable%K4y = RTable%dt*RTable%dy + RTable%K4ia = RTable%dt*RTable%dia + RTable%K4w = RTable%dt*RTable%dw + + RTable%x_new = RTable%x_old+((RTable%K1x+(2.*RTable%K2x)+(2.*RTable%K3x)+RTable%K4x)/6.) + RTable%y_new = RTable%y_old+((RTable%K1y+(2.*RTable%K2y)+(2.*RTable%K3y)+RTable%K4y)/6.) + RTable%ia_new = RTable%ia_old+((RTable%K1ia+(2.*RTable%K2ia)+(2.*RTable%K3ia)+RTable%K4ia)/6.) + RTable%w_new = RTable%w_old+((RTable%K1w+(2.*RTable%K2w)+(2.*RTable%K3w)+RTable%K4w)/6.) + + !>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + RTable%x_old = RTable%x_new + RTable%y_old = RTable%y_new + RTable%ia_old = RTable%ia_new + RTable%w_old = RTable%w_new + RTable%x = RTable%x_new + RTable%y = RTable%y_new + RTable%ia = RTable%ia_new + RTable%w = RTable%w_new + RTable%Te = RTable%fii*RTable%ia_new + + !if (jnomb==0) then + ! print*, 'RTable%Vt0=', RTable%Vt + ! jnomb=1 + !end if + RTable%ia_ref = RTable%y_new+Kpn*((30.0*RTable%w_ref/pi)-(30.0*RTable%w_new/pi)) + call RTTorqueLimit + RTable%Vt = RTable%x_new+(Kpi*(RTable%ia_ref-RTable%ia_new)) + !call PowerLimits + !if (Power_sigma>max_Power_sigma) then + ! RTable%Vt = RTable%Vt + !else + ! RTable%Vt = RTable%x_new+(Kpi*(RTable%ia_ref-RTable%ia_new)) + !end if + + IF (RTable%Vt>810.) THEN + RTable%Vt = 810.0 + ELSE IF (RTable%Vt<0.) THEN + RTable%Vt = 0.0 + END IF + + + + + RTable%i = RTable%i+1 + + + END DO +!>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + !print*, 'RTable%wtr=', RTable%w_new , RTable%ia_new , RTable%dw , RTable%dia + + + + +END subroutine RTable_Traction_Motor \ No newline at end of file diff --git a/Equipments/RotaryTable/RTable_VARIABLES.f90 b/Equipments/RotaryTable/RTable_VARIABLES.f90 new file mode 100644 index 0000000..dfd507f --- /dev/null +++ b/Equipments/RotaryTable/RTable_VARIABLES.f90 @@ -0,0 +1,61 @@ +MODULE RTable_VARIABLES + + IMPLICIT NONE + PUBLIC + + REAL, PARAMETER :: pi=3.14159265 + REAL :: La, Lf, Ra, Rf + REAL :: Kpn, Kin, Kpi, Kii + REAL :: RT_wOld + + INTEGER :: RT_OldTransMode , RT_RotaryMode + REAL :: RT_RPMUnityOutput + + +!**************************************************************************************************** +!**************** Difine Rotary Table Array **************************************************** + TYPE, PUBLIC :: RTable_Var + +!***** RTable_VARIABLES ************************* + INTEGER :: j , AssignmentSwitch + INTEGER :: MotorFaileMalf , OverideTorqueLimitMalf , RpmGaugeMalf , TorqueGaugeMalf , TorqueLimitGaugeMalf + + REAL :: Horsepower, Speed, Output_Current, Inertia_Moment, Mech_Efficiency, Torque + REAL :: Conv_Ratio, High_Conv_Ratio, Low_Conv_Ratio + REAL :: String_Torque, String_JCoef + REAL :: TracTorque, ConstLoad + REAL :: simulation_time, time_step + + INTEGER :: Dt_ref + +!***** Traction Motor_VARIABLES ***************** + INTEGER :: i, n + + REAL :: TL, Vt, J_coef, Ea, fii, Te + REAL :: time, dt, zaman + REAL :: ia, w, ia_old, w_old, ia_new, w_new + REAL :: error, ia_er, w_er ,x_er, y_er + REAL :: K1ia, K1w, K2ia, K2w, K3ia, K3w, K4ia, K4w + REAL :: K1x, K1y, K2x, K2y, K3x, K3y, K4x, K4y + REAL :: ia_ref, ia_ref_limit, w_ref, N_ref ! N(rpm) , w(rad/s) + REAL :: x, y, x_old, y_old, x_new, y_new + REAL :: dia, dw, dx, dy + REAL :: N_new, N_old + + +!************* Sound_VARIABLES ********************** + INTEGER :: SoundRPM + Logical :: SoundBlower , SoundGearCrash + + + + END TYPE RTable_Var + + TYPE(RTable_Var) :: RTable +!*********************************************************************************************** +!**************************************************************************************************** + + + + +END MODULE RTable_VARIABLES \ No newline at end of file diff --git a/Equipments/RotaryTable/RTable_diff_eqs.f90 b/Equipments/RotaryTable/RTable_diff_eqs.f90 new file mode 100644 index 0000000..d5c78a3 --- /dev/null +++ b/Equipments/RotaryTable/RTable_diff_eqs.f90 @@ -0,0 +1,126 @@ + subroutine RTable_dia(x1,x2,x3,x5,x6,x7) + + use equipments_PowerLimit + use RTable_VARIABLES + + IMPLICIT NONE + + REAL :: x1,x2,x3,x5,x6,x7 + + + !RTable%Vt = x6+Kpi*(Kpn*((30.*RTable%w_ref/pi)-(30.*x3/pi))-x2) + + RTable%ia_ref = x7+Kpn*((30.*RTable%w_ref/pi)-(30.*x3/pi)) + + call RTTorqueLimit + !if (LimitOveride==1) then + ! goto TorqueLimit_Limitation1 + !end if + + !IF (RTable%ia_ref>RTable%ia_ref_limit) THEN + ! RTable%ia_ref = RTable%ia_ref_limit + !END IF + +!TorqueLimit_Elimination1: + + !call PowerLimits + !if (Power_sigma>max_Power_sigma) then + ! RTable%Vt = RTable%Vt + !else + RTable%Vt = x6+(Kpi*(RTable%ia_ref-x2)) + !end if + + IF (RTable%Vt>810.) THEN + RTable%Vt = 810.0 + ELSE IF (RTable%Vt<0.) THEN + RTable%Vt = 0.0 + END IF + + + !IF (x2<=1150.) THEN + x5 = (6.3304d-3)*1150. + !ELSE IF (x2>1150.) THEN + ! x5 = 2.8571d-7*(x2-1150.)+7.28 + !END IF + + RTable%Ea = x5*x3 + RTable%dia = (RTable%Vt-(Ra+Rf)*x2-RTable%Ea)/(La+Lf) + !call PowerLimits + !if (Power_sigma>max_Power_sigma) then + ! RTable%dia = 0.d0 + !end if + +end subroutine + + + + +!------------------------------------------------------------------------------- +subroutine RTable_dw(x1,x2,x3,x4,x5) + + use RTable_VARIABLES + + IMPLICIT NONE + REAL :: x1,x2,x3,x4,x5 + REAL :: const + + !IF (x2<=1150.) THEN + x4 = 6.3304d-3*1150. + !ELSE IF (x2>1150.) THEN + ! x4 = 2.8571d-7*(x2-1150.)+7.28 + !END IF + + RTable%Te = x4*x2 + !RTable%dw = (RTable%Te-x5)/RTable%J_coef + + const = RTable%J_coef+(RTable%String_JCoef/(RTable%Mech_Efficiency*RTable%Conv_Ratio)) + + !RTable%dw = (RTable%Te-((RTable%String_Torque)/(RTable%Mech_Efficiency*RTable%Conv_Ratio)))/(const) + RTable%dw = (RTable%Te-RTable%TL)/(const) + +end subroutine + + + + +!------------------------------------------------------------ +subroutine RTable_dx(x1,x2,x3,x4,x5) + + use RTable_VARIABLES + + IMPLICIT NONE + REAL :: x1,x2,x3,x4,x5 + + !RTable%dx = Kii*(Kpn*((30.*RTable%w_ref/pi)-(30.*x3/pi))-x2) + + RTable%ia_ref = x5+Kpn*((30.*RTable%w_ref/pi)-(30.*x3/pi)) + + call RTTorqueLimit + !if (LimitOveride==1) then + !goto TorqueLimit_Limitation2 + !end if + + !IF (RTable%ia_ref>RTable%ia_ref_limit) THEN + !RTable%ia_ref = RTable%ia_ref_limit + !END IF + +!TorqueLimit_Elimination2: + + RTable%dx = Kii*(RTable%ia_ref-x2) + +end subroutine + + + + +!------------------------------------------------------------ +subroutine RTable_dy(x1,x2,x3,x4,x5) + + use RTable_VARIABLES + + IMPLICIT NONE + REAL :: x1,x2,x3,x4,x5 + + RTable%dy = Kin*((30.0d0*RTable%w_ref/pi)-(30.0d0*x3/pi)) + +end subroutine \ No newline at end of file diff --git a/Equipments/RotaryTable/RotaryTableMain.f90 b/Equipments/RotaryTable/RotaryTableMain.f90 new file mode 100644 index 0000000..f83c8e2 --- /dev/null +++ b/Equipments/RotaryTable/RotaryTableMain.f90 @@ -0,0 +1,204 @@ +module RotaryTableMain + implicit none + public + contains + + ! subroutine RotaryTable_Setup() + ! use CSimulationVariables + ! implicit none + ! call OnSimulationInitialization%Add(RotaryTable_Init) + ! call OnSimulationStop%Add(RotaryTable_Init) + ! call OnRotaryTableStep%Add(RotaryTable_Step) + ! call OnRotaryTableOutput%Add(RotaryTable_Output) + ! call OnRotaryTableMain%Add(RotaryTableMainBody) + ! end subroutine + + subroutine RotaryTable_Init + implicit none + end subroutine RotaryTable_Init + + subroutine RotaryTable_Step + implicit none + end subroutine RotaryTable_Step + + subroutine RotaryTable_Output + implicit none + end subroutine RotaryTable_Output + + + subroutine RotaryTableMainBody + + use CDataDisplayConsoleVariables + use CDrillingConsoleVariables + use CSimulationVariables + use RTable_VARIABLES + use CDrillWatchVariables + use CWarningsVariables + use CSounds + + implicit none + + integer,dimension(8) :: RT_START_TIME, RT_END_TIME + INTEGER :: RT_SolDuration + + + Call RTable_StartUp + loopRtablestart : do + + call sleepqq(10) + + if (IsPortable) then + RTable%AssignmentSwitch = 1 + else + RTable%AssignmentSwitch = AssignmentSwitch + end if + if ( (any(RTable%AssignmentSwitch==(/1,2,3,4,5,8,9,10,11/))) .and. (RTSwitch == -1) ) then + + RTable%SoundBlower = .true. + Call SetSoundBlowerRT(RTable%SoundBlower) + RTBLWR = 1 + + loopRtableswitch: do + + CALL DATE_AND_TIME(values=RT_START_TIME) + + IF ( RTTransmissionLever /=0 .and. RotaryGearsAbuse==0 ) THEN !be in clutch mode ?????? + RTable%N_new = RTThrottle + + !===> Rotary Table Malfunction ----> Drive Motor Failure + call RTMalfunction_MotorFailure + + if (((RTable%N_new-RTable%N_old)/RTable%time_step)>193.) then + RTable%N_ref = (193.*RTable%time_step)+RTable%N_old + else if (((RTable%N_old-RTable%N_new)/RTable%time_step)>193.) then + RTable%N_ref = (-193.*RTable%time_step)+RTable%N_old + else + RTable%N_ref = RTable%N_new + end if + CALL RTable_INPUTS + CALL RTable_Solver + RT_RPMUnityOutput = RotaryRPMGauge + RTable%N_old = RTable%N_ref + Else IF ( RTTransmissionLever==0) THEN !be in brake mode ?????? + Call RTable_OffMode + RT_RPMUnityOutput = RotaryRPMGauge + End IF + RT_OldTransMode = RTTransmissionLever + + CALL DATE_AND_TIME(values=RT_END_TIME) + RT_SolDuration = 100-(RT_END_TIME(5)*3600000+RT_END_TIME(6)*60000+RT_END_TIME(7)*1000+RT_END_TIME(8)-RT_START_TIME(5)*3600000-RT_START_TIME(6)*60000-RT_START_TIME(7)*1000-RT_START_TIME(8)) + !print*, 'RTtime=', RT_SolDuration + if(RT_SolDuration > 0.0) then + CALL sleepqq(RT_SolDuration) + end if + + if (IsPortable) then + RTable%AssignmentSwitch = 1 + else + RTable%AssignmentSwitch = AssignmentSwitch + end if + if ((any(RTable%AssignmentSwitch==(/6,7,12/))) .or. (RTSwitch/=-1) .or. (IsStopped == .true.)) then + RTable%SoundBlower = .false. + Call SetSoundBlowerRT(RTable%SoundBlower) + RTBLWR = 0 + Call RTable_OffMode + RT_RPMUnityOutput = RotaryRPMGauge + exit loopRtableswitch + end if + + end do loopRtableswitch + + + + else if ( (any(RTable%AssignmentSwitch==(/1,2,3,4,5,8,9,10,11/))) .and. (RTSwitch == 1) .and. (RTThrottle==0.) ) then + + RTable%SoundBlower = .true. + Call SetSoundBlowerRT(RTable%SoundBlower) + RTBLWR = 1 + + loopRtableswitchREV: do + + CALL DATE_AND_TIME(values=RT_START_TIME) + + IF ( RTTransmissionLever /=0 .and. RotaryGearsAbuse==0 ) THEN !be in clutch mode ?????? + RTable%N_new = RTThrottle + + !===> Rotary Table Malfunction ----> Drive Motor Failure + call RTMalfunction_MotorFailure + + if (((RTable%N_new-RTable%N_old)/RTable%time_step)>193.) then + RTable%N_ref = (193.*RTable%time_step)+RTable%N_old + else if (((RTable%N_old-RTable%N_new)/RTable%time_step)>193.) then + RTable%N_ref = (-193.*RTable%time_step)+RTable%N_old + else + RTable%N_ref = RTable%N_new + end if + CALL RTable_INPUTS + CALL RTable_Solver + RT_RPMUnityOutput = -RotaryRPMGauge + RTable%N_old = RTable%N_ref + Else IF ( RTTransmissionLever==0) THEN !be in brake mode ?????? + Call RTable_OffMode + RT_RPMUnityOutput = -RotaryRPMGauge + End IF + RT_OldTransMode = RTTransmissionLever + + CALL DATE_AND_TIME(values=RT_END_TIME) + RT_SolDuration = 100-(RT_END_TIME(5)*3600000+RT_END_TIME(6)*60000+RT_END_TIME(7)*1000+RT_END_TIME(8)-RT_START_TIME(5)*3600000-RT_START_TIME(6)*60000-RT_START_TIME(7)*1000-RT_START_TIME(8)) + !print*, 'RTtime=', RT_SolDuration + if(RT_SolDuration > 0.0) then + CALL sleepqq(RT_SolDuration) + end if + + if (IsPortable) then + RTable%AssignmentSwitch = 1 + else + RTable%AssignmentSwitch = AssignmentSwitch + end if + if ((any(RTable%AssignmentSwitch==(/6,7,12/))) .or. (RTSwitch/=1) .or. (IsStopped == .true.)) then + RTable%SoundBlower = .false. + Call SetSoundBlowerRT(RTable%SoundBlower) + RTBLWR = 0 + Call RTable_OffMode + RT_RPMUnityOutput = -RotaryRPMGauge + exit loopRtableswitchREV + end if + + end do loopRtableswitchREV + + + else + + + if (IsPortable) then + RTable%AssignmentSwitch = 1 + else + RTable%AssignmentSwitch = AssignmentSwitch + end if + if((any(RTable%AssignmentSwitch==(/1,2,3,4,5,8,9,10,11/))) .and. (RTSwitch /= 0)) then + RTable%SoundBlower = .true. + Call SetSoundBlowerRT(RTable%SoundBlower) + RTBLWR = 1 + else + RTable%SoundBlower = .false. + Call SetSoundBlowerRT(RTable%SoundBlower) + RTBLWR = 0 + end if + Call RTable_OffMode + RT_RPMUnityOutput = RotaryRPMGauge + !exit loopRtableswitch + RT_OldTransMode = RTTransmissionLever + + + end if + + if (IsStopped == .true.) then + exit loopRtablestart + end if + + end do loopRtablestart + + + end subroutine RotaryTableMainBody + +end module RotaryTableMain \ No newline at end of file diff --git a/Equipments/RotaryTable/rtable_variables.mod b/Equipments/RotaryTable/rtable_variables.mod new file mode 100644 index 0000000000000000000000000000000000000000..a558bec902bcd2fb0f3f5d0b5f3cf1a7930849d4 GIT binary patch literal 2040 zcmVF54Lx+aqs4CU_XzY^=@Saa6!lO?K}O~&e^PO7tS!e!17-v z){m8aXM|toOf!1gWnUkEU8+23G%jcr|4F=YL0}U;4bBfjdry|n(Zr5}8(WTwhg0K^ zNI4__8jhm^Z8W;N(VOXAIvso)48IS)^ac}sFd^~o$QX9wza74L$^*QHM7c+fHt>pT z-Jmiahkx-t;7^c=fAFgR$`ma$bpWGvI{J7V{jf|qYrA#s-OxGDPB4F9hNVflwHJ8) z(sEYz+FC6Ok;GuCM$)332l4JKY=HA?XRn;K6XYWz2Sl}uO&elwv%a@>_iRT-pxlDGJQ+}m>>Yjd~og`%y+=3!3!XmEAN>x2$0Hc;5+WU$u1&9{s7`}?%7Kw7(gHc z-i#+hFBcOk`RFh1?#Jb2D((#p6(YM2aAhXxiKc_J+wYfI2P$)3-~dQZ-=! zjdU2A2Z3}Mn#WXfRl@g2!{oh&X{uqBa8Jc~K~92LqO40ZEP(<(nhEVAA2EKynv^#V z(q~&)tZPh*B~ZMjRkY1yk~Klweu`{p zHwCoKhBgS>Pl*w232n2X4XXB2W<`?7xzQ!FpY{PvSE#aCNg2& zLP3+5ux_EANo-i7p2=)jqnycXSVu{k&!)NBYR1;h@Qxf43@ywQSq%U-)R-9ubt@C^ zN4wQjz%7+kW_4nlzVGrWRYX1;Re|X*NB!(j1uh$cbxW{pCTmIa)whx6+>UqrQ zf{vz_{a)wryL;RG;X<^I`;mG0PCj{fILcF1m0F4{2^T~G6*bKTx&YlCAO|;8XB1*F)lPCn>^pMHR#{Mvs^oKzUoVp~&Lyve=aF99oHn@5puTq6Ks#Oh` z@$}LdPA9#APV~Nh1J{6}jHZT8wf=YQc5LeZMRS$nPnfR(A44G$T{4{MhSBSWQZUj$ zg~ubkgLLU=)WIpnBXkuO2y^MU*6Ng{6ozX$%a5lji4o6YF_`xIZx)FYAbbSp)f!Wd zE>Yz$$gI`Mn_J;M?Y#Bq$QjY$ZS?7jI;6d2&`Sx>z z1vNu{XpJ;OyU{^B>ce$RT}al69RF1kWog-({~IMPY3ZN9!@}a9q3@w)@XyfqG9to~ zIq)rayY?3L2Qa4Rs2LdZUhc?F>jl0UBK58!Nfnv`F(nyH^Ei|?P_kpi^P!4e2y6DN zp{DsmohZc;33GlSRLC_79zhTRoRsPnHEbb;_0PvR%jG#=4!gHmoDY#^=$)xChUiZx zo7cp^SOl_7K-GdzJG=r2zK%m|3HtL8|G{mCS=<|>3tj?uvg6gA-rU?4PU4JdK|(m- zfyFk+gaeWAw-Lb#XZgPMa>OKm5>pSNc#Q6a^lH+(o(`wu(m+WBFbtUSczUCEO+y=e zOH&wF@_xJo_%aB-a+?9aOj?ssvd^^sR8IoW=uwd(DQx4T?5+b^lQ+;+B8_|8!XD{< zzW^z|x_z>*UHC2l literal 0 HcmV?d00001 diff --git a/Equipments/TopDrive/TopDriveMain.f90 b/Equipments/TopDrive/TopDriveMain.f90 new file mode 100644 index 0000000..390df53 --- /dev/null +++ b/Equipments/TopDrive/TopDriveMain.f90 @@ -0,0 +1,179 @@ +module TopDriveMain + use CLog4 + implicit none + public + contains + + subroutine TopDrive_Setup() + use CSimulationVariables + implicit none + call OnSimulationStop%Add(TopDrive_Stop) + call OnTopDriveStart%Add(TopDrive_Start) + call OnTopDriveStep%Add(TopDrive_Step) + call OnTopDriveMain%Add(TopDriveMainBody) + end subroutine + + subroutine TopDrive_Stop + implicit none + call Log_4('TopDrive_Stop') + end subroutine TopDrive_Stop + + subroutine TopDrive_Start + implicit none + call Log_4('TopDrive_Start') + end subroutine TopDrive_Start + + subroutine TopDrive_Step + implicit none + call Log_4('TopDrive_Step') + end subroutine TopDrive_Step + + + + + subroutine TopDriveMainBody + + !use CDataDisplayConsoleVariables + !use CDrillingConsoleVariables + use CSimulationVariables + use TopDrive_VARIABLES + use CDrillWatchVariables + use CWarningsVariables + use CSounds + use CTopDrivePanelVariables + + implicit none + + integer,dimension(8) :: TDS_START_TIME, TDS_END_TIME + INTEGER :: TDS_SolDuration + + call Log_4('TopDriveMainBody') + + Call TopDrive_StartUp + loopTopDrivestart : do + + call sleepqq(10) + + !if ( (TopDriveTdsPowerState==-1) .and. (RpmKnob==0.) ) then !FWD + if ( (TopDriveTdsPowerState==-1) ) then !FWD + + + TDS%SoundBlower = .true. + !Call SetSoundBlowerRT(TDS%SoundBlower) + TopDriveTdsPowerLed = 1 + + loopTopDriveswitchFWD: do + + CALL DATE_AND_TIME(values=TDS_START_TIME) + + !IF ( RTTransmissionLever /=0 .and. RotaryGearsAbuse==0 ) THEN !be in clutch mode ???? + TDS%N_new = (RpmKnob/250.d0)*965.d0 ! 0 0) THEN ! flowrate in choke line + ! FlowEl(NoHorizontalEl + NoStringEl + NoAnnulusEl + 1 : NoHorizontalEl + NoStringEl + NoAnnulusEl + NoWellToChokeEl)%FlowRate = AnnulusFlowRate + (DeltaVolumePipe * ConvMinToSec / dt) + !END IF + + IF (ShoeFractured) THEN ! reduction of flowrate due to formation fracture and lost circulation + + !WRITE (*,*) ' SHoe fractured', PressureGauges(5), FlowEl(ShoeFlowElNo)%FlowRate + IF (ShoeFlowElNo > AnnulusLastEl) THEN ! shoe is in openhole + FlowEl(ShoeFlowElNo : NumbEl)%FlowRate = - QLost + FlowEl(AnnulusFirstEl : OpenholeFirstEl - 1)%FlowRate = FlowEl(AnnulusFirstEl : OpenholeFirstEl - 1)%FlowRate - QLost + ELSE ! shoe is in annulus + FlowEl(ShoeFlowElNo : OpenholeFirstEl - 1)%FlowRate = FlowEl(ShoeFlowElNo : OpenholeFirstEl - 1)%FlowRate - QLost + END IF + END IF + + + !!!!!!!!!!!!!!!!!!!!!!!!! + !!!!!!!!!!!!!!!!!!!!!!!!! initial guess flowrates for opening BOP or choke line + IF (WellHeadWasOpen == .FALSE. .AND. NoGasPocket > 0 .AND. KickIteration == 1) THEN + IF (ChokeKroneckerDelta == 1) THEN ! flow on choke line + IF (TotalOpenChokeArea < 0.01 * ChokeAreaFullyOpen) THEN + WRITE (*,*) 'density , TotalOpenChokeArea' , density, TotalOpenChokeArea + TotalOpenChokeArea = 0.01 * ChokeAreaFullyOpen + END IF + Kchoke = (ChokeDensity / ((2.0 * 89158.0) * (0.26 * 0.61 * TotalOpenChokeArea)**2)) * 4.0 ! *4.d0: seyyed gofte + GasPocketFlowInduced%Array(:) = MIN((0.6 / NoGasPocket * SQRT(PressureGauges(2) / Kchoke)) , (0.05 * GasPocketNewVol%Array(:) * ConvFt3toUSgal / 60 / dt)) + WRITE (*,*) ' PressureGauges(2) , Kchoke' , PressureGauges(2) , Kchoke + WRITE (*,*) 'Initial guess after opening choke =', GasPocketFlowInduced%Array(1) + + WRITE (*,*) ' valve 49 ', Valve(49)%Status + WRITE (*,*) ' valve 47 ', Valve(47)%Status + WRITE (*,*) ' valve 26 ', Valve(26)%Status + WRITE (*,*) ' valve 30 ', Valve(30)%Status + WRITE (*,*) ' valve 34 ', Valve(34)%Status + WRITE (*,*) ' valve 63 ', Valve(63)%Status + WRITE (*,*) ' valve 28 ', Valve(28)%Status + WRITE (*,*) ' valve 33 ', Valve(33)%Status + WRITE (*,*) ' valve 62 ', Valve(62)%Status + WRITE (*,*) ' valve 36 ', Valve(36)%Status + WRITE (*,*) ' valve 38 ', Valve(38)%Status + + ELSE ! flow through bell nipple + k = NoHorizontalEl + NoStringEl + NoAnnulusEl + KBOP = FlowEl(AnnulusLastEl)%Density / ((2.0 * 89158.0) * (0.26 * 0.61 * MinimumOpenArea_InBOP)**2) + GasPocketFlowInduced%Array(:) = MIN((0.1 / NoGasPocket * SQRT(PressureGauges(6) / KBOP)) , (0.05 * GasPocketNewVol%Array(:) * ConvFt3toUSgal / 60 / dt)) + WRITE (*,*) 'PressureGauges(6), KBOP', PressureGauges(6), KBOP + WRITE (*,*) 'Initial guess after opening BOP =', GasPocketFlowInduced%Array(1) + END IF + END IF + !!!!!!!!!!!!!!!!!!!!!!!!! + + !!!!!!!!!!!!!!!!!!!!!!!!! flowrates due to expansion of gas pockets or kick influx + !i = AnnulusFirstEl + !j = OpenholeFirstEl - 1 + IF (NoGasPocket > 0) THEN + DO l = 1 , NoGasPocket !GasPocketFlowEl + k = GasPocketFlowEl(l , 1) + !WRITE (*,*) 'GasPocketFlowEl(l , 1)', l, k, j + IF (k == 0) CALL ERRORSTOP('GasPocketFlowEl(l , 1) == 0', l) + + IF (k >= OpenholeFirstEl) THEN ! gas pocket is in open hole only + FlowEl(k : NumbEl)%FlowRate = FlowEl(k : NumbEl)%FlowRate + GasPocketFlowInduced%Array(l) ! openhole elements above pocket + FlowEl(AnnulusFirstEl : OpenholeFirstEl - 1)%FlowRate = FlowEl(AnnulusFirstEl : OpenholeFirstEl - 1)%FlowRate + GasPocketFlowInduced%Array(l) ! annulus and choke line elements + ELSE IF (k < OpenholeFirstEl) THEN ! gas pocket is in annulus ond/or choke line only + FlowEl(k : OpenholeFirstEl - 1)%FlowRate = FlowEl(k : OpenholeFirstEl - 1)%FlowRate + GasPocketFlowInduced%Array(l) ! annulus or choke line elements above pocket + END IF + END DO + END IF + !IF (ChokeKroneckerDelta == 1 .AND. ABS(FlowEl(i + NoAnnulusEl)%FlowRate / 600.0 - Ann_Saved_MudDischarged_Volume_Final) > 0.05) THEN + ! WRITE (*,*) 'Difference between flowrates', FlowEl(i + NoAnnulusEl + 1)%FlowRate / 600.0, Ann_Saved_MudDischarged_Volume_Final + !END IF + + !!!!!!!!!!!!!!!!!!!!!!!!! + !!!!! END - Determining flow rate in each section + + !!!!!!!!!!!!!!!!!!!!!!!!! effect of surge and swab on frictional pressure drop direction + DO l = AnnulusFirstEl , OpenholeFirstEl - 1 + IF (FlowEl(l)%FlowRate < 0.0) THEN + FlowEl(l)%FrictionDirection = -1 + IF (FlowEl(l)%FlowRate > -1.0 * PressFlowrateTolerance .AND. ALLOCATED(GasPocketWeight%Array)) FlowEl(l)%FlowRate = - PressFlowrateTolerance + ELSE + FlowEl(l)%FrictionDirection = 1 + IF (FlowEl(l)%FlowRate < PressFlowrateTolerance .AND. ALLOCATED(GasPocketWeight%Array)) FlowEl(l)%FlowRate = PressFlowrateTolerance + END IF + END DO + !!!!!!!!!!!!!!!!!!!!!!!!! + + !!!!!!!!!!!!!!!!!!!!!!!!! Calculating Back Pressure, in well to pit path back pressure = 0 + ! in well to choke manifold path back pressure is equal to pressure before choke not casing pressure + IF (ChokeKroneckerDelta == 1) THEN + + IF (FlowEl(OpenholeFirstEl - 1)%FlowRate < 0.0) THEN + WRITE (*,*) ' Negative choke flowrate' + FlowEl(OpenholeFirstEl - 1)%FlowRate = MAX((REAL(MudVolume_InjectedToBH) * ConvMintoSec / dt) , 10.0) + END IF + !Kchoke = ChokeDensity / ((2. * 89158.0) * (0.26 * 0.61 * TotalOpenChokeArea)**2) + deltaPchoke = (Kchoke * FlowEl(OpenholeFirstEl - 1)%FlowRate * ABS(FlowEl(OpenholeFirstEl - 1)%FlowRate)) * 1.d0 + !WRITE (*,*) '**deltaPchoke , Kchoke, choke flowrate' , deltaPchoke , Kchoke, FlowEl(i)%FlowRate + !WRITE (*,*) '**TotalOpenChokeArea , Total Open Choke Area Percent' , TotalOpenChokeArea , TotalOpenChokeArea / 4.0 * ChokeAreaFullyOpen + IF (deltaPchoke < 0.d0) deltaPchoke = 0.d0 + BackPressure = REAL(deltaPchoke) + !WRITE (*,*) ' Choke inlet FlowRate, Density, pressure' , FlowEl(j)%FlowRate, FlowEl(j)%Density, FlowEl(j)%StartPress + !WRITE (*,*) ' Choke outlet Density' , FlowEl(i)%Density + !WRITE (*,*) ' deltaPchoke , choke flowrate' , deltaPchoke , FlowEl(i)%FlowRate + !WRITE (*,*) 'Total Open Choke Area Percent' , TotalOpenChokeArea / 4.0 * ChokeAreaFullyOpen + ELSE + BackPressure = 0.0 + END IF + IF (IEEE_IS_NaN(BackPressure)) CALL ErrorStop('NaN in calculating back pressure' , FlowEl(j)%FlowRate) + !write(*,*) 'BackPressure=' , BackPressure + + !!!!!!!!!!!!!!!!!!!!!!!!! when flow passes through choke manifold, solution process may be unstable + IF (ChokeKroneckerDelta == 1) THEN ! thus we should stabilize solution + IF (TotalOpenChokeArea > 0.5 * ChokeAreaFullyOpen) THEN + KickCorrectionUnderRelaxation = 0.6 + ELSE IF (TotalOpenChokeArea > 0.1 * ChokeAreaFullyOpen) THEN + KickCorrectionUnderRelaxation = 0.5 + ELSE ! TotalOpenChokeArea < 0.1 * ChokeAreaFullyOpen + KickCorrectionUnderRelaxation = 0.4 + END IF + ELSE + KickCorrectionUnderRelaxation = 0.6 + END IF + !!!!!!!!!!!!!!!!!!!!!!!!! + + !!!!!!!!!!!!!!!!!!!!!!!!! calculating frictional pressure drop in annulus, chooke line and open hole elements + DO ifric = AnnulusFirstEl , NumbEl + CALL FricPressDrop(ifric) + !WRITE (*,*) ' element No, FlowRate , Density, FricPressLoss', ifric, FlowEl(ifric)%FlowRate, FlowEl(ifric)%Density, FlowEl(ifric)%FricPressLoss + IF (IEEE_IS_NaN(FlowEl(ifric)%FricPressLoss)) THEN + WRITE (*,*) 'H, S, A, Ch, O', NoHorizontalEl , NoStringEl , NoAnnulusEl , NoWellToChokeEl , NoOpenHoleEl + WRITE (*,*) 'Ann/Op start, end, density, Q, mu, Type' , FlowEl(ifric)%StartX, FlowEl(ifric)%EndX, FlowEl(ifric)%Density, FlowEl(ifric)%FlowRate, FlowEl(ifric)%mueff, FlowEl(ifric)%MaterialType + CALL ErrorStop('NaN in calculating pressure drop' , ifric) + END IF + + END DO + !IF (ChokeKroneckerDelta == 1) THEN + !WRITE (*,*) ' velocity and flowrate', FlowEl(i)%vel, FlowEl(i)%flowrate + !WRITE (*,*) ' Theta600, Theta300', FlowEl(i)%Theta600 , FlowEl(i)%Theta300 + !WRITE (*,*) ' kIndex , nIndex', FlowEl(i)%kIndex, FlowEl(i)%nIndex + !WRITE (*,*) ' last el. mueff, gen. Rey.', i, FlowEl(i)%mueff, FlowEl(i)%GenRe + !END IF + + !!!!!!!!!!!!!!!!!!!!!!!!! Pressure distribution in annulus + j = OpenholeFirstEl - 1 + FlowEl(OpenholeFirstEl - 1)%EndPress = BackPressure + FlowEl(OpenholeFirstEl - 1)%StartPress = FlowEl(OpenholeFirstEl - 1)%EndPress + FlowEl(OpenholeFirstEl - 1)%FricPressLoss + FlowEl(OpenholeFirstEl - 1)%StaticPressDiff + + !write(*,*) 'FlowEl(j)%StartPress=' ,j, FlowEl(j)%StartPress + !write(*,*) 'FlowEl(j)%Length=' ,j, FlowEl(j)%Length, FlowEl(j)%EndX + !write(*,*) 'FlowEl(i)%dPdLFric=' ,i, FlowEl(i)%dPdLFric + + DO l = OpenholeFirstEl - 2 , AnnulusFirstEl , -1 + !WRITE (*,*) '123' + FlowEl(l)%EndPress = FlowEl(l + 1)%StartPress + FlowEl(l)%StartPress = FlowEl(l)%EndPress + FlowEl(l)%FricPressLoss + FlowEl(l)%StaticPressDiff + !WRITE(*,*) "ANNULUS: bottom , top Pressure", l , FlowEl(l)%StartPress , FlowEl(l)%EndPress , FlowEl(l)%fricPressLoss + !WRITE(*,*) "ANNULUS: Start , End X", FlowEl(l)%StartX , FlowEl(l)%EndX + + + !write(*,*) 'FlowEl(i)%StartPress=' ,i, FlowEl(i)%StartPress + !WRITE (*,*) ' FlowEl(i)%GenRe, FlowEl(i)%ReCritLam ' , FlowEl(i)%GenRe , FlowEl(i)%ReCritLam + END DO + + + !!!!!!!!!!!!!!!!! Pressure distribution in Open Hole + FlowEl(NumbEl)%EndPress = FlowEl(AnnulusFirstEl)%StartPress + FlowEl(NumbEl)%StartPress = FlowEl(NumbEl)%EndPress + FlowEl(NumbEl)%FricPressLoss + FlowEl(NumbEl)%StaticPressDiff + !WRITE (*,*) 'op top and op down' , FlowEl(NumbEl)%EndPress, FlowEl(j + 1)%StartPress + !write(*,*) 'FlowEl(NumbEl)%dPdLFric=' , FlowEl(NumbEl)%dPdLFric + !write(*,*) 'FlowEl(NumbEl)%dPdLGrav=' , FlowEl(NumbEl)%dPdLGrav + + DO l = NumbEl - 1 , OpenholeFirstEl , -1 + !WRITE(*,*) ' ope' + FlowEl(l)%EndPress = FlowEl(l + 1)%StartPress + !IF (FlowEl(i)%FlowRate < 0.0d0) THEN + ! FlowEl(i)%StartPress = FlowEl(i)%EndPress - FlowEl(i)%FricPressLoss + FlowEl(i)%StaticPressDiff + !ELSE + FlowEl(l)%StartPress = FlowEl(l)%EndPress + FlowEl(l)%FricPressLoss + FlowEl(l)%StaticPressDiff + !WRITE (*,*) ' Length, static, frictional open' , FlowEl(i)%Length, FlowEl(i)%StaticPressDiff, FlowEl(i)%FricPressLoss + + !END IF + END DO + +ELSE ! wellhead is closed and kick is in the well + !WRITE (*,*) ' well head is closed' + k = GasPocketFlowEl(NoGasPocket , 1) + !WRITE (*,*) 'k, Pocket Press', k, GasPocketOldPress%Array(NoGasPocket) - StandardPress + i = AnnulusFirstEl + j = OpenholeFirstEl - 1 + FlowEl(k)%StartPress = GasPocketOldPress%Array(NoGasPocket) - StandardPress + FlowEl(k)%EndPress = GasPocketOldPress%Array(NoGasPocket) - StandardPress + IF (k > OpenholeFirstEl - 1) THEN ! Top pocket StartX is in Open hole + !WRITE (*,*) 'here 1' + DO l = k - 1 , OpenholeFirstEl , -1 ! below elements in openhole + !WRITE (*,*) 'here 1-1' + FlowEl(l)%EndPress = FlowEl(l + 1)%StartPress + FlowEl(l)%StartPress = FlowEl(l)%EndPress + FlowEl(l)%StaticPressDiff + END DO + + DO l = k + 1 , NumbEl ! Above elements in openhole + !WRITE (*,*) 'here 1-2' + FlowEl(l)%StartPress = FlowEl(l - 1)%EndPress + FlowEl(l)%EndPress = FlowEl(l)%StartPress - FlowEl(l)%StaticPressDiff + END DO + + FlowEl(AnnulusFirstEl)%StartPress = FlowEl(NumbEl)%EndPress + FlowEl(AnnulusFirstEl)%EndPress = FlowEl(AnnulusFirstEl)%StartPress - FlowEl(AnnulusFirstEl)%StaticPressDiff + + DO l = AnnulusFirstEl + 1 , OpenholeFirstEl - 1 + FlowEl(l)%StartPress = FlowEl(l - 1)%EndPress + FlowEl(l)%EndPress = FlowEl(l)%StartPress - FlowEl(l)%StaticPressDiff + END DO + + ELSE ! Top pocket StartX is in annulus or choke line + + DO l = k - 1 , AnnulusFirstEl , -1 ! below elements in annnulus + FlowEl(l)%EndPress = FlowEl(l + 1)%StartPress + FlowEl(l)%StartPress = FlowEl(l)%EndPress + FlowEl(l)%StaticPressDiff + END DO + + DO l = k + 1 , OpenholeFirstEl - 1 ! Above elements in annulus + FlowEl(l)%StartPress = FlowEl(l - 1)%EndPress + FlowEl(l)%EndPress = FlowEl(l)%StartPress - FlowEl(l)%StaticPressDiff + END DO + + FlowEl(NumbEl)%EndPress = FlowEl(AnnulusFirstEl)%StartPress + FlowEl(NumbEl)%StartPress = FlowEl(NumbEl)%EndPress + FlowEl(NumbEl)%StaticPressDiff + + DO l = NumbEl - 1 , OpenholeFirstEl , -1 + FlowEl(l)%EndPress = FlowEl(l + 1)%StartPress + FlowEl(l)%StartPress = FlowEl(l)%EndPress + FlowEl(l)%StaticPressDiff + END DO + + END IF + + ! + ! !WRITE (*,*) ' first annulus bottom pressure ' , FlowEl(NoHorizontalEl + NoStringEl + 1)%StartPress + ! !WRITE (*,*) ' last OpenHole bottom pressure' , FlowEl(NumbEl)%StartPress + ! !WRITE (*,*) ' Gas Pocket pressure' , GasPocket%NewPress +END IF + + !!!!!!!!!!!!!!!!!!!!!! checking pressure for preventing NaN in pressures + DO l = OpenholeFirstEl - 1 , AnnulusFirstEl , -1 ! annulus or choke elements + !WRITE (*,*) 'start, end' , FlowEl(i)%StartX, FlowEl(i)%EndX + IF (IEEE_IS_NaN(FlowEl(l)%EndPress)) THEN + WRITE (*,*) 'H, S, A, Ch, O', NoHorizontalEl , NoStringEl , NoAnnulusEl , NoWellToChokeEl , NoOpenHoleEl + WRITE (*,*) 'Ann/Ch start, end, density, Q, mu' , FlowEl(l)%StartX, FlowEl(l)%EndX, FlowEl(l)%Density, FlowEl(l)%FlowRate, FlowEl(l)%mueff, FlowEl(l)%MaterialType + CALL ERRORSTOP('NaN in EndPress', l) + END IF + END DO + + DO l = NumbEl , OpenholeFirstEl - 1 , -1 ! op elements + !WRITE (*,*) 'start, end' , FlowEl(i)%StartX, FlowEl(i)%EndX + IF (IEEE_IS_NaN(FlowEl(l)%EndPress)) THEN + WRITE (*,*) 'H, S, A, Ch, O', NoHorizontalEl , NoStringEl , NoAnnulusEl , NoWellToChokeEl , NoOpenHoleEl + WRITE (*,*) 'Op start, end, density, Q, mu' , FlowEl(l)%StartX, FlowEl(l)%EndX, FlowEl(l)%Density, FlowEl(l)%FlowRate, FlowEl(l)%mueff, FlowEl(l)%MaterialType + CALL ERRORSTOP('NaN in EndPress', l) + END IF + END DO + !!!!!!!!!!!!!!!!!!!!!! + + !!!!!!!!!!!!!!!!!!!!!! + BottomHolePress = FlowEl(OpenholeFirstEl)%StartPress + !DO i = 1 , NoGasPocket + ! WRITE (*,*) ' Pocket, Pressure, Vol, Flow Induced, FlowElPress', i, REAL(GasPocketNewPress%Array(i)), REAL(GasPocketNewVol%Array(i)), GasPocketFlowInduced%Array(i), FlowEl(GasPocketFlowEl(i , 1))%StartPress + !END DO + !WRITE (*,*) ' BottomHolePress =' , BottomHolePress + !!!!!!!!!!!!!!!!!!!!!! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !IF (ChokeKroneckerDelta == 1) THEN + ! WRITE (*,*) ' ChokeLine flowrate' , FlowEl(NoHorizontalEl + NoStringEl + NoAnnulusEl + NoWellToChokeEl)%FlowRate , stringflowrate + ! !i = NoHorizontalEl + NoStringEl + NoAnnulusEl + ! !j = NoHorizontalEl + NoStringEl + NoAnnulusEl + NoWellToChokeEl + ! !WRITE (*,*) ' Well Outlet and Chokeline Outlet Pressure' , FlowEl(i)%EndPress, FlowEl(j)%EndPress + !END IF + + !IF (GasPocket%ElementNo == 0) THEN + ! KickUnknownVector(2) = BottomHolePress + !!ELSE + !! KickUnknownVector(2) = FlowEl(GasPocket%ElementNo)%StartPress + !END IF + !IF (WellHeadOpen) + ! GasPocket%NewPress = KickUnknownVector(2) + !END IF + !WRITE (*,*) 'Ann End' +END SUBROUTINE \ No newline at end of file diff --git a/FluidFlow/Flow_Startup.f90 b/FluidFlow/Flow_Startup.f90 new file mode 100644 index 0000000..a514684 --- /dev/null +++ b/FluidFlow/Flow_Startup.f90 @@ -0,0 +1,118 @@ +SUBROUTINE FlowStartup + + USE Fluid_Flow_Startup_Vars + USE CStringConfigurationVariables + USE CMudPropertiesVariables + USE FricPressDropVars + USE KickVariables + USE MudSystemVARIABLES + USE PressureDisplayVARIABLES + USE CShoeVariables + USE TD_DrillStemComponents + USE TD_WellGeometry, pi3 => pi + USE CPathGenerationVariables + USE CWellSurveyDataVariables + Use CHOKEVARIABLES, pi4 => pi + + + IMPLICIT NONE + + INTEGER :: i + + PressureGauges(:) = 0.0 + + KickSinglePocket = MakeKickSinglePacket + IF (KickSinglePocket) THEN + MaxGasPocket = 1 + ELSE + MaxGasPocket = 4 + END IF + MaxChokeDensityChange = 25.0 ! [ppg/min] + ChokeMinDensity = 2.0 + + ChokeDensity = ActiveDensity + + MinKickVol = 0.5 ! USGal + + SecondaryKickVol = 0.0 + SecondaryKickWeight = 0.0 + + NoGasPocket = 0 ! No Kick + WellHeadOpen = .TRUE. + WellHeadWasOpen = .TRUE. + BackPressure = 0.0 + GasKickPumpFlowRate = 0.0 + KickVolume = 0.0 + InfluxRate = 0.0 + ExitMass = 0.0 + MinAllowableKickVol = 1.0 * (42.0 / Convft3toUSgal) ! 1 bbl * 42 gal/bbl / 7.48 gal/ft^3 = ... ft^3 + StCompressedMudVol = 0.0 + AnnCompressedMudVol = 0.0 + KickFlux = .FALSE. + KickOffBottom = .FALSE. + KickWasExitingThroughChoke = .FALSE. + FloatValveOpen = .TRUE. + + ChokeAreaFullyOpen = 123.0 / 64.0 ! fully open area is 123/64 in^2 = 0.01334635 ft^2 + ChokeBypassArea = PI / 4.0 * ChokeLineID**2 + BHPSafetyMargin = 150.0 + AChBHPTol = 15.0 + + + ManChoke1Plug = 0 + ManChoke2Plug = 0 + ManChoke1Washout = 0 + ManChoke2Washout = 0 + BitJetsPlugged = 0 + BitJetsWashedOut = 0 + CasingPressure_DataDisplayMalF = 0 + + SoundSpeed = 1530.0 / Convfttom + PressureTimeStepDelay(1) = INT(2.0 * SUM(StringConfigurations(2:)%ComponentLength) / SoundSpeed / dt) + PressureTimeStepDelay(2) = INT(PathGenerations(SIZE(PathGenerations))%MeasuredDepth / SoundSpeed / dt) + PressureTimeStepDelay(3) = INT(ShoeDepth / SoundSpeed / dt) + + !WRITE (*,*) SUM(StringConfigurations(2:)%ComponentLength), PathGenerations(SIZE(PathGenerations))%TotalVerticalDepth!, WellSurveyData(SIZE(WellSurveyData))%TotalVerticalDepth + !WRITE (*,*) PathGenerations(SIZE(PathGenerations))%MeasuredDepth!, WellSurveyData(SIZE(WellSurveyData))%MeasuredDepth + WRITE (*,*) 'time step delay', PressureTimeStepDelay + + DO i = 1 , PressureTimeStepDelay(1) + CALL PumpPressureDelay%AddToFirst(0.0) + END DO + + DO i = 1 , PressureTimeStepDelay(2) + CALL BottomHolePressureDelay%AddToFirst(REAL(0.052 * ActiveDensity * PathGenerations(SIZE(PathGenerations))%TotalVerticalDepth)) + END DO + + DO i = 1 , PressureTimeStepDelay(3) + CALL ShoePressureDelay%AddToFirst(REAL(0.052 * ActiveDensity * ShoeDepth)) + END DO + + + !!!!!!! Methane Information + GasType(1)%CritPress = 673.0 + GasType(1)%CritTemp = 344.0 + GasType(1)%MolarWt = 16.04 + GasType(1)%StDensity = 0.04238 + GasType(1)%GasConstant = RUniversal / GasType(1)%MolarWt + + !!!!!!!! H2S Information + GasType(2)%CritPress = 1306.0 + GasType(2)%CritTemp = 673.0 + GasType(2)%MolarWt = 34.08 + GasType(2)%StDensity = 0.09087 + GasType(2)%GasConstant = RUniversal / GasType(2)%MolarWt + + !!!!!!!! CO2 Information + GasType(3)%CritPress = 1072.0 + GasType(3)%CritTemp = 548.0 + GasType(3)%MolarWt = 44.01 + !GasType(3)%StDensity = 00 + GasType(3)%GasConstant = RUniversal / GasType(2)%MolarWt + + !!!!!!!! Mud density and viscosity + Theta600Refrence = ActiveThetaSixHundred + Theta300Refrence = ActiveThetaThreeHundred + DensityRefrence = ActiveDensity + + END SUBROUTINE \ No newline at end of file diff --git a/FluidFlow/Flow_Startup_VARIABLES.f90 b/FluidFlow/Flow_Startup_VARIABLES.f90 new file mode 100644 index 0000000..79b8b63 --- /dev/null +++ b/FluidFlow/Flow_Startup_VARIABLES.f90 @@ -0,0 +1,62 @@ +MODULE Fluid_Flow_Startup_Vars + + !!! In this module constants and conversion factors are stated + + + REAL , PARAMETER :: RUniversal = 10.73159 ! [psia.ft^3/(lbmole.R)] + REAL , PARAMETER :: RUniversalSI = 8.314 * 10**6 ! [Pa.cm^3/(mole.K)] + REAL , PARAMETER :: PI = 3.141593 ! Pi number + REAL , PARAMETER :: StandardPress = 14.7 ! [psia] + REAL , PARAMETER :: StandardTemp = 519.67 ! 60 F [R] , Temp F = Temp R + 459.67 + REAL , PARAMETER :: dt = 0.1 ! time step = 0.1 [s] + REAL , PARAMETER :: GasDensityRefrence = 28.96 ! molar weight of air [lbm/lbmole] + + !! Tolerance and convergence or error criteria + REAL , PARAMETER :: UTubePressTolerance = 4 ! minimum pressure tolerance between two arms of U tube for which calculations will stop [psi] + !REAL , PARAMETER :: PressDensityTolerance = 2 ! Pressure Density Tolerance: for flow elements with density below this amount (usually gas pockets), + ! frictional and gravitional pressure gradients are neglected [ppg] + REAL , PARAMETER :: PressLengthTolerance = 0.0 ! Pressure Length Tolerance: for flow elements with length below this amount, + ! frictional and gravitional pressure gradients are neglected [ft] + REAL , PARAMETER :: PressFlowrateTolerance = 0.2 ! Pressure Flowrate Tolerance: for flow elements with flowrates below this amount, + ! frictional pressure gradients are neglected [gpm] + REAL , PARAMETER :: KickConvergenceTolerance = 0.05 ! absolute value of maximum error in calculation of gas kick pressure and flowrate + + !!!!!!!!!!!!!!!!!! Conversion factors + REAL , PARAMETER :: Convlbftolbm = 32.174 ! 1 lbf = 32.174 lbm*ft/s^2 + REAL , PARAMETER :: Convft3toUSgal = 7.48052 ! 1 ft^3 = 7.48052 US gal + REAL , PARAMETER :: Convfttom = 0.3048 ! 1 ft = 0.3048 m + REAL , PARAMETER :: Convfttoinch = 12.0 ! 1 ft = 12 inch + REAL , PARAMETER :: Convdaytohour = 24.0 ! 1 day = 24 hour + REAL , PARAMETER :: Convhourtomin = 60.0 ! 1 hour = 60 min + REAL , PARAMETER :: Convmintosec = 60.0 ! 1 min = 60 sec + REAL , PARAMETER :: ConvpsitoPa = 6894.76 ! 1 psi = 6894.76 pa + REAL , PARAMETER :: ConvRtoK = 0.555556 ! 1 R = 0.555556 K + REAL , PARAMETER :: Convpcftogpcm3 = 0.0160185 ! 1 lbm/ft^3 = 0.0160185 gr/cm^3 + !!!!!!!!!!!!!!!!! + + !!!!!!! Bit data !!!!!! + LOGICAL :: BitTrue ! bit may be present (.TRUE.) or may be absent(.FALSE.) + REAL :: BitNozzleArea ! area of a nozzle + INTEGER :: BitNozzleNum ! Number of bit nozzles + REAL :: BitNozzDia ! nozzle diameter in 1/32 in + REAL :: BitTotNozzArea ! Total bit area + REAL :: BitCd ! Discharge coefficient + REAL :: BitPressLoss ! bit pressure loss [psi] + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + REAL :: Theta600Refrence , Theta300Refrence ! Fann data (Theta600 and Theta300) of active tank (input from panel) + REAL :: DensityRefrence ! Density of active tank mud (input from panel) [gpm] + + + TYPE, PUBLIC :: GasData + REAL :: CritPress ! critical pressure [psia] + REAL :: CritTemp ! critical temperature [R] + REAL :: MolarWt ! molar weight [lbm/lbmole] + REAL :: StDensity ! density at standard pressure (14.7 psi) and temperature (60 F = 520 Ra) [lbm/ft^3] + REAL :: GasConstant ! Gas constant = RUniversal/MolarWt [psia.ft^3/(R.lbm)] + END TYPE GasData + TYPE(GasData) :: GasType(3) ! 1 = methane , 2 = Hydrogen sulfide , 3 = Carbon dioxid + + + END MODULE + \ No newline at end of file diff --git a/FluidFlow/FluidFlowMain.f90 b/FluidFlow/FluidFlowMain.f90 new file mode 100644 index 0000000..e400667 --- /dev/null +++ b/FluidFlow/FluidFlowMain.f90 @@ -0,0 +1,147 @@ +module FluidFlowMain + implicit none + public + contains +! + subroutine FluidFlow_Setup() + use CSimulationVariables + implicit none + !call OnSimulationInitialization%Add(FluidFlow_Init) + call OnSimulationStop%Add(FluidFlow_Stop) + call OnFluidFlowStart%Add(FluidFlow_Start) + call OnFluidFlowStep%Add(FluidFlow_Step) + !call OnFluidFlowOutput%Add(FluidFlow_Output) + call OnFluidFlowMain%Add(FluidFlowMainBody) + end subroutine + + subroutine FluidFlow_Stop + implicit none + !WRITE (*,*) ' fluid flow done_Stop' + call DEALLOCATE_ARRAYS_NormalCirculation() + CALL DeallocateFlowTypes + end subroutine FluidFlow_Stop + + subroutine FluidFlow_Start + USE Fluid_Flow_Startup_Vars + implicit none + !WRITE (*,*) ' fluid flow done_Start' + CALL NormalCirculation_StartUp() + CALL FlowStartup + + Call TD_StartUp + Call TD_WellReadData + Call TD_WellElementsReadData + Call TD_DrillStemReadData + Call TD_PipePropertiesReadData + end subroutine FluidFlow_Start + + subroutine FluidFlow_Step + implicit none + integer :: i, FlowDuration, SimulationStateOld + integer,dimension(8) :: FlowStartTime,FlowEndTime + + !WRITE (*,*) ' fluid flow done_Step' + !call Fluid_Flow_Solver + + + + + + + CALL DATE_AND_TIME(values=FlowStartTime) + call Fluid_Flow_Solver + + CALL DATE_AND_TIME(values=FlowEndTime) + + FlowDuration = 3600000 * (FlowEndTime(5) - FlowStartTime(5)) + 60000 * (FlowEndTime(6) - FlowStartTime(6)) + 1000 * (FlowEndTime(7) - FlowStartTime(7)) + (FlowEndTime(8) - FlowStartTime(8)) + + WRITE (*,*) 'FlowDuration (ms)=' , FlowDuration + + end subroutine FluidFlow_Step + + !subroutine FluidFlow_Output + ! implicit none + !end subroutine FluidFlow_Output + + subroutine FluidFlowMainBody +! + use ifport + use ifmt + use CSimulationVariables + USE Fluid_Flow_Startup_Vars + !use general_info, only : reset_data + !use well_info + !use drilling_info + use CLog1 +! + implicit none + + !integer :: i, FlowDuration, SimulationStateOld + !integer,dimension(8) :: FlowStartTime,FlowEndTime + ! + ! + !CALL NormalCirculation_StartUp() + !CALL FlowStartup + ! + !Call TD_StartUp + !Call TD_WellReadData + !Call TD_WellElementsReadData + !Call TD_DrillStemReadData + !Call TD_PipePropertiesReadData + ! + ! + !LoopSimulation: do + ! !WRITE (*,*) ' fluid flow done 0' + !! + ! CALL DATE_AND_TIME(values=FlowStartTime) + ! !WRITE (*,*) 'FlowStartTime=', FlowStartTime + !! + ! call Fluid_Flow_Solver + ! + !! + ! CALL DATE_AND_TIME(values=FlowEndTime) + !! + ! !WRITE (*,*) ' fluid flow done 1' + ! + ! + ! + ! FlowDuration = 3600000 * (FlowEndTime(5) - FlowStartTime(5)) + 60000 * (FlowEndTime(6) - FlowStartTime(6)) + 1000 * (FlowEndTime(7) - FlowStartTime(7)) + (FlowEndTime(8) - FlowStartTime(8)) + ! + ! + ! !call Log_1('FlowDuration=', FlowDuration) + ! !WRITE (*,*) 'FlowDuration (ms)=' , FlowDuration + ! + ! if ((100 - FlowDuration) > 0) then + ! !WRITE (*,*) 'fluid flow done 2' + ! call sleepqq(100 - FlowDuration) + ! !WRITE (*,*) ' fluid flow done 3' + ! + ! end if + ! !WRITE (*,*) ' fluid flow done 4' + ! + ! + ! + ! !WRITE (*,*) "FlowDuration", FlowDuration + ! !if(IsStopped) then + ! ! EXIT LoopSimulation + ! !ENDIF + ! !write(*,*) 'IsStopped=' , IsStopped + ! + ! if(IsStopped) then + ! !write(*,*) '44444444444' + ! + ! call DEALLOCATE_ARRAYS_NormalCirculation() + ! CALL DeallocateFlowTypes + ! call Quit() + ! end if + ! ! + ! ! if(IsStopped) exit LoopSimulation + ! ! + !end do LoopSimulation + !!call DEALLOCATE_ARRAYS_NormalCirculation() + !!CALL DeallocateFlowTypes + ! +! + end subroutine FluidFlowMainBody + +end module FluidFlowMain \ No newline at end of file diff --git a/FluidFlow/Fluid_Flow_Solver.f90 b/FluidFlow/Fluid_Flow_Solver.f90 new file mode 100644 index 0000000..55b0c3e --- /dev/null +++ b/FluidFlow/Fluid_Flow_Solver.f90 @@ -0,0 +1,58 @@ +subroutine Fluid_Flow_Solver + + Use GeoElements_FluidModule + Use UTUBEVARS + USE KickVariables + USE PressureDisplayVARIABLES + USE FricPressDropVars + USE MudSystemVARIABLES + USE Fluid_Flow_Startup_Vars + USE CError + + implicit none + INTEGER :: FlowDuration + Integer :: qwer + integer,dimension(8) :: FlowStartTime,FlowEndTime + + !WRITE (*,*) ' fluid flow pointer 1' + CALL TD_MainCalculations + + Call MeshGeneration_FluidModule + + !WRITE (*,*) ' fluid flow pointer 2' + + FluidFlowCounter = FluidFlowCounter + 1 + + call CirculationCodeSelect + + + CALL WellPressureDataTransfer + + CALL FormationInformationCalculator + + DO KickIteration = 1 , 40 + + !WRITE (*,*) ' Kick Iteration', KickIteration + + CALL PressureAnnAndOHDistribution + + IF (NoGasPocket > 0) THEN + !KickCorrectionVector(:) = 1. + CALL GasKickCalculator + END IF + + IF (NoGasPocket == 0 .OR. NOT(WellHeadOpen)) EXIT + IF(MAXVAL(ABS(KickVandPFunction(:))) < KickConvergenceTolerance) EXIT + !IF(MAXVAL(ABS(KickCorrectionVector(:))) < KickConvergenceTolerance) EXIT + + + END DO + + CALL PressureHorizAndStringDistribution + + IF (KickIteration == 41) THEN + WRITE (*,*) ' KickCorrectionVector ' , KickCorrectionVector + WRITE (*,*) ' Kick Jacobian = ', KickJacobian + END IF + +end subroutine \ No newline at end of file diff --git a/FluidFlow/Frictional_Press_Drop_Calc.f90 b/FluidFlow/Frictional_Press_Drop_Calc.f90 new file mode 100644 index 0000000..228b18a --- /dev/null +++ b/FluidFlow/Frictional_Press_Drop_Calc.f90 @@ -0,0 +1,230 @@ +SUBROUTINE FricPressDrop(iloc) + + + + !! Record of revisions + !! Date Programmer Discription of change + !! ------ ------------ ----------------------- + !! 1396/07/23 Sheikh Original code + !! + + + + USE FricPressDropVars + USE CMudPropertiesVariables + USE Fluid_Flow_Startup_Vars + USE CError + + IMPLICIT NONE + + INTEGER :: iloc + REAL :: TauZero + TauZero = 12.0 + !ActiveRheologyModel = Herschel_Bulkley_RheologyModel + + ! 0 = Power Law , 1 = Bingham Plastic , 2 = Newtonian + !TotFricPressLoss = 0.0 + + FlowEl(iloc)%alpha = 1 ! assume that all elements have annulus geometry + FlowEl(iloc)%dPdLfric = 0.0 + FlowEl(iloc)%f = 0.0 + FlowEl(iloc)%FlowRate = ABS(FlowEl(iloc)%FlowRate) + + + + IF ((FlowEl(iloc)%FlowRate >= PressFlowrateTolerance) & + .AND. (FlowEl(iloc)%MaterialType /= 1) & ! not gas kick + .AND. (ABS(FlowEl(iloc)%Length) >= PressLengthTolerance) & + .AND. (FlowEl(iloc)%MaterialType /= 4)) THEN ! not air + + IF (FlowEl(iloc)%Id==0) THEN + FlowEl(iloc)%alpha = 0 + END IF + + FlowEl(iloc)%muPlastic = FlowEl(iloc)%Theta600 - FlowEl(iloc)%Theta300 ! cp + FlowEl(iloc)%YieldP = 2.0 * FlowEl(iloc)%Theta300 - FlowEl(iloc)%Theta600 ! lbf/100ft**2 + FlowEl(iloc)%nIndex = 3.32 * log10(FlowEl(iloc)%Theta600 / FlowEl(iloc)%Theta300) + FlowEl(iloc)%kIndex = 510.0 * FlowEl(iloc)%Theta300 / (511.0**FlowEl(iloc)%nIndex) ! rabete fv2 + IF (ActiveRheologyModel == Herschel_Bulkley_RheologyModel .AND. FlowEl(iloc)%alpha == 0) THEN + FlowEl(iloc)%kIndex = 1.066 * FlowEl(iloc)%Theta300 / (511.0**FlowEl(iloc)%nIndex) + ELSE IF (ActiveRheologyModel == Herschel_Bulkley_RheologyModel .AND. FlowEl(iloc)%alpha == 1) THEN + FlowEl(iloc)%nIndex = 3.32 * log10((FlowEl(iloc)%Theta600 - TauZero) / (FlowEl(iloc)%Theta300 - TauZero)) + FlowEl(iloc)%kIndex = 1.066 * (FlowEl(iloc)%Theta300 - TauZero) / (511.0**FlowEl(iloc)%nIndex) + END IF + + + + + ! Calculating velocity + FlowEl(iloc)%vel = 0.408 * FlowEl(iloc)%FlowRate / (FlowEl(iloc)%Od**2 - FlowEl(iloc)%Id**2) ! velocity in ft/s + !FlowEl(iloc)%vel = 24.51 * FlowEl(iloc)%FlowRate / (FlowEl(iloc)%Od**2 - FlowEl(iloc)%Id**2) ! velocity in ft/min + + !IF (FlowModel == Bingham_RheologyModel) THEN ! Bingham Plastic + ! FlowEl(iloc)%Gf = (2. + FlowEl(iloc)%alpha) / 2. + !ELSE IF (FlowModel == PowerLow_RheologyModel) THEN + ! FlowEl(iloc)%Gf = ((3. - FlowEl(iloc)%alpha) * FlowEl(iloc)%nIndex + 1.) / FlowEl(iloc)%nIndex / (4. - FlowEl(iloc)%alpha) * (2. + FlowEl(iloc)%alpha) / 2. + !END IF + + !FlowEl(iloc)%gammaW = 1.6 * FlowEl(iloc)%Gf * FlowEl(iloc)%vel / FlowEl(iloc)%Dhyd + + !IF (FlowModel == Bingham_RheologyModel) THEN ! Bingham Plastic + ! FlowEl(iloc)%tauW = 1.067 * ((4. - FlowEl(iloc)%alpha) / (3. - FlowEl(iloc)%alpha) * FlowEl(iloc)%YieldP + FlowEl(iloc)%muPlastic * FlowEl(iloc)%gammaW) + ! !FlowEl(iloc)%tauW = 1.067*(FlowEl(iloc)%YieldP+FlowEl(iloc)%muPlastic*FlowEl(iloc)%gammaW) + !ELSE IF (FlowModel == PowerLow_RheologyModel) THEN ! Power law + ! FlowEl(iloc)%tauW = 1.067 * FlowEl(iloc)%kIndex * FlowEl(iloc)%gammaW**FlowEl(iloc)%nIndex + !END IF + + ! Calculating effective or apparent viscosity + IF (ActiveRheologyModel == Bingham_RheologyModel) THEN ! Bingham Plastic + FlowEl(iloc)%mueff = FlowEl(iloc)%muPlastic + 5. * FlowEl(iloc)%YieldP * FlowEl(iloc)%Dhyd / FlowEl(iloc)%vel + !write(*,*) 'pointer1' , FlowEl(iloc)%muPlastic , FlowEl(iloc)%YieldP , FlowEl(iloc)%Dhyd , FlowEl(iloc)%vel + ELSE IF (ActiveRheologyModel == PowerLaw_RheologyModel .OR. ActiveRheologyModel == Herschel_Bulkley_RheologyModel) THEN ! Power Law + FlowEl(iloc)%Gf = ((3. - FlowEl(iloc)%alpha) * FlowEl(iloc)%nIndex + 1.0) / FlowEl(iloc)%nIndex / (4.0 - FlowEl(iloc)%alpha) * (2.0 + FlowEl(iloc)%alpha) / 2.0 + FlowEl(iloc)%mueff = (FlowEl(iloc)%kIndex) / (1. + FlowEl(iloc)%alpha / 2.) * ((96. * FlowEl(iloc)%vel / FlowEl(iloc)%Dhyd)**(FlowEl(iloc)%nIndex - 1)) * FlowEl(iloc)%Gf**FlowEl(iloc)%nIndex + !write(*,*) 'pointer2' , FlowEl(iloc)%kIndex ,FlowEl(iloc)%alpha , FlowEl(iloc)%vel ,FlowEl(iloc)%Dhyd,FlowEl(iloc)%nIndex ,FlowEl(iloc)%Gf ,FlowEl(iloc)%nIndex + END IF + + FlowEl(iloc)%gammaW = 96.0 * FlowEl(iloc)%Gf * FlowEl(iloc)%vel / FlowEl(iloc)%Dhyd + + FlowEl(iloc)%tauW = ((4.0 - FlowEl(iloc)%alpha) / (3.0 - FlowEl(iloc)%alpha))**FlowEl(iloc)%nIndex * TauZero + FlowEl(iloc)%kIndex * FlowEl(iloc)%gammaW**FlowEl(iloc)%nIndex + + + ! Calculating Reynolds number + IF (FlowEl(iloc)%Od == FlowEl(iloc)%Dhyd) THEN + FlowEl(iloc)%GenRe = 928. * FlowEl(iloc)%density * FlowEl(iloc)%vel * FlowEl(iloc)%Dhyd / FlowEl(iloc)%mueff + ELSE + FlowEl(iloc)%GenRe = 757. * FlowEl(iloc)%density * FlowEl(iloc)%vel * FlowEl(iloc)%Dhyd / FlowEl(iloc)%mueff + END IF + + !FlowEl(iloc)%GenRe = 2997 * FlowEl(iloc)%density * FlowEl(iloc)%vel**2 / 19.36 / FlowEl(iloc)%tauW + + ! Calculating friction factor + IF (ActiveRheologyModel == Bingham_RheologyModel) THEN ! Bingham Plastic + IF (FlowEl(iloc)%GenRe <= 2000.0) THEN ! laminar regime + FlowEl(iloc)%f = 16.0 / FlowEl(iloc)%GenRe + ELSE IF (FlowEl(iloc)%GenRe >= 4000.0) THEN ! turbulent regime + FlowEl(iloc)%a = 0.0791 + FlowEl(iloc)%b = 0.25 + FlowEl(iloc)%f = FlowEl(iloc)%a / FlowEl(iloc)%GenRe**FlowEl(iloc)%b + ELSE !! transition from laminar to turbulent regime + FlowEl(iloc)%a = 0.0791 + FlowEl(iloc)%b = 0.25 + FlowEl(iloc)%f = (4000.0 - FlowEl(iloc)%GenRe) / 2000.0 * 16. / FlowEl(iloc)%GenRe & + + (FlowEl(iloc)%GenRe - 2000.0) / 2000.0 * FlowEl(iloc)%a / FlowEl(iloc)%GenRe**FlowEl(iloc)%b + END IF + + ELSE IF (ActiveRheologyModel == PowerLaw_RheologyModel) THEN ! Power law + FlowEl(iloc)%ReCritLam = 3470. - 1370. * FlowEl(iloc)%nIndex + FlowEl(iloc)%ReCritTurb = 4270. - 1370. * FlowEl(iloc)%nIndex + + IF (FlowEl(iloc)%GenRe <= FlowEl(iloc)%ReCritLam) THEN ! laminar regime + FlowEl(iloc)%f = 16.0 / FlowEl(iloc)%GenRe / (1 - 0.184 * FlowEl(iloc)%alpha) + ELSE IF (FlowEl(iloc)%GenRe >= FlowEl(iloc)%ReCritTurb) THEN ! turbulent regime + FlowEl(iloc)%a = (log10(FlowEl(iloc)%nIndex) + 3.93) / 50. + FlowEl(iloc)%b = (1.75 - log10(FlowEl(iloc)%nIndex)) / 7. + FlowEl(iloc)%f = FlowEl(iloc)%a / FlowEl(iloc)%GenRe**FlowEl(iloc)%b + ELSE + FlowEl(iloc)%a = (log10(FlowEl(iloc)%nIndex) + 3.93) / 50. + FlowEl(iloc)%b = (1.75 - log10(FlowEl(iloc)%nIndex)) / 7. + FlowEl(iloc)%f = (FlowEl(iloc)%ReCritTurb - FlowEl(iloc)%GenRe) / 800.0 * 16. / FlowEl(iloc)%GenRe & + + (FlowEl(iloc)%GenRe - FlowEl(iloc)%ReCritLam) / 800.0 * FlowEl(iloc)%a / FlowEl(iloc)%GenRe**FlowEl(iloc)%b + END IF + + END IF + + !WRITE (*,*) 'fric press drop', iloc + !WRITE (*,*) 'Length', ABS(REAL(FlowEl(iloc)%Length)) + !WRITE (*,*) 'FlowRate', FlowEl(iloc)%FlowRate + !WRITE (*,*) 'Theta600 , Theta300', FlowEl(iloc)%Theta600 , FlowEl(iloc)%Theta300 + !WRITE (*,*) 'Dhyd', FlowEl(iloc)%Dhyd + !WRITE (*,*) 'GenRe', FlowEl(iloc)%GenRe + !WRITE (*,*) 'f', FlowEl(iloc)%f + + + + + END IF + + ! Frictional pressure loss gradient calculation + ! FlowEl(iloc)%dPdLfric = 1.076 * FlowEl(iloc)%f * FlowEl(iloc)%vel**2 * FlowEl(iloc)%density / 10**5 / FlowEl(iloc)%Dhyd + FlowEl(iloc)%dPdLfric = FlowEl(iloc)%f * (FlowEl(iloc)%vel)**2 * FlowEl(iloc)%density / 25.81 / FlowEl(iloc)%Dhyd + FlowEl(iloc)%FricPressLoss = FlowEl(iloc)%dPdLfric * ABS(REAL(FlowEl(iloc)%Length)) + + IF (FlowEl(iloc)%FrictionDirection == -1) THEN + FlowEl(iloc)%FlowRate = - FlowEl(iloc)%FlowRate + FlowEl(iloc)%dPdLfric = - FlowEl(iloc)%dPdLfric + FlowEl(iloc)%FricPressLoss = - FlowEl(iloc)%FricPressLoss + END IF + + + + !END DO + + +END SUBROUTINE FricPressDrop + + +SUBROUTINE PartialDerivativeFricToFlowRate(iloc) + + USE FricPressDropVars + USE CMudPropertiesVariables + USE Fluid_Flow_Startup_Vars + USE KickVariables + USE CError + + + IMPLICIT NONE + + INTEGER :: iloc + + FlowEl(iloc)%FricToQPartialDiff = 0.0 + !FlowEl(iloc)%FlowRate = ABS(FlowEl(iloc)%FlowRate) + + + IF ((ABS(FlowEl(iloc)%FlowRate) >= PressFlowrateTolerance) & + .AND. (FlowEl(iloc)%MaterialType /= 1) & ! not gas kick + .AND. (ABS(FlowEl(iloc)%Length) >= PressLengthTolerance) & + .AND. (FlowEl(iloc)%MaterialType /= 4)) THEN ! not air + + IF (ActiveRheologyModel == PowerLaw_RheologyModel) THEN ! Power law + !IF (FlowEl(iloc)%Flowrate == 0.0) THEN + ! FlowEl(iloc)%Flowrate = 10.0 + ! CALL FricPressDrop(iloc) + !END IF + IF (FlowEl(iloc)%GenRe <= FlowEl(iloc)%ReCritLam) THEN ! laminar flow + FlowEl(iloc)%FricToQPartialDiff = FlowEl(iloc)%FricPressLoss / FlowEl(iloc)%FlowRate * FlowEl(iloc)%nIndex + + ELSE IF (FlowEl(iloc)%GenRe >= FlowEl(iloc)%ReCritTurb) THEN ! turbulent flow + FlowEl(iloc)%FricToQPartialDiff = FlowEl(iloc)%FricPressLoss / FlowEl(iloc)%FlowRate & + * (2. - FlowEl(iloc)%b * (2. - FlowEl(iloc)%nIndex)) + + ELSE ! transition from laminar to turbulent + FlowEl(iloc)%FricToQPartialDiff = FlowEl(iloc)%FricPressLoss / FlowEl(iloc)%FlowRate & + * (2. + (2. - FlowEl(iloc)%nIndex) & + * ((FlowEl(iloc)%a * FlowEl(iloc)%GenRe**(1. - FlowEl(iloc)%b) - 16.) / 800. / FlowEl(iloc)%f - 1.)) + END IF + + ELSE IF (ActiveRheologyModel == Bingham_RheologyModel) THEN ! Bingham Plastic + IF (FlowEl(iloc)%GenRe <= 2000.0 .OR. FlowEl(iloc)%f == 0.0) THEN ! laminar flow if f = 0.0, we have no flow in first time flowing + FlowEl(iloc)%FricToQPartialDiff = (16. * FlowEl(iloc)%muPlastic * REAL(FlowEl(iloc)%Length) * 2.224 * (10.)**(-3)) & + / (25.81 * 928. * (1 - 0.184 * FlowEl(iloc)%alpha) * FlowEl(iloc)%Dhyd**2 * FlowEl(iloc)%Area) + + ELSE IF (FlowEl(iloc)%GenRe >= 4000.0) THEN ! turbulent flow + FlowEl(iloc)%FricToQPartialDiff = FlowEl(iloc)%FricPressLoss / FlowEl(iloc)%FlowRate & + * (2. - FlowEl(iloc)%b * (2. - FlowEl(iloc)%muPlastic / FlowEl(iloc)%mueff)) + + ELSE ! transition from laminar to turbulent + FlowEl(iloc)%FricToQPartialDiff = FlowEl(iloc)%FricPressLoss / FlowEl(iloc)%FlowRate & + * (2. + (2. - FlowEl(iloc)%muPlastic / FlowEl(iloc)%mueff) & + * ((FlowEl(iloc)%a * FlowEl(iloc)%GenRe**(1. - FlowEl(iloc)%b) - 16.) / 2000. / FlowEl(iloc)%f - 1.)) + END IF + END IF + END IF + + + IF (FlowEl(iloc)%FricToQPartialDiff < 0.0) THEN + !WRITE (*,*) ' iloc, Re, FricPressLoss, FricToQPartialDiff' , iloc, FlowEl(iloc)%GenRe, FlowEl(iloc)%FricPressLoss, FlowEl(iloc)%FricToQPartialDiff + !CALL ERRORSTOP('Error in Calculating FricToQPartialDiff') + END IF + +END SUBROUTINE PartialDerivativeFricToFlowRate \ No newline at end of file diff --git a/FluidFlow/Horizontal_and_String_Pressure_Distribution.f90 b/FluidFlow/Horizontal_and_String_Pressure_Distribution.f90 new file mode 100644 index 0000000..5853c96 --- /dev/null +++ b/FluidFlow/Horizontal_and_String_Pressure_Distribution.f90 @@ -0,0 +1,799 @@ +SUBROUTINE PressureHorizAndStringDistribution + + + !! Record of revisions + !! Date Programmer Discription of change + !! ------ ------------ ----------------------- + !! 1396/07/30 Sheikh Original code + !! + + USE FricPressDropVars + USE PressureDisplayVARIABLES + USE MudSystemVARIABLES + USE GeoElements_FluidModule + USE Fluid_Flow_Startup_Vars + USE KickVariables + USE CMudPropertiesVariables + USE CDataDisplayConsoleVariables , StandPipePressureDataDisplay=> StandPipePressure + USE CDataDisplayConsoleVariables , CasingPressureDataDisplay=> CasingPressure + USE CDrillWatchVariables + USE CShoeVariables + USE CDownHoleVariables , CasingPressureDownhole => CasingPressure + USE TD_WellGeometry + USE CManifolds + USE VARIABLES + USE CError + USE UTUBEVARS + USE CKellyConnectionEnumVariables + USE Pump_VARIABLES + USE , INTRINSIC :: IEEE_ARITHMETIC + Use TD_DrillStemComponents + Use sROP_Variables + + + + IMPLICIT NONE + + INTEGER :: i , j , l + INTEGER :: ifric + INTEGER :: OldCasingPressure + REAL :: PressBelowFloatValve , PressAboveFloatValve ![psi] + REAL :: PumpMinDischargedVol = 0.0050 ! [gal] + REAL :: FloatValveBottomToUpAreaRatio = 1.1 ![-] + REAL :: ZeroHeight , StaticHeadOnBit + REAL(8) :: ShoeTVD + !REAL(8) , DIMENSION(5) :: MDObserve , TVDObserve , StPressObserve , AnnPressObserve , NomMD + + ExitMass = 0.0 + BitPressLoss = 0.0 + + WellHeadWasOpen = WellHeadOpen + WellToChokeManifoldWasOpen = WellToChokeManifoldOpen + KickWasExitingThroughChoke = .FALSE. + + + IF (UtubeMode1Activated .OR. FloatValveWasOpen == .FALSE.) THEN ! Horizontal line flow rate + FlowEl(1 : NoHorizontalEl)%FlowRate = 0.0 + ELSE ! connection and line is open + FlowEl(1 : NoHorizontalEl)%FlowRate = StringFlowRate ! pump flow rate [gpm] + END IF + + !WRITE (*,*) 'a)A/B P Bit', StaticHeadOnBit , FlowEl(AnnulusFirstEl)%StartPress , SUM(FlowEl(StringFirstEl : StringLastEl)%StaticPressDiff) + !IF (FloatValveIn == .FALSE.) FloatValveOpen = .TRUE. + FloatValveWasOpen = FloatValveOpen + + PressBelowFloatValve = FlowEl(AnnulusFirstEl)%StartPress + + StMudVol = SUM(FlowEl(1 : StringLastEl)%Volume) * Convft3toUSGal + StDeltaPtoDeltaVCompressibility = 1.0 / (MudCompressibility * StMudVol) + + AnnMudVol = SUM(FlowEl(AnnulusFirstEl : NumbEl)%Volume) * Convft3toUSGal + !StCompressedMudVol = StCompressedMudVol + REAL(St_Saved_MudDischarged_Volume_Final) + !WRITE (*,*) 'St_Saved_MudDischarged_Volume_Final', REAL(St_Saved_MudDischarged_Volume_Final) + !StDeltaPDueToCompressibility = StCompressedMudVol / (MudCompressibility * StMudVol) + !PressAboveFloatValve = StDeltaPDueToCompressibility + SUM(FlowEl(StringFirstEl : StringLastEl)%StaticPressDiff) !!FlowEl(StringLastEl)%EndPress + + !IF (NoGasPocket > 0) THEN ! mud exprience no comressibility + !IF (KickVolume > 2.0) THEN + IF ( (KickVolume > 2.0) .or. (NoGasPocket>1) .or. (any(FlowEl(OpenholeFirstEl:NumbEl)%Materialtype==1)) .or. (Rate_of_Penetration > 0.0) ) THEN + AnnCompressedMudVol = 0.0 + AnnDeltaPDueToCompressibility = 0.0 + + ELSE IF (WellHeadOpen) THEN + AnnDeltaPtoDeltaVCompressibility = 1.0 / (MudCompressibility * AnnMudVol) + + AnnCompressedMudVol = BackPressure / AnnDeltaPtoDeltaVCompressibility + AnnDeltaPDueToCompressibility = AnnCompressedMudVol / (MudCompressibility * AnnMudVol) + + ELSE ! No gas pocket, wellhead is closed and mud is compressed based on volume pumped into annulus + AnnDeltaPtoDeltaVCompressibility = 1.0 / (MudCompressibility * AnnMudVol) + AnnCompressedMudVol = AnnCompressedMudVol + REAL(Ann_Saved_MudDischarged_Volume_Final) !!!!!!!!! + AnnCompressedMudVol = MAX((AnnCompressedMudVol - REAL(Qlost / ConvMinToSec / dt)) , 0.0) + AnnDeltaPDueToCompressibility = AnnCompressedMudVol / (MudCompressibility * AnnMudVol) + END IF + + IF (FloatValveIn == .FALSE. .OR. NoGasPocket == 0 .OR. (FloatValveWasOpen .AND. REAL(St_Saved_MudDischarged_Volume_Final) >= PumpMinDischargedVol)) THEN ! float valve remains open + FloatValveOpen = .TRUE. + + FlowEl(StringFirstEl : StringLastEl)%FlowRate = REAL(St_Saved_MudDischarged_Volume_Final) / dt * ConvMinToSec !StringFlowRate ! String flow rate pump flow rate [gpm] + + !!!!!!!!!!!!!!! Calculating frictional pressure loss + IF (WellHeadOpen) THEN + DO ifric = 1 , StringLastEl + CALL FricPressDrop(ifric) + !WRITE (*,*) ' element No, FlowRate , Density, FricPressLoss', ifric, FlowEl(ifric)%FlowRate, FlowEl(ifric)%Density, FlowEl(ifric)%FricPressLoss + IF (IEEE_IS_NaN(FlowEl(ifric)%FricPressLoss)) THEN + WRITE (*,*) 'Hz/St start, end, density, Q, mu, Type' , FlowEl(ifric)%StartX, FlowEl(ifric)%EndX, FlowEl(ifric)%Density, FlowEl(ifric)%FlowRate, FlowEl(ifric)%mueff, FlowEl(ifric)%MaterialType + CALL ErrorStop('NaN in calculating pressure drop' , ifric) + END IF + END DO + END IF + + !!!!!!!!!!!!!!! + + + !IF (ABS(MudVolume_InjectedToBH - St_Saved_MudDischarged_Volume_Final)> PumpMinDischargedVol) WRITE (*,*) 'Injected to BH & St Saved Mud', MudVolume_InjectedToBH , St_Saved_MudDischarged_Volume_Final + IF (BitTotallyPluged) THEN + MudVolume_InjectedToBH = 0.d0 + StCompressedMudVol = StCompressedMudVol + REAL(St_Saved_MudDischarged_Volume_Final) + StDeltaPDueToCompressibility = StCompressedMudVol * StDeltaPtoDeltaVCompressibility + + ELSE IF (WellHeadOpen .OR. NoGasPocket > 0) THEN + IF (REAL(St_Saved_MudDischarged_Volume_Final) >= PumpMinDischargedVol) THEN + + MudVolume_InjectedToBH = St_Saved_MudDischarged_Volume_Final + !WRITE (*,*) 'MudVolume_InjectedToBH,BitTrue', MudVolume_InjectedToBH + + !IF (BitTrue .AND. UtubeMode1Activated == .FALSE.) THEN + IF (BitTrue) THEN + BitPressLoss = KBit * (MudVolume_InjectedToBH * ConvMinToSec / dt)**2 + !WRITE (*,*) 'BitPressLoss', BitPressLoss + END IF + + StCompressedMudVol = BitPressLoss / StDeltaPtoDeltaVCompressibility + + ELSE + MudVolume_InjectedToBH = MAX( 0.d0 , REAL((StDeltaPDueToCompressibility + SUM(FlowEl(StringFirstEl : StringLastEl)%StaticPressDiff - PressBelowFloatValve - AnnDeltaPDueToCompressibility - FloatValveMinOpenPressure) & + / StDeltaPtoDeltaVCompressibility ) * 1.d0)) + MudVolume_InjectedToBH = MIN(MudVolume_InjectedToBH , StCompressedMudVol) + StCompressedMudVol = StCompressedMudVol - MudVolume_InjectedToBH + + END IF + + StDeltaPDueToCompressibility = StCompressedMudVol / (MudCompressibility * StMudVol) + + ELSE ! IF (NoGasPocket == 0 .AND. WellHeadOpen == .FALSE.) THEN + StCompressedMudVol = StCompressedMudVol + REAL(St_Saved_MudDischarged_Volume_Final) + StDeltaPDueToCompressibility = StCompressedMudVol * StDeltaPtoDeltaVCompressibility + MudVolume_InjectedToBH = MAX( 0.d0 , REAL((StDeltaPDueToCompressibility - AnnDeltaPDueToCompressibility - FloatValveMinOpenPressure) & + / (StDeltaPtoDeltaVCompressibility + AnnDeltaPtoDeltaVCompressibility)) * 1.d0) + MudVolume_InjectedToBH = MIN(MudVolume_InjectedToBH , StCompressedMudVol) + StCompressedMudVol = StCompressedMudVol - REAL(MudVolume_InjectedToBH) + StDeltaPDueToCompressibility = StCompressedMudVol / (MudCompressibility * StMudVol) + FlowEl(AnnulusFirstEl : NumbEl)%StartPress = FlowEl(AnnulusFirstEl : NumbEl)%StartPress + StDeltaPDueToCompressibility + FlowEl(AnnulusFirstEl : NumbEl)%EndPress = FlowEl(AnnulusFirstEl : NumbEl)%EndPress + StDeltaPDueToCompressibility + + !WRITE (*,*) 'WellHeadOpen', WellHeadOpen + !WRITE (*,*) ' StCompressedMudVol, StDeltaPDueToCompressibility',StCompressedMudVol, StDeltaPDueToCompressibility + !WRITE (*,*) ' AnnCompressedMudVol, AnnDeltaPDueToCompressibility',AnnCompressedMudVol, AnnDeltaPDueToCompressibility + END IF + + + + FlowEl(StringLastEl)%EndPress = FlowEl(AnnulusFirstEl)%StartPress + BitPressLoss + FloatValveMinOpenPressure + !WRITE (*,*) 'BitPressLoss=', BitPressLoss + FlowEl(StringLastEl)%StartPress = FlowEl(StringLastEl)%EndPress + FlowEl(StringLastEl)%FricPressLoss - FlowEl(StringLastEl)%StaticPressDiff + DO i = StringLastEl - 1 , StringFirstEl , -1 + FlowEl(i)%EndPress = FlowEl(i + 1)%StartPress + FlowEl(i)%StartPress = FlowEl(i)%EndPress + FlowEl(i)%FricPressLoss - FlowEl(i)%StaticPressDiff + !WRITE(*,*) "STRING: Start , End Pressure", FlowEl(i)%StartPress , FlowEl(i)%EndPress + !WRITE(*,*) "STRING: Start , End X", FlowEl(i)%StartX , FlowEl(i)%EndX + END DO + + !FlowEl(NoHorizontalEl)%EndPress = FlowEl(StringFirstEl)%StartPress - FlowEl(NoHorizontalEl)%Density * FlowEl(StringFirstEl)%StartTVD + !WRITE (*,*) '- FlowEl(NoHorizontalEl)%Density * FlowEl(StringFirstEl)%StartTVD1=', - FlowEl(NoHorizontalEl)%Density * FlowEl(StringFirstEl)%StartTVD + !FlowEl(NoHorizontalEl)%StartPress = FlowEl(NoHorizontalEl)%EndPress + FlowEl(StringLastEl)%FricPressLoss + !DO i = NoHorizontalEl - 1 , 1 , -1 + ! FlowEl(i)%EndPress = FlowEl(i + 1)%StartPress + ! FlowEl(i)%StartPress = FlowEl(i)%EndPress + FlowEl(i)%FricPressLoss + ! !WRITE(*,*) "HORIZONTAL: Start , End Pressure", FlowEl(i)%StartPress , FlowEl(i)%EndPress + ! !WRITE(*,*) "HORIZONTAL: Start , End X", FlowEl(i)%StartX , FlowEl(i)%EndX + !END DO + + !!!!!!!!!!!!!!!!!!!!!!!!!!!! Float valve was open and remains open + + ELSE IF (REAL(St_Saved_MudDischarged_Volume_Final) < PumpMinDischargedVol) THEN ! NoGasPocket > 0 + FloatValveOpen = FloatValveWasOpen ! remains in its former status + + IF (FloatValveOpen) THEN + PressAboveFloatValve = MAX(FlowEl(AnnulusFirstEl)%StartPress , SUM(FlowEl(StringFirstEl : StringLastEl)%StaticPressDiff) + 0.052 * FlowEl(StringFirstEl)%Density * FlowEl(StringFirstEl)%StartTVD) + ELSE + PressAboveFloatValve = SUM(FlowEl(StringFirstEl : StringLastEl)%StaticPressDiff) + StDeltaPDueToCompressibility + MudVolume_InjectedToBH = 0.d0 + END IF + + + IF (PressBelowFloatValve >= PressAboveFloatValve .AND. KickFlux) THEN + FloatValveOpen = .FALSE. + IF (FloatValveOpen /= FloatValveWasOpen) THEN ! float valve was open and now closed + WRITE (*,*) 'Float valve was open and now closed' + WRITE (*,*) 'PressAboveFloatValve=', PressAboveFloatValve + WRITE (*,*) 'PressBelowFloatValve=', PressBelowFloatValve + END IF + + END IF + + IF (FloatValveOpen) THEN + MudVolume_InjectedToBH = MAX( 0.d0 , 0.1 * REAL((PressAboveFloatValve - PressBelowFloatValve - AnnDeltaPDueToCompressibility - FloatValveMinOpenPressure) & + / StDeltaPtoDeltaVCompressibility ) * 1.d0) + MudVolume_InjectedToBH = MIN(MudVolume_InjectedToBH , StCompressedMudVol) + !WRITE (*,*) 'MudVolume_InjectedToBH (No Pump)', MudVolume_InjectedToBH + + StCompressedMudVol = StCompressedMudVol - MudVolume_InjectedToBH + StDeltaPDueToCompressibility = StCompressedMudVol / (MudCompressibility * StMudVol) + !WRITE (*,*) 'StDeltaPDueToCompressibility(No Pump)', StDeltaPDueToCompressibility + + END IF + + IF (NoGasPocket == 0 .AND. WellHeadOpen == .FALSE.) THEN !*********** + FlowEl(AnnulusFirstEl : NumbEl)%StartPress = FlowEl(AnnulusFirstEl : NumbEl)%StartPress + AnnDeltaPDueToCompressibility + FlowEl(AnnulusFirstEl : NumbEl)%EndPress = FlowEl(AnnulusFirstEl : NumbEl)%EndPress + AnnDeltaPDueToCompressibility + END IF + + + + IF (FloatValveOpen) THEN + FlowEl(StringLastEl)%EndPress = MAX(FlowEl(AnnulusFirstEl)%StartPress , SUM(FlowEl(StringFirstEl : StringLastEl)%StaticPressDiff) + 0.052 * FlowEl(StringFirstEl)%Density * FlowEl(StringFirstEl)%StartTVD) + ELSE + FlowEl(StringLastEl)%EndPress = StDeltaPDueToCompressibility + SUM(FlowEl(StringFirstEl : StringLastEl)%StaticPressDiff) + END IF + + FlowEl(StringLastEl)%StartPress = FlowEl(StringLastEl)%EndPress - FlowEl(StringLastEl)%StaticPressDiff + DO i = StringLastEl - 1 , StringFirstEl , -1 + FlowEl(i)%EndPress = FlowEl(i + 1)%StartPress + FlowEl(i)%StartPress = FlowEl(i)%EndPress + FlowEl(i)%FricPressLoss - FlowEl(i)%StaticPressDiff + !WRITE(*,*) "STRING: Start , End Pressure", FlowEl(i)%StartPress , FlowEl(i)%EndPress + !WRITE(*,*) "STRING: Start , End X", FlowEl(i)%StartX , FlowEl(i)%EndX + END DO + + !FlowEl(NoHorizontalEl)%EndPress = FlowEl(StringFirstEl)%StartPress - FlowEl(NoHorizontalEl)%Density * FlowEl(StringFirstEl)%StartTVD + !WRITE (*,*) '- FlowEl(NoHorizontalEl)%Density * FlowEl(StringFirstEl)%StartTVD2=', - FlowEl(NoHorizontalEl)%Density * FlowEl(StringFirstEl)%StartTVD + !FlowEl(NoHorizontalEl)%StartPress = FlowEl(NoHorizontalEl)%EndPress + FlowEl(StringLastEl)%FricPressLoss + !DO i = NoHorizontalEl - 1 , 1 , -1 + ! FlowEl(i)%EndPress = FlowEl(i + 1)%StartPress + ! FlowEl(i)%StartPress = FlowEl(i)%EndPress + FlowEl(i)%FricPressLoss + ! !WRITE(*,*) "HORIZONTAL: Start , End Pressure", FlowEl(i)%StartPress , FlowEl(i)%EndPress + ! !WRITE(*,*) "HORIZONTAL: Start , End X", FlowEl(i)%StartX , FlowEl(i)%EndX + !END DO + + + !WRITE (*,*) ' StCompressedMudVol, StDeltaPDueToCompressibility',StCompressedMudVol, StDeltaPDueToCompressibility + !WRITE (*,*) ' AnnCompressedMudVol, AnnDeltaPDueToCompressibility',AnnCompressedMudVol, AnnDeltaPDueToCompressibility + !!!!!!!!!!!!!!!!!!!!!!!!!!!! Float valve was open (close) and maybe remains open (close) or maybe closed + + ELSE IF(FloatValveWasOpen == .FALSE. .AND. REAL(St_Saved_MudDischarged_Volume_Final) >= PumpMinDischargedVol) THEN + FloatValveOpen = .FALSE. + MudVolume_InjectedToBH = 0.d0 + + StCompressedMudVol = StCompressedMudVol + REAL(St_Saved_MudDischarged_Volume_Final) + StDeltaPDueToCompressibility = StCompressedMudVol * StDeltaPtoDeltaVCompressibility + PressAboveFloatValve = SUM(FlowEl(StringFirstEl : StringLastEl)%StaticPressDiff) + StDeltaPDueToCompressibility + + + + + IF (PressAboveFloatValve > FloatValveBottomToUpAreaRatio * PressBelowFloatValve) THEN ! float valve was open and now closed + FloatValveOpen = .TRUE. + WRITE (*,*) 'Float valve was closed and now opened' + WRITE (*,*) 'PressAboveFloatValve=', PressAboveFloatValve + WRITE (*,*) 'PressBelowFloatValve=', PressBelowFloatValve + END IF + + + FlowEl(StringLastEl)%EndPress = PressAboveFloatValve + FlowEl(StringLastEl)%StartPress = FlowEl(StringLastEl)%EndPress - FlowEl(StringLastEl)%StaticPressDiff + DO i = StringLastEl - 1 , StringFirstEl , -1 + FlowEl(i)%EndPress = FlowEl(i + 1)%StartPress + FlowEl(i)%StartPress = FlowEl(i)%EndPress - FlowEl(i)%StaticPressDiff + !WRITE(*,*) "STRING: Start , End Pressure", FlowEl(i)%StartPress , FlowEl(i)%EndPress + !WRITE(*,*) "STRING: Start , End X", FlowEl(i)%StartX , FlowEl(i)%EndX + END DO + + + + + END IF + + IF ((UtubePossibility == .TRUE. .AND. Get_KellyConnection() /= KELLY_CONNECTION_STRING) .OR. NewPipeFilling == 0) THEN + FlowEl(NoHorizontalEl)%EndPress = 0.0 + ELSE IF (WellHeadOpen == .FALSE.) THEN + FlowEl(NoHorizontalEl)%EndPress = FlowEl(StringFirstEl)%StartPress - 0.052 * FlowEl(NoHorizontalEl)%Density * FlowEl(StringFirstEl)%StartTVD + !WRITE (*,*) 'Density , StartX= , StartPress', FlowEl(NoHorizontalEl)%Density , FlowEl(StringFirstEl)%StartTVD + ELSE IF (WellHeadOpen) THEN + FlowEl(NoHorizontalEl)%EndPress = FlowEl(StringFirstEl)%StartPress - 2.0 * 0.052 * FlowEl(NoHorizontalEl)%Density * FlowEl(StringFirstEl)%StartTVD + END IF + + FlowEl(NoHorizontalEl)%StartPress = FlowEl(NoHorizontalEl)%EndPress + FlowEl(NoHorizontalEl)%FricPressLoss + DO i = NoHorizontalEl - 1 , 1 , -1 + FlowEl(i)%EndPress = FlowEl(i + 1)%StartPress + FlowEl(i)%StartPress = FlowEl(i)%EndPress + FlowEl(i)%FricPressLoss + !WRITE(*,*) "HORIZONTAL: Start , End Pressure", FlowEl(i)%StartPress , FlowEl(i)%EndPress + !WRITE(*,*) "HORIZONTAL: Start , End X", FlowEl(i)%StartX , FlowEl(i)%EndX + END DO + + + !WRITE (*,*) 'MudVolume_InjectedToBH==', MudVolume_InjectedToBH + !WRITE (*,*) 'Ann_Saved_MudDischarged_Volume_Final==', Ann_Saved_MudDischarged_Volume_Final + +!!!!!!!!!!!!!!!!!!!!! Pressure distribution in string and horizontal pump to string line + + + IF (ShearBop_Situation_forTD == 1) THEN + FlowEl(1 : NoHorizontalEl)%EndPress = 0.0 + FlowEl(1 : NoHorizontalEl)%StartPress = 0.0 + FlowEl(1 : NoHorizontalEl)%FricPressLoss = 0.0 + END IF + +!!!!!!!!!!!!!!!!!!!!!!!!! + + + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + + + !IF (NoGasPocket == 0 .AND. WellHeadOpen) THEN + ! FlowEl(1 : NoHorizontalEl + NoStringEl)%EndPress = FlowEl(1 : NoHorizontalEl + NoStringEl)%EndPress + StDeltaPDueToCompressibility + AnnDeltaPDueToCompressibility + ! FlowEl(1 : NoHorizontalEl + NoStringEl)%StartPress = FlowEl(1 : NoHorizontalEl + NoStringEl)%StartPress + StDeltaPDueToCompressibility + AnnDeltaPDueToCompressibility + ! FlowEl(NoHorizontalEl + NoStringEl +1 : NumbEl)%EndPress = FlowEl(NoHorizontalEl + NoStringEl +1 : NumbEl)%EndPress + AnnDeltaPDueToCompressibility + ! FlowEl(NoHorizontalEl + NoStringEl + 1 : NumbEl)%StartPress = FlowEl(NoHorizontalEl + NoStringEl + 1 : NumbEl)%StartPress + AnnDeltaPDueToCompressibility + !ELSE + !IF (NoGasPocket == 0 .AND. WellHeadOpen == .FALSE.) THEN + ! FlowEl(1 : StringLastEl)%EndPress = FlowEl(1 : StringLastEl)%EndPress + StDeltaPDueToCompressibility + 30.0 ! badan eslah shavad + ! FlowEl(1 : StringLastEl)%StartPress = FlowEl(1 : NoHorizontalEl + NoStringEl)%StartPress + StDeltaPDueToCompressibility + 30.0 + ! FlowEl(AnnulusFirstEl : NumbEl)%EndPress = FlowEl(AnnulusFirstEl : NumbEl)%EndPress + AnnDeltaPDueToCompressibility + ! FlowEl(AnnulusFirstEl : NumbEl)%StartPress = FlowEl(AnnulusFirstEl : NumbEl)%StartPress + AnnDeltaPDueToCompressibility + !END IF + + + IF (UtubePossibility== .true. .and. Get_KellyConnection() /= KELLY_CONNECTION_STRING .and. WellHeadOpen) THEN + MudVolume_InjectedToBH = 0.d0 + MudVolume_InjectedFromAnn = 0.d0 + + !ELSE + ! + ! IF (FloatValveOpen .AND. WellHeadOpen .AND. NoGasPocket == 0) THEN + ! MudVolume_InjectedToBH = MAX( 0.d0 , REAL((StDeltaPDueToCompressibility - FloatValveMinOpenPressure) / StDeltaPtoDeltaVCompressibility) * 1.d0) + ! !MudVolume_InjectedFromAnn = Ann_Saved_MudDischarged_Volume_Final !REAL((AnnDeltaPDueToCompressibility - BackPressure) / AnnDeltaPtoDeltaVCompressibility) * 1.d0 + ! !WRITE (*,*) 'Pressure above/under bit', FlowEl(NoHorizontalEl + NoStringEl)%EndPress, FlowEl(1 + NoHorizontalEl + NoStringEl)%StartPress + ! IF (MudVolume_InjectedToBH <= 0) MudVolume_InjectedToBH = 0.d0 + ! !IF (MudVolume_InjectedFromAnn <= 0) MudVolume_InjectedFromAnn = 0.d0 + ! ELSE IF (FloatValveOpen .AND. WellHeadOpen == .FALSE. .AND. NoGasPocket == 0) THEN + ! MudVolume_InjectedToBH = MAX( 0.d0 , REAL((PressAboveFloatValve + StDeltaPDueToCompressibility - AnnDeltaPDueToCompressibility - PressBelowFloatValve - FloatValveMinOpenPressure) & + ! / (StDeltaPtoDeltaVCompressibility - AnnDeltaPtoDeltaVCompressibility)) * 1.d0) + ! MudVolume_InjectedFromAnn = 0.d0 + ! ELSE IF (FloatValveOpen .AND. WellHeadOpen .AND. NoGasPocket > 0) THEN + ! MudVolume_InjectedToBH = MAX( 0.d0 , REAL((PressAboveFloatValve + StDeltaPDueToCompressibility - PressBelowFloatValve - FloatValveMinOpenPressure) / StDeltaPtoDeltaVCompressibility) * 1.d0) + ! ! MudVolume_InjectedFromAnn = REAL(Ann_Saved_MudDischarged_Volume_Final) * 1.d0 + ! ELSE IF (FloatValveOpen .AND. WellHeadOpen == .FALSE. .AND. NoGasPocket > 0) THEN + ! MudVolume_InjectedToBH = MAX( 0.d0 , REAL((PressAboveFloatValve + StDeltaPDueToCompressibility - AnnDeltaPDueToCompressibility - PressBelowFloatValve - FloatValveMinOpenPressure) & + ! / (StDeltaPtoDeltaVCompressibility - AnnDeltaPtoDeltaVCompressibility)) * 1.d0) + ! MudVolume_InjectedFromAnn = 0.d0 + ! END IF + !StCompressedMudVol = MAX(StCompressedMudVol - REAL(MudVolume_InjectedToBH) , 0.0) + !AnnCompressedMudVol = MAX(AnnCompressedMudVol - REAL(MudVolume_InjectedFromAnn) , 0.0) + !StDeltaPDueToCompressibility = StCompressedMudVol / (MudCompressibility * StMudVol) + !AnnDeltaPDueToCompressibility = AnnCompressedMudVol / (MudCompressibility * AnnMudVol) + END IF + + + !MudVolume_InjectedToBH = 0.0 + !MudVolume_InjectedToBH = St_Saved_MudDischarged_Volume_Final + !WRITE (*,*) 'CompMudVol, DeltaP, MudVolumeInjected' + !WRITE (*,*) StCompressedMudVol, StDeltaPDueToCompressibility, REAL(MudVolume_InjectedToBH) + !WRITE (*,*) AnnCompressedMudVol, AnnDeltaPDueToCompressibility, REAL(MudVolume_InjectedFromAnn) + !WRITE (*,*) 'Press above/Below Float valve ', FlowEl(NoHorizontalEl + NoStringEl)%EndPress , FlowEl(NoHorizontalEl + NoStringEl + 1)%StartPress + !write(*,*) 'MudVolume_InjectedFromAnn***=' , MudVolume_InjectedFromAnn, Ann_Saved_MudDischarged_Volume_Final + +110 FORMAT (I6 , 4X , F6.2 , 7X , F4.2 , 3X , F4.1 , 2X , F4.2) + + + !DO i = NumbEl , NumbEl - NoOpenHoleEl + 1 , -1 ! op elements + ! WRITE (*,*) 'el no, start, end' , i, FlowEl(i)%StartPress, FlowEl(i)%EndPress + !END DO + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !!!! Kick Information Reports + + +!!!!!!!!!!!!!!!!! 1- Stand pipe pressure gauge PressureGauges(1) + + !ElementTrueDepth = STpipeGauge_Height/Convfttom + !DistancetoRefrence = -170.7 ! 165 ft after pump and 100 ft before string + i = 1 + DO WHILE (NOT(FlowEl(i)%EndX >= -170 .AND. FlowEl(i)%StartX <= -170)) + i = i + 1 + IF (i > NoHorizontalEl) EXIT + END DO + CALL PumpPressureDelay%AddToFirst(REAL(FlowEl(i)%StartPress - 0.052 * (STpipeGauge_Height / Convfttom) * FlowEl(i)%Density + (FlowEl(i)%StartX + 170) * FlowEl(i)%dPdLFric)) + CALL PumpPressureDelay%Remove(PressureTimeStepDelay(1) + 1) + !IF (ANY(PUMP(:)%PowerFailMalf == 1)) PumpPressureDelay%Array(1 : PressureTimeStepDelay(1) / 2) = 0.0 !seyyed goft vaghti pumpfailure mishavad feshar dasti 0 nashavad, be in dalil in khat comment shod. + + DO j = PressureTimeStepDelay(1) , 1 , -1 + IF (NOT(IEEE_IS_NaN(PumpPressureDelay%Array(j)))) THEN + PressureGauges(1) = INT(PumpPressureDelay%Array(j)) + EXIT + END IF + END DO + + !PressureGauges(1) = INT(PumpPressureDelay%Array(PressureTimeStepDelay(1))) + + IF (i > NoHorizontalEl) THEN + WRITE (*,*) ' Error in calculating standpipe pressure ' + END IF + + IF (PressureGauges(1) < 0) THEN + !CALL Set_StandPipePressure(real(PressureGauges(1) , 8)) ! for display console + PressureGauges(1) = 0.0 + !CALL Set_StandPipePressure(0.0d0) !StandPipePressureGauge = 0 + END IF + DrillPipePressure = real(PressureGauges(1), 8) + !WRITE (*,*) 'Drillpipe Pressure', PressureGauges(1) + +!!!!!!!!!!!!!!!!! 2- Casing pressure gauge PressureGauge(2) + !WRITE (*,*) 'here 1', (WelltoPitsOpen == .FALSE. .AND. WellToChokeManifoldOpen) , (Valve(26)%Status == .TRUE. .AND. Valve(47)%Status == .TRUE. .AND. Valve(49)%Status == .TRUE.), BackPressure + !WRITE (*,*) Valve(26)%Status , Valve(47)%Status , Valve(49)%Status + !WRITE (*,*) (Valve(26)%Status == .TRUE.) , (Valve(47)%Status == .TRUE.) , (Valve(49)%Status == .TRUE.) + + !!! in normal mode changes in choke position immidiately observes in casing pressure + !! but when pumps off due to failure, casing pressure will drop after a delay time + IF (WellToChokeManifoldOpen .OR. WellToChokeLineGauge) THEN + !WRITE (*,*) 'Here 1' + CALL CasingPressureDelay%AddToFirst(FlowEl(NoHorizontalEl + NoStringEl + NoAnnulusEl + NoWellToChokeEl)%EndPress) + CALL CasingPressureDelay%Remove(PressureTimeStepDelay(1) + 1) + + DO j = 1 , PressureTimeStepDelay(1) + IF (NOT(IEEE_IS_NaN(CasingPressureDelay%Array(j)))) THEN + PressureGauges(2) = INT(CasingPressureDelay%Array(j)) + EXIT + END IF + END DO + + !PressureGauges(2) = INT(CasingPressureDelay%Array(1)) + IF (ANY(PUMP(:)%PowerFailMalf == 1)) THEN + DO j = PressureTimeStepDelay(1) , 1 , -1 + IF (NOT(IEEE_IS_NaN(CasingPressureDelay%Array(j)))) THEN + PressureGauges(2) = INT(CasingPressureDelay%Array(j)) + EXIT + END IF + END DO + END IF + + + + + !IF (ANY(PUMP(:)%PowerFailMalf == 1)) PressureGauges(2) = INT(CasingPressureDelay%Array(PressureTimeStepDelay(1))) + + ELSE !IF (ChokeLineGaugeToTanks) THEN + PressureGauges(2) = 0 + !WRITE (*,*) 'Here 2' + END IF + + + !WRITE (*,*) 'GaugePoint(2)%Pressure =' , GaugePoint(2)%Pressure + !IF (PressureGauges(2) < 0) THEN + ! PressureGauges(2) = 0.0 + !END IF + CALL Set_CasingPressure(real(PressureGauges(2) , 8)) ! for display console + CasingPressureDownhole = real(PressureGauges(2) , 8) + !IF (PressureGauges(2) > 3000.0) THEN + ! !CALL Error(' High Casing Pressure') + !END IF + !WRITE (*,*) 'Casing Pressure=' , PressureGauges(2) + + + +!!!!!!!!!!!!!!!!! 3- Bottom Hole Pressure PressureGauge(3) + + CALL BottomHolePressureDelay%AddToFirst(FlowEl(OpenholeFirstEl)%StartPress) + CALL BottomHolePressureDelay%Remove(PressureTimeStepDelay(2) + 1) + !PressureGauges(3) = INT(BottomHolePressureDelay%Array(PressureTimeStepDelay(2))) + + DO j = PressureTimeStepDelay(2) , 1 , -1 + IF (NOT(IEEE_IS_NaN(BottomHolePressureDelay%Array(j)))) THEN + PressureGauges(3) = INT(BottomHolePressureDelay%Array(j)) + EXIT + END IF + END DO + + + BottomHolePress = BottomHolePressureDelay%Array(PressureTimeStepDelay(2)) + + BottomHolePressure = REAL(PressureGauges(3) , 8) +!!!!!!!!!!!!!!!!! 4- Under Bit Pressure PressureGauges(4) + + PressureGauges(4) = FlowEl(AnnulusFirstEl)%StartPress + +!!!!!!!!!!!!!!!!! + + +!!!!!!!!!!!!!!!!! 5- Casing Shoe Pressure PressureGauges(5) + + !IF (ShoeDepth <= FlowEl(NoHorizontalEl + NoStringEl + 1)%StartX) THEN + DO ShoeFlowElNo = AnnulusFirstEl , NumbEl + IF (FlowEl(ShoeFlowElNo)%StartX >= ShoeDepth .AND. FlowEl(ShoeFlowElNo)%EndX < ShoeDepth) EXIT + END DO + CALL TVD_Calculator(ShoeDepth , ShoeTVD) + + IF (ShoeFlowElNo > NumbEl) THEN + WRITE (*,*) 'ShoeDepth =', ShoeDepth + DO i = AnnulusFirstEl , NumbEl + WRITE (*,*) 'i, StartX, EndX', i, FlowEl(i)%StartX, FlowEl(i)%EndX + END DO + + CALL ErrorSTOP ('Error in finding location of shoe') + END IF + + !ELSE + ! WRITE (*,*) ' Error in calculating shoe pressure ' + !END IF + + CALL ShoePressureDelay%AddToFirst(REAL(FlowEl(ShoeFlowElNo)%StartPress & + - (FlowEl(ShoeFlowElNo)%StartX - ShoeDepth) * FlowEl(ShoeFlowElNo)%dPdLfric & + - (FlowEl(ShoeFlowElNo)%StartTVD - ShoeTVD) * FlowEl(ShoeFlowElNo)%dPdLGrav)) + CALL ShoePressureDelay%Remove(PressureTimeStepDelay(3) + 1) + + !FlowrateNearShoe = FlowEl(ShoeFlowElNo)%FlowRate + DO j = PressureTimeStepDelay(3) , 1 , -1 + IF (NOT(IEEE_IS_NaN(ShoePressureDelay%Array(j)))) THEN + PressureGauges(5) = INT(ShoePressureDelay%Array(j)) + EXIT + END IF + END DO + + + !PressureGauges(5) = INT(ShoePressureDelay%Array(PressureTimeStepDelay(3))) + ShoePressure = real(PressureGauges(5), 8) + + + + !IF (PressureGauges(5) >= FormationLostPressure) WRITE (*,*) 'Near Shoe Flowrate', FlowEl(ShoeFlowElNo)%FlowRate + + ShoeMudViscosity = FlowEl(ShoeFlowElNo)%MuEff + ShoeMudDensity = FlowEl(ShoeFlowElNo)%Density + + !WRITE (*,*) 'Drillstring speed (ft/s)' , DrillStringSpeed + !WRITE (*,*) 'shoe mud speed ', FlowEl(ShoeFlowElNo - 1)%vel + !WRITE (*,*) 'Shoe pressure (psi)', ShoePressureDelay%Array(1) + + + + +!!!!!!!!!!!!!!!!! + +!!!!!!!!! 6- Pressure Before Bop + + PressureGauges(6) = FlowEl(NoHorizontalEl + NoStringEl + NoAnnulusEl)%EndPress + +!!!!!!!!!!!!!!!!! +101 FORMAT(4X, I2, 8X, (F8.1), 12X, (F8.3), 7X, (F8.2)) + + !WRITE (*,*) ' Pump Pressure Delay', PumpPressureDelay%Array(1) + !WRITE (*,*) ' Bottom Hole Pressure Delay', BottomHolePressureDelay%Array(1) + !WRITE (*,*) ' Shoe Pressure Delay', ShoePressureDelay%Array(1) + + !IF (ALLOCATED(GasPocketWeight%Array) .AND. ChokeKroneckerDelta == 1) THEN + !WRITE (*,*) 'Pocket No , Gas Pocket (psia) , Volume (gal) , Flow Induced (gpm) ' + + !DO i = 1 , NoGasPocket + ! WRITE (*,101) i, GasPocketNewPress%Array(i), GasPocketNewVol%Array(i) * ConvFt3toUSGal, GasPocketFlowInduced%Array(i) + !END DO + ! WRITE (*,*) 'Kchoke =', Kchoke, FlowEl(OpenholeFirstEl - 1)%FlowRate + + !DO i = 1 , NoGasPocket + ! WRITE (*,*) 'Gas Kick Vol (gal)=' , GasPocketNewVol%Array(i) * ConvFt3toUSGal , GasPocketDeltaVol%Array(i) * ConvFt3toUSGal , GasPocketNewPress%Array(i) + !END DO + + !WRITE (*,*) 'BHP (psig)=', BottomHolePress + + IF (ChokeKroneckerDelta == 1) THEN + !WRITE (*,*) 'Casing Pressure' , PressureGauges(2) + !WRITE (*,*) 'Below Bit' , FlowEl(AnnulusFirstEl)%StartPress + !WRITE (*,*) 'Above Bit' , FlowEl(StringLastEl)%EndPress + !WRITE (*,*) 'Pump Pressure' , PressureGauges(1) + + + + !WRITE (*,*) ' Kick Iteration', KickIteration + !WRITE (*,*) ' Kchoke, Q =', Kchoke, FlowEl(j)%Flowrate !, REAL((DeltaVolumePipe * ConvMinToSec / dt) + StringFlowRate) + !DO l = NoHorizontalEl + NoStringEl + 1 , NumbEl + ! WRITE (*,*) 'El No, Fric Press Loss, density , Q', l, FlowEl(l)%FricPressLoss, FlowEl(l)%StaticPressDiff, FlowEl(l)%Density, FlowEl(l)%Flowrate + !END DO + !write(*,*) 'BackPressure=' , BackPressure + + !WRITE (*,*) ' Kick Jacobian ', REAL(KickJacobian) + !WRITE (*,*) ' KickVandPFunction = ' , REAL(-KickVandPFunction) + !WRITE (*,*) ' Kick Unknown Vector = ' , REAL(KickUnknownVector) + !WRITE (*,*) 'SUM(StaticPressDiff) , SUM(FricPressLoss)', SUM(FlowEl(GasPocketElementNo(1) : i)%FricPressLoss) , SUM(FlowEl(GasPocketElementNo(1) : i)%StaticPressDiff) + !WRITE (*,*) 'Drillpipe, casing pressure', PressureGauges(1), PressureGauges(2) + END IF + + !IF (NoWelltoChokeEl > 0 .AND. FlowEl(OpenholeFirstEl - 1)%MaterialType == 1 .AND. WellHeadOpen) THEN ! kick is last element in choke line and does not exit. + ! KickWasExitingThroughChoke = .TRUE. + ! GasPocketDensity%Array(NoGasPocket) = (GasPocketweight%Array(NoGasPocket) / GasPocketModifiedVol%Array(NoGasPocket)) / convft3toUSgal ! [lbm/ft^3 to ppg] + ! ExitMass = (1.0 - (GasPocketModifiedVol%Array(NoGasPocket) / GasPocketNewVol%Array(NoGasPocket))) * GasPocketWeight%Array(NoGasPocket) ! exit mass due to expand + ! WRITE (*,*) ' ExitMass due to expand = ', GasPocketModifiedVol%Array(NoGasPocket) * Convft3ToUSgal , ExitMass + !END IF + + !WRITE (*,*) 'Horiz 1' + + KickInFluxConditions = (FormationTop < TD_WellTotalVerticalLength) .AND. (NOT(InactiveInflux)) .AND. (FormPressure > BottomHolePress + 5.0) + IF (KickInFluxConditions) THEN + KickFlux = .TRUE. + + CALL NewGasKick + + !WRITE (*,*) 'Kick Flux top' , KickFlux + !WRITE (*,*) 'FormPressure, BottomHolePress, FormationTop, TD_WellTotalVerticalLength' , FormPressure, BottomHolePress, FormationTop, TD_WellTotalVerticalLength + + ELSE + IF (ALLOCATED(GasPocketWeight%Array) .AND. KickFlux) THEN + KickOffBottom = .TRUE. + WRITE (*,*) 'Kick Off Bottom' + WRITE (*,*) 'FormPressure , BottomHolePress' , FormPressure , BottomHolePress + !WRITE (*,*) 'No Press(psia) Vol(gal) Weight(lbm) Flow Induced(gpm) Flow El Press(psia)' + DO i = 1 , NoGasPocket + WRITE (*,102) i , GasPocketNewPress%Array(i), GasPocketNewVol%Array(i) * Convft3toUSgal, GasPocketWeight%Array(i), GasPocketFlowInduced%Array(i), FlowEl(GasPocketFlowEl(i , 1))%StartPress + StandardPress + END DO + END IF + KickFlux = .FALSE. + END IF + + IF (ALLOCATED(KickJacobian)) OldKickJacobian = KickJacobian + +102 FORMAT (I2, 3X, (F8.1), 2X, (F8.2), 2X, (F8.3), 8X, (F8.2), 10X, (F8.1)) + + !!!!!!!! Auto Choke Procedure + ! DO i = 1 , 5 + ! AreaChange = -1.0 * (BottomHolePressure - (FormPressure + BHPSafetyMargin)) / FlowEl(OpenholeFirstEl - 1)%Flowrare**2 * 89158.0 & + ! * (0.26 * 0.61)**2 * TotalOpenChokeArea**3 / (4.0 * ChokeDensity) + ! CHOOKE(1)%AreaChokeFinal = CHOOKE(1)%AreaChokeFinal + AreaChange / * Convfttoinch**2 + ! + ! + ! + ! END DO + ! + ! + ! + ! + ! + + + !WRITE (*,*) ' SecondaryKickWeight', SecondaryKickWeight + !WRITE (*,*) ' SecondaryKickVol', SecondaryKickVol + SecondKickVolume = SecondaryKickVol + + + + IF (WellHeadOpen == .FALSE. .OR. (FlowEl(OpenholeFirstEl - 1)%Flowrate < PressFlowrateTolerance .AND. FlowEl(AnnulusLastEl)%Flowrate < PressFlowrateTolerance)) THEN + OnShakerDensity = 0.0 + ELSE IF (FlowEl(OpenholeFirstEl - 1)%MaterialType == 1 .AND. ChokeKroneckerDelta == 1) THEN + OnShakerDensity = 2.0 + ELSE IF (ChokeKroneckerDelta == 0) THEN + OnShakerDensity = FlowEl(AnnulusLastEl)%Density + ELSE IF (ChokeKroneckerDelta == 1) THEN !!!(FlowEl(OpenholeFirstEl - 1)%Flowrate > PressFlowrateTolerance .AND. FlowEl(AnnulusLastEl)%Flowrate < PressFlowrateTolerance) THEN + OnShakerDensity = FlowEl(OpenholeFirstEl - 1)%Density + ELSE + OnShakerDensity = (FlowEl(OpenholeFirstEl - 1)%Density * FlowEl(OpenholeFirstEl - 1)%Flowrate & + + FlowEl(AnnulusLastEl)%Density * FlowEl(AnnulusLastEl)%Flowrate) / (FlowEl(OpenholeFirstEl - 1)%Flowrate + FlowEl(AnnulusLastEl)%Flowrate) + END IF + !WRITE (*,*) 'ANINT(OnShakerDensity * 100) / 100', ANINT(OnShakerDensity * 100) / 100 , OnShakerDensity + CALL Set_MudWeightOut(ANINT(OnShakerDensity * 100) / 100) + + + IF (ALLOCATED(FinalFlowEl)) DEALLOCATE(FinalFlowEl) + ALLOCATE(FinalFlowEl(NumbEl)) + + FinalFlowEl(:)%StartX = FlowEl(:)%StartX + FinalFlowEl(:)%EndX = FlowEl(:)%EndX + FinalFlowEl(:)%StartTVD = FlowEl(:)%StartTVD + FinalFlowEl(:)%EndTVD = FlowEl(:)%EndTVD + FinalFlowEl(:)%Length = FlowEl(:)%Length + FinalFlowEl(:)%DepthDiff = FlowEl(:)%DepthDiff + FinalFlowEl(:)%density = FlowEl(:)%density + FinalFlowEl(:)%StartPress = FlowEl(:)%StartPress + FinalFlowEl(:)%EndPress = FlowEl(:)%EndPress + FinalFlowEl(:)%dPdLFric = FlowEl(:)%dPdLFric + FinalFlowEl(:)%dPdLGrav = FlowEl(:)%dPdLGrav + + !WRITE (*,*) 'FlowRate=', FlowEl(AnnulusFirstEl)%FlowRate + !WRITE (*,*) 'Pressure Loss in Drill String', SUM(FlowEl(StringFirstEl : StringLastEl)%FricPressLoss) + !WRITE (*,*) 'Pressure Loss in Annulus', SUM(FlowEl(AnnulusFirstEl : AnnulusLastEl)%FricPressLoss) + !MDObserve(:) = [3000.0 , 4349.0 , 11880.0 , 19880.0 , 21680.0] + !NomMd (:) = [3000 , 4298 , 11690 , 19690 , 21490] + !DO i = 1 , 5 + ! CALL TVD_Calculator(MDObserve(i) , TVDObserve(i)) + !END DO + ! + !DO i = 1 , 5 + ! + ! WRITE (*,*) 'MDObserve(i)', INT(NomMD(i)) + ! WRITE (*,*) 'TVDObserve(i)', INT(TVDObserve(i)) + ! + ! DO j = StringFirstEl , StringLastEl + ! IF (INT(MDObserve(i)) < INT(FinalFlowEl(j)%EndX)) EXIT + ! END DO + ! StPressObserve(i) = FlowEl(j)%StartPress - (MDObserve(i) - FlowEl(j)%StartX) * FlowEl(j)%dPdLfric + (TVDObserve(i) - FlowEl(j)%StartTVD) * FlowEl(j)%dPdLGrav + ! WRITE (*,*) 'String Pressure', INT(StPressObserve(i)) + ! + ! + ! + ! IF (INT(MDObserve(i)) <= INT(FlowEl(AnnulusFirstEl)%StartX)) THEN !! mouse pointer is in the annulus space + ! DO j = AnnulusFirstEl , AnnulusLastEl + ! IF (INT(FlowEl(j)%EndX) <= INT(MDObserve(i))) EXIT + ! END DO + ! ELSE IF (INT(MDObserve(i)) > INT(FinalFlowEl(NumbEl)%EndX)) THEN ! mouse pointer is in the open hole space + ! DO j = OpenholeFirstEl , NumbEl + ! IF (INT(FinalFlowEl(j)%EndX) <= INT(MDObserve(i))) EXIT + ! END DO + ! END IF + ! AnnPressObserve(i) = FlowEl(j)%StartPress - (FlowEl(j)%StartX - MDObserve(i)) * FlowEl(j)%dPdLfric & + ! - (FlowEl(j)%StartTVD - TVDObserve(i)) * FlowEl(j)%dPdLGrav + ! WRITE (*,*) 'Annulus Pressure', INT(AnnPressObserve(i)) + ! + ! + !END DO + + + + + END SUBROUTINE + + + +SUBROUTINE SOLVE_LINEAR_EQUATIONS(A , x , b , error, dim) + + !!! This subroutine solves a linear systems of equations Ax=b + !! if vaiable erorr changed its value to .FALSE. means that the system of equations cab not be solved + !! I use this subroutine to solve the linearized equations which uprising in calculation of volume and pressure of gas kick pockets + + USE KickVARIABLES + + IMPLICIT NONE + INTEGER , INTENT(IN) :: dim + REAL(8) , DIMENSION(dim,dim) , INTENT(in) :: A + REAL , DIMENSION(dim) , INTENT(OUT) :: x + REAL(8) , DIMENSION(dim) , INTENT(in) :: b + LOGICAL , INTENT(OUT) :: error + REAL(8) , DIMENSION(:,:) , ALLOCATABLE :: m + INTEGER , DIMENSION(1) :: max_loc + REAL(8) , DIMENSION(:) , ALLOCATABLE :: temp_row + INTEGER :: n , k + + !WRITE (*,*) 'SIZE(A , dim = 1), SIZE(A , dim = 2), SIZE(b)', SIZE(A , dim = 1), SIZE(A , dim = 2), SIZE(b) + error = (SIZE(A , dim = 1) /= SIZE(b)) .OR. (SIZE(A , dim = 2) /= SIZE(b)) + !WRITE (*,*) 'SOLVE_LINEAR_EQUATIONS 1' , error + + IF (error) THEN + x = 0.0d0 + RETURN + END IF + n = SIZE(b) + + ALLOCATE (m(n , n + 1) , temp_row(n + 1)) + m(1:n , 1:n) = A + m(1:n , n + 1) = b + !WRITE (*,*) 'SOLVE_LINEAR_EQUATIONS 2' , m + ! Triangularization phase + TRIANG_LOOP: DO k = 1 , n + max_loc = MAXLOC(ABS(m(k:n , k))) + temp_row(k:n + 1) = m(k , k:n + 1) + m(k , k:n+1) = m(k-1+max_loc(1) , k:n+1) + m(k - 1 + max_loc(1) , k:n + 1) = temp_row(k:n + 1) + !WRITE (*,*) 'SOLVE_LINEAR_EQUATIONS 3' , max_loc + + IF (m(k , k) == 0) THEN + error = .TRUE. + !WRITE (*,*) 'SOLVE_LINEAR_EQUATIONS 4' + EXIT TRIANG_LOOP + ELSE + !WRITE (*,*) 'SOLVE_LINEAR_EQUATIONS 5' + m(k , k : n + 1) = m(k , k : n + 1) / m(k , k) + m(k + 1 : n , k + 1 : n + 1) = m(k + 1 : n , k + 1 : n + 1) - SPREAD(m(k , k + 1:n + 1) , 1, n - k) * SPREAD(m(k + 1:n , k) , 2 , n - k + 1) + END IF + END DO TRIANG_LOOP + !WRITE (*,*) 'SOLVE_LINEAR_EQUATIONS 6' + + ! Back substitution phase + IF (error) THEN + x = 0.0 + ELSE + DO k = n , 1 , -1 + x(k) = REAL(m(k , n + 1) - SUM(m(k , k + 1 : n) * x(k + 1 : n))) + !WRITE (*,*) 'SOLVE_LINEAR_EQUATIONS 7' + END DO + END IF + + DEALLOCATE(m , temp_row) + +END SUBROUTINE solve_linear_equations + \ No newline at end of file diff --git a/FluidFlow/Pressure_Display_VARIABLES.f90 b/FluidFlow/Pressure_Display_VARIABLES.f90 new file mode 100644 index 0000000..dc7e9ce --- /dev/null +++ b/FluidFlow/Pressure_Display_VARIABLES.f90 @@ -0,0 +1,32 @@ +MODULE PressureDisplayVARIABLES + + USE DynamicRealArray + + IMPLICIT NONE + + + INTEGER :: NoGauges + REAL , DIMENSION(6) :: PressureGauges + INTEGER :: SoundSpeed ! speed of sound [ft/s] + INTEGER , DIMENSION(3) :: PressureTimeStepDelay + TYPE(DynamicRealArrayType) :: PumpPressureDelay + TYPE(DynamicRealArrayType) :: CasingPressureDelay + TYPE(DynamicRealArrayType) :: BottomHolePressureDelay + TYPE(DynamicRealArrayType) :: ShoePressureDelay + + + + TYPE :: ObservationAndGaugePointsInformations ! We have some gauges and may be have many observation points like casing shoe, bottomhole , etc. + ! This module stores information of these points to calculate pressure, density and other desired properties + ! at these points + ! Locations: 1: Stand Pipe , 2: Choke Manifold, 3: Botton Hole, 4: Under Bit, 5: Shoe, 6: Before BOP + INTEGER :: ElementNo ! Element Nubmer based on mud elements + REAL :: DistancetoRefrence ! Distance from pump or the end of fluid path [ft] + REAL :: ElementTrueDepth ! True depth of point or gauge [ft] + REAL :: Pressure ! Pressure [psi] + END TYPE + + !TYPE(ObservationAndGaugePointsInformations) , ALLOCATABLE :: GaugePoint(:) + TYPE(ObservationAndGaugePointsInformations) , ALLOCATABLE :: ObservationPoint(:) + + END MODULE \ No newline at end of file diff --git a/FluidFlow/Pressure_Distribution_VARIABLES.f90 b/FluidFlow/Pressure_Distribution_VARIABLES.f90 new file mode 100644 index 0000000..5cd2042 --- /dev/null +++ b/FluidFlow/Pressure_Distribution_VARIABLES.f90 @@ -0,0 +1,178 @@ +MODULE FricPressDropVars + + + !! Record of revisions + !! Date Programmer Discription of change + !! ------ ------------ ----------------------- + !! 1396/07/26 Sheikh Original code + !! + + IMPLICIT NONE + + + + REAL :: TotFricPressLoss ! Total Frictional Pressure Loss [psi] + REAL :: FlowrateNearShoe + INTEGER :: NoHorizontalEl ! number of elements in horizontal pump to string line + INTEGER :: NoStringEl ! number of elements in string + INTEGER :: NoAnnulusEl ! number of elements in annulus space + INTEGER :: NoWellToChokeEl ! number of elements in well head to choke manifold + INTEGER :: NoOpenHoleEl ! number of elements in openhole + INTEGER :: NumbEl ! number of flow elements in horizontal line, string, annulus and openhole + INTEGER :: StringFirstEl ! number of first string element + INTEGER :: StringLastEl ! number of last string element + INTEGER :: AnnulusFirstEl ! number of first annulus element + INTEGER :: AnnulusLastEl ! number of last annulus element + INTEGER :: ChokeFirstEl ! number of first choke element + INTEGER :: ChokeLastEl ! number of last choke element + INTEGER :: OpenholeFirstEl ! number of first openhole element + INTEGER :: ShoeFlowElNo ! the flow element that starts from shoe, in other word the number of upper element adjacent to shoe + REAL :: KBOP ! DeltaPBOP = KBOP * Q**2 [psi * min^2 / gal^2] + REAL :: KBit ! DeltaPBit = KBit * Q**2 [psi * min^2 / gal^2] + + !!!! Choke Variables + REAL :: BackPressure , NewBackPressure ! back pressure at riser or choke line [psi] + REAL :: Kchoke ! DeltaPchoke = Kchoke * Q**2 [psi * min^2 / gal^2] + REAL :: TotalOpenChokeArea , OldTotalOpenChokeArea , ChokeBypassArea , NewTotalOpenChokeArea , AreaChange + REAL :: BHPSafetyMargin , AChBHPTol ! BHP safety margin and BHP Tolerance in Auto Choke mode [psi] + REAL(8) :: OnShakerDensity ! Outlet Density of well for displaying in drillwatch and data [ppg] + + LOGICAL :: FloatValveIn + LOGICAL :: FloatValveOpen , FloatValveWasOpen + LOGICAL :: BitTotallyPluged + + REAL :: ClingingFactor = 0.45 ! in calculating surge and swab pressure changes + REAL :: MudCompressibility = 2.7E-6 ! Volumne change relative to Volume/1psi, for example for change of 1000 psi in pressure, volume changes 0.27% [1/psi] + REAL :: FloatValveMinOpenPressure = 1.0 ! minimum pressure that opens the float valve [psi] + REAL :: StMudVol ! Total mud volume of Horizontal and String that may be compressed [gal] + REAL :: AnnMudVol ! Total mud volume of Bottom hole, Annulus and Choke line that may be compressed [gal] + REAL :: PumpToManifoldMudVol + REAL :: StCompressedMudVol ! Compressed mud volume in Horizontal and String [gal] + REAL :: AnnCompressedMudVol ! Compressed mud volume in Bottom hole, Annulus and Choke line [gal] + REAL :: PumpToManifoldCompressedMudVol + REAL :: StDeltaPDueToCompressibility ! Pressure increase due to mud compressibility in Horizontal and String [psi] + REAL :: AnnDeltaPDueToCompressibility ! Pressure increase due to mud compressibility in Bottom hole, Annulus and Choke line [psi] (usually when wellhead is closed) + REAL :: PumpToManifoldDeltaPDueToCompressibility + REAL :: StDeltaPtoDeltaVCompressibility ! string pressure change due to compressibility [psi/gal] + REAL :: AnnDeltaPtoDeltaVCompressibility ! annulus and openhole pressure change due to compressibility [psi/gal] + + + !!!! Problem Variables (Choke and Bit) + + INTEGER :: ManChoke1Plug , ManChoke2Plug ! = 1 if choke is plugged , = 0 else + INTEGER :: ManChoke1Washout , ManChoke2Washout ! = 1 if choke is washed out , = 0 else + INTEGER :: BitJetsPlugged , BitJetsWashedOut + INTEGER :: CasingPressure_DataDisplayMalF, CasingPressure_ChokeMalF + + !!!!!! Note that bit is not an element in these calculations + + + TYPE, PUBLIC :: PressDropCalcElemInfo + + !! Geometrical variables + REAL(8) :: Length ! Length of a Flow element [ft] + REAL(8) :: DepthDiff ! Difference between depth of start and end of element [ft] + REAL(8) :: StartX , EndX ! start and end point (measured depth) of flow element [ft] + REAL(8) :: StartTVD , EndTVD ! Start and End point True Vertical Depth of flow element [ft] + REAL :: Od , Id , Dhyd ! Outer, Inner and hydraulic diameter of flow element [in] + REAL :: Area ! area of element [ft^2] + INTEGER :: alpha ! geometry factor: 0 = pipe (ID=0) , 1 = annulus + INTEGER :: FrictionDirection ! = 1 if flowrate is positive, so frictional pressure gradient is in direction of preassumed + ! flowrate, = -1 if not above condition usually in Swab conditions + !! Flow variables + INTEGER :: MaterialType ! = 0 for mud , = 2 for gas + REAL :: volume , vel , density , FlowRate ! volume [ft^3], velocity [ft/s], density of fluid flow [ppg], flow rate [gpm] + REAL :: Gf ! geometry shear rate correction [-] + !! Rheological and frictional variables + REAL :: Theta600 , Theta300 ! Fann data at 600 and 300 rpm as rheological data + ! REAL(8) :: VelCritBing , VelCritPow ! critical velocity in Bingham Plastic and Power law model [ft/min] + REAL :: muPlastic , YieldP ! plastic viscosity [cp] and yield point [lbf/(100*ft^2)] + REAL :: mueff ! Effective or apparent viscosity which is used in calculation of generalized Reynolds number + REAL :: nIndex , kIndex ! n: flow behaivior index [-] and k: consistency factor [lbf*s^n/(100*ft^2)] + REAL :: gammaW , tauW ! shear rate at the wall [1/s] and wall shear stress [lbf/(100*ft^2)] + REAL :: GenRe ! generalized Reynolds number in power law model [-] + REAL :: ReCrit = 2100.0 ! Critical Reynolds number for Newtonian model and Bingham plastic model + REAL :: ReCritLam , ReCritTurb ! laminar and turbulent critical Reynolds + REAL :: f ! Fanning friction factor [-] + REAL :: a , b ! parameters for calculationg friction factor in turbulent regime for power law model [-] + LOGICAL :: LaminarRegime ! = .TRUE. if flow regime is laminar and = .FALSE. if flowregime is not + LOGICAL :: TurbulentRegime ! = .TRUE. if flow regime is turbulent and = .FALSE. if flowregime is not + !! Pressure change variables + REAL :: StartPress , EndPress ! Pressure at start and end of an element [psi] + REAL :: dPdLFric ! frictional pressure drop gradient in each element [psi/ft] + REAL :: dPdLGrav ! gravitional pressure gradient = 0.052 * Density [psi/ft] + REAL :: FricPressLoss ! frictional pressure loss in each element [psi] + REAL :: StaticPressDiff ! static pressure difference between top and bottom of a pocket [psi] always positive + REAL :: FricToQPartialDiff ! partial differentiation of friction relative to volume flow rate + + + + END TYPE PressDropCalcElemInfo + + TYPE (PressDropCalcElemInfo) , ALLOCATABLE :: FlowEl(:) ! FlowEl: Pressure Drop Calculation Elements The dimension is equal to the number of flow elements + + + + + TYPE, PUBLIC :: FinalPressDropCalcElemInfo + + !!! for use in calculationg properties of a point in 'downhole view' page + + REAL(8) :: StartX , EndX , StartTVD , EndTVD , Length , DepthDiff ! start and end point of flow element [ft] + REAL :: density ! density of fluid flow [ppg], flow rate [gpm] + REAL :: StartPress ! Pressure at start of an element [psi] + REAL :: EndPress ! Pressure at end of an element [psi] + REAL :: dPdLFric ! frictional pressure drop gradient in each element [psi/ft] + REAL :: dPdLGrav ! gravitional pressure gradient = 0.052 * Density [psi/ft] + + END TYPE FinalPressDropCalcElemInfo + + TYPE (FinalPressDropCalcElemInfo) , ALLOCATABLE :: FinalFlowEl(:) ! FlowEl: Pressure Drop Calculation Elements The dimension is equal to the number of flow elements + + + + + END MODULE FricPressDropVars + + MODULE UTUBEVARS + + REAL :: QUTubeInput ! flow rate from string to annulus which caused by head difference at two sides of U-tube [gpm] + REAL :: QUtubeOutput ! flow rate from annulus to string which caused by head difference at two sides of U-tube [gpm] + REAL :: PressureDp ! pressure at bit or end of drill string from drill string path [psi] + REAL :: PressureAnn ! pressure at bit or end of drill string from annular path [psi] + + END MODULE + + SUBROUTINE DeallocateFlowTypes + + USE FricPressDropVars + USE PressureDisplayVARIABLES + USE KickVariables + + IMPLICIT NONE + + + IF (ALLOCATED(FlowEl)) DEALLOCATE(FlowEl) + IF (ALLOCATED(FinalFlowEl)) DEALLOCATE(FinalFlowEl) + IF (ALLOCATED(GasPocketWeight%Array)) CALL GasPocketWeight%Empty() + IF (ALLOCATED(GasPocketNewPress%Array)) CALL GasPocketNewPress%Empty() + IF (ALLOCATED(GasPocketOldPress%Array)) CALL GasPocketOldPress%Empty() + IF (ALLOCATED(GasPocketNewTemp%Array)) CALL GasPocketNewTemp%Empty() + IF (ALLOCATED(GasPocketOldTemp%Array)) CALL GasPocketOldTemp%Empty() + IF (ALLOCATED(GasPocketNewVol%Array)) CALL GasPocketNewVol%Empty() + IF (ALLOCATED(GasPocketOldVol%Array)) CALL GasPocketOldVol%Empty() + IF (ALLOCATED(GasPocketdeltaVol%Array)) CALL GasPocketdeltaVol%Empty() + IF (ALLOCATED(GasPocketModifiedVol%Array)) CALL GasPocketModifiedVol%Empty() + IF (ALLOCATED(GasPocketFlowInduced%Array)) CALL GasPocketFlowInduced%Empty() + IF (ALLOCATED(GasPocketDensity%Array)) CALL GasPocketDensity%Empty() + IF (ALLOCATED(GasPocketCompressibility%Array)) CALL GasPocketCompressibility%Empty() + IF (ALLOCATED(GasPocketFlowEl)) DEALLOCATE(GasPocketFlowEl) + IF (ALLOCATED(KickJacobian)) DEALLOCATE(KickJacobian) + IF (ALLOCATED(OldKickJacobian)) DEALLOCATE(OldKickJacobian) + IF (ALLOCATED(KickVandPFunction)) DEALLOCATE(KickVandPFunction) + IF (ALLOCATED(KickUnknownVector)) DEALLOCATE(KickUnknownVector) + IF (ALLOCATED(KickCorrectionVector)) DEALLOCATE(KickCorrectionVector) + + + END SUBROUTINE + \ No newline at end of file diff --git a/FluidFlow/String_Property_Calculator.f90 b/FluidFlow/String_Property_Calculator.f90 new file mode 100644 index 0000000..bbc0617 --- /dev/null +++ b/FluidFlow/String_Property_Calculator.f90 @@ -0,0 +1,31 @@ +SUBROUTINE StringPropertyCalculator (md, den, pre, tem) + + !!! This subroutine gets location of a guage or an observation point and determines information of that point such as pressure, density, velocity and temperature later. + USE PressureDisplayVARIABLES + USE Fluid_Flow_Startup_Vars + !USE MudSystemVARIABLES + USE FricPressDropVars + !USE CDataDisplayConsoleVariables , StandPipePressureDataDisplay=>StandPipePressure + !USE CDataDisplayConsoleVariables , CasingPressureDataDisplay=>CasingPressure!, StandPipePressureDataDisplay=>StandPipePressure + USE CDrillWatchVariables + + IMPLICIT NONE + INTEGER, intent(in) :: md ! input + REAL(8) :: TVD + real(8), intent(inout) :: den ! output + real(8), intent(inout) :: pre ! output + real(8), intent(inout) :: tem ! output + + INTEGER :: ilocal + + CALL TVD_Calculator(md * 1.d0 , TVD) + + DO ilocal = StringFirstEl , StringLastEl + IF (md < INT(FinalFlowEl(ilocal)%EndX)) EXIT + END DO + den = FinalFlowEl(ilocal)%Density + pre = FinalFlowEl(ilocal)%StartPress - (md - FinalFlowEl(ilocal)%StartX) * FinalFlowEl(ilocal)%dPdLfric & + + (TVD - FinalFlowEl(ilocal)%StartTVD) * FinalFlowEl(ilocal)%dPdLGrav + tem = 500 + + END SUBROUTINE \ No newline at end of file diff --git a/FluidFlow/Utube.f90 b/FluidFlow/Utube.f90 new file mode 100644 index 0000000..e45d758 --- /dev/null +++ b/FluidFlow/Utube.f90 @@ -0,0 +1,117 @@ +SUBROUTINE Utube + + !! This subroutine calculates flow rate when pump is off, pump is disconnected from drill pipe + !! and both annulus and drill pipe are exposed to atmosphere pressure and thus a U-tube situation is occurs + + !! Record of revisions + !! Date Programmer Discription of change + !! ------ ------------ ----------------------- + !! 1396/07/29 Sheikh Original code + !! 1396/08/09 Sheikh Two-side U-tube + !! + + USE FricPressDropVars + USE MudSystemVARIABLES + USE UTUBEVARS + USE Fluid_Flow_Startup_Vars + + IMPLICIT NONE + + + + INTEGER :: i ,j, ibit , ij , ijk + REAL :: AreaBeforeBit !!! Area of element before bit in U-Tube condition [in^2] + + QUTubeInput = 1.0 + QUTubeOutput = 1.0 + TotFricPressLoss = 0 + BitPressLoss = 0 + PressureDp = 0 + PressureAnn = 0 +!!!!!!!!!!!!!!!!!!!!!! Bit +!!!!!!!!!!!! Calculating Pressure at the bottom of drill string from mud columns in drill pipes and annulus space + + PressureDp = SUM(FlowEl(StringFirstEl : StringLastEl)%StaticPressDiff) + + PressureAnn = SUM(FlowEl(AnnulusFirstEl : AnnulusLastEl)%StaticPressDiff) +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +!!!!!!!!!!!! U tube:: flow from string to annulus + IF ((PressureDp - PressureAnn) > UTubePressTolerance) THEN + DO ijk = 1 , 10 + FlowEl(StringFirstEl : AnnulusLastEl)%Flowrate = QUTubeInput + !WRITE (*,*) 'QUTubeInput', FlowEl(AnnulusLastEl)%Flowrate + DO ij = StringFirstEl , AnnulusLastEl !!!!! Updating values of flowrates + CALL FricPressDrop(ij) + CALL PartialDerivativeFricToFlowRate(ij) + !WRITE (*,*) 'FricPressDrop, PartialDerivative', FlowEl(ij)%FricPressLoss, FlowEl(ij)%FricToQPartialDiff, FlowEl(ij)%Length + END DO + + !!!!!!!!!!!!!! Bit pressure drop calculation + IF (BitTrue) THEN + i = NoHorizontalEl + NoStringEl + AreaBeforeBit = FlowEl(i)%Area * Convfttoinch**2 + BitPressLoss = FlowEl(i)%density * Convft3toUSgal * (FlowEl(i)%vel**2 * ((AreaBeforeBit/BitTotNozzArea)**2 - 1.)) / 2. / Convlbftolbm / Convfttoinch**2 + END IF + + !!!!!!!!!!!!!!!!!!!!!!!!!!! + i = NoHorizontalEl + 1 + j = NoHorizontalEl + NoStringEl + NoAnnulusEl + !IF (ALLOCATED(FlowEl)) THEN + ! WRITE (*,*) ' H, S, A, Ch, O', NoHorizontalEl , NoStringEl , NoAnnulusEl , NoWellToChokeEl , NoOpenHoleEl + !END IF + + TotFricPressLoss = SUM(FlowEl(i : j)%FricPressLoss) + BitPressLoss + IF (ABS((PressureDp - PressureAnn) - TotFricPressLoss) <= UTubePressTolerance .OR. QUTubeInput < 1.0) EXIT ! tolerance set to 1.0 psi + IF ((PressureDp - PressureAnn) > TotFricPressLoss) THEN + QUTubeInput = QUTubeInput + ((PressureDp - PressureAnn) - TotFricPressLoss) / SUM(FlowEl(i : j)%FricToQPartialDiff) + ELSE IF ((PressureDp - PressureAnn) < TotFricPressLoss) THEN + QUTubeInput = QUTubeInput + ((PressureDp - PressureAnn) - TotFricPressLoss) / SUM(FlowEl(i : j)%FricToQPartialDiff) + END IF + !WRITE (*,*) 'QUTubeInput, TotFricPressLoss', QUTubeInput, TotFricPressLoss + !WRITE (*,*) '1) PressureDp, PressureAnn', PressureDp, PressureAnn, TotFricPressLoss, QUTubeInput + + END DO + QUTubeOutput = 0.0 +!!!!!!!!!!!!!!!!!!!!!!!! +!!!!!!!!!!!! U tube:: flow from annulus to string + ELSE IF ((PressureAnn - PressureDp) > UTubePressTolerance) THEN + DO ijk = 1 , 10 + DO ij = NoHorizontalEl + 1 , NoHorizontalEl + NoStringEl + NoAnnulusEl !!!!! Updating values of flowrates + FlowEl(ij)%Flowrate = QUTubeOutput + CALL FricPressDrop(ij) + CALL PartialDerivativeFricToFlowRate(ij) + END DO + + !!!!!!!!!!!!!! Bit pressure drop calculation + IF (BitTrue) THEN + !DO i = NumbEl , 1 , -1 !! This loop starts from the first elements of string and check the elements to reach the bit at the bottom of string + ! IF (FlowEl(i)%Id==0) CYCLE + i = NoHorizontalEl + NoStringEl + 1 + AreaBeforeBit = FlowEl(i)%Area * Convfttoinch**2 + BitPressLoss = FlowEl(i)%density * Convft3toUSgal * (FlowEl(i)%vel**2 * ((AreaBeforeBit/BitTotNozzArea)**2 - 1.)) / 2. / Convlbftolbm / Convfttoinch**2 + !IF (FlowEl(i)%Id>0) EXIT + !END DO + END IF + !!!!!!!!!!!!!!!!!!!!!!!!!!! + i = NoHorizontalEl + 1 + j = NoHorizontalEl + NoStringEl + NoAnnulusEl + TotFricPressLoss = SUM(FlowEl(i : j)%FricPressLoss) + BitPressLoss + + IF (ABS((PressureDp - PressureAnn) - TotFricPressLoss) <= UTubePressTolerance) EXIT ! tolerance set to 1.0 psi + IF ((PressureAnn - PressureDp) > TotFricPressLoss) THEN + QUTubeOutput = QUTubeOutput - (((PressureAnn - PressureDp) - TotFricPressLoss) / SUM(FlowEl(i : j)%FricToQPartialDiff)) + ELSE IF ((PressureAnn - PressureDp) < TotFricPressLoss) THEN + QUTubeOutput = QUTubeOutput + (((PressureAnn - PressureDp) - TotFricPressLoss) / SUM(FlowEl(i : j)%FricToQPartialDiff)) + END IF + !WRITE (*,*) 'QUTubeOutput, TotFricPressLoss', QUTubeOutput, TotFricPressLoss + + WRITE (*,*) '2) PressureDp, PressureAnn', PressureDp, PressureAnn, TotFricPressLoss + END DO + QUTubeInput = 0.0 +!!!!!!!!!!!! No U-Tube + ELSE + QUTubeInput = 0.0 + QUTubeOutput = 0.0 + END IF + +END SUBROUTINE \ No newline at end of file diff --git a/FluidFlow/Well_Pressure_Data_Transfer.f90 b/FluidFlow/Well_Pressure_Data_Transfer.f90 new file mode 100644 index 0000000..d091c1c --- /dev/null +++ b/FluidFlow/Well_Pressure_Data_Transfer.f90 @@ -0,0 +1,776 @@ +SUBROUTINE WellPressureDataTransfer + + !! This subroutine calculates pressure distribution in well + !! We divide well hydraulic system to 4 zones. 1- pump to string zone; this zone is horizontal + !! 2- string zone; this zone includes drill pipes and collars and is vertical or neraly vertical + !! 3- annulus zone; this zone includes annulus space between string and openhole or casing + !! 4- Openhole zone; this zone includes spaces under bit to bottom of the wellbore + !! The last two zone includes annulus space and open hole, are influenced by kicks and have crucial role in + !! computing pressure distribution because reference point (back pressure in well head open condition + !! and bottomhole pressure in well head closed condition) are in one of them. because of this, pressure + !! distribution calculates in two subroutines : PressureAnnAndOHDistribution and PressurePumptoBitDistribution + !! pressure change through well consist of pressure change due to friction, change of elevation and acceleration + !! frictional pressure drop calculated by subroutine Sub_Press_Drop_Calculator + !! This subroutine includes hydrostatic pressure and later will include effect of corss-section area change + !! which causes acceleration or decceleration of flow + + USE FricPressDropVars + USE MudSystem + USE MudSystemVARIABLES + USE GeoElements_FluidModule + USE Fluid_Flow_Startup_Vars + USE KickVariables + USE CMudPropertiesVariables + USE CBopStackVariables + USE sROP_Variables + USE CHOKEVARIABLES, PI2 => PI + USE CChokeManifoldVariables + USE CBitProblemsVariables + USE CChokeProblemsVariables + USE CStringConfigurationVariables + USE CDrillWatchVariables + USE CDataDisplayConsoleVariables , MudWeightOutDataDisplay => MudWeightOut + + + + IMPLICIT NONE + + INTEGER :: i , j + REAL :: InstantaneousTotalOpenChokeArea , VolumeDensityProduct + + ChokeIsClosing = .FALSE. + Kchoke = 0.0 + KBit = 0.0 + + + !!!!!!!!!!!!!!!! bit is present + BitTrue = StringConfigurations(1)%ComponentType == Bit_ComponentType ! Bit_ComponentType = 0 + BitCd = 0.98 + BitNozzDia = 32.0 * BitDefinition%BitNozzleSize ! nozzle diameter in 1/32 in + BitNozzleArea = 7.6699E-4 * BitNozzDia**2 + BitNozzleNum = BitDefinition%BitNozzleNo - BitJetsPlugged * PlugJetsCount + BitTotNozzArea = BitNozzleNum * BitNozzleArea + 0.5 * BitJetsWashedOut * JetWashoutCount * BitNozzleArea + IF (BitNozzleNum == 0) THEN + BitTotallyPluged = .TRUE. + ELSE + BitTotallyPluged = .FALSE. + END IF + + FloatValveIn = BitDefinition%FloatValve + !FloatValveOpen = .TRUE. + !IF (JetWashoutCount > 0 .OR. PlugJetsCount > 0) THEN + ! WRITE (*,*) 'PlugJetsCount' , PlugJetsCount + ! WRITE (*,*) 'JetWashoutCount', JetWashoutCount + !END IF + + !WRITE (*,*) 'BitNozzleNum', BitNozzleNum + !WRITE (*,*) 'BitTotNozzArea', BitTotNozzArea + !WRITE (*,*) 'Float Valve??', BitDefinition%FloatValve + + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + IF(ALLOCATED(GasPocketFlowEl)) DEALLOCATE(GasPocketFlowEl) + +!!!!!!!!!!!!!!!!!!!! Well Head Condition ( Open or Closed ) + ChokeKroneckerDelta = 0 + + + IF (WelltoPitsOpen == .FALSE. .AND. WellToChokeManifoldOpen == .FALSE.) THEN + + WellHeadOpen = .FALSE. + !WRITE (*,*) ' Well Head is closed ' + ELSE + WellHeadOpen = .TRUE. + END IF + + IF (WelltoPitsOpen == .FALSE. .AND. WellToChokeManifoldOpen) ChokeKroneckerDelta = 1 + !WRITE (*,*) ' WelltoPitsOpen=' , WelltoPitsOpen, 'WellToChokeManifoldOpen= ' , WellToChokeManifoldOpen + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + + NoHorizontalEl = NoHorizontalMudElements + NoStringEl = NoStringMudElements + NoAnnulusEl = NoCasingMudElements + NoWellToChokeEl = 0 + IF (ChokeKroneckerDelta == 1) NoWellToChokeEl = ChokeLine_Density%Length() + NoOpenHoleEl = NoBottomHoleMudElements + NumbEl = NoHorizontalEl + NoStringEl + NoAnnulusEl + NoWellToChokeEl + NoOpenHoleEl + !WRITE (*,*) 'H, S, A, Ch, O', NoHorizontalEl , NoStringEl , NoAnnulusEl , NoWellToChokeEl , NoOpenHoleEl + IF(ALLOCATED(FlowEl)) DEALLOCATE(FlowEl) + ALLOCATE(FlowEl(NumbEl)) + + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Transfering Data from module:MudSystemVARIABLES to module:FricPressDropVars to calculate Pressure distribution in flow path + !!!!!!!!!!!!!!!!!!!!!!! Horizontal line + !WRITE (*,*) 'H', NoHorizontalEl + DO i = 1 , NoHorizontalEl + FlowEl(i)%StartX = Xstart_MudElement%Array(i) + FlowEl(i)%EndX = Xend_MudElement%Array(i) + FlowEl(i)%StartTVD = 0.d0 + FlowEl(i)%EndTVD = 0.d0 + FlowEl(i)%Id = 0.0 + FlowEl(i)%Od = PipeOD_MudElement%Array(i) + FlowEl(i)%density = Density_MudElement%Array(i) + + FlowEl(i)%Dhyd = FlowEl(i)%Od + FlowEl(i)%Length = ABS(FlowEl(i)%EndX - FlowEl(i)%StartX) + FlowEl(i)%DepthDiff = 0.d0 + FlowEl(i)%Volume = PI / 4.0 * FlowEl(i)%Od**2 * REAL(FlowEl(i)%Length) / Convfttoinch**2 + IF (MudType_MudElement%Array(i) == 0) THEN ! = 0 for mud, = 1 for gas kick, = 4 for air + FlowEl(i)%MaterialType = 0 + ELSE IF (MudType_MudElement%Array(i) == 4) THEN + FlowEl(i)%MaterialType = 4 + ELSE + FlowEl(i)%MaterialType = 1 + END IF + + FlowEl(i)%dPdLgrav = 0.0 + FlowEl(i)%StaticPressDiff = 0.0 + + !WRITE (*,*) 'H density, length, Type of ith element' , i, FlowEl(i)%density , FlowEl(i)%length, FlowEl(i)%MaterialType + + + END DO + !WRITE (*,*) 'inlet and outlet mud theta600' , FlowEl(1)%Theta600 , FlowEl(NumbEl)%Theta600 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + !!!!!!!!!!!!!!!!!!!!!!!!! String + !WRITE (*,*) 'S', NoStringEl + StringFirstEl = NoHorizontalEl + 1 + StringLastEl = NoHorizontalEl + NoStringEl + DO i = NoHorizontalEl + 1 , NoHorizontalEl + NoStringEl + !WRITE (*,*) 'ST , i' , i + FlowEl(i)%StartX = Xstart_MudElement%Array(i) + !WRITE (*,*) 'StartX', FlowEl(i)%StartX + FlowEl(i)%EndX = Xend_MudElement%Array(i) + !WRITE (*,*) 'EndX', FlowEl(i)%EndX + FlowEl(i)%StartTVD = TVDstart_MudElement%Array(i) + !WRITE (*,*) 'StartTVD', FlowEl(i)%StartTVD + FlowEl(i)%EndTVD = TVDend_MudElement%Array(i) + !WRITE (*,*) 'EndTVD', FlowEl(i)%EndTVD + FlowEl(i)%Id = 0.0 + !WRITE (*,*) 'Id', FlowEl(i)%Id + FlowEl(i)%Od = PipeOD_MudElement%Array(i) + !WRITE (*,*) 'Od', FlowEl(i)%Od + FlowEl(i)%Density = Density_MudElement%Array(i) + !WRITE (*,*) 'Density', FlowEl(i)%Density + + + FlowEl(i)%Dhyd = FlowEl(i)%Od + FlowEl(i)%Length = ABS(FlowEl(i)%EndX - FlowEl(i)%StartX) + !WRITE (*,*) 'Length', FlowEl(i)%Length + FlowEl(i)%DepthDiff = ABS(FlowEl(i)%StartTVD - FlowEl(i)%EndTVD) + !WRITE (*,*) 'DepthDiff', FlowEl(i)%DepthDiff + FlowEl(i)%Area = PI / 4.0 * FlowEl(i)%Od**2 / Convfttoinch**2 + FlowEl(i)%Volume = FlowEl(i)%Area * REAL(FlowEl(i)%Length) + IF (MudType_MudElement%Array(i) == 0) THEN ! = 0 for mud, = 1 for gas kick, = 4 for air + FlowEl(i)%MaterialType = 0 + ELSE IF (MudType_MudElement%Array(i) == 4) THEN + FlowEl(i)%MaterialType = 4 + ELSE + FlowEl(i)%MaterialType = 1 + END IF + + IF (FlowEl(i)%MaterialType == 1 .OR. FlowEl(i)%MaterialType == 4) THEN + FlowEl(i)%dPdLgrav = 0.0 + ELSE + FlowEl(i)%dPdLgrav = 0.052 * FlowEl(i)%Density + END IF + FlowEl(i)%StaticPressDiff = FlowEl(i)%dPdLgrav * REAL(FlowEl(i)%DepthDiff) + + !WRITE (*,*) 'S density, length, DeltaPStatic' , i, FlowEl(i)%density , FlowEl(i)%length, FlowEl(i)%StaticPressDiff, FlowEl(i)%MaterialType + + + + END DO + !WRITE (*,*) 'inlet and outlet mud theta600' , FlowEl(1)%Theta600 , FlowEl(NumbEl)%Theta600 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + !!!!!!!!!!!!!!!!!!!!!!!!!!!! Annulus + !WRITE (*,*) 'A', NoAnnulusEl + AnnulusFirstEl = NoHorizontalEl + NoStringEl + 1 + AnnulusLastEl = NoHorizontalEl + NoStringEl + NoAnnulusEl + DO i = NoHorizontalEl + NoStringEl + 1 , NoHorizontalEl + NoStringEl + NoAnnulusEl + FlowEl(i)%StartX = Xstart_MudElement%Array(i) + FlowEl(i)%EndX = Xend_MudElement%Array(i) + FlowEl(i)%StartTVD = TVDstart_MudElement%Array(i) + FlowEl(i)%EndTVD = TVDend_MudElement%Array(i) + FlowEl(i)%Id = PipeID_MudElement%Array(i) + FlowEl(i)%Od = PipeOD_MudElement%Array(i) + FlowEl(i)%Density = Density_MudElement%Array(i) + + FlowEl(i)%Dhyd = FlowEl(i)%Od - FlowEl(i)%Id + FlowEl(i)%Length = ABS(FlowEl(i)%EndX - FlowEl(i)%StartX) + FlowEl(i)%DepthDiff = ABS(FlowEl(i)%StartTVD - FlowEl(i)%EndTVD) + FlowEl(i)%Area = PI / 4.0 * (FlowEl(i)%Od**2 - FlowEl(i)%Id**2) / Convfttoinch**2 + FlowEl(i)%Volume = FlowEl(i)%Area * REAL(FlowEl(i)%Length) + IF (MudType_MudElement%Array(i) == 0) THEN ! = 0 for mud, = 1 for gas kick, = 4 for air + FlowEl(i)%MaterialType = 0 + ELSE IF (MudType_MudElement%Array(i) == 4) THEN + FlowEl(i)%MaterialType = 4 + ELSE + FlowEl(i)%MaterialType = 1 + END IF + + IF (FlowEl(i)%MaterialType == 1 .OR. FlowEl(i)%MaterialType == 4) THEN + FlowEl(i)%dPdLgrav = 0.0 + ELSE + FlowEl(i)%dPdLgrav = 0.052 * FlowEl(i)%density + END IF + FlowEl(i)%StaticPressDiff = FlowEl(i)%dPdLgrav * REAL(FlowEl(i)%DepthDiff) + + !WRITE (*,*) 'A density, length, Type of ith element' , i, FlowEl(i)%density , FlowEl(i)%length, FlowEl(i)%MaterialType + + + END DO + !WRITE (*,*) 'inlet and outlet mud theta600' , FlowEl(1)%Theta600 , FlowEl(NumbEl)%Theta600 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + !!!!!!!!!!!!!!! Well to choke manifold path + !ChokeFirstEl = AnnulusLastEl + 1 + !ChokeLastEl = OpenholeFirstEl - 1 + j = 1 + DO i = NoHorizontalEl + NoStringEl + NoAnnulusEl + 1 , NoHorizontalEl + NoStringEl + NoAnnulusEl + NoWelltoChokeEl + FlowEl(i)%StartX = ChokeLine_Mud_Backhead_X%Array(j) + FlowEl(i)%EndX = ChokeLine_Mud_Forehead_X%Array(j) + FlowEl(i)%StartTVD = 0.d0 + FlowEl(i)%EndTVD = 0.d0 + FlowEl(i)%Id = 0.0 + FlowEl(i)%Od = ChokeLineID + FlowEl(i)%density = ChokeLine_Density%Array(j) + + FlowEl(i)%Dhyd = FlowEl(i)%Od + FlowEl(i)%Length = ABS(FlowEl(i)%EndX - FlowEl(i)%StartX) + FlowEl(i)%DepthDiff = 0.d0 + FlowEl(i)%Area = PI / 4.0 * FlowEl(i)%Od**2 / Convfttoinch**2 + FlowEl(i)%Volume = FlowEl(i)%Area * REAL(FlowEl(i)%Length) + IF (ChokeLine_MudOrKick%Array(j) == 0 .OR. ChokeLine_MudOrKick%Array(j) == 4) THEN ! = 0 for mud, = 1 for gas kick, = 4 for air + FlowEl(i)%MaterialType = ChokeLine_MudOrKick%Array(j) + ELSE + FlowEl(i)%MaterialType = 1 + END IF + + + FlowEl(i)%dPdLgrav = 0.0 + FlowEl(i)%StaticPressDiff = 0.0 + + !WRITE (*,*) 'Ch density, length, Type' , i, FlowEl(i)%density , FlowEl(i)%length, FlowEl(i)%MaterialType + + j = j + 1 + + END DO + + !WRITE (*,*) 'inlet and outlet mud theta600' , FlowEl(1)%Theta600 , FlowEl(NumbEl)%Theta600 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + !!!!!!!!!!!!!!! Open Hole + OpenholeFirstEl = NoHorizontalEl + NoStringEl + NoAnnulusEl + NoWelltoChokeEl + 1 + j = 1 + DO i = OpenholeFirstEl , NumbEl ! = NoHorizontalEl + NoStringEl + NoCasingEl + NoOpenHoleEl + FlowEl(i)%StartX = Xstart_OpMudElement%Array(j) + FlowEl(i)%EndX = Xend_OpMudElement%Array(j) + FlowEl(i)%StartTVD = TVDstart_OpMudElement%Array(j) + FlowEl(i)%EndTVD = TVDend_OpMudElement%Array(j) + FlowEl(i)%Id = 0.0 + FlowEl(i)%Od = PipeOD_OpMudElement%Array(j) + FlowEl(i)%density = Density_OpMudElement%Array(j) + FlowEl(i)%MaterialType = MudTypeOP_MudElement%Array(j) ! = 0 for mud, = 1 for gas kick, = 4 for air + + FlowEl(i)%Dhyd = FlowEl(i)%Od + FlowEl(i)%Length = ABS(FlowEl(i)%EndX - FlowEl(i)%StartX) + FlowEl(i)%DepthDiff = ABS(FlowEl(i)%StartTVD - FlowEl(i)%EndTVD) + FlowEl(i)%Area = PI / 4.0 * FlowEl(i)%Od**2 / Convfttoinch**2 + FlowEl(i)%Volume = FlowEl(i)%Area * REAL(FlowEl(i)%Length) + IF (MudTypeOp_MudElement%Array(j) == 0) THEN ! = 0 for mud, = 1 for gas kick, = 4 for air + FlowEl(i)%MaterialType = 0 + ELSE IF (MudTypeOp_MudElement%Array(j) == 4) THEN + FlowEl(i)%MaterialType = 4 + ELSE + FlowEl(i)%MaterialType = 1 + END IF + + j = j + 1 + IF (FlowEl(i)%MaterialType == 1) THEN + FlowEl(i)%dPdLgrav = 0.0 + ELSE + FlowEl(i)%dPdLgrav = 0.052 * FlowEl(i)%density + END IF + FlowEl(i)%StaticPressDiff = FlowEl(i)%dPdLgrav * REAL(FlowEl(i)%DepthDiff) + + !WRITE (*,*) 'O density, length, Type of ith element' , i, FlowEl(i)%density , FlowEl(i)%length, FlowEl(i)%MaterialType + + END DO + !WRITE (*,*) 'inlet and outlet mud theta600' , FlowEl(1)%Theta600 , FlowEl(NumbEl)%Theta600 + + !DO i = NoHorizontalEl + 1, NoHorizontalEl + NoStringEl + ! WRITE (*,*) 'element No, Start , Length, DeltaPSt', i, FlowEl(i)%StartX, FlowEl(i)%Length, FlowEl(i)%StaticPressDiff + !END DO +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +!!!!!!!!!!!!!!!!!! Mud Element Viscosity Calculation + + DO i = 1 , NumbEl + IF (FlowEl(i)%MaterialType /= 0) CYCLE + IF (FlowEl(i)%density < 8.33) THEN + WRITE (*,*) 'H, S, A, Ch, O', NoHorizontalEl , StringFirstEl , AnnulusFirstEl , NoWellToChokeEl , OpenHoleFirstEl + + WRITE (*,*) 'Element No, Volume(gal), Density(ppg), Type' + DO j = 1 , NumbEl + WRITE (*,*) j, FlowEl(j)%Volume * ConvFt3toUSGal , FlowEl(j)%Density, FlowEl(j)%MaterialType + END DO + + CALL ErrorStop('Density below water density (8.33)', i) + CYCLE + END IF + + FlowEl(i)%Theta600 = Theta600Refrence + 11.0 * (MAX(FlowEl(i)%density , 8.33) - DensityRefrence) + FlowEl(i)%Theta300 = Theta300Refrence + 6.0 * (MAX(FlowEl(i)%density , 8.33) - DensityRefrence) + !WRITE (*,*) 'i, Theta600, Theta600', i, FlowEl(i)%Theta600, FlowEl(i)%Theta300 + END DO +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + + FlowEl(:)%FlowRate = 0.0 + FlowEl(:)%StartPress = 0.0 + FlowEl(:)%EndPress = 0.0 + + !WRITE (*,*) 'NoGasPocket=' , SIZE(GasPocketWeight%Array) + + + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + OpenArea32 = ((LeftManualChoke * (1.0 - ManChoke1Plug * REAL(ManualChoke1PluggedPercent)) / 100.0) + 0.5 * ManChoke1Washout) * ChokeAreaFullyOpen + OpenArea33 = CHOOKE(1)%AreaChokeFinal * Convfttoinch**2 ! (1.d0 - CHOOKE(1)%PercentClose) * ChokeAreaFullyOpen + OpenArea34 = CHOOKE(2)%AreaChokeFinal * Convfttoinch**2 ! (1.d0 - CHOOKE(2)%PercentClose) * ChokeAreaFullyOpen + OpenArea35 = ((RightManualChoke * (1.0 - ManChoke2Plug * REAL(ManualChoke2PluggedPercent)) / 100.0) + 0.5 * ManChoke2Washout) * ChokeAreaFullyOpen + !write(*,*) 'OpenArea32=' , OpenArea32, active32, ManChoke1Plug, ManualChoke1PluggedPercent, ManChoke1Washout + !write(*,*) 'OpenArea33=' , OpenArea33, active33 + !write(*,*) 'OpenArea34=' , OpenArea34, active34, !HydraulicChoke2PluggedPercent + !write(*,*) 'OpenArea35=' , OpenArea35, active35, ManChoke2Plug, ManualChoke2PluggedPercent, ManChoke2Washout + InstantaneousTotalOpenChokeArea = OpenArea32 * active32 + OpenArea33 * active33 + OpenArea34 * active34 + OpenArea35 * active35 + ChokeBypassArea * active29 + OldTotalOpenChokeArea = TotalOpenChokeArea + !WRITE (*,*) 'Instantaneous / Old TotalOpenChokeArea', InstantaneousTotalOpenChokeArea, OldTotalOpenChokeArea + IF (OldTotalOpenChokeArea <= 0.01 * ChokeAreaFullyOpen) OldTotalOpenChokeArea = 0.01 * ChokeAreaFullyOpen + IF (InstantaneousTotalOpenChokeArea <= 0.01 * ChokeAreaFullyOpen) THEN + WellToChokeManifoldOpen = .FALSE. + OldTotalOpenChokeArea = 0.01 * ChokeAreaFullyOpen + !WRITE (*,*) ' Choke Controler Here 2' + + ELSE IF (InstantaneousTotalOpenChokeArea > 0.5 * ChokeAreaFullyOpen .OR. WelltoPitsOpen) THEN + ! mud flows through well to bell nipple, or choke is rather open + TotalOpenChokeArea = InstantaneousTotalOpenChokeArea + !WRITE (*,*) ' Choke Controler Here 1' + ELSE + IF (InstantaneousTotalOpenChokeArea > OldTotalOpenChokeArea) THEN + TotalOpenChokeArea = MIN(1.1 * OldTotalOpenChokeArea , InstantaneousTotalOpenChokeArea) + WRITE (*,*) ' Choke is opening' !, TotalOpenChokeArea, OldTotalOpenChokeArea, InstantaneousTotalOpenChokeArea + ELSE IF (InstantaneousTotalOpenChokeArea < OldTotalOpenChokeArea) THEN + TotalOpenChokeArea = MAX(0.9 * OldTotalOpenChokeArea , InstantaneousTotalOpenChokeArea) + WRITE (*,*) ' Choke is closing' !, TotalOpenChokeArea, OldTotalOpenChokeArea, InstantaneousTotalOpenChokeArea + !ExitMass = 0.1 * ExitMass ! for decreasing mass exit due to expansion + ELSE + TotalOpenChokeArea = InstantaneousTotalOpenChokeArea + END IF + END IF + !WRITE (*,*) 'TotalOpenChokeArea=', TotalOpenChokeArea + + + + + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +!!!!!!!!!!!!!!!!!!!! Well Head Condition ( Open or Closed ) + ChokeKroneckerDelta = 0 + !WRITE (*,*) ' WelltoPitsOpen = ', WelltoPitsOpen + !WRITE (*,*) ' WellToChokeManifoldOpen = ', WellToChokeManifoldOpen + IF (WelltoPitsOpen == .FALSE. .AND. WellToChokeManifoldOpen == .FALSE.) THEN + !WRITE (*,*) ' WelltoPitsOpen = ', WelltoPitsOpen + !WRITE (*,*) ' WellToChokeManifoldOpen = ', WellToChokeManifoldOpen + + WellHeadOpen = .FALSE. + !WRITE (*,*) ' Well Head is closed ' + ELSE + WellHeadOpen = .TRUE. + END IF + + IF (WelltoPitsOpen == .FALSE. .AND. WellToChokeManifoldOpen) ChokeKroneckerDelta = 1 + !WRITE (*,*) ' WelltoPitsOpen=' , WelltoPitsOpen, 'WellToChokeManifoldOpen= ' , WellToChokeManifoldOpen + !WRITE (*,*) 'WellToChokeOpen , WellToChokeWasOpen', WellToChokeManifoldOpen, WellToChokeManifoldWasOpen +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + IF (NoGasPocket > 0) THEN + !IF (NoWelltoChokeEl > 0 .AND. (FlowEl(OpenholeFirstEl - 1)%MaterialType == 1 .OR. KickWasExitingThroughChoke) .AND. WellHeadOpen) THEN + IF (Choke_Kick_Saved_Volume_Final > 0.d0) THEN + !WRITE (*,*) 'Choke_Kick_Saved_Volume_Final=', Choke_Kick_Saved_Volume_Final, (GasPocketModifiedVol%Array(NoGasPocket) * Convft3ToUSgal) + ExitMass = REAL(Choke_Kick_Saved_Volume_Final / (GasPocketModifiedVol%Array(NoGasPocket) * Convft3ToUSgal)) * GasPocketWeight%Array(NoGasPocket) + !IF (NoGasPocket > 1) ExitMass = ExitMass + (SUM(GasPocketDeltaVol%Array(1 : NoGasPocket - 1)) / GasPocketNewVol%Array(NoGasPocket)) * GasPocketWeight%Array(NoGasPocket) + !WRITE (*,*) 'Total Exit mass=' , ExitMass !, DeltaVolumePipe, StringFlowRate * dt / ConvMinToSec + IF (FlowEl(OpenholeFirstEl - 1)%MaterialType /= 1) THEN + CALL RemoveGasPocket(NoGasPocket) + WRITE (*,*) 'Choke_Kick_Saved_Volume_Final=', Choke_Kick_Saved_Volume_Final + END IF + + END IF + + + !NoGasPocket = SIZE(GasPocketWeight%Array) + IF (NoGasPocket > 0) CALL GasPocketFlowElementTransformer + END IF + + IF (NoWelltoChokeEl > 0) THEN + OldChokeDensity = ChokeDensity + !ChokeDensity = SUM(FlowEl(AnnulusLastEl + 1 : OpenholeFirstEl - 1)%Density * FlowEl(AnnulusLastEl + 1 : OpenholeFirstEl - 1)%Volume) / SUM(FlowEl(AnnulusLastEl + 1 : OpenholeFirstEl - 1)%Volume) + !ChokeDensity = MAX(ChokeDensity , ChokeMinDensity) + VolumeDensityProduct = 0.0 + Do i = AnnulusLastEl + 1 , OpenholeFirstEl - 1 + VolumeDensityProduct = VolumeDensityProduct + ((MAX(FlowEl(i)%Density , ChokeMinDensity)) * FlowEl(i)%Volume) + End Do + ChokeDensity = VolumeDensityProduct / SUM(FlowEl(AnnulusLastEl + 1 : OpenholeFirstEl - 1)%Volume) + + !IF ((ChokeDensity - OldChokeDensity) > (MaxChokeDensityChange * dt / Convmintosec)) THEN + ! ChokeDensity = OldChokeDensity + (MaxChokeDensityChange * dt / Convmintosec) + !ELSE IF ((OldChokeDensity - ChokeDensity) > (MaxChokeDensityChange * dt / Convmintosec)) THEN + ! ChokeDensity = OldChokeDensity - (MaxChokeDensityChange * dt / Convmintosec) + !END IF + + !WRITE (*,*) 'ChokeDensity=', ChokeDensity + Kchoke = (ChokeDensity / ((2.0 * 89158.0) * (0.26 * 0.61 * TotalOpenChokeArea)**2)) * 4.d0 ! *4.d0: seyyed gofte + END IF + + IF (BitTotallyPluged == .FALSE.) THEN + KBit = FlowEl(StringLastEl)%density / 12042.0 / BitCd**2 / BitTotNozzArea**2 + END IF + + + +END SUBROUTINE WellPressureDataTransfer + + +SUBROUTINE GasPocketFlowElementTransformer + + !! This Subroutine makes relationship between fluid flow elements and gas pocket elements + !! The main variable of this subroutine is GasPocketFlowEl + !! For each gas pocket, GasPocketFlowEl has a row, which columns are numbers of flow elements which are contains that gas pocket + !! For example, if we have two gas pockets and they are in (7,8) and (12,3,4) flow elements respectively, + !! GasPocketFlowEl(1,:) = [12 , 3 , 4] and GasPocketFlowEl(2,:) = [7 , 8 , 0] + + + USE FricPressDropVars + USE MudSystemVARIABLES + USE GeoElements_FluidModule + USE Fluid_Flow_Startup_Vars + USE KickVariables + USE CMudPropertiesVariables + USE CBopStackVariables + USE CDownHoleVariables + USE CError + + IMPLICIT NONE + + INTEGER :: i , j , k + REAL :: PressureCorrection + PressureCorrection = 1.0 + + ALLOCATE(GasPocketFlowEl(NoGasPocket , 1)) + GasPocketFlowEl(:,:) = 0 + !WRITE (*,*) 'NoGasPocket=' , NoGasPocket + + i = 1 + j = 1 + DO k = OpenholeFirstEl , NumbEl + IF (FlowEl(k)%MaterialType == 1) THEN + IF (j > 1) THEN + IF (GasPocketFlowEl(i , j - 1) /= k - 1) THEN + i = i + 1 + j = 1 + END IF + END IF + + IF (SIZE(GasPocketFlowEl , dim = 2) < j) THEN + ALLOCATE(tempGasPocketFlowEl(SIZE(GasPocketFlowEl , dim = 1) , SIZE(GasPocketFlowEl , dim = 2))) + tempGasPocketFlowEl = GasPocketFlowEl + DEALLOCATE(GasPocketFlowEl) + ALLOCATE(GasPocketFlowEl(SIZE(tempGasPocketFlowEl , dim = 1) , SIZE(tempGasPocketFlowEl , dim = 2) + 1)) + GasPocketFlowEl(: , 1 : SIZE(tempGasPocketFlowEl , dim = 2)) = tempGasPocketFlowEl + GasPocketFlowEl(: , SIZE(GasPocketFlowEl , dim = 2)) = 0 + DEALLOCATE(tempGasPocketFlowEl) + END IF + + GasPocketFlowEl(i , j) = k + j = j + 1 + END IF + END DO + !WRITE (*,*) 'GasPocketFlowEl=' , GasPocketFlowEl + + DO k = AnnulusFirstEl , OpenholeFirstEl - 1 + IF (FlowEl(k)%MaterialType == 1) THEN + IF (j > 1) THEN + IF (k == AnnulusFirstEl .AND. GasPocketFlowEl(i , j - 1) == NumbEl) THEN + !WRITE (*,*) 'Kick is Around Bit' + ELSE IF (GasPocketFlowEl(i , j - 1) /= k - 1) THEN + i = i + 1 + j = 1 + !WRITE (*,*) 'i, j, k', i, j, k, FlowEl(k)%MaterialType + END IF + END IF + + IF (j > SIZE(GasPocketFlowEl , dim = 2)) THEN + ALLOCATE(tempGasPocketFlowEl(SIZE(GasPocketFlowEl , dim = 1) , SIZE(GasPocketFlowEl , dim = 2))) + tempGasPocketFlowEl = GasPocketFlowEl + DEALLOCATE(GasPocketFlowEl) + ALLOCATE(GasPocketFlowEl(SIZE(tempGasPocketFlowEl , dim = 1) , SIZE(tempGasPocketFlowEl , dim = 2) + 1)) + GasPocketFlowEl(: , 1 : SIZE(tempGasPocketFlowEl , dim = 2)) = tempGasPocketFlowEl + GasPocketFlowEl(: , SIZE(GasPocketFlowEl , dim = 2)) = 0 + DEALLOCATE(tempGasPocketFlowEl) + END IF + IF (i > NoGasPocket) THEN + WRITE (*,*) 'GasPocketFlowEl', GasPocketFlowEl + WRITE (*,*) 'i , j , k', i, j, k + WRITE (*,*) 'H, S, A, Ch, O', NoHorizontalEl , StringFirstEl , AnnulusFirstEl , NoWellToChokeEl , OpenHoleFirstEl + + WRITE (*,*) 'Element No, Volume(gal), Density(ppg), Type' + DO j = 1 , NumbEl + WRITE (*,*) j, FlowEl(j)%Volume * ConvFt3toUSGal , FlowEl(j)%Density, FlowEl(j)%MaterialType + END DO + !WRITE (*,*) 'Op Last: Volume(gal), Type', NumbEl, FlowEl(NumbEl)%Volume * ConvFt3ToUSgal , FlowEl(NumbEl)%MaterialType + !WRITE (*,*) 'Ann First: Volume(gal), Type', AnnulusFirstEl, FlowEl(AnnulusFirstEl)%Volume * ConvFt3ToUSgal , FlowEl(AnnulusFirstEl)%MaterialType + !IF (ChokeKroneckerDelta == 1) THEN + ! WRITE (*,*) 'Ann Last: Volume(gal), Type', AnnulusLastEl, FlowEl(AnnulusLastEl)%Volume * ConvFt3ToUSgal , FlowEl(AnnulusLastEl)%MaterialType + ! WRITE (*,*) 'Ch First: Volume(gal), Type', AnnulusLastEl + 1 , FlowEl(AnnulusLastEl + 1)%Volume * ConvFt3ToUSgal , FlowEl(AnnulusLastEl + 1)%MaterialType + !END IF + + CALL ErrorStop('Error in calculating GasPocketFlowEl') + END IF + + GasPocketFlowEl(i , j) = k + !WRITE (*,*) 'GasPocketFlowEl=' , GasPocketFlowEl + j = j + 1 + + END IF + !IF (i > NoGasPocket) CALL ErrorStop('Error in GasPocketFlowEl' , i) + END DO + + !i = SIZE(GasPocketFlowEl , dim = 1) + !j = SIZE(GasPocketFlowEl , dim = 2) + !WRITE(*,*) 'GasPocketFlowEl Data' , GasPocketFlowEl + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + GasPocketModifiedVol%Array(:) = 0.d0 + + DO i = 1 , NoGasPocket + !WRITE(*,*) 'GasPocketFlowEl Data' , i , GasPocketFlowEl(: , i) + DO j = 1 , SIZE(GasPocketFlowEl , dim = 2) + IF (GasPocketFlowEl(i , j) > 0) GasPocketModifiedVol%Array(i) = GasPocketModifiedVol%Array(i) + FlowEl(GasPocketFlowEl(i , j))%Volume + END DO + END DO + i = AnnulusLastEl + j = OpenholeFirstEl - 1 + !WRITE (*,*) ' b) GasPocketModifiedVol (ft3)=', GasPocketModifiedVol(1) + !WRITE (*,*) ' b) GasPocketModifiedVol (gal)=' , GasPocketModifiedVol(1) * 7.48 + !IF (NoWelltoChokeEl > 0 .AND. ANY(FlowEl(i : j)%MaterialType == 1) .AND. FlowEl(j)%MaterialType == 0) THEN + ! BehindKickMudDensity = FlowEl(GasPocketFlowEl(NoGasPocket , 1) - 1)%Density + ! FrontKickMudDensity = FlowEl(MAXVAL(GasPocketFlowEl(NoGasPocket , :)) + 1)%Density + ! KickVolBeforeChoke = REAL(GasPocketModifiedVol%Array(NoGasPocket)) + ! WRITE (*,*) 'BehindKickMudDensity', BehindKickMudDensity + ! WRITE (*,*) 'FrontKickMudDensity' , FrontKickMudDensity + ! WRITE (*,*) 'KickVolBeforeChoke', KickVolBeforeChoke + !END IF + + + GasPocketOldVol%Array(:) = GasPocketModifiedVol%Array(:) + + GasPocketOldPress%Array(:) = GasPocketNewPress%Array(:) + !WRITE (*,*) ' GasPocketweight%Array(1)', GasPocketweight%Array(1) + IF (GasPocketWeight%Array(1) < 0.0) CALL ErrorStop(' Error in Calculating Mass ' , KickmdotBCoef) + + + GasPocketDensity%Array(:) = (GasPocketweight%Array(:) / GasPocketModifiedVol%Array(:)) / convft3toUSgal ! [lbm/ft^3 to ppg] + DO i = 1 , SIZE(GasPocketFlowEl , dim = 1) + DO j = 1 , SIZE(GasPocketFlowEl , dim = 2) + IF (GasPocketFlowEl(i , j) > 0) FlowEl(GasPocketFlowEl(i , j))%Density = GasPocketDensity%Array(i) + END DO + END DO + + + !WRITE (*,*) 'Kick density (ppg)=' , GasPocketDensity(1) + InfluxRate = MAX(((KickmdotACoef * (KickmdotBCoef - GasPocketNewPress%Array(1))) / GasPocketDensity%Array(1) * ConvMinToSec) , 0.0) + !WRITE (*,*) ' InfluxRate (gpm) =', InfluxRate + + i = OpenholeFirstEl - 1 + !WRITE (*,*) 'MaterialType, NoWelltoChokeEl', FlowEl(i)%MaterialType , NoWelltoChokeEl + !IF (NoWelltoChokeEl > 0 .AND. FlowEl(OpenholeFirstEl - 1)%MaterialType == 1 .AND. WellHeadOpen) THEN ! kick is last element in choke line and does not exit. + IF (Choke_Kick_Saved_Volume_Final > 0.d0 .AND. WellHeadOpen) THEN + WRITE (*,*) 'Kick is exiting through the choke' + !ExitMass = GasPocketDensity%Array(NoGasPocket) * (SUM(GasPocketFlowInduced%Array(:)) + (DeltaVolumePipe * ConvMinToSec / dt) + StringFlowRate) / ConvMinToSec * dt + GasPocketWeight%Array(NoGasPocket) = GasPocketweight%Array(NoGasPocket) - ExitMass + IF (GasPocketWeight%Array(NoGasPocket) > 0.0) THEN + GasPocketOldPress%Array(NoGasPocket) = GasPocketWeight%Array(NoGasPocket) * GasType(KickGasType)%GasConstant * & + GasPocketCompressibility%Array(NoGasPocket) * GasPocketNewTemp%Array(NoGasPocket) / GasPocketModifiedVol%Array(NoGasPocket) + GasPocketDensity%Array(NoGasPocket) = (GasPocketweight%Array(NoGasPocket) / GasPocketModifiedVol%Array(NoGasPocket)) / convft3toUSgal + GasPocketNewVol%Array(:) = GasPocketOldVol%Array(:) + !FlowEl(i)%Density = GasPocketDensity%Array(NoGasPocket) ! for choke pressure drop calculation + !WRITE (*,*) 'kick weight, pressure & density', GasPocketWeight%Array(NoGasPocket), GasPocketOldPress%Array(NoGasPocket), FlowEl(i)%Density + ELSE ! gas pocket is escaped from the well completely + WRITE (*,*) ' Last Pocket Removed' + WRITE (*,*) ' GasPocketFlowEl', GasPocketFlowEl + CALL RemoveGasPocket(NoGasPocket) + + !WRITE (*,*) ' GasPocketFlowEl', GasPocketFlowEl + + END IF + + ELSE IF (NoGasPocket == 1 .OR. WellHeadOpen) THEN ! kick is not last element of choke line or well head is closed + !WRITE (*,*) ' Gas Kick Pressure (psi) (before) = ' , GasPocketNewPress(1) + !DO j = 1 , NoGasPocket + GasPocketNewPress%Array(:) = GasPocketNewPress%Array(:) * REAL(GasPocketNewVol%Array(:) / GasPocketOldVol%Array(:)) + GasPocketOldPress%Array(:) = GasPocketNewPress%Array(:) + GasPocketNewVol%Array(:) = GasPocketOldVol%Array(:) + !WRITE (*,*) ' Gas Kick Pressure (psi) (after) = ' , GasPocketOldPress(1), REAL(GasPocketNewVol(1) / GasPocketOldVol(1)) + !END DO + + ELSE ! Many gas pocket is in the well and well head is closed + +103 FORMAT (2I, 4X, (F9.3), 5X, (F9.3)) + + !WRITE (*,*) 'Before 0' + !DO i = 1 , NoGasPocket + ! WRITE (*,*) i, REAL(GasPocketNewPress%Array(i)), REAL(GasPocketNewVol%Array(i) * Convft3toUSgal), REAL(GasPocketOldVol%Array(i) * Convft3toUSgal) + !END DO + GasPocketNewPress%Array(NoGasPocket) = GasPocketOldPress%Array(NoGasPocket) + GasPocketNewVol%Array(NoGasPocket) = GasPocketCompressibility%Array(NoGasPocket) * GasType(KickGasType)%GasConstant * & + GasPocketNewTemp%Array(NoGasPocket) * GasPocketWeight%Array(NoGasPocket) / GasPocketNewPress%Array(NoGasPocket) + + + !GasPocketNewPress%Array(:) = GasPocketNewPress%Array(:) * REAL(GasPocketNewVol%Array(:) / GasPocketOldVol%Array(:)) + !GasPocketOldPress%Array(:) = GasPocketNewPress%Array(:) + + !WRITE (*,*) 'Before 1' + !DO i = 1 , NoGasPocket + ! WRITE (*,*) i, REAL(GasPocketNewPress%Array(i)), REAL((GasPocketNewVol%Array(i) * Convft3toUSgal)) + !END DO + + !WRITE (*,*) 'Mid' + DO WHILE (ABS(PressureCorrection * 10.0) > KickConvergenceTolerance) + DO j = NoGasPocket - 1 , 1 , -1 + CALL KickFunctionsCalculator(GasPocketNewPress%Array(j) , j , 5) + GasPocketNewVol%Array(j) = GasPocketCompressibility%Array(j) * GasType(KickGasType)%GasConstant * & + GasPocketNewTemp%Array(j) * GasPocketWeight%Array(j) / GasPocketNewPress%Array(j) + !WRITE (*,*) j, REAL(GasPocketNewPress%Array(j)), REAL(GasPocketNewVol%Array(j) * Convft3toUSgal) + END DO + PressureCorrection = (SUM(GasPocketNewVol%Array(:)) - SUM(GasPocketOldVol%Array(:))) / SUM(GasPocketNewVol%Array(:) / GasPocketNewPress%Array(:)) + GasPocketNewPress%Array(NoGasPocket) = GasPocketNewPress%Array(NoGasPocket) + PressureCorrection + GasPocketNewVol%Array(NoGasPocket) = GasPocketCompressibility%Array(NoGasPocket) * GasType(KickGasType)%GasConstant * & + GasPocketNewTemp%Array(NoGasPocket) * GasPocketWeight%Array(NoGasPocket) / GasPocketNewPress%Array(NoGasPocket) + j = NoGasPocket + !WRITE (*,*) j, REAL(GasPocketNewPress%Array(j)), REAL(GasPocketNewVol%Array(j) * Convft3toUSgal) + END DO + + !WRITE (*,*) 'Pressure Correction = ', PressureCorrection + WRITE (*,*) 'After' + DO i = 1 , NoGasPocket + WRITE (*,*) i, REAL(GasPocketNewPress%Array(i)), REAL((GasPocketNewVol%Array(i) * Convft3toUSgal)) + END DO + + GasPocketOldPress%Array(:) = GasPocketNewPress%Array(:) + + END IF + + + IF (GasPocketFlowEl(NoGasPocket , 1) == 0) THEN + CALL RemoveGasPocket(1) + + !WRITE (*,*) 'GasPocketFlowEl', GasPocketFlowEl + WRITE (*,*) 'First Pocket Removed' + !WRITE (*,*) 'GasPocketFlowEl', GasPocketFlowEl + END IF + + + + KickVolume = INT(SUM(GasPocketOldVol%Array(:)) * convft3toUSgal / 42. * 10.0) / 10.0 + + + !WRITE (*,*) ' Gas Kick Pressure (psi) = ' , GasPocketOldPress(1) , INT((GasPocketNewVol(1) / GasPocketOldVol(1)) * 1000.d0) / 1000.d0 + !WRITE (*,*) ' b) GasPocketNewVol (ft^3) = ' , GasPocketOldVol(1) + + + + END SUBROUTINE + + +SUBROUTINE RemoveGasPocket(ilocal) + + USE KickVARIABLES + USE MudSystemVARIABLES + + IMPLICIT NONE + + INTEGER :: ilocal + + DEALLOCATE(KickJacobian , OldKickJacobian , KickVandPFunction , KickUnknownVector , KickCorrectionVector) + + + WRITE (*,*) 'Gas Pocket Will be Removed', ilocal + call GasPocketOldPress%Remove(ilocal) + call GasPocketNewPress%Remove(ilocal) + call GasPocketOldTemp%Remove(ilocal) + call GasPocketNewTemp%Remove(ilocal) + call GasPocketOldVol%Remove(ilocal) + call GasPocketNewVol%Remove(ilocal) + call GasPocketDeltaVol%Remove(ilocal) + call GasPocketFlowInduced%Remove(ilocal) + call GasPocketModifiedVol%Remove(ilocal) + call GasPocketWeight%Remove(ilocal) + call GasPocketDensity%Remove(ilocal) + call GasPocketCompressibility%Remove(ilocal) + + NoGasPocket = NoGasPocket - 1 + + IF (NoGasPocket > 0) THEN + ALLOCATE(KickJacobian(2 * NoGasPocket , 2 * NoGasPocket) , OldKickJacobian(2 * NoGasPocket , 2 * NoGasPocket) , KickVandPFunction(2 * NoGasPocket)) + ALLOCATE(KickUnknownVector(2 * NoGasPocket) , KickCorrectionVector(2 * NoGasPocket)) + + IF (ALLOCATED(GasPocketFlowEl)) THEN + ALLOCATE(tempGasPocketFlowEl(NoGasPocket , SIZE(GasPocketFlowEl , dim = 2))) + tempGasPocketFlowEl = GasPocketFlowEl(1 : NoGasPocket , :) + DEALLOCATE(GasPocketFlowEl) + ALLOCATE(GasPocketFlowEl(SIZE(tempGasPocketFlowEl , dim = 1) , SIZE(tempGasPocketFlowEl , dim = 2))) + GasPocketFlowEl = tempGasPocketFlowEl + DEALLOCATE(tempGasPocketFlowEl) + END IF + + ELSE ! NoGasPocket = 0 + + + CALL GasPocketOldPress%Empty + CALL GasPocketNewPress%Empty + CALL GasPocketOldTemp%Empty + CALL GasPocketNewTemp%Empty + CALL GasPocketOldVol%Empty + CALL GasPocketNewVol%Empty + CALL GasPocketDeltaVol%Empty + CALL GasPocketFlowInduced%Empty + CALL GasPocketModifiedVol%Empty + CALL GasPocketWeight%Empty + CALL GasPocketDensity%Empty + + InfluxRate = 0.0 + KickVolume = 0.0 + + END IF + + !WRITE (*,*) 'Gas Pocket Removed', NoGasPocket + 1, ALLOCATED(GasPocketWeight%Array) + +END SUBROUTINE + + + + + + + \ No newline at end of file diff --git a/FluidFlow/fricpressdropvars.mod b/FluidFlow/fricpressdropvars.mod new file mode 100644 index 0000000000000000000000000000000000000000..13006626a1ea36aeaf4f7e85588f535eddd2b518 GIT binary patch literal 3086 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 c5qc|QSi&8!gPkS3z~7U90c_z Top Measured Depth of Formation + Do i = 1 , TD_WellIntervalsCount + if ( FormationTop >= TD_WellGeo(i)%VerticalDepth ) then + KickFormTopMD = KickFormTopMD + TD_WellGeo(i)%IntervalLength + !WRITE (*,*) ' here 11' , TD_WellGeo(i)%IntervalLength + !WRITE (*,*) ' here v11' , TD_WellGeo(i)%VerticalDepth + + WellGeoTopTVD = TD_WellGeo(i)%VerticalDepth + else if ( FormationTop < TD_WellGeo(i)%VerticalDepth ) then + if ( TD_WellGeo(i)%HoleType == 0 ) then + KickFormTopMD = KickFormTopMD + ((FormationTop - WellGeoTopTVD)& + / cos(TD_WellGeo(i)%StartAngle)) + !WRITE (*,*) ' here 12' , (FormationTop - WellGeoTopTVD) / cos(TD_WellGeo(i)%StartAngle) + + else + KickFormTopMD = KickFormTopMD + (TD_WellGeo(i)%RCurvature & + * Asin((FormationTop - WellGeoTopTVD) / TD_WellGeo(i)%RCurvature)) + !WRITE (*,*) ' here 13' , TD_WellGeo(i)%RCurvature * Asin((FormationTop - WellGeoTopTVD) / TD_WellGeo(i)%RCurvature) + + end if + exit + end if + End Do + + !!===> Down Measured Depth of Formation + WellGeoTopTVD = 0. + Do i = 1 , TD_WellIntervalsCount + if ( (FormationTop + Formations(FormationNo)%Thickness)>=TD_WellGeo(i)%VerticalDepth ) then + KickFormDownMD = KickFormDownMD + TD_WellGeo(i)%IntervalLength + WellGeoTopTVD = TD_WellGeo(i)%VerticalDepth + else if ( (FormationTop+Formations(FormationNo)%Thickness) Determination of Formation Length for Kick Modeling + if (TD_WellTotalVerticalLength >= FormationTop .AND. TD_WellTotalVerticalLength < (FormationTop+Formations(FormationNo)%Thickness)) then + KickFormLength = TD_WellTotalLength - KickFormTopMD ![ft] + else if ( TD_WellTotalVerticalLength >= (FormationTop + Formations(FormationNo)%Thickness) ) then + KickFormLength = KickFormDownMD - KickFormTopMD ![ft] + else + KickFormLength = 0. + end if + + !PermeabilityExposedHeight = KickFormLength * FormationPermeability + PermeabilityExposedHeight = FluidFlowCounter - MudSys_timeCounter +!==================================================== +! Reservoir Data +!==================================================== + FormPermeability = FormationPermeability ! [mD] + + FormPressure = TD_WellTotalVerticalLength * Formations(FormationNo)%PorePressureGradient ![psia] + FormationPressure = INT(FormPressure) + !CALL Log_2('FormPressure =' , FormPressure) + !print*, 'Formations(FormationNo)%PorePressureGradient=', Formations(FormationNo)%PorePressureGradient + !print * , 'FormationNo=' , FormationNo + !print * , 'TD_WellTotalVerticalLength=' , TD_WellTotalVerticalLength + FormTemperature = 600 ! [Ra] + !WRITE (*,*) ' Formation pressure ' , FormPressure + + +!==================================================== +! Gas Properties (Methane Gas) +!==================================================== + + GasResTemperature = FormTemperature + GasResPressure = FormPressure + + !!!! Methane , Gas type =1 + GasKickMolarMass = GasType(KickGasType)%MolarWt ! Methane Gas [gr/mol] + GasSpecGravity = GasKickMolarMass / GasDensityRefrence + + KickTc = GasType(KickGasType)%CritTemp + KickPc = GasType(KickGasType)%CritPress + + !!!!!!!! Calculating Compressibility, viscosity for influx condition (Average of reservoir and bottomhole) + KickTr = GasResTemperature / KickTc + KickPr = GasResPressure / KickPc + + K_A_Res = 3.53 * KickPr + K_B_Res = 10.0**(0.9813 * KickTr) + K_C_Res = 0.274 * (KickPr**2) + K_D_Res = 10.0**(0.8157 * KickTr) + + GasResCompressibility = 0.98 !1. - (K_A_Res / K_B_Res) + (K_C_Res / K_D_Res) + + GasReservoirDensity = GasResPressure / (GasResCompressibility * & + GasResTemperature * GasType(KickGasType)%GasConstant) / Convft3toUSgal ! [ppg] + +END SUBROUTINE + \ No newline at end of file diff --git a/FluidFlow/kick/Gas_Kick_Calculator.f90 b/FluidFlow/kick/Gas_Kick_Calculator.f90 new file mode 100644 index 0000000..29586a1 --- /dev/null +++ b/FluidFlow/kick/Gas_Kick_Calculator.f90 @@ -0,0 +1,566 @@ +SUBROUTINE GasKickCalculator + + USE KickVariables + Use TD_WellGeometry + Use CReservoirVariables + Use CFormationVariables + USE Fluid_Flow_Startup_Vars + USE PressureDisplayVARIABLES + USE FricPressDropVars + USE MudSystemVARIABLES + USE CMudPropertiesVariables + USE CError + USE , INTRINSIC :: IEEE_ARITHMETIC + + + !! Note: a subject that may be confusing is that when we use gauge pressure and when're using absolute pressure?! + !! all stated pressure are gauge pressure, so I do like this. + !! only when we want to use a state equation (like ideal gas equation), we should use absolute equation and so I do this. + !! Thus gas pocket pressure are all absolute pressure. + + IMPLICIT NONE + + INTEGER :: i , j , k , l + + SolvingEquationError = .FALSE. + KickVandPFunction(:) = 0.d0 + KickJacobian(: , :) = 0.d0 + +!==================================================== +! Gas Properties (Methane Gas) +!==================================================== + !GasPocketNewTemp%Array(1) = 600 + BottomHoleTemperature = 600 + KickFluxAvgPressure = (BottomHolePress + FormPressure) / 2 + StandardPress + KickFluxAvgTemperature = (FormTemperature + BottomHoleTemperature) / 2 + KickFluxAvgCompressibility = 0.98d0 + + K_Aa = (5.8742362 * 10.**(-3) * KickFluxAvgTemperature**1.2288) / (511.1728532 + KickFluxAvgTemperature) + K_Bb = 5.5565586 + (1000.01 / KickFluxAvgTemperature) + K_Cc = 2.47862 - 0.12294 * K_Bb + GasKickSIDensity = KickFluxAvgPressure / (KickFluxAvgCompressibility * & + KickFluxAvgTemperature * GasType(KickGasType)%GasConstant) * Convpcftogpcm3 + + GasKickViscosity = K_Aa * EXP(K_Bb * GasKickSIDensity**K_Cc) + !!!!!!!!!!!!!!!!!!!!!!!!! + + !!!!!!!!!!!!!! Calculating compressibility for bottom hole condition + !K_BHTpr = BottomHoleTemperature / KickTc + !K_BHPpr = (BottomHolePress + StandardPress) / KickPc + + !K_A_Bottomhole = 3.53 * K_BHPpr + !K_B_Bottomhole = 10.0**(0.9813 * K_BHTpr) + !K_C_Bottomhole = 0.274 * (K_BHPpr**2) + !K_D_Bottomhole = 10.0**(0.8157 * K_BHTpr) + + BottomHoleCompressibility = 0.98d0 !1. - (K_A_Bottomhole / K_B_Bottomhole) + (K_C_Bottomhole / K_D_Bottomhole) + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + GasKickBg = 0.00504 * KickFluxAvgCompressibility * KickFluxAvgTemperature / KickFluxAvgPressure ![bbl/SCF] + + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !WRITE (*,*) 'Gas Kick Top' +!===> Kick Flow Rate Calculation + IF (FormPressure > BottomHolePress) THEN + KickmdotACoef = 10.0**(-8) * 1.15741d0 * 7.080 * FormPermeability * REAL(KickFormLength) * GasType(KickGasType)%StDensity / & + (GasKickViscosity * GasKickBg * LOG(10000.0)) + !IF (WellHeadOpen .AND. NoGasPocket == 1) KickmdotACoef = (1.d0 + 2.d0) * KickmdotACoef + ELSE + KickmdotACoef = 0.0 + END IF + + i = StringLastEl + j = OpenholeFirstEl - 1 + k = GasPocketFlowEl(1 , 1) + KickmdotBCoef = FormPressure + StandardPress !! - Sum(static and friction pressure loss) of flow elements below gas pocket, see below + IF (FormPressure > BottomHolePress) THEN + + !WRITE (*,*) 'k , i, j' , k , i, j + IF (k >= OpenholeFirstEl) THEN ! Bottom of active kick is in openhole + KickmdotBCoef = KickmdotBCoef - (SUM(FlowEl(OpenholeFirstEl : k)%StaticPressDiff)) !+ SUM(FlowEl(j + 1 : GasPocketFlowEl(1 , 1) - 1)%FricPressLoss + !WRITE (*,*) '1 SUM(FlowEl(j + 1 : k)%FricPressLoss', k, SUM(FlowEl(j + 1 : k)%FricPressLoss) + ELSE IF (k < OpenholeFirstEl) THEN ! bottom of 1st gas pocket (active kick) is in annulus ond/or choke line only + KickmdotBCoef = KickmdotBCoef - SUM(FlowEl(OpenholeFirstEl : NumbEl)%StaticPressDiff) & + - (SUM(FlowEl(AnnulusFirstEl : k)%StaticPressDiff) + SUM(FlowEl(AnnulusFirstEl : k)%FricPressLoss)) + !WRITE (*,*) '2 SUM(FlowEl(j + 1 : NumbEl)%FricPressLoss', k, SUM(FlowEl(j + 1 : NumbEl)%FricPressLoss) + END IF + !WRITE (*,*) ' KickmdotBCoef=', KickmdotBCoef + END IF + !WRITE (*,*) 'Kick A, B', KickmdotACoef, KickmdotBCoef + + DO l = 1 , NoGasPocket + KickUnknownVector(2 * l - 1) = GasPocketNewVol%Array(l) + KickUnknownVector(2 * l) = GasPocketNewPress%Array(l) + END DO + + IF (WellHeadOpen) THEN + !!!!!!!!!! Calculation of functions of pocket Pressure and gas Volumes + !IF (GasPocketElementNo(1) > 0) WRITE (*,*) ' GasPocketElementNo(1) ' , GasPocketElementNo(1) + !WRITE (*,*) ' Kick Unknown Vector' , KickUnknownVector!(1) , KickUnknownVector(2) + IF (KickIteration == 1) THEN ! updating initial guess based on previous time step data + DO l = 1 , NoGasPocket + KickUnknownVector(2 * l - 1) = KickUnknownVector(2 * l - 1) + GasPocketDeltaVol%Array(l) + END DO + END IF + + KickVandPFunction(1) = KickUnknownVector(1) - GasPocketCompressibility%Array(1) * GasType(KickGasType)%GasConstant * & ! VandP(1) = V(1) + GasPocketNewTemp%Array(1) * (GasPocketWeight%Array(1) + KickmdotACoef * MAX(((KickmdotBCoef - KickUnknownVector(2)) * dt) , 0.0)) / KickUnknownVector(2) + !WRITE (*,*) 'KickVandPFunction(1)',KickVandPFunction(1) + l = 2 * NoGasPocket + CALL KickFunctionsCalculator(KickVandPFunction(l) , NoGasPocket , 2) ! VandP(last) = P(last) + !WRITE (*,*) 'KickVandPFunction(l)', l, KickVandPFunction(l) + DO l = 2 , NoGasPocket ! VandP(Odd) = V(l, l > 1) + KickVandPFunction(2 * l - 1) = KickUnknownVector(2 * l - 1) - GasPocketCompressibility%Array(l) * GasType(KickGasType)%GasConstant * & + GasPocketNewTemp%Array(l) * GasPocketWeight%Array(l) / KickUnknownVector(2 * l) + !WRITE(*,*) 'KickVandPFunction(V)', l, KickVandPFunction(2 * l - 1) + END DO + + DO l = NoGasPocket - 1 , 1 , -1 + CALL KickFunctionsCalculator(KickVandPFunction(2 * l) , l , 1) ! VandP(Even) = P(l, l < NoGasPocket) + !WRITE(*,*) 'KickVandPFunction(P)', l , KickVandPFunction(2 * l) + END DO + !!!!!!!!!! END - Calculation of functions of pocket Pressure and gas Volumes + + !!!!!!!!!! Calculation of Jacobian + DO k = 1 , 2 * NoGasPocket ! Main Diagonal + KickJacobian(k , k) = 1.d0 + END DO + + KickJacobian(1,2) = (GasPocketCompressibility%Array(1) * GasType(KickGasType)%GasConstant * GasPocketNewTemp%Array(1) & + * (GasPocketWeight%Array(1) + KickmdotACoef * KickmdotBCoef * dt) / KickUnknownVector(2)**2) ! Row 1 Finished + IF (KickJacobian(1,2) == 0.d0) THEN + CALL Error('KickJacobian(1,2) = 0.0') + KickJacobian(1,2) = OldKickJacobian(1,2) + END IF + + !WRITE(*,*) 'KickJacobian(1,2)', KickJacobian(1,2) + + l = NoGasPocket + CALL KickFunctionsCalculator(KickJacobian(2 * l , 2 * l - 1) , NoGasPocket , 4) ! for last Row + IF (KickJacobian(2 * l , 2 * l - 1) == 0.d0) THEN + CALL Error ('KickJacobian(Last,Odd) = 0.0') + KickJacobian(2 * l , 2 * l - 1) = OldKickJacobian(2 * l , 2 * l - 1) + END IF + + DO k = NoGasPocket - 1 , 1 , -1 + KickJacobian(2 * l , 2 * k - 1) = KickJacobian(2 * l , 2 * l - 1) + END DO ! Last Row Finished + !WRITE(*,*) 'KickJacobian(2,1)', KickJacobian(2,1) + + + DO k = 2 , NoGasPocket + KickJacobian(2 * k - 1 , 2 * k) = GasPocketCompressibility%Array(k) * GasType(KickGasType)%GasConstant * GasPocketNewTemp%Array(k) & + * GasPocketWeight%Array(k) / KickUnknownVector(2 * k)**2 + + END DO ! Odd Rows (V equations) Finished + + DO k = 1 , NoGasPocket - 1 + KickJacobian(2 * k , 2 * k + 2) = -1.d0 + END DO ! Even Rows (P equations) effect of upper pocket + + DO k = 2 , 2 * (NoGasPocket - 1) , 2 + DO l = 1 , k - 1 , 2 + CALL KickFunctionsCalculator(KickJacobian(k , l) , k / 2 , 3) + IF (KickJacobian(k , l) == 0.d0) THEN + WRITE (*,*) 'Jacobian Array = 0.0', k , l + CALL Error ('KickJacobian(k , l) = 0.0') + KickJacobian(k , l) = OldKickJacobian(k , l) + END IF + END DO + END DO + + IF (ANY(IEEE_IS_NaN(KickJacobian))) CALL ErrorStop ('NaN in calculating Kick Jacobian, Call your Service Provider') + + !!!!!!!!!! Solving linear equation in order to finding correction vector for correcting pocket pressure and gas induced flowrates + KickVandPFunction = -1.d0 * KickVandPFunction + !WRITE (*,*) 'Max Remainder', MAXVAL(ABS(KickVandPFunction)) , MAXLOC(ABS(KickVandPFunction)) + !WRITE (*,*) 'SIZE(A , dim = 1), SIZE(A , dim = 2), SIZE(b)', SIZE(KickJacobian , dim = 1), SIZE(KickJacobian , dim = 2), SIZE(KickVandPFunction) + CALL SOLVE_LINEAR_EQUATIONS(KickJacobian , KickCorrectionVector , KickVandPFunction , SolvingEquationError, SIZE(KickCorrectionVector)) + IF (SolvingEquationError) CALL ErrorStop( ' Error in solving kick equation ' ) + + KickUnknownVector = KickUnknownVector + KickCorrectionUnderRelaxation * KickCorrectionVector + + DO l = 1 , NoGasPocket + GasPocketNewVol%Array(l) = KickUnknownVector(2 * l - 1) + IF (IEEE_IS_NaN(GasPocketNewVol%Array(l))) CALL ErrorStop('Volume of this pocket is Not a Number:', l) + IF (GasPocketNewVol%Array(l) <= 0.d0) CALL Error('Volume of this pocket is Negative or Zero:', l) + GasPocketNewPress%Array(l) = KickUnknownVector(2 * l) + IF (IEEE_IS_NaN(GasPocketNewPress%Array(l))) CALL ErrorStop('Pressure of this Pocket is Not a Number:', l) + IF (GasPocketNewPress%Array(l) <= 0.d0) CALL ErrorStop('Pressure of this Pocket is Negative or Zero:', l) + END DO + + + !WRITE(*,*) 'GasPocketDeltaVol (gal)' , GasPocketDeltaVol(1) * 7.48 + !WRITE (*,*) 'GasPocketFlowInduced (gpm), GasPocketNewVol' , GasPocketFlowInduced(1), GasPocketNewVol(1) + !IF (Kchoke > 0.0) + !WRITE(*,*) ' New Vol (ft3), New Press (psi)', GasPocketNewVol(1), GasPocketNewPress(1) + + ELSE ! well haed is closed, so build up process or migration occurs + + !WRITE (*,*) 'GasPocketOldPress (before)' , GasPocketOldPress(1) + GasPocketNewPress%Array(1) = GasPocketOldPress%Array(1) * & + (REAL((GasPocketWeight%Array(1) + KickmdotACoef * KickmdotBCoef * dt) / (GasPocketWeight%Array(1) + KickmdotACoef * GasPocketOldPress%Array(1) * dt))) + !WRITE (*,*) 'GasPocketNewPress (after)' , GasPocketNewPress(1), ((GasPocketWeight(1) + KickmdotACoef * KickmdotBCoef * dt) / (GasPocketWeight(1) + KickmdotACoef * GasPocketOldPress(1) * dt)) + + + !WRITE (*,*) ' Well head is closed, GasPocketNewPress =' , GasPocketNewPress(1) + !WRITE (*,*) 'Old Press, Weight, A, B' , GasPocketOldPress(1), GasPocketWeight(1), KickmdotACoef, KickmdotBCoef + !WRITE (*,*) 'Numerator and denumerator Gas kick' , KickmdotACoef * KickmdotBCoef * dt , KickmdotACoef * GasPocketOldPress(1) * dt + + !WRITE (*,*) ' Gas Kick Volume (ft^3) = ' , GasPocketNewVol(1) + + END IF + + !DO l = 1 , NoGasPocket + GasPocketDeltaVol%Array(:) = GasPocketNewVol%Array(:) - GasPocketOldVol%Array(:) + GasPocketFlowInduced%Array(:) = (GasPocketDeltaVol%Array(:)) / dt * 448.8 ! gpm + !END DO + + GasKickPumpFlowRate = 0.0 + IF (NOT(KickOffBottom) .AND. WellHeadOpen) GasKickPumpFlowRate = GasPocketFlowInduced%Array(1) + + !WRITE (*,*) ' No Iteration, KickCorrectionVector =' , KickIteration , KickCorrectionVector(1) , KickCorrectionVector(2) + !WRITE (*,*) ' Kick Jacobian ', REAL(KickJacobian) + !WRITE (*,*) ' KickVandPFunction = ' , REAL(KickVandPFunction) + !WRITE (*,*) ' Kick Unknown Vector = ' , REAL(-KickUnknownVector) + + + + !WRITE (*,*) 'Gas Kick Bottom' + + + END SUBROUTINE + + + SUBROUTINE KickFunctionsCalculator(ExitValue , GasPocketNo , CalcMode) + + + USE KickVARIABLES + USE FricPressDropVars + USE Fluid_Flow_Startup_Vars + USE CError + USE , INTRINSIC :: IEEE_Arithmetic + + + IMPLICIT NONE + + REAL(8) :: ExitValue + INTEGER :: GasPocketNo , CalcMode + INTEGER :: x + INTEGER :: y + INTEGER :: z , i , j + + x = GasPocketFlowEl(GasPocketNo , 1) + IF (GasPocketNo < NoGasPocket) y = GasPocketFlowEl(GasPocketNo + 1 , 1) + i = StringLastEl + j = OpenholeFirstEl - 1 + + ! Case 1: gas pocket is completely in OP and STARTX of upper gas pocket is also + ! Case 2: gas pocket is completely in OP and STARTX of upper gas pocket is above Bit + ! Case 3: gas pocket is AROUNDBIT and so upper gas pocket is in ANN (or Choke line) + ! Case 4: gas pocket is completely in ANN and upper gas pocket is also + + ! CalcMode 1: KickVandPFunction between 2 pocket + ! CalcMode 2: KickVandPFunction for top gas pocket + ! CalcMode 3: KickJacobian between 2 Pocket + ! CalcMode 4: KickJacobian for top (last) gas pocket + ! CalcMode 5: Calculating pressure of bottom pocket based on upper pocket + + + IF (CalcMode == 1) THEN ! calculating pressure difference between two pocket, include static pressure difference and frictional + ! pressure difference, use in calculating 'KickVandPFunction' + ExitValue = KickUnknownVector(2 * GasPocketNo) - KickUnknownVector(2 * GasPocketNo + 2) + IF (x >= OpenholeFirstEl .AND. y < OpenholeFirstEl) THEN ! Case 2 , Case 3 + ExitValue = ExitValue - SUM(FlowEl(x : NumbEl)%StaticPressDiff) - SUM(FlowEl(x : NumbEl)%FricPressLoss) & + - SUM(FlowEl(AnnulusFirstEl : y)%StaticPressDiff) - SUM(FlowEl(AnnulusFirstEl : y)%FricPressLoss) + ELSE ! Case 1 , Case 4 + ExitValue = ExitValue - SUM(FlowEl(x : y)%StaticPressDiff) - SUM(FlowEl(x : y)%FricPressLoss) + END IF + + + ELSE IF (CalcMode == 2) THEN + ExitValue = KickUnknownVector(2 * GasPocketNo) - StandardPress - Kchoke * FlowEl(OpenholeFirstEl - 1)%Flowrate**2 + IF (x >= OpenholeFirstEl) THEN ! Gas Pocket is in Openhole + ExitValue = ExitValue - SUM(FlowEl(x : NumbEl)%StaticPressDiff) - SUM(FlowEl(x : NumbEl)%FricPressLoss) & + - SUM(FlowEl(AnnulusFirstEl : OpenholeFirstEl - 1)%StaticPressDiff) - SUM(FlowEl(AnnulusFirstEl : OpenholeFirstEl - 1)%FricPressLoss) + ELSE ! Gas Pocket is in Annulus + ExitValue = ExitValue - SUM(FlowEl(x : OpenholeFirstEl - 1)%StaticPressDiff) - SUM(FlowEl(x : OpenholeFirstEl - 1)%FricPressLoss) + END IF + + + ELSE IF (CalcMode == 3) THEN ! calculating derivative of pressure difference between two pocket, relative to change in flowrate + ! use in calculating 'KickJacobian' + IF (x >= OpenholeFirstEl .AND. y < OpenholeFirstEl) THEN ! Top kick STARTX is in Annulus + DO z = x , NumbEl ! open hole elements + CALL PartialDerivativeFricToFlowRate(z) + IF (IEEE_IS_NaN(FlowEl(z)%FricToQPartialDiff)) THEN + WRITE (*,*) ' FricToQPartialDiff , GenRe ' , x , FlowEl(z)%FricToQPartialDiff , FlowEl(z)%GenRe + WRITE (*,*) ' Op start, end, density, Q, mu' , FlowEl(z)%StartX, FlowEl(z)%EndX, FlowEl(z)%Density, FlowEl(z)%FlowRate, FlowEl(z)%mueff + CALL ErrorStop('NaN in calculating partial derivative') + END IF + END DO + DO z = AnnulusFirstEl , y ! Annulus elements + CALL PartialDerivativeFricToFlowRate(z) + IF (IEEE_IS_NaN(FlowEl(z)%FricToQPartialDiff)) THEN + WRITE (*,*) ' FricToQPartialDiff , GenRe ' , x , FlowEl(z)%FricToQPartialDiff , FlowEl(z)%GenRe + WRITE (*,*) ' Op start, end, density, Q, mu' , FlowEl(z)%StartX, FlowEl(z)%EndX, FlowEl(z)%Density, FlowEl(z)%FlowRate, FlowEl(z)%mueff + CALL ErrorStop('NaN in calculating partial derivative') + END IF + END DO + ExitValue = ExitValue - (SUM(FlowEl(x : NumbEl)%FricToQPartialDiff) + SUM(FlowEl(AnnulusFirstEl : y)%FricToQPartialDiff)) * 448.8 / dt + ELSE ! both pockets are one side of bit + DO z = x , y + CALL PartialDerivativeFricToFlowRate(z) + IF (IEEE_IS_NaN(FlowEl(z)%FricToQPartialDiff)) THEN + WRITE (*,*) ' FricToQPartialDiff , GenRe ' , x , FlowEl(z)%FricToQPartialDiff , FlowEl(z)%GenRe + WRITE (*,*) ' Op start, end, density, Q, mu' , FlowEl(z)%StartX, FlowEl(z)%EndX, FlowEl(z)%Density, FlowEl(z)%FlowRate, FlowEl(z)%mueff + CALL ErrorStop('NaN in calculating partial derivative') + END IF + END DO + ExitValue = ExitValue - SUM(FlowEl(x : y)%FricToQPartialDiff) * 448.8 / dt + END IF + + + ELSE IF (CalcMode == 4) THEN ! partial derivative of frictional pressure drop relative to flowrate for top gas pocket + ExitValue = - 2.d0 * Kchoke * FlowEl(OpenholeFirstEl - 1)%Flowrate * 448.8 / dt + IF (x >= OpenholeFirstEl) THEN ! kick STARTX is in openhole + DO z = x , NumbEl ! open hole elements + CALL PartialDerivativeFricToFlowRate(z) + IF (IEEE_IS_NaN(FlowEl(z)%FricToQPartialDiff)) THEN + WRITE (*,*) ' FricToQPartialDiff , GenRe ' , x , FlowEl(z)%FricToQPartialDiff , FlowEl(z)%GenRe + WRITE (*,*) ' Op start, end, density, Q, mu' , FlowEl(z)%StartX, FlowEl(z)%EndX, FlowEl(z)%Density, FlowEl(z)%FlowRate, FlowEl(z)%mueff + CALL ErrorStop('NaN in calculating partial derivative') + END IF + END DO + DO z = AnnulusFirstEl , OpenholeFirstEl - 1 ! Annulus elements + CALL PartialDerivativeFricToFlowRate(z) + IF (IEEE_IS_NaN(FlowEl(z)%FricToQPartialDiff)) THEN + WRITE (*,*) ' FricToQPartialDiff , GenRe ' , x , FlowEl(z)%FricToQPartialDiff , FlowEl(z)%GenRe + WRITE (*,*) ' Op start, end, density, Q, mu' , FlowEl(z)%StartX, FlowEl(z)%EndX, FlowEl(z)%Density, FlowEl(z)%FlowRate, FlowEl(z)%mueff + CALL ErrorStop('NaN in calculating partial derivative') + END IF + END DO + ExitValue = ExitValue - (SUM(FlowEl(x : NumbEl)%FricToQPartialDiff) + SUM(FlowEl(AnnulusFirstEl : OpenholeFirstEl - 1)%FricToQPartialDiff)) * 448.8 / dt + ELSE + DO z = x , OpenholeFirstEl - 1 ! Annulus elements + CALL PartialDerivativeFricToFlowRate(z) + IF (IEEE_IS_NaN(FlowEl(z)%FricToQPartialDiff)) THEN + WRITE (*,*) ' FricToQPartialDiff , GenRe ' , x , FlowEl(z)%FricToQPartialDiff , FlowEl(z)%GenRe + WRITE (*,*) ' Op start, end, density, Q, mu' , FlowEl(z)%StartX, FlowEl(z)%EndX, FlowEl(z)%Density, FlowEl(z)%FlowRate, FlowEl(z)%mueff + CALL ErrorStop('NaN in calculating partial derivative') + END IF + END DO + ExitValue = ExitValue - SUM(FlowEl(x : OpenholeFirstEl - 1)%FricToQPartialDiff) * 448.8 / dt + END IF + + + ELSE IF (CalcMode == 5) THEN + IF (x >= OpenholeFirstEl .AND. y < OpenholeFirstEl) THEN ! Gas Pocket is in Openhole and upper pocket is in annulus + !WRITE (*,*) 'x , y 1' , x, y + ExitValue = GasPocketNewPress%Array(GasPocketNo + 1) + SUM(FlowEl(x : NumbEl)%StaticPressDiff) + SUM(FlowEl(AnnulusFirstEl : y)%StaticPressDiff) + ELSE ! Both gas pockets are in Annulus or openhole + !WRITE (*,*) 'x , y 2' , x, y + ExitValue = GasPocketNewPress%Array(GasPocketNo + 1) + SUM(FlowEl(x : y)%StaticPressDiff) + END IF + END IF + + + + END SUBROUTINE + + + +SUBROUTINE NewGasKick + + USE KickVariables + Use TD_WellGeometry + Use CReservoirVariables + Use CFormationVariables + USE Fluid_Flow_Startup_Vars + USE PressureDisplayVARIABLES + USE FricPressDropVars + USE MudSystemVARIABLES + USE CMudPropertiesVariables + USE CError + USE , INTRINSIC :: IEEE_ARITHMETIC + + + !! Note: a subject that may be confusing is that when we use gauge pressure and when using absolute pressure?! + !! all stated pressure are gauge pressure, so I do like this. + !! only when we want to use a state equation (like ideal gas equation), we should use absolute equation and so I do this. + !! Thus gas pocket pressure are all absolute pressure. + + IMPLICIT NONE + + INTEGER :: i , j , k , l + + IF (NOT(ALLOCATED(GasPocketWeight%Array))) THEN ! 1st kick + WRITE (*,*) ' New Influx 1' + + NoGasPocket = 1 + NewInfluxNumber = NewInfluxNumber + 1 + + NewInfluxElementCreated = 0 + KickOffBottom = .FALSE. + + + CALL GasPocketOldPress%AddToFirst((BottomHolePress + StandardPress) * 1.d0) + CALL GasPocketNewPress%AddToFirst((BottomHolePress + StandardPress) * 1.d0) + CALL GasPocketOldTemp%AddToFirst(600.0) + CALL GasPocketNewTemp%AddToFirst(600.0) + CALL GasPocketOldVol%AddToFirst(0.d0) + CALL GasPocketNewVol%AddToFirst(0.d0) + CALL GasPocketdeltaVol%AddToFirst(0.0) + CALL GasPocketFlowInduced%AddToFirst(0.0) + CALL GasPocketModifiedVol%AddToFirst(0.0) + CALL GasPocketWeight%AddToFirst(0.0) + CALL GasPocketDensity%AddToFirst(2.0) + CALL GasPocketCompressibility%AddToFirst(0.98) + + ALLOCATE(KickJacobian(2 , 2) , OldKickJacobian(2 , 2) , KickVandPFunction(2) , KickUnknownVector(2) , KickCorrectionVector(2)) + + BottomHoleTemperature = 600 + KickFluxAvgPressure = (BottomHolePress + FormPressure) / 2 + StandardPress + KickFluxAvgTemperature = (FormTemperature + BottomHoleTemperature) / 2 + KickFluxAvgCompressibility = 0.98 + + !K_Aa = (5.8742362 * 10.**(-3) * KickFluxAvgTemperature**1.2288) / (511.1728532 + KickFluxAvgTemperature) + !K_Bb = 5.5565586 + (1000.01 / KickFluxAvgTemperature) + !K_Cc = 2.47862 - 0.12294 * K_Bb + GasKickSIDensity = KickFluxAvgPressure / (KickFluxAvgCompressibility * & + KickFluxAvgTemperature * GasType(KickGasType)%GasConstant) * Convpcftogpcm3 + GasKickDensity = GasKickSIDensity * 8.3523 + + !GasKickViscosity = K_Aa * EXP(K_Bb * GasKickSIDensity**K_Cc) + ! + !K_BHTpr = BottomHoleTemperature / KickTc + !K_BHPpr = (BottomHolePress + StandardPress) / KickPc + ! + !K_A_Bottomhole = 3.53 * K_BHPpr + !K_B_Bottomhole = 10.0**(0.9813 * K_BHTpr) + !K_C_Bottomhole = 0.274 * (K_BHPpr**2) + !K_D_Bottomhole = 10.0**(0.8157 * K_BHTpr) + ! + !BottomHoleCompressibility = 0.98 !1. - (K_A_Bottomhole / K_B_Bottomhole) + (K_C_Bottomhole / K_D_Bottomhole) + ! + !GasKickBg = 0.00504 * KickFluxAvgCompressibility * KickFluxAvgTemperature / KickFluxAvgPressure ![bbl/SCF] + + + !KickmdotACoef = 10.**(-8) * 1.15741d0 * 7.08d0 * FormPermeability * REAL(KickFormLength) * GasType(KickGasType)%StDensity / & + !(GasKickViscosity * GasKickBg * LOG(10000.d0)) + !IF (WellHeadOpen) KickmdotACoef = (1.0 + 2.0) * KickmdotACoef + + !KickmdotBCoef = FormPressure + StandardPress !! - Sum(static and friction pressure loss) of flow elements below gas pocket, see below + + !GasPocketWeight%Array(1) = GasKickDensity * 0.05 !KickmdotACoef * (KickmdotBCoef - GasPocketNewPress%Array(1)) * dt + GasPocketWeight%Array(1) = GasKickDensity * MinKickVol !1.0:seyyed gofte !KickmdotACoef * (KickmdotBCoef - GasPocketNewPress%Array(1)) * dt + + GasPocketNewVol%Array(1) = GasPocketCompressibility%Array(1) * GasType(KickGasType)%GasConstant * & + GasPocketNewTemp%Array(1) * GasPocketWeight%Array(1) / GasPocketNewPress%Array(1) + + GasPocketDeltaVol%Array(1) = 0.05 !GasPocketNewVol%Array(1) + GasPocketFlowInduced%Array(1) = (GasPocketDeltaVol%Array(1)) / dt * 448.8 ! gpm + GasKickPumpFlowRate = GasPocketFlowInduced%Array(1) + + WRITE (*,*) ' FormPressure , BottomHolePress' , FormPressure , BottomHolePress, GasKickDensity + WRITE (*,*) ' No Press(psia) Vol(gal) Weight(lbm) Flow Induced(gpm)' + DO i = 1 , NoGasPocket + WRITE (*,102) i , GasPocketNewPress%Array(i), GasPocketNewVol%Array(i) * Convft3toUSgal, GasPocketWeight%Array(i), GasPocketFlowInduced%Array(i) + END DO + + !ELSE IF (NoGasPocket < MaxGasPocket .AND. KickOffBottom .AND. (GasPocketNewVol%Array(1) > MinAllowableKickVol .OR. KickWasExitingThroughChoke)) THEN + ELSE IF (NoGasPocket < MaxGasPocket .AND. KickOffBottom .AND. (GasPocketNewVol%Array(1) > MinAllowableKickVol .OR. ANY(GasPocketFlowEl(1 , :) == OpenholeFirstEl - 1))) THEN + WRITE (*,*) ' New Influx', NoGasPocket + 1 + +102 FORMAT (I2, 4X, (F8.1), 3X, (F8.3), 2X, (F8.3), 8X, (F8.3)) + + + NoGasPocket = NoGasPocket + 1 + NewInfluxNumber = NewInfluxNumber + 1 + + NewInfluxElementCreated = 0 + KickOffBottom = .FALSE. + + CALL GasPocketOldPress%AddToFirst((BottomHolePress + StandardPress) * 1.d0) + CALL GasPocketNewPress%AddToFirst((BottomHolePress + StandardPress) * 1.d0) + CALL GasPocketOldTemp%AddToFirst(600.0) + CALL GasPocketNewTemp%AddToFirst(600.0) + CALL GasPocketOldVol%AddToFirst(0.d0) + CALL GasPocketNewVol%AddToFirst(0.d0) + CALL GasPocketdeltaVol%AddToFirst(0.0) + CALL GasPocketFlowInduced%AddToFirst(0.0) + CALL GasPocketModifiedVol%AddToFirst(0.0) + CALL GasPocketWeight%AddToFirst(0.0) + CALL GasPocketDensity%AddToFirst(2.0) + CALL GasPocketCompressibility%AddToFirst(0.98) + + DEALLOCATE(KickJacobian , OldKickJacobian , KickVandPFunction , KickUnknownVector , KickCorrectionVector) + + ALLOCATE(KickJacobian(2 * NoGasPocket , 2 * NoGasPocket) , OldKickJacobian(2 * NoGasPocket , 2 * NoGasPocket)) + ALLOCATE(KickUnknownVector(2 * NoGasPocket) , KickCorrectionVector(2 * NoGasPocket) , KickVandPFunction(2 * NoGasPocket)) + + + BottomHoleTemperature = 600 + KickFluxAvgPressure = (BottomHolePress + FormPressure) / 2 + StandardPress + KickFluxAvgTemperature = (FormTemperature + BottomHoleTemperature) / 2 + KickFluxAvgCompressibility = 0.98 + + !K_Aa = (5.8742362 * 10.**(-3) * KickFluxAvgTemperature**1.2288) / (511.1728532 + KickFluxAvgTemperature) + !K_Bb = 5.5565586 + (1000.01 / KickFluxAvgTemperature) + !K_Cc = 2.47862 - 0.12294 * K_Bb + GasKickSIDensity = KickFluxAvgPressure / (KickFluxAvgCompressibility * & + KickFluxAvgTemperature * GasType(KickGasType)%GasConstant) * Convpcftogpcm3 + GasKickDensity = GasKickSIDensity * 8.3523 + + !GasKickViscosity = K_Aa * EXP(K_Bb * GasKickSIDensity**K_Cc) + ! + !K_BHTpr = BottomHoleTemperature / KickTc + !K_BHPpr = (BottomHolePress + StandardPress) / KickPc + ! + !K_A_Bottomhole = 3.53 * K_BHPpr + !K_B_Bottomhole = 10.0**(0.9813 * K_BHTpr) + !K_C_Bottomhole = 0.274 * (K_BHPpr**2) + !K_D_Bottomhole = 10.0**(0.8157 * K_BHTpr) + ! + !BottomHoleCompressibility = 0.98 !1. - (K_A_Bottomhole / K_B_Bottomhole) + (K_C_Bottomhole / K_D_Bottomhole) + ! + !GasKickBg = 0.00504 * KickFluxAvgCompressibility * KickFluxAvgTemperature / KickFluxAvgPressure ![bbl/SCF] + ! + ! + !KickmdotACoef = 10.**(-8) * 1.15741d0 * 7.08d0 * FormPermeability * REAL(KickFormLength) * GasType(KickGasType)%StDensity / & + ! (GasKickViscosity * GasKickBg * LOG(10000.d0)) + !IF (WellHeadOpen) KickmdotACoef = (1.0 + 2.0) * KickmdotACoef + ! + !KickmdotBCoef = FormPressure + StandardPress !! - Sum(static and friction pressure loss) of flow elements below gas pocket, see below + + !GasPocketWeight%Array(1) = GasKickDensity * 0.05 !KickmdotACoef * (KickmdotBCoef - GasPocketNewPress%Array(1)) * dt + GasPocketWeight%Array(1) = GasKickDensity * MinKickVol !1.0:seyyed gofte !KickmdotACoef * (KickmdotBCoef - GasPocketNewPress%Array(1)) * dt + + GasPocketNewVol%Array(1) = GasPocketCompressibility%Array(1) * GasType(KickGasType)%GasConstant * & + GasPocketNewTemp%Array(1) * GasPocketWeight%Array(1) / GasPocketNewPress%Array(1) + + GasPocketDeltaVol%Array(1) = 0.05 !GasPocketNewVol%Array(1) + GasPocketFlowInduced%Array(1) = (GasPocketDeltaVol%Array(1)) / dt * 448.8 ! gpm + GasKickPumpFlowRate = GasPocketFlowInduced%Array(1) + + WRITE (*,*) ' FormPressure , BottomHolePress' , FormPressure , BottomHolePress, GasKickDensity + WRITE (*,*) ' No Press(psia) Vol(gal) Weight(lbm) Flow Induced(gpm)' + DO i = 1 , NoGasPocket + WRITE (*,102) i , GasPocketNewPress%Array(i), GasPocketNewVol%Array(i) * Convft3toUSgal, GasPocketWeight%Array(i), GasPocketFlowInduced%Array(i) + END DO + + ELSE ! no new kick, so mass of 1st kick should increase + GasPocketWeight%Array(1) = GasPocketweight%Array(1) + KickmdotACoef * (KickmdotBCoef - GasPocketNewPress%Array(1)) * dt + GasKickPumpFlowRate = GasPocketFlowInduced%Array(1) + + IF (NoGasPocket > 1 .OR. SecondaryKickWeight > 0.0) THEN + SecondaryKickWeight = SecondaryKickWeight + KickmdotACoef * (KickmdotBCoef - GasPocketNewPress%Array(1)) * dt + SecondaryKickVol = SecondaryKickWeight / GasReservoirDensity / 42.0 ! 42 USGal = 1bbl + END IF + + END IF + + +END SUBROUTINE + \ No newline at end of file diff --git a/FluidFlow/kick/Kick_VARIABLES.f90 b/FluidFlow/kick/Kick_VARIABLES.f90 new file mode 100644 index 0000000..b7efd7f --- /dev/null +++ b/FluidFlow/kick/Kick_VARIABLES.f90 @@ -0,0 +1,95 @@ +MODULE KickVARIABLES + + USE DynamicDoubleArray + USE DynamicIntegerArray + USE DynamicRealArray + + IMPLICIT NONE + + + REAL :: DrillStringSpeed ! drill string speed during surge and swab [ft/s] + + REAL :: ChokeDensity , OldChokeDensity ! density of fluid that exits through choke [ppg] + REAL :: ChokeMinDensity ! [ppg] + REAL :: MaxChokeDensityChange ! [ppg/min] + + + INTEGER :: TotalGasKicks ! Number of gas kicks enetered well + REAL :: GasKickMolarMass ! molar mass of gas kick [lbm/lbmole] + REAL :: GasKickBg ! Gas formation volume factor [bbl/SCF] + REAL :: GasResPressure , GasResTemperature , GasResCompressibility ! pressure [psi] , temperature [R] and compressibility [-] at reservoir condition + REAL :: GasReservoirDensity ! density of gas kick in reservoir condition [ppg] + REAL :: BottomHolePress , BottomHoleTemperature , BottomHoleCompressibility ! pressure [psi] , temperature [R] and compressibility [-] at bottom hole condition + REAL :: KickFluxAvgTemperature , KickFluxAvgPressure , KickFluxAvgCompressibility ! Average pressure [psia] and temperature [R] for calculating gas kick flux + REAL :: GasKickViscosity ! Gas kick viscosity at average condition [cp] + REAL :: GasKickSIDensity ! density of gas kick in average condition and in SI units [gr/cm^3] + REAL :: GasKickDensity ! [ppg] + REAL :: GasKickPumpFlowRate ! change of volume of gas kick in sense of flow rate [gpm] + REAL :: FormPressure , FormTemperature + REAL(8) :: KickFormLength , KickFormTopMD , KickFormDownMD ! [ft] + REAL :: FormPermeability ! formation permeability [mD] + REAL :: GasSpecGravity ! specific gravity of gas kick relative to air [-] + REAL :: KickTc , KickPc ! critical temperature [R] and pressure [psi] of gas kick + REAL :: KickTr , KickPr ! Reduced temperature and pressure of gas kick at reservoir condition + REAL :: K_BHTpr , K_BHPpr ! Reduced temperature and pressure of gas kick at bottom hole condition + REAL :: K_A_Res , K_B_Res , K_C_Res , K_D_Res ! Coefficients in calculating compressibility at reservoir condition + REAL :: K_A_Bottomhole , K_B_Bottomhole , K_C_Bottomhole , K_D_Bottomhole + ! Coefficients in calculating compressibility at bottomhole condition + REAL :: K_Aa , K_Bb , K_Cc ! Coefficient in calculating gas viscosity at reservoir condition + REAL :: MinKickVol ! minimum of kick volume at the beginning of entrance to wellbore [gal] + REAL :: MinAllowableKickVol ! minimum allowable kick volume [ft^3] + REAL :: SecondaryKickVol ! Volume of kicks other than first kick in reservoir condition [bbl] + REAL :: SecondaryKickWeight ! Weight of kicks other than first kick in reservoir condition [lbm] + + + REAL :: Kickmdot ! mass flow rate of kick [lbm/sec] + REAL :: ExitMass ! escaped mass from choke [lbm] + REAL :: KickmdotACoef ! coefficient in calculating mdot of kick, Eqn. 5 handnote [lbm/(sec.psi)] + REAL :: KickmdotBCoef ! coefficient in calculating mdot of kick, Eqn. 5 handnote [psi] + + LOGICAL :: KickFlux ! .TRUE. = Bottomhole pressure is lower than reservoir pressure and thus gas + ! enters the bottomhole. + LOGICAL :: KickInFluxConditions ! a set of conditions, when all are true, this variable will become true + LOGICAL :: WellHeadOpen ! .TRUE. = wellhead is open or flow on choke line + ! .FALSE. = wellhead is close and no fluid flow out + LOGICAL :: WellHeadWasOpen ! well Head Condition in last time step + LOGICAL :: WellToChokeManifoldWasOpen + LOGICAL :: KickOffBottom ! .TRUE. = kick starts to rise up + LOGICAL :: KickSinglePocket ! when 'MakeKickSinglePacket' is active, only one pocket of kick exists in the well. + LOGICAL :: SolvingEquationError + LOGICAL :: KickWasExitingThroughChoke + LOGICAL :: ChokeIsClosing + + INTEGER :: NoGasPocket ! number of gas pockets (not gas kick) in wellbore which may migrate or expand + INTEGER :: KickIteration ! the number of itertion for calculating pressure and flowrate, when kick is in the well + INTEGER :: KickType ! = 0 for gas kicks , = 1 for oil kicks and = 2 for water kicks + INTEGER :: KickGasType ! = 1 for methane , = 2 for Hydrogen sulfide + INTEGER :: ChokeKroneckerDelta ! if well to choke manifold is open and well to pit is closed ChokeKroneckerDelta = 1 + INTEGER :: MaxGasPocket ! = 1 if 'single pocket model' is on and = 15 if 'single pocket model' is off + + !!!!!!!!!!!!!!!!!!!!!!! Gas Pockets Data + TYPE(DynamicDoubleArrayType) :: GasPocketOldPress , GasPocketOldVol ! pressure and volume of gas pocket at the beginning of time step [psia , ft^3] + TYPE(DynamicDoubleArrayType) :: GasPocketNewPress , GasPocketNewVol ! pressure and volume of gas pocket at the end of time step [psia , ft^3] + TYPE(DynamicRealArrayType) :: GasPocketOldTemp , GasPocketNewTemp ! temperature at the beginning (old) and at the end of time step [R] + TYPE(DynamicRealArrayType) :: GasPocketFlowInduced , GasPocketDeltaVol ! flowrate in elements above gas pocket due to mass influx and expansion [gpm] + TYPE(DynamicRealArrayType) :: GasPocketModifiedVol ! in some situation in migration process, or entering kick in a new space type + ! such as entering annulus from openhole, or entering ckokeline from annulus, + ! volume of gas pocket changes due to calculation process, and thus volume of + ! gas pocket should be modified [10^-3 ft^3] + TYPE(DynamicRealArrayType) :: GasPocketWeight ! weight of pocket [lbm] + TYPE(DynamicRealArrayType) :: GasPocketDensity ! density of gas pocket [ppg] + TYPE(DynamicRealArrayType) :: GasPocketCompressibility ! compressibility as a measure of deviation from ideal gas behavior [-] + INTEGER , DIMENSION(:,:) , ALLOCATABLE :: GasPocketFlowEl ! This matrix makes relationship between gas pockets and flow elements, + ! Further information in SUBROUTINE GasPocketFlowElementTransformer + INTEGER , DIMENSION(:,:) , ALLOCATABLE :: tempGasPocketFlowEl ! a temperorary matrix using for data saving during GasPocketFlowEl manipulation + !INTEGER , DIMENSION(:) , ALLOCATABLE :: GasPocketGasType ! = 1 for methane , = 2 for Hydrogen Sulfide + + REAL(8) , DIMENSION(:,:) , ALLOCATABLE :: KickJacobian , OldKickJacobian ! a matrix in which jacibian elements stored + REAL(8) , DIMENSION(:) , ALLOCATABLE :: KickVandPFunction + REAL(8) , DIMENSION(:) , ALLOCATABLE :: KickUnknownVector ! (2*n - 1) elements are flowrate and (2*n) elements are pressure of pockets (n >= 1) + REAL , DIMENSION(:) , ALLOCATABLE :: KickCorrectionVector + REAL :: KickCorrectionUnderRelaxation ! under relaxation parameter for correcting gas Kick Unknown Vector (0,1) + ! = 0 means no correction between two step + ! = 1 for direct correcting and no under relaxation + + END MODULE \ No newline at end of file diff --git a/FluidFlow/utubevars.mod b/FluidFlow/utubevars.mod new file mode 100644 index 0000000000000000000000000000000000000000..389ee956287a5e99a8d3286785af86b1aad6b3df GIT binary patch literal 318 zcmV-E0m1$siwFP!000001I^M+Z-Ouw2k?78#d9kjT{nXE?htK4GMdnsEompi6Z4W;DL@|D_AU90z1L?u$@Mp z;2&%&i)a;CPDI%$NcSp>Ww~L-1&bD$N|Qy#PvuHh6iTr5JT0V1H>z5*UKze+yx3;& zw0kB<(|Yh96E#H-mE{lD5b)vRiSrx-R#I))F&0HxV;F#@H8NPzH|oCAzC}ZmhS%u% z?hIW5SdM2~Gb`)|#>xZ&qa1g>{3EHkUom$N>e1xiNma|Y8=k=FormationTopDepth) then !??????????????????????????????????????? + FormationNumber = i !??????????????????????????????????????? + end if !??????????????????????????????????????? + end do !??????????????????????????????????????? + + !do while (FormationTopDepth < Drilling_Depth) + ! FormationNumber = FormationNumber + 1 + ! FormationTopDepth = FormationTopDepth + Formations(FormationNumber)%Thickness + !end do + + !Bit_Class = BitDefinition%BitCode + !call bit_spec + + + ! $$$$$**$$$$$**$$$$$**$$$$$**$$$$$** Variables Initialization: *$$$$$**$$$$$**$$$$$**$$$$$**$$$$$ + Diameter_of_Bit = BitDefinition%BitSize ! unit : [in.] (Typical Range: 3.0 to 30.0) + Number_of_Bit_Nozzles = BitDefinition%BitNozzleNo ! (Typical Values: 1 to 10) + Diameter_of_Bit_Nozzle = BitDefinition%BitNozzleSize ! unit : [1/32 in.] (Typical Range: 8.0 to 32.0) + Critical_Mud_Density = Formations(FormationNumber)%PorePressureGradient/.465*9. ! unit : [ppg] or [lb/gal] (Typical Range: 0 to 10.0) + Critical_Weight_on_Bit = (Formations(FormationNumber)%ThresholdWeight/5.)-(.06*(Formations(FormationNumber)%ThresholdWeight-10.)) ! unit : [klb/in] (Typical Range: 0 to 10 ----> 0.6 to 2) + Mud_Viscosity = ActivePlasticViscosity !????????????????????????????????? + Mud_Density = ActiveDensity !????????????????????????????????? + Mud_Flowrate = 10. ![ppg]??????????????????????????????????????????????? from fluid module + Reynolds_Number = Mud_Flowrate*Mud_Density/(Mud_Viscosity*Number_of_Bit_Nozzles*Diameter_of_Bit_Nozzle) ! unit : [dimensionless] (Typical Range: 0.1 to 1000.0) + ! $$$$$**$$$$$**$$$$$**$$$$$**$$$$ End of Variable Initialization $$$$$**$$$$$**$$$$$**$$$$$**$$$$$ + + ! $$$$$**$$$$$**$$$$$**$$$$$**$$$$$** Main Calculations: *$$$$$**$$$$$**$$$$$**$$$$$**$$$$$ + x1 = 1. ! Drillability Variable + x2 = 10000. - Drilling_Depth ! First Compaction Vairable + x3 = (Drilling_Depth**0.69) * (Mud_Density - 9.) ! Second Compaction Vairable + x4 = Drilling_Depth * (Mud_Density - Critical_Mud_Density) ! Underbalance Drilling Variable + Condition = 1. + + Weight_on_Bit = TD_WeightOnBit/1000. ![klb] + !Weight_on_Bit = 10. + if ( Weight_on_Bit > Critical_Weight_on_Bit ) then + x5 = log( ( Weight_on_Bit - Critical_Weight_on_Bit ) / (4.*Diameter_of_Bit - Critical_Weight_on_Bit) ) + else + x5 = 0. + Condition = 0. + end if + + Rotary_Speed = RTable%Speed ![rpm] + !Rotary_Speed = 20. + Rotary_Speed = abs(Rotary_Speed) + if ( Rotary_Speed > 0. ) then + x6 = log(Rotary_Speed/100.) + else + x6 = 0. + Condition = 0. + end if + x7 = -Bit_Wearing + x8 = Reynolds_Number + ! -----**-----**-----**-----**-----** Rate_of_Penetration Model Coefficients: *-----**-----**-----**-----**----- + a1 = log(Formations(FormationNumber)%Drillablity) !3.0643e+00 + a2 = 1.2799e-04 + a3 = 1.7952e-04 + a4 = 4.0656e-05 + a5 = 2.9021e-01 + a6 = 9.4882e-02 + a7 = 2.1837e-01 + a8 = 4.4915e-01 + dt = 0.1 ![s] + Tou_H = Formations(FormationNumber)%Abrasiveness ! hr + ! -----**-----**-----**-----**--- End of Rate_of_Penetration Model Coefficients: ---**-----**-----**-----**----- + + !if ( Weight_on_Bit>0. .and. Rotary_Speed>0. .and. TD_DrillStems(1)%ComponentType==0 ) then !??????????????????????????????????????? + Rate_of_Penetration = Condition*exp( a1*x1+a2*x2+a3*x3+a4*x4+a5*x5+a6*x6+a7*x7+a8*x8 ) + !end if !??????????????????????????????????????? + + IF (Rotary_Speed > 0.) THEN + Bit_Torque = ( 3.79 + 19.17*sqrt( Rate_of_Penetration / (Rotary_Speed*Diameter_of_Bit)) ) * Diameter_of_Bit * Weight_on_Bit * ( 1. / ( 1 + 0.00021*Drilling_Depth) ) + else + Bit_Torque = 0. + endif + + if ( (Weight_on_Bit/Diameter_of_Bit)<(w_d_max) ) then + Bit_Wearing = Bit_Wearing +( (dt*H3/Tou_H)*((Rotary_Speed/100.)**H1)*((w_d_max-4.)/(w_d_max-(Weight_on_Bit/Diameter_of_Bit)))*((1.+(H2/2.))/(1.+(H2*Bit_Wearing))) ) + else + Bit_Wearing = 0.0d0 !( Typical Range: 0<=Bit_Wearing<=1 ) + end if + + !Drilling_Depth = Drilling_Depth + (Rate_of_Penetration*dt) + + + !print*, 'exp=' , exp( a1*x1 + a2*x2 + a3*x3 + a4*x4 + a5*x5 + a6*x6 + a7*x7 + a8*x8 ) + ! + !print*, 'Bit_Torque=' , Bit_Torque + !print*, 'Weight_on_Bit=' , Weight_on_Bit + ! + !print*, 'Critical_Weight_on_Bit=' , Critical_Weight_on_Bit + !print*, 'Condition=' , Condition + !print*, 'FormationNumber=' , FormationNumber + !print*, 'No_of_Formations=' , No_of_Formations + !print*, 'Bit_Wearing=' , Bit_Wearing + + + if(IsStopped == .true.) then + EXIT loop1 + end if + + CALL DATE_AND_TIME(values=ROP_EndTime) + ROP_SolDuration=100-(ROP_EndTime(6)*60000+ROP_EndTime(7)*1000+ROP_EndTime(8)-ROP_StartTime(6)*60000-ROP_StartTime(7)*1000-ROP_StartTime(8)) + if(ROP_SolDuration > 0.0d0) then + CALL sleepqq(ROP_SolDuration) + end if + + + end do loop1 + + +end subroutine Calculate_ROP + + + + + + + + + + subroutine bit_spec + + use sROP_Other_Variables + use sROP_Variables + + !H1=1.9 + !H2=7. + !H3=1. + !w_d_max=7. + + filename = 'Bit_Database.TXT' + open (UNIT=3, FILE=filename ) + !print*, 'w_d_max1=' , w_d_max + !print*, 'name1=' , name + !openif: if ( status == 0 ) then + read (3,*,IOSTAT=status) ! Get next value + readloop: do i=1,14 + read (3,*,IOSTAT=status) name, H1, H2, H3, w_d_max ! Get next value + !print*, 'w_d_max=' , w_d_max + !print*, 'name=' , name + if ( status /= 0 ) exit ! EXIT if not valid. + if ( name == bit_Class/10) exit + end do readloop + !endif openif + +end subroutine bit_spec + +!end module sROP_Module \ No newline at end of file diff --git a/Rop/sROP_Other_Variables.f90 b/Rop/sROP_Other_Variables.f90 new file mode 100644 index 0000000..d979fd2 --- /dev/null +++ b/Rop/sROP_Other_Variables.f90 @@ -0,0 +1,31 @@ +module sROP_Other_Variables + +implicit none +integer :: FormationNumber +real(8) :: FormationTopDepth, Condition +CHARACTER(len=20) :: filename ! Name of file to open +INTEGER :: name , status ! I/O status +REAL(8) :: H1, H2, H3, w_d_max ! The real value read in +! $$$$$**$$$$$**$$$$$**$$$$$**$$ End of Introduction of Module Inputs $$**$$$$$**$$$$$**$$$$$**$$$$$ +character(len = 20) :: Formation_Type = 'Shale' ! Default = Shale +! -----**-----**-----**-----**-----** Bit Type: *-----**-----**-----**-----**----- +Integer :: Bit_Class ! Default = Rollar Cone +real(8) :: Diameter_of_Bit ! unit : [in.] (Typical Range: 3.0 to 30.0) +Integer :: Number_of_Bit_Nozzles ! (Typical Range: 1 to 10) +real(8) :: Diameter_of_Bit_Nozzle ! unit : [1/32 in.] (Typical Values: 8.0 to 32.0) +! -----**-----**-----**-----**-----** End of Bit Type: *-----**-----**-----**-----**----- +real(8) :: Critical_Mud_Density ! unit : [ppg] or [lb/gal] (Typical Range: 0 to 10.0) +real(8) :: Critical_Weight_on_Bit ! unit : [klb] (Typical Range: 0 to 10) +real(8) :: Reynolds_Number ! unit : [klb] (Typical Range: 0.1 to 1000.0) +! -----**-----**-----**-----**-----** Other Rate_of_Penetration Model Variables: *-----**-----**-----**-----**----- +real(8) :: x1, x2, x3, x4, x5, x6, x7, x8 +real(8) :: f1, f2, f3, f4, f5, f6, f7, f8 +real(8) :: a1, a2, a3, a4, a5, a6, a7, a8 +real(8) :: Br_Coef +real(8) :: dt , Tou_H +integer,dimension(8) :: ROP_StartTime , ROP_EndTime +! -----**-----**-----**-----**--- End of Other Rate_of_Penetration Model Variables ---**-----**-----**-----**----- +real(8), parameter :: PI = 3.1415926 ! PI Number +! $$$$$**$$$$$**$$$$$**$$$$$**$$$$$** End of Variable Definition *$$$$$**$$$$$**$$$$$**$$$$$**$$$$$ + +end module sROP_Other_Variables \ No newline at end of file diff --git a/Rop/sROP_Variables.f90 b/Rop/sROP_Variables.f90 new file mode 100644 index 0000000..540acf6 --- /dev/null +++ b/Rop/sROP_Variables.f90 @@ -0,0 +1,10 @@ +module sROP_Variables + +implicit none +real(8) :: Time_Interval_Ratio , Weight_on_Bit , Rotary_Speed , Mud_Density , FormationMud_Density , Mud_Viscosity , Mud_Flowrate, Bit_Flowrate , Drilling_verticalDepth , Bit_Wearing , Rate_of_Penetration, Bit_Torque , ECD , BottomHole_Pressure , Drilling_Depth +real(8) :: Bearing_Wear , JetImpact_Force +real(8) :: Old_ROPDepth , Old_ROPValue(4) , Set_ROPGauge +integer :: Formation_Number , Bit_Number , No_of_Formations + + +end module sROP_Variables \ No newline at end of file diff --git a/Rop/srop_other_variables.mod b/Rop/srop_other_variables.mod new file mode 100644 index 0000000000000000000000000000000000000000..b7afed5fd3498992f7bd3e48e0f940b8b8c7998c GIT binary patch literal 1179 zcmV;M1Z4XkiwFP!000001MQk!bK*7>hVS(&bZ5BO9pMi!y{Ze|Ez@8#2GZ^fGa3im z#T~F2+ib}G`o5M*0>NbIwo7%phaJ=ja?he(-}?;COVCN4s@QKgUIx<{8yG zmPVIF99D5elOo^HA2we=(8~)+Pqk!Va{SMZV>^=+MuH z4t+M^-U&v|Pj}Z@Fd9$pMuXAp-PE~v>nDF*Sl!v|NEogmCWPrK3bP>0P*GSH!b}x~ z^&rerQJ4*3T@{7(A*`pOunvPVTS;Xdsy(C?U#`QlyoJE}l8NPT6*4s0g z;KoA%aKwp{y$BuvYEfF#R!M>2!m@z8Ww_>>UBsgpxUHV9)k;pa(r?vD8rXWK)jHDp z7^lClDxPN?vs6j7;762(o4A6cJW*C=?@T7o@-JW3v65SKfr2nS_5{Z)jpAIf0={nAUhFjkt8oRA_T&#r|nHpcVZwp zF_8WP0~^P#e`H{`+dRa@Ei61yPF^d&gmi-)iLLT&6mP4QioS;dTCJ2Mya8IRlq9?X zTCJ2Mya8I>YHj{vW){z}Ytan!X8^y|G)bd*5xmUzXEL=V|P{ zp_@k1wVC|+u_G4NCSVv~VG%!N`8q23?bg%3y+DC$wWc_Ws`Pu$Y&sl`U2i(_y~a6C znkGz5cK0`VBYGY3FaX+NV6JAQEfIOrK_WQcmmO4AVNw0xMNM5~vWs2vW>1a%;rzwVDlr7_$J&dDGz|&E9q{T z0P|i+cgqBS_e#23CJ?$;GN59DntLS!DkgBXS2Cbtff9Qq11c7%uvapmQh&)od^dnm zL+0WcHD&IbQA_5U8STp4E~7n}OJ&rSxl2a-GF8Y#((ouX$Ee8F9g<+E>L*DjG#D3> zJV4h;0_asz1xKxhBnFzhqQuX`9XsI&jOJer9iXzq@yzC(hg%+7R;~j~Hy3$U>fgrgt^)1@j~e zU@dqI{>SB1@F(WWY`K_OTYWqG-#khtF;(9*6`E42@m!cd-B!3w(PlS z&q=+UI+IcT4y^I?-Wpl+>)CK&0tH%8IOgyk`o$Wra)Dswq9Ua~(ThE#jc}oK*Ad?d z^r~8LoeD0=;}v^nzZF~VOb0qIboIJ8R=Njk0(L7v$;J0vG2itnv|SZ>YO&oQ8<&#D zk33>-Dp;1~LNWjKK?_6}MMc^MER~OH;SCP(usX`n_o7!~l4DHxQ%uspJeMFk1&#T^ zn|*f#MgGEf$55n#(m`8u5tkC7aCOm*1I{=PFbqYO^ z$H1*MHtm@;u`h6v!$PCu-TYSl1hhsIdo~|pCHvJ0;7ZfA@+@Azp;K-+^@@S-ii9kp zD`g3jqKq%Kj?O?O6I^=Y+09bM-mbInONaWEF+Q~)i$Gj2Im6bcyjyjO1k>K z=Q=QySH1oX9f}reDs#g`GJ$#Nmhq>U3sJmwEZjUw7aJ)YH`Kx_hVRDcO~GgmycF8U zV427H1!GS`bTx{1V3|@L<3Prno+L@wVCl@+Fd}o~LztG%n zbUkS5kVdb8w(g0-qp^2RSJ8e$8ajryep5ZrHn>nb(fyP(Di+%GW}QHraT-c!ZIkm^ Wfv-9zv53a*75M>~^quHcp;QpB3)Hcq(e{^f<$)x{5s)Aqz-@cZKafN$lEH}5aj Q*3m_=Z=$W%hi+H;1RWV_BLDyZ literal 0 HcmV?d00001 diff --git a/SimulationCore2.vfproj b/SimulationCore2.vfproj new file mode 100644 index 0000000..d51b161 --- /dev/null +++ b/SimulationCore2.vfproj @@ -0,0 +1,511 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Simulator.f90 b/Simulator.f90 new file mode 100644 index 0000000..d61501e --- /dev/null +++ b/Simulator.f90 @@ -0,0 +1,150 @@ +module Simulator + use Bop + use PumpsMain + use RopMain + use RotaryTableMain + use DrawworksMain + use FluidFlowMain + use TorqueDragMain + use MudSystemMain + use PipeRams1Main + use PipeRams2Main + use KillLineMain + use ChokeLineMain + use BlindRamsMain + use AnnularMain + use TopDriveMain + use GeoMain + use COperationScenariosMain + use :: json_module, rk => json_rk + + implicit none + real :: t0, dt, tf, mu + real(kind=rk), allocatable :: x0(:) + type(json_file) :: json + logical :: is_found + +contains + subroutine Simulate + integer :: t + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + t=0 + do while (t<10) + !!read variable from shared file + call read_variables() + + !!Location: ./bop + !! Variables: + !! Nothing exist in rop_step or even ropMainBody! + !! Tarmigh, Now merged with FluidFlow + call Rop_Step() + + !!Location: ./Equipment/BopStack + !! Rafiee, nothing changed + call BopStack_Step() + + !! Location: /Equipment/Pumps + !! Variables: + !! Does not have step function + !! Call Pump_StartUp in the start + !! Why we have a infinite loop (loop2) in step? Must be rewritten + !! Tarmigh, now is rewritten + call Pump1_Step() + call Pump2_Step() + + !! Location ./Equipment/Rotarytable + !! Variables: + !! Does not have step function + !! Call RTable_StartUp in the start + !! Again has a loop in each step + !! Tarmigh, now is rewritten + call RotaryTable_Step() + + !! Location ./Equipment/Drawworks + !! Variables: + !! Does not have step function + !! Call ..._StartUp in the start + !! Again has a loop in each step + !! Tarmigh, now is rewritten + call Drawworks_Step() + + !! Empty nothing called + !! Merged in FluidFlow + call TorqueDrag_Step() + + !! Location: ./Equipment/MudSystem + !! Variables: MudSystem_variables.f90 and MudSystem.f90 + !! Step function simply calls LineupAndPath in MudSystem.f90 + !! had not startUp + !! Rafiee + call MudSystem_Step() + + !! Location ./Equipment/BopStack + !! Variables: VARIABLES,CBopStackVariables,CBopControlPanelVariables,CEquipmentsConstants + !! Step function added, only call PIPE_RAMS1 and 2 function + !! BOP_StartUp commented + !! Rafiee + call PipeRams1_Step() + call PipeRams2_Step() + + + !! Location ./Equipment/BopStack + !! Variables: VARIABLES,CBopStackVariables,CBopControlPanelVariables,CEquipmentsConstants,CAccumulatorVariables,CSimulationVariables + !! Step function added, only call PIPE_RAMS1 and 2 function + !! BOP_StartUp commented + !! Rafiee + call KillLine_Step() + + !! Probably like other bopstack equipments + !! Rafiee + call ChokeLine_Step() + call BlindRams_Step() + call Annular_Step() + + !!Tarmigh. Step must rewrittem + call TopDrive_Step() + + !!Empty + call Geo_Step() + + !! Sheikh + call FluidFlow_Step() + + !! Ahmadi + call OperationScenarios_Step() + + !! Write variables to shared files + call write_variables() + + print *,"t=",t + t = t + 1 + end do + end subroutine Simulate + + subroutine write_variables + + end subroutine + + subroutine read_variables + call json%initialize() + + ! Load the file. + call json%load_file('config.json'); if (json%failed()) stop + + call json%get('t0', t0, is_found); if (.not. is_found) return + call json%get('dt', dt, is_found); if (.not. is_found) return + call json%get('tf', tf, is_found); if (.not. is_found) return + call json%get('mu', mu, is_found); if (.not. is_found) return + call json%get('x0', x0, is_found); if (.not. is_found) return + + ! Output values. + if (is_found) then + print *, t0, dt, tf, mu + print *, x0 + end if + + ! Clean up. + call json%destroy() + end subroutine + +end module Simulator diff --git a/Text1.txt b/Text1.txt new file mode 100644 index 0000000..7c3628c --- /dev/null +++ b/Text1.txt @@ -0,0 +1 @@ +1- \ No newline at end of file diff --git a/TorqueDrag/TD_DrillingSubs/MeshGeneration_FluidModule.f90 b/TorqueDrag/TD_DrillingSubs/MeshGeneration_FluidModule.f90 new file mode 100644 index 0000000..2669f0e --- /dev/null +++ b/TorqueDrag/TD_DrillingSubs/MeshGeneration_FluidModule.f90 @@ -0,0 +1,516 @@ +subroutine MeshGeneration_FluidModule + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_StringConnectionData + Use GeoElements_FluidModule + Use CPumpsVariables + Use CStringConfigurationVariables + Use CBopStackVariables + !Use Drawworks_VARIABLES , only: Drawworks + + implicit none + + Integer :: ii , jj , semijj , kk , k , m , s + Integer :: ElementsCount , StringConfigCount + REAL(8) :: mm , nn , dl , StartAngle , EndAngle + REAL(8) :: A(30) !?????????10 + REAL(8) :: TD_ElementLength + + + + + A = 0.d0 + A(1) = AboveAnnularHeight ! WellHead[ft] + jj = 1 + + + + + + + +!==================================================== +! Mesh Generation of DrillStem Components +!==================================================== + + !TD_StringConfigurationCount = StringConfigurationCount !??????????? + StringConfigCount = TD_StringConfigurationCount + if (allocated(F_String)) Deallocate(F_String) + if (TD_DrillStem(1)%ComponentType==0) then + Allocate (F_String(StringConfigCount-1)) + else + Allocate (F_String(StringConfigCount)) + end if + + + if (TD_DrillStem(1)%ComponentType==0) then + ElementsCount = 1 + Do ii=1,(StringConfigCount-1) + F_String(ii)%ID = TD_DrillStem(ii+1)%Id*12.d0 ![inch] + F_String(ii)%OD = TD_DrillStem(ii+1)%Od*12.d0 ![inch] + F_String(ii)%FirstElement = ElementsCount+1 + F_String(ii)%LastElement = F_String(ii)%FirstElement+(TD_DrillStem(ii+1)%Numbs-1) + F_String(ii)%ElType = TD_DrillStem(ii+1)%ComponentType + ElementsCount = F_String(ii)%LastElement + End Do + StringConfigCount = StringConfigCount-1 + else + ElementsCount = 0 + Do ii=1,StringConfigCount + F_String(ii)%ID = TD_DrillStem(ii)%Id*12.d0 ![inch] + F_String(ii)%OD = TD_DrillStem(ii)%Od*12.d0 ![inch] + F_String(ii)%FirstElement = ElementsCount+1 + F_String(ii)%LastElement = F_String(ii)%FirstElement+(TD_DrillStem(ii)%Numbs-1) + F_String(ii)%ElType = TD_DrillStem(ii)%ComponentType + ElementsCount = F_String(ii)%LastElement + End Do + end if + + + Do ii=1,StringConfigCount + F_String(ii)%TopDepth = TD_DrillStems(F_String(ii)%LastElement)%TopDepthIni ![ft] + F_String(ii)%DownDepth = TD_DrillStems(F_String(ii)%FirstElement)%DownDepthIni ![ft] + + if (F_String(ii)%DownDepth>A(1)) then + jj = jj+1 + A(jj) = F_String(ii)%DownDepth + end if + End Do + + + + !=========> Removed Volume Calculation in DrillStem + TD_ElementLength = F_String(StringConfigCount)%DownDepth-F_String(StringConfigCount)%TopDepth + if ( StringConfigCount==TD_PreCount ) then + if ( TD_PreElementLength>TD_ElementLength ) then + TD_RemoveVolume = (TD_PreElementLength-TD_ElementLength)*((pi*((F_String(StringConfigCount)%ID/12.d0)**2))/4.d0) ![ft^3] + else + TD_RemoveVolume = 0.d0 + end if + else if ( StringConfigCount Out of Well Intervals + F_Interval(1)%StartTVD = 0.0d0 !?????????????? + F_Interval(1)%EndTVD = -TD_ConnectionHeight + F_Interval(1)%StartAngle = 0.d0 !??????????????????????? + F_Interval(1)%EndAngle = 0.d0 !??????????????????????? + OutOfWellIntervalCounts = 1 + Do ii= 2 , StringConfigCount+1 + if ( F_Interval(ii)%StartDepth<=0.d0 ) then + F_Interval(ii)%StartTVD = F_Interval(ii)%StartDepth + F_Interval(ii)%StartAngle = 0.0d0 + end if + if ( F_Interval(ii)%EndDepth<=0.d0 ) then + F_Interval(ii)%EndTVD = F_Interval(ii)%EndDepth + F_Interval(ii)%EndAngle = 0.0d0 + OutOfWellIntervalCounts = OutOfWellIntervalCounts+1 + end if + End Do + + + !=========> + if (allocated(TVD)) Deallocate(TVD) + Allocate (TVD(jj)) + if (allocated(Angle)) Deallocate(Angle) + Allocate (Angle(jj)) + TVD(1) = TD_WellTotalVerticalLength !????? + !print*, 'TD_WellTotalVerticalLength=' ,TD_WellTotalVerticalLength + TVD(jj) = AboveAnnularHeight ! WellHead[ft] !0.d0 ???????????????? + + k = 1 + mm = 0.d0 + nn = 0.d0 + EndAngle = TD_WellGeo(1)%StartAngle !??????????????? + Angle(jj) = EndAngle + Do ii = jj-1,1,-1 !???1or2 + do kk = k, TD_WellIntervalsCount + StartAngle = EndAngle + if ( MD(ii)>TD_WellGeo(kk)%TopDepth ) then + if ( MD(ii)>TD_WellGeo(kk)%DownDepth ) then + dl = TD_WellGeo(kk)%DownDepth-nn ![ft] + nn = TD_WellGeo(kk)%DownDepth + if ( TD_WellGeo(kk)%HoleType==0 ) then + EndAngle = StartAngle + !print*, 'StartAngle1=' ,ii , kk, StartAngle + !print*, 'EndAngle1=' ,ii , kk, EndAngle + TVD(ii) = mm+(dl*cos(TD_WellGeo(kk)%StartAngle)) ![ft] + Angle(ii) = EndAngle + !print*, 'TVD(ii)1=' ,ii , kk, TVD(ii) + else if ( TD_WellGeo(kk)%HoleType==1 ) then + EndAngle = StartAngle+(dl/TD_WellGeo(kk)%RCurvature) !????????????????? + !print*, 'StartAngle2=' ,ii , kk, StartAngle + !print*, 'EndAngle2=' ,ii , kk, EndAngle + TVD(ii) = mm+(TD_WellGeo(kk)%RCurvature*sin(abs(EndAngle)-abs(StartAngle))*cos(abs(StartAngle)))-(TD_WellGeo(kk)%RCurvature*(1.-cos(abs(EndAngle)-abs(StartAngle)))*sin(abs(StartAngle))) + !TVD(ii) = mm+(TD_WellGeo(kk)%RCurvature*sin(abs(EndAngle)-abs(StartAngle))) + Angle(ii) = EndAngle + !print*, 'TVD(ii)2=' , ii , kk, TVD(ii) + else if ( TD_WellGeo(kk)%HoleType==2 ) then + EndAngle = StartAngle-(dl/TD_WellGeo(kk)%RCurvature) !????????????????? + !print*, 'StartAngle22=' ,ii , kk, StartAngle + !print*, 'EndAngle22=' ,ii , kk, EndAngle + TVD(ii) = mm+(TD_WellGeo(kk)%RCurvature*sin(abs(abs(EndAngle)-abs(StartAngle)))*cos(abs(StartAngle)))+(TD_WellGeo(kk)%RCurvature*(1.-cos(abs(abs(EndAngle)-abs(StartAngle))))*sin(abs(StartAngle))) + !TVD(ii) = mm+(TD_WellGeo(kk)%RCurvature*sin(abs(EndAngle)-abs(StartAngle))) + Angle(ii) = EndAngle + !print*, 'TVD(ii)22=' , ii , kk, TVD(ii) + end if + mm = TVD(ii) + else + dl = MD(ii)-nn + nn = MD(ii) + if ( TD_WellGeo(kk)%HoleType==0 ) then + EndAngle = StartAngle + !print*, 'StartAngle3=' ,ii , kk, StartAngle + !print*, 'EndAngle3=' ,ii , kk, EndAngle + TVD(ii) = mm+(dl*cos(TD_WellGeo(kk)%StartAngle)) + Angle(ii) = EndAngle + !print*, 'TVD(ii)3=' ,ii , kk, TVD(ii) + else if ( TD_WellGeo(kk)%HoleType==1 ) then + EndAngle = StartAngle+(dl/TD_WellGeo(kk)%RCurvature) !??????????????????? + !print*, 'StartAngle4=' ,ii , kk, StartAngle + !print*, 'EndAngle4=' ,ii , kk, EndAngle + TVD(ii) = mm+(TD_WellGeo(kk)%RCurvature*sin(abs(EndAngle)-abs(StartAngle))*cos(abs(StartAngle)))-(TD_WellGeo(kk)%RCurvature*(1.-cos(abs(EndAngle)-abs(StartAngle)))*sin(abs(StartAngle))) + Angle(ii) = EndAngle + !TVD(ii) = mm+(TD_WellGeo(kk)%RCurvature*sin(abs(EndAngle)-abs(StartAngle))) + !print*, 'mm=' ,mm + !print*, 'TVD(ii)4=' ,ii , kk, TVD(ii) + else if ( TD_WellGeo(kk)%HoleType==2 ) then + EndAngle = StartAngle-(dl/TD_WellGeo(kk)%RCurvature) !??????????????????? + !print*, 'StartAngle44=' ,ii , kk, StartAngle + !print*, 'EndAngle44=' ,ii , kk, EndAngle + TVD(ii) = mm+(TD_WellGeo(kk)%RCurvature*sin(abs(abs(EndAngle)-abs(StartAngle)))*cos(abs(StartAngle)))+(TD_WellGeo(kk)%RCurvature*(1.-cos(abs(abs(EndAngle)-abs(StartAngle))))*sin(abs(StartAngle))) + Angle(ii) = EndAngle + !TVD(ii) = mm+(TD_WellGeo(kk)%RCurvature*sin(abs(EndAngle)-abs(StartAngle))) + !print*, 'mm=' ,mm , (TD_WellGeo(kk)%RCurvature*sin(abs(abs(EndAngle)-abs(StartAngle)))*cos(abs(StartAngle)))+(TD_WellGeo(kk)%RCurvature*(1.-cos(abs(abs(EndAngle)-abs(StartAngle))))*sin(abs(StartAngle))) + !print*, 'TVD(ii)44=' ,ii , kk, TVD(ii) + end if + mm = TVD(ii) + k = kk + exit + end if + end if + end do + End Do + + + + !if (OutOfWellIntervalCounts==1) then + ! s = 2 + !else + ! s = OutOfWellIntervalCounts + !end if + ! + + Do ii = (OutOfWellIntervalCounts+1),F_IntervalsTotalCounts + do kk = jj,1,-1 + if ( F_Interval(ii)%StartDepth==MD(kk) ) then + F_Interval(ii)%StartTVD = TVD(kk) ![ft] + F_Interval(ii)%StartAngle = Angle(kk) ![rad] + end if + if ( F_Interval(ii)%EndDepth==MD(kk) ) then + F_Interval(ii)%EndTVD = TVD(kk) ![ft] + F_Interval(ii)%EndAngle = Angle(kk) ![rad] + end if + end do + End Do + + + + !Do ii=1,(F_IntervalsTotalCounts) + ! print*, 'F_Interval(ii)%StartTVD=' , ii , F_Interval(ii)%StartTVD + ! print*, 'F_Interval(ii)%EndTVD=' , ii , F_Interval(ii)%EndTVD + ! print*, 'F_Interval(ii)%StartAngle=' , ii , F_Interval(ii)%StartAngle + ! print*, 'F_Interval(ii)%EndAngle=' , ii , F_Interval(ii)%EndAngle + !end do + ! + ! + !Do ii=1,TD_WellIntervalsCount + ! print*, 'TD_WellGeo(kk)%TopDepth=' , ii , TD_WellGeo(ii)%TopDepth + ! print*, 'TD_WellGeo(kk)%DownDepth=' , ii , TD_WellGeo(ii)%DownDepth + ! print*, 'TD_WellGeo(kk)%HoleType=' , ii , TD_WellGeo(ii)%HoleType + ! print*, 'TD_WellGeo(kk)%RCurvature=' , ii , TD_WellGeo(ii)%RCurvature + ! print*, 'TD_WellGeo(kk)%EndAngle=' , ii , TD_WellGeo(ii)%EndAngle + ! print*, 'TD_WellGeo(kk)%StartAngle=' , ii , TD_WellGeo(ii)%StartAngle + !end do + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_DrillingSubs/TD_AddComponents.f90 b/TorqueDrag/TD_DrillingSubs/TD_AddComponents.f90 new file mode 100644 index 0000000..5246b34 --- /dev/null +++ b/TorqueDrag/TD_DrillingSubs/TD_AddComponents.f90 @@ -0,0 +1,314 @@ +subroutine TD_AddComponents + + Use CStringConfigurationVariables + Use CStringUpdateVariables + Use CSafetyValveEnumVariables + Use CIbopEnumVariables + Use COperationConditionEnumVariables + Use CKellyConnectionEnumVariables + Use CElevatorConnectionEnumVariables + Use CHoistingVariables + Use CTdsConnectionModesEnumVariables + Use CTdsElevatorModesEnumVariables + Use TD_DrillStemComponents + Use TD_WellGeometry + Use TD_GeneralData + Use TD_StringConnectionData + + + + implicit none + + integer :: i , kk , TD_NumOfAddedComponents + + + + + + + +!==================================================== +! Add Single +!==================================================== + + if ( Get_StringUpdate() == STRING_UPDATE_ADD_SINGLE ) then + kk = 0 + Do i= TD_DrillStemComponentsNumbs , 1 , -1 + if (TD_DrillStems(i)%ComponentType==3) then + kk = i + exit + end if + End Do + ! DrillStems Array: + TD_NumOfAddedComponents = 1 + Do i= (TD_DrillStemComponentsNumbs+1) , (TD_DrillStemComponentsNumbs+TD_NumOfAddedComponents) + TD_DrillStems(i)%ComponentType = 3 + TD_DrillStems(i)%Id = TD_DrillStems(kk)%Id + TD_DrillStems(i)%Od = TD_DrillStems(kk)%Od + TD_DrillStems(i)%Area = (pi*((TD_DrillStems(i)%Od**2)-(TD_DrillStems(i)%Id**2)))/4.d0 + TD_DrillStems(i)%RtoolJoint = TD_DrillStems(i)%Od*1.3d0/2.d0 + TD_DrillStems(i)%ToolJointRange = TD_ToolJointRange + TD_DrillStems(i)%Length = TD_DrillStems(kk)%LengthIni + TD_DrillStems(i)%LengthIni = TD_DrillStems(kk)%LengthIni + TD_DrillStems(i)%WeightperLength = TD_DrillStems(kk)%WeightperLength + TD_DrillStems(i)%Weight = TD_DrillStems(i)%WeightperLength*TD_DrillStems(i)%Length + TD_DrillStems(i)%Density = TD_DrillStems(kk)%Density + TD_DrillStems(i)%ElasticModule = TD_DrillStems(kk)%ElasticModule + End Do + TD_DrillStemComponentsNumbs = TD_DrillStemComponentsNumbs+TD_NumOfAddedComponents + ! DrillStem Array: + i = TD_StringConfigurationCount+1 + TD_DrillStem(i)%ComponentType = 3 + TD_DrillStem(i)%Numbs = 1 + TD_DrillStem(i)%Id = TD_DrillStems(kk)%Id ! [ft] + TD_DrillStem(i)%Od = TD_DrillStems(kk)%Od ! [ft] + TD_DrillStem(i)%Length = TD_DrillStems(kk)%LengthIni + TD_DrillStem(i)%WeightperLength = TD_DrillStems(kk)%WeightperLength + TD_DrillStem(i)%TotalLength = TD_DrillStem(i)%Numbs*TD_DrillStem(i)%Length + TD_DrillStem(i)%TotalWeight = TD_DrillStem(i)%TotalLength*TD_DrillStem(i)%WeightperLength + TD_StringConfigurationCount = TD_StringConfigurationCount+1 + + + Call Set_StringUpdate(STRING_UPDATE_NEUTRAL) + end if + + + + + +!==================================================== +! Add Stand +!==================================================== + + if ( Get_StringUpdate() == STRING_UPDATE_ADD_STAND ) then + kk = 0 + Do i= TD_DrillStemComponentsNumbs , 1 , -1 + if (TD_DrillStems(i)%ComponentType==3) then + kk = i + exit + end if + End Do + ! DrillStems Array: + TD_NumOfAddedComponents = 3 + Do i= (TD_DrillStemComponentsNumbs+1) , (TD_DrillStemComponentsNumbs+TD_NumOfAddedComponents) + TD_DrillStems(i)%ComponentType = 3 + TD_DrillStems(i)%Id = TD_DrillStems(kk)%Id + TD_DrillStems(i)%Od = TD_DrillStems(kk)%Od + TD_DrillStems(i)%Area = (pi*((TD_DrillStems(i)%Od**2)-(TD_DrillStems(i)%Id**2)))/4.0d0 + TD_DrillStems(i)%RtoolJoint = TD_DrillStems(i)%Od*1.30d0/2.0d0 + TD_DrillStems(i)%ToolJointRange = TD_ToolJointRange + TD_DrillStems(i)%Length = TD_DrillStems(kk)%LengthIni + TD_DrillStems(i)%LengthIni = TD_DrillStems(kk)%LengthIni + TD_DrillStems(i)%WeightperLength = TD_DrillStems(kk)%WeightperLength + TD_DrillStems(i)%Weight = TD_DrillStems(i)%WeightperLength*TD_DrillStems(i)%Length + TD_DrillStems(i)%Density = TD_DrillStems(kk)%Density + TD_DrillStems(i)%ElasticModule = TD_DrillStems(kk)%ElasticModule + End Do + TD_DrillStemComponentsNumbs = TD_DrillStemComponentsNumbs+TD_NumOfAddedComponents + + ! DrillStem Array: + i = TD_StringConfigurationCount+1 + TD_DrillStem(i)%ComponentType = 3 + TD_DrillStem(i)%Numbs = 3 + TD_DrillStem(i)%Id = TD_DrillStems(kk)%Id ! [ft] + TD_DrillStem(i)%Od = TD_DrillStems(kk)%Od ! [ft] + TD_DrillStem(i)%Length = TD_DrillStems(kk)%LengthIni + TD_DrillStem(i)%WeightperLength = TD_DrillStems(kk)%WeightperLength + TD_DrillStem(i)%TotalLength = TD_DrillStem(i)%Numbs*TD_DrillStem(i)%Length + TD_DrillStem(i)%TotalWeight = TD_DrillStem(i)%TotalLength*TD_DrillStem(i)%WeightperLength + TD_StringConfigurationCount = TD_StringConfigurationCount+1 + + + Call Set_StringUpdate(STRING_UPDATE_NEUTRAL) + end if + + + + + + +!==================================================== +! Add IBOP +!==================================================== + + !if ( Get_Ibop()==IBOP_INSTALL ) then + ! TD_IBOPNewAdd = 1 + !else + ! TD_IBOPNewAdd = 0 + ! TD_IBOPOldAdd = 0 + ! end if + + if ( Get_Ibop()==IBOP_INSTALL .and. TD_IBOPOldAdd==0 ) then + kk = 0 + Do i= TD_DrillStemComponentsNumbs , 1 , -1 + if (TD_DrillStems(i)%ComponentType==3) then + kk = i + exit + end if + End Do + ! DrillStems Array: + TD_NumOfAddedComponents = 1 + Do i= (TD_DrillStemComponentsNumbs+1) , (TD_DrillStemComponentsNumbs+TD_NumOfAddedComponents) + TD_DrillStems(i)%ComponentType = 5 + TD_DrillStems(i)%Id = TD_DrillStems(kk)%Id + TD_DrillStems(i)%Od = TD_DrillStems(kk)%RtoolJoint + TD_DrillStems(i)%Area = (pi*((TD_DrillStems(i)%Od**2)-(TD_DrillStems(i)%Id**2)))/4.0d0 + TD_DrillStems(i)%RtoolJoint = TD_DrillStems(kk)%RtoolJoint + TD_DrillStems(i)%ToolJointRange = 0.0d0 + TD_DrillStems(i)%Length = TD_IBOPLength ! [ft] + TD_DrillStems(i)%LengthIni = TD_IBOPLength ! [ft] + TD_DrillStems(i)%WeightperLength = 55.0d0 ! [lb/ft] + TD_DrillStems(i)%Weight = TD_DrillStems(i)%WeightperLength*TD_DrillStems(i)%Length + TD_DrillStems(i)%Density = TD_DrillStems(kk)%Density !???????????? + TD_DrillStems(i)%ElasticModule = TD_DrillStems(kk)%ElasticModule !???????????? + End Do + TD_DrillStemComponentsNumbs = TD_DrillStemComponentsNumbs+TD_NumOfAddedComponents + + ! DrillStem Array: + i = TD_StringConfigurationCount+1 + TD_DrillStem(i)%ComponentType = 5 + TD_DrillStem(i)%Numbs = 1 + TD_DrillStem(i)%Id = TD_DrillStems(kk)%Id ! [ft] + TD_DrillStem(i)%Od = TD_DrillStems(kk)%RtoolJoint ! [ft] + TD_DrillStem(i)%Length = 1.540d0 ! [ft] + TD_DrillStem(i)%WeightperLength = 55.0d0 ! [lb/ft] + TD_DrillStem(i)%TotalLength = TD_DrillStem(i)%Numbs*TD_DrillStem(i)%Length + TD_DrillStem(i)%TotalWeight = TD_DrillStem(i)%TotalLength*TD_DrillStem(i)%WeightperLength + TD_StringConfigurationCount = TD_StringConfigurationCount+1 + + + !TD_IBOPOldAdd = TD_IBOPNewAdd + + if ( Get_ElevatorConnection() /= ELEVATOR_CONNECTION_STRING .or. (Get_TdsConnectionModes()/=TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()/=TDS_ELEVATOR_CONNECTION_STRING) ) then + TD_ConnectionHeight = TD_ConnectionHeight+TD_DrillStem(i)%Length + end if + + end if + + if ( Get_Ibop()==IBOP_INSTALL ) then + TD_IBOPOldAdd = 1 + else + TD_IBOPOldAdd = 0 + end if + + + + +!==================================================== +! Add Safety Valve & Kelly (OPERATION_DRILL) +!==================================================== + + if ( DriveType==1 .and. Get_OperationCondition()==OPERATION_DRILL .and. Get_KellyConnection() == KELLY_CONNECTION_STRING ) then + TD_KellyNewAdd = 1 + else + TD_KellyNewAdd = 0 + TD_KellyOldAdd = 0 + end if + + if ( DriveType==1 .and. Get_OperationCondition()==OPERATION_DRILL .and. Get_KellyConnection() == KELLY_CONNECTION_STRING .and. TD_KellyNewAdd/=TD_KellyOldAdd ) then + ! DrillStems Array: + TD_NumOfAddedComponents = 1 + Do i= (TD_DrillStemComponentsNumbs+1) , (TD_DrillStemComponentsNumbs+TD_NumOfAddedComponents) + TD_DrillStems(i)%ComponentType = 6 + TD_DrillStems(i)%Id = TD_KellyElementID ! [ft] + TD_DrillStems(i)%Od = TD_KellyElementOD ! [ft] + TD_DrillStems(i)%Area = (pi*((TD_DrillStems(i)%Od**2)-(TD_DrillStems(i)%Id**2)))/4.0d0 + TD_DrillStems(i)%RtoolJoint = TD_DrillStems(i)%Od*1.30d0/2.0d0 + TD_DrillStems(i)%ToolJointRange = 0.0d0 + TD_DrillStems(i)%Length = TD_KellyElementConst ! [ft] + TD_DrillStems(i)%LengthIni = TD_KellyElementConst ! [ft] + TD_DrillStems(i)%WeightperLength = 55.0d0 ! [lb/ft] + TD_DrillStems(i)%Weight = TD_DrillStems(i)%WeightperLength*TD_DrillStems(i)%Length + TD_DrillStems(i)%Density = 7850.d0*0.06242796d0 ! [kg/m3]*0.06242796=[lb/ft3] + TD_DrillStems(i)%ElasticModule = 200.0d9*0.02088543d0 ! [lb/ft2] !200GPa=29Mpsi (steel) + End Do + TD_DrillStemComponentsNumbs = TD_DrillStemComponentsNumbs+TD_NumOfAddedComponents + + ! DrillStem Array: + i = TD_StringConfigurationCount+1 + TD_DrillStem(i)%ComponentType = 6 + TD_DrillStem(i)%Numbs = 1 + TD_DrillStem(i)%Id = 3.0d0/12.d0 ! [ft] + TD_DrillStem(i)%Od = 5.90d0/12.d0 ! [ft] + TD_DrillStem(i)%Length = TD_KellyElementConst ! [ft] + TD_DrillStem(i)%WeightperLength = 55.0d0 ! [lb/ft] + TD_DrillStem(i)%TotalLength = TD_DrillStem(i)%Numbs*TD_DrillStem(i)%Length + TD_DrillStem(i)%TotalWeight = TD_DrillStem(i)%TotalLength*TD_DrillStem(i)%WeightperLength + TD_StringConfigurationCount = TD_StringConfigurationCount+1 + + + TD_KellyOldAdd = TD_KellyNewAdd + + end if + + + + + +!==================================================== +! Add Safety Valve (OPERATION_TRIP) +!==================================================== + + !if ( Get_OperationCondition()==OPERATION_TRIP .and. Get_SafetyValve()==SAFETY_VALVE_INSTALL ) then + ! TD_SafetyValveNewAdd = 1 + !else + ! TD_SafetyValveNewAdd = 0 + ! TD_SafetyValveOldAdd = 0 + !end if + + if ( TD_KellyDriveTypeMode/=0 .and. TD_OldOperationCondition/=0 .and. Get_SafetyValve()==SAFETY_VALVE_INSTALL .and. TD_SafetyValveOldAdd==0 ) then + kk = 0 + Do i= TD_DrillStemComponentsNumbs , 1 , -1 + if (TD_DrillStems(i)%ComponentType==3) then + kk = i + exit + end if + End Do + ! DrillStems Array: + TD_NumOfAddedComponents = 1 + Do i= (TD_DrillStemComponentsNumbs+1) , (TD_DrillStemComponentsNumbs+TD_NumOfAddedComponents) + TD_DrillStems(i)%ComponentType = 7 + TD_DrillStems(i)%Id = TD_DrillStems(kk)%Id + TD_DrillStems(i)%Od = TD_DrillStems(kk)%RtoolJoint + TD_DrillStems(i)%Area = (pi*((TD_DrillStems(i)%Od**2)-(TD_DrillStems(i)%Id**2)))/4.0d0 + TD_DrillStems(i)%RtoolJoint = TD_DrillStems(kk)%RtoolJoint + TD_DrillStems(i)%ToolJointRange = 0.0d0 + TD_DrillStems(i)%Length = TD_SafetyValveLength ! [ft] + TD_DrillStems(i)%LengthIni = TD_SafetyValveLength ! [ft] + TD_DrillStems(i)%WeightperLength = 55.0d0 ! [lb/ft] + TD_DrillStems(i)%Weight = TD_DrillStems(i)%WeightperLength*TD_DrillStems(i)%Length + TD_DrillStems(i)%Density = TD_DrillStems(kk)%Density !???????????? + TD_DrillStems(i)%ElasticModule = TD_DrillStems(kk)%ElasticModule !???????????? + End Do + TD_DrillStemComponentsNumbs = TD_DrillStemComponentsNumbs+TD_NumOfAddedComponents + + ! DrillStem Array: + i = TD_StringConfigurationCount+1 + TD_DrillStem(i)%ComponentType = 7 + TD_DrillStem(i)%Numbs = 1 + TD_DrillStem(i)%Id = TD_DrillStems(kk)%Id ! [ft] + TD_DrillStem(i)%Od = TD_DrillStems(kk)%RtoolJoint ! [ft] + TD_DrillStem(i)%Length = 1.540d0 ! [ft] + TD_DrillStem(i)%WeightperLength = 55.0d0 ! [lb/ft] + TD_DrillStem(i)%TotalLength = TD_DrillStem(i)%Numbs*TD_DrillStem(i)%Length + TD_DrillStem(i)%TotalWeight = TD_DrillStem(i)%TotalLength*TD_DrillStem(i)%WeightperLength + TD_StringConfigurationCount = TD_StringConfigurationCount+1 + + + !TD_SafetyValveOldAdd = TD_SafetyValveNewAdd + + if ( Get_ElevatorConnection() /= ELEVATOR_CONNECTION_STRING .or. (Get_TdsConnectionModes()/=TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()/=TDS_ELEVATOR_CONNECTION_STRING) ) then + TD_ConnectionHeight = TD_ConnectionHeight+TD_DrillStem(i)%Length + end if + + end if + + if ( Get_SafetyValve()==SAFETY_VALVE_INSTALL ) then + TD_SafetyValveOldAdd = 1 + else + TD_SafetyValveOldAdd = 0 + end if + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_DrillingSubs/TD_BOPDiamCalculation.f90 b/TorqueDrag/TD_DrillingSubs/TD_BOPDiamCalculation.f90 new file mode 100644 index 0000000..695ee38 --- /dev/null +++ b/TorqueDrag/TD_DrillingSubs/TD_BOPDiamCalculation.f90 @@ -0,0 +1,180 @@ +subroutine TD_BOPDiamCalculation + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + Use TD_StringConnectionData + Use CBopStackVariables + Use VARIABLES + + + Integer :: i , j , n , m , TD_Numbs + Real(8) :: TD_LimitUp , TD_LimitDown , TD_OldFillingValue , TD_AnnTjDiff , TD_AnnularFilling + Real(8) :: TD_ElToolJoints(2,2) + + + + + + !TD_ToolJointRange = 0.4005d0*3.28 ! [ft] + +!==================================================== +! Read BOP Data +!==================================================== + + TD_BOPHeight(5) = AboveAnnularHeight + TD_BOPHeight(1) = AnnularPreventerHeight + TD_BOPHeight(2) = UpperRamHeight + TD_BOPHeight(3) = BlindRamHeight + TD_BOPHeight(6) = KillHeight + TD_BOPHeight(4) = LowerRamHeight + + + TD_BOPRamDiam(1) = IDAnnularfinal + TD_BOPRamDiam(2) = IDPipeRam1final + TD_BOPRamDiam(3) = IDshearBopfinal + TD_BOPRamDiam(4) = IDPipeRam2final + + + + + + +!==================================================== +! Element Counts in BOPStack Domain +!==================================================== + + !if (TD_DrillStemComponentsNumbs>5) then + TD_Numbs = TD_DrillStemComponentsNumbs-7 ! 7 Elements from the Top of DrillStem + !else + ! TD_Numbs = 1 + !end if + + + + + + + + + +!==================================================== +! Determination of Elements Diameter in BOPStack Domain +!==================================================== + + TD_BOPDiam = 0.d0 + TD_OldFillingValue = 0.d0 + Do i = TD_DrillStemComponentsNumbs,TD_Numbs,-1 + + TD_LimitUp = TD_DrillStems(i)%TopDepth+TD_DrillStems(i)%ToolJointRange + TD_LimitDown = TD_DrillStems(i)%DownDepth-TD_DrillStems(i)%ToolJointRange + TD_ElToolJoints(1,1) = TD_DrillStems(i)%TopDepth ! TD_ElToolJoints(i,j) , i=top & down tooljoints of element , j=top & down tooljoints Depth + TD_ElToolJoints(1,2) = TD_LimitUp + TD_ElToolJoints(2,1) = TD_LimitDown + TD_ElToolJoints(2,2) = TD_DrillStems(i)%DownDepth + + + !===> che meghdar az fazaye annular ba tooljoint por mishavad (for BOP Module) + Do m = 1,2 + TD_AnnTjDiff = min(TD_ElToolJoints(m,2),(TD_BOPHeight(1)+TD_BOPThickness))-max(TD_ElToolJoints(m,1),(TD_BOPHeight(1)-TD_BOPThickness)) + if (TD_AnnTjDiff<0.) then ! tooljoint is not in the annular range + TD_AnnTjDiff = 0.d0 + end if + TD_AnnularFilling = TD_OldFillingValue+(TD_AnnTjDiff/(TD_BOPThickness*2.d0)) ! 0=TD_LimitUp .and. (TD_BOPHeight(j)+TD_BOPThickness)3 ) then + TD_DrillStem(i)%ComponentType = 3 + TD_DrillStem(i)%Numbs = TD_DrillStem(i)%Numbs-3 + TD_DrillStem(i)%Id = TD_DrillStem(i)%Id ![ft] + TD_DrillStem(i)%Od = TD_DrillStem(i)%Od ![ft] + TD_DrillStem(i)%Length = TD_DrillStem(i)%Length + TD_DrillStem(i)%WeightperLength = TD_DrillStem(i)%WeightperLength + TD_DrillStem(i)%TotalLength = TD_DrillStem(i)%Numbs*TD_DrillStem(i)%Length + TD_DrillStem(i)%TotalWeight = TD_DrillStem(i)%TotalLength*TD_DrillStem(i)%WeightperLength + TD_StringConfigurationCount = TD_StringConfigurationCount + else if ( TD_DrillStem(i)%Numbs==3 ) then + TD_DrillStem(i)%ComponentType = 3 + TD_DrillStem(i)%Numbs = 0 + TD_DrillStem(i)%Id = 0. + TD_DrillStem(i)%Od = 0. + TD_DrillStem(i)%Length = 0. + TD_DrillStem(i)%WeightperLength = 0. + TD_DrillStem(i)%TotalLength = 0. + TD_DrillStem(i)%TotalWeight = 0. + TD_StringConfigurationCount = TD_StringConfigurationCount-1 + end if + + + + Call Set_StringUpdate(STRING_UPDATE_NEUTRAL) + !print* , 'Remove Stand' + end if + + + + + + + + +!==================================================== +! Remove IBOP +!==================================================== + + !if ( Get_Ibop() == IBOP_REMOVE ) then + ! TD_IBOPNewRemove = 1 + !else + ! TD_IBOPNewRemove = 0 + ! TD_IBOPOldRemove = 0 + !end if + if ( Get_Ibop() == IBOP_REMOVE .and. TD_IBOPOldRemove==0 ) then + + TD_NumOfRemovedComponents = 1 + Do i= TD_DrillStemComponentsNumbs , (TD_DrillStemComponentsNumbs-TD_NumOfRemovedComponents+1) , -1 + TD_DrillStems(i)%ComponentType = 0 !???????????? + TD_DrillStems(i)%Id = 0. + TD_DrillStems(i)%Od = 0. + TD_DrillStems(i)%Area = 0. + TD_DrillStems(i)%RtoolJoint = 0. + TD_DrillStems(i)%ToolJointRange = 0. + TD_DrillStems(i)%Length = 0. + TD_DrillStems(i)%LengthIni = 0. + TD_DrillStems(i)%WeightperLength = 0. + TD_DrillStems(i)%Weight = 0. + End Do + TD_DrillStemComponentsNumbs = TD_DrillStemComponentsNumbs-TD_NumOfRemovedComponents + + + i = TD_StringConfigurationCount + if ( TD_DrillStem(i)%Numbs>1 ) then + TD_DrillStem(i)%ComponentType = 5 + TD_DrillStem(i)%Numbs = TD_DrillStem(i)%Numbs-1 + TD_DrillStem(i)%Id = TD_DrillStem(i)%Id ![ft] + TD_DrillStem(i)%Od = TD_DrillStem(i)%Od ![ft] + TD_DrillStem(i)%Length = TD_DrillStem(i)%Length ![ft] + TD_DrillStem(i)%WeightperLength = TD_DrillStem(i)%WeightperLength + TD_DrillStem(i)%TotalLength = TD_DrillStem(i)%Numbs*TD_DrillStem(i)%Length + TD_DrillStem(i)%TotalWeight = TD_DrillStem(i)%TotalLength*TD_DrillStem(i)%WeightperLength + TD_StringConfigurationCount = TD_StringConfigurationCount + else if ( TD_DrillStem(i)%Numbs==1 ) then + TD_DrillStem(i)%ComponentType = 5 + TD_DrillStem(i)%Numbs = 0 + TD_DrillStem(i)%Id = 0. + TD_DrillStem(i)%Od = 0. + TD_DrillStem(i)%Length = 0. + TD_DrillStem(i)%WeightperLength = 0. + TD_DrillStem(i)%TotalLength = 0. + TD_DrillStem(i)%TotalWeight = 0. + TD_StringConfigurationCount = TD_StringConfigurationCount-1 + end if + + + !TD_IBOPOldRemove = TD_IBOPNewRemove + + if ( Get_ElevatorConnection() /= ELEVATOR_CONNECTION_STRING .or. (Get_TdsConnectionModes()/=TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()/=TDS_ELEVATOR_CONNECTION_STRING) ) then + TD_ConnectionHeight = TD_ConnectionHeight-TD_IBOPLength + end if + !print* , 'Remove IBOP' + end if + + if ( Get_Ibop() == IBOP_REMOVE ) then + TD_IBOPOldRemove = 1 + else + TD_IBOPOldRemove = 0 + end if + + + + + + + + +!==================================================== +! Remove Safety Valve (OPERATION_TRIP) +!==================================================== + + !if ( TD_OldOperationCondition==1 .and. TD_KellyDriveTypeMode==1 .and. Get_SafetyValve() == SAFETY_VALVE_REMOVE ) then + ! TD_SafetyValveNewRemove = 1 + !else + ! TD_SafetyValveNewRemove = 0 + ! TD_SafetyValveOldRemove = 0 + !end if + !print* , 'Get_SafetyValve()=' , Get_SafetyValve() + if ( TD_KellyDriveTypeMode/=0 .and. TD_OldOperationCondition/=0 .and. Get_SafetyValve() == SAFETY_VALVE_REMOVE .and. TD_SafetyValveOldRemove==0 ) then + + TD_NumOfRemovedComponents = 1 + Do i= TD_DrillStemComponentsNumbs , (TD_DrillStemComponentsNumbs-TD_NumOfRemovedComponents+1) , -1 + TD_DrillStems(i)%ComponentType = 0 !???????????? + TD_DrillStems(i)%Id = 0. + TD_DrillStems(i)%Od = 0. + TD_DrillStems(i)%Area = 0. + TD_DrillStems(i)%RtoolJoint = 0. + TD_DrillStems(i)%ToolJointRange = 0. + TD_DrillStems(i)%Length = 0. + TD_DrillStems(i)%LengthIni = 0. + TD_DrillStems(i)%WeightperLength = 0. + TD_DrillStems(i)%Weight = 0. + End Do + TD_DrillStemComponentsNumbs = TD_DrillStemComponentsNumbs-TD_NumOfRemovedComponents + + + i = TD_StringConfigurationCount + if ( TD_DrillStem(i)%Numbs>1 ) then + TD_DrillStem(i)%ComponentType = 7 + TD_DrillStem(i)%Numbs = TD_DrillStem(i)%Numbs-1 + TD_DrillStem(i)%Id = TD_DrillStem(i)%Id ![ft] + TD_DrillStem(i)%Od = TD_DrillStem(i)%Od ![ft] + TD_DrillStem(i)%Length = TD_DrillStem(i)%Length ![ft] + TD_DrillStem(i)%WeightperLength = TD_DrillStem(i)%WeightperLength + TD_DrillStem(i)%TotalLength = TD_DrillStem(i)%Numbs*TD_DrillStem(i)%Length + TD_DrillStem(i)%TotalWeight = TD_DrillStem(i)%TotalLength*TD_DrillStem(i)%WeightperLength + TD_StringConfigurationCount = TD_StringConfigurationCount + else if ( TD_DrillStem(i)%Numbs==1 ) then + TD_DrillStem(i)%ComponentType = 7 + TD_DrillStem(i)%Numbs = 0 + TD_DrillStem(i)%Id = 0. + TD_DrillStem(i)%Od = 0. + TD_DrillStem(i)%Length = 0. + TD_DrillStem(i)%WeightperLength = 0. + TD_DrillStem(i)%TotalLength = 0. + TD_DrillStem(i)%TotalWeight = 0. + TD_StringConfigurationCount = TD_StringConfigurationCount-1 + end if + !print* , 'Get_OperationCondition()=' , Get_OperationCondition() + !print* , 'TD_OldOperationCondition=' , TD_OldOperationCondition + !print* , 'TD_SafetyValveNewRemove=' , TD_SafetyValveNewRemove + !print* , 'TD_SafetyValveOldRemove=' , TD_SafetyValveOldRemove + !TD_SafetyValveOldRemove = TD_SafetyValveNewRemove + + if ( Get_ElevatorConnection() /= ELEVATOR_CONNECTION_STRING .or. (Get_TdsConnectionModes()/=TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()/=TDS_ELEVATOR_CONNECTION_STRING) ) then + TD_ConnectionHeight = TD_ConnectionHeight-TD_SafetyValveLength + end if + + end if + + if ( Get_SafetyValve() == SAFETY_VALVE_REMOVE ) then + TD_SafetyValveOldRemove = 1 + else + TD_SafetyValveOldRemove = 0 + end if + + if ( TD_KellyDriveTypeMode==1 ) then + TD_OldOperationCondition = 1 + else + TD_OldOperationCondition = 0 + end if + + !print* , 'TD_KellyDriveTypeMode2=' , TD_KellyDriveTypeMode + !print* , 'TD_OldOperationCondition2=' , TD_OldOperationCondition + !print* , 'TD_SafetyValveNewRemove2=' , TD_SafetyValveNewRemove + !print* , 'TD_SafetyValveOldRemove2=' , TD_SafetyValveOldRemove + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_DrillingSubs/TD_StringConnectionModes.f90 b/TorqueDrag/TD_DrillingSubs/TD_StringConnectionModes.f90 new file mode 100644 index 0000000..762aa4b --- /dev/null +++ b/TorqueDrag/TD_DrillingSubs/TD_StringConnectionModes.f90 @@ -0,0 +1,828 @@ +subroutine TD_StringConnectionModes + + Use CHoistingVariables + Use CDrillingConsoleVariables + Use CKellyConnectionEnumVariables + Use CElevatorConnectionEnumVariables + Use CSlipsEnumVariables + Use COperationConditionEnumVariables + Use CZeroStringSpeed + Use CTdsConnectionModesEnumVariables + Use CTdsElevatorModesEnumVariables + Use COperationScenariosVariables + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + Use TD_StringConnectionData + Use Drawworks_VARIABLES!, only: Drawworks + + + + implicit none + integer :: i , kk + Real(8) :: LengthSum + + + + + + + + !!=====> Read Data + !kk = 0 + !LengthSum = 0.d0 + ! + !Do i = TD_DrillStemComponentsNumbs , 1 , -1 + ! if (TD_DrillStems(i)%ComponentType==3) then + ! kk = i + ! exit + ! else if (TD_DrillStems(i)%ComponentType==5 .or. TD_DrillStems(i)%ComponentType==7) then + ! LengthSum = LengthSum+TD_DrillStems(i)%LengthIni + ! end if + !End Do + + + + + + + + !####C_Program -----> DriveType = + ! = 0 TopDrive_DriveType + ! = 1 Kelly_DriveType + + !####C_Program -----> TD_KellyDriveTypeMode = + ! = 0 Drill Mode (Kelly) + ! = 1 Trip Mode (Elevator) + ! = 2 TopDrive Mode + + if ( DriveType==1 .and. Get_OperationCondition()==OPERATION_DRILL ) then + TD_KellyDriveTypeMode = 0 + else if ( DriveType==1 .and. Get_OperationCondition()==OPERATION_TRIP ) then + TD_KellyDriveTypeMode = 1 + else if ( DriveType==0 ) then + TD_KellyDriveTypeMode = 2 + end if + + TD_HookHeight = DW_TDHookHeight ! unit: [ft] + TD_ElevatorConst = 17.985 ! [ft] Elevator Length(14.84) ????????????????? adad ha daghigh shavand + TD_ElevatorECG = ECG ! [ft] + TD_KellyConst = 63.280d0 ! [ft] Kelly Length(61.74) + Safety Valve Length(1.54) + TD_KellyElementConst = 41.840d0 ! [ft] Kelly Element Length(40.3) + Safety Valve Length(1.54) + TD_TDSLength = 24.08d0 !??????????????????? ! [ft] + TD_TDSToolJointLength = 0.77d0 !??????????????????? ! [ft] + TD_TDSElevatorLength = 26.837d0 !?????? ! TDS with Elevator Length [ft] + TD_TDSElevatorToolLength= 0.859d0 !??????????????????? ! [ft] + TD_TDSElevatorECG = 2.454 ! [ft] + TD_NumOfCables = NumberOfLine + TD_WeightTB = TravelingBlockWeight ! [lb] + TD_WeightTD = TopDriveWeight ! [lb] + TD_KellyWeight = KellyWeight ! [lb] + + + + + + + + + !=====> Velocity Calculation + TD_HookVelocity = (TD_HookHeight-TD_HookHeightOld)/TD_TimeStep ! [ft/s] + + + + + + + + + +!==================================================== +! Add or Remove DrillStem Components +!==================================================== + Call TD_AddComponents + + Call TD_RemoveComponents + + + !=====> Read Data + kk = 0 + LengthSum = 0.d0 + + Do i = TD_DrillStemComponentsNumbs , 1 , -1 + if (TD_DrillStems(i)%ComponentType==3) then + kk = i + exit + else if (TD_DrillStems(i)%ComponentType==5 .or. TD_DrillStems(i)%ComponentType==7) then + LengthSum = LengthSum+TD_DrillStems(i)%LengthIni + end if + End Do + !print*, 'kk' , kk + !print*, 'TD_DrillStems(kk)%LengthIni0=' , TD_DrillStems(kk)%LengthIni + + + + +!==================================================== +! String Connection Mode Determination +!==================================================== + + !####TD_StringConnectionMode = + ! = 0 Slips Set ??????? + ! = 1 Kelly Connected to String + ! = 2 Kelly Nothing Connected + ! = 3 Kelly Connected to Single + ! = 4 Elevator Connected to String + ! = 5 Elevator Nothing Connected + ! = 6 Elevator Connected to Stand + ! = 7 Elevator Connected to Single + ! = 8 Elevator Latch String + ! = 18 Elevator Latch Single + ! = 19 Elevator Latch Stand + ! = 9 TDS CONNECTION SPINE + ! = 10 TDS CONNECTION STRING + ! = 11 TDS CONNECTION NOTHING .and. TDS ELEVATOR LATCH STRING + ! = 12 TDS CONNECTION NOTHING .and. TDS ELEVATOR CONNECTION STRING + ! = 13 TDS CONNECTION NOTHING .and. TDS ELEVATOR CONNECTION NOTHING + ! = 14 TDS CONNECTION NOTHING .and. TDS ELEVATOR CONNECTION STAND + ! = 15 TDS CONNECTION NOTHING .and. TDS ELEVATOR CONNECTION SINGLE + ! = 16 TDS CONNECTION NOTHING .and. TDS ELEVATOR LATCH SINGLE + ! = 17 TDS CONNECTION NOTHING .and. TDS ELEVATOR LATCH STAND + + + + + + !if (TD_DlTouch<=0.) then ![ft] + ! if(TD_HookVelocity<=0.) then + ! TD_ConnectionHeight = TD_ConnectionHeight + ! TD_StringVelocity = 0.0d0 + ! return + ! end if + !end if + + + + !=====> Connection Height Determination + + if ( TD_KellyDriveTypeMode==0 ) then + + if(Get_KellyConnection() == KELLY_CONNECTION_STRING) then + TD_KellyNewStatus1 = 1 + else + TD_KellyNewStatus1 = 0 + !TD_KellyOldStatus1 = 0 + end if + + if(Get_KellyConnection()==KELLY_CONNECTION_NOTHING) then + TD_KellyNewStatus2 = 1 + else + TD_KellyNewStatus2 = 0 + !TD_KellyOldStatus2 = 0 + end if + + if(Get_KellyConnection()==KELLY_CONNECTION_SINGLE) then + TD_KellyNewStatus3 = 1 + else + TD_KellyNewStatus3 = 0 + !TD_KellyOldStatus3 = 0 + end if + + + if ( Get_KellyConnection() == KELLY_CONNECTION_STRING ) then + TD_StringConnectionMode = 1 + !print*, 'TD_ConnectionHeight10=' , TD_ConnectionHeight + !print*, 'TD_KellyElementConst1=' , TD_KellyElementConst + !print*, 'TD_DrillStems(kk)%LengthIni1=' , TD_DrillStems(kk)%LengthIni + if (TD_KellyOldStatus2==1 .and. TD_KellyNewStatus1/=TD_KellyOldStatus1) then + TD_ConnectionHeight = TD_ConnectionHeight+TD_KellyElementConst + TD_KellyOldStatus1 = TD_KellyNewStatus1 + TD_KellyOldStatus2 = 0 + else if (TD_KellyOldStatus3==1 .and. TD_KellyNewStatus1/=TD_KellyOldStatus1) then + TD_ConnectionHeight = TD_ConnectionHeight+TD_KellyElementConst+30.d0 !TD_DrillStems(kk)%LengthIni + TD_KellyOldStatus1 = TD_KellyNewStatus1 + TD_KellyOldStatus3 = 0 + end if + !print*, 'TD_ConnectionHeight1=' , TD_ConnectionHeight + if ( Get_Slips() == SLIPS_SET_END ) then + !!if ( TD_HookVelocity>0. ) then + !! Print*, '*** UnSet Slips ***' !????????? + !!end if + TD_KellyConnectionHeight = TD_HookHeight-(TD_KellyConst-TD_KellyElementConst) !????????? + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + else + !if (TD_DlTouch<=0. .and. TD_HookVelocity<=0.) then + ! TD_ConnectionHeight = TD_ConnectionHeight + ! TD_StringVelocity = 0.0d0 + !else + TD_KellyConnectionHeight = TD_HookHeight-(TD_KellyConst-TD_KellyElementConst) !?????????? + TD_ConnectionHeight = TD_KellyConnectionHeight + TD_StringVelocity = TD_HookVelocity + !end if + end if + + else if ( Get_KellyConnection() == KELLY_CONNECTION_NOTHING ) then + TD_StringConnectionMode = 2 + !print*, 'TD_ConnectionHeight20=' , TD_ConnectionHeight + !print*, 'TD_KellyElementConst2=' , TD_KellyElementConst + if (TD_KellyOldStatus1==1 .and. TD_KellyNewStatus2/=TD_KellyOldStatus2) then + TD_ConnectionHeight = TD_ConnectionHeight-TD_KellyElementConst + TD_KellyOldStatus2 = TD_KellyNewStatus2 + TD_KellyOldStatus1 = 0 + else if (TD_KellyOldStatus3==1 .and. TD_KellyNewStatus2/=TD_KellyOldStatus2) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus2 = TD_KellyNewStatus2 + TD_KellyOldStatus3 = 0 + else if (TD_KellyOldStatus5==1 .and. TD_KellyNewStatus2/=TD_KellyOldStatus2) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus2 = TD_KellyNewStatus2 + TD_KellyOldStatus5 = 0 + end if + !print*, 'TD_ConnectionHeight2=' , TD_ConnectionHeight + TD_KellyConnectionHeight = TD_HookHeight-TD_KellyConst + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + + else if ( Get_KellyConnection() == KELLY_CONNECTION_SINGLE ) then + !print*, 'KELLY_CONNECTION_SINGLE' , TD_ConnectionHeight + TD_StringConnectionMode = 3 + !print*, 'TD_ConnectionHeight30=' , TD_ConnectionHeight + !print*, 'TD_KellyElementConst3=' , TD_KellyElementConst + !print*, 'TD_DrillStems(kk)%LengthIni3=' , TD_DrillStems(kk)%LengthIni + if (TD_KellyOldStatus1==1 .and. TD_KellyNewStatus3/=TD_KellyOldStatus3) then + !print*, 'KELLY_CONNECTION_SINGLE1' , TD_ConnectionHeight + !print*, 'TD_KellyElementConst=' , TD_KellyElementConst + !print*, 'TD_DrillStems(kk)%LengthIni=' , TD_DrillStems(kk)%LengthIni + TD_ConnectionHeight = TD_ConnectionHeight-TD_KellyElementConst-30.d0 !TD_DrillStems(kk)%LengthIni + TD_KellyOldStatus3 = TD_KellyNewStatus3 + TD_KellyOldStatus1 = 0 + else if (TD_KellyOldStatus2==1 .and. TD_KellyNewStatus3/=TD_KellyOldStatus3) then + !print*, 'KELLY_CONNECTION_SINGLE2' , TD_ConnectionHeight + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus3 = TD_KellyNewStatus3 + TD_KellyOldStatus2 = 0 + end if + !print*, 'TD_ConnectionHeight3=' , TD_ConnectionHeight + !print*, 'KELLY_CONNECTION_SINGLE3' , TD_ConnectionHeight + TD_KellyConnectionHeight = TD_HookHeight-TD_KellyConst-TD_DrillStems(kk)%LengthIni + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + !print*, 'KELLY_CONNECTION_SINGLE4' , TD_ConnectionHeight + end if + !print*, 'KELLY_CONNECTION_SINGLE5' , TD_ConnectionHeight + + else if ( TD_KellyDriveTypeMode==1 ) then + + if(Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING) then + TD_KellyNewStatus4 = 1 + else + TD_KellyNewStatus4 = 0 + !TD_KellyOldStatus4 = 0 + end if + + if(Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING) then + TD_KellyNewStatus5 = 1 + else + TD_KellyNewStatus5 = 0 + !TD_KellyOldStatus5 = 0 + end if + + if(Get_ElevatorConnection() == ELEVATOR_CONNECTION_STAND) then + TD_KellyNewStatus6 = 1 + else + TD_KellyNewStatus6 = 0 + !TD_KellyOldStatus6 = 0 + end if + + if(Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE) then + TD_KellyNewStatus7 = 1 + else + TD_KellyNewStatus7 = 0 + !TD_KellyOldStatus7 = 0 + end if + + if(Get_ElevatorConnection() == ELEVATOR_LATCH_STRING) then + TD_KellyNewStatus8 = 1 + else + TD_KellyNewStatus8 = 0 + !TD_KellyOldStatus8 = 0 + end if + + if(Get_ElevatorConnection() == ELEVATOR_LATCH_SINGLE) then + TD_KellyNewStatus18 = 1 + else + TD_KellyNewStatus18 = 0 + !TD_KellyOldStatus18 = 0 + end if + + if(Get_ElevatorConnection() == ELEVATOR_LATCH_STAND) then + TD_KellyNewStatus19 = 1 + else + TD_KellyNewStatus19 = 0 + !TD_KellyOldStatus19 = 0 + end if + + + if ( Get_ElevatorConnection() == ELEVATOR_CONNECTION_STRING ) then + TD_StringConnectionMode = 4 + if (TD_KellyOldStatus5==1 .and. TD_KellyNewStatus4/=TD_KellyOldStatus4) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus4 = TD_KellyNewStatus4 + TD_KellyOldStatus5 = 0 + else if (TD_KellyOldStatus6==1 .and. TD_KellyNewStatus4/=TD_KellyOldStatus4) then + TD_ConnectionHeight = TD_ConnectionHeight+(3.d0*TD_DrillStems(kk)%LengthIni) + TD_KellyOldStatus4 = TD_KellyNewStatus4 + TD_KellyOldStatus6 = 0 + else if (TD_KellyOldStatus7==1 .and. TD_KellyNewStatus4/=TD_KellyOldStatus4) then + TD_ConnectionHeight = TD_ConnectionHeight+TD_DrillStems(kk)%LengthIni + TD_KellyOldStatus4 = TD_KellyNewStatus4 + TD_KellyOldStatus7 = 0 + else if (TD_KellyOldStatus8==1 .and. TD_KellyNewStatus4/=TD_KellyOldStatus4) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus4 = TD_KellyNewStatus4 + TD_KellyOldStatus8 = 0 + end if + if ( Get_Slips() == SLIPS_SET_END ) then + !if ( TD_HookVelocity>0. ) then + ! Print*, '*** UnSet Slips ***' !??????????????????? + !end if + TD_ElevatorHeight = TD_HookHeight-TD_ElevatorConst !????????????? + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + else + TD_ElevatorHeight = TD_HookHeight-TD_ElevatorConst + TD_ConnectionHeight = TD_HookHeight-TD_ElevatorConst+(LengthSum+TD_ElevatorECG) !(LengthSum+TD_DrillStems(kk)%ToolJointRange) + TD_StringVelocity = TD_HookVelocity + end if + + else if ( Get_ElevatorConnection() == ELEVATOR_CONNECTION_NOTHING ) then + TD_StringConnectionMode = 5 + if (TD_KellyOldStatus4==1 .and. TD_KellyNewStatus5/=TD_KellyOldStatus5) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus5 = TD_KellyNewStatus5 + TD_KellyOldStatus4 = 0 + else if (TD_KellyOldStatus6==1 .and. TD_KellyNewStatus5/=TD_KellyOldStatus5) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus5 = TD_KellyNewStatus5 + TD_KellyOldStatus6 = 0 + else if (TD_KellyOldStatus7==1 .and. TD_KellyNewStatus5/=TD_KellyOldStatus5) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus5 = TD_KellyNewStatus5 + TD_KellyOldStatus7 = 0 + else if (TD_KellyOldStatus8==1 .and. TD_KellyNewStatus5/=TD_KellyOldStatus5) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus5 = TD_KellyNewStatus5 + TD_KellyOldStatus8 = 0 + else if (TD_KellyOldStatus2==1 .and. TD_KellyNewStatus5/=TD_KellyOldStatus5) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus5 = TD_KellyNewStatus5 + TD_KellyOldStatus2 = 0 + end if + TD_ElevatorHeight = TD_HookHeight-TD_ElevatorConst + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + + else if ( Get_ElevatorConnection() == ELEVATOR_CONNECTION_STAND ) then + TD_StringConnectionMode = 6 + if (TD_KellyOldStatus4==1 .and. TD_KellyNewStatus6/=TD_KellyOldStatus6) then + TD_ConnectionHeight = TD_ConnectionHeight-(3.*TD_DrillStems(kk)%LengthIni) + TD_KellyOldStatus6 = TD_KellyNewStatus6 + TD_KellyOldStatus4 = 0 + else if (TD_KellyOldStatus5==1 .and. TD_KellyNewStatus6/=TD_KellyOldStatus6) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus6 = TD_KellyNewStatus6 + TD_KellyOldStatus5 = 0 + else if (TD_KellyOldStatus7==1 .and. TD_KellyNewStatus6/=TD_KellyOldStatus6) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus6 = TD_KellyNewStatus6 + TD_KellyOldStatus7 = 0 + else if (TD_KellyOldStatus8==1 .and. TD_KellyNewStatus6/=TD_KellyOldStatus6) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus6 = TD_KellyNewStatus6 + TD_KellyOldStatus8 = 0 + end if + TD_ElevatorHeight = TD_HookHeight-TD_ElevatorConst-(3.*TD_DrillStems(kk)%LengthIni) + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + + else if ( Get_ElevatorConnection() == ELEVATOR_CONNECTION_SINGLE ) then + TD_StringConnectionMode = 7 + if (TD_KellyOldStatus4==1 .and. TD_KellyNewStatus7/=TD_KellyOldStatus7) then + TD_ConnectionHeight = TD_ConnectionHeight-TD_DrillStems(kk)%LengthIni + TD_KellyOldStatus7 = TD_KellyNewStatus7 + TD_KellyOldStatus4 = 0 + else if (TD_KellyOldStatus5==1 .and. TD_KellyNewStatus7/=TD_KellyOldStatus7) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus7 = TD_KellyNewStatus7 + TD_KellyOldStatus5 = 0 + else if (TD_KellyOldStatus6==1 .and. TD_KellyNewStatus7/=TD_KellyOldStatus7) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus7 = TD_KellyNewStatus7 + TD_KellyOldStatus6 = 0 + else if (TD_KellyOldStatus8==1 .and. TD_KellyNewStatus7/=TD_KellyOldStatus7) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus7 = TD_KellyNewStatus7 + TD_KellyOldStatus8 = 0 + end if + TD_ElevatorHeight = TD_HookHeight-TD_ElevatorConst-TD_DrillStems(kk)%LengthIni + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + + else if ( Get_ElevatorConnection() == ELEVATOR_LATCH_STRING ) then + TD_StringConnectionMode = 8 + if (TD_KellyOldStatus4==1 .and. TD_KellyNewStatus8/=TD_KellyOldStatus8) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus8 = TD_KellyNewStatus8 + TD_KellyOldStatus4 = 0 + else if (TD_KellyOldStatus5==1 .and. TD_KellyNewStatus8/=TD_KellyOldStatus8) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus8 = TD_KellyNewStatus8 + TD_KellyOldStatus5 = 0 + else if (TD_KellyOldStatus6==1 .and. TD_KellyNewStatus8/=TD_KellyOldStatus8) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus8 = TD_KellyNewStatus8 + TD_KellyOldStatus6 = 0 + else if (TD_KellyOldStatus7==1 .and. TD_KellyNewStatus8/=TD_KellyOldStatus8) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus8 = TD_KellyNewStatus8 + TD_KellyOldStatus7 = 0 + end if + TD_ElevatorHeight = TD_HookHeight-TD_ElevatorConst + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + + else if ( Get_ElevatorConnection() == ELEVATOR_LATCH_SINGLE ) then + TD_StringConnectionMode = 18 + if (TD_KellyOldStatus5==1 .and. TD_KellyNewStatus18/=TD_KellyOldStatus18) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus18 = TD_KellyNewStatus18 + TD_KellyOldStatus5 = 0 + else if (TD_KellyOldStatus7==1 .and. TD_KellyNewStatus18/=TD_KellyOldStatus18) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus18 = TD_KellyNewStatus18 + TD_KellyOldStatus7 = 0 + else if (TD_KellyOldStatus8==1 .and. TD_KellyNewStatus18/=TD_KellyOldStatus18) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus18 = TD_KellyNewStatus18 + TD_KellyOldStatus8 = 0 + end if + TD_ElevatorHeight = TD_HookHeight-TD_ElevatorConst + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + + else if ( Get_ElevatorConnection() == ELEVATOR_LATCH_STAND ) then + TD_StringConnectionMode = 19 + if (TD_KellyOldStatus5==1 .and. TD_KellyNewStatus19/=TD_KellyOldStatus19) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus19 = TD_KellyNewStatus19 + TD_KellyOldStatus5 = 0 + else if (TD_KellyOldStatus6==1 .and. TD_KellyNewStatus19/=TD_KellyOldStatus19) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus19 = TD_KellyNewStatus19 + TD_KellyOldStatus6 = 0 + else if (TD_KellyOldStatus8==1 .and. TD_KellyNewStatus19/=TD_KellyOldStatus19) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus19 = TD_KellyNewStatus19 + TD_KellyOldStatus8 = 0 + end if + TD_ElevatorHeight = TD_HookHeight-TD_ElevatorConst + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + end if + + else if ( TD_KellyDriveTypeMode==2 ) then + + if( Get_TdsConnectionModes()==TDS_CONNECTION_SPINE ) then + TD_KellyNewStatus9 = 1 + else + TD_KellyNewStatus9 = 0 + !TD_KellyOldStatus9 = 0 + end if + + if( Get_TdsConnectionModes()==TDS_CONNECTION_STRING ) then + TD_KellyNewStatus10 = 1 + else + TD_KellyNewStatus10 = 0 + !TD_KellyOldStatus10 = 0 + end if + + if( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_LATCH_STRING ) then + TD_KellyNewStatus11 = 1 + else + TD_KellyNewStatus11 = 0 + !TD_KellyOldStatus11 = 0 + end if + + if( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_STRING ) then + TD_KellyNewStatus12 = 1 + else + TD_KellyNewStatus12 = 0 + !TD_KellyOldStatus12 = 0 + end if + + if( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_NOTHING ) then + TD_KellyNewStatus13 = 1 + else + TD_KellyNewStatus13 = 0 + !TD_KellyOldStatus13 = 0 + end if + + if( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_STAND ) then + TD_KellyNewStatus14 = 1 + else + TD_KellyNewStatus14 = 0 + !TD_KellyOldStatus14 = 0 + end if + + if( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_SINGLE ) then + TD_KellyNewStatus15 = 1 + else + TD_KellyNewStatus15 = 0 + !TD_KellyOldStatus15 = 0 + end if + + if( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_LATCH_SINGLE ) then + TD_KellyNewStatus16 = 1 + else + TD_KellyNewStatus16 = 0 + !TD_KellyOldStatus16 = 0 + end if + + if( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_LATCH_STAND ) then + TD_KellyNewStatus17 = 1 + else + TD_KellyNewStatus17 = 0 + !TD_KellyOldStatus17 = 0 + end if + + if ( Get_TdsConnectionModes()==TDS_CONNECTION_SPINE ) then + TD_StringConnectionMode = 9 + if (TD_KellyOldStatus10==1 .and. TD_KellyNewStatus9/=TD_KellyOldStatus9) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus9 = TD_KellyNewStatus9 + TD_KellyOldStatus10 = 0 + else if (TD_KellyOldStatus11==1 .and. TD_KellyNewStatus9/=TD_KellyOldStatus9) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus9 = TD_KellyNewStatus9 + TD_KellyOldStatus11 = 0 + else if (TD_KellyOldStatus13==1 .and. TD_KellyNewStatus9/=TD_KellyOldStatus9) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus9 = TD_KellyNewStatus9 + TD_KellyOldStatus13 = 0 + end if + if ( Get_Slips() == SLIPS_SET_END ) then + !if ( TD_HookVelocity>0. ) then + ! Print*, '*** UnSet Slips ***' !??????????????????? + !end if + TD_TDSHeight = TD_HookHeight-TD_TDSLength-TD_TDSToolJointLength !????????????? + TD_TDSElevatorHeight = TD_HookHeight-TD_TDSElevatorLength !????????????? + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + else + TD_TDSHeight = TD_HookHeight-TD_TDSLength-TD_TDSToolJointLength !????????????? + TD_TDSElevatorHeight = TD_HookHeight-TD_TDSElevatorLength !????????????? + TD_ConnectionHeight = TD_TDSHeight + TD_StringVelocity = TD_HookVelocity + end if + + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_STRING ) then + TD_StringConnectionMode = 10 + if (TD_KellyOldStatus9==1 .and. TD_KellyNewStatus10/=TD_KellyOldStatus10) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus10 = TD_KellyNewStatus10 + TD_KellyOldStatus9 = 0 + end if + if ( Get_Slips() == SLIPS_SET_END ) then + !if ( TD_HookVelocity>0. ) then + ! Print*, '*** UnSet Slips ***' !??????????????????? + !end if + TD_TDSHeight = TD_HookHeight-TD_TDSLength-TD_TDSToolJointLength !????????????? + TD_TDSElevatorHeight = TD_HookHeight-TD_TDSElevatorLength !????????????? + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + else + TD_TDSHeight = TD_HookHeight-TD_TDSLength-TD_TDSToolJointLength !????????????? + TD_TDSElevatorHeight = TD_HookHeight-TD_TDSElevatorLength !????????????? + TD_ConnectionHeight = TD_TDSHeight + TD_StringVelocity = TD_HookVelocity + end if + + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_LATCH_STRING ) then + TD_StringConnectionMode = 11 + if (TD_KellyOldStatus9==1 .and. TD_KellyNewStatus11/=TD_KellyOldStatus11) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus11 = TD_KellyNewStatus11 + TD_KellyOldStatus9 = 0 + else if (TD_KellyOldStatus12==1 .and. TD_KellyNewStatus11/=TD_KellyOldStatus11) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus11 = TD_KellyNewStatus11 + TD_KellyOldStatus12 = 0 + else if (TD_KellyOldStatus13==1 .and. TD_KellyNewStatus11/=TD_KellyOldStatus11) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus11 = TD_KellyNewStatus11 + TD_KellyOldStatus13 = 0 + else if (TD_KellyOldStatus16==1 .and. TD_KellyNewStatus11/=TD_KellyOldStatus11) then + TD_ConnectionHeight = TD_ConnectionHeight+(TD_DrillStems(kk)%LengthIni) + TD_KellyOldStatus11 = TD_KellyNewStatus11 + TD_KellyOldStatus16 = 0 + else if (TD_KellyOldStatus17==1 .and. TD_KellyNewStatus11/=TD_KellyOldStatus11) then + TD_ConnectionHeight = TD_ConnectionHeight+(3.d0*TD_DrillStems(kk)%LengthIni) + TD_KellyOldStatus11 = TD_KellyNewStatus11 + TD_KellyOldStatus17 = 0 + end if + TD_TDSHeight = TD_HookHeight-TD_TDSLength !????????????? + TD_TDSElevatorHeight = TD_HookHeight-TD_TDSElevatorLength !????????????? + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_STRING ) then + TD_StringConnectionMode = 12 + if (TD_KellyOldStatus11==1 .and. TD_KellyNewStatus12/=TD_KellyOldStatus12) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus12 = TD_KellyNewStatus12 + TD_KellyOldStatus11 = 0 + else if (TD_KellyOldStatus14==1 .and. TD_KellyNewStatus12/=TD_KellyOldStatus12) then + TD_ConnectionHeight = TD_ConnectionHeight+(3.d0*TD_DrillStems(kk)%LengthIni) + TD_KellyOldStatus12 = TD_KellyNewStatus12 + TD_KellyOldStatus14 = 0 + else if (TD_KellyOldStatus15==1 .and. TD_KellyNewStatus12/=TD_KellyOldStatus12) then + TD_ConnectionHeight = TD_ConnectionHeight+(TD_DrillStems(kk)%LengthIni) + TD_KellyOldStatus12 = TD_KellyNewStatus12 + TD_KellyOldStatus15 = 0 + end if + if ( Get_Slips() == SLIPS_SET_END ) then + !if ( TD_HookVelocity>0. ) then + ! Print*, '*** UnSet Slips ***' !??????????????????? + !end if + TD_TDSHeight = TD_HookHeight-TD_TDSLength !????????????? + TD_TDSElevatorHeight = TD_HookHeight-TD_TDSElevatorLength !????????????? + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + else + TD_TDSHeight = TD_HookHeight-TD_TDSLength !????????????? + TD_TDSElevatorHeight = TD_HookHeight-TD_TDSLength-TD_TDSElevatorLength !????????????? + TD_ConnectionHeight = TD_HookHeight-TD_TDSElevatorLength+(LengthSum+TD_TDSElevatorECG) !????????????? + TD_StringVelocity = TD_HookVelocity + end if + + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_NOTHING ) then + TD_StringConnectionMode = 13 + if (TD_KellyOldStatus9==1 .and. TD_KellyNewStatus13/=TD_KellyOldStatus13) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus13 = TD_KellyNewStatus13 + TD_KellyOldStatus9 = 0 + else if (TD_KellyOldStatus11==1 .and. TD_KellyNewStatus13/=TD_KellyOldStatus13) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus13 = TD_KellyNewStatus13 + TD_KellyOldStatus11 = 0 + else if (TD_KellyOldStatus12==1 .and. TD_KellyNewStatus13/=TD_KellyOldStatus13) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus13 = TD_KellyNewStatus13 + TD_KellyOldStatus12 = 0 + else if (TD_KellyOldStatus14==1 .and. TD_KellyNewStatus13/=TD_KellyOldStatus13) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus13 = TD_KellyNewStatus13 + TD_KellyOldStatus14 = 0 + else if (TD_KellyOldStatus15==1 .and. TD_KellyNewStatus13/=TD_KellyOldStatus13) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus13 = TD_KellyNewStatus13 + TD_KellyOldStatus15 = 0 + else if (TD_KellyOldStatus16==1 .and. TD_KellyNewStatus13/=TD_KellyOldStatus13) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus13 = TD_KellyNewStatus13 + TD_KellyOldStatus16 = 0 + end if + TD_TDSHeight = TD_HookHeight-TD_TDSLength !????????????? + TD_TDSElevatorHeight = TD_HookHeight-TD_TDSElevatorLength !????????????? + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_STAND ) then + TD_StringConnectionMode = 14 + if (TD_KellyOldStatus12==1 .and. TD_KellyNewStatus14/=TD_KellyOldStatus14) then + TD_ConnectionHeight = TD_ConnectionHeight-(3.d0*TD_DrillStems(kk)%LengthIni) + TD_KellyOldStatus14 = TD_KellyNewStatus14 + TD_KellyOldStatus12 = 0 + else if (TD_KellyOldStatus13==1 .and. TD_KellyNewStatus14/=TD_KellyOldStatus14) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus14 = TD_KellyNewStatus14 + TD_KellyOldStatus13 = 0 + else if (TD_KellyOldStatus17==1 .and. TD_KellyNewStatus14/=TD_KellyOldStatus14) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus14 = TD_KellyNewStatus14 + TD_KellyOldStatus17 = 0 + end if + TD_TDSHeight = TD_HookHeight-TD_TDSLength !????????????? + TD_TDSElevatorHeight = TD_HookHeight-TD_TDSElevatorLength !????????????? + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_CONNECTION_SINGLE ) then + TD_StringConnectionMode = 15 + if (TD_KellyOldStatus12==1 .and. TD_KellyNewStatus15/=TD_KellyOldStatus15) then + TD_ConnectionHeight = TD_ConnectionHeight-(TD_DrillStems(kk)%LengthIni) + TD_KellyOldStatus15 = TD_KellyNewStatus15 + TD_KellyOldStatus12 = 0 + else if (TD_KellyOldStatus13==1 .and. TD_KellyNewStatus15/=TD_KellyOldStatus15) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus15 = TD_KellyNewStatus15 + TD_KellyOldStatus13 = 0 + else if (TD_KellyOldStatus16==1 .and. TD_KellyNewStatus15/=TD_KellyOldStatus15) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus15 = TD_KellyNewStatus15 + TD_KellyOldStatus16 = 0 + end if + TD_TDSHeight = TD_HookHeight-TD_TDSLength !????????????? + TD_TDSElevatorHeight = TD_HookHeight-TD_TDSElevatorLength !????????????? + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_LATCH_SINGLE ) then + TD_StringConnectionMode = 16 + if (TD_KellyOldStatus11==1 .and. TD_KellyNewStatus16/=TD_KellyOldStatus16) then + TD_ConnectionHeight = TD_ConnectionHeight-(TD_DrillStems(kk)%LengthIni) + TD_KellyOldStatus16 = TD_KellyNewStatus16 + TD_KellyOldStatus11 = 0 + else if (TD_KellyOldStatus13==1 .and. TD_KellyNewStatus16/=TD_KellyOldStatus16) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus16 = TD_KellyNewStatus16 + TD_KellyOldStatus13 = 0 + else if (TD_KellyOldStatus15==1 .and. TD_KellyNewStatus16/=TD_KellyOldStatus16) then + TD_ConnectionHeight = TD_ConnectionHeight + TD_KellyOldStatus16 = TD_KellyNewStatus16 + TD_KellyOldStatus15 = 0 + end if + TD_TDSHeight = TD_HookHeight-TD_TDSLength !????????????? + TD_TDSElevatorHeight = TD_HookHeight-TD_TDSElevatorLength !????????????? + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + + else if ( Get_TdsConnectionModes()==TDS_CONNECTION_NOTHING .and. Get_TdsElevatorModes()==TDS_ELEVATOR_LATCH_STAND ) then + TD_StringConnectionMode = 17 + if (TD_KellyOldStatus11==1 .and. TD_KellyNewStatus17/=TD_KellyOldStatus17) then + TD_ConnectionHeight = TD_ConnectionHeight-(3.d0*TD_DrillStems(kk)%LengthIni) + TD_KellyOldStatus17 = TD_KellyNewStatus17 + TD_KellyOldStatus11 = 0 + else if (TD_KellyOldStatus14==1 .and. TD_KellyNewStatus17/=TD_KellyOldStatus17) then + TD_ConnectionHeight = TD_ConnectionHeight+(3.d0*TD_DrillStems(kk)%LengthIni) + TD_KellyOldStatus17 = TD_KellyNewStatus17 + TD_KellyOldStatus14 = 0 + end if + TD_TDSHeight = TD_HookHeight-TD_TDSLength !????????????? + TD_TDSElevatorHeight = TD_HookHeight-TD_TDSElevatorLength !????????????? + TD_ConnectionHeight = TD_ConnectionHeight + TD_StringVelocity = 0.0d0 + end if + + + end if + + !Print*, 'TD_StringConnectionMode=' , TD_StringConnectionMode + !print* , 'TD_ConnectionHeight=' , TD_ConnectionHeight + !Print*, 'TD_StringConnectionMode=' , TD_StringConnectionMode + !print*, 'TD_DrillStemComponentsNumbs=' , TD_DrillStemComponentsNumbs + !!Print*, 'TD_KellyNewStatus1=' , TD_KellyNewStatus1 + !Print*, 'TD_KellyOldStatus1=' , TD_KellyOldStatus1 + !Print*, 'TD_KellyNewStatus2=' , TD_KellyNewStatus2 + !Print*, 'TD_KellyOldStatus2=' , TD_KellyOldStatus2 + !Print*, 'TD_KellyNewStatus3=' , TD_KellyNewStatus3 + !Print*, 'TD_KellyOldStatus3=' , TD_KellyOldStatus3 + + + + + + + if ( (any(TD_StringConnectionMode==(/1,9,10/))) .or. CloseSafetyValve==.true. ) then !for fluid module + TD_FluidStringConnectionMode = 1 !string is connected + !else if ( (any(TD_StringConnectionMode==(/1,9,10/))) .or. CloseSafetyValve==.true. ) then + ! + else + TD_FluidStringConnectionMode = 0 !string is not connected + end if + + + + + + +!==================================================== +! Zero String Speed +!==================================================== + if ( abs(TD_StringVelocity)<=0.05d0 ) then ! [ft/s] + TD_ZeroStringSpeed = 1 + Call Set_ZeroStringSpeed(.true.) + else + TD_ZeroStringSpeed = 0 + Call Set_ZeroStringSpeed(.false.) + end if + + + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_DrillingSubs/TD_WellElementsConfiguration.f90 b/TorqueDrag/TD_DrillingSubs/TD_WellElementsConfiguration.f90 new file mode 100644 index 0000000..69b00e8 --- /dev/null +++ b/TorqueDrag/TD_DrillingSubs/TD_WellElementsConfiguration.f90 @@ -0,0 +1,28 @@ +subroutine TD_WellElementsConfiguration + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + + + implicit none + + Integer :: i, j + + +!==================================================== +! Modified Well Elements Data +!==================================================== + + Do i = 1 , TD_ROPHoleNumbs + !TD_ROPHole(i)%TopDepth = TD_WellGeo(TD_WellIntervalsCount)%TopDepth + TD_ROPHole(i)%DownDepth = TD_WellGeo(TD_WellIntervalsCount)%DownDepth + TD_ROPHole(i)%Length = TD_WellGeo(TD_WellIntervalsCount)%IntervalLength + TD_ROPHole(i)%Id = TD_ROPHole(i)%Id !!??????????? + End Do + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_DrillingSubs/TD_WellGeoConfiguration.f90 b/TorqueDrag/TD_DrillingSubs/TD_WellGeoConfiguration.f90 new file mode 100644 index 0000000..10c0136 --- /dev/null +++ b/TorqueDrag/TD_DrillingSubs/TD_WellGeoConfiguration.f90 @@ -0,0 +1,51 @@ +subroutine TD_WellGeoConfiguration + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + Use sROP_Variables + Use CDataDisplayConsoleVariables + Use CWarningsVariables + + + + implicit none + + +!==================================================== +! Well Geometry Data Modification +!==================================================== + + +!=====> ROP Calculation + if ( TD_DrillStems(1)%ComponentType==0 .and. MaximumWellDepthExceeded==.false. ) then + Call ROP_MainCalculation + else + Rate_of_Penetration = 0.d0 + Call Set_ROP(Rate_of_Penetration) + end if + + + + +!=====> ROPHole Data correction + TD_ROP = (Rate_of_Penetration/3600.d0) ! [ft/s] + TD_WellGeo(TD_WellIntervalsCount)%VerticalDepth = TD_WellGeo(TD_WellIntervalsCount)%VerticalDepth++((TD_ROP*TD_TimeStep)*cos(TD_WellGeo(TD_WellIntervalsCount)%StartAngle)) + TD_WellGeo(TD_WellIntervalsCount)%IntervalLength = TD_WellGeo(TD_WellIntervalsCount)%IntervalLength+(TD_ROP*TD_TimeStep) !????????check + TD_WellGeo(TD_WellIntervalsCount)%DownDepth = TD_WellGeo(TD_WellIntervalsCount)%TopDepth+TD_WellGeo(TD_WellIntervalsCount)%IntervalLength + + + + + +!=====> Well Total Length Calculation + TD_WellTotalLength = TD_WellGeo(TD_WellIntervalsCount)%DownDepth + TD_WellTotalVerticalLength = TD_WellTotalVerticalLength+((TD_ROP*TD_TimeStep)*cos(TD_WellGeo(TD_WellIntervalsCount)%StartAngle)) + + Call Set_TotalDepth(real(TD_WellTotalLength,8)) + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_DrillingSubs/TVD_Calculator.f90 b/TorqueDrag/TD_DrillingSubs/TVD_Calculator.f90 new file mode 100644 index 0000000..4bed1d0 --- /dev/null +++ b/TorqueDrag/TD_DrillingSubs/TVD_Calculator.f90 @@ -0,0 +1,78 @@ +subroutine TVD_Calculator(MeasuredDepth,VerticalDepth) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_StringConnectionData + + + implicit none + + Integer :: kk + REAL(8) :: MeasuredDepth , VerticalDepth + REAL(8) :: mm , nn , dl , StartAngle , EndAngle + + + + + + if ( MeasuredDepth<=0. ) then + VerticalDepth = MeasuredDepth + !Angle(ii) = 0.d0 + return + end if + + + + mm = 0.d0 !last vertical depth + nn = 0.d0 !last measured depth + EndAngle = TD_WellGeo(1)%StartAngle + !Angle(jj) = EndAngle + + do kk = 1, TD_WellIntervalsCount + StartAngle = EndAngle + if ( MeasuredDepth>TD_WellGeo(kk)%TopDepth ) then + if ( MeasuredDepth>TD_WellGeo(kk)%DownDepth ) then + dl = TD_WellGeo(kk)%DownDepth-nn ![ft] + nn = TD_WellGeo(kk)%DownDepth + if ( TD_WellGeo(kk)%HoleType==0 ) then + EndAngle = StartAngle + VerticalDepth = mm+(dl*cos(TD_WellGeo(kk)%StartAngle)) ![ft] + !Angle(ii) = EndAngle + else if ( TD_WellGeo(kk)%HoleType==1 ) then + EndAngle = StartAngle+(dl/TD_WellGeo(kk)%RCurvature) !????? + VerticalDepth = mm+(TD_WellGeo(kk)%RCurvature*sin(abs(EndAngle)-abs(StartAngle))*cos(abs(StartAngle)))-(TD_WellGeo(kk)%RCurvature*(1.-cos(abs(EndAngle)-abs(StartAngle)))*sin(abs(StartAngle))) + !Angle(ii) = EndAngle + else if ( TD_WellGeo(kk)%HoleType==2 ) then + EndAngle = StartAngle-(dl/TD_WellGeo(kk)%RCurvature) !????? + VerticalDepth = mm+(TD_WellGeo(kk)%RCurvature*sin(abs(abs(EndAngle)-abs(StartAngle)))*cos(abs(StartAngle)))+(TD_WellGeo(kk)%RCurvature*(1.-cos(abs(abs(EndAngle)-abs(StartAngle))))*sin(abs(StartAngle))) + !Angle(ii) = EndAngle + end if + mm = VerticalDepth + else + dl = MeasuredDepth-nn + nn = MeasuredDepth + if ( TD_WellGeo(kk)%HoleType==0 ) then + EndAngle = StartAngle + VerticalDepth = mm+(dl*cos(TD_WellGeo(kk)%StartAngle)) + !Angle(ii) = EndAngle + else if ( TD_WellGeo(kk)%HoleType==1 ) then + EndAngle = StartAngle+(dl/TD_WellGeo(kk)%RCurvature) !????? + VerticalDepth = mm+(TD_WellGeo(kk)%RCurvature*sin(abs(EndAngle)-abs(StartAngle))*cos(abs(StartAngle)))-(TD_WellGeo(kk)%RCurvature*(1.-cos(abs(EndAngle)-abs(StartAngle)))*sin(abs(StartAngle))) + !Angle(ii) = EndAngle + else if ( TD_WellGeo(kk)%HoleType==2 ) then + EndAngle = StartAngle-(dl/TD_WellGeo(kk)%RCurvature) !????? + VerticalDepth = mm+(TD_WellGeo(kk)%RCurvature*sin(abs(abs(EndAngle)-abs(StartAngle)))*cos(abs(StartAngle)))+(TD_WellGeo(kk)%RCurvature*(1.-cos(abs(abs(EndAngle)-abs(StartAngle))))*sin(abs(StartAngle))) + !Angle(ii) = EndAngle + end if + mm = VerticalDepth + exit + end if + end if + end do + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_BouyancyFactor.f90 b/TorqueDrag/TD_Forces/TD_BouyancyFactor.f90 new file mode 100644 index 0000000..3e3f24f --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_BouyancyFactor.f90 @@ -0,0 +1,32 @@ +subroutine TD_BouyancyFactor (i) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + + + + +!==================================================== +! Bouyancy Factor Calculation +!==================================================== + + if ( TD_DrillStems(i)%MudDensityOut==0.d0 .or. TD_DrillStems(i)%MudDensityIn==0.d0 ) then + TD_DrillStems(i)%BouyancyFactor = 0.d0 + else + TD_DrillStems(i)%BouyancyFactor = 1.d0-( ((TD_DrillStems(i)%MudDensityOut*(TD_DrillStems(i)%Od**2)/4.0d0) & + -(TD_DrillStems(i)%MudDensityIn*(TD_DrillStems(i)%Id**2)/4.0d0)) & + /(TD_DrillStems(i)%Density*((TD_DrillStems(i)%Od**2-TD_DrillStems(i)%Id**2))/4.0d0) ) + end if + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceDownB.f90 b/TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceDownB.f90 new file mode 100644 index 0000000..8e53b0b --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceDownB.f90 @@ -0,0 +1,65 @@ +subroutine TD_ForceDownB(i,TD_SemiMudVisc) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + Real(8) :: TD_SemiMudVisc + + If (i==1) then + TD_DrillStems(1)%Force1 = -TD_WeightOnBit + TD_DrillStems(1)%Force2 = (TD_DrillStems(1)%Force1 * exp(-(TD_SemiMudVisc*TD_DrillStems(1)%MudVisCorrectCoef)*(TD_DrillStems(1)%EndAngle-TD_DrillStems(1)%StartAngle))) - & + (TD_DrillStems(1)%WeightperLength * TD_DrillStems(1)%RCurvature * & + (sin(TD_DrillStems(1)%EndAngle) - (exp(-(TD_SemiMudVisc*TD_DrillStems(1)%MudVisCorrectCoef) * & + (TD_DrillStems(1)%EndAngle-TD_DrillStems(1)%StartAngle)) * & + sin(TD_DrillStems(1)%StartAngle)))) + + if (TD_DrillStems(i)%ComponentType==0) then + TD_DrillStems(i)%Torque = TD_BitTorque + else + TD_DrillStems(i)%Torque = (TD_SemiMudVisc * TD_DrillStems(i)%RtoolJoint * (TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%WeightperLength * & + TD_DrillStems(i)%RCurvature * sin(TD_DrillStems(i)%StartAngle))) * & + abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)) + & + (2.0d0 * TD_SemiMudVisc * TD_DrillStems(i)%RtoolJoint * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (cos(TD_DrillStems(i)%EndAngle) - cos(TD_DrillStems(i)%StartAngle))) + end if + + + + return + End If + + + +!=========> F1 Calculation + TD_DrillStems(i)%Force1 = TD_DrillStems(i-1)%Force2 + + +!=========> F2 Calculation + TD_DrillStems(i)%Force2 = (TD_DrillStems(i)%Force1 * exp(-(TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))) - & + (TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (sin(TD_DrillStems(i)%EndAngle) - (exp(-(TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef) * & + (TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)) * & + sin(TD_DrillStems(i)%StartAngle)))) + + + + ! + ! Strains(i)%Dl = TDForces(i)%Force * (Elements(i)%Length ) / & + ! (Elements(i)%Area * Element%ElasticModule) + ! + + TD_DrillStems(i)%Torque = (TD_SemiMudVisc * TD_DrillStems(i)%RtoolJoint * (TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%WeightperLength * & + TD_DrillStems(i)%RCurvature * sin(TD_DrillStems(i)%StartAngle))) * & + abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)) + & + (2.0d0 * TD_SemiMudVisc * TD_DrillStems(i)%RtoolJoint * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (cos(TD_DrillStems(i)%EndAngle) - cos(TD_DrillStems(i)%StartAngle))) + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceDownBRot.f90 b/TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceDownBRot.f90 new file mode 100644 index 0000000..d53573b --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceDownBRot.f90 @@ -0,0 +1,56 @@ +subroutine TD_ForceDownBRot(i,TD_SemiMudVisc) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + Real(8) :: TD_SemiMudVisc + + + If (i==1) then + TD_DrillStems(1)%Force1 = -TD_WeightOnBit + TD_DrillStems(1)%Force2 = TD_DrillStems(1)%Force1 + (TD_DrillStems(1)%Force1 * & + (exp(-(TD_SemiMudVisc*TD_DrillStems(1)%MudVisCorrectCoef)*abs(TD_DrillStems(1)%EndAngle-TD_DrillStems(1)%StartAngle))-1.0d0) * & + sin(TD_DrillStems(1)%CombVelRatio )) + (TD_DrillStems(1)%BouyancyFactor * & + TD_DrillStems(1)%WeightperLength * TD_DrillStems(1)%Length * & + ((sin(TD_DrillStems(1)%EndAngle)-sin(TD_DrillStems(1)%StartAngle))/ & + (TD_DrillStems(1)%EndAngle-TD_DrillStems(1)%StartAngle))) + + + if (TD_DrillStems(i)%ComponentType==0) then + TD_DrillStems(i)%Torque = TD_BitTorque + else + TD_DrillStems(i)%Torque = TD_SemiMudVisc*TD_DrillStems(i)%RtoolJoint*TD_DrillStems(i)%Force1* & + abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)*cos(TD_DrillStems(i)%CombVelRatio) + end if + + + return + End If + + +!=========> F1 Calculation + TD_DrillStems(i)%Force1 = TD_DrillStems(i-1)%Force2 + + +!=========> F2 Calculation + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%Force1 * & + (exp(-(TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))-1.0d0) * & + sin(TD_DrillStems(i)%CombVelRatio )) + (TD_DrillStems(i)%BouyancyFactor * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + ((sin(TD_DrillStems(i)%EndAngle)-sin(TD_DrillStems(i)%StartAngle))/ & + (TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))) + ! + !Strains(i)%Dl = TDForces(i)%Force * (Elements(i)%Length) / & + ! (Elements(i)%Area * Element%ElasticModule) + ! + TD_DrillStems(i)%Torque = TD_SemiMudVisc*TD_DrillStems(i)%RtoolJoint*TD_DrillStems(i)%Force1* & + abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)*cos(TD_DrillStems(i)%CombVelRatio) + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceUpB.f90 b/TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceUpB.f90 new file mode 100644 index 0000000..7d2a6cd --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceUpB.f90 @@ -0,0 +1,75 @@ +subroutine TD_ForceUpB(i,TD_SemiMudVisc) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + Real(8) :: TD_SemiMudVisc + + If (i==1) then + TD_DrillStems(1)%Force1 = -TD_WeightOnBit + TD_DrillStems(1)%Force2 = (TD_DrillStems(1)%Force1 * exp((TD_SemiMudVisc*TD_DrillStems(1)%MudVisCorrectCoef)*(TD_DrillStems(1)%EndAngle-TD_DrillStems(1)%StartAngle))) - & + (((TD_DrillStems(1)%WeightperLength * TD_DrillStems(1)%RCurvature) / (1 + (TD_SemiMudVisc*TD_DrillStems(1)%MudVisCorrectCoef)**2)) * & + (((1-(TD_SemiMudVisc*TD_DrillStems(1)%MudVisCorrectCoef)**2)*(sin(TD_DrillStems(1)%EndAngle) - & + (exp((TD_SemiMudVisc*TD_DrillStems(1)%MudVisCorrectCoef)*(TD_DrillStems(1)%EndAngle-TD_DrillStems(1)%StartAngle)) * sin(TD_DrillStems(1)%StartAngle))))) - & + (2.0d0* (TD_SemiMudVisc*TD_DrillStems(1)%MudVisCorrectCoef)*(cos(TD_DrillStems(1)%EndAngle) - & + (exp((TD_SemiMudVisc*TD_DrillStems(1)%MudVisCorrectCoef)*(TD_DrillStems(1)%EndAngle-TD_DrillStems(1)%StartAngle))* & + cos(TD_DrillStems(1)%StartAngle))))) + + + if (TD_DrillStems(i)%ComponentType==0) then + TD_DrillStems(i)%Torque = TD_BitTorque + else + TD_DrillStems(i)%Torque = (TD_DrillStems(i)%MudViscosity * TD_DrillStems(i)%RtoolJoint * (TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%WeightperLength * & + TD_DrillStems(i)%RCurvature * sin(TD_DrillStems(i)%StartAngle))) * & + abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)) + & + (2.0d0 * TD_DrillStems(i)%MudViscosity * TD_DrillStems(i)%RtoolJoint * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (cos(TD_DrillStems(i)%EndAngle) - cos(TD_DrillStems(i)%StartAngle))) + end if + + + return + End If + + + +!=========> F1 Calculation + TD_DrillStems(i)%Force1 = TD_DrillStems(i-1)%Force2 + + +!=========> F2 Calculation + TD_DrillStems(i)%Force2 = (TD_DrillStems(i)%Force1 * exp((TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))) - & + (((TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature) / (1 + (TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)**2)) * & + (((1-(TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)**2)*(sin(TD_DrillStems(i)%EndAngle) - & + (exp((TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)) * sin(TD_DrillStems(i)%StartAngle))))) - & + (2.0d0* (TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(cos(TD_DrillStems(i)%EndAngle) - & + (exp((TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))* & + cos(TD_DrillStems(i)%StartAngle))))) + ! + ! Strains(i)%Dl = TDForces(i)%Force * (Elements(i)%Length ) / & + ! (Elements(i)%Area * Element%ElasticModule) + ! + TD_DrillStems(i)%Torque = (TD_DrillStems(i)%MudViscosity * TD_DrillStems(i)%RtoolJoint * (TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%WeightperLength * & + TD_DrillStems(i)%RCurvature * sin(TD_DrillStems(i)%StartAngle))) * & + abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)) + & + (2.0d0 * TD_DrillStems(i)%MudViscosity * TD_DrillStems(i)%RtoolJoint * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (cos(TD_DrillStems(i)%EndAngle) - cos(TD_DrillStems(i)%StartAngle))) + + !!if (TD_DrillStems(i)%Torque>500.) then + ! print* , 'TD_TotalTorqueb=' , i , TD_TotalTorque , TD_DrillStems(i)%Torque , TD_WeightOnBit , sin(30.) , sin(3.14/6.) + ! print* , 'torquepropertiesb=' , TD_DrillStems(i)%MudViscosity * TD_DrillStems(i)%RtoolJoint , (TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%WeightperLength * & + ! TD_DrillStems(i)%RCurvature * sin(TD_DrillStems(i)%StartAngle))) , abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle), & + ! 2.0d0 * TD_DrillStems(i)%MudViscosity * TD_DrillStems(i)%RtoolJoint * & + ! TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature , (cos(TD_DrillStems(i)%EndAngle) - cos(TD_DrillStems(i)%StartAngle)) + ! print* , 'propertiesb=' , TD_DrillStems(i)%Force2 , TD_DrillStems(i)%Force1 , TD_DrillStems(i)%MudViscosity , TD_DrillStems(i)%EndAngle , TD_DrillStems(i)%StartAngle , TD_DrillStems(i)%WeightperLength , TD_DrillStems(i)%MudVisCorrectCoef , TD_DrillStems(i)%RCurvature + ! !end if + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceUpBRot.f90 b/TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceUpBRot.f90 new file mode 100644 index 0000000..863995f --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_BuildArea/TD_ForceUpBRot.f90 @@ -0,0 +1,56 @@ +subroutine TD_ForceUpBRot(i,TD_SemiMudVisc) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + Real(8) :: TD_SemiMudVisc + + + If (i==1) then + TD_DrillStems(1)%Force1 = -TD_WeightOnBit + TD_DrillStems(1)%Force2 = TD_DrillStems(1)%Force1 + (TD_DrillStems(1)%Force1 * & + (exp(+(TD_SemiMudVisc*TD_DrillStems(1)%MudVisCorrectCoef)*abs(TD_DrillStems(1)%EndAngle-TD_DrillStems(1)%StartAngle))-1.0d0) * & + sin(TD_DrillStems(1)%CombVelRatio )) + (TD_DrillStems(1)%BouyancyFactor * & + TD_DrillStems(1)%WeightperLength * TD_DrillStems(1)%Length * & + ((sin(TD_DrillStems(1)%EndAngle)-sin(TD_DrillStems(1)%StartAngle))/ & + (TD_DrillStems(1)%EndAngle-TD_DrillStems(1)%StartAngle))) + + + if (TD_DrillStems(i)%ComponentType==0) then + TD_DrillStems(i)%Torque = TD_BitTorque + else + TD_DrillStems(i)%Torque = TD_SemiMudVisc*TD_DrillStems(i)%RtoolJoint*TD_DrillStems(i)%Force1* & + abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)*cos(TD_DrillStems(i)%CombVelRatio) + end if + + + return + End If + + +!=========> F1 Calculation + TD_DrillStems(i)%Force1 = TD_DrillStems(i-1)%Force2 + + +!=========> F2 Calculation + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%Force1 * & + (exp(+(TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))-1.0d0) * & + sin(TD_DrillStems(i)%CombVelRatio )) + (TD_DrillStems(i)%BouyancyFactor * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + ((sin(TD_DrillStems(i)%EndAngle)-sin(TD_DrillStems(i)%StartAngle))/ & + (TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))) + ! + !Strains(i)%Dl = TDForces(i)%Force * (Elements(i)%Length) / & + ! (Elements(i)%Area * Element%ElasticModule) + ! + TD_DrillStems(i)%Torque = TD_SemiMudVisc*TD_DrillStems(i)%RtoolJoint*TD_DrillStems(i)%Force1* & + abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)*cos(TD_DrillStems(i)%CombVelRatio) + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_CombinedMotionData.f90 b/TorqueDrag/TD_Forces/TD_CombinedMotionData.f90 new file mode 100644 index 0000000..ebb4df9 --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_CombinedMotionData.f90 @@ -0,0 +1,21 @@ +subroutine TD_CombinedMotionData (i) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + + + + TD_DrillStems(i)%CombVelRatio = atan( TD_DrillStemAxialVelocity/TD_DrillStemRotVelocity ) + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_DropArea/TD_ForceDownD.f90 b/TorqueDrag/TD_Forces/TD_DropArea/TD_ForceDownD.f90 new file mode 100644 index 0000000..21d94d7 --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_DropArea/TD_ForceDownD.f90 @@ -0,0 +1,61 @@ +subroutine TD_ForceDownD(i,TD_SemiMudVisc) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + Real(8) :: TD_SemiMudVisc + + + If (i==1) then + TD_DrillStems(1)%Force1 = -TD_WeightOnBit + TD_DrillStems(i)%Force2 = (TD_DrillStems(i)%Force1 * exp(-(TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))) + & + (TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (sin(TD_DrillStems(i)%EndAngle) - (exp(-(TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef) * & + (TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)) * & + sin(TD_DrillStems(i)%StartAngle)))) + + + if (TD_DrillStems(i)%ComponentType==0) then + TD_DrillStems(i)%Torque = TD_BitTorque + else + TD_DrillStems(i)%Torque = (TD_SemiMudVisc * TD_DrillStems(i)%RtoolJoint * (TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%WeightperLength * & + TD_DrillStems(i)%RCurvature * sin(TD_DrillStems(i)%StartAngle))) * & + (TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)) - & + (2.0d0 * TD_SemiMudVisc * TD_DrillStems(i)%RtoolJoint * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (cos(TD_DrillStems(i)%EndAngle) - cos(TD_DrillStems(i)%StartAngle))) + end if + + + return + End If + + +!=========> F1 Calculation + TD_DrillStems(i)%Force1 = TD_DrillStems(i-1)%Force2 + + +!=========> F2 Calculation + TD_DrillStems(i)%Force2 = (TD_DrillStems(i)%Force1 * exp(-(TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))) + & + (TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (sin(TD_DrillStems(i)%EndAngle) - (exp(-(TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef) * & + (TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)) * & + sin(TD_DrillStems(i)%StartAngle)))) + ! + ! Strains(i)%Dl = TDForces(i)%Force * (Elements(i)%Length ) / & + ! (Elements(i)%Area * Element%ElasticModule) + ! + TD_DrillStems(i)%Torque = (TD_SemiMudVisc * TD_DrillStems(i)%RtoolJoint * (TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%WeightperLength * & + TD_DrillStems(i)%RCurvature * sin(TD_DrillStems(i)%StartAngle))) * & + (TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)) - & + (2.0d0 * TD_SemiMudVisc * TD_DrillStems(i)%RtoolJoint * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (cos(TD_DrillStems(i)%EndAngle) - cos(TD_DrillStems(i)%StartAngle))) + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_DropArea/TD_ForceDownDRot.f90 b/TorqueDrag/TD_Forces/TD_DropArea/TD_ForceDownDRot.f90 new file mode 100644 index 0000000..16235f4 --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_DropArea/TD_ForceDownDRot.f90 @@ -0,0 +1,56 @@ +subroutine TD_ForceDownDRot(i,TD_SemiMudVisc) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + Real(8) :: TD_SemiMudVisc + + + If (i==1) then + TD_DrillStems(1)%Force1 = -TD_WeightOnBit + TD_DrillStems(1)%Force2 = TD_DrillStems(1)%Force1 + (TD_DrillStems(1)%Force1 * & + (exp(-(TD_SemiMudVisc*TD_DrillStems(1)%MudVisCorrectCoef)*abs(TD_DrillStems(1)%EndAngle-TD_DrillStems(1)%StartAngle))-1.0d0) * & + sin(TD_DrillStems(1)%CombVelRatio )) + (TD_DrillStems(1)%BouyancyFactor * & + TD_DrillStems(1)%WeightperLength * TD_DrillStems(1)%Length * & + ((sin(TD_DrillStems(1)%EndAngle)-sin(TD_DrillStems(1)%StartAngle))/ & + (TD_DrillStems(1)%EndAngle-TD_DrillStems(1)%StartAngle))) + + + if (TD_DrillStems(i)%ComponentType==0) then + TD_DrillStems(i)%Torque = TD_BitTorque + else + TD_DrillStems(i)%Torque = TD_SemiMudVisc*TD_DrillStems(i)%RtoolJoint*TD_DrillStems(i)%Force1* & + abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)*cos(TD_DrillStems(i)%CombVelRatio) + end if + + + return + End If + + +!=========> F1 Calculation + TD_DrillStems(i)%Force1 = TD_DrillStems(i-1)%Force2 + + +!=========> F2 Calculation + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%Force1 * & + (exp(-(TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))-1.0d0) * & + sin(TD_DrillStems(i)%CombVelRatio )) + (TD_DrillStems(i)%BouyancyFactor * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + ((sin(TD_DrillStems(i)%EndAngle)-sin(TD_DrillStems(i)%StartAngle))/ & + (TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))) + ! + !Strains(i)%Dl = TDForces(i)%Force * (Elements(i)%Length) / & + ! (Elements(i)%Area * Element%ElasticModule) + ! + TD_DrillStems(i)%Torque = TD_SemiMudVisc*TD_DrillStems(i)%RtoolJoint*TD_DrillStems(i)%Force1* & + abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)*cos(TD_DrillStems(i)%CombVelRatio) + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_DropArea/TD_ForceUpD.f90 b/TorqueDrag/TD_Forces/TD_DropArea/TD_ForceUpD.f90 new file mode 100644 index 0000000..7ccea69 --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_DropArea/TD_ForceUpD.f90 @@ -0,0 +1,68 @@ +subroutine TD_ForceUpD(i,TD_SemiMudVisc) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + Real(8) :: TD_SemiMudVisc + + + If (i==1) then + TD_DrillStems(1)%Force1 = -TD_WeightOnBit + TD_DrillStems(i)%Force2 = (TD_DrillStems(i)%Force1 * exp((TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))) + & + (((TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature) / (1 + (TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)**2)) * & + (((1-(TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)**2)*(sin(TD_DrillStems(i)%EndAngle) - & + (exp((TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)) * sin(TD_DrillStems(i)%StartAngle))))) - & + (2.0d0* (TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(cos(TD_DrillStems(i)%EndAngle) - & + (exp((TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))* & + cos(TD_DrillStems(i)%StartAngle))))) + + + if (TD_DrillStems(i)%ComponentType==0) then + TD_DrillStems(i)%Torque = TD_BitTorque + else + TD_DrillStems(i)%Torque = (TD_DrillStems(i)%MudViscosity * TD_DrillStems(i)%RtoolJoint * (TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%WeightperLength * & + TD_DrillStems(i)%RCurvature * sin(TD_DrillStems(i)%StartAngle))) * & + (TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)) - & + (2.0d0 * TD_DrillStems(i)%MudViscosity * TD_DrillStems(i)%RtoolJoint * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (cos(TD_DrillStems(i)%EndAngle) - cos(TD_DrillStems(i)%StartAngle))) + end if + + + + return + End If + + + +!=========> F1 Calculation + TD_DrillStems(i)%Force1 = TD_DrillStems(i-1)%Force2 + + +!=========> F2 Calculation + TD_DrillStems(i)%Force2 = (TD_DrillStems(i)%Force1 * exp((TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))) + & + (((TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature) / (1 + (TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)**2)) * & + (((1-(TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)**2)*(sin(TD_DrillStems(i)%EndAngle) - & + (exp((TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)) * sin(TD_DrillStems(i)%StartAngle))))) - & + (2.0d0* (TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(cos(TD_DrillStems(i)%EndAngle) - & + (exp((TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))* & + cos(TD_DrillStems(i)%StartAngle))))) + + !Strains(i)%Dl = TDForces(i)%Force * (Elements(i)%Length) / & + ! (Elements(i)%Area * Element%ElasticModule) + ! + TD_DrillStems(i)%Torque = (TD_DrillStems(i)%MudViscosity * TD_DrillStems(i)%RtoolJoint * (TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%WeightperLength * & + TD_DrillStems(i)%RCurvature * sin(TD_DrillStems(i)%StartAngle))) * & + (TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)) - & + (2.0d0 * TD_DrillStems(i)%MudViscosity * TD_DrillStems(i)%RtoolJoint * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (cos(TD_DrillStems(i)%EndAngle) - cos(TD_DrillStems(i)%StartAngle))) + !return + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_DropArea/TD_ForceUpDRot.f90 b/TorqueDrag/TD_Forces/TD_DropArea/TD_ForceUpDRot.f90 new file mode 100644 index 0000000..1372d78 --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_DropArea/TD_ForceUpDRot.f90 @@ -0,0 +1,55 @@ +subroutine TD_ForceUpDRot(i,TD_SemiMudVisc) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + Real(8) :: TD_SemiMudVisc + + If (i==1) then + TD_DrillStems(1)%Force1 = -TD_WeightOnBit + TD_DrillStems(1)%Force2 = TD_DrillStems(1)%Force1 + (TD_DrillStems(1)%Force1 * & + (exp(+(TD_SemiMudVisc*TD_DrillStems(1)%MudVisCorrectCoef)*abs(TD_DrillStems(1)%EndAngle-TD_DrillStems(1)%StartAngle))-1.0d0) * & + sin(TD_DrillStems(1)%CombVelRatio )) + (TD_DrillStems(1)%BouyancyFactor * & + TD_DrillStems(1)%WeightperLength * TD_DrillStems(1)%Length * & + ((sin(TD_DrillStems(1)%EndAngle)-sin(TD_DrillStems(1)%StartAngle))/ & + (TD_DrillStems(1)%EndAngle-TD_DrillStems(1)%StartAngle))) + + + if (TD_DrillStems(i)%ComponentType==0) then + TD_DrillStems(i)%Torque = TD_BitTorque + else + TD_DrillStems(i)%Torque = TD_SemiMudVisc*TD_DrillStems(i)%RtoolJoint*TD_DrillStems(i)%Force1* & + abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)*cos(TD_DrillStems(i)%CombVelRatio) + end if + + + return + End If + + +!=========> F1 Calculation + TD_DrillStems(i)%Force1 = TD_DrillStems(i-1)%Force2 + + +!=========> F2 Calculation + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%Force1 * & + (exp(+(TD_SemiMudVisc*TD_DrillStems(i)%MudVisCorrectCoef)*abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))-1.0d0) * & + sin(TD_DrillStems(i)%CombVelRatio )) + (TD_DrillStems(i)%BouyancyFactor * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + ((sin(TD_DrillStems(i)%EndAngle)-sin(TD_DrillStems(i)%StartAngle))/ & + (TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle))) + ! + !Strains(i)%Dl = TDForces(i)%Force * (Elements(i)%Length) / & + ! (Elements(i)%Area * Element%ElasticModule) + ! + TD_DrillStems(i)%Torque = TD_SemiMudVisc*TD_DrillStems(i)%RtoolJoint*TD_DrillStems(i)%Force1* & + abs(TD_DrillStems(i)%EndAngle-TD_DrillStems(i)%StartAngle)*cos(TD_DrillStems(i)%CombVelRatio) + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_ForceCalculation.f90 b/TorqueDrag/TD_Forces/TD_ForceCalculation.f90 new file mode 100644 index 0000000..0338856 --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_ForceCalculation.f90 @@ -0,0 +1,138 @@ +subroutine TD_ForceCalculation + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + Real(8) :: TD_SemiMudVisc + + + + + if (TD_DrillStemForceType == 1) then + + Do i = 1 , TD_DrillStemComponentsNumbs + TD_SemiMudVisc = TD_DrillStems(i)%MudViscosity + if (TD_DrillStems(i)%HoleType == 0) then + Call TD_ForceUpS(i,TD_SemiMudVisc) + else if (TD_DrillStems(i)%HoleType == 1) then + Call TD_ForceUpB(i,TD_SemiMudVisc) + else if (TD_DrillStems(i)%HoleType == 2) then + Call TD_ForceUpD(i,TD_SemiMudVisc) + end if + Call TD_StrainCalculation(i) + Call TD_TorqueCalculation(i) + End Do + + else if (TD_DrillStemForceType == 2) then + + Do i = 1 , TD_DrillStemComponentsNumbs + TD_SemiMudVisc = TD_DrillStems(i)%MudViscosity + if (TD_DrillStems(i)%HoleType == 0) then + Call TD_ForceUpSRot(i,TD_SemiMudVisc) + else if (TD_DrillStems(i)%HoleType == 1) then + Call TD_ForceUpBRot(i,TD_SemiMudVisc) + else if (TD_DrillStems(i)%HoleType == 2) then + Call TD_ForceUpDRot(i,TD_SemiMudVisc) + end if + Call TD_StrainCalculation(i) + Call TD_TorqueCalculation(i) + End Do + + else if (TD_DrillStemForceType == 3) then + + Do i = 1 , TD_DrillStemComponentsNumbs + TD_SemiMudVisc = TD_DrillStems(i)%MudViscosity + if (TD_DrillStems(i)%HoleType == 0) then + Call TD_ForceDownS(i,TD_SemiMudVisc) + else if (TD_DrillStems(i)%HoleType == 1) then + Call TD_ForceDownB(i,TD_SemiMudVisc) + else if (TD_DrillStems(i)%HoleType == 2) then + Call TD_ForceDownD(i,TD_SemiMudVisc) + end if + Call TD_StrainCalculation(i) + Call TD_TorqueCalculation(i) + End Do + + else if (TD_DrillStemForceType == 4) then + + Do i = 1 , TD_DrillStemComponentsNumbs + TD_SemiMudVisc = TD_DrillStems(i)%MudViscosity + if (TD_DrillStems(i)%HoleType == 0) then + Call TD_ForceDownSRot(i,TD_SemiMudVisc) + else if (TD_DrillStems(i)%HoleType == 1) then + Call TD_ForceDownBRot(i,TD_SemiMudVisc) + else if (TD_DrillStems(i)%HoleType == 2) then + Call TD_ForceDownDRot(i,TD_SemiMudVisc) + end if + Call TD_StrainCalculation(i) + Call TD_TorqueCalculation(i) + End Do + + else if (TD_DrillStemForceType == 5) then + + Do i = 1 , TD_DrillStemComponentsNumbs + TD_SemiMudVisc = 0.0d0 + if (TD_DrillStems(i)%HoleType == 0) then + Call TD_ForceUpS(i,TD_SemiMudVisc) + else if (TD_DrillStems(i)%HoleType == 1) then + Call TD_ForceUpB(i,TD_SemiMudVisc) + else if (TD_DrillStems(i)%HoleType == 2) then + Call TD_ForceUpD(i,TD_SemiMudVisc) + end if + Call TD_StrainCalculation(i) + Call TD_TorqueCalculation(i) + End Do + + end if + + + +!----------------------------------------------------------------------------------- +! + !if (TD_DrillStemAxialVelocity>0.) then + ! + ! i = 1 + ! TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force2 - TD_DrillStems(i)%Drag + ! TD_DrillStems(i)%Dl = TD_DrillStems(i)%Force2 * TD_DrillStems(i)%Length / TD_DrillStems(i)%Area / TD_DrillStems(i)%ElasticModule + ! TD_DrillStems(i)%DlTotal = TD_DrillStems(i)%Dl + ! + ! do i = 2 , TD_DrillStemComponentsNumbs + ! TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force2 - TD_DrillStems(i)%Drag + ! TD_DrillStems(i)%Dl = TD_DrillStems(i)%Force2 * TD_DrillStems(i)%Length / TD_DrillStems(i)%Area / TD_DrillStems(i)%ElasticModule + ! TD_DrillStems(i)%DlTotal = TD_DrillStems(i-1)%DlTotal + TD_DrillStems(i)%Dl + ! end do + ! !print*, 'i=' ,i + ! !print*, 'TD_DrillStemComponentsNumbs=' ,TD_DrillStemComponentsNumbs + ! + !else if (TD_DrillStemAxialVelocity<0.) then + ! i = 1 + ! TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force2 + TD_DrillStems(i)%Drag + ! TD_DrillStems(i)%Dl = TD_DrillStems(i)%Force2 * TD_DrillStems(i)%Length / TD_DrillStems(i)%Area / TD_DrillStems(i)%ElasticModule + ! TD_DrillStems(i)%DlTotal = TD_DrillStems(i)%Dl + ! + ! do i = 2 , TD_DrillStemComponentsNumbs + ! TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force2 + TD_DrillStems(i)%Drag + ! TD_DrillStems(i)%Dl = TD_DrillStems(i)%Force2 * TD_DrillStems(i)%Length / TD_DrillStems(i)%Area / TD_DrillStems(i)%ElasticModule + ! TD_DrillStems(i)%DlTotal = TD_DrillStems(i-1)%DlTotal + TD_DrillStems(i)%Dl + ! end do + !end if + + + TD_DlTotal = TD_DrillStems(TD_DrillStemComponentsNumbs)%DlTotal + + + + +!!=====> Modified Length of the Drill Stem +! do i = 1 , TD_DrillStemComponentsNumbs +! TD_DrillStems(i)%Length = TD_DrillStems(i)%Length + TD_DrillStems(i)%Dl +! end do + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_HookLoadCalculation.f90 b/TorqueDrag/TD_Forces/TD_HookLoadCalculation.f90 new file mode 100644 index 0000000..5aebbf9 --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_HookLoadCalculation.f90 @@ -0,0 +1,285 @@ +subroutine TD_HookLoadCalculation + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + Use TD_StringConnectionData + Use Drawworks_VARIABLES, only: Drawworks + Use CDataDisplayConsoleVariables + Use CHoistingVariables + Use CSlipsEnumVariables + Use CBopStackVariables + Use VARIABLES + Use CUnityInputs + + + implicit none + + Integer :: i , kk + Real(8) :: TD_eConst=0.98d0 , TD_SumWeight + + + + +!==================================================== +! Torque & Hook Load Calculation +!==================================================== + +!=========> HookLoad + TD_HookLoad = TD_DrillStems(TD_DrillStemComponentsNumbs)%Force2 ! [lb] + !print* , 'TD_HookLoad1=' , TD_HookLoad + + if ( Drawworks%motion==1 ) then + if ( PipeRam1_Situation_forTD==1 ) then !Upper Ram + TD_HookLoad = TD_HookLoad+RamStringDrag + end if + if ( PipeRam2_Situation_forTD==1 ) then !Lower Ram + TD_HookLoad = TD_HookLoad+RamStringDrag + end if + if ( ShearBop_Situation_forTD==1 ) then !Blind Ram + TD_HookLoad = TD_HookLoad+RamStringDrag !???????????????????? + end if + if ( Annular_Situation_forTD==1 ) then !Annular Preventer + TD_HookLoad = TD_HookLoad+(p_annular*AnnularStringDrag) + end if + else if ( Drawworks%motion==-1 ) then + if ( PipeRam1_Situation_forTD==1 ) then !Upper Ram + TD_HookLoad = TD_HookLoad-RamStringDrag + end if + if ( PipeRam2_Situation_forTD==1 ) then !Lower Ram + TD_HookLoad = TD_HookLoad-RamStringDrag + end if + if ( ShearBop_Situation_forTD==1 ) then !Blind Ram + TD_HookLoad = TD_HookLoad-RamStringDrag !???????????????????? + end if + if ( Annular_Situation_forTD==1 ) then !Annular Preventer + TD_HookLoad = TD_HookLoad-(p_annular*AnnularStringDrag) + end if + end if + + !print* , 'TD_HookLoad2=' , TD_HookLoad + + + + + + !if ( UpperRamClose_withPossibility==1 ) then + ! if ( Drawworks%motion==1 ) then + ! TD_HookLoad = TD_HookLoad+RamStringDrag + ! else if ( Drawworks%motion==-1 ) then + ! TD_HookLoad = TD_HookLoad-RamStringDrag + ! end if + !end if + !if ( LowerRamClose_withPossibility==1 ) then + ! if ( Drawworks%motion==1 ) then + ! TD_HookLoad = TD_HookLoad+RamStringDrag + ! else if ( Drawworks%motion==-1 ) then + ! TD_HookLoad = TD_HookLoad-RamStringDrag + ! end if + !end if + !if ( BlindRamClose_withPossibility==1 ) then + ! if ( Drawworks%motion==1 ) then + ! TD_HookLoad = TD_HookLoad+RamStringDrag + ! else if ( Drawworks%motion==-1 ) then + ! TD_HookLoad = TD_HookLoad-RamStringDrag + ! end if + !end if + !if ( AnnularPreventerClose_withPossibility==1 ) then + ! if ( Drawworks%motion==1 ) then + ! TD_HookLoad = TD_HookLoad+AnnularStringDrag + ! else if ( Drawworks%motion==-1 ) then + ! TD_HookLoad = TD_HookLoad-AnnularStringDrag + ! end if + !end if + + + + + + + + +!=========> Torque + TD_StringTorque = TD_TotalTorque ![lb.ft] ?????????? + !print* , 'TD_StringTorque=' , TD_StringTorque + + + + + +!==================================================== +! Weight Indicator Calculation +!==================================================== + + kk = 0 + Do i = TD_DrillStemComponentsNumbs , 1 , -1 + if (TD_DrillStems(i)%ComponentType==3) then + kk = i + exit + end if + End Do + + + + + + if ( TD_KellyDriveTypeMode==0 ) then + + if ( TD_StringConnectionMode == 1 ) then + if ( Get_Slips() == SLIPS_SET_END ) then + TD_SumWeight = TD_WeightTB+TD_KellyWeight + else + TD_SumWeight = TD_HookLoad+TD_WeightTB+TD_KellyWeight ! TD_HookLoad = String Weight + end if + + else if ( TD_StringConnectionMode == 2 ) then + if ( Get_JointConnectionPossible() ) then + TD_SumWeight = TD_WeightTB + else + TD_SumWeight = TD_WeightTB+TD_KellyWeight + end if + + else if ( TD_StringConnectionMode == 3 ) then + if ( Get_JointConnectionPossible() ) then + TD_SumWeight = TD_WeightTB + else + TD_SumWeight = TD_WeightTB+TD_KellyWeight+TD_DrillStems(kk)%Weight + end if + + end if + + else if ( TD_KellyDriveTypeMode==1 ) then + + if ( TD_StringConnectionMode == 4 ) then + if ( Get_Slips() == SLIPS_SET_END ) then + TD_SumWeight = TD_WeightTB + else + TD_SumWeight = TD_HookLoad+TD_WeightTB + end if + + else if ( TD_StringConnectionMode == 5 ) then + TD_SumWeight = TD_WeightTB + + else if ( TD_StringConnectionMode == 6 ) then + if ( Get_JointConnectionPossible() ) then + TD_SumWeight = TD_WeightTB + else + TD_SumWeight = TD_WeightTB+(3.d0*TD_DrillStems(kk)%Weight) + end if + + else if ( TD_StringConnectionMode == 7 ) then + if ( Get_JointConnectionPossible() ) then + TD_SumWeight = TD_WeightTB + else + TD_SumWeight = TD_WeightTB+TD_DrillStems(kk)%Weight + end if + + else if ( TD_StringConnectionMode == 8 ) then + TD_SumWeight = TD_WeightTB + + else if ( TD_StringConnectionMode == 18 ) then + TD_SumWeight = TD_WeightTB + + else if ( TD_StringConnectionMode == 19 ) then + TD_SumWeight = TD_WeightTB + + end if + + else if ( TD_KellyDriveTypeMode==2 ) then + + if ( TD_StringConnectionMode == 9 ) then + if ( Get_Slips() == SLIPS_SET_END ) then + TD_SumWeight = TD_WeightTD + else + TD_SumWeight = TD_HookLoad+TD_WeightTD + end if + + else if ( TD_StringConnectionMode == 10 ) then + if ( Get_Slips() == SLIPS_SET_END ) then + TD_SumWeight = TD_WeightTD + else + TD_SumWeight = TD_HookLoad+TD_WeightTD + end if + + else if ( TD_StringConnectionMode == 11 ) then + TD_SumWeight = TD_WeightTD + + else if ( TD_StringConnectionMode == 12 ) then + if ( Get_Slips() == SLIPS_SET_END ) then + TD_SumWeight = TD_WeightTD + else + TD_SumWeight = TD_HookLoad+TD_WeightTD + end if + + else if ( TD_StringConnectionMode == 13 ) then + TD_SumWeight = TD_WeightTD + + else if ( TD_StringConnectionMode == 14 ) then + TD_SumWeight = TD_WeightTD+(3.d0*TD_DrillStems(kk)%Weight) + + else if ( TD_StringConnectionMode == 15 ) then + TD_SumWeight = TD_WeightTD+(TD_DrillStems(kk)%Weight) + + else if ( TD_StringConnectionMode == 16 ) then + TD_SumWeight = TD_WeightTD + + else if ( TD_StringConnectionMode == 17 ) then + TD_SumWeight = TD_WeightTD + + end if + + end if + + + + !print* , 'TD_HookLoad3=' , TD_HookLoad + + + + + !if ( DriveType==1 ) then !==> Kelly_DriveType + ! + ! if ( TD_DrillStemForceType==1 .or. TD_DrillStemForceType==2 ) then + ! TD_WeightIndicator = ( sngl(TD_NumOfCables)*(TD_eConst-1.d0)*(TD_SumWeight) )& + ! /( TD_eConst*(1.d0-(1.d0/(TD_eConst**TD_NumOfCables))) ) + ! else if ( TD_DrillStemForceType==3 .or. TD_DrillStemForceType==4 ) then + ! TD_WeightIndicator = ( sngl(TD_NumOfCables)*(1.d0-TD_eConst)*(TD_SumWeight) )& + ! /( 1.d0-(TD_eConst**TD_NumOfCables) ) + ! else if ( TD_DrillStemForceType==5 ) then + TD_WeightIndicator = TD_SumWeight + ! end if + ! + ! + !else if ( DriveType==0 ) then !==> TopDrive_DriveType ?????????????? + ! + ! if ( TD_DrillStemForceType==1 .or. TD_DrillStemForceType==2 ) then + ! TD_WeightIndicator = ( sngl(TD_NumOfCables)*(TD_eConst-1.d0)*(TD_SumWeight) )& + ! /( TD_eConst*(1.d0-(1.d0/(TD_eConst**TD_NumOfCables))) ) + ! else if ( TD_DrillStemForceType==3 .or. TD_DrillStemForceType==4 ) then + ! TD_WeightIndicator = ( sngl(TD_NumOfCables)*(1.d0-TD_eConst)*(TD_SumWeight) )& + ! /( 1.d0-(TD_eConst**TD_NumOfCables) ) + ! else if ( TD_DrillStemForceType==5 ) then + ! TD_WeightIndicator = TD_SumWeight + ! end if + ! + !!else + !!TD_WeightIndicator = 0. !????????????????? + ! + !end if + + + + + + TD_DrawworksLoadInput = TD_WeightIndicator/(sngl(TD_NumOfCables)) ! [lb] + !print* , 'TD_HookLoad4=' , TD_HookLoad + !HookLoadPointer = TD_WeightIndicator/1.0d3 ! [klb] + call Set_HookLoad ((1-TD_WeightIndicatorMalf)*AINT(TD_WeightIndicator/1.0d3)) ! [klb] + + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_StaticHookLoadCalculation.f90 b/TorqueDrag/TD_Forces/TD_StaticHookLoadCalculation.f90 new file mode 100644 index 0000000..01a4054 --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_StaticHookLoadCalculation.f90 @@ -0,0 +1,71 @@ +subroutine TD_StaticHookLoadCalculation + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + + + + + + i = 1 + if(TD_DrillStems(i)%HoleType == 0) then + TD_DrillStems(i)%StaticHookLoad = TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + TD_DrillStems(i)%BouyancyFactor * cos(TD_DrillStems(i)%StartAngle) + + else if (TD_DrillStems(i)%HoleType == 1) then + TD_DrillStems(i)%StaticHookLoad = -(TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (sin(TD_DrillStems(i)%EndAngle) - sin(TD_DrillStems(i)%StartAngle))) + + else if (TD_DrillStems(i)%HoleType == 2) then + TD_DrillStems(i)%StaticHookLoad = (TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (sin(TD_DrillStems(i)%EndAngle) - sin(TD_DrillStems(i)%StartAngle))) + end if + + + + do i = 2, TD_DrillStemComponentsNumbs + + if(TD_DrillStems(i)%HoleType == 0) then + TD_DrillStems(i)%StaticHookLoad = TD_DrillStems(i-1)%StaticHookLoad + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + TD_DrillStems(i)%BouyancyFactor * cos(TD_DrillStems(i)%StartAngle) + + else if (TD_DrillStems(i)%HoleType == 1) then + TD_DrillStems(i)%StaticHookLoad = TD_DrillStems(i-1)%StaticHookLoad -(TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (sin(TD_DrillStems(i)%EndAngle) - sin(TD_DrillStems(i)%StartAngle))) + + else if (TD_DrillStems(i)%HoleType == 2) then + TD_DrillStems(i)%StaticHookLoad = TD_DrillStems(i-1)%StaticHookLoad +(TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%RCurvature * & + (sin(TD_DrillStems(i)%EndAngle) - sin(TD_DrillStems(i)%StartAngle))) + end if + + end do +! +!--------------------------------------------------------------------------------------------------- +! + i = 1 + !TD_DrillStems(i)%TotalSHookLoad = TD_DrillStems(i)%StaticHookLoad ???????????????????????????? + TD_DrillStems(i)%Dl = TD_DrillStems(i)%StaticHookLoad * TD_DrillStems(i)%Length / TD_DrillStems(i)%Area / TD_DrillStems(i)%ElasticModule + TD_DrillStems(i)%DlTotal = TD_DrillStems(i)%Dl + do i = 2 , TD_DrillStemComponentsNumbs + !TD_DrillStems(i)%TotalSHookLoad = TD_DrillStems(i-1)%TotalSHookLoad + TD_DrillStems(i)%StaticHookLoad ????????????????????????? + TD_DrillStems(i)%Dl = TD_DrillStems(i)%StaticHookLoad * TD_DrillStems(i)%Length / TD_DrillStems(i)%Area / TD_DrillStems(i)%ElasticModule + TD_DrillStems(i)%DlTotal = TD_DrillStems(i-1)%DlTotal + TD_DrillStems(i)%Dl + end do + + TD_StaticHookLoad = TD_DrillStems(TD_DrillStemComponentsNumbs)%StaticHookLoad + TD_DlMax = TD_DrillStems(TD_DrillStemComponentsNumbs)%DlTotal + + + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceDownS.f90 b/TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceDownS.f90 new file mode 100644 index 0000000..49da7fe --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceDownS.f90 @@ -0,0 +1,64 @@ +subroutine TD_ForceDownS(i,TD_SemiMudVisc) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + Real(8) :: TD_SemiMudVisc , TD_SemiAngle + + + if ( TD_DrillStems(i)%StartAngle<=(pi/180.) ) then + TD_SemiAngle = (pi/180.) + else + TD_SemiAngle = TD_DrillStems(i)%StartAngle + end if + + + If (i==1) then + TD_DrillStems(1)%Force1 = -TD_WeightOnBit + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + TD_DrillStems(i)%BouyancyFactor * (cos(TD_DrillStems(i)%StartAngle) - & + (TD_SemiMudVisc * sin(TD_DrillStems(i)%StartAngle)))) + + + if (TD_DrillStems(i)%ComponentType==0) then + TD_DrillStems(i)%Torque = TD_BitTorque + else + TD_DrillStems(i)%Torque = TD_SemiMudVisc* TD_DrillStems(i)%BouyancyFactor* & + TD_DrillStems(i)%WeightperLength* TD_DrillStems(i)%Length* TD_DrillStems(i)%RtoolJoint * & + sin(TD_SemiAngle) + end if + + + return + End If + + +!=========> F1 Calculation + TD_DrillStems(i)%Force1 = TD_DrillStems(i-1)%Force2 + + +!=========> F2 Calculation + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + TD_DrillStems(i)%BouyancyFactor * (cos(TD_DrillStems(i)%StartAngle) - & + (TD_SemiMudVisc * sin(TD_DrillStems(i)%StartAngle)))) + ! + ! + !Strains(i)%Dl = TDForces(i)%Force * (Elements(i)%Length ) / & + ! (Elements(i)%Area * Element%ElasticModule) + ! + + TD_DrillStems(i)%Torque = TD_SemiMudVisc* TD_DrillStems(i)%BouyancyFactor* & + TD_DrillStems(i)%WeightperLength* TD_DrillStems(i)%Length* TD_DrillStems(i)%RtoolJoint * & + sin(TD_SemiAngle) + ! + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceDownSRot.f90 b/TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceDownSRot.f90 new file mode 100644 index 0000000..424173c --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceDownSRot.f90 @@ -0,0 +1,60 @@ +subroutine TD_ForceDownSRot(i,TD_SemiMudVisc) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + Real(8) :: TD_SemiMudVisc , TD_SemiAngle + + + if ( TD_DrillStems(i)%StartAngle<=(pi/180.) ) then + TD_SemiAngle = (pi/180.) + else + TD_SemiAngle = TD_DrillStems(i)%StartAngle + end if + + + If (i==1) then + TD_DrillStems(1)%Force1 = -TD_WeightOnBit + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%BouyancyFactor * TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + cos(TD_DrillStems(i)%StartAngle)) - (TD_SemiMudVisc * TD_DrillStems(i)%BouyancyFactor * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + sin(TD_DrillStems(i)%StartAngle) * sin(TD_DrillStems(i)%CombVelRatio)) + + + if (TD_DrillStems(i)%ComponentType==0) then + TD_DrillStems(i)%Torque = TD_BitTorque + else + TD_DrillStems(i)%Torque = TD_DrillStems(i)%RtoolJoint * TD_SemiMudVisc * TD_DrillStems(i)%BouyancyFactor * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * sin(TD_SemiAngle) * cos(TD_DrillStems(i)%CombVelRatio) + end if + + + return + End If + + +!=========> F1 Calculation + TD_DrillStems(i)%Force1 = TD_DrillStems(i-1)%Force2 + + +!=========> F2 Calculation + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%BouyancyFactor * TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + cos(TD_DrillStems(i)%StartAngle)) - (TD_SemiMudVisc * TD_DrillStems(i)%BouyancyFactor * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + sin(TD_DrillStems(i)%StartAngle) * sin(TD_DrillStems(i)%CombVelRatio)) + ! + TD_DrillStems(i)%Torque = TD_DrillStems(i)%RtoolJoint * TD_SemiMudVisc * TD_DrillStems(i)%BouyancyFactor * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * sin(TD_SemiAngle) * cos(TD_DrillStems(i)%CombVelRatio) + + ! + !Strains(i)%dL = TDForces(i)%Force * (Elements(i)%Length) / & + ! (Elements(i)%Area * Element%ElasticModule) + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceUpS.f90 b/TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceUpS.f90 new file mode 100644 index 0000000..d185cce --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceUpS.f90 @@ -0,0 +1,65 @@ +subroutine TD_ForceUpS(i,TD_SemiMudVisc) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + Real(8) :: TD_SemiMudVisc , TD_SemiAngle + + + if ( TD_DrillStems(i)%StartAngle<=(pi/180.) ) then + TD_SemiAngle = (pi/180.) + else + TD_SemiAngle = TD_DrillStems(i)%StartAngle + end if + + + If (i==1) then + TD_DrillStems(1)%Force1 = -TD_WeightOnBit + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + TD_DrillStems(i)%BouyancyFactor * (cos(TD_DrillStems(i)%StartAngle) + & + (TD_SemiMudVisc * sin(TD_DrillStems(i)%StartAngle)))) + + + if (TD_DrillStems(i)%ComponentType==0) then + TD_DrillStems(i)%Torque = TD_BitTorque + else + TD_DrillStems(i)%Torque = TD_DrillStems(i)%MudViscosity* TD_DrillStems(i)%BouyancyFactor* & + TD_DrillStems(i)%WeightperLength* TD_DrillStems(i)%Length* TD_DrillStems(i)%RtoolJoint * & + sin(TD_SemiAngle) + end if + + return + End If + + +!=========> F1 Calculation + TD_DrillStems(i)%Force1 = TD_DrillStems(i-1)%Force2 + + +!=========> F2 Calculation + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + TD_DrillStems(i)%BouyancyFactor * (cos(TD_DrillStems(i)%StartAngle) + & + (TD_SemiMudVisc * sin(TD_DrillStems(i)%StartAngle)))) + + !Strains(i)%Dl = TDForces(i)%Force * (Elements(i)%Length ) / & + ! (Elements(i)%Area * Element%ElasticModule) + + + TD_DrillStems(i)%Torque = TD_DrillStems(i)%MudViscosity* TD_DrillStems(i)%BouyancyFactor* & + TD_DrillStems(i)%WeightperLength* TD_DrillStems(i)%Length* TD_DrillStems(i)%RtoolJoint * & + sin(TD_SemiAngle) + + + !!if (TD_DrillStems(i)%Torque>500.) then + ! print* , 'TD_TotalTorque=' , i , TD_TotalTorque , TD_DrillStems(i)%Torque , TD_WeightOnBit + ! print* , 'propertiess=' , TD_DrillStems(i)%Force2 , TD_DrillStems(i)%Force1 , TD_DrillStems(i)%MudViscosity , TD_DrillStems(i)%EndAngle , TD_DrillStems(i)%StartAngle , TD_DrillStems(i)%WeightperLength , TD_DrillStems(i)%MudVisCorrectCoef + ! !end if + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceUpSRot.f90 b/TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceUpSRot.f90 new file mode 100644 index 0000000..8da78a0 --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_StraightArea/TD_ForceUpSRot.f90 @@ -0,0 +1,59 @@ +subroutine TD_ForceUpSRot(i,TD_SemiMudVisc) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + Real(8) :: TD_SemiMudVisc , TD_SemiAngle + + + if ( TD_DrillStems(i)%StartAngle<=(pi/180.d0) ) then + TD_SemiAngle = (pi/180.) + else + TD_SemiAngle = TD_DrillStems(i)%StartAngle + end if + + + If (i==1) then + TD_DrillStems(1)%Force1 = -TD_WeightOnBit + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%BouyancyFactor * TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + cos(TD_DrillStems(i)%StartAngle)) + (TD_SemiMudVisc * TD_DrillStems(i)%BouyancyFactor * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + sin(TD_DrillStems(i)%StartAngle) * sin(TD_DrillStems(i)%CombVelRatio)) + + + if (TD_DrillStems(i)%ComponentType==0) then + TD_DrillStems(i)%Torque = TD_BitTorque + else + TD_DrillStems(i)%Torque = TD_DrillStems(i)%RtoolJoint * TD_SemiMudVisc * TD_DrillStems(i)%BouyancyFactor * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * sin(TD_SemiAngle) * cos(TD_DrillStems(i)%CombVelRatio) + end if + + + return + End If + + +!=========> F1 Calculation + TD_DrillStems(i)%Force1 = TD_DrillStems(i-1)%Force2 + + +!=========> F2 Calculation + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force1 + (TD_DrillStems(i)%BouyancyFactor * TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + cos(TD_DrillStems(i)%StartAngle)) + (TD_SemiMudVisc * TD_DrillStems(i)%BouyancyFactor * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * & + sin(TD_DrillStems(i)%StartAngle) * sin(TD_DrillStems(i)%CombVelRatio)) + ! + TD_DrillStems(i)%Torque = TD_DrillStems(i)%RtoolJoint * TD_SemiMudVisc * TD_DrillStems(i)%BouyancyFactor * & + TD_DrillStems(i)%WeightperLength * TD_DrillStems(i)%Length * sin(TD_SemiAngle) * cos(TD_DrillStems(i)%CombVelRatio) + ! + !Strains(i)%dL = TDForces(i)%Force * (Elements(i)%Length) / & + ! (Elements(i)%Area * Element%ElasticModule) + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_StrainCalculation.f90 b/TorqueDrag/TD_Forces/TD_StrainCalculation.f90 new file mode 100644 index 0000000..10bf806 --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_StrainCalculation.f90 @@ -0,0 +1,54 @@ +subroutine TD_StrainCalculation(i) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + + + + if (TD_DrillStemAxialVelocity>=0.d0) then + + if (i == 1) then + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force2 + TD_DrillStems(i)%Drag + TD_DrillStems(i)%Dl = (TD_DrillStems(i)%Force2) * TD_DrillStems(i)%Length / TD_DrillStems(i)%Area / TD_DrillStems(i)%ElasticModule + TD_DrillStems(i)%DlTotal = TD_DrillStems(i)%Dl + else + !do i = 2 , TD_DrillStemComponentsNumbs + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force2 + TD_DrillStems(i)%Drag + TD_DrillStems(i)%Dl = (TD_DrillStems(i)%Force2) * TD_DrillStems(i)%Length / TD_DrillStems(i)%Area / TD_DrillStems(i)%ElasticModule + TD_DrillStems(i)%DlTotal = TD_DrillStems(i-1)%DlTotal + TD_DrillStems(i)%Dl + !end do + end if + + + else if (TD_DrillStemAxialVelocity<0.) then + + if (i == 1) then + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force2 - TD_DrillStems(i)%Drag + TD_DrillStems(i)%Dl = (TD_DrillStems(i)%Force2) * TD_DrillStems(i)%Length / TD_DrillStems(i)%Area / TD_DrillStems(i)%ElasticModule + TD_DrillStems(i)%DlTotal = TD_DrillStems(i)%Dl + else + !do i = 2 , TD_DrillStemComponentsNumbs + TD_DrillStems(i)%Force2 = TD_DrillStems(i)%Force2 - TD_DrillStems(i)%Drag + TD_DrillStems(i)%Dl = (TD_DrillStems(i)%Force2) * TD_DrillStems(i)%Length / TD_DrillStems(i)%Area / TD_DrillStems(i)%ElasticModule + TD_DrillStems(i)%DlTotal = TD_DrillStems(i-1)%DlTotal + TD_DrillStems(i)%Dl + !end do + end if + + + end if + + +!=====> Modified Length of Drill Stem + !TD_DrillStems(i)%Length = TD_DrillStems(i)%LengthIni + TD_DrillStems(i)%Dl + TD_DrillStems(i)%Length = TD_DrillStems(i)%LengthIni + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_TorqueCalculation.f90 b/TorqueDrag/TD_Forces/TD_TorqueCalculation.f90 new file mode 100644 index 0000000..7412fd4 --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_TorqueCalculation.f90 @@ -0,0 +1,42 @@ +subroutine TD_TorqueCalculation(i) + + Use CHoistingVariables + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + Use RTable_VARIABLES, only: RTable + Use TopDrive_VARIABLES, only: TDS + + + implicit none + + Integer :: i + + + + + if ( DriveType==1 .and. RTable%Speed==0.d0 ) then + TD_DrillStems(i)%Torque = 0.d0 + else if ( DriveType==0 .and. TDS%Speed==0.d0 .and. RTable%Speed==0.d0 ) then + TD_DrillStems(i)%Torque = 0.d0 + end if + + + + + if ( i==1 ) then + TD_TotalTorque = TD_DrillStems(i)%Torque + else + TD_TotalTorque = TD_TotalTorque + TD_DrillStems(i)%Torque + end if + + !if (TD_DrillStems(i)%Torque>500.) then + ! print* , 'TD_TotalTorque=' , i , TD_TotalTorque , TD_DrillStems(i)%Torque + ! !print* , 'properties=' , TD_DrillStems(i)%Force1 , TD_DrillStems(i)%MudViscosity , TD_DrillStems(i)%EndAngle , TD_DrillStems(i)%StartAngle , TD_DrillStems(i)%WeightperLength , TD_DrillStems(i)%MudVisCorrectCoef + !end if + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_ViscousDragForce/TD_ViscousDragForce.f90 b/TorqueDrag/TD_Forces/TD_ViscousDragForce/TD_ViscousDragForce.f90 new file mode 100644 index 0000000..e224514 --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_ViscousDragForce/TD_ViscousDragForce.f90 @@ -0,0 +1,176 @@ +subroutine TD_ViscousDragForce + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + + implicit none + + Integer :: i + real(8) :: TDden, TDpreup , TDpredown , TDtem , TDmdup , TDmddown + Real(8) :: TD_ThetaCoef1 , TD_ThetaCoef2 , TD_NCoef , TD_KCoef + Real(8) :: TD_DragSum + + + + + + Do i = 1 , TD_DrillStemComponentsNumbs + + if ( TD_DrillStems(i)%MudDensityOut==0.d0 .or. TD_DrillStems(i)%MudDensityIn==0.d0 ) then + TD_DrillStems(i)%Drag = 0.d0 + cycle + end if + TDmdup = TD_DrillStems(i)%TopDepthIni + Call AnnulusPropertyCalculator ( INT(TDmdup) , TDden , TDpreup , TDtem ) + TDmddown = TD_DrillStems(i)%DownDepthIni + Call AnnulusPropertyCalculator ( INT(TDmddown) , TDden , TDpredown , TDtem ) + TD_DrillStems(i)%Drag = abs(TDpredown-TDpreup)*(pi*TD_DrillStems(i)%Length*12.d0*TD_DrillStems(i)%Od*12.d0) ![psi]*[inch^2]=[lb] ????? + + TD_DrillStems(i)%Drag = 0.0d0 !????????????????????? + + End Do + + + + + + + !Do i = 1 , TD_DrillStemComponentsNumbs + ! + ! + ! if ( TD_DrillStems(i)%MudDensityOut==0.d0 .or. TD_DrillStems(i)%MudDensityIn==0.d0 ) then + ! TD_DrillStems(i)%Drag = 0.d0 + ! cycle + ! end if + ! + ! !------------------------------------------------------------------------------------ + ! TD_DrillStems(i)%Od = TD_DrillStems(i)%Od*12.d0 ! [inch] + ! TD_DrillStems(i)%HoleDiameter = TD_DrillStems(i)%HoleDiameter*12.d0 ! [inch] + ! TD_DrillStems(i)%MudDensityOut = TD_DrillStems(i)%MudDensityOut/7.48051948d0 ! [ppg] + ! !------------------------------------------------------------------------------------ + ! + ! + ! TD_ThetaCoef1 = TD_DrillStems(i)%MudYieldPoint+TD_DrillStems(i)%MudPlasticVis + ! TD_ThetaCoef2 = (2.0d0*TD_DrillStems(i)%MudPlasticVis)+TD_DrillStems(i)%MudYieldPoint + ! TD_NCoef = 3.32d0*log10(TD_ThetaCoef2/TD_ThetaCoef1) + ! TD_KCoef = (TD_ThetaCoef1)/(511.d0*TD_NCoef) + ! + ! + ! + ! If (TD_DrillStems(i)%TopDepth>0.d0) then + ! + ! TD_DrillStems(i)%PipeVelocity = abs(TD_DrillStemAxialVelocity) + ! + ! TD_DrillStems(i)%DiamRatio = (TD_DrillStems(i)%Od)/TD_DrillStems(i)%HoleDiameter + ! + ! + ! TD_DrillStems(i)%MudClingingConst = ((TD_DrillStems(i)%DiamRatio**2) * (1.0d0 - (2.0d0*log(TD_DrillStems(i)%DiamRatio))) - 1.0d0) & + ! / (2.0d0*(1.0d0-(TD_DrillStems(i)%DiamRatio**2))*log(TD_DrillStems(i)%DiamRatio)) + ! + ! TD_DrillStems(i)%AveEffVelocity = TD_DrillStems(i)%PipeVelocity * ( ((TD_DrillStems(i)%DiamRatio**2)/(1.0d0-(TD_DrillStems(i)%DiamRatio**2))) & + ! + TD_DrillStems(i)%MudClingingConst) + ! + ! TD_DrillStems(i)%ReNumber = (926.4*(TD_DrillStems(i)%MudDensityOut * TD_DrillStems(i)%AveEffVelocity * (TD_DrillStems(i)%HoleDiameter - TD_DrillStems(i)%Od))) & + ! / TD_DrillStems(i)%MudPlasticVis !Bingham-plastic drilling fluid + ! !TD_DrillStems(i)%ReNumber = 10.9d4*( TD_DrillStems(i)%MudDensityOut*(TD_DrillStems(i)%AveEffVelocity**(2-TD_NCoef))/TD_DrillStems(i)%MudPlasticVis ) & + ! ! *( (((TD_DrillStems(i)%HoleDiameter - TD_DrillStems(i)%Od)/48.)*(TD_NCoef/((2.*TD_NCoef)+1.)))**TD_NCoef ) !Power-law fluid + ! + ! if ( TD_DrillStems(i)%ReNumber .le. 2.1d3 ) then !Bingham-plastic drilling fluid + ! !if ( TD_DrillStems(i)%ReNumber .le. (3479.-(1370.*TD_NCoef)) ) then !Power-law fluid + ! + ! TD_DrillStems(i)%FricFactor = 1.60d1/TD_DrillStems(i)%ReNumber + ! + ! !TD_DrillStems(i)%Dp_Dl = ( TD_KCoef/(14.4d4*(TD_DrillStems(i)%HoleDiameter - TD_DrillStems(i)%Od)) )& + ! ! *( ((48./(TD_DrillStems(i)%HoleDiameter - TD_DrillStems(i)%Od))*(((2.*TD_NCoef)+1.)/TD_NCoef))**TD_NCoef ) !Power-law fluid + ! TD_DrillStems(i)%Dp_Dl = (TD_DrillStems(i)%FricFactor * (TD_DrillStems(i)%AveEffVelocity**2) * TD_DrillStems(i)%MudDensityOut) & + ! / (25.78d0*(TD_DrillStems(i)%HoleDiameter - TD_DrillStems(i)%Od)) !Bingham-plastic drilling fluid + ! + ! else !Bingham-plastic drilling fluid + ! !else if ( TD_DrillStems(i)%ReNumber .gt. (4270.-(1370.*TD_NCoef)) ) then !Power-law fluid + ! + ! TD_DrillStems(i)%MudClingingConst = (sqrt(( (TD_DrillStems(i)%DiamRatio**4) + TD_DrillStems(i)%DiamRatio ) & + ! /(1.0d0 + TD_DrillStems(i)%DiamRatio )) - (TD_DrillStems(i)%DiamRatio**2)) & + ! /(1.0d0- (TD_DrillStems(i)%DiamRatio**2)) + ! + ! TD_DrillStems(i)%AveEffVelocity = TD_DrillStems(i)%PipeVelocity * ( ((TD_DrillStems(i)%DiamRatio**2)/(1.0d0-(TD_DrillStems(i)%DiamRatio**2))) & + ! + TD_DrillStems(i)%MudClingingConst) + ! + ! TD_DrillStems(i)%ReNumber = (926.4d0*(TD_DrillStems(i)%MudDensityOut * TD_DrillStems(i)%AveEffVelocity * (TD_DrillStems(i)%HoleDiameter - TD_DrillStems(i)%Od))) & + ! / TD_DrillStems(i)%MudPlasticVis !Bingham-plastic drilling fluid + ! !TD_DrillStems(i)%ReNumber = 10.9d4*( TD_DrillStems(i)%MudDensityOut*(TD_DrillStems(i)%AveEffVelocity**(2-TD_NCoef))/TD_DrillStems(i)%MudPlasticVis ) & + ! ! *( (((TD_DrillStems(i)%HoleDiameter - TD_DrillStems(i)%Od)/48.)*(TD_NCoef/((2.*TD_NCoef)+1.)))**TD_NCoef ) !Power-law fluid + ! + ! TD_DrillStems(i)%FricFactor = 0.0791d0/(TD_DrillStems(i)%ReNumber**0.25d0) + ! + ! TD_DrillStems(i)%Dp_Dl = (TD_DrillStems(i)%FricFactor * (TD_DrillStems(i)%AveEffVelocity**2) * TD_DrillStems(i)%MudDensityOut) & + ! / (25.78d0*(TD_DrillStems(i)%HoleDiameter - TD_DrillStems(i)%Od)) !Bingham-plastic drilling fluid + ! !TD_DrillStems(i)%Dp_Dl = (TD_DrillStems(i)%FricFactor * (TD_DrillStems(i)%AveEffVelocity**2) * TD_DrillStems(i)%MudDensityOut) & + ! ! / (21.1*(TD_DrillStems(i)%HoleDiameter - TD_DrillStems(i)%Od)) !Power-law fluid + ! + ! end if + ! + ! + ! TD_DrillStems(i)%Drag = ( (pi/4.0d0)*TD_DrillStems(i)%Dp_Dl*TD_DrillStems(i)%Length*(TD_DrillStems(i)%Od**2)/10.d0 ) ! drag/10 = because of the value of drag force + ! + ! Else + ! TD_DrillStems(i)%Drag = 0.0d0 + ! + ! End if + ! + ! + ! !------------------------------------------------------------------------------------ + ! TD_DrillStems(i)%Od = TD_DrillStems(i)%Od/12.d0 ! [ft] + ! TD_DrillStems(i)%HoleDiameter = TD_DrillStems(i)%HoleDiameter/12.d0 ! [ft] + ! TD_DrillStems(i)%MudDensityOut = TD_DrillStems(i)%MudDensityOut*7.48051948d0 ! [lb/ft3] + ! !------------------------------------------------------------------------------------ + ! + ! + !end do + + if (TD_DrillStems(1)%ComponentType==0) then + TD_DrillStems(1)%Drag = 50.d0*TD_DrillStems(1)%Od !Od[ft] , Drag[lb]????? + if ( TD_DrillStems(1)%MudDensityOut==0.d0 .or. TD_DrillStems(1)%MudDensityIn==0.d0 ) then + TD_DrillStems(1)%Drag = 0.d0 + end if + end if + + !!TD_DragSum = 0. + !!Do i = 1 , TD_DrillStemComponentsNumbs + !! TD_DragSum = TD_DragSum+TD_DrillStems(i)%Drag + !!end do + + + ! print*, 'TD_NCoef=' , TD_NCoef + ! print*, 'TD_KCoef=' , TD_KCoef + ! + ! print*, 'TD_DrillStems(1)%DiamRatio=' , TD_DrillStems(1)%DiamRatio + ! print*, 'TD_DrillStems(1)%Od=' , TD_DrillStems(1)%Od + ! print*, 'TD_DrillStems(1)%HoleDiameter=' , TD_DrillStems(1)%HoleDiameter + ! ! + ! print*, 'TD_DrillStems(1)%MudClingingConst=' , TD_DrillStems(1)%MudClingingConst + ! ! + ! print*, 'TD_DrillStems(1)%AveEffVelocity=' , TD_DrillStems(1)%AveEffVelocity + ! ! + ! !print*, 'TD_DrillStems(1)%MudPlasticVis=' , TD_DrillStems(1)%MudPlasticVis + ! print*, 'TD_DrillStems(1)%MudDensityOut=' , TD_DrillStems(1)%MudDensityOut + ! print*, 'TD_DrillStems(1)%ReNumber=' , TD_DrillStems(1)%ReNumber + ! ! + ! print*, 'TD_DrillStems(1)%FricFactor=' , TD_DrillStems(1)%FricFactor + ! print*, 'TD_DrillStems(1)%Dp_Dl=' , TD_DrillStems(1)%Dp_Dl + ! print*, 'TD_DrillStems(1)%Drag=' , TD_DrillStems(1)%Drag + ! print*, 'TD_DrillStems(2)%Drag=' , TD_DrillStems(2)%Drag + ! print*, 'TD_DrillStems(3)%Drag=' , TD_DrillStems(3)%Drag + ! print*, 'TD_DragSum=' , TD_DragSum + ! print*, 'TD_DrillStems(330)%Drag=' , TD_DrillStems(330)%Drag + ! print*, 'TD_DrillStems(331)%Drag=' , TD_DrillStems(331)%Drag + ! print*, 'TD_DrillStems(333)%Drag=' , TD_DrillStems(333)%Drag + + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_Forces/TD_WeightOnBitCalculation.f90 b/TorqueDrag/TD_Forces/TD_WeightOnBitCalculation.f90 new file mode 100644 index 0000000..c2a75db --- /dev/null +++ b/TorqueDrag/TD_Forces/TD_WeightOnBitCalculation.f90 @@ -0,0 +1,40 @@ +subroutine TD_WeightOnBitCalculation + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + Use TD_StringConnectionData + Use CDataDisplayConsoleVariables + + + implicit none + + Integer :: i + + + !TD_TouchConnectionHeight = TD_DlMax + TD_DrillStemTotalLengthIni - TD_WellTotalLength + TD_TouchConnectionHeight = TD_DrillStemTotalLengthIni - TD_WellTotalLength + + + + !if (TD_DrillStems(1)%ComponentType == 0) then ????????????? + + + + !if (TD_DrillStems(1)%DownDepth < TD_WellTotalLength) then + if (TD_ConnectionHeight < TD_TouchConnectionHeight) then + TD_DlTouch = TD_DlMax-(TD_TouchConnectionHeight-TD_ConnectionHeight) + TD_WeightOnBit = ((TD_StaticHookLoad/2.0d0)/TD_DlMax)*(TD_DlMax-TD_DlTouch) !(TD_StaticHookLoad/2.0d0) ---> because of Uniform drill stem(drillpipes) ?????????? + else + TD_WeightOnBit = 0.d0 ![lb] + end if + + Call Set_WeightOnBit(AINT(real(TD_WeightOnBit,8))) + + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_MainCalculations.f90 b/TorqueDrag/TD_MainCalculations.f90 new file mode 100644 index 0000000..2a42f95 --- /dev/null +++ b/TorqueDrag/TD_MainCalculations.f90 @@ -0,0 +1,180 @@ +subroutine TD_MainCalculations + + Use CCasingLinerChokeVariables + Use CStringConfigurationVariables + Use CSimulationVariables + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + Use TD_StringConnectionData + Use FricPressDropVars + Use MudSystemVARIABLES + + + implicit none + + Integer :: i + !Integer :: TD_SolDuration + !integer,dimension(8) :: TD_StartTime , TD_EndTime + + + + TD_TimeStep = 0.1d0 ! Unit: [s] + !Call TD_StartUp + !Call TD_WellReadData + !Call TD_WellElementsReadData + !Call TD_DrillStemReadData + !Call TD_PipePropertiesReadData + !!Call TD_WellGeoConfiguration + !!Call TD_WellElementsConfiguration + !!Call TD_StringConnectionModes + !!Call TD_DrillStemConfiguration + + + + + !loop1: do + + + !CALL DATE_AND_TIME(values=TD_StartTime) + + + Call TD_WellGeoConfiguration + Call TD_WellElementsConfiguration + Call TD_StringConnectionModes + Call TD_DrillStemConfiguration + Call TD_ForceReadData + + +!===> Mud properties Read_Data from Fluid Module + !!TD_NoHorizontalMudElements = TDNoHorizontalMudElements + !!TD_NoStringMudElements = TDNoStringMudElements + !!TD_NoCasingMudElements = TDNoCasingMudElements + !! + !!if (allocated(TDDensity_MudElementArray) .and. (TD_NoHorizontalMudElements+TD_NoStringMudElements+TD_NoCasingMudElements)/=0) then + !! if (Allocated(TD_FluidMudDensity)) Deallocate(TD_FluidMudDensity) + !! Allocate(TD_FluidMudDensity(TD_NoHorizontalMudElements+TD_NoStringMudElements+TD_NoCasingMudElements)) + !! TD_FluidMudDensity(:) = TDDensity_MudElementArray(:) + !!end if + !! + !!if (allocated(TDXend_MudElementArray)) then + !! if (Allocated(TD_FluidMudEndX)) Deallocate(TD_FluidMudEndX) + !! Allocate(TD_FluidMudEndX(TD_NoHorizontalMudElements+TD_NoStringMudElements+TD_NoCasingMudElements)) + !! TD_FluidMudEndX(:) = TDXend_MudElementArray(:) + !!end if + !! + !!if (allocated(TDXstart_MudElementArray)) then + !! if (Allocated(TD_FluidMudStartX)) Deallocate(TD_FluidMudStartX) + !! Allocate(TD_FluidMudStartX(TD_NoHorizontalMudElements+TD_NoStringMudElements+TD_NoCasingMudElements)) + !! TD_FluidMudStartX(:) = TDXstart_MudElementArray(:) + !!end if + + if (TD_DrillStem(1)%ComponentType==0) then + Do i = 2 , TD_DrillStemComponentsNumbs + Call TD_MudPropertiesReadData(i) + Call TD_BouyancyFactor(i) + Call TD_CombinedMotionData(i) + End Do + TD_DrillStems(1)%MudDensityIn = TD_DrillStems(2)%MudDensityIn !(1): bit mud properties + TD_DrillStems(1)%MudDensityOut = TD_DrillStems(2)%MudDensityOut + TD_DrillStems(1)%MudWeight = TD_DrillStems(2)%MudWeight + TD_DrillStems(1)%MudPlasticVis = 5.d0+(5.d0*(TD_DrillStems(1)%MudWeight-8.3d0)) + TD_DrillStems(1)%MudViscosity = 0.2d0 !TD_DrillStems(i)%MudPlasticVis + TD_DrillStems(1)%MudYieldPoint = 10.d0+(TD_DrillStems(1)%MudWeight-8.3d0) + Call TD_BouyancyFactor(1) + Call TD_CombinedMotionData(1) + else + Do i = 1 , TD_DrillStemComponentsNumbs + Call TD_MudPropertiesReadData(i) + Call TD_BouyancyFactor(i) + Call TD_CombinedMotionData(i) + End Do + end if +!================================================ + + + + Call TD_BOPDiamCalculation + + + Call TD_StaticHookLoadCalculation + Call TD_WeightOnBitCalculation + if (abs(TD_DrillStemAxialVelocity)>3.2808d0) then !1[m/s]=3.2808[ft/s] + Call TD_ViscousDragForce + else + TD_DrillStems%Drag = 0.d0 + TD_DrillStemForceType = 5 + end if + Call TD_ForceCalculation + Call TD_HookLoadCalculation + + + + !!!!!!print*, 'TD_StringVelocity=' , TD_StringVelocity + !!!!!!print*, 'TD_HookLoad=' , TD_HookLoad + !print*, 'TD_WellTotalLength=' , TD_WellTotalLength + !print*, 'TD_ConnectionHeight_main=' , TD_ConnectionHeight + !!!!!!!!print*, 'TD_DrillStems(1)%StartAngle=' , TD_DrillStems(1)%StartAngle + !!!!!!print*, 'TD_DrillStems(1)%Force2=' , TD_DrillStems(1)%Force2 + !!!!!!print*, 'TD_DrillStems(1)%Force1=' , TD_DrillStems(1)%Force1 + !!!!!print*, 'TD_WeightIndicator=' , TD_WeightIndicator + !!!!!print*, 'TD_DlTotal=' , TD_DlTotal + !!!!!print*, 'TD_DlMax=' , TD_DlMax + !!!!!!print*, 'TD_DrillStems(n)%Force2=' , TD_DrillStems(TD_DrillStemComponentsNumbs)%Force2 + !!!!!!print*, 'TD_DrillStems(n)%Force1=' , TD_DrillStems(TD_DrillStemComponentsNumbs)%Force1 + !print*, 'TD_DrillStems(1)%Drag=' , TD_DrillStems(1)%Drag + !!!!!!!!! + !print*, 'TD_WeightOnBit=' , TD_WeightOnBit + !!print*, 'TD_StringTorque=' , TD_StringTorque + !!print*, 'TD_DrillStems(1)%Torque=' , TD_DrillStems(1)%Torque + !!print*, 'TD_DrillStems(n)%Torque=' , TD_DrillStems(TD_DrillStemComponentsNumbs)%Torque + !!!!!!!!! + !print*, 'TD_DrillStemComponentsNumbs_main =' ,TD_DrillStemComponentsNumbs + !print*, 'TD_DrillStemTotalLength=' ,TD_DrillStemTotalLength + !!print*, 'TD_StringConfigurationCount=' ,TD_StringConfigurationCount + !print*, 'TD_HookHeight=' ,TD_HookHeight + !!!!!!print*, 'TD_HookVelocity=' ,TD_HookVelocity + !print*, 'TD_DrillStems(1)%DownDepth=' ,TD_DrillStems(1)%DownDepth + !print*, 'TD_DrillStems(1)%DownDepthIni_main=' ,TD_DrillStems(1)%DownDepthIni + !!!!!!print*, 'TD_DrillStems(1)%DownDepth=' ,TD_DrillStems(335)%DownDepth + !!print*, 'TD_DrillStems(n)%DownDepth=' ,TD_DrillStems(TD_DrillStemComponentsNumbs)%DownDepth + !!!print*, 'TD_DrillStems(n)%ID=' ,TD_DrillStems(TD_DrillStemComponentsNumbs)%ID + !!!print*, 'TD_DrillStems(n)%OD=' ,TD_DrillStems(TD_DrillStemComponentsNumbs)%OD + !!!print*, 'TD_DrillStem(n)%ID=' ,TD_DrillStem(TD_StringConfigurationCount)%ID + !!!print*, 'TD_DrillStem(n)%OD=' ,TD_DrillStem(TD_StringConfigurationCount)%OD + !!!print*, 'TD_DrillStem(1)%ID=' ,TD_DrillStem(1)%ID + !!!print*, 'TD_DrillStem(1)%OD=' ,TD_DrillStem(1)%OD + !!!!!print*, 'TD_StaticHookLoad=' ,TD_StaticHookLoad + !!!!print*, 'TD_DrillStems(n)%Dl=' ,TD_DrillStems(TD_DrillStemComponentsNumbs)%Dl + !!!!!print*, 'TD_DrillStems(n)%Length=' ,TD_DrillStems(TD_DrillStemComponentsNumbs)%Length + !!!!!print*, 'TD_DrillStem(1)%Length=' ,TD_DrillStem(1)%Length + !!!!!print*, 'TD_DrillStems(n)%Area=' ,TD_DrillStems(TD_DrillStemComponentsNumbs)%Area + !!!!!print*, 'TD_DrillStems(n)%ElasticModule=' ,TD_DrillStems(TD_DrillStemComponentsNumbs)%ElasticModule + + TD_HookHeightOld = TD_HookHeight + + + ! if(IsStopped == .true.) then + ! EXIT loop1 + ! end if + ! + ! + ! CALL DATE_AND_TIME(values=TD_EndTime) + ! TD_SolDuration=100-(TD_EndTime(6)*60000+TD_EndTime(7)*1000+TD_EndTime(8)-TD_StartTime(6)*60000-TD_StartTime(7)*1000-TD_StartTime(8)) + ! !print*, 'TD_SolDuration=' , TD_SolDuration + ! !print*, 'TD_exe=' , (TD_EndTime(6)*60000+TD_EndTime(7)*1000+TD_EndTime(8)-TD_StartTime(6)*60000-TD_StartTime(7)*1000-TD_StartTime(8)) + ! if(TD_SolDuration > 0.0d0) then + ! CALL sleepqq(TD_SolDuration) + ! end if + ! + ! + !end do loop1 + ! + !return + + + + + +end subroutine TD_MainCalculations \ No newline at end of file diff --git a/TorqueDrag/TD_Modules/GeoElements_FluidModule.f90 b/TorqueDrag/TD_Modules/GeoElements_FluidModule.f90 new file mode 100644 index 0000000..cdf3ff3 --- /dev/null +++ b/TorqueDrag/TD_Modules/GeoElements_FluidModule.f90 @@ -0,0 +1,58 @@ +MODULE GeoElements_FluidModule + + + IMPLICIT NONE + PUBLIC + + + + + REAL(8) , Allocatable :: MD(:) , TVD(:) , Angle(:) + + + +!==================================================== +! Well Geometrical Elements Info (for fluid module) +!==================================================== + + TYPE , PUBLIC :: F_StringData + INTEGER :: FirstElement , LastElement , ElType + REAL(8) :: ID , OD , TopDepth , DownDepth + END TYPE F_StringData + + TYPE(F_StringData) , Allocatable :: F_String(:) + + + + + + INTEGER :: F_IntervalsTotalCounts , F_StringIntervalCounts , F_BottomHoleIntervalCounts , F_AnnulusIntervalCounts + INTEGER :: OutOfWellIntervalCounts + TYPE , PUBLIC :: F_IntervalData + INTEGER :: Number , GeoType + REAL(8) :: ID , OD , StartDepth , EndDepth , HydDiameter , Volume + REAL(8) :: StartTVD , EndTVD , StartAngle , EndAngle + END TYPE F_IntervalData + + TYPE(F_IntervalData) , Allocatable :: F_Interval(:) + !####F_Interval(:)%GeoType = + ! 0 : String Interval + ! 1 : BottomHole Interval + ! 2 : Annulus Interval + + + + + + TYPE , PUBLIC :: OD_AnnulusData + REAL(8) :: ODValue , StartMD , EndMD + END TYPE OD_AnnulusData + + TYPE(OD_AnnulusData) :: OD_Annulus(4) + + + + + + +END MODULE GeoElements_FluidModule \ No newline at end of file diff --git a/TorqueDrag/TD_Modules/TD_DrillStem.f90 b/TorqueDrag/TD_Modules/TD_DrillStem.f90 new file mode 100644 index 0000000..bddf8f9 --- /dev/null +++ b/TorqueDrag/TD_Modules/TD_DrillStem.f90 @@ -0,0 +1,128 @@ +MODULE TD_DrillStemComponents + + Use CDownHoleVariables + + IMPLICIT NONE + PUBLIC + + INTEGER :: TD_StringConfigurationCount , TD_DrillStemComponentsNumbs , TD_DrillStemForceType + REAL(8) :: TD_DrillStemTotalLength , TD_DrillStemTotalLengthIni , TD_OutOfWellLength , TD_DrillStemTotalWeight , TD_DrillStemBottom + REAL(8) :: TD_DrillStemAxialVelocity , TD_DrillStemRotVelocity , TD_TopJointHeight + REAL(8) :: TD_WeightOnBit , TD_BitTorque , TD_TotalTorque , TD_StaticHookLoad , TD_DlMax , TD_DlTotal , TD_DlTouch + REAL(8) :: TD_HookLoad , TD_StringTorque + REAL(8) :: TD_ToolJointRange + real(8) , allocatable :: TD_FluidMudDensity(:) , TD_FluidMudEndX(:) , TD_FluidMudStartX(:) + INTEGER :: TD_NoHorizontalMudElements , TD_NoStringMudElements , TD_NoCasingMudElements + + + + + +!==================================================== +! Drill Stem Components Info +!==================================================== + + TYPE, PUBLIC :: TD_DrillStemInfo + INTEGER :: Numbs , ComponentType + REAL(8) :: Length , TopDepth , DownDepth , Od , Id , WeightperLength , TotalLength , TotalWeight + END TYPE TD_DrillStemInfo + + TYPE(TD_DrillStemInfo), ALLOCATABLE, DIMENSION(:) :: TD_DrillStem + + + + + + + +!==================================================== +! Separated Parts of the Drill Stem +!==================================================== + + TYPE , PUBLIC :: TD_SeparatedDrillStemInfo + !=========> Elements Geometry + INTEGER :: HoleType , ComponentType + REAL(8) :: Length , TopDepth , DownDepth , Od , Id , Area , Weight , WeightperLength , StartAngle , EndAngle + REAL(8) :: RCurvature , RtoolJoint , HoleDiameter , ToolJointRange + !=========> Elements initial Geometry + REAL(8) :: LengthIni , TopDepthIni , DownDepthIni , StartAngleIni , EndAngleIni + !=========> Elements initial Geometry (graphic) + REAL(8) :: TopDepthIniG , DownDepthIniG + !=========> Pipes Properties + REAL(8) :: Density , ElasticModule + !=========> Forces Info + REAL(8) :: Force1 , Force2 , Torque , Drag , CombVelRatio + !=========> Mud Properties + REAL(8) :: MudDensityIn , MudDensityOut , MudViscosity , MudVisCorrectCoef , BouyancyFactor , MudWeight , MudPlasticVis , MudYieldPoint + !=========> Viscous Drag Force + REAL(8) :: FricFactor , DiamRatio , MudClingingConst , PipeVelocity , AveEffVelocity , ReNumber , Dp_Dl + !=========> Hook Load + REAL(8) :: StaticHookLoad , TotalSHookLoad , Dl , DlTotal + END TYPE TD_SeparatedDrillStemInfo + + TYPE(TD_SeparatedDrillStemInfo), ALLOCATABLE, DIMENSION(:) :: TD_DrillStems + + + + + + + +!==================================================== +! Separated Parts of the Drill Stem +!==================================================== + + INTEGER :: TD_NearFloorConnectionNo + REAL(8) :: TD_NearFloorConnectionHeight + + + + + + +!==================================================== +! Add&Remove DrillStem Components +!==================================================== + integer :: TD_IBOPNewAdd , TD_IBOPOldAdd , TD_SafetyValveNewAdd , TD_SafetyValveOldAdd , TD_KellyNewAdd , TD_KellyOldAdd + integer :: TD_IBOPNewRemove , TD_IBOPOldRemove , TD_SafetyValveNewRemove , TD_SafetyValveOldRemove , TD_KellyNewRemove , TD_KellyOldRemove + integer :: TD_KellyOldStatus1 , TD_KellyNewStatus1 , TD_KellyOldStatus2 , TD_KellyNewStatus2 , TD_KellyOldStatus3 , TD_KellyNewStatus3 + integer :: TD_KellyOldStatus4 , TD_KellyNewStatus4 , TD_KellyOldStatus5 , TD_KellyNewStatus5 , TD_KellyOldStatus6 , TD_KellyNewStatus6 + integer :: TD_KellyOldStatus7 , TD_KellyNewStatus7 , TD_KellyOldStatus8 , TD_KellyNewStatus8 + integer :: TD_KellyOldStatus9 , TD_KellyNewStatus9 , TD_KellyOldStatus10 , TD_KellyNewStatus10 + integer :: TD_KellyOldStatus11 , TD_KellyNewStatus11 , TD_KellyOldStatus12 , TD_KellyNewStatus12 + integer :: TD_KellyOldStatus13 , TD_KellyNewStatus13 , TD_KellyOldStatus14 , TD_KellyNewStatus14 + integer :: TD_KellyOldStatus15 , TD_KellyNewStatus15 , TD_KellyOldStatus16 , TD_KellyNewStatus16 , TD_KellyOldStatus17 , TD_KellyNewStatus17 + integer :: TD_KellyOldStatus18 , TD_KellyNewStatus18 , TD_KellyOldStatus19 , TD_KellyNewStatus19 + + + + + +!==================================================== +! Graphic Output Info +!==================================================== + + !TYPE, PUBLIC :: CStringComponent + ! Integer :: ComponentType + ! REAL(8) :: Length , TopDepth , DownDepth , Od , Id + !END TYPE CStringComponent + + TYPE(CStringComponents), ALLOCATABLE, DIMENSION(:) :: G_StringElement + + + + + + +!==================================================== +! Removed-Volume Variables +!==================================================== + Integer :: TD_PreCount + REAL(8) :: TD_RemoveVolume , TD_PreElementVolume , TD_PreElementLength + + + + + + +END MODULE TD_DrillStemComponents \ No newline at end of file diff --git a/TorqueDrag/TD_Modules/TD_GeneralData.f90 b/TorqueDrag/TD_Modules/TD_GeneralData.f90 new file mode 100644 index 0000000..c685aeb --- /dev/null +++ b/TorqueDrag/TD_Modules/TD_GeneralData.f90 @@ -0,0 +1,51 @@ +MODULE TD_GeneralData + + + Use CDownHoleTypes + + IMPLICIT NONE + PUBLIC + + + + +!==================================================== +! General Info +!==================================================== + +!=====> Time Info + REAL :: TD_TimeStep + INTEGER :: TD_IntCPUTime, TD_DtRef + !REAL :: TD_StartTime, TD_EndTime + + + + + + +!=====> BOP Info + !REAL(8) :: TD_AboveAnnularHeight , TD_AnnularPreventerHeight , TD_UpperRamHeight , TD_LowerRamHeight , TD_BlindRamHeight , TD_KillHeight + REAL(8) :: TD_AboveAnnularDiam , TD_AnnularPreventerDiam , TD_UpperRamDiam , TD_LowerRamDiam , TD_BlindRamDiam , TD_KillDiam + REAL(8) , Dimension(6) :: TD_BOPHeight , TD_BOPDiam + REAL(8) , Dimension(4) :: TD_BOPRamDiam + REAL(8) :: TD_BOPThickness , TD_AnnularFillingFinal + INTEGER , Dimension(4) :: TD_BOPCondition + INTEGER , Dimension(6) :: TD_BOPElementNo + INTEGER , Dimension(6) :: TD_BOPConnectionPossibility ! 0:impossible , 1:possible(for DrillPipe Element) + + !TYPE , PUBLIC :: TD_BOPElementData + ! INTEGER :: CType + ! REAL(8) :: TopDepth , DownDepth + !END TYPE TD_BOPElementData + TYPE(CBopElement) :: TD_BOPElement(4) + + + +!=====> Problems + INTEGER :: TD_WeightIndicatorMalf + + + + + +END MODULE TD_GeneralData \ No newline at end of file diff --git a/TorqueDrag/TD_Modules/TD_StringConnectionData.f90 b/TorqueDrag/TD_Modules/TD_StringConnectionData.f90 new file mode 100644 index 0000000..f99306a --- /dev/null +++ b/TorqueDrag/TD_Modules/TD_StringConnectionData.f90 @@ -0,0 +1,47 @@ +MODULE TD_StringConnectionData + + + IMPLICIT NONE + PUBLIC + + + + +!==================================================== +! String Connection Info +!==================================================== + + INTEGER :: TD_StringConnectionMode , TD_KellyDriveTypeMode , TD_OldOperationCondition , TD_FluidStringConnectionMode + REAL(8) :: TD_ConnectionHeight , TD_TouchConnectionHeight , TD_RigidConnectionHeight , TD_GRigidConnectionHeight , TD_StringVelocity + REAL(8) :: TD_HookHeightOld , TD_HookHeight , TD_HookVelocity + REAL(8) :: TD_ElevatorHeight , TD_ElevatorConst + REAL(8) :: TD_SafetyValveLength , TD_IBOPLength , TD_KellyElementID , TD_KellyElementOD + REAL(8) :: TD_KellyConnectionHeight , TD_KellyConst , TD_KellyElementConst + REAL(8) :: TD_TDSHeight , TD_TDSElevatorHeight , TD_TDSLength , TD_TDSElevatorLength , TD_TDSToolJointLength , TD_TDSElevatorToolLength + REAL(8) :: TD_TDSElevatorECG , TD_ElevatorECG + + + + + + +!==================================================== +! Weight Indicator Info +!==================================================== + + INTEGER :: TD_NumOfCables + REAL(8) :: TD_WeightIndicator + REAL(8) :: TD_WeightTB , TD_WeightTD , TD_KellyWeight + + + + + INTEGER :: TD_ZeroStringSpeed + REAL(8) :: TD_DrawworksLoadInput + + + + + + +END MODULE TD_StringConnectionData \ No newline at end of file diff --git a/TorqueDrag/TD_Modules/TD_WellElements.f90 b/TorqueDrag/TD_Modules/TD_WellElements.f90 new file mode 100644 index 0000000..8fcac0d --- /dev/null +++ b/TorqueDrag/TD_Modules/TD_WellElements.f90 @@ -0,0 +1,80 @@ +MODULE TD_WellElements + + + IMPLICIT NONE + PUBLIC + + + + +!==================================================== +! Casing Info +!==================================================== + + INTEGER :: TD_CasingNumbs + + TYPE, PUBLIC :: TD_CasingInfo + INTEGER :: HoleType + REAL(8) :: Length , TopDepth , DownDepth , Od , Id , Weight , CollapsePressure , TensileStrength , Roughness + END TYPE TD_CasingInfo +! + TYPE(TD_CasingInfo), ALLOCATABLE, DIMENSION(:) :: TD_Casing + + + + + + +!==================================================== +! Liner Info +!==================================================== + + INTEGER :: TD_LinerNumbs + + TYPE, PUBLIC :: TD_LinerInfo + REAL(8) :: Length , TopDepth , DownDepth , Od , Id , Weight , CollapsePressure , TensileStrength , Roughness , HoleType + END TYPE TD_LinerInfo +! + TYPE(TD_LinerInfo), ALLOCATABLE, DIMENSION(:) :: TD_Liner + + + + + + +!==================================================== +! Open_Hole Info +!==================================================== + + INTEGER :: TD_OpenHoleNumbs + + TYPE, PUBLIC :: TD_OpenHoleInfo + REAL(8) :: Length , TopDepth , DownDepth , Id , HoleType + END TYPE TD_OpenHoleInfo +! + TYPE(TD_OpenHoleInfo), ALLOCATABLE, DIMENSION(:) :: TD_OpenHole + + + + + + +!==================================================== +! ROP_Hole Info +!==================================================== + + INTEGER :: TD_ROPHoleNumbs + REAL(8) :: TD_ROP + + TYPE, PUBLIC :: TD_ROPHoleInfo + REAL(8) :: Length , TopDepth , DownDepth , Id , HoleType + END TYPE TD_ROPHoleInfo +! + TYPE(TD_ROPHoleInfo), ALLOCATABLE, DIMENSION(:) :: TD_ROPHole + + + + + + +END MODULE TD_WellElements \ No newline at end of file diff --git a/TorqueDrag/TD_Modules/TD_WellGeometry.f90 b/TorqueDrag/TD_Modules/TD_WellGeometry.f90 new file mode 100644 index 0000000..00b00b8 --- /dev/null +++ b/TorqueDrag/TD_Modules/TD_WellGeometry.f90 @@ -0,0 +1,32 @@ +MODULE TD_WellGeometry + + + IMPLICIT NONE + PUBLIC + + + + REAL(8) , PARAMETER :: pi=3.14159265 + + + + +!==================================================== +! Well Geometry Info +!==================================================== + + INTEGER :: TD_WellIntervalsCount + REAL(8) :: TD_WellTotalLength , TD_WellTotalVerticalLength + + TYPE, PUBLIC :: TD_WellGeometryData + INTEGER :: HoleType + REAL(8) :: StartAngle , EndAngle , IntervalLength , VerticalDepth , TopDepth , DownDepth , RCurvature + END TYPE TD_WellGeometryData + + TYPE(TD_WellGeometryData), Allocatable :: TD_WellGeo(:) + + + + + +END MODULE TD_WellGeometry \ No newline at end of file diff --git a/TorqueDrag/TD_Modules/td_wellgeometry.mod b/TorqueDrag/TD_Modules/td_wellgeometry.mod new file mode 100644 index 0000000000000000000000000000000000000000..38275397899216b9989e857deafff62fa3cde19f GIT binary patch literal 1354 zcmV-Q1-1GgiwFP!000001I1X|a;iuaeebX6x7LSq3Pck#PeY(%Q3rwIV#caeQ5+=+ zQwAKsoN>N>c7q@&B8koX?qz3g>7^dQhi3^MluL^L z0Va00wS-_E_j)oll^K<>qy5nIN9~)U*;KPpacG#jR9q{+Im`jvo`A_~wDQyK+9$Zj z7EY*%hwL)uP;m^jDrAf2KBxy4ag#+>#&~K4rhg7&X}+Vd96&bJmLwy0-ZnOoA}=<9Bbh^23+(^(#Q!VghNG1`BVs^w(d5 zVGI!-t-s9t9VW}@SNLW2c@C3!v4J>9H}MxlVjmmMy{brMg6%AG$9Q6^;W8%7tC}hFq#zQwAL)Gd*yvIS91dD!I!x&O3J0|^T6~hmXCfSOv zVXD$8tblzo;5kS%O>yq(j!jKhrUunys!8)4XY_t6vh5#i8Gp2Wzn>i2RH?&ZPA=iJ4afmz+gwKI6m@P zotVIgy{F#K&y!*fL>IE!Q9(0Xysz`&haCy!fep83gh0_QVT4Y}>e<}FGkb1OCa(Ml z5%<+gUXP^}e^6RGh`9l1MVsQDq-&Nf0@7AJhiX&gDaq5n$Ac8PN$^j#6&N?-y@nL; z@G`rgKCb_F3M!nCGmgJX`NM|J?lfy4Kz_;uC++EU9T59GMg<;R!2@~(m2(a8SSiSZ z7XN7 z=_2?0dWlZmNVxC9U?@D_EV%sdcb*h3IuxM6sLG~=+6lpIF7?NPDXOY2iFWn`S%HkT zpb6R)f-b!PpPhdIZ)X?E;I47GX@Y->&{UV5j&$l{XunGUp{BjQJwkJ4R_>NbGL_U? z8kJ4vgle#tQoZ1QDC`0CxWrdXe#s)*glUIh=~Mttq(QA6Ky^)TL3>xCN~3f?r2a>7 zeLiEG0zu&FAd6wPGuTV^wF(wBOcO^t%H>nhdV4{KDzFyy)YNn)nk$`0MIYLA|7@C~ zjIc1kg3!!58=*3>zl8R%Gwpj_o}Z#!=Ces9$F!h0HuG(3+nKj}!UzjDSh&q@2Z{$_ z37nI7ks;4~R!t8@J1gJSSx!3BPYb9ao|iy?dC-Tb~A<^c5Jmo6OUvsK;S zXut{qee9J1$7a*4Zv~9QTDu2fRBr%xr3+3U_fjR#TXd=+fQ#d1{e>%cs8#ehEWif; M3ndHjgI^f{0NW{+jQ{`u literal 0 HcmV?d00001 diff --git a/TorqueDrag/TD_ReadDataSubroutines/TD_DrillStemReadData.f90 b/TorqueDrag/TD_ReadDataSubroutines/TD_DrillStemReadData.f90 new file mode 100644 index 0000000..fae9879 --- /dev/null +++ b/TorqueDrag/TD_ReadDataSubroutines/TD_DrillStemReadData.f90 @@ -0,0 +1,145 @@ +subroutine TD_DrillStemReadData + + Use CStringConfigurationVariables + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_StringConnectionData + Use Drawworks_VARIABLES, only: Drawworks + + + implicit none + + + + + Integer :: i + Integer :: TD_FirstIndex , TD_LastIndex + + + + +!==================================================== +! Set Drill Stem Components Data +!==================================================== + TD_StringConfigurationCount = StringConfigurationCount + TD_DrillStemComponentsNumbs = 0 + + + !########## TD_DrillStem%ComponentType :: + !#Bit_ComponentType = 0 + !#Stabilizer_ComponentType = 1 + !#Collar_ComponentType = 2 + !#DrillPipe_ComponentType = 3 + !#Heavyweight_ComponentType = 4 + !#IBOP = 5 + !#Kelly & SafetyValve (DrillMode) = 6 + !#SafetyValve (TripMode) = 7 + + + if (Allocated(TD_DrillStem)) deAllocate (TD_DrillStem) + Allocate (TD_DrillStem(TD_StringConfigurationCount+100)) + + + Do i=1, TD_StringConfigurationCount + TD_DrillStem(i)%ComponentType = StringConfigurations(i)%ComponentType + TD_DrillStem(i)%Numbs = StringConfigurations(i)%NumberOfJoint + TD_DrillStem(i)%Id = StringConfigurations(i)%NominalId/12.d0 ![ft] + TD_DrillStem(i)%Od = StringConfigurations(i)%NominalOd/12.d0 ![ft] + TD_DrillStem(i)%Length = StringConfigurations(i)%LengthPerJoint ![ft] + TD_DrillStem(i)%WeightperLength = StringConfigurations(i)%WeightPerLength ![lb/ft] + TD_DrillStem(i)%TotalLength = StringConfigurations(i)%ComponentLength + TD_DrillStem(i)%TotalWeight = TD_DrillStem(i)%TotalLength*TD_DrillStem(i)%WeightperLength + + TD_DrillStemComponentsNumbs = TD_DrillStemComponentsNumbs+StringConfigurations(i)%NumberOfJoint + + !!=========> Set Separated Drill Stem Components Data + ! TD_LastIndex = TD_LastIndex+StringConfigurations(i)%NumberOfJoint + ! + ! TD_DrillStems(TD_FirstIndex:TD_LastIndex)%ComponentType = TD_DrillStem(i)%ComponentType + ! TD_DrillStems(TD_FirstIndex:TD_LastIndex)%Id = TD_DrillStem(i)%Id + ! TD_DrillStems(TD_FirstIndex:TD_LastIndex)%Od = TD_DrillStem(i)%Od + ! TD_DrillStems(TD_FirstIndex:TD_LastIndex)%Length = TD_DrillStem(i)%Length + ! TD_DrillStems(TD_FirstIndex:TD_LastIndex)%Weight = TD_DrillStem(i)%Weight + ! + ! TD_FirstIndex = TD_LastIndex+1 + End Do + + + + + + +!===> Initial Values of Removed-Volume Variables + if (TD_DrillStem(1)%ComponentType==0) then + TD_PreCount = TD_StringConfigurationCount-1 + else + TD_PreCount = TD_StringConfigurationCount + end if + TD_PreElementVolume = TD_DrillStem(TD_StringConfigurationCount)%TotalLength*(((pi*((TD_DrillStem(TD_StringConfigurationCount)%Id)**2))/4.d0)) ![ft^3] + TD_PreElementLength = TD_DrillStem(TD_StringConfigurationCount)%TotalLength + + + + + + + +!==================================================== +! Set Separated Drill Stem Components Data +!==================================================== + + TD_FirstIndex = 1 + TD_LastIndex = 0 + if (Allocated(TD_DrillStems)) deAllocate (TD_DrillStems) + Allocate (TD_DrillStems(TD_DrillStemComponentsNumbs+300)) ! +300: because of: Add or Remove DrillStem Components + Call TD_DrillStemStartUp + + + Do i=1, TD_StringConfigurationCount + + TD_LastIndex = TD_LastIndex+StringConfigurations(i)%NumberOfJoint + + TD_DrillStems(TD_FirstIndex:TD_LastIndex)%ComponentType = TD_DrillStem(i)%ComponentType + TD_DrillStems(TD_FirstIndex:TD_LastIndex)%Id = TD_DrillStem(i)%Id + TD_DrillStems(TD_FirstIndex:TD_LastIndex)%Od = TD_DrillStem(i)%Od + TD_DrillStems(TD_FirstIndex:TD_LastIndex)%Area = (pi*((TD_DrillStem(i)%Od**2)-(TD_DrillStem(i)%Id**2)))/4.0d0 + + if (TD_DrillStem(i)%ComponentType == 3 .or. TD_DrillStem(i)%ComponentType == 4) then + TD_DrillStems(TD_FirstIndex:TD_LastIndex)%RtoolJoint = TD_DrillStem(i)%Od*1.30d0/2.0d0 + TD_DrillStems(TD_FirstIndex:TD_LastIndex)%ToolJointRange = TD_ToolJointRange + else if (TD_DrillStem(i)%ComponentType == 1 .or. TD_DrillStem(i)%ComponentType == 2) then + TD_DrillStems(TD_FirstIndex:TD_LastIndex)%RtoolJoint = TD_DrillStem(i)%Od/2.0d0 + TD_DrillStems(TD_FirstIndex:TD_LastIndex)%ToolJointRange = TD_ToolJointRange + else if (TD_DrillStem(i)%ComponentType == 0) then + TD_DrillStems(TD_FirstIndex:TD_LastIndex)%RtoolJoint = TD_DrillStem(i)%Od + TD_DrillStems(TD_FirstIndex:TD_LastIndex)%ToolJointRange = 0.0d0 + end if + + TD_DrillStems(TD_FirstIndex:TD_LastIndex)%Length = TD_DrillStem(i)%Length + TD_DrillStems(TD_FirstIndex:TD_LastIndex)%LengthIni = TD_DrillStem(i)%Length + TD_DrillStems(TD_FirstIndex:TD_LastIndex)%WeightperLength= TD_DrillStem(i)%WeightperLength + TD_DrillStems(TD_FirstIndex:TD_LastIndex)%Weight = TD_DrillStem(i)%WeightperLength*TD_DrillStem(i)%Length + + TD_FirstIndex = TD_LastIndex+1 + + End Do + + + + + + + +!==================================================== +! Set Hook Height Data +!==================================================== + TD_HookHeightOld = Drawworks%Hook_Height_ini + TD_HookHeight = TD_HookHeightOld + + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_ReadDataSubroutines/TD_ForceReadData.f90 b/TorqueDrag/TD_ReadDataSubroutines/TD_ForceReadData.f90 new file mode 100644 index 0000000..8da3dfd --- /dev/null +++ b/TorqueDrag/TD_ReadDataSubroutines/TD_ForceReadData.f90 @@ -0,0 +1,61 @@ +subroutine TD_ForceReadData + + Use CHoistingVariables + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + Use TD_StringConnectionData + Use RTable_VARIABLES, only: RTable + Use sROP_Variables + Use TopDrive_VARIABLES, only: TDS + + + implicit none + + + integer :: i + + + + TD_DrillStemAxialVelocity = TD_StringVelocity + Do i = 1 , TD_DrillStemComponentsNumbs + if ( DriveType==1) then + TD_DrillStemRotVelocity = (2.d0*pi*TD_DrillStems(i)%RtoolJoint)*(RTable%Speed)/60.d0 ! RTable%Speed[RPM] ---> TD_DrillStemRotVelocity[ft/s] + else if ( DriveType==0) then + TD_DrillStemRotVelocity = (2.d0*pi*TD_DrillStems(i)%RtoolJoint)*(TDS%Speed+RTable%Speed)/60.d0 ! TDS%Speed[RPM] ---> TD_DrillStemRotVelocity[ft/s] + end if + End Do + + + + + TD_BitTorque = Bit_Torque + + + + + + !TD_DrillStemAxialVelocity = 0.0 !??????????????????? + !TD_DrillStemRotVelocity = 0.0 !??????????????????? + + + + + TD_DrillStemForceType = 0 + if(TD_DrillStemAxialVelocity > 0.) then !??????????????????? check + TD_DrillStemForceType = 1 + if(TD_DrillStemRotVelocity /= 0.d0) TD_DrillStemForceType = 2 + else if(TD_DrillStemAxialVelocity < 0.d0) then + TD_DrillStemForceType = 3 + if(TD_DrillStemRotVelocity /= 0.d0) TD_DrillStemForceType = 4 + else if(TD_DrillStemAxialVelocity == 0.d0) then + TD_DrillStemForceType = 5 !no axial motion + end if + + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_ReadDataSubroutines/TD_MudPropertiesReadData.f90 b/TorqueDrag/TD_ReadDataSubroutines/TD_MudPropertiesReadData.f90 new file mode 100644 index 0000000..0099d92 --- /dev/null +++ b/TorqueDrag/TD_ReadDataSubroutines/TD_MudPropertiesReadData.f90 @@ -0,0 +1,96 @@ +subroutine TD_MudPropertiesReadData (i) + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + Use FricPressDropVars + Use MudSystemVARIABLES + + implicit none + + + + Integer :: i , j , TDmd + real(8) :: TDden, TDpre, TDtem + + + +!==================================================== +! Set Mud Properties Data +!==================================================== + IF ( ALLOCATED(FlowEl) ) THEN + if ( i==2 ) then + TDmd = int(TD_DrillStems(i)%DownDepthIni-1.d0) + else + TDmd = int(TD_DrillStems(i)%DownDepthIni) + end if + Call StringPropertyCalculator (TDmd , TDden, TDpre, TDtem) + TD_DrillStems(i)%MudDensityIn = TDden*7.48051948d0 ! [ppg]*7.48051948=[lb/ft3] + Call AnnulusPropertyCalculator (TDmd , TDden, TDpre, TDtem) + TD_DrillStems(i)%MudDensityOut = TDden*7.48051948d0 ! [ppg]*7.48051948=[lb/ft3] + TD_DrillStems(i)%MudWeight = TDden ! [ppg] ??????????????? + ELSE + TD_DrillStems(i)%MudDensityIn = TD_DrillStems(i)%MudDensityIn + TD_DrillStems(i)%MudDensityOut = TD_DrillStems(i)%MudDensityOut + TD_DrillStems(i)%MudWeight = TD_DrillStems(i)%MudWeight + END IF + + + !TD_DrillStems(i)%Drag = + + + + + + !IF (ALLOCATED(TD_FluidMudDensity) .and. ALLOCATED(TD_FluidMudStartX) .and. TD_NoStringMudElements/=0) THEN + ! Do j = TD_NoHorizontalMudElements+1,TD_NoHorizontalMudElements+TD_NoStringMudElements + ! if ( TD_DrillStems(i)%DownDepthIni<=TD_FluidMudStartX(j) ) then + ! exit + ! end if + ! TD_DrillStems(i)%MudDensityIn = TD_FluidMudDensity(j)*7.48051948d0 !10.*7.48051948 ! [ppg]*7.48051948=[lb/ft3] + ! !print*, 'TD_DrillStems(i)%MudDensityIn=' ,TD_DrillStems(i)%MudDensityIn , i + ! !print*, 'FlowEl(j)%density=' ,FlowEl(j)%density , i + ! End Do + !ELSE + ! TD_DrillStems(i)%MudDensityIn = TD_DrillStems(i)%MudDensityIn ! [ppg]*7.48051948=[lb/ft3] + !! !print*, '=================' , i + !END IF + ! + ! + ! + ! + ! + ! + ! + !IF (ALLOCATED(TD_FluidMudDensity) .and. ALLOCATED(TD_FluidMudEndX) .and. TD_NoCasingMudElements/=0) THEN + ! Do j = (TD_NoHorizontalMudElements+TD_NoStringMudElements+TD_NoCasingMudElements),(TD_NoHorizontalMudElements+TD_NoStringMudElements+1),-1 + ! if ( TD_DrillStems(i)%DownDepthIni<=TD_FluidMudEndX(j) ) then + ! exit + ! end if + ! TD_DrillStems(i)%MudDensityOut = TD_FluidMudDensity(j)*7.48051948d0 !10.*7.48051948 ! [ppg]*7.48051948=[lb/ft3] + ! TD_DrillStems(i)%MudWeight = TD_FluidMudDensity(j) !10.0 ! [ppg] ??????????????? + ! End Do + !ELSE + ! TD_DrillStems(i)%MudDensityOut = TD_DrillStems(i)%MudDensityOut ! [ppg]*7.48051948=[lb/ft3] + ! TD_DrillStems(i)%MudWeight = TD_DrillStems(i)%MudWeight ! [ppg] ??????????????? + !END IF + + + + + + + + + TD_DrillStems(i)%MudPlasticVis = 5.d0+(5.d0*(TD_DrillStems(i)%MudWeight-8.3d0)) ! [cP] + !TD_DrillStems(i)%MudPlasticVis= TD_DrillStems(i)%MudPlasticVis * 6.71968d-4 ! [cP]*6.71968d-4=[lb/(ft.s)] + TD_DrillStems(i)%MudViscosity = 0.2d0 !TD_DrillStems(i)%MudPlasticVis + TD_DrillStems(i)%MudYieldPoint = 10.d0+(TD_DrillStems(i)%MudWeight-8.3d0) + + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_ReadDataSubroutines/TD_PipePropertiesReadData.f90 b/TorqueDrag/TD_ReadDataSubroutines/TD_PipePropertiesReadData.f90 new file mode 100644 index 0000000..7a590e7 --- /dev/null +++ b/TorqueDrag/TD_ReadDataSubroutines/TD_PipePropertiesReadData.f90 @@ -0,0 +1,26 @@ +subroutine TD_PipePropertiesReadData + + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + + implicit none + + Integer :: i + + +!==================================================== +! Set Pipe Properties Data +!==================================================== + + Do i = 1 , TD_DrillStemComponentsNumbs + TD_DrillStems(i)%Density = 7850.d0*0.06242796d0 ![kg/m3]*0.06242796=[lb/ft3] + TD_DrillStems(i)%ElasticModule = 200.0d9*0.02088543d0 ![lb/ft2] !200GPa=29Mpsi (steel) + End Do + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_ReadDataSubroutines/TD_WellElementsReadData.f90 b/TorqueDrag/TD_ReadDataSubroutines/TD_WellElementsReadData.f90 new file mode 100644 index 0000000..4c242a7 --- /dev/null +++ b/TorqueDrag/TD_ReadDataSubroutines/TD_WellElementsReadData.f90 @@ -0,0 +1,132 @@ +subroutine TD_WellElementsReadData + + Use CCasingLinerChokeVariables + use CStringConfigurationVariables + Use TD_WellElements + Use TD_WellGeometry + + implicit none + + + Integer :: i + Real(8) :: TD_OpenHoleLength + + + + +!==================================================== +! Set Casing Data +!==================================================== + TD_CasingNumbs = 1 + + if (Allocated(TD_Casing)) deAllocate (TD_Casing) + Allocate (TD_Casing(TD_CasingNumbs)) + + Do i=1, TD_CasingNumbs + TD_Casing(i)%Length = CasingDepth ! unit: [ft] + TD_Casing(i)%TopDepth = 0.d0 + TD_Casing(i)%DownDepth = TD_Casing(i)%Length + TD_Casing(i)%Od = CasingOd/12.d0 ! unit: [ft] + TD_Casing(i)%Id = CasingId/12.d0 ! unit: [ft] + TD_Casing(i)%Weight = CasingWeight + TD_Casing(i)%CollapsePressure = CasingCollapsePressure + TD_Casing(i)%TensileStrength = CasingTensileStrength + End Do + + + + + +!==================================================== +! Set Liner Data +!==================================================== + TD_LinerNumbs = 0 + if(LinerLength > 0.d0) then + TD_LinerNumbs = 1 + + !if (TD_LinerNumbs>0) then + if (Allocated(TD_Liner)) deAllocate (TD_Liner) + Allocate (TD_Liner(TD_LinerNumbs)) + + Do i=1, TD_LinerNumbs + TD_Liner(i)%TopDepth = LinerTopDepth ! unit: [ft] + if (TD_Liner(i)%TopDepth 0.d0) TD_OpenHoleNumbs=1 + + if (TD_OpenHoleNumbs>0) then + if (Allocated(TD_OpenHole)) deAllocate (TD_OpenHole) + Allocate (TD_OpenHole(TD_OpenHoleNumbs)) !!!??????????????????check + + Do i = 1, TD_OpenHoleNumbs + TD_OpenHole(i)%TopDepth = TD_Liner(TD_LinerNumbs)%DownDepth + TD_OpenHole(i)%Length = TD_OpenHoleLength ! unit: [ft] + TD_OpenHole(i)%DownDepth = TD_OpenHole(i)%TopDepth+TD_OpenHole(i)%Length + TD_OpenHole(i)%Id = OpenHoleId/12.d0 ! unit: [ft] + End Do + + else + if (Allocated(TD_OpenHole)) deAllocate (TD_OpenHole) + Allocate (TD_OpenHole(1)) + TD_OpenHoleNumbs = 1 + TD_OpenHole%Length = 0.d0 + TD_OpenHole%TopDepth = TD_Liner(TD_LinerNumbs)%DownDepth + TD_OpenHole%DownDepth = TD_OpenHole%TopDepth + + end if + + + + +!==================================================== +! Set ROP_Hole Data +!==================================================== + + TD_ROPHoleNumbs = 1 + if (Allocated(TD_ROPHole)) deAllocate (TD_ROPHole) + Allocate (TD_ROPHole(TD_ROPHoleNumbs)) + + Do i = 1, TD_ROPHoleNumbs + TD_ROPHole(i)%TopDepth = TD_WellGeo(TD_WellIntervalsCount)%TopDepth + TD_ROPHole(i)%DownDepth = TD_WellGeo(TD_WellIntervalsCount)%DownDepth + TD_ROPHole(i)%Length = TD_WellGeo(TD_WellIntervalsCount)%IntervalLength + TD_ROPHole(i)%Id = BitDefinition%BitSize/12.d0 ! unit: [ft] + End Do + + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_ReadDataSubroutines/TD_WellReadData.f90 b/TorqueDrag/TD_ReadDataSubroutines/TD_WellReadData.f90 new file mode 100644 index 0000000..22f5676 --- /dev/null +++ b/TorqueDrag/TD_ReadDataSubroutines/TD_WellReadData.f90 @@ -0,0 +1,111 @@ +subroutine TD_WellReadData + + Use CPathGenerationVariables + Use TD_WellGeometry + + implicit none + + Integer :: i + + + + TD_WellIntervalsCount = PathGenerationCount + 1 ! +1 is belong to ROP hole + + if (Allocated(TD_WellGeo)) deAllocate (TD_WellGeo) + Allocate (TD_WellGeo(TD_WellIntervalsCount)) + + + + +!==================================================== +! Set Well Geometry Data +!==================================================== + + TD_WellGeo(1)%HoleType = PathGenerations(1)%HoleType + TD_WellGeo(1)%StartAngle = 0.d0 ![rad] + TD_WellGeo(1)%EndAngle = PathGenerations(1)%FinalAngle*(pi/180.d0) ![rad] + TD_WellGeo(1)%IntervalLength= PathGenerations(1)%TotalLength ![ft] + !TD_WellGeo(1)%VerticalDepth = PathGenerations(1)%TotalVerticalDepth + TD_WellGeo(1)%TopDepth = 0.d0 + TD_WellGeo(1)%DownDepth = PathGenerations(1)%MeasuredDepth + + + + Do i=2,TD_WellIntervalsCount-1 + + TD_WellGeo(i)%HoleType = PathGenerations(i)%HoleType + TD_WellGeo(i)%StartAngle = PathGenerations(i-1)%FinalAngle*(pi/180.d0) + TD_WellGeo(i)%EndAngle = PathGenerations(i)%FinalAngle*(pi/180.d0) + TD_WellGeo(i)%IntervalLength= PathGenerations(i)%TotalLength + !TD_WellGeo(i)%VerticalDepth = PathGenerations(i)%TotalVerticalDepth + TD_WellGeo(i)%TopDepth = PathGenerations(i-1)%MeasuredDepth + TD_WellGeo(i)%DownDepth = PathGenerations(i)%MeasuredDepth + + !=====> Radius Of Curvature Calculation + if (TD_WellGeo(i)%HoleType/=0) then + TD_WellGeo(i)%RCurvature = ((TD_WellGeo(i)%IntervalLength)/abs(TD_WellGeo(i)%EndAngle-TD_WellGeo(i)%StartAngle)) + end if + + End Do + + + + + +!=====> Set ROP Hole Data + TD_WellGeo(TD_WellIntervalsCount)%HoleType = 0 !Straight + TD_WellGeo(TD_WellIntervalsCount)%StartAngle = TD_WellGeo(TD_WellIntervalsCount-1)%EndAngle + TD_WellGeo(TD_WellIntervalsCount)%EndAngle = TD_WellGeo(TD_WellIntervalsCount)%StartAngle + TD_WellGeo(TD_WellIntervalsCount)%IntervalLength= 0.d0 + !TD_WellGeo(TD_WellIntervalsCount)%VerticalDepth = TD_WellGeo(TD_WellIntervalsCount-1)%VerticalDepth + TD_WellGeo(TD_WellIntervalsCount)%TopDepth = TD_WellGeo(TD_WellIntervalsCount-1)%DownDepth + TD_WellGeo(TD_WellIntervalsCount)%DownDepth = TD_WellGeo(TD_WellIntervalsCount)%TopDepth+TD_WellGeo(TD_WellIntervalsCount)%IntervalLength + + + + + + +!=====> Vertical Depth Calculation + if ( TD_WellGeo(1)%HoleType==0 ) then + TD_WellGeo(1)%VerticalDepth = TD_WellGeo(1)%IntervalLength*cos(TD_WellGeo(1)%StartAngle) + else if ( TD_WellGeo(1)%HoleType==1 ) then + TD_WellGeo(1)%VerticalDepth = (TD_WellGeo(1)%RCurvature*sin(abs(TD_WellGeo(1)%EndAngle)-abs(TD_WellGeo(1)%StartAngle))*cos(abs(TD_WellGeo(1)%StartAngle)))-(TD_WellGeo(1)%RCurvature*(1.-cos(abs(TD_WellGeo(1)%EndAngle)-abs(TD_WellGeo(1)%StartAngle)))*sin(abs(TD_WellGeo(1)%StartAngle))) + else if ( TD_WellGeo(1)%HoleType==2 ) then + TD_WellGeo(1)%VerticalDepth = (TD_WellGeo(1)%RCurvature*sin(abs(abs(TD_WellGeo(1)%EndAngle)-abs(TD_WellGeo(1)%StartAngle)))*cos(abs(TD_WellGeo(1)%StartAngle)))+(TD_WellGeo(1)%RCurvature*(1.-cos(abs(abs(TD_WellGeo(1)%EndAngle)-abs(TD_WellGeo(1)%StartAngle))))*sin(abs(TD_WellGeo(1)%StartAngle))) + End if + Do i= 2,TD_WellIntervalsCount + if ( TD_WellGeo(i)%HoleType==0 ) then + TD_WellGeo(i)%VerticalDepth = TD_WellGeo(i-1)%VerticalDepth+TD_WellGeo(i)%IntervalLength*cos(TD_WellGeo(i)%StartAngle) + else if ( TD_WellGeo(i)%HoleType==1 ) then + TD_WellGeo(i)%VerticalDepth = TD_WellGeo(i-1)%VerticalDepth+(TD_WellGeo(i)%RCurvature*sin(abs(TD_WellGeo(i)%EndAngle)-abs(TD_WellGeo(i)%StartAngle))*cos(abs(TD_WellGeo(i)%StartAngle)))-(TD_WellGeo(i)%RCurvature*(1.-cos(abs(TD_WellGeo(i)%EndAngle)-abs(TD_WellGeo(i)%StartAngle)))*sin(abs(TD_WellGeo(i)%StartAngle))) + else if ( TD_WellGeo(i)%HoleType==2 ) then + TD_WellGeo(i)%VerticalDepth = TD_WellGeo(i-1)%VerticalDepth+(TD_WellGeo(i)%RCurvature*sin(abs(abs(TD_WellGeo(i)%EndAngle)-abs(TD_WellGeo(i)%StartAngle)))*cos(abs(TD_WellGeo(i)%StartAngle)))+(TD_WellGeo(i)%RCurvature*(1.-cos(abs(abs(TD_WellGeo(i)%EndAngle)-abs(TD_WellGeo(i)%StartAngle))))*sin(abs(TD_WellGeo(i)%StartAngle))) + End if + End Do + !Do i=1,TD_WellIntervalsCount + ! print*, 'TD_WellGeo(i)%TopDepth=' , i , TD_WellGeo(i)%TopDepth + ! print*, 'TD_WellGeo(i)%DownDepth=' , i , TD_WellGeo(i)%DownDepth + ! print*, 'TD_WellGeo(i)%HoleType=' , i , TD_WellGeo(i)%HoleType + ! print*, 'TD_WellGeo(i)%RCurvature=' , i , TD_WellGeo(i)%RCurvature + ! print*, 'TD_WellGeo(i)%EndAngle=' , i , TD_WellGeo(i)%EndAngle + ! print*, 'TD_WellGeo(i)%StartAngle=' , i , TD_WellGeo(i)%StartAngle + ! print*, 'TD_WellGeo(i)%VerticalDepth=' , i , TD_WellGeo(i)%VerticalDepth + !end do + + + + + + + +!=====> Well Total Length Calculation + TD_WellTotalLength = TD_WellGeo(TD_WellIntervalsCount)%DownDepth + TD_WellTotalVerticalLength = TD_WellGeo(TD_WellIntervalsCount)%VerticalDepth + + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_StartUp/TD_DrillStemStartUp.f90 b/TorqueDrag/TD_StartUp/TD_DrillStemStartUp.f90 new file mode 100644 index 0000000..c7b71b6 --- /dev/null +++ b/TorqueDrag/TD_StartUp/TD_DrillStemStartUp.f90 @@ -0,0 +1,81 @@ +subroutine TD_DrillStemStartUp + + Use CCasingLinerChokeVariables + Use CStringConfigurationVariables + Use CSimulationVariables + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + Use TD_StringConnectionData + + + implicit none + + + + + TD_DrillStemTotalLength = 500.d0 !??????????????????? + TD_DrillStemTotalLengthIni = 500.d0 !??????????????????? + TD_OutOfWellLength = 3.48d0 + TD_DrillStemAxialVelocity = 0.d0 + TD_DrillStemRotVelocity = 0.d0 + TD_WeightOnBit = 0.d0 + TD_BitTorque = 0.d0 + TD_TotalTorque = 0.d0 + TD_StaticHookLoad = 0.d0 + TD_DlMax = 0.d0 + TD_DlTotal = 0.d0 + TD_DlTouch = 1.d0 !(=/0.) because of TD_StringConnectionModes subroutine (initial value for first iteration in if condition) + TD_HookLoad = 0.d0 + TD_StringTorque = 0.d0 + TD_ToolJointRange = 0.4005d0*3.28 ![m]*3.28=[ft] , ToolJointLength=400.5mm + TD_RemoveVolume = 0.0d0 + + TD_DrillStemBottom = TD_DrillStemTotalLength-TD_OutOfWellLength !???????????? + !TD_DrillStems%TopDepth = + !TD_DrillStems%DownDepth = + !TD_DrillStems%StartAngle = + !TD_DrillStems%EndAngle = + TD_DrillStems%Area = 0.d0 + TD_DrillStems%RCurvature = 0.d0 + TD_DrillStems%RtoolJoint = 0.d0 + TD_DrillStems%ToolJointRange = 0.d0 + TD_DrillStems%HoleDiameter = 0.d0 + + TD_DrillStems%Force1 = 0.d0 + TD_DrillStems%Force2 = 0.d0 + TD_DrillStems%Torque = 0.d0 + TD_DrillStems%Drag = 0.d0 + TD_DrillStems%CombVelRatio = 0.d0 + + TD_DrillStems%MudDensityIn = 10.d0*7.48051948d0 + TD_DrillStems%MudDensityOut = 10.d0*7.48051948d0 + TD_DrillStems%MudViscosity = 0.16d0 !???????????????? + TD_DrillStems%MudVisCorrectCoef = 1.d0 !???????????????? + TD_DrillStems%MudWeight = 10.d0 + !TD_DrillStems%MudPlasticVis = !???????????????? + !TD_DrillStems%MudYieldPoint = !???????????????? + + !TD_DrillStems%FricFactor = + !TD_DrillStems% = + !TD_DrillStems% = + + !TD_DrillStems%StaticHookLoad = + !TD_DrillStems%TotalSHookLoad = + !TD_DrillStems%Dl = + !TD_DrillStems%DlTotal = + + !if (allocated(TD_FluidMudDensity)) deallocate(TD_FluidMudDensity) + !if (allocated(TD_FluidMudEndX)) deallocate(TD_FluidMudEndX) + !if (allocated(TD_FluidMudStartX)) deallocate(TD_FluidMudStartX) + !Allocate (TD_FluidMudDensity(1) , TD_FluidMudEndX(1) , TD_FluidMudStartX(1)) + !TD_FluidMudDensity(:) = 10.d0 + !TD_FluidMudStartX(:) = -268.d0 !?????????? + !TD_FluidMudEndX(:) = 9990.d0 !?????????? + + + + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TD_StartUp/TD_StartUp.f90 b/TorqueDrag/TD_StartUp/TD_StartUp.f90 new file mode 100644 index 0000000..abbbfba --- /dev/null +++ b/TorqueDrag/TD_StartUp/TD_StartUp.f90 @@ -0,0 +1,155 @@ +subroutine TD_StartUp + + Use CCasingLinerChokeVariables + Use CStringConfigurationVariables + Use CSimulationVariables + Use COperationConditionEnumVariables + Use CHoistingVariables + Use CPathGenerationVariables + Use TD_DrillStemComponents + Use TD_WellElements + Use TD_WellGeometry + Use TD_GeneralData + Use TD_StringConnectionData + Use Drawworks_VARIABLES!, only: Drawworks + Use sROP_Variables + Use sROP_Other_Variables + + + implicit none + + +!!==================================================== +!! Allocate Modules +!!==================================================== +! !=====> Set WellGeo Dimension +! TD_WellIntervalsCount = PathGenerationCount + 1 ! +1 is belong to ROP hole +! Allocate (TD_WellGeo(TD_WellIntervalsCount)) +! +! !=====> Set WellGeo Dimension + + + !=====> Set ROP StartUp + Bit_Wearing = 0.d0 + Rate_of_Penetration = 0.d0 + Bearing_Wear = 0.d0 + FormationNumber = 0 + Old_ROPDepth = PathGenerations(PathGenerationCount)%MeasuredDepth + Old_ROPValue = 0.d0 + Set_ROPGauge = 0.d0 + + + + !=====> Set BOP StartUp + TD_BOPCondition = 0 + TD_BOPThickness = (0.13477d0/2.d0)*3.28d0 ![m]*3.28=[ft] , Total Thickness (RAM)= 134.77mm + TD_AnnularFillingFinal = 0.d0 + + + DW_TDHookHeight = 75.d0 ![ft] + Drawworks%Hook_Height_ini = 75.d0 ![ft] + Drawworks%Hook_Height_final = 75.d0 ![ft] + + + + !=====> String Connection Mode + if ( Get_OperationCondition()==OPERATION_TRIP ) then + TD_OldOperationCondition = 1 + else + TD_OldOperationCondition = 0 + end if + TD_KellyDriveTypeMode = 0 !Kelly Mode + TD_FluidStringConnectionMode = 0 + TD_ConnectionHeight = 3.48d0 ![ft] + TD_RigidConnectionHeight = 3.48d0 ![ft] + TD_GRigidConnectionHeight = 3.48d0 ![ft] + TD_TopJointHeight = 3.48d0 ![ft] + !TD_TouchConnectionHeight = + TD_StringVelocity = 0.0d0 + TD_HookHeightOld = 75.d0 ![ft] + TD_HookHeight = 75.d0 ![ft] + TD_HookVelocity = 0.0d0 + + !=====> Element Specification + TD_HookHeight = DW_TDHookHeight ! unit: [ft] + TD_ElevatorConst = 17.985 ! [ft] Elevator Length(14.84) ????????????????? adad ha daghigh shavand + TD_ElevatorECG = 2.217 ! [ft] + TD_KellyConst = 63.280d0 ! [ft] Kelly Length(61.74) + Safety Valve Length(1.54) + TD_KellyElementConst = 41.840d0 ! [ft] Kelly Element Length(40.3) + Safety Valve Length(1.54) + TD_TDSLength = 24.08d0 !??????????????????? ! [ft] + TD_TDSToolJointLength = 0.77d0 !??????????????????? ! [ft] + TD_TDSElevatorLength = 26.837d0 !?????? ! TDS with Elevator Length [ft] + TD_TDSElevatorToolLength= 0.859d0 !??????????????????? ! [ft] + TD_TDSElevatorECG = 2.454 ! [ft] + TD_NumOfCables = NumberOfLine + TD_WeightTB = TravelingBlockWeight ! [lb] + TD_WeightTD = TopDriveWeight ! [lb] + TD_KellyWeight = KellyWeight ! [lb] + TD_SafetyValveLength = 1.54d0 ! [ft] + TD_IBOPLength = 1.54d0 ! [ft] + TD_KellyElementID = 3.0d0/12.d0 ! [ft] + TD_KellyElementOD = 5.90d0/12.d0 ! [ft] + TD_DrawworksLoadInput = TravelingBlockWeight/NumberOfLine + + TD_IBOPNewAdd = 0 + TD_IBOPOldAdd = 0 !Remove + TD_SafetyValveNewAdd = 0 + TD_SafetyValveOldAdd = 1 !Install + TD_KellyNewAdd = 0 + TD_KellyOldAdd = 0 + TD_IBOPNewRemove = 0 + TD_IBOPOldRemove = 1 !Remove + TD_SafetyValveNewRemove = 0 + TD_SafetyValveOldRemove = 0 !Install + TD_KellyNewRemove = 0 + TD_KellyOldRemove = 1 + + TD_KellyOldStatus1 = 0 + TD_KellyNewStatus1 = 0 + TD_KellyOldStatus2 = 1 ! Kelly Connected Nothing + TD_KellyNewStatus2 = 1 ! Kelly Connected Nothing + TD_KellyOldStatus3 = 0 + TD_KellyNewStatus3 = 0 + + TD_KellyOldStatus4 = 0 + TD_KellyNewStatus4 = 0 + TD_KellyOldStatus5 = 0 + TD_KellyNewStatus5 = 0 + TD_KellyOldStatus6 = 0 + TD_KellyNewStatus6 = 0 + TD_KellyOldStatus7 = 0 + TD_KellyNewStatus7 = 0 + TD_KellyOldStatus8 = 0 + TD_KellyNewStatus8 = 0 + TD_KellyOldStatus18 = 0 + TD_KellyNewStatus18 = 0 + TD_KellyOldStatus19 = 0 + TD_KellyNewStatus19 = 0 + + TD_KellyOldStatus9 = 0 + TD_KellyNewStatus9 = 0 + TD_KellyOldStatus10 = 0 + TD_KellyNewStatus10 = 0 + TD_KellyOldStatus11 = 0 + TD_KellyNewStatus11 = 0 + TD_KellyOldStatus12 = 0 + TD_KellyNewStatus12 = 0 + TD_KellyOldStatus13 = 1 + TD_KellyNewStatus13 = 1 + TD_KellyOldStatus14 = 0 + TD_KellyNewStatus14 = 0 + TD_KellyOldStatus15 = 0 + TD_KellyNewStatus15 = 0 + TD_KellyOldStatus16 = 0 + TD_KellyNewStatus16 = 0 + TD_KellyOldStatus17 = 0 + TD_KellyNewStatus17 = 0 + + + + + !=====> Problems + TD_WeightIndicatorMalf = 0 + + +end subroutine \ No newline at end of file diff --git a/TorqueDrag/TorqueDragMain.f90 b/TorqueDrag/TorqueDragMain.f90 new file mode 100644 index 0000000..60c4318 --- /dev/null +++ b/TorqueDrag/TorqueDragMain.f90 @@ -0,0 +1,46 @@ +MODULE TorqueDragMain + USE CPumpsVariables + USE CDrillingConsoleVariables + USE CDataDisplayConsoleVariables + USE CSimulationVariables + USE Pump_VARIABLES + IMPLICIT NONE + PUBLIC + CONTAINS + + subroutine TorqueDrag_Setup() + use CSimulationVariables + implicit none + call OnSimulationInitialization%Add(TorqueDrag_Init) + call OnSimulationStop%Add(TorqueDrag_Init) + call OnTorqueDragStep%Add(TorqueDrag_Step) + call OnTorqueDragOutput%Add(TorqueDrag_Output) + call OnTorqueDragMain%Add(TorqueDragMainBody) + end subroutine + + subroutine TorqueDrag_Init + implicit none + end subroutine TorqueDrag_Init + + subroutine TorqueDrag_Step + implicit none + end subroutine TorqueDrag_Step + + subroutine TorqueDrag_Output + implicit none + end subroutine TorqueDrag_Output + + + SUBROUTINE TorqueDragMainBody + USE ifport + USE ifmt + USE CSimulationVariables + !USE TDSUP + IMPLICIT NONE + + !CALL TD_MainCalculations + + + END SUBROUTINE TorqueDragMainBody + +END MODULE TorqueDragMain \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..d4440c3 --- /dev/null +++ b/config.json @@ -0,0 +1,14 @@ +{ + "t0": 0.0, + "dt": 1.0, + "tf": 86400.0, + "mu": 398600.4418, + "x0": [ + 10000.0, + 10000.0, + 10000.0, + 1.0, + 2.0, + 3.0 + ] +} \ No newline at end of file diff --git a/lib/x64/json_file_module.mod b/lib/x64/json_file_module.mod new file mode 100644 index 0000000000000000000000000000000000000000..f32759317bf264695c1158fd7203992d3be67965 GIT binary patch literal 223777 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�=ZBCrEp+ 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 literal 0 HcmV?d00001 diff --git a/lib/x64/json_module.mod b/lib/x64/json_module.mod new file mode 100644 index 0000000000000000000000000000000000000000..d30af8ab32ba15a6cee8f142839c873f4682153b GIT binary patch literal 3616 zcmcgvTTc@~6h2Gw0-_=sBrzuS1_Y!j1qDnbE$x;pU3ST~g_tyHxHSQx#kM@?gOd2> zFYr-)^amLKgl{JP0pp7=KKN`rXUl^^ilLexVehH9{IwAS|2UBH)*t5o<_NN z4U1jybWlP*DD4yS%rs4#3`)pO{6|8bqE`6Rs>I_#3Hi2epOEh<=^sEWC?Vt9C*+H*NjMRd@KV4j zZT}P=v4)oe63UBE`uHHIhipgtQ|kGE3(ki@39lUE;bAxFi3$6TAw29HdXAHy&BosT2r;~*VL;=MqCG~9wWVCSP|2h^XnkT zz2n=nBZS_ZB=zIqcbL#=|f>uMX2A1+QXWXU`qN> z7;p_^&jzlCAC>aMFcup_+*ic;EOWz8cEU3cBM8><*7JcWJZ(YVN8~3J$>D1Yb`-Hg zXBDj?ylsJ!wQp6Z8~z>&?!pVjXRR9^w}8pD7b=*-=N2Tn_ESZ2czr0gfE&tZ0*Bu% z*df&W#e*gCiP)%-wTo%n$vFwDs9Vc$4`H(yPHkXKNi4qv$Ui|hvEu`R`f*d^=7hzX Oy|$gK?Cx%s>+lzi&={=% literal 0 HcmV?d00001 diff --git a/lib/x64/json_parameters.mod b/lib/x64/json_parameters.mod new file mode 100644 index 0000000000000000000000000000000000000000..eb748571310d0c71b4aa89d5bac17322f253a096 GIT binary patch literal 13487 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 literal 0 HcmV?d00001 diff --git a/lib/x64/json_value_module.mod b/lib/x64/json_value_module.mod new file mode 100644 index 0000000000000000000000000000000000000000..45294c8583679f6bac1bca3ef81786ed269be874 GIT binary patch literal 145492 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 literal 0 HcmV?d00001 diff --git a/lib/x64/libjsonfortrand.lib b/lib/x64/libjsonfortrand.lib new file mode 100644 index 0000000000000000000000000000000000000000..d82c0f35bcc3a134b04c55050920a5a1e31aee37 GIT binary patch literal 1953774 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⋙`Zgos7F0v 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

(u za_f+Wcx|qDCHP#IyeuN(nv~l_H^!xa@ntACSB<=K)4r}Q zP6xbY8&0KU77A+b(0bn`D zMkb{#G)Tcv1LDG=pEJ&|NQG<5-FTl1cxg9?moPH=TX?K!V7h<+hPEmtmeN@ki<^V- z+AABTDO_6~Gu>;0^w-eZayMU|4}2j5$QQzhFFAe>T3hZ${gr^a?NAd&sE4zhvv=Ko zS9duthH`dXIfQXJQ+O`1woJ??kn{;O9_Dqha*E>N&ffVoSHyK+TL#`fYs&>CzWlZ2 z30A}FHk0d9l2EKIqtbB9$mrMN+H!YeAOBg9dwtfHyHTGEsE@!eb_K#%j_^1@MdXyi zIFjaBo~d*7SVaMX3nx~hUQ&E+pu{FqvnOC>#)^q zgx+s$xf}0Rz}rG@;w6mmZs9Q}HXS_Y<|{OViH%ZNA9UNe>qx@il~dd00l^RA?ey&UYW)X2s!^j?ta{=S^ z8b<2)oHrC=c6w_3It(LwXrIq$A21rR*4Aib9+J<;E@z+z??S-4jO6T%goAn`(T3jW zl{jMu&6kNQ{f3e49{HuJf&8`vOy=TgkVD2t(`K)kEy`{1Gp9z!z)oj?>mZs8CX5)2 zmfA&3G<(L!u7>NuJ09?sZ8((@JLux#tGtXp$Ey1tWPG@mVdSFZIo5$ewbZ z4dv{(atPycrtmy`7};KiFru}4hmp^@BChu^vI@M#!^r0gN__dl$T`*Dxq>FwrzD~2 zZL_HKYj+sg)7W1LjZLFLc_oY*J1?&*ta;%~QxEDF1L`A(nlM5=L|(lILI&qO5V1TP zMvC(a!MhglwvfBPV)clP zN{RiS*YYrO9+k@cB2oUz@3A;iSB#w}@^HW~lJk9Z!>i7DdK;e0?XkGDOU%s+G#OaL zZVT8(?xqg%VhQ_7mZ_DxT<1==NKPfprt=omQxqM-yhsv} z6Uliji@N^8yWK{`sY!F5jNcd3Ig*dzNG%TsCfQc_$y#C?qo)v9 z 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/ANNULAR.obj b/x64/Debug/ANNULAR.obj new file mode 100644 index 0000000000000000000000000000000000000000..63d4de8dad4ebfba222483e617bf5897bef9e73b GIT binary patch literal 17143 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 Ie!krN0rc=NLjV8( literal 0 HcmV?d00001 diff --git a/x64/Debug/AnnularMain.obj b/x64/Debug/AnnularMain.obj new file mode 100644 index 0000000000000000000000000000000000000000..7779028f5e434f5865f3a4fc9beddb3695638d59 GIT binary patch literal 12370 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 K?HEc$+5Z4OTBL9Q literal 0 HcmV?d00001 diff --git a/x64/Debug/Annulus_Property_Calculator.obj b/x64/Debug/Annulus_Property_Calculator.obj new file mode 100644 index 0000000000000000000000000000000000000000..667b33f06c488d24d974c4a742c793b66337e8b0 GIT binary patch literal 11516 zcmcgy4RBml6~5anG^B-1C*D^^4iol!>7w&G7393zNYDx)o+76wKF43?BZkZSzSyKm3#+aETO zPVZ#j`OdlLo_p@O_n!CO&GUY#Se(A|FP{D@g;*+NsfhXpqB^5dz3!+xsU<{Lkr2^Kg_wapsho>n zo#?8o7%=KVMLcskX{1V>sH&^zH|ots_3O~PUbhGHum?SF*yo9E@g-aT65yQ-d!nRN zR7AsW4{Hf=40=DECxlbCH$$^m2YcFh9Z7oxcIh!m%4ocu>K9+%k9euWf$};vZZ22H zM)rXpGn=16QHNeJt3&UYzwl2rVJ;stmy>X;v0PThf6+!w<3CX~^7T564EJkf?*NEB zzH?9`!*`G{v6Jc&V#4ytkqJwgtxX-KUnhD#{0h0H4r5+GhDPet1h~198?94^&zJCU zm6|wDEh2ng=r?d>DT$WHhwpI_M zV2Sjo3;jxuN~qg3kDf2=(eQQBxiN&}2DRvVb@GpDd>gsA9~I;x(KHu1_6ZqN℞r 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/Annulus_and_Openhole_Pressure_Distribution.obj b/x64/Debug/Annulus_and_Openhole_Pressure_Distribution.obj new file mode 100644 index 0000000000000000000000000000000000000000..1861fac90c1221abfbc25ad41d827ee96f3a59cd GIT binary patch literal 123844 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ɋEl}nIvh4xa+Ozmb)PfB-j=afMOc&JoBO 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 KEo$y<6aNR4f<#3C literal 0 HcmV?d00001 diff --git a/x64/Debug/BOPstartup.obj b/x64/Debug/BOPstartup.obj new file mode 100644 index 0000000000000000000000000000000000000000..39674680a50821eeff51dd01feb0f0904927b62e GIT binary patch literal 41492 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 WqYq(>bn>rwLCqy~`8BO|;{O6k5dioA literal 0 HcmV?d00001 diff --git a/x64/Debug/Bit_Specification.obj b/x64/Debug/Bit_Specification.obj new file mode 100644 index 0000000000000000000000000000000000000000..77d87d78e22207f832981b8d481ff9720ede2239 GIT binary patch literal 5931 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

Axxt{|=?=q~~%Ql^`U)MuN%#*uW>RFo( zS^j1nvjk=V5^FyH2be`0eh2z>)hy%LP?ToVM;PF7@cu0?i`tZ`Jokb)4 zA-^viG4pk=K&jJx;jr&eAQG&9K}yo0zQcOpsNcW3)E8b`HheU|qQ1bvVAN`Yx2B26 z+nVUDuf}>6OU?1?fkP2vJ*~dM!Sz&z^`YR1zMhso6p9>QPstZMf>DZw zBg1}Qgb&(Yd$xlOSYLWa`i6ad{eC@6o~Zr2+<=~(v<+zTFRW|pSxw>}pBquE`3xO} zD}n>jVSOMtJZPUFYe?XyH6$HtO5n^j%5<*jSL?3;{G(u${?cF{6EDL*Wuo}kdm@Ur zzR`SgD#4k@vq@07#G}zvGFQ(;XQz_+8{E$3iqUF*j5I%GuDt@(6|uf=+9p+}y#xE~ RS(<^qso2Rxe=L_^{|$HI#18-f literal 0 HcmV?d00001 diff --git a/x64/Debug/BopStackMain.obj b/x64/Debug/BopStackMain.obj new file mode 100644 index 0000000000000000000000000000000000000000..42a4d0a1d369b10d0c7f112d3093bbb565a95b2c GIT binary patch literal 2964 zcmb_e-D@0G6hD*QGTes-J^VP9KQYL2l?)E0B69Xl&h}0KBm_l92EiJlj9z<7heoA%PB>zwHnE?#|5|; z2Y8Bl4}Cp)m0+NdvK7gd0xf_h!qH>s1J@)%2zkioQ|q02XOaIY2_uw;Og_~-toIe_ zi5>n>Pq9_mT~h<|uMzxwz#k+AAm!SU9BKjFL%p3ofZM*m7|!|rym%{tKLVHiSOXr# z`*vyb&*jp#o@Ax1c(Sy6UqtC{JpLn6Y4cIMwD~0d{$Hh=@#JniNzC2Jq$k{_)Iw?N zyVBMlk2u^`^Y4EDpB?%>dM|eK`XPQU*u$~a15g0r6fIcHi3_%M9rNahOXZnav8)*_ zU2-+cELyfYEUu4@ij(x+#e&r=yOO**D`{rRs$GX-&r7G!6+DFB`}*MTWAqeY#&lKv z{NihD+OjdxCJPy3qpWBdO-)yAR@5cO(PUP)Y$i3Ex+e2A9cH&oQ!^XP>M$H)ORDYQ zrr2<1IGehV%CbUB(-oQyXEWLHYKBt+xX?S`E|2((;NbujXo2 z%T&;-H*+YXEUjxbC#TR3+!b4uNUqcx#6?AxzN%YZeui|-TpjX0TEmtMHjUYI#92+Y zEyt?6Y)NxklFrI*OVKQmvLjAWC{0^)RB@>&RxC?LgEGSGXlew1+3}GPv8I_~$#UFl z__;9-T+$dD1;>_;Or|*XUQ25ls)-d8lt>78t<=XefVqG!`JoczHCe}Z0WR^HP?%pRS0;*AW+!Imsz$RKox?deJ+K_A9t1rwk1OmUyMd#4V7(>ejpJCr z@%+*2Rm+vBg=bmtAM{7p240n%9^>;8p(799Go=>x(N%{0`9yIL(LI*rh~K#z6dUei z<4t_yRkuNQ3`aneZz9@f5I*9KVBd^{5en9%*a!#nq-IrRcRh^vTEvFnia!tRf_Z3{ zh`pMK^?oia;9eq_%z`}i;Sb z?(GDe^jE->7CAzxxX_1*#!SA_RUSQJyyTzsKIr)ffc{P9;LMr*U%wD`W?sI0JG(J4 z|K+WxKcV2r!tQnzJl@}X1AS6e#QFJ1aC8%&FL1PjPfz+WB2RiBvq%3y{qVp?3CLjK zQ|?=wBK^_x eUTI0P9kTEhtMs2$n4f$Hs?`}oYN!RtQQ=?ed{<5Y literal 0 HcmV?d00001 diff --git a/x64/Debug/BuildLog.htm b/x64/Debug/BuildLog.htm new file mode 100644 index 0000000000000000000000000000000000000000..d41618088eaa4bef7f3756a4039da6e1468b841f GIT binary patch literal 41010 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CArrangement.obj b/x64/Debug/CArrangement.obj new file mode 100644 index 0000000000000000000000000000000000000000..a05ce8227ab096602424ea6e250942847c57538c GIT binary patch literal 20441 zcmd^H4Rln;b)MBOMqXhfh{0eJ`x!)nZK6MmUt_aETKwb)A&{Unku3@Bg4V3G%I*qe zAOFaa*N4qxV~!gddQ#Wq1gCDACbSKw*iIaYI2BHuM9zsD+_))%_#6Z2G4Wq$j}!H~ zGxO&C=&dBzPLrI>(eAx-=g!QXJ9F>M-1oGRhc9K%e&(kgU(*@8g^5&}j`pP`PN4n< z#_sho_QPsHyc0lU7B~60L*u@}YCvIfyp0J=S0MJ?Sy3%B%J>70{F&4Un zvBBkxJ-S}d<^zOSTd1_p$=654rci50S2Y~ZA+1McHFN|xi zZLlAIu$YymlkFXfi?Q+o#%^EB*qzWFr9yl{EEJM@A+dNO zt~oPWy&V z7Yv;Kjc$lejZ1Z-4#lHu^`WzC2S$A_juyT6;OVj7j*X3Dsgf*1qlKJj>_5lztWZ32 z1kbg<9oG)JJG*9Jbmq{gjOG#PyyH*Bas4%wX@`mWuRY zQjMiTV4->Xz$u8Jl#yLG&sKrT7mxj#2AhZDX;Sh`eDp<)_L^B+j!#vi)$DLccgVrZ zx7o}23RMJN-lno_I8;BrekaPs0x=~uSaw~bo}0Fk#_U*;Js-@9bSy>N_$FG4>5s^9 zJY7y=`HOX<01J7W5#EL=(}%-tG&EYiwS-^}X_e=u^&n##gh9lp9LFhI+_0>WwANRU zpPFTTYd=-Z9^K2qWBnZDj&N|`7=c_kr02+Qv8QO#^z5*n{kQB1EWd&`pU4gkjQZa^ zj1loF+$J+4#AZ^YSF90Hlr`JljQ-58leppbpWW~fRI#bi!`!QkK7%wdkxcQ*4R zzK1hk#W$n`2jw$^Ge27h*Qa`?g_C&=C6e-Vh;X5E;{eJ0l%NE$zA5{Rn3St@<3qZC zmOl19{pRB{AGrl32JcJn7?hk=#aZCFFLtbm6&FKOA!?MI;4?+k7aXGo3iP;aDM^-1 zmn<=klGu93JCrNejic1_w?jnp->Mrch`chJn+Ixk$jA_^&JI>*U#5{vAV}U3-2cF_ zppb45Z3*eHBRZs8IYsHXu+_&%Pxbyw>Wp&Tzd|4Tp_G}%N-`6)$*d-X83)AJf2{BN zae&VRUpi8og}UL>cMS&g8%JOj248{3?3<7G7VER! zyVFE$X=~A>G&jjo5ayfzj8E$Efna8Q;*EK+*Rf93A7E*B#(H1I?XZ%S+~n z656tO3DkCe&A^$NLuX_OZB)Dj+moy_U(~_&^gL}(*<87h-^dVxHNqElHggQ!8{ERP znL*%o+on9(_8LEF!|rPesWCx$Is~rYmu=Th(RxhVUJ1F$P6*oUB)^k+U$)&iMd>EC z?U0n2piO4e1aPFviJdpM0gL)l-5=D)p4V?4n)%2js9_CFav8J9Z?;eFH(T;ZpF7%5 zGj1%GzDJkx5wyuSu49*Y_wSnAId)DgLhe2ccr7{au^;K#d&zk>N?{1vgi)*aJvc(O z@sMNm({`+mrn{bps~j?BXN#qKA?ND!hl8MyKYZ?8cm(OKCYY+LAg{|+Ip%A}lh=@t8hx@?@U`ZDL{iNV2E#Vg3VR zU~(seTXoILi#UH`6O--=3l)FdjCCyiJa>*GXqjwhf;)$k#rw|T%p>7_6WwtJE9%cpm&BL3+ee*DD zikpYb@uT?6hyH=NwymEglnz7kD2J)VLGJ7q$DJWgfl;0mUFHeH@jNrS*kC&ooE|NkcP{YZ zP$56jStcM-a#B}PJ=}DL3tYX>+Lz};T+u0LfCHi> z1XlbpQNtRgxDa}{B^(@|;Q|hw!MR$V_-yCL$AlGLts9?&lDtonE*{S_rHf~R(`6?u z74qDKz;nyfenZwBlS0h<#>VT&d5tV_d{OdxeM}=DeQgUgtSJ6zTr6+!UctZV&HH*6k?-WB;g{QM!DRy zCyBupnKDEK#t`usLqunCPaJ{*MZ}7cDs7RTchSHUBR$*%vPVUij~(JY=SDae;TXo>=J)Rb~mJm7^Bvxx05#J7gS^;Fqp3=wWd z#&9Lh^n-wr69b`GOw^!U>WJM?2xjIZr${-nuMn}Bfga8*C=}?SthY&D&s)GPTy~)9 z@EDJ>>Qfk_cZ}x++FdBdqZ_?_gp|XoslV}7y&qJvYJv`X@#sFU$oDJDZbQ%Bk)4y1 z%fv;@YuN{-qy!z3$^`?ZZ|Sq*IW%0ac#g3Jvy?`Fz7Y&O!r4f>vk|T@3O8oM_2ecn zXBd7q+$S?)y0aXd{VhT|;O1dc9_pobc!0E-Y>7KC_1wV-H|vI2=7w1G#`sHkUiBODw!NkD{h+c3rnPEfEP;&p^_1!ZcXTpp?;e?sZ( z*~=-Ca~LR1H5n%wcQ}H~DHIy~JDWGCdkJa9A=yRLGMft#u52A0*tT!#&)e4BL0#gs zDmsI@gE$d+8~j%h>g5JME~rcGjkkIVPLS0TwAqpsq=4sf2*R^oBd~(HA;{ou`p2dy z-BIc@ul+YlnF-otRukeC%dic?9n__@$b-6vS*AO1tcQ81 zDITHZ4=aD;65^rInZaW^c-}BmG)qqFY?K$%xsJ}H%gA{}CwQ6LQ;bN?y;GM!;hE#P{WjMy4p;#IC4E%1qGiil!LYr1=ychV02Zu$kZ2zhVyI zS>BHGDV{s9*(W6>Xp@u&B*ux5H?W!CwZAq6VLSqx{ZcG~HnG%-p1Lo0jbx(W^w}%N z8BIC*|3fgEw@fuoasS>c^+(XAzu(dR&ER^ba=MtD2qVlJ(#wzm?3JSOgCPIV6Q4XcOlDU?7(K6WIn1G$C|F38*H~ zV+6gx@`mWDBL_dLO~g%Pwl$+HC~i)REy+$dBm&@-0e;_-~CxOk=z zUwIBgcRX7V(%POam;`!uAl_;c6!Y1Fz1)1O$(zIZfWX}DVT=5&CfSbj*@D@)v+6Mj z?RvIgGCJB4&lXH!@;n_9#S=aqagY+$*EtslMPlrsx|I-X24!n|Eg#hpK z*}@-X)RJN%2x5ylnOf9R!)@3ZwS1B*QG^~05r{yT1;jhPvmeatSNI&l9ey42%>v45 zR<|@J6L;a=)>O;Zrn(I+O|h=tczZgQ=&ng5qm?av%d1*y=^fsdn(Ab-y?bZ0E83kd zO>Do5eWGCQEHuSN*sIg0vkRBdw~y6zr=#&Do3Gc_Cz5y>wp&w#(F*2l3IIDPdwJa`%G!c-tO*L_f9S0sJK+y8cn7klvY_@Sy8&8v_f0g8;eIM zTUk+Fv8uJ4ry%Rt6Pa{StfMQ!%Ie~=?KC{CtUD1;>`Z87{9WbMJ9^`Bt!!gNE8Eka z>|Pzic#=EtQg2Et>qyGXMJ|=*MGz{rIzkepJCo6NDvxa6NmMXuWt-v&p{b?uSof}_V)}L_ z+q<;&&}*t?L#!j2NF{cpwXLyKZ+l#8O7})$i5AjROPGezlZ>UJEn90^niGjQDl`GD zs4Be)e-*24x~XM*th+@|q|)0k@mxEbx|Ub5RI+1IwYJnWb+#vaTEd^|jrGtfLF>Jd z#`bjQ`dD`alj>YTJ64r5D290`ORUp-u(sB*+xR-AwMuCdJ|CB#xy3}`siu1K=IVyq z!W+U3&8=NMt@b=yz-AY>NyhP@fNh*Ln-$JVpfy`7U?f}lD|}YFWOx*d{&vvm!O@lZ zWvFYYYvz6L2d{UU#b(XwN71LyN`tRiuWMqnLD~z_GEUlBUB4yF@{7o2{A;kUamh%o zy#}A-_{_^MV|}>cwr2gkOZg#4S&OD;hDv^!PG9A(xEjFte?oj{?rmFJpD> z?bS7y*XE5}&Qow^-ifq%1f?!*(h1J4P15jTv>;@!YpVN1m|YGUg&ib~U4eWE`7SXr z;SG&g8k5Zf{ZBxRYm6Il-=Zc@hnC1ZA#aQl!^D z%&WjgQ&fphgU{JPzL}Ey18Usr8porch49&j&(#x+qiN%o%{5^@Q~luePBerb6xoI_ z$0e?8C!eIWrv3w;T9=$JK{nF&3xEsq%egtcVdK`Yxw5#lnB6>yD}4OAI_a^lC^jV& zzJBADhFWgTwzbw!8{YOF)*2dn3!g%K%+>HFaQ;gEq#O5pcgAm^ZSostB3)9Niw_Nq z(ssuBNxwS)9|F7!@TY*g07n7ifY(6SF2G+wquqdGfS&>^gAJqrlYqT|%W&i04Y(F? z58%CkeSrG_?*{w=;Jtu<2Y4Ug&!LD10N=*@+z$d4%@Fm<0Y8oWm+^}20N~(E#vTTw z@s#6ZCR)Rk&^;^R7-OFRUkLaefRK^l|CV^YMp;gPY?#t?e8{3GHGq%wuo>_#0h<6H z1H|0)e+6(WU=iy58Q@&NZGa@tA$-h4{*MxY&vA^g3h+_8%K%BgD*?X`xC-zB;2OXy zpx;{ne+|9jUy%A2p#5sV7Xq|jf)B6;a60q_dHa_Fh5;YH6n+SB4)k{$U={RL2Y3VY zh5f9b=DQw{-22cI-^ilAk4|W3}?b9~`k{*@<9s(={{9C{>Kx)sfPuf2z z+4Z>qe2{@@fNx`b*8$D}-$KA;fQtaP0G0sW1GpHF+6BK#nxeJTV55>_H@QNI<;6z!_hPa zR@?@NKc3iwD*!+KQWKmv=+(2JeE|LM#8Db&UrU7Eo*oYoZegZw*iT?n^5EgXagb4T zh-WHLn;3oKhy3)l233m*5j&Y=0jj0yX%wXrrkX*^JcqlyK^2oY_?aqY*jwn zBU%1*=C{(C-&bt&i~mUmd+i;*3zY90{iN}spK40<${fmSCY5(MF#2ULS zu=p~6p>H?G50jWY2UKHy2kTUbYydL ztw$@#4i_=CyDQ!riKTkRHNCOEwxN1MxM`sl#0=hG^X{bWkK+hM=g8l|fgY=c{_9L6 zyEiHg_@>kHnxW1~I5FCSA9PBf@I~P2>2-lX;a7Z*KmPdP&lCS#v$=8nA_x#Dn7-~E z{};0VT5yQBe^p+7)1sREgMt~6(2A<3iEzGoVOpx&6m1*C-Cq-RBbEx%&{5DhCIgKB(9)i1sD8>Wa~57 zHF^7SdiOwpk0~&HbM~7M_Q$^5>weM=IzH~pe)Eyf{(weW1saCZv{?|1{uepGZk}eAZc*4lU{~_emlf?zh1KIC zAxi%dR{-*20oH{P&F9#axTT2RDioFmCTbj2v>z#K3C@n9GzCo5%_;1JDt$-Mig5!H zd|QBtx{Kgi1??7v-3LsR9#ORKDeMZci_)9$a-GoM+fa|dzCYU>QQe2kmOB*oMPQ=t z%Zm10Tby$?79VJ>8mhMG1Fg!35l8h!nJ05M-_Gv zm}qa6W|lT7?5n^;>AQ+H_d1hrD=<--RkSZD?7vj$$U?KmIfZ>}ky*DJn9#vqg^jAx zrPydi>3W4d2u$?*bwzt#VV5s9OCR}&IhUK3nAoe=o7gosm@QuqOz8e6utEH>B1UI^ z!h&p@Uqmp9Sc}Ah>|J01&PRZ-AUgyAlSAFZ5(~12K%iTE5!)-VAR}v}n|Kjxlvt3x z1q=oW+C_;4*%A;0jp7M}1=&RaQTJVm1z9=l5|vQ5N@78_7nqP`pTxiiYa~g*C$S*w z2Zo`5_K?Ja>?AOugI6RL(9?bo^s?pL{8Wr(O{OmzMpBTv;-KqOw9>k;N*cqHDnu!iSHY^Ohnv=%CQMDrxl@7`$L7|@wuz2nQ zh5l9FqTCG%{rkH`q4&<{ztJtq=Ru)=xwa@@2BqIYISL9rH?(-Z3(7$USR@Z#I zwVXM!mCkI1GkcRWTjk6yb7q%2vn!n0mCo!cXSTv6R)tHD3b&jtQ7T-LR=8xVa0yr8 v5~so?ZG}s|N|$_ROzsdUL(>5{L~C0`}UQ`gnLGrF!l6=nYm%0_~m literal 0 HcmV?d00001 diff --git a/x64/Debug/CBitProblems.obj b/x64/Debug/CBitProblems.obj new file mode 100644 index 0000000000000000000000000000000000000000..a11ccef205ed14b6c8161e62f60b8eb60c4d9c18 GIT binary patch literal 10674 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 Ii5F7zAImkStpET3 literal 0 HcmV?d00001 diff --git a/x64/Debug/CBitProblemsVariables.obj b/x64/Debug/CBitProblemsVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..c30c0d0b2d9a87dd29498c1db6e2d0074c2ac09d GIT binary patch literal 10773 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CBoolEventHandler.obj b/x64/Debug/CBoolEventHandler.obj new file mode 100644 index 0000000000000000000000000000000000000000..0ef777d2919550a0fd9641f3d16f7826d30056dd GIT binary patch literal 5020 zcmcIoUu;`f8UJqVF2QLbDgCEWrc30Z4h7puL$^kNoH%Z8SmLC%6IIBS_vXT~^7;YRqcvXB8vnQ@;B_N@>GjX9u(7zTHC8TayGf*#Wo`Gc zwhR3O+VumE{qK9)O`-?V_SkYl7uDWf{NSA(QQvgX_fY;+4r(k`F&3owkk&|Q5)*g& z!yEOGwwGLnCi>?Pqx&FO^x=LZ8Q)FD8_7AC^dk4%^zSY+jWy}wYHQ5QPjAv1T)YKS z)?BmV5(~3-QPcRt{e5(Ov%PEdyL{>OAegt2elb9Fo)j_T64SY5+q#Uo>*Q85^NYDm zsa!V;wUSjyShg{l+deauo8z^YOUzo9nY?OLYFeS9n}!{+)-Tg{2ab(GAMMlM2M6i> z2l!v1`AW?&Po*DG&sjERd`0ycXQtGIRj!uMUQL(<$0-%n4a-&w)v8%4ijE!Cu2(9h z%BE_yH5^x04cmcb>SSzkBJyZtLY=LbOr4996S0Z2`Iw*(6`#E*ozt5F zSBn#m#;}vDt5LE1*9*lfYP7gz6t7ILTlI<#t+M3QL=}v3rggTUwq+XyuGiN$nF~QR zdcm}$r^d}v<;u7m>84#MtLNZXC%0HC+LmK&)YR3IQ!kimrdHQWR*wCYOY%^vcF8ev ztBG6|F-3z6;KWqqG=39jPoK`Mmnu2Ua%vY5ec_!8eO->ftO*Dmh;p$QS6myF&^#T|oA@oBrkQ#V96bmzEZitI1SWn@P1m|*``9+0@h#hdcyD62RZ-RA$uEKx2Wt{3rMOx? z*<2C(A4C4z9rkX6$FaAOZuhY_y^<1cWOI5G8@q<87Gp=i+5&45%2Ucr`n-rb-34n1 z3D*cgAK+hH8v1R2pJAQef$o^>M*Q=bnQ#rGus|Z;VLv>A>)9IeuOaVj$FXH@^FCpjs;AD?>ye^qq+hOqtJC7nyqwbj7PGv!tF1R`S z_DB=&c)nI$o|k#P;dn6i%HfigFV?pG81d?DB@Qc-*Ul?;X@Ubm7 z%rTE`H8?OB|LXxL2k~t;MMsa``P)m%&*mTe&T|txGfS`h^j-?n zx9{fI>pJqmo!k7C$RCM8+@Fc?*#^Wn0m=J~&-)yLD0xSKq}=m9?^izWIN~hj#(<>U zUw}CL!*tU{A*y2Q;@xYQYAyd^9 zx8R}>?EuNPPr4{XF9XRwUUg9jSA5TwyDkdRDSVAfo5x)g61y3XO%ZXE=#;R7d2t`{ zbd$AfKH`-vc~AN1IUoJnM>l-5@1t8j`p8E^uJ4h7*wTO)mqeHl#GlpyvE#6x12iK3 z8S&09Yfk{NHv)XhxJU((wP7IkUx0X&5{>({F(9}LwNpNN%&%n&*cOFqK6)OAZBghg z{Byqw-NQd?R%jeUVSNf-6q+w6JidU!yGID9omc~tLaOLXzQORG+vI!$rB~WG8I&G^ z+NO*J&hLCq>${Bbrot~X-f0O@kSmjA%p(mb0&>x()^{5b0fk>~+(#Q97z^>gb(#_%x x&)ZOY*LvG$?^^fv+SL{7<@;tnolWEu{Kc8!Pt4VV?NB~HUoLDKvjxYX{{WuW$9@0+ literal 0 HcmV?d00001 diff --git a/x64/Debug/CBoolEventHandlerCollection.obj b/x64/Debug/CBoolEventHandlerCollection.obj new file mode 100644 index 0000000000000000000000000000000000000000..770d2be1552fa61ae986338215f79cd2833bde26 GIT binary patch literal 26014 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 Wo>EVFN~t_moy|L1*EL65+5ZDL1O`h0 literal 0 HcmV?d00001 diff --git a/x64/Debug/CBopControlPanel.obj b/x64/Debug/CBopControlPanel.obj new file mode 100644 index 0000000000000000000000000000000000000000..6e8935f0d42702acc912abdbc4194ea52d7e97b3 GIT binary patch literal 75420 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CBopControlPanelVariables.obj b/x64/Debug/CBopControlPanelVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..dd98c94a9b615c424730afc8163aed00e024336a GIT binary patch literal 15346 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CBopProblems.obj b/x64/Debug/CBopProblems.obj new file mode 100644 index 0000000000000000000000000000000000000000..d871d1f4230bb8e439f953a6cd4fccafee053d00 GIT binary patch literal 55146 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CBopStackVariables.obj b/x64/Debug/CBopStackVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..9a333b0454a7a3c4ef965624aef0775035f4e3a6 GIT binary patch literal 5214 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 SU3vh;@OZ2BdxsxSrU>kh6p5CyRsHm+P&Qs zI0+#J^I?IVI6y8=ilPh$oG(XlE{YG6a6v$FhJ%2Uki&cwAt|7IISP!!<$Nh}+`s$1 z>D`%KOJk_Ga7t6!-Cw`%*WL449-K8oI6R=KULQX985RC4BeC z`=gPy`=gPO{n5yt{n1Dmqs?D^kMG|fjcnQu20$+?Fnf zN18p-@G!;EWQA!me{i@RUA~=rzy5&@=$1ZI>_;UIVT7#4g9{T_pG+TSMcGjGKq@wrj4#X!6RL&~P|#&s9LpED zrnly-FlK2hLe*w!wW6o@>QHrWf4ukVg)34+gE7>~scg<m;m{7OsjWH#e>G>HaYpBg#9(JMmCY^3);H>0JTSkOvYFm7 zW$mnQ@9)W^J1;=6^fnHrhY(no#*;}zSsyxAB8vLX4imJY5_)mG>X}m$Eiv(`V^%L0 z<8_g|F0RlPv((owYHw^_($v@-X{(R6TomaVNOu((=~$Xp(Jd~;9|uv(RK1^^i@0v| zw5zAZ=i$|bSKAovwnsX+I}MT6j_4ST9!gWEwo0YVfn_w44wiOfAy?ql;_lXlZ2u-Th-pyz6kH%b&{>t;A6!3dvf` zD3OKLC}l2MkHU@Q#L#@i(Be^IsNHW2p|#PY)*C>3>GF8=m_6#tA3Z$wjTJu~e&Yv0 z{Kex3m5j&F0Tn;`JEsdr8GkPE8$U8W?pq9vGSH64(E$}lZHS|eQQ~Ns-#98d81Gv| z`8vLj$JPNATdjz#_EBQ%Qopg~oeb_{?DJOuC1Pj%8vqkHc>D5ygXHHs>`tGt^SMs{OB}nTp7HVL02+VB zIzPL@XAFJ8Q-AmQnVFdv)i@qk2T)u!V@}jI%ADv*pKGp_O|59)ISGP^b(7y%ipKbU0`|EfN8Tr2avnGzA zS-2F*d(A;%40ZdDp@P%?5u-t=H*Xw`8ZM(|?ll5^40L`Dv3sA?l|Ef4VZ~lmqL#nG zD*(dos|h&xdFJ9=oZ^f$vi5WRdqBncW0&S{Fg;g#oaNK6Xnu9NPe+;NpX#$X&MN&D z#ajFAgh*QLvlI3@6Cdi79>x}o-4Z(%>00I2Q-nRuZ+R%|yR1KHc@6lA9HLJ!nCUA) zaac9WAMt*vrZF!p{9Mefr_H z4AWk(_{DtsEfc@5iXU#vF#3$Oe$dvmhZ|kY`r*D0Uw(_l57+G(zb2o4xb?)eS1*1I zKK-i2uU7nUi;b^-o+5sTC)3ZYMs_g$h_y@oS4yLfo3ONnMif@=2qG9VR_!g zP`{)dKPT<=+u-rr`5~qsPxld;LZ{e%n2MPTK3Y$Ky9y5A0Z+^>fmWpJY?m0WMDZZV0_Neo0B!!B&A+ zPSSdR&}F_Q>6UbSFq%rn8)N5@)5fB{oaX{?) zo&>!({h=~W*Wp9=XR@T7{v0l8r$0^c!IioG5`CJN@6#Em$J?j&c+On~$`sfdW1KcO z6?DW0v$#aOJ(n?!>2iFtK`NQ-NoV7&nRqrklre`~C-2gDVr75M)M?7Lph724SMD(P zKcDVMr5obuTtAxEW$MkX4c-nE=G7N>!um-kY#N=gj80g#En-|%!IM;Q!Xts!FF7xn zeCCqc8B`xTf({8z4$P!LYoLTp>*yRaH0zCoRcYL+vJl(K9j~EKiLAz$%UmjYiwk%osJH~jQL!Dj zp%nJQG*_w%9OT7ionUw6lnnV2B}VNwS5l(ioZ;y>8$CT|quDjkdMw`8GnCBXR+ojd z5`Dd?!E7oy%WX!U&dJ0FVzE+LdOHr3$QdXuukU+l>u4xZOQzRj%w98)?209_>7uGz zni`rHEseC#3Mq`ozbrU_=wbO5%(jRw`D>jI>B_OAO*5bRt>|W#s*N~_Pz0CThr}1 z!$v`WJ%e;Xag?tpteHUi}MR)C|Q4j49It_ zmuY_#8BiXl2(my|UN85-QuM`CK3~om$Qom1Ws{cvYC_pTlWu%ZhvyV?3qKb`eNH)+ z0Hq4c>QZHRHPeh4yMOmY;Eu+lFWgwOdQrIvh?CigR&t1#JO-zz{k4TNtD#5JdE?z13$ zFf5}NZ0@Tz_Y}x}qRFiSvG3U+u6Z43mdU--=H6p-KL(v(a`)KW-~`8a87O3OuK;n) z{WkX%5Kd*$tM_eg*+i$@i6ER1BXm}2Ma0EcjaoG%W1BVq9%~uGUe1Nq^J*cqOn~ir06^?PBykJLW-UTonmY+38Bv*9mVLgkRttv3my06G($+yT#(*V z$|)?Qs2-&Et#Vo-r08-GYjvfNqKzO_j&gSkDf$zLeg7<^=n&b`a{Efi9;6vT0Qu@Kq?v8IDUiq?QaroLN+6g>!HO@Ab$=-)xC>B~Zj-UYFyJB1Ye z8N{0YpOB)8gB?w$3qdOoYg#3wXffy%)0Yc{&}YzWV;dAw^c~Qt#&)NWq91`+gNKC_ zJp*D*e=Y?5K&_htLW-u9JDMILg#8V~nudiGT>xTD7Yiv`4&pfN6jGD{v8LAuDf%{uHN8U! zeFm|nj|(Y!4aDpFrjVlDpwrBH{7FdB!8lKwV{C^ADGGsD(@G&l-5>-gG>r)W!_hpWdqKiPRX^W7eeh_P#6vCJTVoh%r!Z-?;Apj?gX)>-xpG} z1;m;@Dx~NI5NrAiAslN#tm!TxjEOi2V@;Oib%gOH+SAlCG9Aw_8r z_c}_abJEWg#8V~n!X`~xB{`Jp9m?Mf)iHOv_c4d z2C=5KLW(W{v8I;^A?`sOr#T@-w}M#H+l4URgILr1gcQ96!a)bRz9XdQY@8zSx}7J4 zIUI;JZ5M)8Al5W3r08Z4YdS21u?fVQJ|u+WAc!^HE~Myv5V!jWAw{2pSX2E~2yfqM zAlCEbaDVqOXB?eZMJ$@f0NEsSw5{kc_877*9d0=`VyZo`P7@T|yX7k8#?V zE`;$E#F|zKVLSz~rVTBJQYIRgJe7v z!gzYDqiMMi##4}tr$QJ{K{((;({3R}+d!x&BE_zU9gmK0KSBZxJ^^Skp&@FpmJSrY{NM90J6e?i50w zu@bE56d^^YgILoVA;dU{HEj}7)CJ-=?G;jV4G5J(zpo2nYzJYI0^3$0Xb+)SmsvuJ z7J*Oz24uK zWoUpkoh*btgILp9LW&lGSkv=`&}R^9xhk|#G1|*LJWae(=|&-p2O!q; z5g~l10AfvF7DC*ESkv7?nA4y#*7QgrMO7fybe@o+2#7Up6vEgEVoke+aBdG`{jL|n zF%QIAZ4tup4a8c#ErfG+tORRygb?O%Al9ly2yK8^tLudnJpjT=L92ff!h8~h%3*s| zNYQ5?{J|E4Jen{c0Ur2ko{Z;-(!M!JZ%-iJR8Kvt+hfphXwKcU_=P>XAsZB_6T84gASJ) z4Z=c-VjyK~{X&ZF1|4i{n}ig-3Yu(eJA}|@tl}hNs}RC54>Zx(qCzwK>~TL{N8l)*%o0_MACCI~6EI!mpVx-G4;wARu_OIs|B zSlVuBr=>lXCI_5$Lzcpp>MSj{)Ng5(r45!gS=wUhc}qJi?X;x7c4rMLEQKsBuoShl z+)~=oYD*g|ZML-4(({(|_x#-ME=zjz$(FG++tLC{QA_%l0ruEzX{)8@E$y(h(-Jm< zUU@XCBZ*1J1}4t1>F7sMy!3v>gi}e$oe9!jK|GYpp%93D^@yS)HfY8ICWN2lhCw>U zgH&s2fz3S^r1y#-)mdr)am`VX?qd))H#pR4b2~tK&kNFWOPw~i8>H|GQp{36h-*%Q z%1v(CQqJbC0{+0%_F(^Z`gK6rd?+N~;l|xgfpf0qO+lwL~o- zy+)`7q2a539#Y4k+Pv5K zu&j1jnqhg*W$B0ILi8~2bptH_;#Y&bgHb;k#aS3v6j=%{;pEImipsoQWSOSLlZ7*v6j?GwmLC*ZMqug2 zOJ{JV{=JtMXD|3&k!24o`jOQ-gERF7l6Sc*Ghxxc4(H40U+hD8sP)%Pa`$rvb=)St1ioL zk&uN^UFD?qxj0G{6$E7Wv0DmsqmuBmVyg7`68aYoA;uf ze2(WTC7t2A9LXBw!c-@pTQ)_xVT1X0O|n$8T)X?CAl-;_aSvDQq@>lZwvPI)di@;g zcKzV#Wj&c}u}sSrwKXof0M7|F&r&weSLVBaiUf6)^xW9yuP|;w8ogl2+u3}$6y0&< z!$t>)lH2Z zt&4CO{5-+~>3QCKclH_X zWUV`SraL*`o%D3f(=SgyYP|iZaaUF|&y)7_tj5!|8c*M9bmtledRE5q4EH$wKcvuk AM*si- literal 0 HcmV?d00001 diff --git a/x64/Debug/CCasingLinerChokeVariables.obj b/x64/Debug/CCasingLinerChokeVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..364de1496654c56cb5e5ff502e1cfbc4e750796b GIT binary patch literal 4327 zcmcInU5Fc16h70W-FCLsR&A@T=yh48Le01?y)&ClcGBI9;9)cK z&3C_h?!D*SoqI-oV=G*}@T2m{Fu({n7HVmWEf>>UiT*eMo_EMicq0%w6;icIyEa;M zSb+Q%fR9l3h^r&mAi~b+kfq8kc|`?q7~!2EfRi{TwE+I&5RZozdv)89k8GuiRf|I; z9%_1ZM^N`tk3ZC@mZr4MXe+(HL?Ev52mDS5wJcfbr~s~@Zp$`+4_tqAy=;EYdTBVA zQSce+x{a>)xOncjQ{qKql!)hpqvFz65-OI0!Ru(^xtl@p+@0Xdzl(1MN0)-5lw3-V zI*k`MQ(xlwuf_Af-emBi7Ju>DrAwEB__U0_$1uiu;C9hQAtvQ5^E9r}mgb7-V^UGC zw+*?an+?IVv@vOMazaYd97%#8+j^sx(Hoj2%$p0^oNVcG#n9}KSvd{WO?!6HRele@ z3=P2_Tj-U8bfcvi2MSM;qo#!+YLE^wIY9)o-qa1vB7z~?wyuz>X%V^EG<1c{z$R9^ z(ZDf@+0*eLnbRyAr%1*kW6{u|P?Su!bwj0(W6?--svKd)gK}2gaEYMQRS2gIy+RjD z!VS|fYbFV^OvS2g!yw_DO2TJls}a+2JysP{ZIf`_RNICYTa6G2V<0e;J=9TkRd7a$ z9*W@BtB^3;FBMr?AYo-*Qx;+sv)xe9tMg>HSQAdlj;VA8t$9n6X}emfQ5J4=_kV>X$ zV22{Y=tO87|Dsdl<5ER$NTO-Cp2uy#qBC2coB-QWHVmsI6z65DDNW<9QPPcO8+X_V z%`kAgRdI6bZKvu~1TaX@CvX5$uwz$(Ze3=AkSM0JGnsTYRS?A7bE&yRA)T1cq>ANw zvz*JPvSKci%A~S0B@v$f4_(tqc*aLJHjz>)TTJ5=N(E=!xL*fCE|W>*i>Z7eRV*Ga zq+rsohZCvvj97v(zx{Ga|9vn-zUSv=MzjQ>tPGvln%i7)=j)=L4HRGXJseQz_@W2VL5C zU8hrRfTNW%?xzc@t7*q&`O@7UL&1HHhNc8Pv;fj*1n4Xx+{7N zt*h~Rp1?LbJ8I6VWkkKq1rKx8!z_E4{TR+(KM4<0^Du9Fn5!OU*~2`6Q|}#X*264% zn9CmKTVxz_vb_4WgXzT>((j#K>;BTAyD`9B!E4726W_qcb>2ZxE|i3_K+E1Dt#k21 z!d^$;r;@w7^KLO7f9nhTR%-)v@e~3B^l?xA0hD;u51<-sac-S8fWJ;YaWW}! z0Vx)Eh^1P!YF7}dvdH7IY(>B?^eI@jbw$9hl@)xfkD>_dQb46F?6Uv&yzf1C?wv_8 zbrsz{Jx`MRyYKn_-}l^m?%Z=Ti5n)<-Vgt@XKsRM1xcvLCWo`iyjf+4IwC|D#l^T1 zn@z)&mp?2jOgKXYpJrfVj!6AUPSJyBig5RpcyC+=@OY_Pj+L{%e!#`QDUjL zr(07_71>O8k4r@~qlD;Z%ZNVQBWcR9vF(%oc6cQ)ytLfglP&jmMSSz~tK(Z!v!d~l z(pmAnyE_rLx3u&Tg!txXO5>XkmR|Ehd`s!9y`{6*xOdqsiQGDoONoy>6d(EBGZwcd zYcK!Kiukq9@8$@US*c|{fc>J%9Jy~3XC1kGI6ks3wegWG_poVweB{CSme~4+k=+d= z|8AST#g;r0Tg4^Bw@!b=W@%c5)B}=w0I6+KRJX`h=l6LFnz}_=z4afqA@WUB;1t`^ ziL<$@qbiWFLL8C;DVt?91)lgDQec`Wuy0HS?9kqNND7o<^u@Q1rogbR?#=gsmyRo^ zmyVm7Hxj0c3ah!%qx!*i+ods8K>4<8)Zs?MEn_NCZmay;QQ~+};^3G{%)==&KDIv; zQliFY8_g%~{3|I@=*;*QQDGZ5cvOGbH@*ttGvni9Do|^yd-HvvkOF)a#L0Sg=~xPM za_rcC5LO^zvyA2gPZXoT=H~};FSjYQw3tg{u1D5lCx$;$`KmW@z;@E<&T%j&Tlqrt zXRqweH?y++Z)RmPaO%sM%=~3#Z2j|B=DBL^mRRjbY#Gmtf|YDx!iuWs(xKi|f_JN{DytTERoY;v=ZeI*U8A191kG zO?R?RoiXmpK&E#v*}1a5vm>2OAwxT`s-|KAeySEPSkSqqx4$!<9?Y)7;kW8s(sy1B z4Q6`Am9?|JeSLRkpfmRVq27VMWIr4$*JrSo??-DFR}$2r0*b-2*k?2NZKmbcXMr|c zg1>yL$iJW9%Zr5i`gqI5vHF(gj<%M@*1G0cV^`lmSH6`_q2tR}d%5zq6Q~8Xaorz* zd%q`C_XNy0n-TXaez%WTcYCbEw#hc8bwyKad#o{5-_g?6erW?@Y(sXVpu*u;nmTnS zqRvG%&5@NfhmM)blPU>g7JOoU((1<8GAdxNVmlXI=ao!;(H$)vb&c)NlXYFu+!1S| z(?&_!-rD3PIk`ZRmiC5@hL&b}YcQ^^y`gz|Yg??neMMW0P7Or1chog6Yi($ax%g8M zU+tP1Ypz?`7^_>+(PA4+X9QyXPP8>FuWRrm4_09lsmC30iQxaYSMs^?D)?mE7(V%_Vtq0+ln%`o#~+$Ud@$$qei)q@*#|!eA8Zf#pwa7f z1lvy+>x1DlesNCNrYFP#SIBUIN4)Ux^g@|84#N*y$MC})#rk1jW^!mwINlZIhzA~? z9?0jx55fOdg#0h}zUA+W^*=jl4O}FOb3$)wSk#RCh$kMNo+#(SEPOG1|DNlMpDDr@ z!#8?|=7eM4G#>H3!_)itJh-L6b+`|9EFqwE_`P{N-&>CR^a3A39A7?w+=atw_|T>n zQT%C2bEIGa!Ao;~1xH-+@N`N0nId1Cn?l#-T%Ww92%oGEerm?2!_gh`)UZQ_a*z3e z+!0qiOkL6X;x+Ka#xZ>Hv&Hx#f9BrmeY!igE6&Vw#X#n2fobrJ(uHmXR$tOpAC=gpeLz=@`Gu6 zzhfV%+KdHUY&83k$AE{yV?aBnypmTTjp2KrE7td{OZ+LmH<~XUs{P2qh`{5A0`s8o zQ?2ozz81e$;1Cx^%)^R{oV78z>pJXg&8`IEyAA6FMW?nt@J^J?ALmHOUr*%9wlx*F zEH6By0&?cBl|^UtZosOF$r1ecpr(i{`5#hMBbUDvr?4pD&uteMk!O@;JH<3I_n^yS zo}z^hd-8e3wluU_;lg6`$t{FkSe3gRh+VBHH@5i;tSF=3!%O+K96au};br`NH`BNa zKL5n!dno!P{8n-u8hEb30ZXuHmL)uUC)&jGkDIYwitR1f7L#wA=G(6MK3O0i&&N6B z)`wS-Y<*j?y$Eq1DKg(C&3C=#yP?Q@AJBYPYrYQ_nJ=UHHfp{rip;k`^QAT4fac?O zqP)P*Svc_e-+7ksJ|5EX`bGG}CY}qv2ivEx1>55>UjDe|Z_@lNn*Wjl`FZUHhur!v zKsv4;KCr19+hy4P8e1Hry!s2}pQHI}G(UXG=Eu8$dHD;qKeM+# zt2f=%lO49>gVV0!KRE$o#Rf0m9lBqOZ8?7L)_u;$X}+%ec0I3M5Z*e}H_)C;VJUPv z(|$#7wrBkXv2K&`4A zr>}z7`+9k8Vw<`v*%wLJpkZgIUEaPo^1XcfG@Y04iBLXoKb((nFPR(UjYwYyZ$F%G zQ7B(r_dWf*{cyg4P`*u}eBORI-<_d+Ukl~)_QU!1hw>c=<@5Hve9Mzrdm!yS421Fa z?OjUFzC9&(q_f>AIq%iuO%uHO;nLf9zRd{R(}TVI0uXD?Wp@waRh-sLa&T}clN4Kf zw!1&k+B=ZUF;jao8*(*#p091Sb>$8Vl;g$a4rQ*>vxiPS&K^8f`st-V;ZuAlKK~L$ z5mR!eDVcarq!m8CeDb-=Yo=3u0v}tIOpeT;Nb6tCChhv6ZP%ZPSzm8H!OU}`DGUhA zQA@&@TiL+#uXql3Ds%dQ9KKGO=ixhY`1Ty$mBSC@@IK`pY=4}?`@!cVhX?Q$*%Hss z+3%y#u$8?(-#W?|7$u=U7z!lNQ4x#@jEz84-VpI)^9M>GuJCmvKS}Pm$&U?zZQir$-HDC)0DTz;Je2iT`9mbm?F6 zCK{s=_ZAxRKToMBjZDI63SkPpO;e3~hAW*ksp-*)r4uH7@aYN2hkG9l-kG-Wp+*Kj z8}gm#WgF#898S;gyi4%v3Hc;v_+eS;#7Q5r?egwz{Ql&6xJ}HR;KT@1=p-%OPjCB? zdzA?`$)=w|{wFK>1F^Iux6e|K-!7bi@`m-nV;?EyJEbXvdp8YvSIvVHB#}*5?j`fD z#CmSYNrv)#{k$`u94B|hM)HYwk|%>C-H9M6`5cgx%>UIwZ0`g~ z$@hZzvzt=-o{RmRqscfZQgS&+(nUd1%0iHoe4(>7fTZMagU+@k|HQ?RH&C$t|ypp3JNml`ql4Bq#xzX7!1xd+wfo9v1A9AtZcd;kI$Ir5{^FdPH z5|HG@zrv!o+t^!N>=#|^%b+uD?9oSid8dIS?`qI28@tiPUh87N2Rg&XKIvkA<6y_HGrh#{qR5hP#OJN$xtUe2S2d!y)ToY$FSjXR7O8iGW1^{F1d{UN6FCf z@QpL9?L;L*b3xqtGOAEAv;xHaEu(iU85#z$LS=N7lA-M&*0hXvC>i=PXtuT8r)1~{ zpgGpYe#&I%1rU2q8L`JQ8JY$UV?Qk;{`V0~hH5}OD$0oO37HIC3gR(XM(9==Y+Mq2u7=qQMDDh8BZFzYCNM-3Wqk(C;QCLob1(ygw@8Si;9e zzZpt~=7B`NN+m`Z!4R`;?NQyFq8!w%ns+h{xM(YkN!y#{)FS z+FnpHbTmep=y!~gAs&sQU$v5fXlrXkH zqTeDVLzjR=zZFX8FG%zoQZn>W&|KS(Pbe9>7j(9@eND;Gk3sXS?Fl7AuYg3q*OUyM zbd0CpOeI70AklBR63#gwI4$(sp=9WFkkm`Z3K=>DB>F{_&|i?~w@ArQBS`dXRl@NA ziGEiq;dp?=|87+>bU#S+`-YOCAAv-_pDG!886^6>qGV_)9vg^$)0GUJ2aG*ZgmWF}9IL_AN``I*Rao0?N`@W=iGJTz!nni~7K0S}%}_FQElApOy^^6jK%(E5 zlni|vB>Fw1Wa!^OqTkPyjQ#&KqTfVJteFhW0*QXJl?>H_M89Q9hAsz*e%(rjt_F#I z*D9gEAZhb$N;nsTM87>shW3L*zh5gED#2}p=r>8p(3v37Z;q0o7Le%Iu4HH@2qzKf zce|3Iqj1|N?K4W~FG%#8tz_sOAknW@$xsJK^joE5=o*mdw^_;1=Ru<19ZEPJAkpt3 zB|}ewM897s8F~#Q?R!HB;|;e)qTfs#_AVUGW2PXwE1QwLth1ne&1BWJO?ED{Yc5sZ$YBpb4r-!;C5H^ zJ5kBdxggPRu@cU8AklAylA(T(v?Zft=p!J}@8e2_?gEK^yOc1`0f~M;Q8M%*Nc8)I z62>5=ccR}6C5(NL=(j}4&}xwAmryda3sh$HyH^RmJHzY893?|bL89M9N`@{2iGJ@@ zGL!*{ejAkxeHJA8eNG8u3ncpOQ8M%tNc7vUWaw3p==a}B@HO1-i+(ee3@rqSe&;J; zZVM9qRx2603MBe%QZjTKNc8)HlA#AdqTjb`aPy(=vN@o@3%@ATOiTz4JAWwf2*h8TqQ#dAgQBC$xsp``t>Rq`VdI;yFm$K zA0+zSp@icB68-il8G0Hd`u$GH&_q1e7X6M^GBg_``pr`^^e&L-*Q{hH3ljZ?l??3x z9b@&|r(`IGMB*Z$zJ3yk}ElP&I1CsLgDjE6>Nc4MF$zb94|g!M0op{RQC%wv3XYkAXzLPbwMuCy?m(WhLCt zfJDDXl?*)#68-*D$SWx022MOO1QrSiGH6_GV}mQ z^xLh3YYIqoc|i%+H*`XDnW=>Pc#!CFu@df`LFfQJWGi7wlfa4iFgE{`c;j*g6?%S0tZOF*K_g-VzofJB##O1KXN zi7xjm;e3xu#jjFIm@9*1tlq9<=n2rVwr@`<87fEPjW%-XI~ zGW0c&v9<@43>^R+ZEe3-GE|AqPPVohCHMholC@=(FuwvFWo`E=p*+w;DNhOIL8wwG zPYLCLN~Am`ln0t1`Pqn(a+Ioj=L209_-&33fNQQXlgN4p&DcJ#O-{%ljqJK!h|@x->u(RxS2j&5|c z-_Zd_d|0&Sj-rnEb4-c7(Gh=oDYjjXb~}39(KC(?I+_f}ki1bxm5yp1t#Y*9(XgX! zj&?fQ@}~d(`S;J3u^sOYFKf zp-vaO8pI>Mgc6R{gQVmXsLaL=ILf-%VbByCdzGV2Ajx|j=otK#(2b66aqXyl_1 zp=BV}K0;X#>l~rmL0l4YfLOH%O+jI-RfK9ltV@JCL99W9t^;v@BlaCh?i=#L#{G!U z>mY7(1mBY3e=7)zrjiJMFUU$zFmNk5L?~)|A-%sOU|EE{b`;{LxfGTasLQwX!*VG) z?^|wwr5nZjmYZSO05N>aeX#UF6yLHBmNdliEkB3lset7LSQ;Rkp9V!4H~-on6L4#G;=7l>7ZDcI-y@8&u8@q~V=5 zS28P~`)w+GOiCip=jF)#CKWrfBljW=8W{>}QSyzj$(e&AH@dpSSBdU%7Vo(4$+J8O z%bq|v&%yFY!19{Q<&`{(#nT|zlxOkQymB&${8nC?XY(vGxI-EwvLVmHR~#=$n!EEX zzsR$k;0*(0m0TC)S+0eJ*FDd1zUBm$Pt!NT7i;-}$fYrIm~w>$_7dzEkDXKlPN z+qe7@mem2vi?Hw;`+k}TT;P^~g})brSNZyBPJ@NN?7_EG!BP{j)WNbXU}=SAU%;{& zmd68@0a#|EO)%PDqHAE`FBI@CABBa#FTl6l1`9vK^DTE{Z!*pRzU5o6@Y8DF@(3)8 z0v3M4-5Rhw3riwk;b-5&0Sni|&j|gJ--5l{1D3O}w>w~2h`lEQmgU$x5U^Z|y~!Bm ze#z@#ne8mO-))2ljBamLICgTv6&z^;kIJsKsqD~TGU3^9mdN?;BNUEucuepa-w&Hn zMuC+~ZWWPT)snw}EEu1+bl*h>*ReTsXswa6=dLMo#=M0?91~v5T4?o8fd#T|5stTv z)*1MJ=KD(w{nbBg&tI+M;_bR#uMoTFx2vtAzN?=9eLR*U^=w$#of)LAF8l}Q#)gj8 zI=o|1wYY%dE9=@C_+MqW2j5gI@cJ13AAi>snci%&YcTo#u2kUA^c)xF?mAoR2GwEl-DVPLt|mcOBaOpYl8b#=LYwy!~5q2bgx>nxwH?crav+?Y3SWJJ`y9;Uq@F*KnKsYoCJ55O}INJBz`Z4cvt2hP2A(xmR%WD-ZU^Si%$ z&bjxVdu#u!y}JXx`rudf%K?Bx;9K0&m%IRzABkKHz%#5*Zo?lAl4s(YUTw_BM4tty z_W^u{elG=nPhdwDc8|p!P4Seb7r=7}_w4{Ui(?Xt;57=Pqw%Fqzn#dJ(68M_Avqea zhy7&qd%q(e`e}}?dgt_J{51p%>+%7+8{(d$s4Xvm%joyi0|1`}`N(?d{QUKja!@1S z7xZg4vfi2O@}Fn27tI)#U5UoBt6$6Lu^NqjkCt7&8O<*L6Mgfq?1$0VYBWa3)$y3$ zd2u_*m0h`>UHRiCg%|bF*KS<8bSa9hTX^wU<7r?9NhhC{OOAaO*XYW#Vs1(njatK0 zJj1ql+tG*Qr4z&QIN2ka=NIfnowqH|vCWcV>E^8B7)sUD-MC#n3k%!!4w7a52*3CD z!{2@6&Opxcbn{60X>P)HutpZwB2El*yj`msrtWaOskpA8a&xxBDfPN(sB{W0=QJ$K zu;w|tBk(9Ut2-{vksC@5rQ#>!DQ>J`m>OvgrIM+UN|G82>UnL;HG*2xAdxeTDp@U; zux!(wx48t}s`OmLG`U1k;}Yi;$4VQx9%l~s+T{{8TWgqldaXoU0tSPknUX@GG15;JhMJ}N(=;~s+YBwwmv-&O9qg^;DH?5HwcnglMkbbQ?Pgr#164R#b zSL&!~Sc^yf-JExn8aIJ;b>%5Tb!^w3^SD{VZ73!udJWC6Wl|?uAWNw`hO5i7ye!$a zi2)+Q)NuS5{-s8a9h0kuC1-8ddlk_9Y*fsbtIla_)K3hC3@Wp~uF6K*_f{>rhlyjM}ydYL;^$P7B z$_wN75tbrhSsX3X91OY{jZQ);N}0Tfb0Tw_DM&&Y9{~52Ni0n@GmP|}p(y60T(JP@ zo=|Eq^&T znaP#KS8@`c?QQ<;$0;w&-q*gBGg9+Jo-P!};8f3x5QV(JOU332CVNgmtKgqM+(tnP zN`xwr zWodkaERMR4bkEhyie|X=Q0iiSypWj^#KRnm@5axAm5?7&9e-tK{{KfQjPP<`#BJ+AHMHJ%aOd`|7cgf(UQw9D zJCQw6_zCOsAff^IIY2DzKsomi<#q;$g;R)jQ;rW13oD3-j2VE70b=1hMC5=Ezz+dp zp$`}H2<6xSu`q_{QOZpOh=sQh?V;Q|0b=1AqP>*69v~LBp~iZQa(w|}A%kci<%9sS zu#9Lw<=zVr3*R6*K)G)N#KJCAWRFvBFhDG5h_E2Ij)eeWU9e5+$Iy{{bfm>0pb-(Q zY7>zNBBdiVmgHmL?Vy)I)w-tA$$5-0M2`}$P9yna;_xCLO&^;gfkqnDx&c%-p8#vB-f>IP-DrBeNssuljXF zoy>b7=0=FQ8)9Nu&dxmL5VIU&u7sGIA!a{Lv@`Qmh`A7Au7;Sq$oS^(>DqS=ZYEZY zeCc#r`!^0bdlBX`-dky?a|DaL+0z9oWr?rwMDU74;o>KRyIDY|g4-l>%aLlfZXEBW z(z=dq(`8-7G?my^&Yjw83-7Sn+9F`RzS_e59*U})s6dkY8mgOs^{T0xn02D0n~-}b Uqpm|Y&_b0;uBOcEV~VT8e}HzV1b7$^N8gCv(hi*C4P}WLROS0v~!d)?Ce%n2is3t%(X`vXe z#aoaHR^~N^S9Pw=trjcMxEY|~L{C?VWy2t%N*Xgeuf4H8R`2B^T0R(gONoBjEVcr? zl~QSGUY9@LKG-7_lE-^3rGnDDw$yx6<`6xyR&q&s$k*5&ZiuZ5d%m}$J+C33Z!=>k zFV*eY*2nq7I*iR_R5u5wFu?*8mtHtsLamBejO2AXYtqH^;qM=fp(mtOni zsTa6;VO8apimENNSxVkExQ#2=vaG6d^W$2>;Nt$Sb5ClWUHww$@zG=G_~@~=uUqWv zu0U);<+i~mxVmj;p0u?}$6qZ+Zkq@1BljYuX>|VM>k@JkV&0SK)$!>|fpwoPv>%78 zl-uDSvSGGq{aEMv)H*BsrOs}LY#&#*?aZfatr>?*b00{|%|n)^6j(R)OIH$(vSB>+ z`G@Raf7e-=TIU!x_2+D|DYee3{;u;tYMtBryUt-aB_xk$f7e-=TIU!x_3L=1*2!nX zv~{*6p5h{y1bcIelUaFlMd_A`(#;j+I2O12%iqGraFv|&PE!>Jx~XFO_U+kd_Z#^A z0!Fi(0(`2cvYB;N?a}M7cIc?9t)92AuDZFUGg2RGj<%LX+rx!*UDJ!|%6aWmS5~$r zx;DJ9zO}h28fnanuDXuiH)#A=6h;T>w?l{0u_62#pn0vaaAfk*i-U8b?O1NK2AyGg zQLrr9($*Xaw+G82^&K6}4Z)^pd$7K(Ez;azYwZZOceb`Rx2_IGeU4Ltwc+*-G%HwG zP#DUakrxWi?re@U@@`?MAXKuVz;1>bu5ZlPEox|Kr2Ki2=2hImV18>f5?vh)=G#@z z%%;vrB$&UrF_?dSeS7Q7X7s1M3CpIAV17%qu`?2$8CNBk4Xhs2+ zajSy)cI~yQzF}=JzhO&mLv z)VH_QReYecxveGKil8csw#M3{k*fOEFzQN*p{9}of-;mwEkqT^>UH>?LvwAc0`0a0 zuUG2tU(OI4UdzfV7hhSiaMq%Ea~3ZsU(wRG!f&Co>0M)1y6nj?h!&$3uJZ^&dQnoH ze2wtW_{F6I{k5k$t1D`J?Wmo#ptd5Eq3%&Mc5D?&E*yiJ1GN;Skz)(7FI)QZMvi@# zmw_s;E?+up*@Ai8;j$|WQCs(^Av!-(=~FXjDa@Ru7Znv`>}g5H9K{)P%%DlW9xt6Y zx3UItVs%}-sA}or*$XNb(mBX9%Sq~GS~hEe&6ly3X&G}A(L`T67F5hh(+nQFcr!Fl zuUk==u@xcWNbgOYztiV9=g8~n80%}C_Z-PRr}iTJ2I8FPA0W<8Vm_arG@n0%1D)sd zr}=;%$1isCpE39xg84l880=k)FV(rc=i|AzGs3`J&*#yBxn5T{c2#jY=lVc~V<2@6 zQgoWZ~Rm;F!?^d>U><88~iAO^3*EECr9Ou(cbDVQ|194t%qj+FGPmJQe%;)c5 zO><=rYnrSKah|g5>)WCx!?jYcuD1pb1AI&|a2O%;mU>wWz~HDj!E zfdjEV5bOON>%;pV>wW!FHDj#z{8@U>sRQ4tdY_!xNcji7d!Tpoy6JnYPd(jh7%p&N zULTm(|K551l{EJdG+@16f?s|{B&VlXpIcGmze7uwFKzHkznzEs!AgB; zs0WrZ_6ER#Pu5TUlXaQjuNsni-%Mi6kLXj(%QEJaW4`BQ$={PYu%sDS(kvdE=UXPE z-UsHNzzeBw`9m}npLIWdzDj;*3i^baVk6&r&DTP0TuSSPbH_|Q+x_OGiX|d zwsjNp`EZNheVZBvo}0TNx9=KEJB9ufQBj8eq`#S%qqL{)B;VTD_udqqLT^GuZ((IK z48H;V^7bZvmoa2~AmtPuF+j1$@ms*<>&E9X-te>xi;42U*AiAJd$no z$1@#P|ET(RsQ+?|g}3qj!n|?JF0h1Kr_~?%*7M`ySL6LEykCQNltmcJ^&iLk`|{ri;a(}Uizba>yI+5{}t+Arv91wcfR^xgm>=W zWW00#F2+0e?^3*T|1QHj_YcRH?ca2~_ojbmA|LnfJ$UE-y%+Bs|L676f4KUOQvcEF ze}?)8QI@wYQQ-N;TegDN^FD7u`x<}o<_aEfW^X^YIl7`D*5&4{L=D+{4ZmRX{Jee7 zkNeA;SMLtlb+5aWJb!QB^DlKdY3E&kT3+gvb0luJbWHcXa=d-7oFLNQ!KT?!Vc z{`N$NJg)zI;=|_o%XR}nM!rv^Y`{W|92<(w5eL=X%S48?U zpjFy-K(Bzwy1--&ekf4&|AK##&`!%7jNUnenb&V47_c!VaZvDu1?>xbLc|x8_ zWwzHO@X7>^Byd*(Z%p9r34E_|1KxKf@WbHC!d-26`g&$cEEfiY-KK@&Y3avxYNiYc zrKc|;V-*D%swl~jUYsF)hA%z&Sn(yM9`MsLq!;sd5N+*7NfeH0bA9hwwpbFUl{H@&{|F z8QU{0IX@Q0x}iPEp`X&AjOEWr?r#P?i<8@vA%977`Db~}?`FITd=-qKO!-5;3Nq*S z4{+xEQlQ+d@anKvK#Ika(9oevU^HV{52KK4sy#W%B zQq0AZtjAoC)KLu*k87MQ3=)rrK@+XVqb_wnNIZV*Y`+AF$GJG`oo_wzKvG8uNK!ur z3fk0LUFy9q^)Mm_Ka@kyD;axM#el)af53>z&_j6Rqc(@WsbuJ9prExKRx)%P#BIr; zKPVX*1MRs-IW$hm&{WVQYn!2Ds1}rKZPzFn`XJ~6Yr9d&(7m7wt!<~0p~pZMS=$pz zhK_(Z>T-xP(;blEg+s> za_Eyvh8_g*T#`c%DH-C(;W;da4k{UX9VD6_S29$DQAJ~suUN^@-5~M3Psz}CKtY>t zpOT?pfkgWklnk8!iS{Rz480elFWR4{WatV|t}So2lA(Ig1=bc;GPDtNp|x#NGW2ht zi>&R-N`?-AMEhrz4E--iw0~X6(CA^F_Gc&=$^(h^g-V91K%#w(lA(5xXunR$(48RB z{%$2h4}(O%y-J3D0TS(hrDW*r;Y1h+XdhHE^bwGhw?PT<2aT%lnlK9 zlJWSBlA)6z84m=bB}3-h9h!X3fg?Tl?;6!B-;N_$=vA^OOuN1c~-blnk|jMEjVMq1!;B{hdmPKagm@R|)Y4677GbWa!VJ zOKd;hQ8M(NQJ(haDjB*QG{xpCRWkH`&}G)PO3Ba$P@c8jtYl~>NVLCS$fkgZNQNp=mtk>Tm zN``VlqWxqgoGU=0{d^@u*Mah^F0D#9RzdmJwp9toDoC_{P|46S5GEyP|CW-WYAp7p zeOD=A{sT!r)+rhKG$?3&?@==J4Umk-BT9yT3X<_Sq-5w1AQ_Lhl?=Tb7kP3loTG&J z1Ic)lDj8YwXI zQjm;Cz7mdAkc`I?B|{$o$#`@s8Twa{jK}RthQ0=p@%V-k&Y_^;R@0M8INtDWlk{Vi zlA-k=(SDrzh65R^{mV)?-mtKhzRg#{+6*MxN0e}`0EzauC>gpR zB--y%GPEBg+CQU&_ydXduPYfEiEkxD`>{%f3P7TLk&>aMAZcH%lA#z#wC_^FS_LH9 z->qcmQIKf=JtdqQL8AQ&N?1pLM0@_elgZGzAkluJ64ntQ(SDASp_L%fzEKJ13Xo`j zvl7;Dpd73Hvr1T-;hQb#Z=n*_W+2hNMhWK%kZ9kog!luA_S=;VeHA3ye_hGYPe7vm zFO&@Z9wgfTNy*Rzd`l*6Ia|rlOps`Qg_5B_Bp#2QN`|r^sOU0O$?= zlA%=~(Y{H^(8ocd{bnVsV?k2KZY4v{fJFP}l(23GiT1~paE*-$MEh|{=r2gLpRR=d zf<*h}O1Q=biS{=t8QK97?eA4G^lgx6|Co}Y=RuYb4MptKU{7tP?@_fu?UNVVww}g4Q-(33D+Bf*@a!lA%Q)Gz_+-N>~ekq`Xcg zLwA7igM2%b41EhE+CQp8K;(LXXp=&{+eZ3OaO&~}J?Kdi6E(W0kusxuJ zYdR3BhV6$+hK_>p1KVp#=r4p9?MEr0zaY`RK*`V&kZ8Y53Dm5E~%T{`X4wJO`qP z_Gc*>Dh7%6mn#{%3Ivg$!TXeOUI3w^u-&L+=pGOXhwZaUhQ0^F4{T2=8Tv1fX#Z;^ zL+^k@`z$0e;d%xXw7wTB8CnJsO|Mo$9DqdA%}O{Qfke~ClyI&9iKcHVVO>(-X*yZS z(A6N(^jamXK|rGEtxAR-2Z^RnD`71P5>5Z4g!v`pX(gQ-ln2U@@{~{>$VhogC=WDT%2Psl)4b0-ij{Cq z1`W0Ob|~RH2hb2}JFJAY-gNJC+X+f&3n<&>>rz5nKv~wdR|#za4YIZqO8D#x`{VH& zu-~8vaSRBRI;wKC($RWH+a2w6bimPJM@Jov33zn`9ThmLao1^WHb~@VQ=&&RH zhEn=*!qEf>puKcd>}a{8HIBL*?Qpcq(OyS~9UXOa!qEf_hSuw-*wJ!FYaDes+Tm!I zqrHv}Iy&O$m?H>o$2`kM2%3Ya;4#M~HE4u=W#Z!nPWT;%S4qW(0oE%E4+47>bg4Y^ z490Jkoil{^XcylC5XWv7p1$y?*ri?$;%LvJQb*+=@vQ`L8?)@~;zAsMl3D}eBPxrQ zJF0W3D?xk=W>KS~H6ZbgfcU7*qBch{m)ZpqMLz6ky-VE);+Y|fHaXhrQn!P6F3F-h z9PMza_kwu#$)cT(?gvS$c7ev=H;Z;V+T&6m2933;dmVkprLsCassVdzoe;Nx$1*@q z;WgXRTX^L$3J~8zz#|i||E!HiAwU~pzytj{-CW#H|nD->1d@T^x$0tN{PRxNAZFjoZsxfP%JXa?|+| zpM}pfPx~yhu~&j(<6g^P$wrIfmIy3eKFdw8yymlf8kTRN&2g^>VYw8Iid(qm&-yIS z!*T}Xjpt##KjE{CK zVFQn8R=}c5XGr{4d+03k@cjV=zC66M3bo6|W0Cle_jr`D0{b*I{+9Sp_fVwfNiBJu zD_P=~=!?$cjr;dtY2z~Vm*`oS$MgDQie+Mg8iGqxEQyLq;zKEU_&yVF6CBG8(M>F+ zDVAu8<#Q>PAEj9Mo)K@8k~!kMO)PaOmQSQuz6r}7xN&h(8af@Po2k_*dIK1&D|zQZWqo-1G(hAze}3t*}AS+0R) zlh4BUCmiru)^Rx~Bwo%&F2`rNjmz;_cEZ9_WZdhku<*Sbam!<{O!irR1WT#U@;ofd zeU?{Y;X8Zc<-85cCZAtHE$mc)O9i3A+E{EskGx0^Z9ZhV}sXo|!-JHm~g4YNeTzscmYOICpItl@J& ze7g;0B;8lq&3%dK&GsRIq`N}X=PXKZp2p_n+c?u_osr&LoZeiL-i*I6*Ue4c-PpT( z3}R}!M=Vlrb)*$bYsyxX@qfyy=6{Vi?M+%xE(fU{$j<0YmZ)#$?FS9SDC^6f##GUDhJ2Mh@iW7HA z5_d4KBpi$(G%J2+hJ1~{F_M_(YevY|ju1Dbx@Kwo5clnJ9SNyiNy0AIlCaCwBU0=|-ne^IlIO88607DWWTY8$M3tS*LR=(REXI zw`a;J*9!g($k|&r`MN#%YPl87M5i3~Am~3h!@mHiv`11id5VR2!jeM#5WBZA@81mn+|U#2)#Ep0+GB8^5o43%_#IYGUO%eL zW?E%s#@(u1o{M4hvfF(XO*#3dTRHiG`>QvUGw#;Q?p7u*?`zcuXP2=ZW#*DH^VXXJ z&ZfG*_^Z1&IMX|zoCyz{p&4QMj5t5*|4q!R_V9& z_vOp!y?glVqDZco%4{9nChu1Z$o-sb5xd*vkebb>GpT|c%EUD-osh@Wf*jB1GwFnw zUXu%@TrQm(msN*in>?HQcj{GB5{(IiS7Pu_8Tl*lH@ z8_A?cd8M*9r)Jb~RrZQ4*fmzlWMprDQuZE?7jj)`tfw%BJ*>&ztePxkQeEZn$X)~j zadc4olVyQp3I84+o>8N+S3C$tM|$ z#lpOld?Br+V#A@>kg8^&5C!zNdv@Z_-??*VY&4yVDXLaHf*cUhIh5VqPFf*x$FRmi z(TR8=9}9oEl+I^UIb>Hz%@qr3W+0wRVXpa-X{^&n2oco?8>g$t-xKJM&;gOZg2d?% zj)TVWE#p0d%TP$^KN#)}_C@yh_v{-E4n~4|d&1F?Y<^^(A=*G|nvX)Yc59&i7T!ZE z@a&FO`0y_HM{w{X?%NCUAsQZ19^W?@JlqpucR~mKcbNWT)Y38l^Skic=yMH2dR0sL z%}{A;BSr&|)|>LUK1F}uz+gY3&`UdLMa%1Obe>Rfl!AkU!M+3G-f-U#t)bN|Z&>RZ z4)zR($&AO>@C>gPkMovZz1gbb5%>t>5ulp!2$bV7-vW0y7G5V>dQ2XLcscBK#0Mh> zlp!RiNYb(!k1SNbC%nIgdgnsbjfAiTV6m$HveSDoYdI6^EZUi*0lG^?KRvwAbyhqB zkhcDvOVSQ3NqcFY`{<#&Uw7wHlslH9yoWmAcF=ql)q4n-yW()LN8GukOuK6-%IzXI z7v!_C6F&-<150t)&jJ1?juklYiW2P>&R=45$B(_GytRpLVu~X?kJ0#j$c=sJ5r_y5 zPV+mm9eo7-F7#3KyU|ag??8VHeJA=KpnnMcAJ9LBej)ZBfE?S$Z$x2#3wpNyAbPgH z6+PSEhMw(z4n5oVqG$Uu4zuw$1vif4y#fh5ZN^nLIJ5H^fY-~|ylzdaBZ=aabwBJe zVwDL#p_zK-wW)_S(SOi{5KiX&-!%!NzhLyH9rN0>vkBu4J5u8osd3qlTm!H<4`!2Q z92oOGUBv*6@p>FPlBuzHDO1FkY1gLoSVGNdYG#w{pfScHg;X|~tTmL!FNAE3k!-a* zf2Ix&?WkfrY+Zh}`%2XZ_Q`{-1yS_A^MkJ3e4)eb(Q)`ToPO$<-b=9l*Ispl{;bBG7r9c@MaW zcdRb=f`xtp#Jkf?ui)G)(Cawsa&KFRcegJ0Zy;UnUfgV5?$Z|945Z6#x42zEx>rvE zan8HxG>|ONIUwE2c?)q}Ot*3oNT2OhYxIv6`imv^mL=DK?9=V7v=INg*6ppgxXnPi zSJ#2?hpYDtBvBp}H~fJs8c3qofH8b~4yh@T)$blgCQDUe5SFB(Xq3CX;_83Rdl z1qew2-Kz$YXe&}q&$TuKN#e}~L*x?C*3nj6>!{m80~R`Jp;H!m)sCoH>&>j`YxMbF{PR$O!)XV!3` zYFn;)yLjBib#EES*;tyJ3uA1J=rcI@-C1T1;_5LN(HVQ4T&&E+mGW-Ll$#+l#0+i$ zW*4w50A#PDix{}BfaTab+gGeh_RwBc7qM}*TH_|LSJbi5FgwdsTb?x)(Ccge9uP;E z8|JcA+_Ax6M+{V*u3C&4!+(IuI%i+Mfo)vzM7mVEFl0W^RDt{46sYpzQRyr;0gI#r&{} z`BN3sgy1~*;0jmuhtr~@12i%?6dDO}88^yxTNK7M3YjHGQEJr7Li0Gs zJ~(S4{tESw!X-G}$jC@vPh@By7&o z|J|Zw)(^8o~^n1M@sc7UUJ*&+S`O_b<-(Im1ii`*u}KU66<*TJIZE}Ns?>zr*z)8ErJ^clPHszWbz8NUN~vwfDYd^rsi`~J z_6@8eDiX^Hy!!?^0i9c`2$Wn!%J7&QdiSYZz^F+O!oywmu!p*h;wMxu2cFsaD}BDk=y^EvjyxX{_L z$&^}}9qk%-kICC*ES+5kZB8Q3`M5(J+hCq#a%YV(f^>A7P%^i6n4%w~ES_h|vUeFvXIHk(NtDF17;;WDxwG<2+KydPR-#}(HAO#2Sv=2jZ23e! z&(KcNL}NR8r9^nQ+Z54dES+8BZEhm#T~}7I*+jfUZsvZpnR`{&UF7P&cMlC2O|mwP z=&y%HFn2_|hSo!)CU06j^h4~^J;tYwZWBt@L(5FjL++s!>{&WJ^mz7cH+z=4hgPv? zF-k6@I^7;x&)yBxLwilv{UGX)Bxre^Ro~6@6We%-p&r8Z*t67QbTNAt zBiDzx7b$1&2HK1440g{C>Tym^c7Hu|55*3#hxVGhY4uP!&M7oLb#zlRCp|&fXNn$j z5A9>m(&?dcoKw!8?Mms{0ro6L35M8153+Xy_0THn$b;I8RM8R9zwfzX&!JS&ROgCq znkqN6IrJ)%H?1Bj$2ohAPaWOV%t?FbwWjDH_s}iuSvoybj&lyOXQ_MWP3&2WTpwZ& zy^XyasD~=!iftvpJs#AFSh? z5Ot%jtb?RM$}zfgj1hH6*K=YfZ(3ti_97D~XJ<#Z@i5tO&Ms5*kjLmA_AH$-DtnQ$ z*|XGRw3j`Lk?TVoqx;yqfyQXmG@P${rW~XHu6q%g7q=bOUk@!ieCR#2!sJb>hfXkk zGHa*tsiWJ3lJ(FkQ}mE~XgzzDP7ghnJ?mx9Quoki_AExphuA~g*}H*yXrCD@ALJey zV$Ji8=&y$!px7ZE=NvS7)9Rrzhn5?kI=YRA$$F^DA-9IyL$gixw62NE9NNa7rS73Q z>{*OlA7T$3&)yBxLpM@K9@LSzapwI#&N;y}R#r1PpYk~89#gfnuIKD9SyCP6gv{oA z!}J4roYOqkh??ShPTrA-9pV@*HhG6KMsG4cb#$9%Pc}v)rsyG$(I|V?L*)9_QrX>*>@-;=3qzh&^{;p_+Q**7$n_!aMGmlc1NG1<>d1rIi~PGD ziHA)4XKg>4Dw^tgPW?FQBtyHN(`@pl)kEbtXSeaGquY3xYz}QVMGv`$Ze-8W>7g=* z?q|1X^l}igU_a%{aw%LF+~q~jP7L5 z(ix-U&3utHl|4&6Mq}*RyBVXq*t>zoXt8NHU-wKpMz`Y2aP=xaH{!mHc`5_PX-dtV zwYsdO>0;a?*SdPuiiJy7uV`4ep|QHHp=tfxrk1+=)$KD1SI?t+{8rDMTi)YxYr!GG&G{30@x7Do=S;LIN(A=hV z%?*upEup!M)vc`!HKDalEure>=EjB^v(?s6%ZByq8`fVGYH~783$3baX@y&%{Ji{d z?#$e9XwHU)####Ihx5WEm3d~-s^;?A0js5I*43)%3mY5OPz6KN*EcmbUDOnsZtm`z zwRS^eV`%!a+R*gNt6SF3YCwHj*5dZS*3k5IO|=^u>t@AO2~CF(kk2vAuZ<_TtR_4& z54S6>2~9Wm7_O1mef5|j%z>8X{*M;Uo*Vffb8fsdaTAS9kg;q7RZm4byt!Ud&+t9R{ zbXr|XRcUT%XsuhlYVPXtrlv+@SOE+d<`&>DTvAZ5dQHRn)zPNbwhA=8QRn=1GYVB} zOU;0?uAaN1zPhEEx|Hc8!9KILBu_yJl|&u%BI=u;z-PW%VEQJ|Ea&6@BKbT^qmP%l zbEC@^m6k1EHfM3^k`6k9#fNyL)PURt_%_QK`!XD?i=PDMNpLSa`P|Z_=n^vE6Z`?qTe5X3bUou1$YXj^u^O~KwrWG`V#Kn z7jH}IbVnCg+@Li5HAKGWkz4&hfySwRi}5t-&o9q;Pp19~v`Y2o7mL+zF`i$^hm#r8 z6EU8a_A{QIOK&_Gt<2aS^k5pej>E$QGk|Z%4i6KVy$3UV-~BK#gy z(;F)N4tB4|;n6ZYTKI^;-H*K=I~6`A3uA0l1oj~#F#j)w8*kwALV9B(aBM?EB*qm= z@}CaPx?wNEH#|zvP{aF_f6*x6eab-RD!)x{oOmY| z@7=kIz3wtRT82jp6u|QS?^6bMuJU4fW8-~0SMd(Jyvv2dBL$sgc)#*b87ZmGRR%i# z+Bd-1@i(7$X*#`~ihHd%S$V_bWO$rF0W9zT9wpT{ITq*iivrif{NGW&l*Tw2!bwWX zulo2>`0xlp=kQM*M&f~Imj13R2KUzeUQqFlr`=7u-IY%!`z^+sLHqOT|GzIC={$Z6 z#z%kOIsPt<@!^U2UhPM`@`gvr@F;--Slog6ete5UW8w^qiIstUhW|U1-={Gq-qlIT zpzre-9wBJ9;r+-zWrQRiX$|Ij@XLcAGu{q7%`Z;eUAV6^*z$%)$?zzF0$ASv{Yc^{ z;cH$4osYbd#yEK|&qs#8F~L2gy!fV$;knRj;$=6vK2X^ao={NX)19~u6pB*ksZ z!=vQ=8zqA|ANgY%W8(ceAMp;chQA^4{m@`|Kk_d+(xNeQ2cDL=IB*W{zwX;Nz?ez= z0Z4j#k%7)N28vI4>K`0xsZV>n-CxRU(0t67x&ZI0W=dazmo!rrWv|qv^ksM-^8W2Z z@|@or@phb_gPGrl`G4$G;{2#5F^6wz3--tS0XF8(>h;j+Y2+~{J?U)3>&0o*DcG;m z*qrU@Y1E1PemWcR>U8!1?c|>42AisA0NDe%z1AAY(LgrSU}?N4}Jz~ z`hoYeSkHz-y;#41^>bKXfqXAuP309!K3dUraa!m%)6)zo^(fNO?+t#2^@UjP#`@P- zKZ*5V{Mm_gAK)`wrGr-VUs( zyzgQ?nDV}YbX4Bgu_piS!kWta2G&&GH?gMj?#7zR8%VDkk&g7*hBfK+C9FxW+a&)$ z?ROp0kw2TUCV#rHCVxJUHTiQr*5uC(SP!OtS0EjgcQw{j-bVaUd7s9b%KHq~RNl2% z52n0Eq@(gK#hS`%#hS`%!M%CM&TEysE=<;_AmD(_sZ zsl3@(lYeutrt;=uP32*p7?fVqk&g5##G3S)fi>xcemN+ACLta9b1K&4&uLhbKc{0& z{+xj|`Ew@LgQ*{`w3+ho5EoP41gxpNiC9y4c+7?=FNF1A%F9MN@(+(?H09ypcc#1? ztf{=QSd)K8VNK&^RT3@(kH=@Vgqy)R_^greCNQO6Ct=JPCZ66iMN1Dp6n~9`V_?ev zc?tJ|DgIUoN3W=DsosExN|=XMgv%N?Ty#-g?aA_Bg7Pbx>prYfq*>8c-L|2XlcY+s zs=9FlO7PUlEuWcRsqnwBQq5kzV9w%Ya~Ddm3?IrrRl;8T6iPUt{ru{NMz?X0H(45g<0OkuXqb{>YM5|dp08zQ z#MPb|$Kp7a#4+q|#&FtgcZ6d;KURVYmMI zgP4D9ntu9`O_SJtFf4{+0jk=HZQ^10*sFy>WvU zubrAC91+{)5-vlS+UaTuH-ky%4he4p6W$b2qd+qci2?yF~ z5c6=pN#k#%WMw2aP;rrIpyHYS2J#KueBV@@?;8#IzR9@2*PsPqR4ZYe1jmgR_V$(D zI0|_{g{CZU&RS(JFmrSW&7Wbug|s1SQ{bf7{UciFvLp>Nz4`X=H+ zU&ku+b*w^P$0{s>YeOFA**JOfFZ4zLTD;8ql3Ao7DkVP~Bd-LmH&sDr>w_ECsBFsY1!KcM*m+K`Q5!)>iE<>2wM@SUkLJyXw#cQ7}5{|$|c$0)H zBu%%3{dFI3(k=4!x}uT<-%+%^4zW+lCmSvFjCNW)|DKX?L~PGWxC~+HKfjf5Gnk5c zMZ#YHc~!z*|9M-&JxEL2IP^&T!xF=X@{g0S*MCluu&@61;I*IrW7DMQKQ=z0{}dEp zkDXgyP=LcMJMYf$4c8gId3T1dU(N9KD?H{gp7&kNyBnqckj5-IxJX5d*FNL)`J9Bk_W7cOdytm4afgIsV9I}=guV88Si=7H8DQQ`Jn%)i z3HcKnhR;k2oHLUdzJWT!H}B5yjer@xd3UC-A!mlM-J#CAeVXs|Ild#t=MH22oS}Je0gkxaJzeK`byL?2#eq9GK z@7e>}RO7}gBe8k-yrjT6FPZ5ZA2WU9W2SF>%=FE>GkwiD^IgrmJEi`R#w_%pYg)Ya z$;6|6X^G%N`i+rr1(?!|m#|;I0q5PBzFs%8|9Q7U%EzY6LeGq*#q)3Wu^f(wZJ~tA z5T^c9CgEl<`G0|gH-V{)8VP&-r%A#+68{Ma#}KCcpOvuJe{Pg8KdZQUeO=@1hL$7) zJ2BqhbMRe+dDgK%e?reG%*Qpw-15SFT>7=MX0dOe7W-!0VqcFc_VuV@Uymv-N`G9h zsB24b6|yMUQ+I*Hco`lE`AE4GWd+lE*VyG6SHd>JDYg+#vJI~+vyFaF-K4I8G^#IpO;;9Ug7C#ZtWTB zu#wpr(^N*;plu7Xixw1)L*8Rd-tp<=O}5<+NO{yx&ZmE}(ES2(YOIJuK0CfoGz;AW z5cS#dJ*rtKeY20R6{hqwZ_z?&?qM_>^YLC`O5f+RzvW|kBMvQ8&JRi@<^FEnGf#B_Kv5M zxe-X2%#%Qp1VIAv1N+mTEN)@meB)F;kYoUVyp5rV+Pby)wzLfonV&VOVQo#*`qrk# zNv;`j6w^|-uC_K=6m`RONn+L|rl%*)FE5{$q?DGLfU)(mb&Zv^4Xw=yMK4=CZ|UqM zr7I?dG{(p(`TmN=3=NSRPa&H7p4@IUM#;qhD$#l9d~RmOs4~nW$I-^jlCZz=M9v&F zsw^{W)W8#hJ!$Vn#a>(7_E zQIR&#AN=|Ht>hTG(?k}ur$1ln#_V@{o+zo>BUSzSX~h1wH^lmRekN%=v%UC9FLX&b zUQS*+zV~mb8aM8>m%f+rg@wnTw=KMJ_Ok!n@>UKmVy5xl6#D`Y^|#kvJsbYec~GWW zfdBNmr%bxfPE9uS3;dsA=z08~Wa#&n4p@5I($SdgxV(Hz7l2MSc`pQUDeG-4-7!Ox zW2V|}ZI4@e6~uY}0ph&bn5K9eQ$d_}j~n^oE&9W*gtIvHu6ed7rShUJz@r z02dx3CPyoXHMj~ydS$8(OJA_`RZHImv449ly#Zoh-m&R&u#ez$c_8-XJZrne(v2X_ zdn<@N_?C_R8Hn?~Y;9RtUdd;IIByY%^G0nf-A%xGo2>0h5Nq%!(0Qi5;|}pOI1zM~ zv7KtE(9B(FwLWtP4SI@#p?noakBjeQz)iizECZHM7oYc8b-#CgvGu?LH7Y$J&C zUT1CJwDc5+^F9mWynnW_8mIZ3cPxmvHUY#MYz56SUVYQXK5FS@5SRRCo9>{EJp$vB zOFjm~C7%T1lDj|`n35j?O)>Oi5Wd_)5Bs^LUQ4f7dJDwm9gpuHna%~VFQp(ZWtEM+ z48*={wYK{$JqO~vFM>Gl0UMix?+`if=^);+SY(rgI|CyG4*{L#2Ore z1H75Wc7&w~mQJ%20r56IZs{5j`_gICeaXf?3}RpQTHEWECgKtn=ba2<4+=rNjdBp@ zU2kpITlyY|^ZpRTd7rkiuYox48`hSI?=V<{cF+t{-|IoVwR_0$U z^8Z*HeH+3hZveHMlD`IGb-x9|r7euI?^udidcxAnAogVh4lI~X1+gz@g1D4(Z0yHD z>`S|~-D>GaAkO<3i1X4*N4aEru_5O@5{CzDE3ou25a+D{ao)>p>=!|t_jYTeE9tDk zvE$6W(Te%R3sxc_)B4_G}R6 zU1e>TTly-9xBE>H=Y815J`du&FIn4u5Nl9{Rlf1yau9FrW=lIjT=K&<-7XvZB8W@= zgSEX1!XIjM;R(3Y*-$5l)%^k}Y;0e)wB6E!mUe^Kmp@xNVuI((I1ra|3W(Fq2eB_z z*7j*jcZ0Yd{{iB>F&n!N#ChMewi9rg!X?iIao$BB&iip2do_sjc39h15Nq%b=_Z(}hwDegJ z=e-`pdGD~XKL&B$$E|HIh&6~#Rw~!jw-UrH^GQp$fw<&5Y`PvB`xuBze$v{W198cv z5cFYF@}(eF_e!kJG`4FjZMAf}r5zyl9>`TppoOiyBT?@h=V%J$)JBT&dH3GkdL+og^TS%+L zBl&*m(W*>Ht6mVA1nGV)q}AIX+S+K9k;$ahL=d&sXmyg1R`WsB=A#vzjS*>852CR! zS~Uu3^;r+A+7EP(HuKk-7BQk(;%9uN2^~6Y4vvy?fpipgF;#zmBoAZ(dt+s zt>~<6hDlc}c_*w{WNq}6s%iLu=yq}3CkS;qDYA+6p3on>rq3u#5? zd1o8jBq6OLAl7uAkXE;WPyy7VTS%)BIJe@whX`pk1;pA<71C-Rh_#OjX|)c-+FvT9 z)%76O{zf6K?gO#*4+v?s2gKU%6++!Wto_?UTAhG1G}it@LR!rN6`6XRBc#=85Nls0 zq}3)6YrjQEt9wDL{ry5(Jq2Rze<_4E2eI~aj!2{x-S^AdPZ83p6vX;16w>M<5Nm&l zkXAnhp~0a2E+MVX#914c7Z%cLIf%8V^Fbo5T0pElof#5o^<@xi|5YKaz7JyUeUI!o|1}}4eh6aieRX^QO}hJpwE7t+*VvvE(&}%Z>BjaCA+5%Z^|U`uNUK5+YhNs+)hZBc|4|{WJ_Ta! zuMyJfYarJCE+MUAAlCk;LR$R}#M=KsNUOt-^t3-xNUH)6_xqVbTCD`J1|Jd9>Pir6 zf3=WS-vF`pbS6xs)z3k!{Zm3({RPC@zbd3v^eDbBX0%!?gt-{RzC0j=xfsOS?-kPO z0Eo5!yO37L9qnm9QAn$^KzXJ;&K1(?qoA;{eOw4*3zTnc8-=vG3shiicMECt7^u+L zelDcdA3&`ApM|u_9_ML4MhI;V;(lK&q!ry0#`V2WNUKkPSo=>2Y1Iv4?djZ^NUPl- z)_#wWRCxm?-h_&A$gs}x;?e7!P>X#ta{#hZdUI(%EZwP61^mtGE@j_b7 z0L?IUnx8qiE*TPuWPE>N+tZ5F~Y7l^gLS4gWTL9G4LLR!5EV(tG&NUIMW=V?D# zNUPZ(?)RlaT5SPg7YFUP3TgEgh<&DmQzFd8Al81G5XKCMwO=fx)ukZTeuI!!H-cFE zTZFWF0L0pVS4gY9AlAND2>Uz`YoBof6Y2(H?I#Oqbq=V=)MJj2R#hObN39U*3u5iJ z3TbsesMzGCvv(r2IjF?go)yySAZV7cy(NU>zX_i9Q-yFW0OEeXL`bVkK&*X}kXE}u z*rnsMTS%*1oNaSG@`bSf1+n(!LKrh3*1k={p~_p{U?aE|Dljp&x2U|-wL74 zL99Lfe4a?FlR>QgX+juVAl817kXCC!?DNG!7+WCLp3eNa5A6W4_B(|z&OxmGZ-lh^ zZxCz$ju4I~an8=#PZ7fY7j%}Om0xpz}jQTIEbO&su=(Xd$gG195$?6w+!Nh_$Dy3q)G&1hMvy z2x;{ah_!!3NUM=kJncsb;aC~O+MgnXb2Sia9~Hv68i;+N>k&jaR|B#3HwxkS0L0oq zAcW%s5Np3z2yG5x?dkFWkya;xSo@QOw3-WI?H35)90J7JHwtNW6Nt6nCZyFvAlCl- zLO6#2vGy+tVZJ&=sl!csOcm1V1`um-vyfH~gIN0?2w~m;vG%_eg3hOU+K&>#yaD2V zf0__<2C?>0A

f-tNUh&>6(q-zbFn8N}K@CdgtzHAM_Wvb>u{G7xev%M$ z2C?=FgtV#yvGxr@I9CI)_MaERxf+PIe^>}QgIN0)g|OcOvGy6KF=KnbT1cxO zfLNCw3*npu#M-|sggx}>p7xnSTAc>set)KrR*OKa{W2k~E(Y;7)(c@j2x9HG3Sq2* zSo?>Bw0aiA+P@&A)qjCl`!|KO8h?hT{RAPjIf(mxR0wkzh_zoQq}65+Yk$3vRy`or zeuogw&q1vHJ|V3#rg_?D328MM#M+-Kq}4`Hj?w;FA+3H7Vy*rtgljwyp0z(j2=fMr z`~4|G&>6(qFB8JN0pjv56@tzn)_$uH<_!>Q|9}v52C?=p2;mwJh_!!P2s*2s(qf-=8Xk zYdj#5d>=v~fPH`#!Z9WY6@_h@5RNfH*fea5g|LqYao!C=*!O_& zhjh0H;TRLd+J9FF$Cx12zE=oi6~x+SAUP3^F+r^TWFZ`5f>`@GLO8|*vG%n>Xmb#2 zzf}lx7>KohPzcAEAlCj_Asl0ZSo^nxFlWPI)_$rGjxj;3{SqM@V}e-wCLvt&03B&` z*(rp5530zTo-Cx*c_7w)sSxH3n{K^LcO!_kzeNc11_%;D`-g;}GYA!ctyc*11_(~T z_NEYYhR6uOHdzSgDInIqR0ukQSo>Nbtv&-{?XMHU*aETk4+ueL5NrRe5YFE~to<88 zS{;uKu=Xbk;hH&!wLeb?I)hmICLyi5K&<@@LR$5Kjxu%IFN9-OILtbi32D`6ZOzuU z1;lN%RR}tRSo?>BFmHfZ`xk_uGl;c+QwZ}0L}BeG2tj8MYhNm)RSgJ&pgk@Ug3cgR z0JiIdw7L_7!eQGkgncpyf3WQpg3ch;{tY3mj)j4>KS4;Vvq7wVLLT zkXE&zv1S|fLYRj@ImWhANUO|qyyKy4A+5?mhnsX2LO9+99cFCXgtU4YG{)Hagm6vk zT&fp+iiNbg7Nm`BlMudN03B*jWD)8AzZIRcsxEC=06h-C&d=ARA#BlQnRIvmbO~z zw$x)OW@(S5eR0b0wtK)5Im}+=SPEInvlOvZW~s_jv!#ue+93~@yvfowOWQ5&w6x0- zeKX2=`z#%_l%46tj<*y-qj8QrOA$+DmZ~hpEbXzh&(Z-))I~%gOCd{nmLitQELB;m zN9W^G+AVFew9V3XOFJ#?veav-&(c9l+30M%jcg1Frty}hS}L{_wNzoL-cq}zO_sJ< z+HR=_gOaxvv$V(3K1<%+ni;ALLz{C{S!%Yl(b85+-IjVR#VqZyw9nFkIAL<(t^xO9w4wV@Jlm&|^E9ax8@`G(pF2|mU=A3EbXzh&k`nnh3OdkDNK_>v_Cq**l3T7 zDHR_yxe%%*vE&Ek8i_Zrc@zS1-YFnVkcg#y852&sB{mO)i4U=bmWpjG4mZr6c%+J0 znrCC9Ao6jfT5PGz#+HLH?I5H6h^Ipl0l?+hPn+z>Sn0DAW|~Jyls|L%TV*M zQBo*F(XUrX1C$J+nxkY8)iOg(flE}Q43*nf*G_Fm3pT7qX54fN?x7}h7ODd+87gFI z%g^;a-?8K(^f!1FPg4rZ&8T$TQVGjUR5Whc2ulen9JhQ47P`|TZn+QlyRoDcs;5q!LlX6@|6V3gRtD`Z0k{2Nd34!&%i<> zEN*!PmPZ^5J$v}4jwK7pcRQAGRDdi>IY6D%XV0fsWUC%oHS3sQsr3a3AFW&qh0EC(FR8d&HK&$x#zu+S4-@6a{dgw?%ivW;>Q|z>?!wz6Z;A$3ksI&uxsCLoIWUWBC&-I~>cKlncjo@mw11aFb&> z9+n-B<#brwnpVP+hoixGIdrX|*s**XmWX4aUw}p(%hzEkb1XYxsc`Thl+l((R=A2Q1qi z3yqQ<$8sDjI~~jEu*4k8S+MMKEQ?{;<5)fhOP^!87?$ku{#slCOUSX%-O+`P=?P!E&u*c^sB)j^#O6dK}B2VA<uL~HXG+FapmcL>nV=qG+3gJ zr398*$FdNXtE?rrwxzD7?Xo&*FC4ny%q5dHkg$9Nxp<*tw#v1Qc+pB-t!KkoQd>)P zjVVR0t7KH*$PB~Ax74AGz*BfqKfNYN3_W@!iCLaJk|f4`c1mIb@8Kg!Vv=vmdst@!NdW@tgZC-(L}5Ci5_tz&8C=@Fz_yKjCRBs&aYx+{(H2bv2jZ zk&88#tg3ElRh5-1%9k%*SY9?8FV4YZfZg!SKzK%=1FV|8eBtali%VBju4}GzU(@Hk zJFmYSbEC7DE+|cvPu?gwZ{hrfOBa?eT(*=pvZAzn-pW$7wyCA^@|K3Sy2{qNODh{2 zS`#gm?duxaT>tS@UZ;L|GOruX4}=Q>;le<;sQ=n6TU1)+e+#BNdK~fmZ?Tk@`FZa? z9%L@>ZHj|TZr-9e$h6+u1qYYhYx(s2w{J@v_!P)Eh*k*X z7^otF7$S64bi3J*+o!+{}%2d(!bZqfBnw3AQqm2?8X-b!T}xdL}VvD zUOM1}@%Ujk9IRJhdw5fXlfE$R#`6Z2TTXF6-{OG&c!saDT|CFv4F~+h^L(9nyamGv z2wqbcGz8=i z=LP%@=LLib=LM7r=LMw64@iSoUAa{mL=*a}k~kBF^8%X)=LO^s=LPf*=LG}}hl5&# z16t$cp05jYB(GeJRB4}91t`d4$6VI)VYNQ)xi7U+yrx!4cvXH;C5bhwA#zQ5=WD!98afFOdqQ2>K8_NC@MdQh_W1VFF49 zVuQmkkUC*N2hs;eMX>(``%7M{^muEK8&Cc&TvvTj-JI&y GI`zNO$;S}@ literal 0 HcmV?d00001 diff --git a/x64/Debug/CChokeProblemsVariables.obj b/x64/Debug/CChokeProblemsVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..89be67fb648ff08084fd7c1ceda446550b704573 GIT binary patch literal 44400 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 SpuWIk63u6()xnIV(tiNFe&z50 literal 0 HcmV?d00001 diff --git a/x64/Debug/CCloseKellyCockLedNotificationVariables.obj b/x64/Debug/CCloseKellyCockLedNotificationVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..302fea824b2b5bbcd0e98ff3d518e1a1364e55c9 GIT binary patch literal 8965 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CCloseSafetyValveLedNotification.obj b/x64/Debug/CCloseSafetyValveLedNotification.obj new file mode 100644 index 0000000000000000000000000000000000000000..8089809918f331b6c163f5f99247936ef3d6a7ca GIT binary patch literal 8588 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CCloseSafetyValveLedNotificationVariables.obj b/x64/Debug/CCloseSafetyValveLedNotificationVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..0bfca2fd9fe7804c085c942374ed8c9dce6b60ad GIT binary patch literal 9971 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CCommon.obj b/x64/Debug/CCommon.obj new file mode 100644 index 0000000000000000000000000000000000000000..b342010e20211c1cce3c8b4104dee34fccda2d69 GIT binary patch literal 8476 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 Ndcl;}wRzdq;BV2VG3WpQ literal 0 HcmV?d00001 diff --git a/x64/Debug/CDataDisplayConsole.obj b/x64/Debug/CDataDisplayConsole.obj new file mode 100644 index 0000000000000000000000000000000000000000..185a45df5d446675ae3e64b7ba8d77d6163cda6c GIT binary patch literal 424206 zcmeF434B$>+5ZPb#S^T68}4z(4M|wUttKRwBqhnc-g^_!VkJO;Xh>ob6s-&HATCs` z;*M)^$F0RKZ?S5%eY@Dcw%XQz#cEq@wWY1Lwy$mfzj>Z#&Yg4ax%Zy9L_TjPALV|} z%sg}E%$YOK@660OXWk{l)z2?`Y3^%BZKW<6qUdj2fBTYtM*4TwQA%YImw0;%+WsB5 zT#cVSZeIJG#S8Y!n53&Zwoq%2R;oh{qo5^|m8w@Gr;h8L*Vf-=QYp3R0EFMYh1zBB ztthY#`BkZ^s&Pw#>2}{zsVU#%eH!a3HNI+GPcYpZNRs{07V6c*IKRImF{PW=+djAd z^mb$W$TrCDC&B!bH&Tu3?`@mwr&4P8r<8j0ms_YCj^O;Vlpo5+$E!E#Ps5+y3g)Me zx268Vw`SL0(YarF{qkY^)jzj>77{);Y}ohkSAXHgVf7cjH|)GW)~^`0-*dzE(}B;` z?#Gc=;D}K-%fD5>{LPJoSF~51^mI%8`ERY)5y*4Aih%kkS0olTEMMQS{AW~jv7pJI(;$t<~4*6JfE*g!VYaTawX z;i}nGv}$J4?moH35vyvp=T=h>^a^F0lqnnawdCmg{&)DA@2>mLKKDt3g472q}>gElPGk1E?vV+ zUFd=r#^rQKMg2z9?fJDuYhpOb`NhXEbzzdsS4XiC% z0~-cj0~?Fhz--#xX4M9&Fep*@D(KO%18W0I$fQsk*tGf8zzaodKw+q2fHg3jObXS& zQrg|%w}C?55yim)ZaG^Qx?pd(vUDv(`Gi$PYhonra`UMP8NA+9v?j`tsziH;s)?~= zR;W#^{)B2G$~Q*Sx!fjxwjvZJVSVks=+Q568 zQ4Pp&?1rK>Fb0!51FV5^GAUF8D`|I|M;nl#*d@Bag?qw**TA}>H87TTw|UgSuF@0Y zj;U}BH0s!aT?JV(Dbxnme?m1-NFkYV=c2W+v2-m&>4Hr~YhpI-a`4+ip_-6Bp&lbD zh1gETZpOw zbkaDuEtlv57wj1y7LVErdl z15vYaQUj}t*1!v;YaqC`%Ac=%xoAbCXs??`Q^3fkZVKZe84EXsSvq!LO<^9H6lw|^ zHlrHA1c#%@T1>Z z{?)ZQxRVcm0T;fyUJmZ+qwNX9SJz0~_kJSXZv98UG`N$G^Q^54?&{+`Ynujh zXJfJ2<|A$*`Dbc&a3>%BOy%!l)knRH!k6$1!Cig4jbZriANlzyd}LLFxw9pMxwEx{ zxwDOfxwG;;2C;$69L$}q9L$|PKbSjHSm5^&ce;fy>M4V{v!0KBXZd~on&3`84tKKQ zPZBT#0{}19B zs0K9zlS@j~95pM|+kFb2b?uwgnrUd7mFZZtxU;Rlqr0o7ySKe^){@B+XVvOwb!XMo z;z``vj=rAGwlizGyZX92+sAd!IYrGLy3;7+s9sRN-g;}bX)FEj5Y^Dt-`+VkeNg$d z?p{12+g0udOrBU?)4iytqqDuYyr#3Qudicn`TXwQ^0uCy&W^dX>%Q{d#a&$;T?@*) z1BQo|x3>58p={-q<0~u19Wkz=eCpzk&Ut#XvSNJ2ktdI*KTpj)V_wN)Q*#&1Q-?Qn zcFfU7S$=p|cW3v4?()OwQQf2FFYfFtKRh|F{O~i{db^J5!146X$FshD<%ciop0~KO z{is~klpl_YKph5xrp?PGIDKx#5##af@tpF*>4D)nZF5g8KYZ@O_PM7XHK%)V*F5CP zTYdc$g+lcmHBXnIe_?NXn~tA1XMqky!t%q9@9gH9I<&K+>(oQ}EH3D6TU0&`_1ZV9 zsbg+$cVGAX{_@t2zQt{w<(dA)^E$d`>3W)#(1+5~+tJrPtF>lUw!6C%1{q+*#Bmew zU&WCVCd``C(KV~SyRUyH&Og=8@rx!;RDHd3OIGWwn#{ts-kw>B(-wF1ENbsU%R+PM z@9pkPwRN>)Ur`Nd{*mJqsz*gsnQo@kZu{|@QgzgBDG>i0kN>C3|CJb#l)swV>TGpw zLnhT&eL_vLIg@NmoV=*#ppyy0JRl)R>$>`(2;6KNIjNHEPsqY@{*6)I6kB?V`3FRc#_wAfr73QK@7) zn`&uFrP7H^rX`(Fd*wyfRA(BR>-+@4thIf8GC935SzU`V+I!VeGZGDT_1R?e)P}6u z0kM^SnWna!cw!MGc9l(Ls~cw|8XGxMR}JQd<*#YlvxyXIhhuElmlw4YlruY+ZFjb7L}-;ppJLBMPtgklS~4O+#&6b*46vP1Ix?lFhmd z!4sH9t)@>v%i#Qj$Ig-5L^wWp0DSC?4b8~EDa9#5O_o|xbc}9JQMm@&6sHKDxV(nN ziS*^0J9gb^=;}4iLf345tbb~D4V)TdoXa@Z8<}RCN;Xh?**Rc2BRSPX=T3-eFKh(4SYM<0eos~)yoZ@TBa->^a~E`Xgz%(@Z8`tUHF(}+$Zx)DTlt@h|& zHD?t)hapsvvK_gBtGLCpe z9F1ttnh$IYG4AZUQ-)3%ia#_<&2;O|O|$CZ5`Q8wxR6ap<*$lyD-d;yqCd9+(XBwl z;v*VibSn_$qHrq^t<`&O1){VHo{*&l<+A*jlvYrRn}scAC8J*07t~@#Fp+Uw4U{){ zR(t}s*aE&_X?)e_uR!EE=2Fk6Oc{taq(dE;I1H9DP-kx3(9JI6;T3)91T~;jhj_Tg ztw1#0wdsmYv(WuUuECgC|HdJ|&(vMLQ-@9+h8FZYb?DR~Kj!iu`h3dX7&pum88uZ>JQUQglj@^iaegs8fngDY_?_^~ypw!|Z05bzfjKiF=Y+-YJuR zPaOYAW*$e}7g{k}L@OTkLA2rr7*C8L)ty>&YSF1hrxxuOD&>a%@<$HcxMHwVbx*Bm z{ovkvg9n^)Z?(~`nidzhr&iokE9QPX;>l+HPQ(MD6%QGQwCOzjzC&KLuKSIgpfa&;#iDy3j(Z=D zdmoN|^}bVzp{HwfC&?Y8d80PZLsw&LF&!FPw6)@~1Ja86h5P2q0dZcNXr!XPLynM& zx$K;lbYEw2UuQ9T2#Old0N#FF<#|H9ZM=jJwJUobmEDjF-Kb`9v4R^hQA?Z3A};n z#n_*Jbh^>$MyDH{ZgjfQ=|-m;`LojQ`_I!Y;SoLb{nQ9+-6Lf^qZ(_Nlc_|yI@^$JZc5fB)FFZXqC^3l&U8A{ z=}f0Hoz8SRGvGJe?6#ZTrdRE_QA%7F)#M@cKlUeN^v7O4{JR~a)h) z(_`zzngQxW|7op(3B}S+e>tV-l%i9LPANL2=#-*UicTpyrD#jRk69`5dwTZ3-1YIH zxoi8Gnc4wrMd`@mDMj=8?>%wx7kfI)=|ra!olbN*(dk5|6P-?UI??IGLDz{pLnk&D z(TRyzIx*OE&(_eQ2_B`q1e^rw^Szbo$WgL#Gde zV<%1@>aY7m3rP2losZ}pJEint-2n9AgpW=inyj2Ybo$WgL#Gd&K6Luf=|iUv-3;>} z&M?OrKdc{sKAiZ`=|hv1(}zwUI(_K$q0@&>A3A;L^r6#-gRBonVg2Fs(E3CBndXLA z`mi-St)V$VpRnE z2yNI@L>qo4rZ%ieR;M!`L>&fS?TA+*S~)p===7n}hfW_ledzR|(}zwUI(@iV=tKJ* zH`8P4L+fdxc%z5r(G;x@bD#BwKD2Uj`q1e^rw^Szbo$Wg!?2r3C1)hkQZ0vuBWn|_ z4fHLqEF?uH(U_>wANG>e#XL^2(Tc+JT#>KeFw3JNBhA|S$Vl^GW@M!M`m_7`^NhiG za+${ukHq-l$)WK>TOT&Y)Q3f{$bl)wfnDuRLplxVG^EpzPD45k8J3AoLl%FxuzULr zeY{UsLvDyl-%@0&o2T22XJ4eqy`VnM_MM zK@Y#@PMeOdsm?Ss*ZB!TrvwS=lga6g$?94a{JOTbosnp$tIsBzr#58O4uN(xwdKSU z6X}VOp%WrQDh~|?A~U$|YHddz+Ph!x!9t;~YZEDmz~HX3 zNnAWL5{-=&YD$#R=()<{(~I`jC9YGX-zh^G$q(J z)Vdq8b=3{cjmb=gql5d7D7@Z7Zr{~44YhUEnc75_hg5VKg0-4Pt)@>v%i#QjCy*n# ziEw=I0QlG&u?{(#Xi9O4P?M#W6dj|RQ&g_OHpMA|CoZpHaUy;B=8oNT$EI26n$3^( zn?`Ub$r$G{&b0{BY*WbwYA-tn8r6*CR1=}EpGuPQ`k$J{7X5M#-PUt~=(Q4An9y0t z1?!e+O|0kx3r5;~t8Npc{oQEOqMpo7;C~J)cwX%!Xw|gH{D8bN(3O#D;_^nZ9fabM`gY!SVf9FShL?-2(k z7h~LXI<@F#pWW;;d4B7@%nZr6u|?KI=+4Zfl2ePggUAhyI<=@&$7i9%XZpt_}DeLrN^qiT~i%u_6@8R?!SA*YCSdU8um551U)b)S%T=Zek zizgJ(i^s>+i_wc&;z>sHY;@cuGEOx*)#y~CQ;qi0Sf?7<0ped<6h?YCJApsA2U%!BJJ_~N)MoIE z%ihq9nUHR@-@%=Zs~e3BH_N2sDMs@y?$Vu>(~3?jI<4rmqSK1vWZly)ER-SQ?1zBd z(=OJGvow{EcXcz;y5*ShL%Z>~5k^xp!5L|Or%u%RMO!Oo2C5bPd)9%8#ozi1yU%nZi*%Xjf1sR-zVFRF8||KrcJtAp_q1po9aM{Y z{o-C2S4@Y-747#gW(TSjrJIVU6wTVjlK03?Cpw+zbRs!GrxTq{bUKkP1(t&Lz>phN zbfb#8Y50SNc;3w#T+O}0$xq;PVl17w3v^<#h)!&Ys}t?3HJ(T`s}+mCRLm(vrx2Y& zB)8}kqEm=YA=0IQf84w?y&%>aRL;#SThhpSCO#MMPyD$jq1}_v=7NfN5}N0oOTCA? zHLgYsyh(QS$o2l7!|*9JYSd~38i^QM0F1ZhSy?%S=oF$;h;#`#h3FKbQ;5c!IECmG zBFQ_gawCQa-56rJNk0M;d??GGPo@WFf*&dIP*TLTISKJ)EMyq~rz(odgWLAJzVr--nfe^uEM0%p=!_G@!lSaAq70h?{r* z2vt1wXGRALe96j*LMIBHD0HIGi9#m|0|P*AT+odRx^Y2#PdN0Q;g3=j>Ss{4h9;a= zL=&D6M-$4|N(ZJ0BR_cR^q|v&P7gXg==7k|gH8|fOB5@lDY!vG{Yi8;Ncgc05^6oT z8}#63LV9o!!jHuN3-JGmCG}t(4G)^n+G|bN1H0(IU9pC+3Q>9iZ1a$y<<5cQ#AokK zmQEu&jp#HYT~KZ99nBl<@&m-F!@w0I>Vtq0>y)ju` zYgAovp}1FADCV2npB4?rI?3oHqmztIGP+?!H>~J}72U9+e39LHK-CQ^28P={%4ud= zd$=DoV^e5c@k}@*J+9b?|7XR~jON8b=KEL0h8Fh-E5@L4{_`~1>gMU3u~UmqEjqR6 z)S^?1PAxjM=+vT9i?$r3M~?OT0CR6GvZFublPY=+T7RcG71D}x5w5l3N&5eRXhnYQ zcA^&RD2vI(a*>PrDJ+_aHgeIo*Qzl0j81;NcKE5TP^cvAza8s%>gS6qm z3LU5)Da@q|)vaDRlZ(ti>DSu6J+ybf-h+igUDqa3(1pQWg`SDmRg-Ha<}u1fv_E}< zgE4;7($8Mz%BPJYCU%1dL7yPcrjyeXHOZFdY$6?MVYnn)(#<$E({MrZZB3|XtyzEn zp{Gc>$IrAT8(W$Zk+(z**}Ce6=Eh_u!_oTgId=dNh1Yw?9ej07Lv3AkrZ$mH)MOiy z&ANJmwVF<5tJ5c-WpMt%W9LY2A{-w)06zA{hGyj7l;RYjCQB_TIz~6As9b|>ic#yF|BA>^?Qv37ckXCR7TppNU*}UEuk=(385smwFX{DXeZ2 zxx;o}QxPrg-ja=Jdh?LF)JgF2wc_175SyplFKrG!q;I;CP;CZZ8xT%J@-0~5;UrqZ zh2%&BI}0)ncBPxqcbcQ-rET5#xq;|L(?1uNjb>h2cXR>Sm@~I~K~vKv){Qi}kw!Pt zh-(L54S?cn%mfsz6OB|ex^iR)!tOV6+RDWGdfth~+|7tBJmJ`;Hz%hm_f8yXSddyZ z$?9|_LDdp;?1-C&TPTVN-3IUt;zUtzk&zRMMOGGzbdS4Cck|NJm3_P;jr`v1<1p6P z8X9Y~*D{_QM>7_@@h>*wctCi9xF&NA5T+DY6vWaxVqZXDA3 z_DOBJp%IH$>a@^E;Wv|L#4?#=T3X)0SXW``w7h8(dO@?KJur|qyzHjrFk{ICPCizD z_|LP@^D%ouKTa>AAKT*S$EH+n@ltW!xLa5^+NPm-04r0c6P-?UI??GwrxV4&xYZ3RaZWs)s2`*-H~7USsUvh^&NQqOb1_aQI-TfrqSJ{^Cpw)N z7=m&-(dk5|69+*jmYR>A8%HNbJxE!6TrqDxIx36c#7I;Mryreubo$ZhN2ed1esucL zy@AKQfd?u{zsY0Jo{Jfe`RL<|%tz0Qr61`n9`=hmimS)H!?V))Z~7?pCJ?6_opN-_ z(J4o#9G!A>%F!uDryK`QIqG*e9thpoTtqjv$JdSi+uw?d#yz7&qi z(aA?AADw)3^3lmhCm)@Bbnh~lx(cLwcue=m%q9r68};J46csw

%?@(bR1gJxed!pLMbMW-rEmh$4LiDFN9wmCM(s)!S41f>5+E`2F6 zIO_+oZ1j+M=ldZ6rR@YHb;Nd$Vk+$arhwGrj#2OWw%0tK5=%d}@+Y}VuXQx$fEPv>oOrY~k2OT-#H0HjwVqXgPz!w@Q)^y-oH^F_ zs7t-Su``Z#oQ4lkX0qwz^h8avr8%2Omw2i=@BNMW83b2Y<;OeW=!Byaj!rl_;pl{; z6OQho823=j;5`(h=cbRt^VF?Ho~K?EM>pz4*b#GP#g{i85Pqh*KrX?x@C6b%8R=xC zlaWqFIvMF?q?3_OMmiZecrudS%d zj1!7ZC_16&grXCQPAEE|=!BvZii0T><9u7NCyq{}dFdI6#>U!23hunPRLuLfV8}Z7 zE|5^96O2wUI>G1!qZ5oyFgn5L1fvs-gD4oaUfdCL(Dk7?X#4%%r^V5WQycK+)Y3|E zOnCL8Z?_|^ef`Qt{_}&KI&|vLsYALbB9;of*D#t6!@TaoOi<{4Bma#V{z{kN%bJa` zdGCYW6V)e^(;Ji3wW(wSJ=(W(pr4wNoN6Mr4~UnV#+GbNz0$o}r75Gr>wywkm?(Wi zoD0^Av#l3N>lc&I`f zv}o1fi%Im(^a%(h(k~_n9uQT8&e1$DxleQwtI21=mFAw1)(?qVO(FOC9633m)0~U< z8$$2}CDt?6rX9G~Fs7TNHvbb}uS4_BrSxHM9DQiI(GnwxdHT?|3+h8Z*y%&351l@A z`p}IYy3xa+hIIPS=|g=BrZsNv?!(;b(QV2Mdby&O$q@;XGZN8vIVOvu_g&#c|2JR1 zNcym{#J8pU;^@N+zVcFQcjA>Llw#id7b9{AzC|Z5fpX%}iAN_Mop`kSo!l5;ZfM1H z=5BB?I0)hf7j?^U9|@!nCmK2A1{a&B+XME&A#&4|nA-Xe9$eIO&j&#}CX38H_s7wW z!B4@K5{`R?r=Y{;!PSbvSSK0lon&;9(Md)p8QpkeVBE;Pv0J(EMmOGAr=JzE*U#9C z89(eByZJfj?VuT_714}~<7mdFR7ED$RAP*Ar?6BME4|bww^mUC-C&|qhE5qeW$2Wl zQ-)3%y60Hjb1b&>qxtWTPZ{d5#8SHO^mw|k@&oBYvI^@$3Us>A=|ZOqoi22`(CI>_ z3!N@>x^R$nVX5a=&WNK6)7fk?eSAxz#E4d>h}rw*Mu zbn4Kl!$DMsJfA!Q^T~-K^T|u%>BDr%>Es>5)5+*XGvjE&8Oc5fw-NO^gzEIS*yF@ER9p$8= zlZs9%I;rTSqLYeFDmtm?q~c&oMf#4)XlTW{kXD=vk8~vdKMDVz6GtmfZ8`D8M7pAc zOx#&yqW`tn2T@W^8&dD?v|&1t$+V;s?i+eW5i9!>c`~x-w4u|6xi1e}E4Ny+ z=Bsc{8#-`3sBsZtrEnA8|qICJ8jrts=;YP@gZj3 zm_D=@e9)tSHar;X4U?huhW0be=f}~8sbo6K4>2d3r#6&&JY}!&<0<*(_FYdn)~!Qy z>k!>sGhOg*JkgCOy75G#3n2?r){u}JPqfw<%H4z0j7~GET?2#4zAlWf8B0CSd_i2z zSf5NzZ%kI#mKapbd!AWKLfZMTRr=ny8>+wI|)9p3IJ3cNzVp zPV}?g6`@Dd1Fw=S{L=CK&(#D&^al;2K6$-k;1JW|C}+3Mz6duT`n_wJ7{2ZOP|p*EpcEe3Z*5@|-Fv5_Nn)dUy$oA;sU z6C8};3no#k^eX0D`SgO@!lv2f)YP*wBppn^L)hx2l+0Qgn=NPEolA+Z3k= zp18b*#fjXKM)c|KaTgg_a?{gJH9FOZ8n9on2p{!frl%(c{AW#Vb+)>;A(LvXKA|Sr zoJlq&PF~b=vL5LR2)fB}t%5zj8Xwor7ZMZVTG+bo5E$h~pbH!nzoc=Z8bIO+14&#t zki-@7swN;M506tdzC}Z`Ixvob{!U`7gj$at6f4Ip#E8$)(uKbgWP>ftfB?`2fkB@)%5c^3AWWfuH-qhhsyL#pKeyMjr=RL zB2FtdyULZWWXEm#u~f35Ih#nUadGxDBRSQi*L`@U)^_w)pmVBeY|)Re1aAWhq{ZYz zB8wd;-L6aKtox+;WV%^yH1r9HWn+(N>npb835mFun*zI%^=sStFFA_USZzya#p%tc zlVjr^AN9AXrc9y{qYX*(51lK~> z#M)hnS1#zwt@P2hVr8b^_F`S3xDTvJR;M!wI-T))xz_A74C|0VylaAe*+jV}24XYe z1K3o40GkT2(SE3OgUr1qOw8h4KRGl1!i(jct$THI-A#?t9BR{O^jNo{d*Kv*Ll;nW zoII@7FP9HpPIBCzj*~@LBUnvTAAZSJZJfvlwWGd+U-zcZQ|$fOU2?3B$`sVRLry9w zR<|6sr3K-!npN0R-^RzgJ8s~?XWCV)D?cR`dKa<8s6D(uyNPuZZd>VH#p=j(HIO)= z{luyO-$d`^9q5JO_+d%``O4%5*GR+}YOO(cM+k z-P>L{t0uFst+!`Z;n z`*lpam&EQDV)y?d?4r)!3u5;oe)akLNld%%h~4+a?gugLz9n|w7Q5$S+I>yzzA1L= zW7<6~cI(9M$(VKzirph(_h?MJd&KTOvAaK}-ECrbr`X*U({7d6-7I#u#I*Z@*nLs# zu8V1Rnb=(^c2~u;yHM;d6}x3I?amgvrDAt}gk9A2w^;1X#IL??&x&ccNbF7%yS@m! zsOxCH*qwr3eI1<|)9z%kn=5wnV%p6RyU&W}v6=>t$L@yD4IKjM#lT!Y=CgD#UIQe)aK9j8H*p-Rhh?sUt?1qWm zmJxPQ=kM=B*x&vWzxw?B3%_yv?VrT%U9tOHgk4m-epBq;#;wEKnFy()Ga#BK`mFn>cup%VB5q-zHM4}SHxzJ7w=SMd8%O#7$B{&}(g zuGoJs!hV~G{jU@IZ;1Uj@%uXV|5Sv1RQVqi`$xt8as2A?e>tZ89b*3_vAIi!;;`lEY`!C?P4duQDzi;68i!trb7yC=Zewo-`7GWP%f2WK6=kZJ5 zdc&`-zw=_+pDOk}V&5zF{W0xli+#J;FA)2VnD#AVf1=pW68q1^wEv9QC&m7FvCqV` zKThmx#eSOD*T=MXiPr#J>|I@ENiHE`Ig#|2KX+@%w%J{vN+S#BZE>coONfANeo*>U`GY zSJ&gWV%k3>_K%7E6Jr0BnD%#y{Ti{qPwXEM`zn;h{OuM|57&wP&0>EGeou$NZTNi` zzqjL8*FzQlH-Az2EJr$B4_Dz=*TYKu>U^%oug>RM{Kl!zbCFKxb0L0pJ{RLx*XN}X z_EGJsPwbcASGTLP@T>cUvt!yX6nkhCvhNoA(_-2;iv96opB4MonD$j-pAh?cvHwg= z`%1CL^-JYHTI`RFX}`bNA0qbS#2({TdFL;x{&yDpJ;c6T?DvUjk4G5k{Erm-?Ztja zu}6OXAL^L?bhF+e$4jM|t8xi5KR5>Z)8l@c&GvpB-6zlOUqbh1I>Ai+kM*}q*x2Ek zp}#8pi*l-4X^ZW2ntNqC+uPAo-PzW=sImKuW0l!Ub-He9W3p!Y$>Wue6>18Ez5W|N z#FU=z7j@W1{g3qrpF@A9Jn&icSA~Cdc@CFteH=Q?QL^oqr@mvs!iWM@<_a_cW_e}W zLI>h+iR8yyO0AJ?Q=TVfy9x<(d7x?O&y)umnf}u4{nI+T&nQww6LTe+RJc6Dx#~Dm z{EK^C`ZMMEjBHmSRF@|$+on9Y*QYy+fndqamK+ooLC$#xYI=yKgE+ooLi$#%G0h3d;{-4$rw1?y|02ghxZBwpV*$$U0b4Ex1+^CMA!fNIfxpuyd^iAgUEtPz+OZr&H!*bSX@It(AOrnEu-!+ooLa$aWRtbh+M_ZBwq{ zTO$yErd;*iyC4W=CF}h&*Gvzx%wyO}P%Xge?oAOPU?QC~{TW1DS zb*Hx1bT97eZ|_aF_qF#Iu0rcFs63)@ds`;?W7qVzPPX;Wc>MpeY*&GG`8LS5Dc@VN zUEABy+1b&xK%d_p{ASuaQIXw+FNsR)lBhf~uMSPS8@mm5YW>ZWZBxEZ*{(twUA}(V zHsxC?+j?O_uB)Bi)jcOdL`<-*hY7jsAxhV*mwZjpHp#Xr*Om~2`mYNA>vC-?+ooK* z$hK83-PINba5vC;kTP543JSo{W<(Vnl zrabdxTgo$`V0k85ZG2*`jfd-Jwd7|?^@41h@@$Z8Q=W~oZOZeGY)g427A}v~v?u2G z_2zty-`13be`m|KDbFI=Hsx6?+on9{%Qo8ew2rR!0@v9@t3^-Lvc~V1Odnv%vtIJ! z(kQh_woQ5dE!(C%TYrjEn(}Nf+bB;>cUx~?!4g@`d7{;ihs%?a{7iY4%C;%bRkCf$ zbG>Yv^4uxgC{Iz>H_>X&6D{o?Za*6&KU1EO+cBB)RLHg|&ylii%9D_7l&7}+^bT6X zqJ0bd6*%aE4Qi6rz$a-b@1H|cMjd9(<1*Qg4%2_@WZRVUdD*T)obH!ikZn`WS7aOI zEG_{jS?zpM;dVYo@5K76mu*v?lV!UKX*4d7ZBw2;+14vyNg-Imp)bPaO|n}2B&!cM zb!F;lt>kNpwn4T{x&A8KrdQnpRGR>`(0*Ilx$%azhvxs-01WL*H0a{amSd8S+&Bwtgmk)xSRxek$SQ?3cJ zZOV0=Z0mCAs=`CYC5txMYWb5Z^6N~Oz?5&PMF5m$JIKpb`N96kXu)kJ2nUe7D zc-c1PIZC!od8W#?DNnO(Qy)Jg@^0n`t8E`K3A-_4TBdK;dp7N8rR1l>^xt~fHsyI< zwyO}QyY?4k+mz=O*{{x$hB!x78zDmV=xGB|BaPxQx3CjMx>2hDr7f1 zWM{UG9q%JiW$agm>{o~E&9<>OcF%|GUJlur?XaC1V;?2zRJP4=n(eUNl#pG0$j)qs z?Rr9XOG9>MJ8ZWmWVbG4XSTz38$x!QLUv|5Y&T|?V7-i$ZBs91J8YK<+072wneDLM zvXI@Xke%5M+pQ1Ty%4f9+hM!+LUzOP?jrqXj?Zj|?Z!(wPK|Meke%5M+bs;)EeY9~ z?XcbIkloslo!JiCy&SUJ7_u|lVY`vLnIq%ha@jWZVz$F}^&z{NAv?1jwp$vqTN$!5 z+hMzPA-m^8c4j+lw<%(+t4k+N-$&uoY7riAS3Lw066Y}XUATN<)6+hMykA-i=UJF^|O+Yqwb6tXkh zVY@Nqfof4>W!uz?*$&&KLUyx5c4phy)wTDhx_kTeEpMu~y{~U^Z@ZGPnzlX+;QOJ< zgx7a>pW4{nHqUI&Xvctcf3j<8M?a;Ry7;WK+IuHjJi+2hi*av?ePL)&vRK?7*ly^e zc>Pii9j@QGp?}l#N)1#Gakjhnw8d0rc_RjeH>K!}7sSEi;QeR%+q&kZI(pj8;UQS( zXCE7mhs3=O56XQ`OSej>H~m1mPNTPZt{VZeZH>CfAP3vht-L*pgJ5lg>HEdKU8oVg zsGzQG@q%{Q7hc9dt1!&Ic=)@owYziiqIO9LdrWWFwRLngcK7vhAi@fjAw1P(jw6jJ zrrtC4JJfRf=P<5o6Pzn=BSuoQ?TdPH<=}H+Z_{fAI75^vcusQZ^3IFdnLZAgD%Wk* zl+}d!m1Ctdrn;Qwyr#N4^qd*hwSEHMY$}Xh@GT4K8*FZ;H0PargavO$*@oIfZu*z< z(P2nV#pB!jTv`)uh9&gA?DSZ1qlc&cd?JT`ke#v1AGXTH(eYSAZN`Setp?I(@(T=O zNAG`6QBY%3$vP`Qh z&E-}&WH0&9)fN9?_o;$MaA=;~6cV*9z-ApRxF5E6rOL_$G^o$-w&}SdFoGKjAYGK3;e(_!x`pg|%(g z;@K8=TD-*Ki!5Gg@y)_>k>?sK{Beud3+u9dPk1i)Wh>1a7H_inec`!CKU~&?YTiLu zA4|E#hgv+v;#!N%npbT*%L-p;algf8O{`9TxfQ<3;=3$fE3C`;b&H?3_(h912*PgPH|l{nxnYk8n-CFJ z84*?y2(xeKqazx+0^zvB4{YO3Kd?=A{GkxO7YzjRO=l=b-**Org0&Ysn!MZ3V02{7 znqh*#PJ;K0fhf97yd>d)lIR3h>+TDt2#lMAql&Fy3#Tnq(e^sQ zu#Fi~35ExTR-&S0ge59U23n$`WV|I9l^b4(I@7t>=o6ibk2=rA$6^BIu+C5ZkW3(D zxFaf1?dDP}5uF>R3GBpJTcb6R@kOo@lZ8p5E3jxDsKG$I8NJCfG!bC~dnhN*$c_vf z>Y~!co@eF9u*tmk`E83k`#U@49JNo!{JHd=v3<%9vx5<*V|v>c&6^h$r8U!{h?qtB z>6hvLY3XMq^j~ux++(`ter7w%Gatyh&^XE#sl= z0_pV08#XkTa0I@;WB!m|r~x3eT$Yq<1irUp{zB=)Sxfp{Wg@-RDk<+RrMThaGU@z0 zO~Mh@$|^bj&~tXfMx)GI;uv)`Am7{yo{02T{%kM;A38FB5$U=6(-rswy^C}8F6gg7 zxvZ{%jJ8@ORwMA0A@gVLC)d*iljArd)8{%aN}ns!2$h?eM*fBS!#ulkQ!HvX#hy#D zO-HD`ZM))~Iv?AW`0*<+bbJu6y43Q7vYs!|Ho4P^`j8cA*eg<6>GdhiH?Xg-VEX7& zIzo-Ik4K(!5a(zgxTK0sFMc+5dU4sY)62w4Wct8$hx#!pLMP5uWT>A&y4<9WoiaaN zbkiH5_6gKm@yVt9f`{udAiVOEqaEZ{qUrMrEt@y_Wt)Zi13$eriDoB9{(=601TpUN zf{V2S7JT?4%!(guO1UD%Y}hp1uC0kic-N?Q9q8Y5`LH|RPv;qguQMxs>eGT^N;xx&hHJSM99IuKEjjL?+tx<*l)y9*#6T>$30!5_PwFc58I%V zhW2Z8qTFoiWUHy%cKbwr(f6&nVj|yMzlrn__raWagv#|FNXH8==#I5Oy#5wnAU?1k z9;*o4zngq=x(EBoTaaLiZnrBxomtFa5>dSc_8azl7?9w)v#$f>mw#uW^TbIDoiFH; zz(Nd3rO#Jjzv3_Kg&evS+=Fz%dd&^e@Tm`#i|fr^IO3NpP;Yr7MW#wZ?L%L`(Z`Cm zuK#R(sn0vo=e12v7d#H63$)G9`3hdwrf{^s-1Ut8nNc@C#RwIMHzOogd`=g^KCk^( zO3Kjn6m0h<5tS#`Z|LKv1xNngbp3?lb-NG52g-|&|Ik7vKg9@I3ao387Y6A?PktoA zMksl*p5rlO%CVtv46T~*;CV2Mt{S>beC~chACHMoF7BrUBUJ9mU0wgQ$g9HdhESe} zc+{74Q_=AgO2kjJ;{*Mx9wfKMv)>z$>t6%Mq02D@xgP<)q(Qn?q6`cI-PE} zX1$oC!aX4Bzgg|LhSMpi5|kgZA8!FUygmcnz%N{4LPq zl=IL0*uVLN*Mv*XdxALKI1uNY0L>-aMn7x@h|8>}ogSmu*ZtTbI2CML4w^%;V?mrw zPabh>5;T`$Tm7&$5a;|;(4!RlwjW!D2^zLN7{obOf;in&KlTI==RDgFI~Bw^ZvZ_) zIseU%-4Pct=R6U_IUfV!bd7%OToC7ciXXNZ#5w;Cw3c!ng4axNetY@!X%Oc;4aDhM z{n$ky&bi+YI}gM;zXN)haxO!A=9~}msUE~Rr$C%;wjX;2h;u&I4_gl6oc{sRZF-m* zg^rSQKHR5f5a*l)ak@Ev?3p0WS-;kSZC8Le=l4MmQqDusB{AvOF6b%kVQNRv4~Y&1 zvF&Gk>HzV6yFqMwjvsq1i1({spTM^FfOx+;Yoiv3{6-u>tS54#c+YK3xRj z{ayy*Tvqw94}*BWU-rYE0`Yz;M<{ha9Z>^_b6()nB_PiEazEXTe(WP4&Uu|5_B4od zp17@2_fgK%L7a1kPs>1@^Ob(OoBi0wK%Dbe{jg_2obzNjqkAdmCJ^U*s!x}JIOmmq zx?BC&CqSI@*Zr{PK%DcG?J#joIoE++CHfqQ_i?sQH-UH`w}aT?VL$fUAl}FK{jiro zypN`lN_~lPo(JNbFYxJh5a)capYBON_5~2<{E{E`D-h>A12;wYP|jT-&iQhm?gw$s zkNN4I_G5nz;+$Xe!`=dM&L_cr-c338gE;4_eR>4MIe*1Zryu?0bgzIo=hywPKY%#r zli?`uqMT0$vBkAMJqF^OpY+o`=g0mM#5w=k58DLdoZBE>@1&gd=_?@4`5S(^|Mp{l1>&6F^uyi(an9|K z_qS8dXM;HB8-02b#5sS{PxpO4_6-o{{Chv_uOQC(RNTO?rkpPTanAa2M5b?oIOpg5 zbT9d_e*kgL@A_eSK!kH%47!bSz8u8)-RIMHK%DcB{B*DRvG0L6=YRWQ-YzER&x3BI zoUaCP&TD=8A&7JS35e6Z?#KQE#5oVa!(%5Zg0#j~#}GT{!155a+xTh;zOaw2E@R z)sOwUPrm?h&ae6D{^-YURc>F_*^hnEr@w$W=fC^uw%*U=yeDWb z+3xR$jR$egw}Y;s*mZvFPknk9#5w=3pKhD|P0r;Y&iOz;tP;dI-wE1hh_2_a`mrzj z^fwUaJo*5W-$5YGZ@eFNG>G$i0CY8#^l3l#HJ|X!U&(JP5U1M##Ap8y5a(R!haC&z zoF4*xfpUJIM8=!YE#;+(Gqt)!gq^JAazV}~3>FDgb2 z?F^E33S!$X(3NC+x*xmJrE88Y)xjp0deG$*I}^nFnCr(r2wFk0Py4Yy z@MCv9M5)Utc07n}j|Or1E(I;8*jxPAHGb?npk);69cpZM1hH)!=u(P3!;ihdkNpAY z5{iApkNu+`d-P%SI%d?`@gOeMED+~>59lJY{jwkXlpk9*j$Y{u+r2?-dnkx)mw+xH z+bjLp8~oT`gU+YexBb|y4>!4t25~O4KualIryqNUANv&OJc@nEkNuS&J8ryE=TdAf zh|8A*an3h^&Y{>x{MfJiv0GKp>!opQJAv4CZxGvdfId&QXZo=h`LRC$okg*4__2TV zV~?&>>P(6~9>h7%0&&i3Kuak0zx>$m_^~@qQ0fedJp{zI`n54^djaTlie2T$-s#8w z5ww_Mx14BfM}pXP7O0^ErO(cR+m<`>G%NJ3m&xAEuXL8$oP41H?Js2|A5p zpY&s&@nc6$R;q_$4*;<(-c%~K=YYB?_8LF-RzLQ4pe~A4M;O~O5bw7Iw1{Hc{n#Eq zb{(jbVxRY8|HqHrZ3;e4M6ri}q@F>X^SPi?DE3M}_69%pbx;Sz{@srqcBHXQffiEi zd=Te+njiZO&;pA6A3ye&e(b?VDK(#Bt3W3ZO$TwQ-WaNAU3Zz%uNuaG7=P3YpYb0? zg69c&>KRZQg*`9isaHWd=Q8!Wkf;6y(q$=ALx(YWYA=v3eVN)<$Wupw^zoLdPYZc! zCP>#%87)879$d(ekkOrUxRdODpPL?dFpQ<-Tund{|b3(n=QG;mZ@!pJhcZ%xA8Kyw~(hMg8C^; zzkXMfry4+uDXdAzQ=bE!PGNI|JoS0d85DM&kf&|}Eupa6ggo^q=u8UxvXG~~1JXT6 z8NFUtlc#=zu+LN2?}R+1hrG|Guwg=;+6|=pwKBDrkf*9Zx+g4CwL)kcAl-MOZ3ubl ze9%$~yI2Ti2I-!ff^MX+F9~_-+n}2$?7Kpq`W@(I3j2eQr?y73yoJKb zggi9~bSs4&Ddef+LAOy@i;$-lfmT!4X+oa56m&akkoo&w!TVb2PA z>X)FqDC}24p88+V-4yn3AzU+MJj#S?M#xjgg1$uQs)cZ!gVs>k93fAw0NqPrR|$FQ zE1>%*>}x`v+5ozr!rl<_)Q}N8wppgO6!O$Qpa&`40YaXt1wBMz^+KNN06k1$i-bI- zM>N+`*h(Q!Jp_7$!X6bu{{niH!oDx$snuyP@s570sis}_Qv0d-K= zEFn*w4myRx&JsesfKH__J$|amQ+I$mDeN90PptzjqA)#@s>xG70CiE=kA*z-CWw8{ z+d`h&Vmsq|wifc#jv)3uy9jyeK#*2TW$F+iPaO?n-*cQ0`WF!Uo>n1GEda6aIaLVt z3}WB2RLD~|fY|rkBIKzjLF{|JA>`3ZJK6WVh%il_`Ynik&+mmiHEg8uJ;Q}OwI_&u z&ptw)IugXb=U5?JGa&XobA-_6fY|rwQDRM=x(&3H>g7%$lo`an=Nm$v`UQx6&#OY7 z`Ui-8kAA(TCS22_jPKb?2yF<&zNcEqQzwGh_k2#sQ)huLrLvqWHkDFilc&A}`T~XBFXXAOgRZ8q^+KNd9}xSVmxSPFKg|`Ve^IHlR*zt*a{&} z-3MArVGjv;>U*F^C``W=Q4{(X(4!Ql$MiM95AJMy&z3^)GoZ&Q-F`xz`ZVYX3Y#i~ z>lehn=W{}6SD-B^ot_WSg#LMq$!}{RPwfq2-?P6E>Hx&Pr&h>QZ6NkN?Ls&oAoe{= zg>dfzV&8MC5bj+-?0X&;f|dfY@A<9}^fQQk&jum%8=x*aj=u_dYTI3m?-?Zop91Qk zbcYC`U4c%cuw#WhH67GTVM!rRoeb)uu(?9;p`d;WJ4*=H2WT;cT_xnH)u7WU>@FeP z8-UKBu&0DP_5VOiDC{*MPrU;=lfv|?|1^23Y**uZwiEKySP z5%Sb=po=KK8X>eH(8UziE(AXaV&8Lt5bg~??0fDI^3-||`<`cnJoR%B`<`D4p-w^U zd)^cB)K0q_-?OU_^akj1D$8*~o;m@Sq@Q`dsn_vkqr_C1e+*!Sq! z8}>c_4PxK(Lm_Bj(ABixH-vD14!VZI{#VFTJM3Y6&ln+3Rf4`q=_U)IZwFmRVKao# zc0t!u*jYljM+B{+u$zTYr=S}s>=_}9AAoM8us4O^XZAF{XM~Wa4h7vz>GbR7G+|r- zbPI(w33=)a(5)2qc_B|-17hEEy^yCK2Cb%aj|oAegV^_cUkGCWAoe}K6GFeXm+?JY z3!(1>vG3VW2-*j9H|?WZ2-ggVeNUT^r_KYh@3~M2*ExuN&s{>E`aXz#&yR#~KMi8v z^G_k%&y*YAbAXViYC!CJ>V!Ns55&G_p^&F80kQA7OvqFBgV^^xECh`XV&C&)A?O#7 z_Bdtg9U=5DdmG=goe(qw=rKxnkPz;-Kw_j&so-?NpFr^bNT_vqO)O`e(n>ZbA?A>^qh5c{6vh2T>_?0e=4 zdFnI}`<}%@p1K&+NBJ!mg6{^g?^!M6sYgKUd!7)24+XLB`K}P|VL|MBek+9QV?X12 z^emqCLY~?c#J)$*=dtgp0G&l;nIzevG2K12!0TBCE4B~%tpFr$;-WBqc znaM0u-hu3eFy;%ohVt862;J-Gj=XXNro5mX7vz?Hq#({34vQ!G;-U`INr&S2|Ga&XoeL|kP1#~Of-Y$gu zY0zyH_6;H2FMw84*w2JK^+(X{6!sS(PmMUp_@0qMo;nD0C#5?~$WzlmcTw19ggiAD zbT@@95W+PBx`)Cp6~g@%=t~rKuMn9N+u8^nx0=k#N{w9R`nS+h**;mL@dcO94 zO4lfaaWfG6o<%~Qx(vj==Sm?@Jpg)$Y}X2T>PH~k#96^sKM; zLY}Gs>ARgWHAx719K^mSDdeeBKxH02L8nmIFNNTLL8nsK zJ3_by4>P{U6T(;@Xc46=7lPIUvG18I1U~~}-=k-$HDNpq#J=ZLAzYUr_C4na;ob$r zzUL|-j5mSU_uMIj@f;BQp05gFo(aUh=Z8Yju^{$6ZwO%=6U4q}$T%kSFCf0}(KF=i zdnSU|_e>E&I{>loNeaQwfY|qR3gLbR#J=YeAzbGm_C2=?VT=OAzUSLQp86Gtea~-% z;AajuzDLi!FQq!&19U!}kG+L(KLcXlQzL|NJrMhzIYQ{iLF{`j6ha#UT}=7iErdQ1 zbP0uhO9*52pi3$2S3(|rX>S>Y4I9s12z~~%oWk}L!dwUFG76g_gt-pT3JN<>2y=3v z%PH(UA&ixRuAs16gfI>ax{|{5iU3WRKLTAvVJ{2e{v5QD!u~3Re!Rl?p6!I7$3cAG zv!9Ts@J$Z!Jx2>+tPjM#XQq&+dO_@aP8Y&G1c-gl^+IU7Aoe|96@qUBvF~|B2z6R% ze9tf;XbTYE_Z%dIz7xd0r%}jLognr-Jwlk@06T+M(h<(pIAy1tHV&8MV5Uv>z`<~l{ zJoQZw`<|zTaGitL_q-v5@t29l_ly$4SPSSrD&Mg}xL*L>Phsir1M~!i-6MqS7sS5jTS918llfx}WonoZ?&&~WmW4v-BS7qXE);^+ z1F`S9LkQ;s#J=ZgA@~^(`<`D4dFnmTDOA4qg-|a?7~eBm$W!})Iw{>)A!t3&A`1Jo zkf&0hE(*&EdFoV9H-&Wz;ob$*Lt)E>Jas+jGzz;(2xGLMUJ83q2xDZRJ_>tE2>lDF zpTb@i!o2}#F@?P?gt1)E=@d3}3KQl!Kxa_cUP2h-0WG1hVQP}m7V@H3!mDeQD1Ppt%f zk;1MO!o4`?ItqJ22yGX1J%zn22cN*!OG{f=@oq_?~Tr zFa`=*OZy!!gz*v(_xEWb^e-UxJ&T0k2SMz6E){~G0kQA7M+jqDpeJY_&j{iA1+nkh zAcT8}Dn(Bhm#K0gjCp{#d@F>|7lYXMJSc=Q84&xP?+Kyb1+njWTL^RD)yDS>7sA*k z=oF>z=?)M=9|1a*!j2I_y@1&Fq=n!cLF{`L3Sr(E#J=ZTAy0h~#J=YSA&eJ;*!Mgp zgn3gC`<`copt(TodtMU4{2PdU&+moM)<2;^s|TG!VQ&g~ z%BwNH=TkzSIv8{wr5h&%Jp@`xVM!sB8FW5{bqJvifi9r16+)i62XrBY-6!O!=RoXx z{#yub2*keUZ6VzM)*9dA2|?R}*!LVP1nmuC-_s}rJqcppGhYaG3S!^0R0vuMw1Uca zhY;qsK&h5};W z^FtxbLx9-#Y!ZTQZ!o@Rv=HVTKo3)XM+o8G9>jh7i9(pG1hMZqTL}FNh<(rXLY{gM z#J=YdA*@pXvF~|72x}Wb?0fzogzNV+#`kzaXjdSQ%GW4__5$KEuM_grOQ89b?iWJP zNT3B2_75Sf3z}|x&u&5(4+C{jy2(PgPXV1mVOb&QCeW!Ac8U=C2oU?8r9z&%8pOWm zIw785eJ-Y}&M}XM( zj2H4$HHdvrLI~#^#J=Z5Ay4&z*!P?vgmVsJ-*deX+9Zg5&qG4+mmu~%&kA7-3dFwW zS3bpzGr(O%yodSq;!=+p85>v zDhg{Bf=>al@97jmKLldmbFq-8t^={}xlst$K8StKBSO#?Aoe{!5c1SU5c{6DgrI>_ z#`kP1gtiM}-!onaS`Wm&CoP0J1+nirO9=M{Aoe}C31M6X#J=ZSLKwFNvG4hf5c~{? zea{xhGkNMT5c{4AA*@LNvF~XTg3bZ0raJ8qf=>pq@3~M2J{iQmXSERKk3j5uz9EGB zRS^50p9^7r2E@MSZ$h|c(#H4fEQIxrpf6EbjugUm4q8KDCko+y0dy~gT`B|(47!iP z9uvZNC+L0(dqoIq5^>p%FQ7*$>{%h`7tmuA_Noxpu7cS2{7VRP?^)w}b{E3+3u+_VDMA=$0F_bL z5+Sq~5Ff{Hgy7>_jPEHEg6;&d?>Sfqb48$ql;3nA=uQy(p7}z!zXY-Gxkw1t8|YNB zy-^5rXrN9CTPuWnPS7F>`?e6y8>oxIUJ*hY0(Dc^--K|_-fDc$C?U-Ifli}z`wC&M z4b)3vlZ0@e0_vl%1|d9S0_vx**+N*S09s68i-j;A20ER>E)&8t5+L?HUlM}91hMaV zP6%U`Aoe}K6hfZ}V&C(w5VX$><9kL6L5G3Z_Z%vO@e&Z<_tXiYPXw{==@i18A&7m? z?#J=ZEA>9AYG`?rJ5ata)?0XIpLK^~IO#7HFgnL~O z`<{hDxQ;;VdzJ~|Is&opxlagV03h}~&j_JTLF{{eDTFaR5c?keXq+aDF@o6l>@S45 zEYKBHz8WFSWr5iD%n`!9IOr-$cdiiDk%3lH*v+DLH!k!Sq_&w-q3j3}QbQ9p5d1HQeb3K@(7%A#_q;2FdCAWi-?N<%#zsJoQ(49d z;eH161cfyU;ra!!?^!5>c`MKeO1DM`y6$9iY}*T=F9z{_&mIKBU=jTGW=LE6u*(8LuZ?lc>*-8lW_8|5> zdkf*79n_<=zdc$A`U=Fpr%4EF_d)D?P8P!Y91#1SJ|VO<5c{6XgrEsQ?0aq#!gv_y zbfx$ExDeJ}g3h3@9|?KtZO{@5`;!p*Y@D<+DQvh9#v?#yQP^HWxOV}4p2Ch1!n_9P zYzk`?!gvYj911&42=|hpb1CdPAv}KxI*-D>EQGO0&{7I}NeE>IoljwZ5<(lAV|>r{ zLbx{o@qJIFkf)L$_B|OPv?0*Nl;2_@JQo9E-*dGPo{0mo?|D=R&+UNN_q-^CF#r(z zo<9hoPUjlmGh7H-3dFwWU?Ge#f-a}BB!w^*4r1T4NC-%}=p`A`u1p0Pq$R}cCk*-jI}+AR?Ko&`c^ zyCC*GmkD9~0JMs19}q&Fg4p-GD1`e}(2bPt??Ui-?Z)@)E(ARex|z~d31N*o=oSh) zNeE-Kpj#V5Oh1}Axd|n5ay^r?0dc`gs~A2`<`D3 zdDLOE?-_=!TNC;h(4&;!UP8Ff13gAzM+#x=0mQy%rV!>JLF{`@7sB-mLg#?~?`k2m zE6}zS_M#BRq~R#|ct0(Kz8J*Ed$JJLgMd(($nSh1-0OmHPzYNsggJT;GDp}`Lby)> z;Xj1EB82t=Vt@1xA*_`|0Q;knLYON8b&~A?Lg;rvizw_EA&eh@x+p9ygnk3W{%Da9 z?ukL{k1iF0z5=m7xHlo09^ zbQy(Zg>W5#R#4dKLRgyux}3sp62cfG=n4vZQV3&=AofQu3&E#=*dM(kg!@%AQuarq zg)n~(Vt;gq5c+Wt`=cr$^i7~^XumUr@JuU+{ZYRVu6+>uqpO8*zW`!?^q3IZE{Ofn zPld297sUSPJt5R7E+Y0v>MIn)b1s5bmcz?2ir-f=>pqKbj_l=PN+$kLC(toFBygXsHm^ zoPgLL-6Di*26PYY_Zvdc5uh(o*sDUg&OvJ^Om``oa6bdOm%qD~lpg)6a$dQaK4bhDi&e%*l=tA^%DtGvk7w2 zI(BSj9i5yWj$Kq4Uy&b}W8bShBPDN=V?V8|Es?*JW52JQYvg~9J&~IyfE&oY&{J*7SGtc+PH?b)<)&!)6z&&nK|(w;9?<_47ZTwK{BLTS$rE1xx@wCA^# zH2^Oz?Ri>d4Uf{EWh?VWnmzt*YgS$}r9GQg_83yyb5Lb&Kxxm}m1n(__S{f8hbZlN zurhb?Mx{OTRptSd_AFib3@2>2vrL^ahmG_j=o;@pLDLQ2Q-R4x*!YS>!wz7so zhmK!&U!~J@*f=(~AKw$QR!@hIV=u0Zo9GMU*qbZQ&*_M9>_e63p>*Upwnb(9M@Nlg zpR0Usn~omGPO9tyr!S6U->S?P=$LWruFAPf$Btu9oL*1JJ~ujU99yFDp3;}bv3FPY zl~UTXO{IC1_8eK6PgC0SwQAPP&6M{1r1BXAN_*yVT0bFUGfI12R2h%cobg)TSeZ{# z+Vg?Rx)h~7+gA2_Q`&QAWsQ;2o^vbf%9Qq8SGi^=?fGprYv#!=wzTJ|mFt|+o@FXy z213ogE1zGbOUALUR-Qr9rQ_I-D$gM4vT^L8%Ju7pllIJ4*`G)Y zj9<4#<+A{k_vMPp^+svWeUs9uvP};M7 zWh_r=&w-WejnbZzD)V1TdoHc4Q&ZY=bEO}Y_WZu`8FET{{#BVLyXmGqPp_=&QQEV3 z<+&QAJu6o3&*Y}AJ!@8;5s(|HW1pyeo`l@89NVih4}!>Cl3WCi z-BkHpAUPQw`$IKrgu)5n*gUgSA#-fznYoL_& z{9k3BLTS$qm3tzkJ%?82tCaSfTA6QA+H-kj?m}tL?Unf!r9F>V#zWrtwCA~%bC=Sd z6)VrrDeYOe@}AO{#(TAQWsQuEAIHwBj790o_enZo9DAfP9`|EDaU7e!(iA#r z9D8G>$#n8K_Mysp7|j{SwyUh+(JABDA(e3sojQ)4T^UEvY2(J*!l%b4q(YQQ31xY0u%6z5A4V>^Cc)eW0}G{>nZmCw4zIm+Vk|vvqegK zURF8pDeZY<sRhCl=kdhx&Kkxb82OdNVCV! z_j{GsOm58jaaZN~B{x3D{#Tg?xUstdIriep=Y_}x?%3NZ=McI09NVZePa!9~V|!M{ zAmjvf?4-(Po5=~_*wvNih~$lP?2gKNN?w>_k5`_Ri;Vxrv4twn49Wi-dsAh-gwmdm zR@UVy?b)TW=Z?~zqbt`rr9Br{_MTJPb7Q5`l=j?H*-t}h&)+JaA@V}fp667awNcu$ zd}VGxY0n2L=Pso^J5|0Lh|-?pD(@+!Jy%!uo>SWMo66YM8<6(QSD8Cg+OuqB9}lHH z@2czrrLM0 z^(yNslpY;a8E;T}bav(3pv}hbcSEJ|wD~x8e`Ov;Ta06KyTqQ5@35jR$FYSgYnJrs zaqLx<_kgw<$5yS3;b`k|Y~9MUZQ5oW+p#h(p>4;p!z-VIr0vGBQz~obwEZ}CNo9Uc zpBcxltE_EOdi1Nx+BKy|k5#T!H;wdYzRJ&+(xaDF*48OKTCMW)p!8_H%KivSk3Lfw z=TLg|g~~burAOyh#)Om}U0az)QF`=;%3dKiwe)CK<#`3o9`C^`DzBN+qtz;FbCe!! zTDfK@J=(uArl$1htjak=>Cp|9`wOK<4^+lsZm{Xmyp<+XdbD(<$&?m9aN@5srPca_*A)~u|3QF^p(rOA{Y9bH)qr}XHe%JURTkM6FlQBZpHugbmx zFJ#Vm&CjdsCwTJrcioxUS(~a(xV?%=A4usJyO{h z(F2w9%8Bvp@#~hZtmRVP(<3YQVoG~1seFGOr9HP+?z@!sJXZO9qZ2Ldc}8W7L}|~m zm3suGJ#VkPFO>Ftr1D)ul=f_0+1pKN&%TxQAxe8ruB>HH+H-kjEJ|t5jg|2|r9F35 z_I=T3#(VW>>Y>@beaS6REJ9mla3RmP{Z(>S(#Wv>**dHrnY8UyQCXy%D~?58X5DWyI8SH@D5_MBZA$5PsJQ{@>I9Xj*G@AqJ(({6rg z&#cON38g(tRmM$}_N-bNXH(jz_F_; zpD834kYm5BJWmk?C!=Fet&Gjc3E) z|2g)>%G{LFo{KB%_muYBT)Ac_?fGNna~=M}+$Wz^xy~u=S-vu6pmWBbyFq2Wgwmcv zD$f!q?YXq_ESl1upH{wCgT69;zrR+-?Ot%&vv6fjM`_PnDr?u2_H0;L2cfiQ@5=p! z(w-A5d&(*8`Fdp?n9`oxE9(q&*?4`ASFT@g-bUltGb_*cX~A)9?aCO5{Ljzmo0WSp zZ8DDCRTIpj{;zV6ptR@HmG_0xp1mt;1+>-p z{f?{b?WVNng39=r(w-YC&$1}(xv#SBNNLYsD&KGB1WJ3JQd#?_wC4qtbB)rT)*fi~IJQ^iHPh$Du`gB5A=-N!`(|Z5jP@DF z?x>7yY2R_|UzKynMY-QN_M*x&7TSLtTd6YFr31#Xbu04#I&d7@y|T}o4jRXfsl2Cj z@Hlp1Wh_N$&#jfUFG_pS_KdlKr9BH&&Rt4-mapsyq_pRQmG_j=p4}^J z1(f!jQfVHgJ=ave6Nb{B-&LM#xN)XEPp-`UDD7FHGB%^MXRXTIh31T(+m@B*l9cxB zS6M@*wCB{y-c=F~_qA_V*7V5@+_5_=Yh>i6>DWIi*Nhvxo1A0MudLCM8-`RYo`Ro@tp&YxcG7lv`FvosXSKAq0Ppz)hex}&Bw6~E9)Dy z#W=QSWqwXuj$=nx){N-W4*oM=NWa-q3BwvH2_a zI@)d=dr{@PnrQoR?A4X^SW0`|QMv!o4&&FYTbTz?+Oth%UPfupzLo2j(wp7J6 ze5dkUoYJ13SH@wK_WZH3f6a-J_B^dJ_NKIFsmj=q(wV_u{nWE}fv<+-zq==0;)qLuL^9XgJ^rE<@q!^W}o zDr0Xtd>q@Q(n0#dICf0sxdt6Ej(xRqAEzV7v1=;x1v+XR`(uXbc z7OH#?3mr3l-5V@XTg{r8`Nq_q zc`DDlDfhp{E7uIAJ*!mqaZ}o}apgLvv}fPS8Y87W7gfgcl=j?JSwp^jYR|ltXV#SV zysWYwOKHyE|)4@*Ysy^RmjHL21wG zmDW<)vuWiXL21w4mFIMn_ROj5N20XnYn8Q4N_&1-*{?!r&#x=jAf-KjudH`|YiiGe zmGhp`o>x|$fm7P^w#w(wX#4TLyub2Y7WA2M>{FF%m3A1%cCV~A(T?NT5tX$O+G!j+ zv+^vTb{@yRSGi}?F5}pJm3t!XI*$FbGT*;)YR|JO&&FuC@#|hyIZtW#acqssHA8!h zV;fi2y(#TEu(Ae4Y0ue}dk)PW|LqNx*Gy^8eU-7wRa1MOTp6oS+OuS(GnDqMRyl_# z?b)<)O;g&lZ{^&jwCD87eicf4zF&D3Lut=FmG_j=o_|(8L;3BgJuj@>b13aurLu-X zY0n0gu@t2}dsfzeeiNNLYQ zm3!xRr}jLxGB%^r$A7z2WsFH_&pRsD45d9ASLR!k_Uu==&MECVv$D^e(w?7G<};M` z{I7B!|K8M|r7L?iDD8Pyr8AWFY*G1a6{S6&uQZR+o{K7-p|t0=${HS}J%6p-U#^+j z^Q_9VUben!hw){!Xf zd1qy;Oli+1mGuKkdk(0~e<|%bwK8|1wCC!|+=bGf+bib~r9BT-#?O@Y%>DhydMBkl z3s>gxw9WXttx$PJN@>rUm3s-LJsVW^cT(E3UFBS(v}eD{+6bjRCscmsl=fUyxqd0_ z`F`b|O=-`4mHj!C_B`pj$o+-Vo<%CpSLw6k@AjI?^HoZF-d8yfDDBy-@_7T=WBj-K zR60X@j$>z6{v93KYaF}2vTvPck7K{Dyk`2`IQFFLBWv}v_c->_%CipIXB=C#(sSB( z9Q#z|9HRZku>&fdq5a3P(<|pL9WahvQ@Ll;f#cW%m30A1duDEkyr-1*EK>PA4rSi+ z=E^f+N_#e{tUFTLvsdMwO=-_bmFI7i_FPe!Z&BLw^UD03(w;{vW8fc5?U}bSKc}?k zMU}M-I(qzlSE@WCrL^ZGmGxapdv>jyyOj2vP?;lA+H+OqJ*Bkgfy(;9jZ=H(uZ(@@ z%j31Ys`9Le(w=oH>jISaY*Tr@Kxxm3m1nb*_FP_h{y}rbpYhYm7@bZT$NpGZ1Nh<8 zo~KnlmrAFNU-$CL_?b>0$5yX&hRztrHm+PVbmlm=Pi0R6oi&b~QMu0P>~ZY-mFJgq z&N%j1Wj=k=)Sg8v<3u`d{JJ$N-|s``k7Jux*3IZEF?K!>jjDVgu{*3!8 zExUR8xxKqG7Nt$buiLb;CPSN!WBXUuWN5Q-?5xUXUupAk?7Nk*C~Yy0-Bal=Z8?tp zwQ>&qcxunnD*F>@tMTiWsEqY!>v3$w%3f32W*qxKWgk3kJC1EtxtCDdvsY#ALTS$t zm2-{Ko--<+?W45kTa}+Vr9HP)u3t)f9;n>2DeZaEEs-@SN_$>XxxY}_vr=VVMrqIc zE6)-r?b*6=9#GnIU}f(Xr9G!rIzwsC^_8`HN_&1+89UxOwdbjo*Gy^8ODgjjN_$qT z>=&i9=aZG5Q`)m%7em5U##+;(!t}{ zN|kjpI%FJMuksmB`usTdxyl|EI&>U6xpL2@!^W|zD$lp*@Nw*p%KV(ZFpmAbGRC}Z zYR|JO<8eB2{JNzoYkhRoIQEvxx)~ikj;&i+>!Y-1m&zQ1(w;9>&Rt4-zEyeVKxxmf zD(~q}r}oTS83R-1J+G*YeJJgDUuDk(r9InM)`BSQIlS^21WJ3Zto-{6l=l3h@@$so zjKA++D$lZRpW3rPWiJz*I)2@zvY_2P*3?KbzXKU}dd^&K=o>STTMi-4=_xj5Hg)Sb)-d}mvMwg6ZTUI(qmyTlxSH`h)**JD~ z<@%+x=bCEP%*-!lW)>d5Zk|fZDC3ANDq~Sfdk(0~FDdOgv+|6J(w^%oYh;x6{JJt0 zrLsz++T#eG6w^zn`l=gh2vQLoGp3hYF3DUOX_dB$5FQM(m zv6Cxv7utRtyQp%m(Pzf7Yb(zxX@_y_&dSf6b{xkZtz5sqoZ2&Q<(^GDk6-ta%6y-8 z8OPpHxxdh^rF4anmzuEmseghr9JPc%x5U=`BY`zO=-`*m7Y`Db4KMHqO|9_N@pnTxxaGm-Ziyn zp2|I&4jiv5DD7Ff@}APc^OF3Wp4@{H;(PF$BwK# z-=Y)8v9DI1f6z(e*j<%p{&ey<_K(Uwk9(%}Jh$>}mU6#(b>(|6DeZZ0We!1U&*qi! zGo?NIS2{y!&uNuwhSHwzRi2Ae+Vh*rb$;*Eo_Q+}Bq2eNo!;f0g?Sr9InK z_U2LAb4aCwl=hrk8OKuEbA9FdrH#g)dw*pO{=S)+=Z|AcRysp-#<2q`*C3@mr&QL> zDDAnrvKNBVo_j0%;VA9-cV*4v{;55SRQAkL+Ou5c8l<#m^~(5^(w_Ay<10#gwy$)C z(w;*rV`@r!&Z=COl=fU+*>_E8&yAJOAW+(KcV(_dY0qCP>k+@1+B1J;>`gn3_jIw! zIF{0$w^Z&gl=iG&`FuR3Jv&s+14?@isdR>R8-K>xl{qKvK8}62a-Gv2QaN`i?fGk^jlZATvvB1-r7w;5e&x#8g3_K(RqmaX_8eGQ3!=2= z{K_*!N_%do>?fqO=Wmty!XKvgELiCb%^9!d)s^`SoidKSt1_RVQ^&DQD)SjSZ5-RD z^4ytDAIIiY=3sQjICf>_nxQktvAZhIZ0M|U?0=Q({K2U`i&fV7>74QF)~u|7(z)Z< zu9asKbly02YNdIU_I$5$AE&hE{z~&6n%XmOWo}Ae9lzfzDsxjxd)`<1To$E0+g9!` zl=d7_87ETOb4F!8Lut=7mAM9`J-@D8zm)d;w{l)RJTtS%czr8Z{tU`^QQ9-tqmj-~+VkSdzHmBVyq33C?%8zUIJRMBZa@c(W1p?Or*!Z*c64R03mr0! zeXX*$j6Oe({jxG1r$fiFe^l<-f1cX2aAk~1hmT+P+RF0}`ocK2PGv2Fju^+btb7Lv z9XXE8u6$=9r9H=1J`+M|&!v^U;*|E>T6yL`Y0qPobN8{SJquOVuIae(=dM_JPbux$ zu(DQ4Y0rL@u@9v^XIIvODDC-S<(VO+J-@GfX7ur?JC$oR{>nI(E*r<@{#)ewrL^b8 zmGg>TFn-;Jl|O?r2D!E}7NxZ3-paZer9Cr$kL*vRv}f_kGh9l0-dq`rQrfd_rN5N+ zY+E^pDDBz5@{E+yo)ao#J=%KwJua?%E|9hv$8M_Zv!rduvENqiCA8f*_K(WknlHV+Ho9vPvw24oyM^ZEB9>Lc^uoL^30WX8OKhn++S$d zaqQB{yo}PG8!PK(l=l3tavo6HGxt9u&#Wo!c~PY^lzGqFEBhiT?fFDy>`1f6YuTsr znknr$u`-{bwCCHEbty`FepTr?r9J!36Pwjbr<(^H4jrV26%4cOL?fGD3eokr6 z_LVUvr9FpK#^ZG4`2FToKHEn}jbmT0>|3Iv$FbWg-#JBJ9LN4#nM3?%YR`g|bC-@C zzwY&wwQD+V9Q#P+J*6*=W3wycQ#yVeJEJo8p)ZeP*H_kp=!9|Xp~^GE|4!|BYGn^N zoiu*k8!FFhDed_{WuF4g8NY6u$}Zh+Vi5yGaEWCICVU^FiQQC81<^Dox&yAHeMoN2rQ|aJbbG1G5 zRK~HC_AF7kektvFYvsJ67mmNj?8^L?P8`SnR@t{S_grnyODp@9DD7FbG8d<`=TntG zgVLVamGu`&drqp{4=C-qw6eBIY0nQT=L@Ah_f*yoDDC-cWxexBbG1Fss?13!?RiCI z?TgZ$w^YVgwEcJw)~by8Dec*~GNz`q=d+b(sg(8{UfJhCY0v4Exg@1M->Ed7(w=)O z>p8URcrAagJYSt>uC`}^%Cj-rZTz}rE9WHbK8~$k*}Fx1jAI*B8c%zUWBXUGU)pON zJF_xxq}k)xb(PmlY0tftYlhOECp|fGPEy*lL}d++(w=uz&LP@w{28CB?9->TXYa}y z1*JWwR@MM0?YXAXJW6|hRe4V-?fH9U9eCck+MY!!_ZLcg-d35fQszDDSLWiB_UvAH z?m}tLah16hr9EG(>=CB4=jO_IlG2|0D;=b?=UGzcdls%Vh0>naSH54Fjv4Ri zhb!kUr9GdmjO!@vIid2NQrdG(W$r?0&+jYyg65m6?Ri>d9i7si5t?)vTGF z>7?=ccB{SN7&n<~?gv z)~YD&*`#v)Qrfe3<-DR7ji2Q;l|9x^o6eVID(?Yh-t*4NpFwHQCY5JJl=d7@xkpgi zb82O-OKH#5m2oGfJ-1iJO_cULR2j=t+B5glBiA6MJquUn?6l4JyRA?;?Z&aRAODebwwa?hdJB(_B>FT zpHtd1^UTP5N@>p`mH9bk-t*?lJ%`esjVjNwDDBy+GM1vW=cLLWYf5{rsO+((wCCrQ zy(yITJX%@5f7aBVc`IXYN_$>ZS-YmpdseE z^~xBN(w>bg*9@gS`&8zBl=hraxy~u= z`F>@+lhU5YDr+duncA~xp7J6yr;4+jnbYiD$o5W?K!Y={ZiU=&gymsP&^gVLTKSHAay(w;}ESvGr5?U|=?kD# zQrh#C%5x1$dwy711EsX*ca^5RU~132mHQB-J&RVJ6;b9rudQ7Bl=i%*GPa7x?K!J*?o!(GgUVQs(w>JZ@97Jt_B^NZeejfd&l@XyfGF)*ud?PrY0vCR zXDIDCv9iWPY0r(7^>Ipjep?ymP}=jP7e$&(Y0rx)O{UCyR;tYXDDC-hWzPwvJv&rB zUqNZl5tVC((w>Vd`!^`<`AOwEr?lts${O;Er}ivf83WU~rvnlQQUuErK(WyO4RK|pK(ReMZR_-s9_H0lYzfjtbylG2_-EBhTO?K!tHH=wlVno1if?YX8v@}5%WJ#Vjk-j8yR*t9Ypr?ltb%J(c%+H*mrGnDq+Sb643Y0p0@`>9_x zwdc8&aSqKHKi}6>noMcWdn!$)v}d!*x&@^@`&HItDD645@~o25o^MyK8A^NZuI!1S zv}dlRBiA{lJxf&9@9CWJn%Am~fhq0Ttui;DwCD87vv*2+uC2^NDeZZn@_C4tPwknn z@*OUe_PnyPpNlf@S-UbOq_k)I%Ke4Xo=R zBKtCEvGKmFTsdDT=h_98##7q!lghZ0(w;w8o@u^fYR`g|aVMocud3|7r!B^x``*g+ zMrqF{DxZ_1v}c#f^D;_%4y*j!DD64Dat=}2^XHcESbQQ6Z*Y0ra|^;k-K{!^K! zEIYO5S(Wd>ptNV{%JU=Ias1uhQdxVTv}c{l+5@FM+f;fiShh8ED zZ)I=F>!$WRwQ}xK+Ou?JuRU!xe!q8Bt~W}1K3RG8L}}07mGgztp5rPVq_pRP%2=M# zo@*-iT}pfIsQlb0?fFaP9D4oKo&_p%VoG}!uRJTFv}c9NGcWqg_`AKcG6$oy=i`;n zv{KshnaUa{r9B5$){80aIioVpp|t1P%4Yy6?YXnEhD>SCW0mi1e8be9XIAcsl=duB zxuz-ep4BSrO_cU*Q5nZl+H-K_nxWa_JvguOnkntMwz6JAY0qyf>rE?8?U}doJ%N<= zysUB#(SA9HD$f=v?b)QVwnS;q{*~uel=hrmnV(bI^WDmON@>rXmH9cPJ^!tI{`ZYj zdtOp`7EPJ=tWw$EL}|~4l{HXGdv>qvxudk__{v%?r9GEaI!I~H^_8(Vr9F37K08Ng z&%Y~kmzAdWEK>Q-Wy-wgO_g(((w>i3?oE_ye|F_PrL^bl%DMohJvUYUT{230{#3aS zy=iLCb1L_2N_$>YnLAVFJsVV-LTS%#mFCf$ac&%28Rt;ib5Z5rO{28uN0l)qr9BT; z<_mA0+B09}StX@CFRffNlzGo;mAN0KJ)2gpb4q&-tTd0(p35rtSW0{Dt$dH>Tc-BR zs_c!TwC5F-aXV$+^WMtdX-a#xuB>NM+H+K8J&e+xuT`EwQrh$L%Ke4Xp2sTdId7fX z^YqI8CQ5sjt&CqN^PYECu3t)fHmRIfw8Z#Xo?RJtzHK@u7p(mIN0fQb>nh`7N_#$7 z85dL9vtwodIHf&bs5FJro(n2Xp|t0kN>eE9xubH9Q`+;V%6)C+sXg;nnnG#M;+1QV zwjF=pH&xa=DD7FZaxGBWvq7aPl=gh4a(||@=ith-B1(HsuB?Ml+H+~;SsSU4W&KDRL)aMd%ji~ z`_Sz1{{5`-nknshv~mu;eQM8wl{Hn$yl45!b0JE5K2SM_DDBy?G7q4%=g7*wdP;jP zu8bWi?YXV;Y?0EQM=I~>JEr!`SLrmRJhW&B5J&(f9o7G>VEdgVSzY0svWbC=Sd zgDcOhDeXDG@}5%Kb6aJNjMAQeRMyc~o7(fj%DM_=-m`LLJWgrP`jvg=l=d7_S>vI! z=d8*;X__;B9^b2c9*5GNyDDp-l=l3y@~m?8sXfoD%=hW^@%z2D^1PeUp7&R-8A^M$ ztK8cu?K!G)om1L#X{9ri_S{>!kH2$j&(kaW6Y0G1T3%myMn!4QhbwDAl=kdW8PibO zb9`mphti&JSN3sJ+Vksb*38TrQ+wvA++Qf|S+w$uk23FhV`X0pr9B_1tY=f&vs2~z zrL^bB%6UaE8Gql~D(B0)rt@^=%H9u3dp54jT`29@yYgI!(w@^QduJ%^xvDbmq_pSG z${HS}J%6s;Bi=o=XTHkklql_aapfGMt#b}l?i-Z$tX0`JLTS(DmGKp&J-b!bJ1Ols zwDR2!l=hrbdG1GP&o?S#LP~pXs{G6;?fG@(Ss)?hDDC;b%Ck>Odv>V&yJ?j6e6e!wQrh#4%2_^_wP%6K z7?{o-e~&j+)`uwV`DEo86{S7 zS-x_Ap|oes%J_xSo=q!j50v)oUwQsPY0v4E>zC4=t1HidXvy&&%zPkn52KvBTU5>$ zN_!5eJlm$U=iJJ3L`r*ZtUMc|wC90JYd<)(XP(Mh0i`{QRMrXU)8q9mR~gq)+OvA) zc`~Iv>s7vkgwmd!D|=Wd?Kz@yucNf*w8}i0(w@sI-vvTx&kdFPAEiC_RMz?^?fFY( zKK-GoJ+ms;FQq*%tE}r$<~{GMtc_6G^YO~ufYP2FD`N{vdycG(V=3)9zw#L!N_(!W z>~Es9=b_3z)&HB?^R&wIOPW1?9EH&NO%yRt4yY0nvzu{WhX z->cknDDC-mWetzgp8r-l_>rkSFRZL7Q06_atK7#a?Rj_QSqG&(8&&@821B{GdrE1~GL>;1r9Ep^o(oahvwdYgO=-_Dl{H36 zdoHQW4JhroxAM%D(w_fRKG(bM)Sl;8*2n3TaZavKc@{`%&)SvwDy2PJRpx$__8eT9 zZ&BKFR^^(ZwCB3Y=M5(h%)b4vGO^8N_*C=++Qf|*|G9mm(rfYE9+O3 z_FPce^GRvX4=dL%r9Ho^j1ShIYv!fneObElXHd@P!z=Frr9EG%{27$?{IJqmN_!rz z+#^0dwP(J{=cs6l@#ij8Su>)v=gpO8ca-+5Q`y5pY0qYrYmm~OJuBZ^L21vID(5|= zJ(pCTS5Vq>ZDnnV(w?7H){80ad9ZS=Qra{329dcvr9IE9tcz0SJ}Yf#$ruF5@| z(w@yL_e4s2W>?m|DeXD7GT*1P=hDh~N@>rJD%T99J-@H~+bbJR?RiFJj|gSn^Qy`{ zhh~qT+gg>^Oli;Nm9Yw?J%?1rDwOt|Tj>m?JvUa)Axe85u3Xa_P3@UgxhK*At50BEG z#VVigrp$ZZT3J`2wCBT>f5Vs3o=;akV?t@qK9#+LlxuZPWu1Z2o~tVBdX)CuT{(9t z?U{SyXx7YPl=duHc~2?rd2eM6iqf9#DxbNawCCu`+=|kkZ&cLjyt72AF6ba(w^-r_ccm;4zG;ODD64FGRCB|=Z4BPLut?N zEAy>SP3@V#a-GxJ`L?KtK+r2q0$*jd)BQym!!03_sac+(w<{0&($dHxu~*#h|-=PSJt>G?Rlhf z{cbw7XIACBqNT>`dv9eOopO#}TzL;D?YX(~XHeSnNM(Mx+0>o|D)$K5eEb>9RQ66& z+OtMwEJ|t5$1Cdxl=kdU8LLp*b8zJvq_k&FW$!elJ>RUH_muYhwDMe>(w^T|*0U+? z`A21KWb>&#Pp@37l=duHSsS6W=Z%%meNx)S_RL?IUsC2h%T>mXl=iG$x#!UA@w42n@|r2_IixaH zp|s~Km9Yw?JwL2;hSHvgE9cObQ+pPuT+_7w_;Z)7oV%3vytlH(Lut>}mH8H>JqK3a zQ%ZYIt*kpz+H+0io|3&ta8080ES=qq2{J(w^^D<};M`+*8>POli+tTSc>G7NfLh$;z4nr9G=x-cw3@ zwyr$uptR?x%JV@=d%jj#!=tq4j>`9@P}=ji%JcoLr}n(GvTjRh&nlH?MKoue2kTeX zHz@7dxza&OdycN$J1OnCs4_OAwC6{aF(#!w4_2<3ZKn3jUs(g7v&L(AW#u}jwC8=5 zHGN8ZcB{;-DD63`av!I(=f{;bMoN1gt#oGFsXfoGJaeGTdtO^<9;H1Wt#pRcp4}^- zi>9>aq{{t;(w@sJdz~rm`AOwD38g)MuB_{AH?`-PmFt%_%Jo|rU(w6Pu}@d_9a1`T zYvnzlbmq~@d$9e~nP*pi9+b|!vaCC??@84&p&OEcSMn>t(%PMm`zfd}JM&;jGp>*b3mA&GW&itaXH-*xf$13xg9j4Aaqq0Up z>C6h1Xa1DVe4x^Onmx{q9V)Mx(wW05-v>qM%!QS)3Z*kQS2{@P%%3Xf(2i4Qo?ZE_ zVoGOTU72rDICEMoXa1DV+*NtzPwC7*D{C#g zOr2S}vMx&L%&L`6)0}bsZCLppAWCOGTN$HMI&*Ag4S>>_ODlVOD4n^bGJd9X=8?)Z zv+LBEXH>>!l+G+yxy~t_d4Fa7h0>WlEAxFyXU?tM$0?opN#$7}r8AFL*3CXUb>_L1 z`3$8qZ>T(Tpmb)v%5y79XZET*v!-Kw># z<@%*`=GB$`)U@>YS#DctE#mB;r9GQe)=Mbu*{9M_N_$SLJhP^>=ZeZT zLut<~m1~C5o<}Ncn|n^}nXj@(n6ke1lFFQu(w;Rc>zI`GY*zV>Mw&g|gM%usnbMxq zD)&T6d#nauy{7g&xpEHCemRFK_aRDqR;@gTrL^ahmFJw4_UvDo|5DmB zr}Cas+H*x^uM4F;cUI;Gl=jRuJF@OWhmO~`Xl31u(w?_g)-ovVS+}wuiPD~3DxIOU z=ZMO)W6CvnX65+|r9D?x<`9(j+)?>_D5X7ruRIg^+|-`uSI%8Zd){1GXP~s_ll`$}-J%6suVfUWevq0tZZNNLYemHlRv_I$hY{Dab--&H=xvhUQMr&iXC=quy3EK`~9Q`+<1%9w%Dp6x1g zKT3O!uFOp-?fF{e{z7TbEtR<+r9BT;#$o$S?U_{>N6=;C^(|ewektu)wX)}lUOs-^ zzLjUBlxyMFl{qn`J%6iwo@xK7JquO(OKHy=D$i#q?OCVNJW6}Et(@bO_UvDIMoMYV z36=FfN_#G@?CGGi=laU{kJ6s|D$gn@?fFmTS~y^8&jOXb*tGq4Uly-C|E09&b(Nnv zr9JPh%-<;O*{IT0N_%#yoRgIH994PtL}||@mG3#BwC4wv=dhIa+*^5$O=-`6E8l5% z;MAUlD{~x5dse9I=c2UdBbECkr9Hb;o|n<=@xFYi@|r2_xumj=NomhdD`PlHdmgWh z;SQSG^W4fgL}||(Dtq@S?fGD34n}Fu4wdmZr9H<~=3tceTv&NeDed_|WsXB>&qI|l z$iY*4o>dvcQQGtB%DM`rJ@2dR&!Mzui^^Ibr9B5$#+{Vw?Uc&>fYP3?RrX3!+H+H7 z&Q591A1dRGL#Fo3SDBYl*4JKMId>`Td2eMdPHE59mG_j=o?|L&*Oc~rv+|iyN_&1) zd45D`&)lDnw3{;TS+uf;iqf7nE6)rm?b*EYOoZl)^KZY(eltpYPOgmGDed`IWnF;M zo?lcx2T5tqUn}GGL#OsESh;2>?OCDnOo`H-4^^&nN_%#yjLj(RIjyn=Kxxm-l`#XQ zJ%6u^84jD;^Zd$p15w(uQe}=qY0r9<{i2lie6F(JjMARdD|`GY?fHJ?{z7Tby_L`Z zQrh#c%3iR;r}ivT*}Fh#&x)1nm(rdORys(_jGyJvmGgyiea!uZXx7a0DD8Pcl=ghA^7EjyXQ#@aOKH#1m3b(oJ?B>T;ZfRib!F~HY0vGI`v#>w4^`IS zkC@u?luA=5?OD8XUeR{r@3BHwD0)+-dH(@DDC-JrGu3A z>{9vMF{M4nRpv94_FPf<%mAf5w^iO#N_!rutf?M7wda|Y@djny^Sa7fB&9tcs65A} zv}gOuS|p`ChgHVolxyq!${dl>o@*=f8A^NZsH|~Q+Vf~-E$E9=d!A8QN2f22_jK9H zy`9pYH7n;Xr9InL_C-?Kb7bW`rL^aY%02~3d+x5>Hz@6y`@%Jx{KT87S>pv@+kPOULVb zYo&vf_N-UAektwQrLtB`$b$XRFHfMrqGsmGgzt zo^vWc4@!HktE>%E+H+UsXGCewW0iU6m#6kTwer4D+Oue-jkL}9yRB5|FQq*ntjv=s z?b)RAUQyb!OJ)6!(w@&(#x#`noK|^HDed`2Wz0%x&rOw|Ii)>+sLWwcnA$U|(o0Hv z7O#vgDD$2bE8{Rqdp=b8jvh*TwyEsPptR@U%6F?%+Vj=Q*o@Min=8*}X!dwd|5SO+ zCr<5|Rk{CB+Ours86Rcd^PbAHMM`@PMPLi2#-fz=>{J<#Q`&QSW!y<=&()Q6QJOP; zMt4@`E|m8CwK8`(WoplYmHQf{JeQa4D$g(JyzyGrs*DdP?b)`nMoVeW5tX$EN_#G;Jlm$U=jWBV z3#C2(s(kP2X;XV%RJp%U<~=J`)~_h-S*J2)ptNVZ${Hx8J%?AWUrKwa<_D=O=v zl=j?GSwp6@=Yh)4oYJ0uRptR_PVHH^@-wH*dseKRla%(XRp}+AJ)2aXA5q$~Pv!f8 zDeXD2(nd;qzESBur9F35#)*{n{HO96-m|9mytwk3>2u@fv0~*}2cp~x_Uu|2 zCsNvTeB~UXwC7uu^%6>Zeo>iQQQGs5%KZH7sXZ^K+!N`b@%mm@c~2?rS*vm#QQEUz zWxa{go?|M{tSRlewDN3`(w?7Gz5|TXo^H>0#?x5|8)(w^fg*9@gS->A$@DebwVa-CD!^RLSDkMpPYEL|A`)4AiE{9xrX z%ar!)QQ2=sY0pWOXGN6ue7mwnMrqHzmFMwanc6dNW$l&Ho|jj~gmlq(E$^w^UnuR_ zq%wY?v}bl@y_3?OlPhZ@l=fU%xqd0_`9rZE_B>n}$6hqG z=h>CdHdETOd}Y0fW{>y&1C`fIY0p-bu@9v^hga@@l=fUunOjlXb93b!qO|AH%G%P! zQ+u9K`K%G8J+G?l0jC4U>sz}rj-|9`i^_XSY0tiu@dl+mXIAD`l=j?M*<($)K7L<$ z#&XHjp7|>GL`r*>tn9m?FO1js_R1O~r9B_3jCU#R*|u^Yr?lsQ%6**Dp3^IPtSRmJ zZspl0r9Jmm&fQC=_RL$kPg2^mbmcvz%zM_ZJoBftXUEDto6?@+D&q)Bd%jh<4^i6l zi^|;evZ*~!sXX7OwC5$2?|G*=lt zru3EZ9z0%o_Wt#$JquOFFZ9*%>)ur9FQq*nuQY|yp4pZA3#C0@u6(wh(w@sI>)Dj{ z+*a9NLTS&RE7$KgruICea$eD^#_L!DU|kny>j2BwCC2!Jde_zhbqtL zDed`hW$pipsXfoE+)F6!S+er;r5*C~t-Pm{_N-man%Ribo=;VJNomjCl|6iv_MBST zyGm)#<(2MJ+VkVe^+9RR!!Y0nas?;)Vfd)`_3z6?rxHmy7>r`hB0 zdtl`?Q`&QC<#REV_FPlB|54g=Uo~rH=37&H=Bb=Rl=duDSr4QA$DjL-$~c?So{cNd z+9>VWuQE2HwCCi?drE1~<(2UUr9Ho_e8&gnT9~;qGWVmj=f#zEc{*&ozPD8FiInzy zwDOq&N_%#$e77N`JzuD-;ZfRiM&&+EY0tMR_i;*leo@&ML}}08Dr3y6ruHmcId>`Z zo;OwQla%(XUwKa{?b)yLY?jiVb1V03N_%dqj3X%Rd9-pL`u5bGXH=d`QszBxuIzuI zwC5w0{UtPKyw5vS)@Uj1IjpkALut=>mHQf{J=a%06HIB(Zz|8NDD9d1>c}-iY0nas zy<3!d&#IN{oYJ08RmSp^_8eLH{0F5yS5@{BQ`+;}%9!RmQ+wvC%v~t$d3j~-LKlqp z)9u3y?{ zyuNo-#((tcactkpy!Lz3H8`uXw};Z6S67|^QRY4GtE>S~+Oth%t(4N9gDam^ptR@g z%Flz+o~tTdrL^a^%6mX*&mSuH2ugcqu8GV)DD8PcW&MTHp4V0GyOj34vvS{{?Z^A_ z(aQLq(w?mID$m*|?fHCVy`9pY^DFy&Ded`DW$!AbJ-@5G zrBP};L{W$z_r-m_8V+@-W<-^$#N(w;Lb?iGUQ`+;Y%6**Dp7&I)8A^M$tgLNP+H+{-I;XVfg36eN(w<*d z#)LOc?RiRN&O~X?a+S|((D~!<`~J$l7D{`zuRJ%PwCCu`_=?h=%PY^zDDAnkGWMpl z=f9Qv%MYjaJioFhi_)GID(k>>>3DtXRGLR=&$gB8m(rfkS3Xxx%Z>l`hn2mTH%-^& zdnsH21l=kdUxo=R~vwvm%fYP4hD)%}{d(N-yv7xl*dzEK=l=l3* zGAE(5=iy4@Z=TvStFjhJY0om1c_XDgt5n8>l=gh2GH;}`XUEFg7o|OiSH`TA_MBT; z`=Yex=E@o)r9FSF%m;rwwda|Y*Gy^8GL>_PGVghB<@%+xXUobtNomjLE9VfUJr`6u zO=-`KmF7{}^I)ZUw@mGMdSx6&Y0t|l?xKG=R?b)^R42{yB zV=D7xN_(!U>{X+*=bp-EzG=>Q5B^nQEHpfWzCwCC!|9E{SQ+bZ`zN_!rx%)uz_nfXQJb1anhJhyWFQszC&SH=;P z_N-I+oCBpjn^)FoDeakEdA>zy&xw__NJ@LYURjHzwCC2!It`^gf2({4-5pbVo>$pd zK(oisW5vpArnG0BO5-W**`YGur?ls&%5!^4doHbgVLU>Dr@1C_B>QsZ~E2L zp82X-GmFuj@m?)i+2>2AjAL)DJVT?j=VO(u6!2*r9H=1p5ap3^Nq?pnbMwLRQ5Pf z+Viix7i{e5!JPp|odqWnU1bJ;zt(R+RQ!UYUnd+Viu@ z^-F2bW0mjxxp%Ia<;QDzZRPnT<@!Cna=uX7b5&(;6s0|PRpxJ$_WZXpfBW^+p66Hg zs?iqX&wWE>{e{w=H7jFLN_#f0jHM{;*|jphr?ltr%2C=$lFA&G(w?7J_ViNP^ViBf=Ygp`&#nA>Xq0)+YbqV2v}di# zeoRVxHmlsnDec*#vaUjD&(W1JFr_^gRpzji_S{_A8&7G^pDO3>Z>RPwSm_L9-t)T3 zdrE1~`jv4Vr9FFBvt~}AwC9YP0-PE4vRMwy<^Pc4@^J$th ze&+A3?8&0EXOqgFPfC0Csm%Q-?U_?q!=tq4%F6yVN_+08Tr-sR{Il|ToZnCFd12)` zr?bcFdrM`n3#C0hxgVuHCsyWul=ghR@}5%Kb4z7x zMrqGumG!VcP3>8@@?4G5p4V6ADRkI)eIKgq*`~B-yUG}e(w@UB*Eyv-XL3eV+gG zeBOH|Cnx9by}xU%z0RRnw?%2sv5NN;r9Iauu0ts8d0eqxhti%86?4D;HSL*Gv6lp; zJ9NN_(a&*7;G|^Rr@& z?5n0diz?0;l=iHzxOSpj%WD~`IL}eq^C!g^7^OYq72{o$_PnaNW}~#{SH;}r>!v+D z6zjz(?b%o{Mn`GS{)+Wtl=h5P?7={3&+UpmA}H;7QE`1iY0pf>JyMkRbowUZGcYLa zSz0k>MQP7Qit`ukTi&ZZ72{L1R{7c0iu3K;<~;ANSZhIPPhZ77Lv(QYv%4wgwJ7Zw zrC4i0Y0ssK@fu2d?ooW+6s0}SDCSlu?Ri^qjX-J7SBhi&yQV#Js;;dbDDCN`xUQiQ zhoQ7*q+)*rN_+mQXgo@L{-GEX zqW1Fsy`gx`DDC-L(ev+{_AI0rQ=_zJZN(mXbY^+JT@}X=N_$2r)<#g;bGc&87o|P- zDdzhq?RiaceMV`|mx}lFho(JqDekeLv}YB?dLqiaXGg^~5v4sN6iq>C&qa#!9Hl+C zE9LzR`ydX)D3S+UlP(wJDV``N4{6EDy14?^7QhaA2N_*NmMa-R1+Ov#e%!M-VSzmF_ z3#C0fDAtfs+H<60?1R#t(TcewN_%cp+z&u$&lJVj2cfK=N_(DEoYN@nnW6a1O6N|tXAZ^K5v4sn z6z?g@yk~vII2NTnLlxhNh0>nW6nnN&+H;*^O&X;=k0?5g(w;XI_kU5^GfT1mYW7aH zXI{nJ0Hr<4Db{n)rR5mkP;qTSY0n;tcB8aslwxdw(w@I6j$M@YJf!$eHk9_fqj*o} z=wy55P&5yvJu4~py`s!}wo}}nMrqG6icX`n=OV>C52Za1EADHcwC8ojXVOtec@Mr( z%=3QN$@cs~v8NKHJu54kj56=pQn6l#(w>79>vbsYIYV*IptR>k#TqwCd!AC9=P2#@ zNU^rrrIYQMUolQZnfGj@ST8|o&v3>4Je2mFqi8Zpd&VpFJ)pGb1;v;Pr9EFN);8zt zWP27+%;Qn!J?kj0FDUKVL9t$k(w@T<`!Z14bFN|@kJ6rTit`txJx{8xtyb4gt#!)p zva@3ECCc^SOvStwr9HPO-g}hxJf(Q=QQGs7Vto>&J+sXfF-AgZ&r*tUF-m*ZR_u2~ zhnLs4wPJ4%N_+NItl^=w=Xk}wdX)BDqS&j3(w;jM*A0~RJfhg&j?$i~ifbK8duAxs zkx<(6qhd@mchjD3ihUF)?O9fF4-%z4n<(a6DDBx#F^)iK&k2hCFDUI9qxkRRptR>s z#at4lJjI&YN^RwbU=O3E(ETR}^qqJvT#k?D3-ZNNn{}-h_2P*ae zp|s~@MN?4P^H;^#8>Kz>EACsNv}c;)*hOj2kBW8lZcTfZP`sxo^PbHV^C*<|9IBW{ zp|s}$#rg(Hd+t%})j(;_ONx0EN_&1%tiR0Lw5Pk`{xs?+zu&bK%|q9hpKYhOPNKBu zFvU0wr9Gn+<4KhE+^iTYqqOI7#W{o0p7#~k&iR`5bXJ__DD7ERF?U9{mDjhU;=ika z#+RR+q8M|bwC7gEm=L8sQxuL-8K31H+DD7!mAnMv0fYvRqWuW4{N4Z8kuJ~La zN_##~tpB03r_+KF*8`OHETdTGLTOKb#TXN%Jwp{^B$W0Xqc~nr+A~`5JrgMHxmK}X z3Z*?0759Kp+Vg*k-y2GMK2e;5DDC-CvEOH*raiw`tZkySXKBTJ3#C1M6?-PovE@D8 zR&jksY0rL&`4&ohPF0MlQQC8z;yaB|+VgkC8ZAnDUR2!QLTS&Zit}UPrahe%-A8H9 zQi|gMW!^JTF;78h&jE^g3TiL^wzCwk8KphfDZa}Lr9F=+=DH}y)pW(U1f@N*b&oiP zP};MMVlNmouYc@)IE>Nu7qO|7*#TqC|d;X!gZ-COC zR~2iZDDC-Lu@_>|racQPj$M@Y^i|BGQ06^*DBe?)_MEP`PNKBuR>gONqqOHa#pjez z+Vda9b#k$$J##76n^4-bp5h)F%DiV6#XU6CQQp&|75fuW+H;;_?2Xc%af-1rN_(DC zGzFzS?##W}Nh)1IXi_g&Df<+W_AIL}eqv!7y~hti&l6#H&a+Vh}dY>U#K z8H#(jOEm47T`?y{Y0q+sF(JCEyp}!MR6!(C7HtktRF%Lj#&$^0Z2&Fx{EAF+SwC6a* zdOJ#cu2AerMQP6@#r{~7_PnfkPf^XNRw(URQL%o2 zGVj@1aqObB=Sao138g(_6z?fYdnPIF!=kk3ZN+B`P}x%nZDDC-HaeZE?Y0pB6d*CST zSw(ei4M1tnK*d@lN_+NI+?PaY&q<1FHcET0P&5UlJr62AkB!ovHx+9msJ*Np6?aw z?W;8HnP2gqqO@lf#r|iMdC&HWaT7{=Mk>ZlDDAmKv9^TLo_iEyN0j!wsQ63`N_#$2 zU0bbHoAz{8jP+33vxs611*JWG6mx8pdC#_r^(K_|9H!_XN_);%9J?s(xm$6s5~V%= zPw}3jwC8)p_X@4nv}Z|0Q&8Hov108Ir9B5K=20l^IbHENDwOt2P~5{nY0nFa>m=$Z z$KOoF`U^^XI`xSdW1_TYDaCaXr9J%=;~aETdA{8h*GZK29H%&EP}*~a;@XMQo=J-H z9Hl+4E9M5PH|?22@!39<_N<|}Z;vwX*;BF3iqf8w75fTM+H;L!e>O^c9#zbvP}(y? zv9`WO)1KccKC6$?o)r|=7nJr4RD2g4N_+NJ?CV2m&z}@)*C_3|N^$<8wC8@sy-&1$ zdGBW_?s=`*TwjJOju({noUZuX7)pDtSFG2ewC8cf7zw34Z!5+iDDC-CanE(Frakj2 z?m3{eXL-dvS9C;q%^ND#F;UvHlVV(l(w-v~Yj`N_8Lhb1p|s~p#eE@^_S~UZ`$uWd zWX1Ilr9H1H#?&b7`CPHKgwmeb){Z!TQQEVlVto>2-qT+(=0a)DE{e|?qO|95#eGSX z_MD>_`=GSvM#Wqbr9F=*)>Kj2^MPXQgVLV1bt1;GsJ*=Ry%et*omPI)~aqqJwD;@CxL&ufa#ptR?E#e2G5)1IXj<2sai z&*qBH>!P&h5XE{TN_#F)%>7W>GhQ*zLut=6#o8fCd%jlOOI^QdPdCLp52ZaTD!wNR zr9E3H){s%!bAVzm2}*lTQ>^KuwC7sIIfK%kM-*$wDD9c9IL}eqGus9c-`j&S?^#tb zmPcvN9*Xr6l=hsV_^c&Ldu~$9qfpxOlwv&$r9B@j=EVJ)_ROvLZZwp6&uWT!JW6|Z zP+VV7+H<&KZy8E^{;arPhSHv!74vwM_B^3De^J`=u40{L!%nRY%5mRA@!q3cbFNi% z6{S6oD(1B)?RiIWJwR#CuZp>3|E4{QD#pbq?dhwyXNV3fuVp*M@q*Hx0~G5+DD62> zu~vZ6o-v9&t|;xfUGaNEY0p!Na}cFHuPNqWDDC+~vG$MBo}U%_MmB2Nvw&h8fzqB8 z6xU~z_Vibbb5Po|r(&Lh(w>tP<7|}nT%!1IBB8YBHpP4zr9Dq8&JUFKOjmRtr9D3? zj)MVBdwM9=Xi<)X0gAa5YA?T|eHE`6r9CGp#%3t(xkj{DaIuz?Ri^q4575= zSHPNKBu48?vVl=j@BxCeyNp63+T zNtE_{tXRt!*tBOs#acK@dsbJ>^H4|m{cfw+gNxFhgB9x*DD62@F;+%t&-IF?ptR=^ z#e5&7J#Q+`8I<;D* z$12Wgl=l2Zu^xufo_iGUDN1{uS9~uHN_+mT_-{*W)3j$k#o8B2d-^EW>(GVe^=+@X z=Ag9aFvZ*yr9I~;_7$MC=LW?Z1xkDFSL_c%Y0pcFH9VB|e5Tk3zirc=ITdpQl=iHs zICfFyJ=-eoyP&k^D8+k<(w@I4#t|s(c}Ov~MQP8win%jNd)l^(80Vn0r-x$Pi8Alm zPO+B`r9Fo##@?u-yw87D%$-r%)1lb2jnbZn6?@)M+Vh5D9D&lF?-WhmzG=?_igN~~ zJ!>iUlAz3cc2%6`DD633F?T^}&rOQ)0ZMzOD(0Lh?fG6YZXevVXHmsG9;H1SD873F zr9FEo)~Zn2bGl-lg3_Lw6?X^aG_mGZcFvP}=i@q8~do?dhht2ZYj|l@$9$QQEVa;ywgAy1WOwDaN8G z?KwoTwu#c7KPlcnl=fVv7&D->=QhRo3Z*@dD8^SP?Rir%zCvlwkBaNx&P{vfQ_QVU z+OvXU9R#I4n=977Q06_u6!R36_MD_Re^J`gp%{muv}dwn9ERG^SDCQ|B?dhjDXV97D`SwyALn!SzRk8Mk(w?go*FTi@JfxV5qqOH8#kdKjJ+l<= z>8?$C=2Ki>P};MWqRA-pp4}DK7nJrKuecw8(w-|6a}t#H+^e|eptNVIVvdc{o=+5G zB$W32qL>@(*0g6q#oP*|J!>fDR_OBbo(@)w^-$V#wBp!BY0qVf{eLL!`McshMQP7F zil(5nr)@~Y{wtLBET{OaAWD0-Qp{6O+Hg3_K96#K7G+Ow%*oQ)=y_i8`I{xy{Lv@6bEl=fV$`0f+bzx>&^6l0K~ z&Gl+K#kClvJ%=dnouIU5wBovp(w^HC_uf(3^Q5AyDD8P)ag9J}&n(6JvRBidc@*Z+H;y>%^amYmn!zyptR>!#j%Fco<|h> zC{Wt-PsKe_l=jS2?8Do;Y0vD6&j+BiXIaHH8)e?pPcfH7Y0plIy;dmg8KL;>7fO51 zRg8U5+Hgwmed6zhp7?Ri@9IUtnwe5CmP$ze@p|q#BV*H0LEw6ba z#kvJbdxk33q*2;)qT>E9N_(zS9J?s(c|@^Bi_)IyiuZKCrafI0do@tnvx=g5DD4@n z*sFoko{@^rZKJg3V#S(1N_!qvjLlHm^QK~+f;!53@SWm5@%~MF=2hHdL7Dfgs@Us? z(w?mq_qI{mGhFdG0+jZgr8s9$+HX+omlWUsg3_L^6zdEJHtktRvCe=p@9C?!zM!;c zC&iv^l=d8<*u#R-p7Ry=^HAC|UUB}SwC8EXadl9q)<)$$=%QF3N4bWLQml`owC57V zxCEs=_bB$WqO|8_#aaeRd;YDsh8^6rXD-FK1f@MoEB4@`!^`ViSFu)r(w=P<-)Dr< zp8XYT<|yqsMX^^6r9ER6?-fdW#w*6uDD8PjF=j<+&s4>j3#C0DE9Rys?fFS@ehhEg zGq2+OK$-Wfs^~sSd$v>T6+&sxfr|YvDD62}@i{}3-`igm>ys$$`J3W6MQP7VisKZe zJzpuViH9`pnO`wCK<(xCv6kXBqqJu`MF&yZGeYq>2bA_)q}bnt(w+&5V+f@^FDv#J zqqOJ0iqEqj+O+2nihBfTba{QNE3P>x?b%xKo}#qpKt%^p+HZz9=NiRc4V3mg zptxqEv}dO3+G-uqw5PLTy$*Gh-)|4axD#Dpezv}1Ed!-JyD2(|(w>ou4x+T@V#W8` zqqOHP#W{o0o|hEg&x+EXFBIqbkxhH%Rm`o>ZRPd#S9AuYJ%=jByD06sRI#3o(w>Qm z&orR4=U<8@qqOHc#XXjzn)WQN7{8zi<+W_2m|LN=XJ5tj1*JVFE9Ukn?YTm+hZ&_k z_bJBSDDC;D;`~Kv&wmwb*CRT$29(#*M{&;(<+^r@;yx2fd!A6tT~ONdzG5zp(w?@X zBldHlv}Z}h`GyWHe{Vm<=YLV!v!mjCLut=&MN?4PbBbd90Hr;bDfW<}wC8TcJQSrp z&nm`ODD8Pu(My!}{9Cby1*JW+9TV~S0F?H0SBwc!+Ovw{I}A|fJ)0;#Z;#TReH80W zDD62_@jFLp&lQUAFhKbo-Kn@HqO|8Z#hN8bduAx^3!${1}N>hUNJX7Y0qTE8Xih}-cuYyDD7z*8F9@)X-^Nu8U;GL zyp{oqH2{?M?58-7P}*~{;yp!a&lQSwV3hVuQtX95Y0uk=HAa;7{HR!`KDKGkqKf;2 zDD$3m6yFtw(w?0a<4KhE9HCfOL21wFim?Ssd;Y3eBSUG=-xZ&KLut<|ihFG+?fFJ= z>>k&&r@P`hjxz6AU-6!zv}Zp>r%~E-wqgv2(w^~(Yc@)IUQ(<WDD4@on7g2~=Vry8N|g3IuDEZ7(w=t}=L|}F zepQT>M>XwPT5+DEapm=GqF8G|Y0puLc_>PIu2PH-P}=jP;``T7+Vi1e&-MvTd*)Eg zlTq5!TQNpQnfGj~7!#tjXM|#2fzqB!6xSD&_S~tM=b^Oc8O7QIN_#$1U0baaoAz{8 zoWCgT>7lqEfHp4g)iA|14CPw)oZ=dR(w_Ge`x#K$(>f{Q_kq%$r4^k)X-_}J9z&G& z?4fvHP}(y>ac>c&J%3iL9ip`7YQ@?*N_*~AtPP{I=S9U>52ZaHEAH{3wC8)pyzJzr zJ##5OGl0^br4-i}l=iHn7-yrjXKTg#jMAQAiu*?>?fH{poQTq%YZPN2l;6ih#l3Qr z_B^i`JEF8_reaSFN_#r}DdJuXN_&=2oHHo%o=p_j9F+F#r&xnR?d5nmL-CqX+H;L! z4F#n=k1FmPptR>5#W{`Ao?jKm&?!xOmR5`%QQFgAu||f{p1l=o%_!|@SKMzzY0s64 z_Y|c)6BYX-P}=jVqBAJ%`B8D5Jhf@hB8qhjbYXd4`YJku(w?0apCvWU0eS_Y0v)@bJ+H#J@YG$U6gsxI*NVVDD4@dcu!H< z)2_IVqqOH{#rMCUv}cOq{sKySK3B}GPHWmTr(%5rW!|%{V%-O&Jv%9`j|0^M3(%SMXx9Hl+O z6#L9k+H-;8J1S7x^AE*X9;H3+E5>0c?P)tBVw{LF@9Cwu*Nf7g%@s{XY0qJbJ#8rM zxlpn8fYP1`it7tXd!AQx5T!jIDmrs!)1J-F^j92LXp{24YgerE zqg?+!RgC#j+B4f(5iLV$PY=a9CQ5rYR;)>*v}dSdO&X;=Co1+yqqJv?;uu0{&n=4e zFqHN@q*$jxY0t}wxeH2r{;l|I)t{U8{7!K#L21t-ihT;`nDV}?q&U`4+Ov^j?E$4d zyDEO?DD62+@jj!pr(JQ)MrqGAiv2k#@BPDy>kCSIUQvu4QQGsFV*T{&rafI0#{o)v zdMZ92h0>l46`et8&wh%rH%fa>SFGot_VT{msCdmN?Ri)+c0_5zuJ+CP~ z1B23@uNC_!&TZN=pW^!&Q06^rDvn*0_Ux)yZ%1j*D8+k<(w+{*XBAM|^OR!jgVLUv ziqDvw*R*GD#eHm)dCv-pH8Pa;?54W5jzVeA9~JAisG}Sk7b)%!qO|8W#r*}8_B^fl z3>!*&K2VIGQQFfwKcX`z?O8%`&Y)Y$-@Bn=-2$aO`zX$Hl=ieM<`5|Dxl^%sAEiC7 zE5?Z^?dfzu#2PJ1dzMjMTLVzqGf;6a6{S4~DaJG??Kw}eo`}+(yA<~lP}(z9aeYB) z&u5A? zdz4VxvzOv}fYP2*6l(=2?fI)>42RO5`xWyPl=i%+I9^cN^MPWXg3_Mv6>I-vn)dub zv9A=RJu51HZ)imM_YPE?gDCCURk7BG(w^apwHuW7oUB-*MQP8aith$OY0o&t^%MfY?SuQRE)h*+Vitw@9$+zdlpdKi$Q76>Wcl| z=<@QKw^ytwptNU%;@CxL&!vj>dzALvr+80M+Vi&JI*HPrPM1gQIYDX9vWm}`pv-%= zR9q)f+H;U%%^amYmnp{MDD9b`_^t!gQT}Z&DAs*Y+VhcOzJSu6wksmW$|&vWp=b(9 zdp1<8$)L1n55+ly(w-9)>n|wnxmt0aqqOH?#aJGtJ)bJ>`TwP9&q9i^ElPVfQp}@J z+A~bCHwvXarzysSDDAmXF%Ly)&lE*dP}=jE;=3!yHtqSn;`)Npp5BV4pv-$VQQRv+ zY0tijHF%WvoT@l~QQC8rVlNIFSbmppDb@=9+FU1hR_xJ4Y0uG$c?wE<#wgA=l=j@C zI9^cN^Mc~{fzqB&6=M*T_Oz~y_#L6NXCcMsz){+>vf_O~N0xubCWKpkf~=N_+NHj9F3IGfFYeMrqF_ig6f9d+t=s8&TTxvSRH9r9J;stleDQ zv}bXwn_>)t(w-F+?XQ1Mmh|->e6k|t}_ME2}XQQ;|HpO|4(w-@bdu=G~nW4C5 zqqL{fwGneGl=dv9xDSico<54bgDCT!Efk-YTeYdr?cXIElPV9 zRh)w;?dhXf+eB&4=8Ew%N_&PXI)l=l;}!c_P}*~`;=Dv@&y9-lA4+@fQ|wbfY0tBY zc>qd#rYr92qP&0KsIIL!Zf@GsRq=g6DD$4>71tM(_H3b;ucEYPZ^dzd(w<`#ok3~O zC5nAoDDAmJah{{J=NZMiJW6{$SFD%Z(zIu8MQ2cZIbK##yk?a4Y@yhbkJ6q)6!(8o z+A~^l9Y<-;ZHi+Er9ICpu8An^nWLU#ag_F4tr(A^wC7>Pv5V54>54X@w5QW;5$`F=yk|wl*aD?J+bgb} zDD62$v8My2Jy$69UZS+;Z;JcLDD8PqG514h&(Dg^jBnbrh+@8qt}nmyH5L24QQ9+D zv8My2Jx3@$gMiYWa}}SZKxxmdigN~~JA0$jnbZt6l-KC?b$~$7C>pwaf-1SN_#F)j0I5IGhVTG2BkeuD(=OgwC7#L zSYSfap3aK3T$FiFFU7hZYA?sjW{TI0(w==3>jEh4IZd&?i_)GB#di>+wC6F!F@(~d z4-|7^l=igliC9BHXP4K~LoxqFY0oB#aS2L$hAQ4ul=d8_*nf}Gp0SE+HcERQR?KTr z+ViGj-4UfdKPcwx_crZWNU=v9W!|%vVm}f}d$v{Fe?w`{eu_QJDD62xacxIw&lQSs zF-m(TD)!}~wC7)nV;7}8vlQdMzcuYyRPmmov}Y5==R;B2bFkt%j?$iU71t(|_S~fy zTcEV(dBr+9N_)OnTstQ=?O9N<#)vw~?|gN|-X4_pY^_)`M`_P+#eQ^@_MD~oP6?Fu z+@M%%MrqHZigN~~J?|>+fupo%w)-N^b2P5JzMhIsqqJvx#b;Gf+H;cP^Pwp1xk+(f z4W&I#DaP_B?fFPC4*Pr4o-T@UBFemH6-AR#+A~-&WUr^ff zjN-l@N_$>ctc#+w=QG88ALV`dRdId!N7J5#6#Ep=vE|>klHz?vY0m(~njlJh_EPM9 zLut>S6!Th?_FSg8KaJ9!+ZF3RDD9b|7>}d0=Y7R^5~V#qE6$k*n)dWmTys#`vx#E7 zhT6-&ZGXjUMrqHV6!(u%+H;-avy3S1c|>teqqOH;#W94^p4lFZSSvtj&ytFJkSOix zuUH>PY0oglT0Kg8PE@?7DDAmSv0oXbJ%3kp2Bkf3Dz1|#?fG7@U-_Y?J>3`g&w&tZx=7)pEE72j=x(w@I4I)l=liHh}8l=i%=`1}@1d%jW}yAL<* zSx7N1Mw$2YRlKJt?HQ)Hj-#~aEX93Jl=h5MjDbiunx6 zyk||tbsTk+<8OP#92=!QhbZ>PqO|AFit#f_du~+h=|E}EWX1h0l=i%>IA>7W^Rr@~ z%%e?vmQtMODD4@bm~Wx9=Lp5RBT9Szsu;_owC8cfI1HsdAE>Ua*5sx=ofY3Hfimw| zPSIqP_H3Yk&1gKDD4@exW1sY=XOO0QQGsAqBAJ%nW30FqqL{fV-e>sN_&=6 z99L*i`CSfEjFnNYyH6^<;|--f(-ik`QQGsJ;v9UuX-{{>F@(~dH5L2xQQEVEVl0Ky zo`V(FHI(-JNwEfs(w<8d^BI)(+@|<n#Xet@_PnE*ucEZ)3&s0~@*Z@0BH~;{ zY0pB6u>~4g-oI58*KCybY@*o5gVLVe6mvC{_KZ|q6H(f8nc_G=Y0vG7;}oSmk1MX@ zDD8Pyah*hI&-aRZ)=xI=SwOLO3uVo1J;nFQptNUq#dRFDmw)exir0+Np34;1ag_G_ zT`~4XY0tkDd&^MT^R40-da7wpcg4CCN_*B;d~XFxdv;N*v!b-;c*Qy^N_#F=yr(Gb zxm_{WMQP8AihEut?fIW#o%-pfJ>3-F4~#PJSxs^7qqJvh#dQ*;J%=dn&!DvDbVX-S z+VdC190H|1cPZu&DD8P(acxIw&nJqtpl6!)bX6R?DD$3G6xVi?_H3_sPf^-)ykcDs zr9D?G<_jq8c~o)jL}||liZL)sdsK4*@qV4KL5PoMO)`N_#d|tka;hXCK8HBT9RYRorJnY0r6z&n=>~ z=X%AyIh6L?uNeQKwC82TeGQcMe6Cm%MEUprqPV`i*tDmcVhswVJ-rlrw@})%fnxrK z(w@PJ&t#&s=Rn0Z2c@So?fIQz zj)OAq>8ZG9gVLTY6k`FD_8hFZXM@_y?{~D~HKVlW21WN#+ViC1I)u`m4^-Dy>;Ibe zbXFWg=&T$=itmy_Y0svLIT%WN_E(%+DD62*F$Y6w&vlCT6s0}?P|R^q+ViI3I*HPr z*3^hG9Ll_BNyWL3(w+?!?M7+O?uzR;N_&o1j5|@JD*DI9v zysj7%qO|8bMbH0V)1K~%V;7}88z|=DDDBxx@t&fz=PbqA2ugd#E830Ho);D0pN-O< zFBRXD^>Wjmc@&=kL}^by#oh&!_6$*6uTV!hHbyG$5umi^LdDnur9HPR)&)@7Gez;4 z6_oaTs2F#mw5QWQBhDFgOZj_ys;;d8DD4@jIL}eqbD&~P2BkfhDAoW_+VhCwvxg|{ z`B<@*_Da*9E{Z+s=+5$5R#1#{P};M#Vjl%cdqyb6?I`WJRB>+`r9Jm4t}iICV2Ib%Olj2->t!d9ZihBv@nDY91DArI=+OwA8caGAYtrc@gl=ci$bQPsN z$109Vl=fVr*dv0{o_iI098lWxtYWjEh4`B|}+F|BFO!ixK9DD7E8FQ?YUPmenDx^D~fd=l=gh37*D?5v}XauF@(~dbrgG) zP};MT;`1LU?fIi(uQN(}E?4YNL}}06iuV+yJ;Txd(Kwe2SaI3hvIsG(w_Si>sKi4c|kG9L21t?it)yqO?!T) zxUY+{=GI$r?4q=1YsLByN_&n_yr(Gbxm+=aKxxkdinS_~_PniFKSgQJY;Q%h8)e?J zr0UulgwmdE6!&aU+A~~ny+R%3_&Zba-+V!7&$WtsxG3#;P_cG{(w=FGeL*Pg`9|^i zsJEN;%%?bKP};MGVm~lSdv;cw=P2ztRxvh1Y0nLc{Q@ZMc}X#5Kxxl+iZR1GO?$d4 z)+kWgvz}sK8cKWiRLloa+S9IBcSLE=jf%B2l=eKOxW1sYXS!kzhSHuN6my(+oAxZC z*js_po^=)HFG_oMQmmJtt;_H7GS#)!n%-QqJ1dSCl=dvC80(>f%b(p)u@3;HJ$oze zk)pKc1jU*HN_+mIxIcr^o;wwLics3~gkr3R(w^59-xq|^p8qP=8QyFD9bFZ37nJt& zQe5lM(dFNXQ<-(hti%uD&__#?HR3D13+odHHz~Wr9BTQKJ$ap zo;MU@N0jz_sTdEv-?XQT;`0?K?O9f_p8;jfZ6n3L7L@kvq1cm;(wDDAmhF&;;0&lJUV9Hl*PE7pQg+Vi#Ib4njJ?U`4x{)a9v@9Aoaxj0ID1}lzT zl=l2l(HWHXT&{ReQQGscVqAyPp7#~&ARjgDnO!kPM`_OrihZgm?b%#0pFwHQNX2{* zr9ER5`!-QW`M2GnxZjP^o~IRaY?StVpqRs=w5RoP#QtZL_AH^e7maQ%f5-ZYa|We7 zdnoQZqqOH_#d(g>o@*4}6NA#8=M-akl=gh9xPLUWY0pxM`$y=G@>&Kc_B*1qXJ5tl zji9vW48{F7l=h5MtkI&h=Xu3?2}*nZt+>8?(zK_GV(y31o}P*|Ei|#bzKs=YS}5(= zM{)k5wC5znJRWUR{_I1FaowlQb$nIDesq-fY^fNRptNVW;jGH!0Q= zQQGskVqAjKo@t8DaGmD6?;fg+VeNX^#!FpQxx-kl=gh6IDbEH+B3UiuLeqc z7FXOuLz(xiskpwNv}ds5I}1_TbEsl|iPE046l*9b?HR8)XHeSnoMLW(+RJ7uwcp|ocyMY~bvJ^d8dNtE{Np*Z(Z+H;cP*hOj2wTiI?N_!?N z-cywJ%v9{<{Gw^k?-ieiK$-XSQOpfc+OxCbvw|q?Ia)E!L21u*in$9)dmdDbBTz^A z9lfR)N1(LlOT}8omrZ--QS1RiY0pZEF(yiT1}WCfP}*~#;+#Qg&smE5Bq;5fJyF{8 zPet=k+VibqZuM2up6-h43(CA_O~u?Er9Im!{#$e??Kxbr-w~xf=PJ%$l=j@BIIhsP z<=;C~aSi*rxwa2h+~Y%O&q0dc2TFU+Qv4k#?YTvMw4 zSM8goJ##63Z|I2fnwM70^HAEeu3}FSN_%!xyjLjgIb87>36%Dnq8M|bv}cT>p(yRS zNpXIlwC6#^S}968Y4wqqJu|#qS8EJ%bhNB`EDV zLeWc<_MEL)13+od4T?2Ol=eKMSbs)o&&P^u;&)AZx+q>VI<5RZdaACi0VwSmsJM=! zv}b?C8VX8#&Qu&jDDAmLG586;&qRe}iRdfcW zJ^d8-lu+8UyJD>rr9Hfwl=l3nSU>o+Y0tch@iWS6SzfW$hti%673+y8?b%7O zpAe-zM=E}oDD4@o_^wHm_FSo$+oQDS4#k)dr9G1s<1m!=yr$UCfYP4N73V3cN_&=69Fr*R>95$&h0>l~6u%>s_8hJ_4p7>2j$(Zmr9C$)?sKBF=Mlwq9Hl)U zD882jr9Ex4MXXt(_Hu0WQoLrA_VicW^FnFQFvYqaN_$RK%okAF)1f$qP}=jjVyuGF zo_7^{-cj1~t72Tzsm*!M(u#ZPDDBxm@t&fzXBWja8>KzREB14twC8HYS}96<9#C`! zr9H1J#!@Kl`9^W>x3$@x`4!*Ofimw|S+SOZ(w>bK_uf(3Geoi0hti&7759@-+HTycL3r9FozJ|}|Go(mLnY?Stl zS9AuYJ<}AOL21v|icZhoW_!9RI*6_>$K;BNy)!87*+TIh5Gd_AKrx3!Y0qhju?0$d zu2q~fDD8PfaZd!LJ<}EEIZAtGnQnaDN1|xP^_DwwC4=Pco(HTH!1GV zptR>H#W)eAJs&GR8~(dC+cURfJr-r&vzp?5JW6|ZP+VV7+H<&K-#SWr{;b#&gVLUx z6`et8&l8IC7o|P#D(oYp6{A{%1_kq%$YZYTXl=eKV*u#v{o_7?- zGfI2DSKI@iv(5G_tl0C3^7pQy*dKw?o=p{FJ(TwBuGqVP(w?Ifb3c^!oU8a3#aQb1O?&25 zock#Ap4AlNag_E9QtUTFY0qAYdm=rawC60v7#*cOw<*?2QQGsgqBAJ%`C8GLKQ!&> zrsy>4D8Jv86&*xr&*q9bHcET;SIl8i+S9JMKZDYqYZPM(l=eKJIA>7W^M>M{CQ5sL zQk>`An)WQASW81`&sK`hHlwuXIK{dnN_(zTjCWDmGg&29#D++P}=jlVlMDD9c7*o%$Qo|hGS{ZQI7L-9Fq zl=jS0e23`*O?&>Jm>ZyD%lp?$vBrbap7j*>tWnyttKyhMY0q(ru_H=*E>QfAP}*~o z;y6HQ&tr;x!zk@}Q?cfY(w=V>*YO3L_AI8DFQCkOHc;%hK<(wQ=_!!6va9SN_(zXjL}ir^ORzr0!n+{S9E5Praj#hok5xRtgPrX>L~B&AVmjJ z+OwZxj*ZfuQx$Vql=fV$*lUl{o_{FD7AWm`RdLRswC7vJeUe3+_H`#AjKY6l=fVrSOZ0A&x4BbE=qgeQtW3%Y0uA!apGc4dzMnHd!w{xpkiGQr9B5L z)=N;@bB^Nrg3_Lw6mvh6_B^6k(?V&_+ltPhwC6{~`MY@2o`n_jc(g-#uZAebNa&FA zv#E-E{wVGFkK%sg5>0!4ub5w=v}aXCQ&667OT~MD(w>7ApCd(S&z}@yQIz&vsu)Y5 zwC6U(_#UM_k1ED0DD8PeF}^}+&)2GJtJ9KAd*)CaS19f2t~eJ^+Ox7^UWP`N_i9tc zdy3MYA&RjDN_&n_%*#;PbFN}N0;N6U6-_~D&tr;fHcES@DaPI??fFJ=eOan$&mR

0nPLwMN_+NIToX~+bE=}#DD4@mXbMVu?o`}gKxxmDiZL)s zd)`ybVNu%it73hlXVab@iendL-m|IV{s&5X4ph9SDDAmGv9BJbJ@+a;JB-qve<{{H zP}=jo;xpRIH0@bPah*h&_Y735+oH5*m|{MSI?8cyvf_J%P}*~aV!sbcd;X@luA#JN zs$!29N_+mT*dN=gX-`+hIfK%k6&3r!QRY3{D9&?~_8g&D(?@B~m5R9^N_(DG?A1kS z&wmw7UbbmZH^uk>r9G=F?m3{$dv;QMw=hb3Mk&@FP}*~qV*LuGJr66cFDUJqrWkXf zwC8_{G1qcUd*)Tl?NQpZn&SLL`{w*r?3qA2mY{wRp7DzHag_Evp*Z(Z+A~dYZ9-|!e--UsxoOYbit8jwdsbAO`zZ6C ztrf>EN_&n}j4e>wGe+^AqO@m{V!Vsep0^cym{Ho(S|wr)0Hr;>6!)@F<~pm0i``d z74uM(_MD=)*Nf7g8x_q%Y0uM&{bnfbnW?zGptPs0PsDm6N_&=2tec_Cd-^HX;8EJM zhvNK2Y0q(r;|lFm-see*&%3PNG-Vydbr&5}{&%}6p0EDzj;sH>OHtbM7sVI}r9Jm5 z#vmx|nX35i1eErCq*zl$Y0poJeIsi$?U_%pwu#c7-im&pqsnXERI!eZ(w@B($304W zj#Au%L}|}yiqAfvwC8fgo&=Qk+@UxZP}=jDVjhpuo>vv??I`W}N^viG&89u`E3PFd z?O9QA{-U&JW5wrUP};M%V(f#`o>7XqBuaZORU8K>?U|&w{-LyInqnM_+RJtQQC8?;QFXDD9c4 zxIc~3p4rxk=rl@u7E-L?p|oce#k~ZSdCyjg&px2EXSiZr1*JXbD2`o}_S~WP%p*#B zUQ)cLDDC-Hu|~UY)1Ji?drnZ=(_gV3hSHw>6mvh6_MEDi=b^OcPQ~YcQQGsYVjmgm zD97K2ig_MNdwx~yq3_$YXK}@P7)pEAQ>=TVo67U;s#v2%Y0n=O=L|}FE>(;jQQC8# z;yg!b&#Q{-I7)lk){B@MptNT-#d-dxCn&~*DDAmYao-fBJr617#3=1~ zPjzjz)^FO=Suu}CY0q+s>kCSIHdgEdMQP8TiZLrndrnmJ7o|O873VKXdnPK@pwQ0c zz5iM<9@?Pk%#n(Dcm3G~^=ISI!R621q4-`6l=i%+INwm(GgGn7)vsyK9E#%wr9F!) zK2MC&o;4I}zUYYZ_YP8AcTw82x8nDP(w-9(#}G<;E>+y4M`_Q^ihC0%?YUpEj*ilv z=M`($DD8P)G3G~U&v%OP>4r^v=2m>}4y8RSDAp%Y<~>^~)*evWGfXk<S(Oiq8q7 zwC6I#H4&vfcPY+kl=eKUSW`u5&wmv2fc{N;=24t8sJ*=Rt0`VHI<5R{OT~H^N_!4d ztTCdr=Ul~ipP;nocEvG-(w-L;^IDYle5zO**{EqxSH-$0N_$pT+>1u%l-IYp;yp!a z&oISaPL%eXt{7*dwC7gEI2NTnPbuyXqO@m*Vjh6fp4Nbfy^SdCSyD0gLut>tiVmW* zXB)-+bCmY%ueg7X(w=t3z95wLT&q}8yB9QQEVzV(y1B z@7Y1IzJb!7k&5dON_)mCuGuKC&##K+ZPK)7F~v9sr9EpaK3{<{ z@7Yl?#zbk)QHr@KN_);%tm&h)=QhPTgVLU76>G>S?fFb`o^RT;XKqFFP};MeVr>(p zJqIfGo};wqLd88ul=j@M7`LOeXR2a745dB)Q`}=2*tBP1#X1O@P|k(*74s;R_6${A zUr^d}ykcJqN_#F=d@mhJdnPExFDUJKNpb$7wC7XB_wj7jbY@P)XW>zrvXSDopfu%p z#qS8EDYq%+y6DjIZ+l1a8J*3Wrp%>SuS01{U&ZeOr6~t0*5*)}a*1Ny8>J~vD(-cl zH02w`dA>!{lqD5=FHxGZh2lHJQJQj$V(%|XQ#us)Fi@KEf@1#x%6w*);#?inG-YMQ zbpxd-`zwBzC{4Loag9J}%A<<;5lU0OQmkcc*)*k>Vho4UlwB3?A4*d$QJhC8^Oe^otf6evG^M-ZI*HPh9Ta0Jl%`yu*xQZLl*bjnUzDcIQhat~ z+omZiDO!folwpeXE0m^;QH)Pfn(~n1yhLfrr;1~DyQV2iD%SK-nzEB(T?(Zs=PBBV z(v+tZ>*y%+nO_w9*S2q(vY}$UhSHQ16!%V0n({ZrSOuji|51F-YjD$)o{IarC`~z7 zF>Xg`%9V=o2I?rk^A{Db8Ko(|D2~Y;nx?FwxR;O8l!Fw12TD_}R9q8Ln(~rjU4F-= zDYGl)ZzxUauUO+jCOlqw=#?6yv5n+gkn0&*oO#heaEfpAA&p zb4C5i&rVj%YtaVfXA>3oHPHIyXP+y&HMFg@Uin!s#j%U}mY)q(%%jk{=)>(1c|OJSq51NBiswV~=J^!o5$aZc_POHRKd7zshw`(P6~_yjr~K@2#W9Y4 zUw(Fn;#z{{EYV3OJl`R0t+qU$;`vagJfGqk#{YkJ{%^MO8;yQD zH=+SmgR6#Bji_p`np!oz>WeD=8lSma)v&4&Rqa({syeE^sQT@nlULfUsz+6ys`jce zRUK6mswP);ujrpdQ|nP8c;R1YFyQ%swq{|s`_xK=kFL$HMnY6 z)rhL8Rnx1!sQT?N_BB_HsA{hoQ`J#5p{g4vYM!M>RiCN>RfDU>RZXgzQZ=n=X4L>L z5cxX>R}HHgQPo~Gt!ie~tg0?tgz|jdtA##T+Jnp`!tYG&1}sxAx&^ICdT^{EN}XL#jqpwO5U)8do)`YD(4gsxPX38%FQW zsE1KiRqv|4RfDUBRgI_`T{X69T-D^Nsa4afW>s}znD1+;>QgnKYH-!?s!>&=t2(MC zR86j$RyDI~R#i8qA$cu5s`^w7sv1%?ysEuwOjSqKq^c=Z)2hCx`fYNQSJ17hcU9l2 zK~=-5MpU&|jjbA2HK}T9)%2<_s=6?F^EXq~yJ|qy;HqI&qpC(%jjftcHMweP)y%3{ zRb7}|`kSfhQ#GJ!NY(JFQB`BAI;tjAO{tnzHM6SKqj?40s(MuQtr}D{q^iaLW9Z(> zJSbvV*BV-W#t?)@e)~Uiskq4dC>M}2d&(S{!8HGi9`(^)h@mk*>s_^SeY6i^P|Krh zRrRfp_CpL&d2~S4K$KTC2>tdNv$hruu8;1F7&P+ekgDJQT>k7Z#1N2252zZB^624+ z0UeKys2W)x9fk6aoLtpjA3YN>oZ`=pt~$RyItDQ$;?c{h#@0u#Mhtp*w4>@Klvgzl zb>siCjvGy=k4{7kIe2tZ)kF2s$%sJ(k3Ly71?8DvKnw?XbZXTr_0ef)f%52ERnt-a z>tKCh2{fygb7eqA-IKKc_PfIP~DUUf!!<}Rpvd35fo-)6mebOE$Td9-`g z;`PxUhzmH++^ed0eRO5SC6!0}RIODX?TZ#KkM^q?P#+zLxB&5I2UTrTA03RiB=G3Y zRYU5dLlLJdj}EIkpguYr^(c=XUNxdVIub2i9vxM6a(%QN^(>E`Sv9&odOljFJUXW8 zvij&))T=ytbyY`w^d_`yd30RW9re)(Xu0y}#Hva4(TC9T<&ZwGMAN?GyR381J>g)RGEVOcY^rx!dE`B+#I-^y}qg|@z zu8;nkzsAH4%@P#&F7HL*TA3H2+FK2$Zi zKKdluusk}Y>V^8~RMfvb`byQb`siC|qw?tVsu}gsnP@Z4zyjmx96s(z}E za!Dw6R_Je47nEaTZnSCnv)!r|sE>9>1Iwd}SM{im_ClMLM|)STTp#U&HZPB^Rn@mX z+7E3}9vx6Mus%8n4JwavqgoBFk8)$L+_$2?Roq1JUo;GDRsJjs){3Q9A3YpxT^=1# zHL^ZB3T;y!J^BB4ayGzmRo5MVFLtRXaj65I#LYOa4T^CH5!%)2E2WNCyDROY{bKh? zGQmM!ti={yYsG41i^Or<##3D4c+8XxGvZTE~T{X`Plabf7J?3Wyop zF)5`cb(7G}IQ^gd^!C1Ut~>k0oALPU@11+@x#!+{&V6s!ZbM~u_3+OxcdquN8O!kNb`-m%WwzF$gFrwL82OOTdOfJs^_*9hqPKr2Ov?Mwyjx6RFiG%O-NLKZEGb0uvSTFNb8hz0Md0z znuT<|lHP>WqNJ4w)F+e_hqPWvbx1cT={O{+W$+IY)h+l3iE0#jLujcUVQi47_Sn`a zB&svEbqEsG6nF}W>IXc9M76@UmSZxgF4)#hkf;XORvHrJd)ul*qTG%ML83fv^oCpsfQT~Gm zkTxl)4k@anhamMTX%%U0C?m5_=1R^Ai%;g+-?>+ghvkox2*{9z60%XxxF8T8H9X#_rH015(B6*Q5k; zAIxhq0rC~BSxxqXd<|<-lZQbb#!A!VDUd(L`qAV^Am71S&}1IuG-gIyGkjsp$2ib`-pj(AOUST8&l0bpbI(LA4kC8ISZ=!T)ohrzo2I()?3r-=QdCyOV zb9u|U8)e3AMLI-YY7it5>x;0n2@eh0@&h1GGV%?OkD)Yao$rEtiIEwQc}D&cB!)7k zTm22lV~o5CaxDs+)_DtLKO?^c`Hu!^9WCEAwY`N3g39Pi>__nJ{xtm6*Mg2i1gRC( zL5W%cQfqCrR4=&*OBOm8vG@9sk@$5j^0#|Yy=a}*t*{`_icT~9YMszJbaRRQCOUYJ zE8)`(uzZm2FZ@BxZ}jDk4OOT?ylS<_AcsL_nVoNeoML3A(aN*@hC%4e`Ymomk$a>U&?{fPp807a1^0YyIVvsdBM|hWOIb)D78|3>2dEFo% z!g<8IT+5#|$Zmr?W{`h2$gkjB<6W-h4ufnp$o&SHF$kTQyvw!x>o_ramrHsLvd18Q zYLN2=S-rxu>+RFq4069g{@frxGf2yarR9P__8H_!gUlJ^LpU3Hmm7`G7^Gs5V+MK2 zAlKlG>0Penyg|NdkkbZv*C3x*>Dl$-yu~078ss^H{L~<8aOU+c*XNu;zHE>uK~|ym z=vr_ZB+1ANAbCdSLFhfNZuKq*y@A!_12}QdGjc6RH(b*?Eg(A>=>VBvqz~jQBf}tc z_SJTFfY4hqP3{BPjE|Z;07CD2H2EWtBaA!&a)FT_f~-Zs)veBfY+&Sdko}BY1Ubow zji-%g7`X;y70R@>d_72>kqF3UMiL-&;?b>!K-|l#)L#O*z;q6STx8^1AW2kWZRaVF zy^PRr66kG**7*mJc}CsL zY(h=deZ2rO!3h06W15k7L0)9U#?v#s4%Bw80a?b#^&ndrX$LvNNF3x5Mg~DHGExRv ziwdgy+6}USk^4dRGx9J9Rbt(WehG4tkspApKn2x0KLT+W`4^BajQl&jtyxR;mJ z*Wew}i%jQckXIPl1k#4uqkGSTY+Q zjYhBL2hB>1W1yR(;!^=6#~8U9 zZxd%2Sp)J6BlN~`j**QZml(-{EWeJ$2V^xP;~)`6_JJfBISjIukw-zM894!Rh>_DE z#~C>Xa*C1HK%Qsh9gsOjE`wZR4+A)`09~q!r`{BO5_x8Oeg2W#mqfIY!1o-ezPU2z`yF{W%P>l95M2HZXDmk;@>@GjcUn)7y-!0a?1<@AJ(ds~On@5@F;vkUS%If$U&p z5@bIk2SAQ6@^z47j64Q1%gECpXBjyQGS?ujqqXw3`tCAfZ(T(z!TvLxWzFkVv~n-1 zO(S<#>Qj^DQIFwWWxZC~rmQUdF3(z7q!hY7+l{ z>cu@{^=-->uSLGPr(C-Np4v5G(qy$Zu4#1J*l2%gGG4A@2F9x6{H{~2mny}2t-7-u zt4@vA%e6vzvRv2A? zZc+`|yU~Y`Ekx7fd73FRbZ9}!#eC+#z*sG6XkrZJUKa4D>n?pN|RW02F~O|h*?7`lMnkpV#iL^#?x2|PI=cvL#u$b zUc1k!*6y9s9k>u*Gd0xYhFS2@H{0IaVu0BB{iU(-baisFVPIi7PYzWpQ@eCeSZw|< zxK2Ws@=c?yS`Gf~ND-qIcjfNsj^8MK_Qh39EKK!|)!j*k>`fqbVa!07D388EZse6$ zD(EB?95<+nPK^$ivEl2farQAcRj1FrQ(yQ(xfar*GV0QHO(P`ctF^joD>n|mJ>++r zRJfC#7Dd5ZHr7bNiH*c|l(+4~IJfN_LQ=3sMv6`$opSQg*uY3A)N`epF%&JNqP^)v zab(xTh*L=Aqv>cNlgjoqPdd45Z^~(^-#hrZ&m{_xfO_o# z^_mCH?KjlaUS=@9Fr2~WgJ~$IvP})sSJPKGiLg~gUuZYeQD1`x&~kEx+XkDj4>wyj zwYRX-n>n}0l~#13*?2ycPXu0@f!8J0Vmy&|l1)eEW>cg2UsMiR)NPc7{{y* z6o+!@!Av5U{d~&lkEXKeT(KCe!TShQG?t3@M~m@jSo0)=YMyXlw&`}Kl#xk@GE^(WE!c1hNr5Up6~u;`pR8cAySCNECYl|Lrq$~SDrRCp?J@=t5v3kOK?W%z zg483OjmY6dM2vc5L?Q+dA?h(q8l8#=^&mj8TqcvtvWI(>mxrS`w&n7Pf~wt_Ts$G7 z6p=yb5K-zj6l9b-M3lOv!yR%+9U@BIGAJDe5K-zjOd6evD0Lfd%Yk)@k#`vi(nO~i zd6#seQ@YtHM&2a{+GzkW@-D-q(Ww}Dm*KV?SeF=ir=cKCbcvC7N+%3AyTr(iff}Lc z5+gT)X@t8=jJ(ruTMn#SjJ(58kS4mt$UEf7jiuQwMs6%_WBGTBksBMx*kavch+bIu7Z(1>LsGklpF9!C^N&3K$iq&% z@ULC?*Dm~%=M#B6i3tDXDwRi#i0D5e`jdrSmTg&-JA}OsVNaGzSqx>V>lF4ng*{n> zWQmalM3x7c{AFsFiCd;+nRI1Jl?hX(Lz%r~ZlcV?zV>Sq8z$5yc1WmAY>7~th+(Kr f8VyOKMp_6-qakTDB#o-Ao!V8}UhXYTmaYE-(fD}l literal 0 HcmV?d00001 diff --git a/x64/Debug/CDataDisplayConsoleVariables.obj b/x64/Debug/CDataDisplayConsoleVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..c2ac9127bd4d3249bf54fa26ca18ffffc0171dc9 GIT binary patch literal 32055 zcmds=3wT^rwa3?x2`wiDQlRq25z5n&rfGpvC}ujDc0wna>C7Z;G2A3g(k74>c|bsf zR46vIu>}Pyq83H%^>VKjk%yv|ho%ZhMO5TNt%_O&FXdejZ|{HY*PKV1Ij4Mb{qFfX zIlr^^UTd%Y-sjAj-PRi{dg{hswk%st^zS5(vVpdt0mXcZln~t+B6=z&h21Qp@}{!Z zwiSb`re~#;XwK&Ik7SY;bqCIC3osyHXDx4~*va)Q* z8E*&V!{_Dom@28fvaHt`ZyV(4^ND^^&oPL~@e%P>^!E#a`m@b`p?H{@wv{=}5yvZ? z?~Gh2;`Oz)3|!u(L%s*t;fhCADU}WMHMf{pM7zU8pSXbNzm`eOsW^%J%JNgCK*Vs3 zDq|T_mS0`sx)+-gqn*sl7`N5+beg2qlvUx~5e2oQ~tu@omh5*Tkp+QmHM<7&6OO7qoNaXZJs0UVOV$YV1f zz$O7gv$P1Ok>X()uvQ1GTeB1BoNj!H#^PeKO^n48!nd(_6Whc!JIB6?(@4A$^Vzb* zb=yOU5uEeE<-(zOFJe|o97>F>8D=dUO6dTpv}U7}!u*=edEBINv^c?KII@QG1%ti9 z;F>LbHMVA}j>e9heC^)7dxceTwf804)pgrtdZX<0Ejw8|KhJIyHftv~{lVvpe<;_t1e^}lL6c!rfKFWK5LxY$1 z)k1CJ^4{aCyf<##hG$=3D)cV4fWaTnucsg*I;M!Ku1q^ ztf#N7qG9OlISo~O|I!ev!re(#M}Kc;^Odol?*5+6w)*D2j^-7eZT)3ED=wjq1Ku|k zrfCQLandB(eIWl0QFZq~Tjyz+(<2Le`mo^dju^q&b0V>xuHKH$w!TQLv$?;&qb0Jk zr!Ugn+uPaEB7EqN^bK}*cXY3c^f(k}MC#l6`r%}xqP${O**RsiA`1pPI$Qa&VpjRA za~sRWVNuH!tpzhlEnTfNv%0fm1!p%hv%9CWXH`#Rrnv8zw{ozvGcq&P8ku=Tb6@wo z4&V(}bl!@d!R}UAl~?@(A_z|P&ue852HN}DnmN36#VVE}Vr1r$&K_A(GderEFP$N) zb5&n+S7af|wZEaJqouE>zh~t@q`sqnu(>mm9T;rw=xN|`YKU`Idiy&1+ZyU)4Y{74 zPAFu7v*wh|#=lwT&Ys<{qNBSZ(bGS$3=Kh)&XTUP=TLuNOTl7oh-KTG`+6JVmkoCG zcC~e*iJ{#L^!0S6o4ebP)`Tr;<+G}JxoA~&Hl2(vkELp}sbsu9nyHR1NXD~`UA>JHh0}3#SZR|n<%R<&1rOMt2k^RdXNtVIxXjh&+92b8(}>UO!Sa&JRHt*%+Qs#$WL-_r zR_Dx(%an9kl>Z&@%ROG%eSRaD&kL)Q$^G*8NJjzN%-DQ=8op*+<$DukT)yk@c{7-= ziBxKFG8L@~*iM|DY9nYP$2qc~1JbGL+FU&2>d`t>v>xsUKf%Y{pY7w-o?v;CojFyD zF*9KHoPE}A$C>e^sRcS~rH+g*O{Hyp;;YD4jjPV={rjz8`O3if#8dIa6Cw0bQ%;B3 zrWuc>guH$D7UY53*am#w4(4wxnys!~l+MJn*}6>7J{)nBtJ730ky;$5<0puLd`@IQ z&NI$o!kL6=n@6BbKJ2PPdzt(_Seaxos8yw_)A9W*mXjQr_E?i8;~cQlbv0>|S^<4o zFwP0ulZYvs)Hv;BGH!r=fVQ$1VebSh8@Uq5q-&%X+|+l&()b5A^_>XPYd%-APS=pL zdR@kyOTc5xD-P&SofHI_!MHe$HQKf=Mu-8ISe5;QK^*`=6kB%O}DOX8-e+x8u$mhj{XqFH+9i z`E>BqO5=HD0p3!}2$vor_V6{a={X)ma|=%RRL&VFgl-Y>0+{nDC6=OSNG-}$ny zI%)3ysbU3R9!QhtzhD|X#a9GNLyRtG1=LY@J+lL;)rdYvL6x{M(|LhXa!r>P1XA`+ zDZxs|tRRD_VL>Qwm4ju~^{{}O=3)L@^}>bK+~1S&D$yT;X-1RLObx5X0+nwK5*1!& za~Uj^VyQZ@3=dXGd>`V}|4<+&GVxqprWU<=VKTK;PU!)Qt{%^SRQ@XiC5=S+<}oYp z#$?*_16fE{=N3h)Ym=#LR;mZf`#6QqIq+Zk(O7lWqG+}%o|B6QZUbC>`SnAgX~Mg{ z2-fP&>O|&0Slf}xatM?9!75O;on&<_@?Vpd76MKQw$(>a&HUUR%xmYED7_BWaXka0 zG{VaZ|7}M<@X*5!xBTGRrt8gvy8l^RC!TlQzpftE^}Y2ufl{{Jl=J*o;d_XVCF^pr z1o2$rUkP`$@f?yA)24ql9+?xVOl@{)HK)lH8%#N!S{lzNZ61>j^PNpj8a|79RR*Fk z;JE)y0{kE57tBMCNL`q3kw66ftZ=nHQ6}dS*3Joa8C_!fyIHUttx{qhsTTDWYaji27?O&8MF00)r&>1R%N>=kS+Jh z&DI^bi2OH9J(Ip`17ety^9@&Xa1ZQ*OR!N^=Rw!CD$!u`j@t+~xq$PI+XUJio@xh~ z{L-mRjtkN}Ne$NCS>3rj4ES_}4e0feST^{dw^`NxT}H6SGPn~GO9oNu!3Jfm8oacz z{^z^Ke8Rj?@}Fb7Iwu}%9^%H5PdQj=8C_2HHLT6}t+bF@qrHlA3vAkRr=f1)o@-OVYjepA?+3)aV=0)8iLhT`uc-hA*wIJ3Qnab|muDE&&XKGrBG#(9q7 zdzAkDN+0jz2z|WMBK-Ld&YZ7G6`xNxDYo1B55!|XzK%2dfv*IHJ8=F6&R61mH_mLQ z93OqODZtyMG+puSh{tv|1(&%My;UEn_YVP+O4-;#nY!}TzdN2t!Ero z@k><(w4eIgtv6R^ROuyLdivU}r^jRMr!Hunp1yYLZE>Y{zbid`t@VWc$_ z@E(`GzSjCWdPI%S+TU_@t^L*4ZoOqLy>^$LzIN+vbm?t&>FH~?-gcMXGcG-St@U>B zfED1-<)KwJX;9}q0qwce-ObP)Ogej8UFqn2==zw=6AO+?e1`EkPhH2nUs0dr74bLS zo^QePUuBP@kq;zYv}L)9irM_`7azLZwEt3?|EsgJR{5zz_$_`ubiRI|t}7uc#peli z&EpKmc}88UFRPmeSGCPI9z`>Y79>-##f{};a2Cenu=J`tq`f54{v5>vtL@;o-1*S{ z)T!%A$k?BY)wTAgU0us><`(V4pNhOcv&Z)*WEGuk6&2qdN~0|Q)%f7>$p;rr4xK=u zbm+p#XI(hwNQ$){MJzjJA2Jk`c%OmKe5}TYf4IR1uZ@lpM6?Fy>55riZezWUZG$YK z{qgtcWeL5*0z<+gPj9-k$&EZ9V=VJ?-@>vIK&9!kiNFA*4FWYdhvsXu5m)Tyz%+1 z`b@5B94mb-E@A)WU7d}s_?d;rbSha@8?A|FPmEZo9sVhfKDacFFX5}^_u}RXE%kVv z^n|bAl!Zf+&|wk3%vXGVhX~I~Y_Gn*)Ba@fhIOA-+EZv|AUn3##@{*M$?%4}9o>%# zzthD2*uT#chLokC{+M?>s%zgVdKdl}J9r7%p0O!-HA5eTz91Fl?0C(XEy)rJT3`8h zcBPFe=AO=9`RXS-?^sWUKZ~*rTCTRoJND{Nsm4izWHW!&i}@}C61uwZF?0iTs$fL zR1w=+7(QUq+FfEP5!{}6{R~FD_Bh+MG;P`|zq>DVbM-M7Zkjb5O?_wmJGWzcDEKgG zydMy~`pU~Zd%h2!FfGDgo^Qj%rE!9wui-C`abda_f8Q_YyZ9?Lwu7X`u^4(kAVNO~ ziU_Iz$$0ZYGTuhebP>84bdsR0pc4h%2a*~OgQUhZl;kNQ^kmSJ z<_d~{r0xenQuiYuZatIf217R)x*a4nzNBPf`kIk_!^rMeG?^YT^bJ!lfqa^dN5pk;z)f|d%Z2UQ6g1W7Byh8{8WQ$r`9M`eY^$snmw4w5z3R4y&Ew`A^VNjC@{kW0c43fSa zY-!68P^*Y{DyULW(ohy8EnftZzFY&6dAr@vcRqF6ql_ z=v(+lCA3G8Mc1P*;2&gb6bFj_W`IVCh%kwyG7c>IGbsmP*lfg(co zfFg^Y1bslrex}HxDQM652VMU8Hj_nH;dGLaU8BgN4WQ{l_DMw+eI0b7kbP5;MK6NT z++c6FB8!$oaI%nHtjMB4&?!Q8r6P;&0ikI@ms>lNMJM8Ps*s(c$f6H{P7|`2B8#}4 zqVYiYdPOKd(CI?}fL(Pq#YLUyMji*|xgb%^)8B8x7BB9CDuRI3O- z7zXiJS3;{4S+p9&BU}lsQDo7BAYO8p&^ARDosI-}ge##l6 z&K9y~6 zC2)>M+Y&ldkwxX8xk5HakwpWbLxpTekwwpgmI>J|MHamQ;!&@J-d1GM;c$*ey%IW7 zkwqT|RSDTTMHW2{DiyLFiYz)8iSigxLh}__lm+n!S3*k_S=0{V5u}7V6V4uiY)pYNVc_?6zoEE)sJHvX6* zizXeZ`$vf)*aJ9)!89k^X;_g(^FZea-3t_1bTvr! z^I=66Jp{U3#QT9Fi}r%95VE49C0TRq@b9w)vLgD*1`S=0@>PQ>d|WYOKA>xJxIMHamT zS|enyDza!k78W-MSyYilSAsq+WFJ+8bp&XwkUgLX_CO=jo+688pu^lKWaWx1>Hw`1 zvMxmyeFd~$$iAk?qCbE}h3wCYEIJ7{QJ)a9Qx#d%2HGHG9g1KNv{BkqWYMdjn}qC5 zMOZULh;A0Lm?HFF&?kj#y&{W#1p1VaJ)y`V3j@S0LUxEEi;|#Qg)FVeqMJaU7P4Cu zS@bk$laM{5$fEaQp!Wem*(ODpr$LxdA={-0YcotJn4lq>s|Y@WrU=m>w5{h6C z6qfcBVa)(460#kNEIQ(Jz2-kk5#|NN!61yM(-`0sK|xWap|qhULp=6L-L;0eok`hN zL)#4PFtp3i9z&BuS~p^-+)$;VWro@f4H@F+7Se;whWNRKl-Z&$M7jNgr$!P<(7@45sIlt zQ3ND)r-P6TLQgX^!-STDxDOVIy9-HkO(^G|duLR+|(1RwF%ZY0>BvuZR zSc7Xd#P7F>dJ9n%`YP8}h}MI+K0@>~h-)E4$3c-Tg{T$8Wg4P8L0pm{dLG237NQw2 z%Ow<|P7s$ti0%P#enaB<2In$Fxvu( zHMh5-&^G)n&qq*XakA==iJS%rw?RInWT}ax>-}R!qT_tUqxGamVt-RbT0Ro)JJYJ> z45>rL>GH(+j3>_bJaJy|#5s(M!D0CFg{!spbw)1&p2NAi|O>r4zUPCJb};HX2UzR@H3mP4z|wr4pfDO;4b zAW)Xghp0_g}5`LR1FG)h;v^?aIe8D4m3=(yg~+k^I^tIS`96r=7Drk~WWI zlSlG|N5VU?IxU~)k@R^aU-d|S?U775%xyX8kzD1GZ1G5*_DG8GY}M&=g-6otk!89?7w|>2g|5dL-9+BzJiv z&v_&V;Tf#c@>w3qN{{4LkK|F07;|3Equz4KBwVW@sHNBl%l?p`vHF&*9Z;+HS;_7}W-DVR5~u;q>) zhfI9lHqwuR{>h%&QPGb|{w*wDDd?B3d_}gsVdX16Z!F};XXhJJzEnIfNBPonz5?Y- z#rBqy&-msoCThg*9UEi3t#g+5amGg3{jkA5+FcsO&IgXohy68c(F5{(_QtSTcU@Ba zY~5iDuk~S{V{HEti;LuV^PGL88>Ew%y@Lu>s@bo0U#Y5%oeJ8q?YgVB64^&KOxN2orCH ztt0AvND5UIZwa=q+72>q*mf}4mpMPfik~>{VMlBniH*UrUsN(3t&Jxgeaans9}UqH zZQ^2fM%Qh8Vx4iuzKLBQM`0h{JAU0=sLDNNeY$VnrPkYAPG68*T!tI=cDFq`y>|fk#~_28#IWW5etAAaSDVHa^4e?@S12O4Y1>Xeexf_J#{-)>QsVsH?5sZW|zO0+rY`U?rx~q9r+k)o) GHu_&CW%Bs| literal 0 HcmV?d00001 diff --git a/x64/Debug/CDoubleEventHandler.obj b/x64/Debug/CDoubleEventHandler.obj new file mode 100644 index 0000000000000000000000000000000000000000..eeb1687a6280f1ec7f9c2666aafb4e39dcf6afc7 GIT binary patch literal 5369 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 Q2<39ga(=Bioi~g0Z&Z!}$N&HU literal 0 HcmV?d00001 diff --git a/x64/Debug/CDoubleEventHandlerCollection.obj b/x64/Debug/CDoubleEventHandlerCollection.obj new file mode 100644 index 0000000000000000000000000000000000000000..9e9c0f5cfe18784da974e7e10343a1b49df45da2 GIT binary patch literal 26124 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CDownHole.obj b/x64/Debug/CDownHole.obj new file mode 100644 index 0000000000000000000000000000000000000000..4510ce426b6bd7415e11dbea15b200a578034145 GIT binary patch literal 56129 zcmeI53!GL}x&PP5Ah-tPuBcS63W7>7TvWu{z%cNR4lpvHm}4-^49w)fjB`;unPPYW z0kzx7ycC%!$74q;E4)UgY2{I~%*)ZDva+` zyPtL0&tAWE+iSn?e(NsU!~F1)$7`qm(3o?LY?IpS*S0IW-N5~fIj6vwFJ3IhPIf6% zynIq!{fdrNW2?k!Ox?-GTrkF%1)mbjp9_sio1wEOwbs?N*F>?{TVtMUGv>;B#Fl1P zVwRUoS{siygL6LjiL7)!UUA8!mUz4r@lxj*^RfG~^CRAhHqMgSMrSb4I#aS^QeA6( zZTp$^k#TrG{8<+r>D~@CliFKrYC|kzI*GSvy)iQ%kU0CWD={S{S}u#D92^|4Wf$38 zxhzSqe_?rgOVij?dSl_(^!+=k3BA9t@Ikip`sWJM>pKh2dojJKaP0ksW1aE-Ib$Vo zOMjP7dgDFmjemH~qxQ zIPudPx4h(cpL1;^z3D=Cw8@As>DnE5Rf%(z?3c1%%6>Wf_7hTS3Pj_m|Cq z%<}^Prv?6E9-O|v%$1w@!?6Qmd1J4@X~RWdxMRqrDMGn&hj)2v#f3Z0TeQ8%3>})@ zGRj@!1W;IKivvD?@_cEYBPigfMk4vSs5Ykg+p{Iwgux2bIHtc^Qn zZG6&KwM}Ieo0gOubF03(KTo7d_=lTIo9PY}G3)_InU6|Wv zU0Cj^yLR;4ww?=jVh_G-IY!*NpCULe-S61+-yTkHJjXeAxjN_exz3%wgM!xL%@im_ zK?8==&(&M)$MaH^u`%Y=k~eI^{m6tgbwtz zySP1^)5Em~9bBjCx+J&Hz0`L_hs{0sl3#}%>YUr>I@hxfqg4k6-PxnJyP>OJS;a<% zDmPluxevK?XQ!Xt>?A0A;^{c ziMxUL=cXnh@0_Vg7kR&1Qy0TcVlXjt;2gZH3`?A)Zv^Su081R?oCaC zFG(FX_uxx@9d>9Xar@j#(z~gN)1k+y$rJH8LHfO!nr!m()9huEt-ffwo{PBtID2ho zGsnGKCh_<7>5ZS;;Bt^V{P>DUniY^VDfZVzm(5B^ zhh^cUgkE5NQ4CyK*U1jgmEe+|G zO1h=JOSe3vTQ2FA_by#SNY^0g8hV$mC8TSSbS?SPZRtOh3Ya|u-}2RUr2Z!++l=?V zPO}_QR>Fb%Zx~f;OaFBIR4xp&ECH^6;UAjW=ReuHU3s$YyYgf&?aGr)*gaM~-VM!O z)e7>es~{Y>|AzS$;^py^xv;QC{0~-;{3p9&SDx&VU3s#BZe=?2G~(ST#{BK9B!04Y zqk`l=+1g!svRiiL$)4MlCrdE_%Bmn)nq7YR<&5>_W&SoY|2fVS3!x7JUsUVHfT>N)QDV|D4A=CjtMo15wGuQ;sO+De8*UWdBHW zMNRGLsmZks^|hzZT+!UIrjA_YsIA=x;Z)nqI_E)qLu-AF3$I(T%2|n+ntWnYvy{}t zrp7g=PZaG|wbrao&81x1s^>S>wl=pluWV19)Y#Th)0C=e@2G2Ru6E^AUFI&OrM0oG zzWSun>c!2?O(duSr%azTjek>)oHng`MdO<4baPw#QdIY)bK>g5r<=Cc+8&Fwy0ogH zrnRLysw7#}W#y5@hC(o16pX8azD_P@f3%tB>!h=}?L_`g(7$VjJB!~+=PW#VL3&|D z*|OCw%ff*fV}=i1u2FJ#yP1WhL4Ig83G zD&{Yl)5F{lRQGrX#7nLrlKy6p~ z^H*=z%zS$;q@B&}rk#B$bAd5+)Q#Bbx^LOtyBcp=eeKQn6z^4g^M#$Lg8zI=`bQed zzf5CrW6lw@g><4Vv|@K-j{6MG);w)tUfJSUtCXI{wFbWoK+4?h05fb@31*k&f`YDd z=&s@SwU=EuKJ~R1Lj@0WBR6;qW`z3*mA6y|H9wZr(|$@5?dM=_bhc2(-3`x|d)a>c zq|JXEi-ft`aGK6bm=7E3nvOI!XY0gv0=?RTf?10e%{qmFcGxhtekVS zXqXu^?1|t_Iisc7lh_p@c6qm>ZeQc;YkcPYoVm%p*mT<4yhM9zr3y#m)wQ99$7j}z zHrdYiX1Lm))=?5#N0%9NGnDtWm%jG$ezupyVCCj|wX~h&`akoN1z;7fzwA%}R_@wNz#|PMyZzbv?DU-i%QDbv;5! zQg>^bIZ5_PP2bSeH#EJUL(|^eM=fC_D2*y*wAx9#aO2ce+D>x4{c`MU`MZR_uV$)s zY<(_F(fkPIQgpq!8>e*yC2yuSU^^u-LM_MUPPd@I-%L%-8lkF*%Iz4NAEEkMRbQ)m zKUBzf=j^Y~-*%!05x(_ob@jT-t*@T<)${kio=;?qNUmG2 zroOuQ)hhmO=%${#=cL)s;?lmxw{%(CoiSRsc27M0x^>ReymaC@V@`y`W7NK9J$=u5 zcI|^tH?KO7HdB@u8?xKXw)|}-{&2ge2J<1kF9{7MnY`O4=Y0cA-vINz4lu5*>_=Nk zu9aoCmH)`!R$`wK>Hdl6m}EnVrS0ZXcwZaoYa{P_8~Jb#bFdrpw~;Q?>%OJr%)z?I zp~ug1^|hKVO0An-rrTkW_!|>lF#I`$DUjAwNMkm*iL%Ob?GWE5K zzIO5cw~Jx4i{rW(W4@lhT|{5A?Wtk7@58v;`LO<#NtoxG%6(0vuW7u$O~a2F`_eYL zd;a*1{B0xa>-ar2kDTX^v9#_J#IE7UmKD_ZX%^GhNZ#K@;_gw3Xd}mTGk$zCe;bk4 zP4v_}_D+r-QL^|Tq3^DU8~Z-u)%Ovvt|#B!eZ{@|7e@5r-4>m^(W$#OacllIAvN~z zZWB?mUR3|SHqqB6c5RzT#ilT^Z;NPU>?Vfx>*Mn0kv%6mAb+&zro&7lPKnN^60iQr zzu0w1{zN%T%VYD$&3Y!&O{}aZn}_DVpxjRhOw1p-i>Z=Zzst-lW3t3P0XHFky!b~- zO*hWwei++p9zL29KfQkelg}r?OXKrr6}t>`FcGJAU5kkrdp(l7iu_T-+cl;TZFzTs zgg0XOcUe>}USwR77l%b&baCM!iT^sJOXBKCZFgtk{ZS!*7rEQ~i5zlvH6TyUT6Ec2 zyV!ZM&cqIRyEd@0Yp=8Fi@UzpC=K_O=>jd4SJ{_1?(s#6-M=626|yLH`RL}>F5SlT z+l=*O%#Z@J&VBb{1pB${N3!otx`CQ*kfs~l%XD0%KVPAy>)*?CZyHJWzwDi#@38NU zpTzO!dtKAL(aUsy&~$&&bbsz;x?gI#-)Xwv_cGmMn(k>$_e?L-J*4R#)pS4YWxD${ z-H$chgS|}mT}^kdrn|3~>As`s?$mU5^)lU!n(kIj_pM&0yH?ZPpy{@0y5-cJXmj7M zbK4&LML+oWapJk}+?~(9o&AOEZ(@HD`)AqnJ=S&Z=jJxCU(Eh8_M6%Bt<`n+vi}Tw zS1%{<7j1<3jj#CejV0OYi08f++oAEZ+i9)F$!@3B#B=R*Is4h{S7^Ehjq7&qoe*ww zug@pG-^z)%1v-)a9qbpef0BI_`yb*j*S)TS6D?u?vqED|Vqd+xG5j3lx}DsU@DlTN zZ?Zpyy}Pb#KU+C=TehFGi0AyIjjrRId|p!0_2lOy;yFJLXYc$xg1z%|27Bixd3rx* zvUh$S#oqaeR^HEJ*gHRuW#1b=4;C>YPwOHF6B<3oAbkMTrRIylnq|zj@_2>|7ZS-v~aRJj*iDRHZQAfU+eR6vC%NL zMOsAZqT^(`%VVi{r<@)~>7wIgx(5>Jo=BvNj+5zv!y136UU+oA=r~FjorYKbw$DsW z7*}`j%v4p!iniL;#+LTff#d2@%_~#w4fUy-*4CP{Q{&oF4K;14Gi#bU>Qm#&51(F_ zI;)|vwjtHnmf}sfZA9he!Y+PO^I5!6*uPEJW#QwxMwMrK7tX(mH}mo;-HZzzEiGNR zFw@98!FVv@UmM0=-XSY*3B|u%ee8-Ps-HVt2bZ-yqQ{Yb(Q%|-l&&+8ZlG&$Y*D)C zI7%m>ng8E~^8f!t|MraTs(%8TbD?8c_LkOoJ_Ypk?w&+y68BW?xjRJ!}#sC z==!4LWV#6&PhvAiNTiF7lj)Wx(zPVgMaRi>S0vJHOQegAlj$Bwq;vBrw?)?%9VgQb zbP=+)(Rv)Ei;k1&N)qWR6X~MkDBZmJ_LG{MI#$=GnWxpar|TP6HM9#au3ydgQ`6qj zN+4mCtqhR<0KYh%Q@^IIvHffbt8ZOhU$dgI2}9Z1mgctlI?2ji0&%PAYn#{9ozPf& zx}43~vW|S5@--`)I@T^?43so;n_E}=_xDF9*1Tpnx3@R1c0U-972wX%(44VwTw2q{ zJO86Na!qqu8=IOc8(Ts|%>G*V34#W4^uD&Yl1}~hT*^E3xe;*Z@W*qTIvVTRlE)g$ z$D6fg4O5IZjVO7=Y*A!2mNvH5x}Qg=pWjhu)aHG4$8IaI{l?jT{l8IA*&{#dE7@zr0yEu5%$(^(V&<6rNn}>dzM&0qKk=z z<#sjkVC`{YM(JL{8j#X6x_x>!geVHdqrCT*g-BA~8*Wlcv@JHIb7 z^MJ;c^!#njO$Wrygt?H``qg!HT?M&Hxw?yx)w%KAkBux^Jg19XT5A)=wlh~ZEvsv6 zYstxaVa1#Uv*wpo9gwojpkLLy57%s5gXzz$zFSxLCl_N~CiFg;+sLr=J*lu@K&1~R ze24)5CyKUn$PWuYKZsB8L|YfSbnZqR7e0vJ^N2QDw?>r;;ATYbFDbtOj9-kb(M z_aqnDLV7*J16;@;zlN6xC+D*sALfmNjQe>@*+}nxPsWY-f8G6!-QOtuj{JKH-4o@O z+l)JhJlOww7jJl!oh!FQSJ1iJgO*5a*?Ky^vt}to>VJLWe7RkbkLB`-m2*yqMzlhA z#zAJVKd<|b^JV%&jgSb>bfbh1@Yj{8U(Vme%uQpt^RVuv8}ah?=o!D_<*&2H&O&jU z{GxH$`yB?8O!`>;$sUD#lJ@-IzkIWq}zr>Xl!8r{L4& z`yPMAly$Qf-m&@Zm5lm5w)?Jrg6P#(UOt*UKgeI9TLU#IPn-FF9Df6iYo-!>lOf?$YJF;{%mI;&WxNeKb&Gpv{4A(ZFrz!NYWl3 zs3wFq1^PTBxwt!8@%iRJ4?yDc6T$YoKraUxNt=wHK9YE(L zY4;B_ACmLd2HPhBeLaLe35f?gA<6I0f!+)>h7M3dr$chK1%c{A=p~Sxm&t&pxHixZ zNYXwP=;aXlcA)VL6OzjeNX~m)pv92*TpMg>1Ue_smjZnUlJou~&~qVlFoU<8ZC^;v zHZD*pBxz3z)E+|53v?qSx!e(K_XPSMNPK=i*xn3O$nYWO9Utg8NX~mopq3E&IY`cS zZLobU(2pTW``bWohtL5`s^n}_A<3mQ*p3fW3yIHd!FGP2&4F$XbU!5L{Z*jO5c&Zo zJ94%|Ao1X^Kvj^WT^;Cx5PDgl+aby2$HDe!pywg+c_>pL$!|YM+RR$$2;ZVMgwW4~ z(EXTPNQ#3XNzn`~_bEOb=qiZkfQ&*nK+8Nm80e?aVczyj=%bzrnH~uhLDCEC4V~sg zj}BA{P4~8iP_?J_Kp%&s)GmhH3PGW{DbP0|xwh{@AMv5j26`Tv=5234a+SL=2~T-j z1vJ&u3P?g%htS)gDL(Y!5c*UIJ!mgkktj4rLy~qLBsqTun(Wj5M+m(&gqppLndC$F zf+X$!kfdD=eb|St522Ta(5Ik@KJ=v!`qvOTZ?xfaIj)3GgCyq$NOHavI>d+mD1<&1 zLigWC-uGE(j({ZXY)H~x3LWgzUKc`d4xxXACiu`{`$lQUK$5lr8t+5T4WS!D=wr}9 zKJ@tz`g#a;Pp|mLox;6J)=Xg5!ar>8y`_$K*PcS5dq7MUGN);tNh`dnn5QL^Sk z%za!7C^82sSu-7)?rk%atXT{l=50%rtoe87aBsU($r|@G3Xnw7dHQ$9q^Y1HBuOQL<86|68g+%i=l&sm4`I=}xT*;cTkZ3+ZiE@TS zw>e7Id=wJRS14I?HAIC%^Q}tO3}yZ&`HfVfTp-cBSjn1M(0HG=Ov##)pb6gg5hZI{ zpo6`wUCEk@p+mfFlae(zL!$XNm8^LP63rh~qK|+?^XHY=6-AmCDp`|)MDwvq_za2W zWlGjmL!$X|C2P)xL~}Q{b!5#KAkq99C2Rf*63xG%gwK#@{-}~QFG8aEt4h}FF(}e} zu#zl&slnNK_B@RkG$#Nb134C47dY9xPO{rU{aI;AY&8thor1wttC|HCrL6 z2iGZCa|a~#;JZrJ`~(t>9#f*6A*ly1D_K)CG^z(fl&qq)e^W{p`d>j(Z&r`DIvyf$^C1xeZeOv#$(A<_IrCC2>`k>>rCC}&7C-(Sg^ zqabPf$0=E}0b(#g^UX@uj2aoW{e6_InE{C}?jFLCHC2$*gOio4X@I02G%3*rA!+;P zD_Qe-Nb12=O7xwO)Prv*S@Uy9>cLY=*8ByMdhn(aM9t>BqW;`VI;7}#zgpkyO z6O`~7l6ugjWX*bLiZ7Rom1u*|RByXZ$(kL|G;h0C$(qNY>E8CF5@y7 z-CdR=%4&3^`MyflOopWGPgAlc4TWT{fkgAIN|ZAsn%}8JJAy>>rJTKFcPh~?_lqKT3)55)#cTmGBvocHW}Iya^J` zKc!^N4UlO5pGwpMhX311-5cc&8d9+EcwmXbAtS;!E5hbdWe7$o{0sl=QW5`C8{ zS+g1vea}#$-b14AB}&#@4~f1vD&aFE`uNc4R`$(pAi(f1chlrwac z*X=DOYeuFbeMc+dA2i6vTdHKu1CU(rgG$ys2Z`n{C|UErkZ4}8zmPS+YrX=B<~Jy@)&hy?pDAkq93CGLA5(R_^(K0~7UrApTPCnTERtYpo7kZArxCHfpl zH2;kfeGVj=zoW!G_JNV+Bb6v;NHi~2VlDtln_i&A91a?6{2We+`T|KAyrpE#h_R98 zdn>W72Z`nrm8>}i63u5Ru_gnF=BFxIvj!5)Ta{S9f<*Hxm6&fpqWNt~+!I5h`J+nQ z$3vp|^GenX;9^DdA|-r=MDvMC)IUhBcb*b!eUNBgr^H$xB${8KWXs;rXuhWsV;&@$AFRZD9Flf^oD$^>iRPy&(Z4`sPQQJ& zk~OzNdwSb;C2PhYq?AiaiE#@e0%?y@V%&oGhpke{ni@znuUBF|35n+CDOvMrNHqU< zC2MYnMDx3qxJQIU^JkP8w;<8{btUdYIjLwqM2UN6NHm|UgwK#%TcwgUt02+*bR}yp zfJE~RO3dpZ(R`bdHMc>c`CUr*42kB?DA86S(fl1H`dtb|G#{CM#-8dpdntjrITG#{bFyciPA zrz_F#LZbNsCDxlD(Y!&4b!td7U#~>}0*U5dP@t<18WPPLmCzCr&DSf@E+NtU8YTK-NHpKB#61%vnm?pO zIYXlPAC*||8gT#0@c63wS7F&BVD^La}642kBelo%@@(R_mv_mYrkeytMs z(~xL>rxNSgkZAt6k~M#TMDsr>QO-Cgn(v{+nm#0&k5{5Efrk6*ZBU}$g`}JxRATJ` z63u_B#9R*&&EHaDT%`a+^C3#KUr01RSjn2BAY^+bSh| zhWLl=VkPDRkZ8V5iM0YqG`~lQu@(}|pH|}e8zh>)p~QMInTh6ul_+OOG(T90Ithv9 z^OUH6&`WHwv|AG=eLx_Xsw<*!TKolmnr<9n#Ksbx-H6`Zlh|2-CJ(bWB63q`* zV%`pk=Eo^f&X8z+suJ^dNHjlNiLnA2>CdrU$(qB-O!Szk#IspQG+&`)O&cVdpQXgT zA0(P@R$?vyiRRZUG2eyc9CshxjQzCelf5=b;(qlC|pXnvUz>vfQ5exs5#--kr=`<1Nu z4J4ZXUdftHNHl+237?OPG#{g6&5@93evA^&s36h&WF_v8Akq8`CE5`rdTdr=E&z$< z*D6uYkZ69l5@Q7}d~YRuhNN#lLW%WGNHkxn#P|k@ z=B-NT3yJ2Nl~{L#MDrVz=qDl3{4OQR84}H(RAMdwiRN!8v0hwi+{X;*4`wJaM}kDR ztx7!Wg+%k)mFVjr(fna0`Z`F`KC8rf1SFcjqr|*vPNexLCE5Zc?fe)eYnDQyd9{)? zXF#HPhZ5_ZkZ69Xk~KF%qWOO*;WH$fKdi((4kViYQHjq1ltr2kP+|@YiRR;#c*YEg z=0_{xGbEZJ2aWccS1X|}BwF6CL|H)x`FIa2p|6G(nP-)FP7I0WZz^$LJ1^3Fgc6@g zfTW!tqQtxy63rJW(bqwu`58)#WsqooiIO#6f<*JLDDk;8NHqVx5?ujAM{3a!9?tw(}A1GP# z3?!QWN{RLhiRN!8QO@O&<|CA>`7kuj>o!G+XK2tq-qxbT{XTS%w>_l9+JCV9CfHts z#`}1kO58&nA89^ViS_{{RPAjoO054ur+M2oO4j@U`lz@4NQpKB zE%UZcC2I~iQNH0(WDZhdJpz)xWSbJtIUyNSb}BK4TNKSLMk~>_puPM#DwSAMfJS-S z1|`}IG}7C4DB&M8Li|&r{Z>V5P{m5D1wq4nyapxaG|*6Q+p1*E&!8dR_Joo(gBC~6 zsD>)Bo(K*0@zP4H9YTY=ZJiQYLPg%TU5WL{CDG?qQc9Eow18`msYagj}Kxi@QMn# z{z0fD5S2u2%LA5NChemln%5sP(z?~ zfi4fUHPH4z4+L`GRh6^76v$Oiu?-D0A<&FK=|EH_U&s6T7D4r(Vi3sNnH{-SOhw_( z^$$WLAqjPT8kGY3m_R8=LdQbLMCgP-Zse2DVu*qxbb6o}A(W*S-@5yml0b7pXc}@p z_A?cMDnlsUi|;}D`L{#5zNDY;_2sxx&s={Uq5qipa&qy`9Wxe4}B!i&qC-E&`2NpbfBG(qLfogwsXXm1}%N2@w5B*fL? z0#g_00w3Giu7e7FsJn7kI}7|fs$ESiFw@C}rUX?(E~f%>HRS40fw>cMHK)Kl4Y^uU zUOgrRMB^SskSm3{b=hP}N&th}RkP8jVsZij*i|0xl53sq? zEimUmt|Z9?a;1hZkSig4fm~@6m`UyRYuh2W;h^bPFmOL(T$#r=cl~ZFFezVB;v*B2 zEX#*Dx+!Lv#?b(>&7>;Fa(2w}5iHkISeZD@SloAvGM4kO9K&U2ESF+&pPSEEuE0`E zfn+RBw;>cq#&SEBb7GeN#`1@l6mvlo_YVwSO3EXAFP zGXu+6G0PGx&&Dh@SllOpGpW{KxjSY#7t5jhX2;ox<%(dLR9C;EW7XIy+?HOtpzdU2 z{v1i@%tqrZcI@jY(@WsoW|16}an; zZWaFXcIgr$5NJK>BzCT_7`n}cjZ`qkz?82 z6_suhI623%D93VEj^#@^7T12GO>%xV$1*reWj%Y2<-{CIdyeJPIhJqdSe_0RultI& zw#Yj_Mi)@AyV%@}&}}k~d!hruefW?gmnJfJtEGeAH`13rL ztuf1Au?(V&GI5H?U}VhVzQsExW;qng#F*tMEJw#ICt#_FSx&`L9kZN{r733lIF@r_ zmQ7eT$1GQ2aU&Hw@3%2GI@FCqVf%TGWj8l$>Lzg}8rfyKSoB@^dDEbhC!8O!IeRL3k|#nKS7d<#o^%yJ)=3u2bXuzWUV`7M^4 zVwS&P*%7n!=je%;WfVs*1k0ql*81A^GwYq~6fUE~aOZl?HjWgsxxQuD%BJ=X-lH1X z7-ia9YifNiI;$_}Bp)}Y$!t@|BlA|dn?yhF|Bmi4+ccbxlrG-u6u8JaU@-hAecGVeKaN6ELEIa}U0 zn7P2{EtWoFco8lE+3z89fzcau!RW=h%N8vzT~^vqUwe90dkt^Et!Zt`Xmrx7Mdh<* zSCmyPTivpZH@Ao1)d?!bV(2elbseZbdewDc_U~PF9V7hIRi5CoMf1yM%`UGfUwlg0 z(#nNZWplbcVa^X+b)9Y2Z(DU8A?s(Yx{i?hi&kC7>*B|(x{et89jmURB!0rG>qxo3 zUe$Fxd7*lqI+6Xhb^pUcdE&+1`rlo|tY03=la-vZyF9X;%9Ba-(^Oqwa?IO2IS?oI zgH$V%7L6Q_sz^WjIJZt(;YQ!m_E;632%nj;AM% z4^JE)kvN`_I6g9dJgqo!JSA~FHF2EqZ`yQsRoUHY7Z)`xaS_uJPEJc)#I%Id(-KZk zPdGh2;q>%`)6)}9Pfrx$^n`!Y56@hbTu!JLvq~42FI?dJzo_EPuUxpGY{BC2gI>Le z8-8;uf86Zf@#;2Kw|QyJ?J2WNv~F|DYK-n@z+x3QAxT1!gdj;h;#nosNK}qQ-APoH zL`|8JbSvT4l!Rkb5}r*-)RZX+-=-v-o09NuO2WM<3IC=h{F|Eak55Z4TUNfhW>x*{ JnznlL{{ZUSz?%R7 literal 0 HcmV?d00001 diff --git a/x64/Debug/CDownHoleActions.obj b/x64/Debug/CDownHoleActions.obj new file mode 100644 index 0000000000000000000000000000000000000000..2fbbf953b2e671ade9682aa2ca09536125f750be GIT binary patch literal 8247 zcmcIpUu;`f8UJqWF4;|ibgZL{A}%FB$2!|dL)Qi-#c|R)TjDselNIoY9otFVUi+GB zyA1+~N=2;MR;eIhd*GoG6YQ}d{z>oC0bF5qJEqakKoh`m{+{USN(#JHzyAtK z^vpGX^voUqSKf#|>+f0h_b_pFxW{Im+s;;^%fE~+U%zI-bNRuiUVi%qm&fDLXGh}E zW!vz%?T5D5etC=SzqG~n|F*^UcXJMI;rPb4*#6m8_RpU`k7-XgaXpW@eS{Qi)S1? zQ!eX;tkrHsGi#+%p|qeGF2()YOx~=ZWvwsN*Bf{=(5nsA3VM#KeZ8UH!?Pi)sFXdG zqs=--*q9}SzNDe+-_oeC=r<& z9U2M8V&Spr#Q5}ZWMVp&e8<{<{jS>&PfdkC({}qc^l@^7{$Fde{X}wVGL-&^#7lC)qZ4RJU$T{i6z@k0?xtBeE8Sf^P%lXun%9wf*#u- z4maBLVQ3;gGBz@f5G2~j!H-er&VOJgdZ({7rR%0BNblPD8szNKO1dtbh$pA$VHm!? zo?$yzS#E|k-?$r1D=%2{!*KA{dJY~Ln;speJ{W(i4da+}(jnGq z$028;w&}`&O;F9NQQQ}BZ%6N#(0fYgeZEb-xX_yxdNXb6MT8!FwEP@xQ}0tkZ&2uk z+tk}H^m>I}Uz>V}s};|Ogx)8Fo`%>uWl{hh_xtPkw37##pgA{Z3^`XAJN2G|F`KO} z$^5~XxXPlaIeJdrt9Ra|MRdWV=hVG=mpyu~c=VjQS5G=D z9~dPt!={<};s*Q(_RiI2{&+2CYkKU0Zfi(-xKzsMwTe_|v{mOh&5)w{KC1e*|4@lz zP1*vC=CS{(mo(rGQDwZl0Xypx)17>0{ApZV(zv1wP|~>g9ORMwQW@`K1G4`O`MPzEoAY#Ph)2VmTJza`<8zl7 z?b>zg?>|+(G5X-+FZ7-cPyGD3wOK5%n{H)Vy(YhT>n6|hcjNL~JECq2eGC7)Ec6}x z+uZL1+1$5)_|Vr+Ym(c6l(MVgX%CRC z`*9%Kat(+NY5nwN$$eUK{{)0%ZE*i0xvxv^6(Ibmi>?Z!(lEAX_<C;1gBI2?RNydu%y@AP1oiTTURAE(7t?uZyk-q|z7^`INbf;sUAkJ0SMHi~cB( zO8a4q``bk!fmE6Y;s|xoae-8N8Hi)rMXLg-^dBG|g)aJ^Kq|%H2#;GAO$nsZ86Y0% zE_zxZm3G59+rK>msT2o-0OXPasdN?y#zA{dAeB~t&;igc38c~;AaowIHGxzL;p+hc z2U@>CDlG!pKwd4$_2@S2Z)kQZ8JUgncZ>voxR}Y9m8OpI@m-6v9dG~LV)ERmm6-c@nNO`Y zlxoA4JpPkMPwQKhvK!j<96`>`!s)TmWIP;sVm3ssYOlN6=dK=bSNq-7Pr9oIQ5`L2 L7V<-xN}m1?lImkB literal 0 HcmV?d00001 diff --git a/x64/Debug/CDownHoleTypes.obj b/x64/Debug/CDownHoleTypes.obj new file mode 100644 index 0000000000000000000000000000000000000000..36aa59d23ae9853981c0f9006800147570b364d7 GIT binary patch literal 2124 zcmb_dL1-go6n?Xr-L7%LUDg%x^iv|NP$x+nx;A*ocG5aow@ur`s4$wH%uLeR&deYF znY8t^g@RDEQ1s%_qX+RIf(r{$)o=@1oP zBJTYJPJ_$yim;5(7@z=NLv~#T5Pe(<*Ci;Gl&l>_Pf6D4{USAqrpzahvA>zE1cNoiFy6!VwWMe<3bO%uljZ?!rkMIg(rx;&25lBF98>Usw?o!&f}Y{BTG+E3 zu2Y=!1#+b;oWRx_s$S>Z#SJxN^95xFfBCtY8NKEBy2gX>9ZY=`omFqP0D&-{8dhDc ztsA1N4{pl%ooUbI03!isLdx_HICGc?|5JjHpf zUOvN$Fvof6g& z_4Y#j-Iax!B1;o1K-FX!u3bC+@BoS%ufZ_!VxG0(#NK9>f{G~pz8amZaCa>ztGQqdV{Zz|f69&#j;!0O{9tllTx zisG1(s4f#~l*nfy2^eaVy({_`=@37oyZV@@-qWdL%aM`clS|H4G6zvsv+sjy-P#Hv9`pHPv+h literal 0 HcmV?d00001 diff --git a/x64/Debug/CDownHoleVariables.obj b/x64/Debug/CDownHoleVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..4f38016965bbf610567adfd8672ed69f4e6b6f36 GIT binary patch literal 44879 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%0AVn{oTp2iA4bem*qv75m|t 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CDrillStemProblemsVariables.obj b/x64/Debug/CDrillStemProblemsVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..103d4ecbdfd99ae7ba01c6a176ec217bb4a0543d GIT binary patch literal 13639 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CDrillWatch.obj b/x64/Debug/CDrillWatch.obj new file mode 100644 index 0000000000000000000000000000000000000000..96e15ec10857b78587f9dab1fdcb0ffde30bbea6 GIT binary patch literal 33745 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 YVPxkDBYRh9cdxv;esz3KeS2K~51GF57ytkO literal 0 HcmV?d00001 diff --git a/x64/Debug/CDrillWatchVariables.obj b/x64/Debug/CDrillWatchVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..4476d171913a7820a01303938635dfb915f0d50b GIT binary patch literal 4471 zcmcInU2GIp6h6x?6sD*YDJuSr&0-3|{J(Fz>&MmA{@)`|*7yT%3k2$>BsWz67f?5}3E&>{N8+XPv*RV{phmzo z)U_LlcQ$eIuOo@Gx}Q&+^7#|XS431S`+Ps5B~IS*B~Je1d+&DQw9min^AmD8=C>Qq zt|z_{r>-SV{dtSRv+BfK*Uz0h=fkHv_&7saDf9nT~DoW}{lwstdf) z(Qyx7R80#f$B%?Y!h!vPFhAMQbcH;QghSy2r4Tg^07)nD|$6LAKgO~_RVh1&)v;@cH@cs~P zx-uW6JEbhi$M~SUsLIF2%SNNBpjZ3Js?#Q%lr^r98Ppd|RU++5d4aGfGgET2rJ<|2h?q8Q01Ba^APP^#2Q>Dky^JUN{xWM>Ny zbk$`F9Tl^w*>oI2t~xZwNM>NvRgXeGnJYvxhuAP9t~wpUdErp3Pry~5T(a;;p`d;` zlFX#Cg4^J8@q9F%DNLoZb1s9AMucQ$I+u?N!fZYcyIch#ywza$-nN^*S(Je+qY=Uso%le2|0 zOutuA=cR^T#~0xEkTx$HRm;$a_zoJ|NQuf5PiKOGg5YOS~@k<*pd9;jaXx&U^ZF_FD6V!f2z-2}aIVBL(X=Fug zqocQ-7|6W5p0)2X^xSq@z$7z`({ljZ$n1#OQImsBCv)7veBofOI+#Bk%qC25r{}#6 zX2!uRIhaoz%tZ%t)4|+xFk3O;&iMo!Oy0p*4(2ll^9?e#*}J86BExNhYeCLroz{LD zBfHw`xq#QE8!Envk6qu1P|6pgr6?)Q1yYOSVaMvKbX1+)+!0Y*o!Lv$URn0itf?h? z$vUgYUaD5T_y9$-LhPw&s|kB))>MJLWVG&kKx4S)8g$fly*#jLu2(au-+H!T#n!8> fy+-S$X;x*u1nqTLFO6M!l}gEqw4hE(mJ0s?M245W literal 0 HcmV?d00001 diff --git a/x64/Debug/CDrillingConsole.obj b/x64/Debug/CDrillingConsole.obj new file mode 100644 index 0000000000000000000000000000000000000000..3435828e840492ab7456ee0137e800a90e18f987 GIT binary patch literal 315340 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 YVXjpU^R052b7Zcr-P7vFmZ)F+2e(&(^Z)<= literal 0 HcmV?d00001 diff --git a/x64/Debug/CFormationVariables.obj b/x64/Debug/CFormationVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..94386b3d2bdca4618aeff9ae76570fe22471f05d GIT binary patch literal 2717 zcmcIm&2Jl35TEV3O)*7EfFj_49+8oPl&(J#rNrXk#7VkFP29w;gU(MU=KY_PH_ih*2O$Zbw&O)Sed_q!<^aAN3x#L!!ywlZRITlIGqq3(u*m~F zK-`@OcMcUIj4uj~DtmGt1@H>8t+N1WT$2c=K?zDFVJC^Zfbv_2i&F`5C82j3cN=k2 z344fZyKa1Lq>hVV7fMG$(j2r9@!6?$TZnTs#oN~U2EIjRoSckPdK?7Lk(B`oeL(#k z#H~adp!fy;hVi5D21HCJid`fM;&)x#`>iD&7#Sw+r!wO4k%ZdgRO$yLaqn(Q+r{-CR82-UWohOiTl6aC6nTTR(k9E!^6WA4({Po#Nbzen;>PmC|z^x z8|b4eHENYrsivF0A$z)Qm2F2WNIP@0(h{AyR9>+iGte|-N0-}%<_dQE2E2LZnF(_5 zNBCuI4E{JrZw@M!rx{ZlFEgBlv9Z`dFgMG}w%OAS&0%Fjc3oXz9ou1YuV?5=uz<@P z-?DV8%k0F&Y1Ysj7x%^rxk6sJEacguuNx{23;A4rzL^Us4a!aRk-mXqs*tT1dYimt zS<5!;uFbN+5fwYWVX$mfW!amuV-SvE+NwybQitg@*oTgA5RTPj)&N3IvBa8qtkr5$*ijwX{{ZFfnEK$cxM>@ZT( zhHh<5ho{(eWRtC6TwQ5ZR~*~5J05H3t}h#`=J~2_OB5$*nOx~Px~oZzvQ)Qi11Hpw z&Cd!m_{-1F%t&qBl0@6}UdQtfqO)$!&4TMFj|{6+u5HRrPg<1mWGhzB$JDx_QEcBH znM0lV9AIQ%M6>`3@WjNEl&ArfSE?JU3-wBMt+B9CSy;TfTx*)W=0IAmUSF%jG@PIK zWE^vQAWxu&;!1sa6$D)2Q$+u>6{zst#|KMZKqvU7niZ$Mj>Uz@=b|x{1mgSSjBYm- zZwI(E|5BPi`#EPX{g zrmBuo_3&SAj?kE=@sw&C^`#M39OWUQyKNdxRd;)*OjoZitu3rB*CtsSYtP3qw<#K7 z$;iW>{gkE-n&T)cSl^B3GlmFHi(mET>ce)Zv>FXHk4i>f=Q z9B}{S-m7SnE{hag!S`bU_ci)Ij@;vL6me;I0W17dfowA3(jXy+0K~N-E)A54WRHVq z2i(+vLnfHP<9dCLW~A}qgSljn1258Ycnc1@2s#Izqx+3eNg{hh95B?zdkVtx9Ca1R zOE$ugxp4i!GL425?>W!_+M%w4xFq#^9tc;Dbs)4ao_qNJ3=r===z0w?Nz3uhgZ9pI z6syy8DH0Ked>^(+bP_z*iuB13)g2Qa)Y s^Dat8Wi>Q6>g8scF02~eP}l;vqktpI@d$GXR1KQViYa$Byf8HQ3kA$A1ONa4 literal 0 HcmV?d00001 diff --git a/x64/Debug/CGaugesProblems.obj b/x64/Debug/CGaugesProblems.obj new file mode 100644 index 0000000000000000000000000000000000000000..c6c876a02533887884e4b0aadf79cd5bdda9f360 GIT binary patch literal 85874 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

fSIV$HV+ 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CHOKE.obj b/x64/Debug/CHOKE.obj new file mode 100644 index 0000000000000000000000000000000000000000..700bdf75ece4549eef3a1cb3ae83dec0385435f5 GIT binary patch literal 13129 zcmc(l4RBl4mB){41-n-m+kuoMO+WU|m{0;VmSs6|@K*fYyRDdB`^wMy!WR%-Nh(#Q<2R-?vp7*i6m}6U zUaFK65MHXjwlWsqI=Zc*Q)!95Tt;-or-*J}rZoE?LR3~?nTkczQOk;`48A585$#{4 zbSOe~)LvJ4qup*H^v4%x$}!bZbzSAK)9wW9KG6P7v+QE2cwhSZxaHw#hR;|>T8c8N zOsArK#)_yI?Ry$_YcVFA3h}L@x;ow8uvFrQ;YUlXBPF@NU7=m?TpQYxsPKly-4&t3 zlfB40>~=qo6xwyd9oqH2`<(aO~ zt?%sRj4YpD#qnHxPDq!#-gk{IJuDHOBSl=n;UM>x-u}!qnFYu^Raz!X_Lqj|)v4o> zcF6wH$^)Z;FZnZ7tPSZN?3yf|pxu+{MOlg`D^Mm>c#tzjPY>-07Kg?U$X;d~T(0oF zSN=RXReIrMru6AkrDerar9B5AOP+uu#h;%%Ra!0^_qJ|Eo}yO8v$;V2yr-n=vJ#f| z+RKo=bW&zt^AhvRlDB|+j!u>K9>|!VHC0-U22SfOt3e;fYo?g;j{2=OPN2FAkEk(G zjLgxKRnZayXzbBw*7xI1ZRcz$Z?&R4=;$vGC4%{p;N&rkytD?AIUU@r(|)~p>`SC zb7Ks2jL}(^(F~ok zT<6r7ak3DF5vt_{S%Ya6%CgF;D#uzouufvx0^NVi1vLZJZ0u2&2GkVXjw<?2N4kX>WfFF9Sf~?s3v}l8WLOseoPHs)PSqEY6EK6%yZIqSsvc_2If%}e;-tNw(mfp^R!O=uCJ&+sg{1Bn

aCKuYg?mz*Lkb@ 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CHOKE_LINE.obj b/x64/Debug/CHOKE_LINE.obj new file mode 100644 index 0000000000000000000000000000000000000000..8835e49dcda93010c76440bed7d85b8e395c7deb GIT binary patch literal 17437 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 NHmnIPZit82e*t|D14RG; literal 0 HcmV?d00001 diff --git a/x64/Debug/CHOKE_VARIABLES.obj b/x64/Debug/CHOKE_VARIABLES.obj new file mode 100644 index 0000000000000000000000000000000000000000..fda8f8fc5fbe518fffea2ebb536066681a473d9c GIT binary patch literal 16891 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CHeadEnum.obj b/x64/Debug/CHeadEnum.obj new file mode 100644 index 0000000000000000000000000000000000000000..6689547272df96f44d751f1aed4c8a755402af92 GIT binary patch literal 8514 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 Ip=^}?4ZI6p-~a#s literal 0 HcmV?d00001 diff --git a/x64/Debug/CHeadEnumVariables.obj b/x64/Debug/CHeadEnumVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..58418fcc2a88c8b63af16599b09fb0065abac0bd GIT binary patch literal 10277 zcmcIq4QyN2bv{p`YL<2qDVZCmb=wzLN#w+#C|UlA+O(7?T8{}u(ITxn7(0q0X^Ra- zsw9=DXn?R#)tXVX1p|f}X*zg7f(65dWkH8zYcMDoY8h=>WNn8y*b1Ztil(TGy6L)U zSb*$1_r7-@A0K6@-EyJ#?svcQbI(2ZUcNu&zU-radF=IU`lCc6B#Xb6U#gjyt50+h zJ*^QPyhW0SQRx(z@#pfhi)VWik|o;XBYN|FM0b2hGJU8F>K^r1a+zAj(juyN5?$#g zdSSoh?m!i!V9>wh)JuUc{()`BC`f^zf5EAj1b+#7_kKj`?zQx0t5wO!^Llf`#C4ik z_dDGY>+NSJO(iJwD*0^fp}a*8ASeIcqDQ`N^4BVvtkObk(7Wztq8pH7E?yjByfS|r zz9d5q;v&!fLGRz1BNo?a$5 z#(Jf24Ks&1XuM)He*Tt#Yx&@3{`r*g#Vc_H#XbY3&nVhE^4a+NZZ>Uv-7BiK09PAb z9QT_Z0d+u-%wm>BG1j_{Gt=lYxLT7{qbts>jjlPNB;b+_7i>6V!8M@^KXov$JZB14 z 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 RJ&a~#K65rdnyKdLe*q{&Bl!RT literal 0 HcmV?d00001 diff --git a/x64/Debug/CHoisting.obj b/x64/Debug/CHoisting.obj new file mode 100644 index 0000000000000000000000000000000000000000..b6d82f2d0014df9aa7af69c0568dd20f0cc5a1d3 GIT binary patch literal 11828 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 TYJ2fq6a(Y2u_WFcOVa-V%IFM* literal 0 HcmV?d00001 diff --git a/x64/Debug/CHoistingProblems.obj b/x64/Debug/CHoistingProblems.obj new file mode 100644 index 0000000000000000000000000000000000000000..1c4c8ba6007c175dec74cfb599509627715c78f0 GIT binary patch literal 10462 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 A_y7O^ literal 0 HcmV?d00001 diff --git a/x64/Debug/CHoistingVariables.obj b/x64/Debug/CHoistingVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..399221b4385231113fa5e8cc75574f8d7892e90a GIT binary patch literal 3379 zcmcImPly|36o1pCU7c3wYPbHm_)#KMSSQJL-L+9Le>U4mo84@aG+G!*Co_}mbSIfG zGietTTr3o-R*Inb=hA~GPvXUcB1MJmL8W-{>_Mm?)V7x%dhoq(CYxk4rR%{*X7Zc& z{oeb&_r8BmzbL}BcYoJDdlcYV@I~^BbuYm5SHMf=?RKX=#0ww-5DSA#YgHkVs42 zao%^xTOIL-yoT!z+XllLR>20OuSuisfOyx(`X!!YXx=%a@8Ej`H@5LW+z*oHsM;0_ z;41Pym;ksKjF0liE%K|+BQha-zoXR-)H2@R*cD)qA_{%nu5g5X!K_k`NGYp zeBoa7?OXDD(b#4*M#{~FnBRDLH#wFs{UBfZ>n4Ynjr1EoUb%7wrwVT4Q$ZkuFiDNM zl(OR3XE8=ssZ|O~O2usVEY&mZPR@3W8D)KLR#~7qS8}p#x}Mo-)l|n+8?L%u`Ro0vpAojRI_JUEMC%C{JiRPQYOaZG;xYu7H`{n&oWYj%&<5n0#i7m zTGR)Gb6RpfflIi-;(VPnRBesLwN*n~OEv6XM@O&zm+SE+9F&{VX$0P?W2n@wH(I1c zB8#82Y(G=emf2aG_9wCBsBN~0d3BW~Q*&(BZhEX{x;@om6|bk8wnBMQ@)SzfF&zTWC;0n4Fc4;4gXf$PuMsb`;rmz1MO2d3H{==Vrlmw1=iu$yHWWr>kUDoY_LB z+ryPrHd~dhp_$G81cxoA=FtRTiXbFy058L1lNnmDTyk=$P^lJ{kJU2eLMB_xSL*F< zeW6?^7Ey^$K3mRbP7p3-79ftsbTIi6ZoGVIDVr~s7ReZ-9rSi0Uo4(}Enhe$S0T9r zezmlM1FYo(llh&PlryzFMU*X;awh`A=^X^aJF1>u$-~SJ*gO)-UMLl&>6OA|9Tf2NBU9Mde4R{I7d$A3U+u>-d(CqQZoqZn`y=VQT8mAKwTc z7M?l&Npd4o`u6?%vp8M<;r7@%0^#nR+pnNcyc{74$M8*8WE6hFJRCr@7p@0L1Ody0 zDX!ZcAQ5H|9pt*X0Ey5*^d#3c10=#nh@RrQPXi>vuZW)Jy59mM!hJ-PiM=!kjzmZx z+Rt^f0TRJOMEBfYSPziMs|Jcg;63^1Fn;?80k?>d;{eeb7x9U3TkX?sA?lLDwI`U zc<)0M9E~d?Y~T0T`%v{p<%!Q3^*mg;QGpc^C|Bb$9jJ&yu@A~j%KC$>P6bxP@$>m6 zqJ9s)=F2h7FJqcpW10gvQKNod9n;ilGP(HkHK-}cG9pk_IV!{TB<+uga24O9D`5@2 zhU{FZm#evYj*5#4RTEgQxgk8dF+)!Aafd|Qeno_{9(VzV(?_n{aLVu{8_wv55ZsOr XAcb9|;ncx3Sg#k_YRkYn#(;kTOx3_3 literal 0 HcmV?d00001 diff --git a/x64/Debug/CHook.obj b/x64/Debug/CHook.obj new file mode 100644 index 0000000000000000000000000000000000000000..548b08a402ce921a825a58b86d0137a1f208a9d7 GIT binary patch literal 2108 zcmb_dL1-jZ5Ut*s-K?XBU1UW(eZmMU#O|3SWXk9p=K;RX_>r71^_Rkt5HWutE=%O^TgJ|x zH;p}BWX5j3XdE7xh&asWe?l^L?&po2zw;kFFh0%~5A#J59?lk1;jM&RKEniZ%8k;|{Hyu{{(#ApPpFPNHSy70RmcO}!g z6^5S8+Cnm`+vT2}d@N)#4gxReFfp`ojIFsc#M7|x(s)_Drk2@E>~V*d-u7 z0QPO?iQa(iJD}CL*CM}|76>jnf@w)oD(#qarqvy$-L_;<@z5XH#;k@+^Mw<0w=xI@ z(=ZSiwIR{GGXQMb<5)pQj`i3$%DRvbD(v@TtX z^iHcoQUo$>nTs@1W84ci#?riXq~)`DjB98vdbSjyXh&?#3uBA3Mie`qFey&v9J$h! zUg(-@y16O@#|;f+%aiH^{>sx66K2Z`Ohbgx+nDhrI?MjlB!tp_VpvVRv2Mw(Irm=d zb$vI$yQGUCl7cT;fs5ZtuTFcq1Q-xFBS>@=;V}+;`UxH3Om8pRX_sxIDj z{|t?P8czXVS)Dz@inLD%!%d$z9WU&jGF^Xj_Qv(axyC3f;0t`e=L!8$bW+b2{?CMA z7J4NN?dwLp{)U=YMlh08O>V%ID@VV5r+ij>Vd3-g_VxPrpZxO+rr|$SmHs<{$48G| zLz^Qw^6)y&PbJ*9=qDAMr{PYID*$Dha0)!%=dSiSWRe}Z8krPQxM&!gPu6zY1zlH^RVwllr&dX Z^`=f$uR&#Q&5|KBn>F9+xHDGh!oS%D(*pni literal 0 HcmV?d00001 diff --git a/x64/Debug/CHookActions.obj b/x64/Debug/CHookActions.obj new file mode 100644 index 0000000000000000000000000000000000000000..9381048a1c277ca2d29b9cf71c9d8316c7338931 GIT binary patch literal 3166 zcmcImO^6&-5U$S5X5*~UO*BCyhesGSN-{sY%O)8VW~XNmJ+qzd z=^nd#lD!!SNY-Q_NJImQN6$(y0WU!hi{in9px{9~2oVHL;=w}>R=w_?pX|u0U@`B# z@4c#5ud2G;(urr`#*ssJ$gNU%791A|O0r5p85Gg%2% z0j|UWc5DMMLOE0k5{ws8uCDrOBn5B@;kE4mUxsoBArJX{YIRWVDO}$-+S^Ac51D+b zy;*Jw8_#q=Zs(#;0FXJAJPYjaY*^Ds&%CRZlTslMshqT?D9^6K=IJWDwsi<0B4%xJ{&QcnFWys~ZY zE>s2Iz|W(j@cVY^1t{9SVI5d}o*i>s47$y_3)53fbXslGGF&EFs^^&+Yd9`b+ilC# z_?aGaJGO1wP38=2Jjj*|*Ta+9L}ntJI-JU~LdUdpnoeXh*`rE^Qv$T}`j$?C*3uze zw9GoW$I`ZAIZcP9`M1wCI+n%KC7q?utFE0h(I2;g$>Xtf%h5ZQk?X~Tr7;i~yn&@- zdQae-mOY%oWUjL`&%nB>t+2GVY-lUFy3?_B)Edk@pR>>?FQ=0Q{<3SR#MkRhT17#Y zUa*`XQU@*5UO5v&GXXG^BnQ7u;SJG$w}6eoF(Txq+eXUI#U zTy-1^H&hU2r&5#n%O0Jal38Nj%}kXT_(QJyxi72r6}Q-qurus;#DPkS6uDwR&mh}B~0 zR7GjEmHs*GgWcmbzI#}=4N9ozF0!s;D?W5y4cA`6_A0iUe}7)(bfF?H77KG^hcs6_ zE>-`*u`j^RUG{F&%&FgI@}Z}yTwNrIKd{kLgwHgm``Gh`dCN=uuRjdjL*1F+7~a=H zOz&he#AwR}ip@?OB^)2ak@hic5iNv(Y<{wbFGN1Da4j05Gs#cF(L8B7isr9&eLoXz z2*>4cjP^zIXkVpM_cYh68}x`thS^;9`3@lwdnOSZ`9vsVT>CIFBijkrusw?Hkg?jv zcP%$WA7h7fqoH;zA8%`JzuD06p>(YMgUiSxj%&1ZeHe?hw}x<9o8{^1E>>rUXmPcN z7QJ&VOVLfQy-9WHw~oRIo+KNS~7@oOOe ziHHqD!u??MtC4p}fd1A_!Ja+$e!3~VU3~iG_p%peN}pYMFpase<;@uO`rN;F_eIo6 zsT7Cf*i(%Vhj*}loTK-#54ay83b@~5^ytrU489Lh0%q~H(1jTTDMSglj)=63!3QBq zz!bU=$Q=n$0xU#FwrN7kV z_6byMhV@yn6+)RRP06a5z+uP@hW=8N`y^aK1{I8h^lW!Z_VgE~WNA#G7!Oi^QA+*= zGMhE$kVn=LktYE3T(z+UG43x~X?IMZvUM{xyGz`{z7m!y+?a5S`mPKC58J?98g_F) tS*(hRNHs`>ijF1K^#*or{`XOoN_FvMv09!HPbe8slwwP58U@ue;4j2XkW&Bv literal 0 HcmV?d00001 diff --git a/x64/Debug/CHookHeight.obj b/x64/Debug/CHookHeight.obj new file mode 100644 index 0000000000000000000000000000000000000000..61a2003654658af91ab7fe41c2ea97c32ad46adb GIT binary patch literal 10064 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 CtjHYz literal 0 HcmV?d00001 diff --git a/x64/Debug/CHookVariables.obj b/x64/Debug/CHookVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..ef6d72760795b45fafba465a404427e4ad2e48db GIT binary patch literal 9817 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 T6;a*?6@3%&ZOM)CT$244ACb(J literal 0 HcmV?d00001 diff --git a/x64/Debug/CIActionReference.obj b/x64/Debug/CIActionReference.obj new file mode 100644 index 0000000000000000000000000000000000000000..779351e6ef4c3a6cacb1b5e6e2a4db48712eec3b GIT binary patch literal 2139 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 JYh$vj!C&c*wX^^L literal 0 HcmV?d00001 diff --git a/x64/Debug/CIbopEnumVariables.obj b/x64/Debug/CIbopEnumVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..54bbdc70ef5bb859a3621bf809b62b4e8f3a8d31 GIT binary patch literal 11049 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CIbopHeight.obj b/x64/Debug/CIbopHeight.obj new file mode 100644 index 0000000000000000000000000000000000000000..55e96e0d6a35ba1d17877519205576838b131bf8 GIT binary patch literal 9089 zcmcIpdu&_P8UJqV(9GeHz{;b%?jVH%os+boj|e6wj+<-hJQ};9Xl9OMJBh)GjqO0j z*vOQ1s_B9%wrQO-v}(XsCLszdq8op#Fm0){qOmfG4w%HI4HZ;GdHj)0-PrFt=f3SU z)dokt=lss^eBXDz^PO|=J;yiwZ66(d=(W`2mlNGWGWpAynX-<#IOHXITp?O}u_SLo zp;Ft3Kb;w!9&d?CmS|4{QT!aD*DsMw3kr>zy8Xp;vYa%eh?+b^C(kG9zRZ#fP$1x+ zamo#%`E;|T$0$H;0e`_Mr-6@LNc8hnQWj9kjh0H1k@;bJMaQ!=a@g-QM=bX}HeyQw zAy>?#%J*gr`eT6DMMh08eNE&q7n3Pd3UNW~w9gZL1u^Ed0+$%Cj9*NU$QT@7Y1CxN z@!PJ=ogC5Tb1kY?@wR9ShvR5l@OqCTX>%vM+T5b|!S}V@-j)S#3zG{yEwXXGo~>w= zm$b?|Cj^|&1n&IJcI}%d2iYmuY}0K_V#6_i^Ckr)ERO)$(AvS@66X1+Q3=0+=3FA7x-VCzVQAgZDHprUFe;I?5imOsb;CP5Nco%Z6OqBMe)S2G z_DlNYTXQPY^H(m4VmhEz$~-Cai>y?65vCc1D~H3CKc4_%KSU4cDYS!aY4aM??zP=d#^tc(PY3YsW)?h=HcM2z61kf?+v(C;h@%^gv+ii8UxLx}aj?&V^> zUKEv``?$8Sb3Y1BmVr9cz|KRmjpdG5@UQ{r>yN`{h#vq0%PfQ1D_kt>JZ^~TuC0EM zW2if4aG$(i#myZtJ($P9DleX3Lom;!eIf6b>u4h`Cd7jX814#a)>sgGvH+0Umk zn)&(zPOH-UJ$M?>2e^KU)-F=SlRVfNA1vnY!gI6~AC89m;?eBnbS_!W=BI-BVrE@@ zW1Hgu@L{A3}U%M{gME?FvNQ|eg0s3r@ATs9@TEUCrmsj2MLxSDq;u2qLK#S(l{ z*R`!{_iyyKtKHMtT$-!v+S}SUC)z~vQR==lEjK1gO{S?eoXd{#=+xG!d@etpS6jv7 zzjJIlms48@(rW8{$>LOJ7UL<7;r&rkTPO4B>0GAM3W?f^Kp=JwYD?M@xHr|lu?_FX zQMFaPghrF8yVcgzL?(52=V*RCtg!A*i-)%jIRH z*5q;jZHe`oMj4=9$IfFLxUKs2bQ6F~ z!EpD$pcV@EYO%y*Az`c16?9?Kh#^;1*3m#S-y5fK1zml;j#d6D_&=gNuw-A+P%L5f zF1q7)dhK*RH8=BnaSrDCm0`Ms&TS5uqBb*^P($-ZjC^u^h}zI_ z3=Os+@`&AX!GTC56pV!j`sr%)!5T6R^jp0IVYD}d_n?fyqmXdNU=rMBT;sT&SuzH_ z)iEeQp?10)F$kcEuYSd)x@17uNho}P>wa8YTyvEKcPp+h<9c>UKb>=xxV?Xw)xpy> z2#dyaNhjEc$8foQu*d2bOZwm(u;Ihf;kxP!;bQGGM~r>_Ev~RDUfaO&yz;$ta7kaI z+qTJ|y~0PJRy%Qs{B)je#kp2$jRkle?2^F^Uv@p zMIXZa8ty|+96L^UEMWb}bTiQ`$8#e}mT%K}E_hvV!f}gQ1i~3kmxtW!7I5oo=<%B7 zWY=2_IbP>Cq70+N8St$7gP+2`t59-(s;;L28;PHHoN#nB&!87T?p4$;Liul$I2O$| zA^132&i)uBj*hd>Ko3Vg;fD$tBN=gm7~$9@67Ve7IjJJIG9zX@zl@D~OE#ZKm1jsZ z6fKoABDXm2x$SAjEnsgv3%r~<@4Gnh0nMI_aTw!#T5k_Ps0r8edVL2l%el5(Gx+nEz zBshDv$tzn{DRKb%FldcSVUu1r;$zeeM-06YmtMi8XVl$#dtG|_U3x~{t@nyc?=6>} zQ8)B@Gv$O8e|}aIMQd=1&$HU+see`(L=10hxcRn@>nWICL+5!Klp9GI)Z34VcDt;^ zRXoSsxc3#1R-m~xS&dna>=bhcEeGCdIK>F??bMXynPnCsoPz%hJYJc#c2EMJjW zU&ab^Y)$=MWd&9>ufHp~5Xtp|cW%nO=dU>Sj`vudw{FG5-nxcnWxvolgT8Y^wODtw z?(I7C*R1zeCyH#XD{7pqB4-w zc*I2fo@*6yzc%ImV78tFY7?!OA(WR3^d%r^C1N6enoExV-;n4(K-eL{gL-V9B**`D z%UDeSN&miKwpPs6zX0I}-M^cy@0+a~FriX60wgWp4kRuA#N?hbxi{epe$+_(eqiJy zP4Ac~gjFMi+#b>yRiKvI{#5is)6$3XngWFsx= z$VW3Ecz4%G59r88Zv#o)cXi~W76|db5NHNDuXcrYA(y&)fmRD{AM)!2+K>Etf%wkj z9u+!-{04yzBj=T<&~fCK3Ums&vSodS|xH6Z}HhKbrtq?u@k zi6%@mYoa|S+GnCeCOTrG<0gXhBK96JQ=l z=-y)b!0dG}ysQ4FgSiLH7|cs8`*%Mv4+?+zYk`cFbeR}4K3pC}KuZ9~{#}qG;!*fn z>9oTN-{(vu9+&+qA&=O@+f!Gve<2j}sc4XJe$w;Xz7C4{RSvtXz{6Pkx=r$sp|1fJ zc@o!NTyj+~a}3u$T+F~j+xJAVHfmUgAf4n4NyrGqZ?zGf;mG1#4~AEph>u`;!SHA- z=5{bfl3LSM%y+98R?<}Sfkk8x}vx=ceyrMX*tzv>;_zRb%btmAWgUN9t z3|KN>13cki9s z-Qi+ebvM@ED(p@q)ZZJ^mXqr0=~+%>DAYGF99m8))HfKzDbW2Vk<+Je^sK}Xk1oW~ z9TLn^A{rZtgkxgTHaM&6oYk8Np8*s16|?0`qLjHOk;|5=3#$43f6<7;dT?Z-ATHpmcLho(tPE6;n+ zz1MaUk_-?>K0eQR-uJxcocDa*Q@p>MUi#8=g`a$gXcvhPsHxL68*_4B2T{gD)W2Df zA3-8fXgp9Eu!PF^{4ej&s--sKnhbh z9GGs`+YLUxv008$m_p$|rCqNF{5152&<745K(zFVrdp_-QY{jHPa=MEkv;Nnra;Zi z7hEl(2hhGdJ_udgp3ky}_KE&x9D592-sI#&%KaTx&b&UZ%;`On((v^t^Ov%a&HH@6 zL{QGW=2OnReglg-8t9_FHr3lAZgwJMms9*{o!RQ(QRUdEt7JTHfD=5%fyt0@gxQRd|Ci`Nj8 z$LZRAXCyd9nY(GLmDIyZqsHBvd%)7ZtjwNe6l+|HHJ-Ox-d@wDvv0Cuv$mt3=KS2c zD^_`VeEHgTh}w=iwVk)Lxi&^EwOLg* ziM!$pTkX=dh3&I)<;**t+Qo(bS-E!hQav~;PoKS1+pzFSTW5OV1+=<{+ts*iamxJJ z8Cc`6unDqVt+Kgw3i#Fmowde6nH8fl_pR?i&LjMvPnnQa;i4(SbCzBHQ>@()@>nY} zGLTJ~#tE#6YIZCg8_uS+QeDs2G@~3bOm$Coy1y?QfN6US;0?*(?wdXlT;`bDHzkW3GS{GEE~EpWk^A5Z4XS=bzKT3i&F4(-YgGj=#M#x z&7mp6RNkKRQ&TOL&6q^dC3ca_4uvtw=L2HMZ$QMpZ!NPI1aB^V6sF#bd zDsu2Oi_oa*K#^NeJ8r_~kQXPWn1!MgJfa)IQ@eGod~&zw>6Do-Nf;)znjO{(rcpH} zYtoojt><+qU8@&0Bg=lu%G{NTsa4hNSR|V<3>^j1fW3Wzz4-O+-@7+Ep_Q|WQLP=t zM6kSbq}1O>RkN_FTeFe$@w{2dCM&9Gjb^%_mh+}&RI|;QQ(bvpP3{j7yhY1+5Hn58 z=lhXP&_Vlzv1mGinZbDcKr9{~O)2tVG$oG=$I|IoGLb7)ax2Mc z2VJ*$+%>frbWjp4coVdV#dl&+dtL^22(ssq{(0@~k;ew(qk|baw?ezEcD=Z`Ic|O{ zZP+sC=Av>U9m^b}kG8RyXfBgX9ZJR$8AXmAR5Ek}ZQNoX#V8vciH*sbV=0+F*2bfd zCCW7wcC;xRmgDhbYnHBR{NJ^z>H7=t@5x2J=ee*Sk>|s!YxjM6bSNDei4Cpp{Bamw zKCJAG|Ej;YwmEvGiOUmv@j!g;eU)BjocrIGf#&>xpZ z4e8@ZWu)9r3DF5ozaXZqHVHh#c@C2G-~2L*va>3My^ns7DDO{3$QbctGyMD z+o_ZAjgf<6hsT&h7;!V=KM^?`MdW;^-5~i?Ua#kCYHo$g#%&p+5;ZmJ62B(>!>X=- zft)T3jvO3{CnJY*A#x#HPPES_8sVgT(Pf^4%UCfBi^%G!lAbGS)yfjn$#^s|I4q}k zN`5S_vn?KE$X}8~Q~%G!53gb^+F_-gGvM=dVc?)2b<|hALagP;_H}l}e%0yg=sNbh z4gCL`>mHoH_F&`Z@BOUfx8A2a&OP1v8c!(Hi#2VBmDt$NMJn_q&fS;GYj%A3cKq z8!W_M+(M5(R|WE5B5bpyT|lD5Mj-ws_0eu1p?And29PMhJLHX)-n~G)$N8w?>V3oI z9&x$HfVNwD&jRtwh0j`RqK?0U;}gI~@3|#9F-HZr5lHB50}{P7T<$KHdlv{l)_}tq z`RN=Gdw)Hhw~?RT1Nykdbzo2!`DrT<_hUV6vyq?rfY>kVu}cZ$r#KM%bUmeP?%P13?4vgF(=UKT9Z%cHPu=)%Mh5ma*vL6G1OBR`D-iL%FR1U($EqAlBO(NPyc&1!+yYA?6NYqfxP zbFa0hbDO=^$tMtxw~&fi%~CPr7)h>_`@!}+bk0RT0%9v3;#&oK$bUQDYQ}R3!vo# z55EEOifRv!x>;^v>w6%#-Rs%y${o=97Klj(ogV!2__l}3$nHZFBfzp}5W|Q~=2he# zYGd9;?n)c8jvZ_V_6TlpOPJf2Ff&V-hh4@Q3*MVQv&vLe0_1EMYEy*@}|Q zetj1Vzoa#pC&2Ia}`REjD!mE$^*Z$QTRW|Jy_B zTPqeUbRIyh&de0L*HF(&CtzSjDW8vPIhR*8vZh0pawC~YF2Zj*X@0~R%bQio?a}nm zq;BME6;Ns|uxBZ?mvXsuW+WcVqy}+6?QPG72%qWrkc!9C8F@I898M(@aw3!F&Mp0b zk0{AlIulDA92*>o4GzU+OKaH5TE@tEqRHiA MrTmmSl&`AvFXX>4nE(I) literal 0 HcmV?d00001 diff --git a/x64/Debug/CInstallFillupHeadPermissionVariables.obj b/x64/Debug/CInstallFillupHeadPermissionVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..21577328302e901677b34410e81b302fad4ac23c GIT binary patch literal 9547 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CIntegerArrayEventHandlerCollection.obj b/x64/Debug/CIntegerArrayEventHandlerCollection.obj new file mode 100644 index 0000000000000000000000000000000000000000..f9da35214ff59c675e6e525da029f54b416fc193 GIT binary patch literal 26495 zcmd^I4R}=5nLd*lBnBt}r3L%rt$>XShRKf*5M@F#c%vc2B+#g_Nyr3}GRe%7NtC+& zj2os8)9Wa!W|wX2Znnji-K{I#m2Cun68aOgTB%*Tv`>G6c3UX)5w(wHpS7EPzjMw# z_a`&SpcLDu_sQJvJ>U7xIp6ut&pqEccP63F=CQ+{`>(dpEsQlXaTWHqZ|{|u$o%Du z?eQ@7@{NM|5QxV7Erp@>&3#)J)eA0TduKBC)C$ISeNu2f0;040wS_&Q*4|cA3Tbm0 z3spj17I+1s0<0xaxZNqY9sC{DRyslf<_{D`opKG}zXQ3oHw)Q$rrhROOmM_qvj-%O zv%qknGdnhnxZ3qjVdw|Bp7yrh+uF^TX8`hR%#fsc`K++Fr?pKF5RGg9;2|)t6 zdNNq6g3Jia-|OkSa5NZz6gxQ`U>uhb4D9vvUM}Sh_z|aj^K~N!sT+-8V=`E&j|N-J zH0T|S8NteAP}ft_$`G(s!XRdQRMx{M>JgB(xewv&>hW}dk|y_;aq@_tlT-^Q106(C z!GNBk-o&2NxeB9t@`uU8`pAi#w;oN7^dIxSwFfogNenVX;y9XGailF~jwXh|rt4&$ zz}zC7yVo;&$9TR<5WD~6gL6t?bjxyp7(apVe`jxis@Xb}2iJOGp@ho$aENO$ylSf+p^MiYJzx}Z7d7z1Py-HQrb zeJHj8Y?9Eo4d?1!o-RN^BOwUyhI%re+g&0At0?Z|=MCO$$;5v`kI}?Y z+^I1Q9!?C;zJIgG+}3w%EzW@e*Nl%(V}N9y6r4P?E(H(zxxgj5agpwwqmMt2D$IW1 z8WdshvZzbA6V8FmU7bTSSU!5jJO+)Pr0MD449W^qmPQKdsjE(r<&wRN3XJ`vw%+zO zh5Wj)pGtllJCmh$ zT-ov=vQxG9f-1wWdspb=-;+A;k~$N$>1+-^19ljQQ^~3I7*H4L-aLK$IsNL9*$-Uc zu(6af=8|n&r?#yR<)yQ2YCkW{ST6P3E%hU6)6cSLdiCz!HnjosCs!eL7b?7l8hHFA zJ$WZJ@Ss$NXj)~=A!Au%+snE7l0$m`Flw7~gp105o@AOj*V@N?t@NSP&hpBKh4257`#G~EC9?_kE2^XViFdI=iTHJMuV zK&x(Y|yD$sK%tV4)}3*3DI zxx3*M!)lNc8$5Tt|F8!GjS4b3v*HwxJgW#jH7zP4ju1&rlVV3HG@2L#p$qV|Km_@t zOK{IvT>hXXZfe>fkz^tl-5=ulGzy3#m0Nrdtsb1}EgpY;0X4sl*^=nLWL%{XEcbmaAC(SpC=ElBr2k`}~6 zlFx32An?E^*&dM_LD*nuj8lV>J1_ePnih`yiCj2bExnUZytLVaKE zaA2U&0LB)Fr38As@bE3Y-SdEB>*FBOGwgGKDfc;SJ0OpU;s0UXxCKT^zZc??f!xGh z5tqy)`y&dk+0)Ja>ntcJ1z@^2xQM9TIx(qhfq(Vd6f>X^4_zN7TM_5O%W47VfT}vhs3w z*PEk{AJ(zMcgNJ;-Oj1?;p%1F`8XrBBsx(`U2LP4Q7LY{&!g2Jp1PLi?h`}LAgdFd zSf6ub^}(t2ncV8RQcI$CEk_fFsZUW~fS(A+N7!iMh{YY2aEPQ1h!Kc=W^2afYm$Qj z%EP-rH)iPDoP};J;(XaXh}ye{dkDU#sbgqreJ1b3^QD$VCu%9Dj>h-d>ff5WmZsG;Ss$Vk z>vN8#jw4g+Gr83Zq?SbOT8<`a&G7^06i`kbjTTpz@Lf+GWykD1H_r4T$)5V`<&T5z`ocUdrQLN#>^f`gQM%?PQAId$08Gp7za zPfQ)0lS+u%Ih<3Rgwl!Nk4Zl|JQ8PpZl~0B+-13HojfM3v&mz!a4~-Z zV;Bj#!$G+WEByesFY3bmNq$%dEPO`_rKSy21#QRDhB$sT#9^!i(^AQkbIk~GQcQeZoD_37 z*-0@8m?y<8yanl`n2_V7crRu7ZcmCS@%cC@?hyJLe18m6DH#iAM_(h|#YyoQg0}r` zBf&WnPl_33W$x_3nW3N|$-McLi*-`WWpO?a8Pnn6xh8q$CqHl7oKM%xxkv{`4EJQ> z3FIu!6A%QK!gQGIolc=4D%ap+%9wlgp}yH7XX?BszJ38o?1Kc&Z?}kt^cZrHk8O=Z zF~$Ovk9ax67$6y&pGCpR4xhOW{P5YC(0TYA$GnpM@HvblX?Z{@vQmf7l;1?BD+(?x z|B2e3j?x%u6yX(0R|D(tnL!7ko%`^4dzRYmCuK9bVB4k6L~S~oV|l8xN@`E9Xl&Fk z{aIyZ1Me`a@C?sqzr)Jzv&y*Cl&DQpzK1kHg^XvFneDkN3uV%5((jaN5zVZYIXo>3 z(Sh?4^HjPFiEUH=fG~vZRGQi_+i*6z z!F%h(p|uNo)6gPnv+^HkXzk5XyUB;vZmBa-o6cDbE%9E5=mf4&rQYkvJgT0^puKxQ z4NCop+Vrz*Dm$xtEUEW8GLNO<$yG=*jP^=ph^AF$iV>tE-Mb$_wIa1310pXPL3sW) zB8o1+`4SEh6;qBlA{Hhy2Ivt;Z+ray3>}P^D>-p6F~*C?c(f#0hO zp-Q{Pcgdt(?Ym^MSoc4Lsv8Nq%YzA_EzAa%y=m}_H;$oD62varwHUedu5Gnh~WT5#z>_rT?~dR_ef3^`E}S}BzZ37}w+NM@yw6!1HerOb>t#{39Khm z0Z#aHdMH5E^(N?BZ%^6L+ z01Pp3593bGZ9AMrWW^N_yEf#wOOA6zO)@rTm4fM9J@ZXzDoea6?M&!&RvDb@^v>!j z#7JjVWTl){%5UO|`V7jW6*W=Ef-93E1DR@IIjeD{o!ePGlcje1sgR7$DnlecUn3#w z?QUm-@aMT`qW85ye7R@WAi1(~L~WHbcrQ%XGu~5!_x749s=9mIx3>3` z_w=-WCU{$Wcdy>s9SXPiR7ApIWPl`vk#`|s(~+35@D?qQTTTu^s~ zwl30x@4Iztim|*@tB7<(JCT!C5pIpeI@`1@kshrz8Vz^0aaCekPhWR;XZKbu;z+nu z+tl6@L%~|HzqqJyMPZS)wy!fBqF`~6zi4H%pI>>b?e@@=b!BZ`A-1e4+_{-*tu5=0 zgd;n8d+a z7qSFyYb#pe$M+I9Ys>hT|2DU_ZPS*ub+or_TeUgT*BwHxA{6W8QBW$jDnuIecJ#Ej zQhaFhR^mcXTXthOA}qBu+}XWtsc6-$J*{2ZI@mSVw7#>gClZTn>D4xM#`;>rT77R{ zs58<;c4`VzRiZtevG%4-6-^D1NEiv~0gFltOYm2;vZSPGb7yyx9*OlfqCar!+}O3e zl*M}5rZj6)MSVwWPqYb*+!g6=viF==R-J0gN3^dBF<9(WVblr&0 z4f1nfE^+u(QB~6rye?Q*URPIsQ*cwTra>>SsjLpxRcxrP4puZ&ZK!GPiZ*8<#y-O4 z=C{afCz2etVa}y2cTN;#XDX9j0fEn4lv%)1ir4cbim7+i^DuZ7_#DFL;91wRI#_dE zgU+jBPI<`3bdI+b%3=Bovg-FTeqPCb)PebzC0srP*q=bbC7)i zyrUM6U5s!5W!x@I7hGS9j>pcmq253Vi(n^r->8`_>=Xoj`mF6#7hJz#Q;?gA4ph@$ zWS21%Z8H_wm4PaT2A z*MR>#=rd<+D>Q7wP25ybRn^Jmq!Qu@8ZB6zMS&fK%Ap6)p4^QUuKzw8|spFkblVz}RmQ z!V(;dCvm+6vW4K3i?(y|#AWPF6cwQIC);iYeHpY3bS?x!pesPz zK`9@(u|*s)hM$0l2Y~UD4DlY&ThgSX@ky6G9iH)V8nX?cv}oQa(+!fK zyl4)j3-dO6m?O+gkfZ0vO3)pk$RqwD=(V8qyjer>C@28h30e;N70|VyPl8r}9tK?p z`a{s`K#SnOR)KcIv&Fh2z5|rf{S#<4=%q6mTMxSO188MXvWw|Y05W=}(Up(SeH=0L zI-%#Kprq$Q(C>o6Zt>Hgi$Uq@oR@cg^SR6n`0omLN>}>G+rztuyFCwrn*=yvN2XfagK}4$u#R{tf7d zKnFn=fPNM95>U!d!^gbPcKm|5G4m@Nr!ZX_zgsu657C$)Y=#$gMw;7tw=*+cqm_iC z4jDGnnPD?st(nl3E>qAgPWjp|bOU~kNoo?a98-^enNa`&IzEOB?*b+n{_R}QL44x) zd|SpBfKvDc8Qv$uKagR1PmJP!EW;UBvI{e=N=?&bOlmDlX|0U))S?EtvMFpR_OEPa zAf+XoEWe7Am3|^6{^d06CcWVN^{&zi7Kg4_rPcRsjiy zD1R$_G&oh33VqRNS`{jT)xqn^8-n#L#w`3BW?GXT7bezhc+7_F{4yJ#n%_(dsIX?k zc0S2lI%L95J*Sp$wB`8(702gq4t)HsZuE;PbeZGB3W(wSj1-9DGRnJyE>bjhz>u5@NTrhc!<_yDBi_?(pC zjFaTl^J`&4X-S!*^C90qpZ?cr>qGXwl^Mf4%#-I`oadePZ=PDHX~b&;zWZcNZi6gNlDG_-nuqaQ<52i+o-d`FJUxH#z3{EP?z|$Y06j3n5Qs zn`;)rhw;IZj$gEPn=dh~H~kXRnw91*x@g_oz!77#mTr+a9f?b(IR?_nycgcN%Kyqx z`~7xH;4ri%!UTLv>|M`TAh}Wm+DF{^REGhdIgG^y_uxznl*zYo_vl;8A2+j9E*q zLZ4?k?}anjm82xUvPefuG_gVFn=^gw+ukoEzmqdaiD!~uAg?U*!BWqcGyPM)@cMky z*X{9na+lDWaD?Czj$i%qJ1b@ zhbiii=e0S>ryjijMJn=UFG^eOeI@4?Z~JBl1r|`*C~+qFJ7-r<1|(wXw+03JrHU=W6IJkTQ0TKjBJC53_dSI!g0m%J zr^5y!?Z*{r1ro6jE8f2k z5Zr0l<17fVha@N01|1xpm_Tg8dtFc@cI#e247a_ zxI)*XaX-vsSLE|u1jzjl_608IyqD0VqJ7uE!58iODv-$U9felG?H9WA0EyW96dF^p zjo20tu{{dy0}^SED_#yBr9y5Kkcj=A;!VS*f{49dp+|v)oj;1L1`)eLp*|py%VUZ+ zs?djF01^8TkVyNOLMK)1LKGlkuTki)fkfJ3tN=u8K%s;}v_3#aulZ~;%0^RsMyEQF+}XBLV2Gs)7}6iV%rsZM#WxOV8$*~=u<$V-1`*oD+--du@B-w zCHiE;QWG7&(nKG}^eW0-3M4G~@G>*@LM+Ba?8QJL_U{yLkK&CNnQ{w?P1FP=^m|0{ zzM)V)w#h{7E+A3HKP&Vb6m(>KfzlqQ67r}iL|sEN+^%vR|B}KH-kMTQ64)DL>kOs zzm+JD?Z!MQbpE15C4mD(dHsnQ^>DSK%rV7VS`2>VS^SR zVS^4JVT0{JBEOvq?N(^7LNEbuEiZ3dYBw)$t$dEqfV_RZd>5Qr+RH5~V(|#zsl0No zr&tX<5xWS8`jD4)za?6#V*Nl+0%nU?B4-bN58C=YZ3r^2hkTNU zfSecQN|%ReynMdf&plL&^GU=nKqeOFuP6zgG8Sha7&VwTEzVED`4|jlacCX*b;Ys& zk~h`d>!IKBroLfa_Ft>UkcLcy6)BPZm%e#hdo&pHiV1R8lNtC$HMRflH`&1J*)C%( zV*kx=-Y0nJ^DF_NLfh|s^Pb_+9PwsggDhS29^xjzp;osz2f@jAaNYnX3XbT*0L%kZ z#T^{}o)kslB0Dm+LJ*DxymbQS-U*y9fis9SR#{JgL+1^GWB7_&)w#S?!rpRWQ29Gw3^sM^8#4np*U5%`m-=l_>-x~TiWU1d=MP^6&XwBa&QJ6oaNxqk91fv>%bXua5jPSEeB@{ zIP{|qR;t^;p_x?lUYyAk6=Mss1stor9*0aEA1l?f2+{Oqab5z4zW-`*ehvYf$8;GmmEe!fP{LKkjXg+=iEHacqlM zOev-{jQ3l`9se0*bGV&z+q*h@vBTTCwHxoHcD8X|sC}ZWqbyjATm=`o^>S%a2Ed&E(RrxHxmi zu=cC1F)v3-NeSKzaN6Hhv0_(6id_{gc2%s{Rk31M#fn`OD{)n<#8t5p7~V0u5bqdW lZh3e9uKJX?>QmyXPl>BOC9e9EP<^VpTDP{ZZH=|F{|88(f~Eif literal 0 HcmV?d00001 diff --git a/x64/Debug/CIntegerEventHandler.obj b/x64/Debug/CIntegerEventHandler.obj new file mode 100644 index 0000000000000000000000000000000000000000..0bbceadf608539b3a2385403a3e187073941a538 GIT binary patch literal 5095 zcmcIoUuawB6+hQfYEN!fyGz=Tm2ziPXp1Mwj+ZoA2XbV^SFJ5OlI-Q-21(Yvwv}Az zihHHhu)sXRx~OiT5}x4(4idh^QzK{rjsn zGlEK_L^-CYYwe9_!R8Wa!$jL5qP2%?&LLD1jh%`aN~KkCrHGEe)=e0Bdd%jrc#2Y~ z*jBIHv*3px?CLQ}Q6d#<-Yu7c+-{FO$SH@q)Mt+(V-#x{m8vI2)P#S@ zgG8&y3DW~8mVb7SX5N(px-oH@`c~RLgdXoBlb|?%$;{QoIRQ z%8pwp8(VJepr`YPJNp>=dhgH}clq20VK8r@yfZ}f90}HnODE-JLqCtTYs#yI?4n$# z)!SO7Rnr@3-B73Ht>ZKD9Pd3joo%$#4b{k8R2wa+(oi(ji0NzR>DPv)NzPwNI2eM9sZ$7jT}UT@Z*FQ&DMY1XRZx^9S-W>c$Gt+7qfXg3K^jn!?TLsl?RDQo^DLRbNnOP;gYOD-_RawKWb? zj5l;m-_XUlwfBIdLg-{w;Kwq+AXtXb-^h!sjvsFO+&44zp}Q$TnLKs zGn#H^YEr8;E=<~yZWxuicp7;%<;7an&`o{4C9c-Yc105lt+rCrWzLhF;ZT}J%~a*p zv|QA64GIOoshQX@{H9JGJ0`Ey8nUFDt+QAFR(8(RkI#^4R0pP2P8T*SMpMQl*Y$?% zUoU3xDq268AmoMu^5v}AYpC-y@0^lofX<*i@01sv^BB!^HdoBdXY!fVOs*)+=H?bM z`BJ@E3gXja^zc|2O2ITlOXEjrWZb~G0al@O3*}vu(|x|32X7WdLHW^O-)0Mi?0l}c zG{B#68XxCVrv-mVh*@XBN?NSt{8E|*dCfk*hSKkI6}<1DoI|-X*yqLB=QFvL zg@ym#=Rpo)d^fLieR=&c`cf#bpmYZNm@Rl7ZbKuOIE77g`Lg;ouu@=6qvQm~${@Gd z=a*1s`+VNActi&G5B52~lCx6EE(H@iTt=7A;W4l_!TJ{L=Y-k(ytN95J_BzA1+N(v zeTx6@G8%L?ez{Fdw_!TL_8sEbneeJcQ43l1Ht&t6@CsK({WR)+J)UPKzux1JOM&+d z)NRxg0eZZKnf!W3Ajj+a>!|s>cq~AV_bZcM4?D{8^Dyc>`W|ugL>6@Dj8k)d`5lxA zc$?cyqV?bXb92LU!q{y`YkH~L+VbX!x3r&lZkb#?x81MziY?~-zwRJc&u#bX{npd4 z!N+}iZo6O4bJ&p|a{_nAbK9O?B=kfibl{i5GV*jUd@%IH!O+NUpUj7hncRFc<~eg; zv3cGx&ld68ao5@wFz5K2in?BDYb`uLlM}V|s@^blZ9?o}qmO$GwXP^ZT}`~m)B}3z zcgyqBG+&$xuwqpEnC8X0R#Iwa^Dfg%3v;>I#Y|yBjNtXE;Vvme!;rs}h*thz8<~wG zyIA`U1wB4vVPTjj=0V>&50c}@ultA#j}52x!#}aC-jAO9nE7Jp_aR%0$HQ6R(7nd9 z5A8ccpM_qBJof$oc^tdpq2bh@4qy;|Q_j)h!?*wZo^UOD^to53wr7{#fBB0OSk?m% z&Y+i=PjBDiFU(PtFwNs1pL{?+^LW4TcwfQf+H!}0Y`LF$yf;1GqnLkNZUV@byAH(5 zVwC>kpa@;Uk;bRmsP(_=|LuUUpD~G%##l z(?Jn>1IX5W%Rv$P1jruax`QHg2w&~CFGm~{p#>n@=Vb>)tW%C-6RbULqbDstn3wVp zuRXiB>>=LqHt&juUiHw=J+$kgeGlF6(B~c+adM9e#GZz%xNL+4LHt=B!Wy$<3(=T| z_=#Zm9s%NPg!t*>AQ8y!jRJB0Lc~$pXwvIV03n6wo$=5!UN3vVz6iu$wl;bLi1RGa zC-~=a1>)7jmIayvVtWE^Bf7UQ9A8M_QzZh_OKgEjAki9u=qOrz7I!({M(h0^j*Qmh zFx!>+9yq`9IQ}~wE1Lq}>bOr)h=LrMB4ds;Bv_D}9{KNlIO>qVw?59rkS9gto*raH z;lBam_(H<7K3N<3Z-1;=v1IPH{Enx|`SITcS@S0FZBQ@y?|~3BM(3L#mhRGffI+8Q zERgFzWA7>89;Wvca9(wThUEeH-L#Z1rb}u5axL(u>T1O>sZ`3=D;w&mimB3n0BauD A;s5{u literal 0 HcmV?d00001 diff --git a/x64/Debug/CIntegerEventHandlerCollection.obj b/x64/Debug/CIntegerEventHandlerCollection.obj new file mode 100644 index 0000000000000000000000000000000000000000..f169a65f0a5f1c1b8876cfefee4e5a054cd4ea59 GIT binary patch literal 26171 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CIrIbopPermission.obj b/x64/Debug/CIrIbopPermission.obj new file mode 100644 index 0000000000000000000000000000000000000000..4b2b895a8b798d77b36e3a9098887d0f7b1940c8 GIT binary patch literal 7269 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CIrSafetyValveLedNotificationVariables.obj b/x64/Debug/CIrSafetyValveLedNotificationVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..aa98ddbc7e2ae4b0cda3e3d7bf719d83e730270e GIT binary patch literal 11909 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 z z=@bltfL%R~UHEnF+qEk^mYfRf>0JH@R)fgSp~*cxl*`8IrZwyiPDHbrus@T?irEat z5>r?)>0G$9gmMimuJL_NLds~FG-A2&x;~97MT25p0}48X@}O~bmn3e_aIkN`7CJi8 z=N-`k+VGGk81(pkBYnf3zJ9M3j7(-Cb(LrfZEPDA{VZ2Bk-wee^5ZTwUKQ61*dxD# z>^aoCt}(8l7K*G8zlbP+{+6c=)ZWg|zwS07pE5!nw649|QeDaC4b<9x7h)Xodj_-- z%@@-9d;?x>nD#^9z#*w_qBxt?)^5MotGPo+I_*Rl>_?K{w?ZIp^gE~#r&Y}NtI)5` zYYe=7xbDN%bB%c&tdrLad@fHrkXIK(oJ*gwnxDopE`}(^_!vAUtJY2wynAqc9@p+` z9OEi$CvvZ^&VuIU6F{ft@{wVRIKPZlRUK#fTMV8P6eOv)z$QM`HOI(oMsX$*QPYonHgWX}(&aT-X4vXU^wMCVojQCvzO;IDcWt zT~KPnwPdu90JF}^MtcHy7S~^lw!8X~a%(jMuUE^TS$PRjjeY5nRO6{6B6B+Wh6nq- ze)qwMlPuUpj!;+Et_Zug_Mx$?1h2f}IR% z%yzZixhlJ-s_e|RX*Zb2M^?xy-%u%7N3PhLx7(Xro>T(J(Sg?82YPNNcYFt}Z*EmS zLrTDqzbxeCx)KXM=h56>jCt>_V*uj)uQC8daqSdH^7k5;E6!&*%^D3epXIU-gO~B| zVn6?@|Ia37GI)*ZU40%@)zn*kKA;y*j7O(adAv{bZcC2G(o?x~YFi~6GL~c$lkxa+ zA`WPB8Oda=KEGTHhX$7Ml8sd{bH^uBk$5tfsd4T14*2?pwBRh78r^?qoHy$|C zHQVQZ=8^Zmgl%;V|5{k@+VsxbZ}C%oEiM}kqFgV~<0$cT$KBw(g`Tm{uYjb*uMM7! zesA&qWbs}zP%Hh*LRT%+j72H?;Qx!IzfA_uMq4cDZ9x3zuZ@N+lmwC%U$YSZmFWI9Nr?y*q8LXTSLO(6bn-$w6QJOu|ZnX7w&WPHbfq`#~s zeI5uu*uG#%|6oaP!h}lOJAtI_9w6!220e5Leyf4(^c^7lz&mRoJKbn_SxdJV$WGq_ z;!&=p#|>nscY*K&@2Y|9^a%bto%No;m zn}O`41Id292C~z)ExqqrdKs)(=`U{}JDmfP{XStJJ6!^jG5^g#cG`^ZDKZCJ3}mMX zAepO_f$ZX0#yM5^M2g56?XVC(^(0RR!WkG+zWwlyROkrGPYX1PQWaOh9L zUxmI1#GV!6dj$Ja@GYwJEe}j;R`_ck&r2n-2PTD7(U+W0K4q0S6KHKgrzOshzG za{-)77N`6Rp~$Af-w0Lcl*rHtF~^RpSrM?L095`3kw=YtDypp&I^6h&#ow=m_)@IHLxKGfT7y6|WhQAHmrUj$XmpEmeh7!e9;O!5U7n zhVw&kcr}#z;`fC43eE*^cIO;SU=1f#!}&%H=V@?wEwVrg`MJbz zpC!(#fc(j?#CaWXzJha=g@Vj|VK=u5nVhZQT&}RX8=O{zU-EnaoVE(iQE(P3I1}Jp zvN+{mn_CewMNn*{HeS5}MgB5>$=Ji*iIat&^Z93|!)H#qg=3tc*XT6un z)lZTX84kH4ZvLE#rI2^C$8w~07wE6}H>ZuHCL;ex1o|ZNg z2pz4b^w+qD9|*6=7qXBPU`pzClDG^+42Jkf5=F(1Bs}RB^eZCN$7*P z3tiP3HL- zd#|28jY-e8vwQUP``zFD-~0dH`|f?Z?>+gyQOn+)eABn?M#fe%k(v{Mv4rFVCu$gT z85sNRr-kSPsH}Bsvp+DL+}7X}Dq{=gL%#<0%Y{PiSy_EobIk8ecym_JjEprcX6(`p zLaPUunc3VtR$>P|u{2+gn3=Vjo1?{ct-gEN)~Qf~YMn4O zSf`J=Q95lhoj|gVpEg;?FPOgiJ8Q<&Fl}leak{%f6i$&VW}P@@oj7xv)2V=Y%g+X_ zUppH`P}F9tY%_%XRkb1;M=$EAYl$PH0hy35jD_HKRq-N0S>fS^}^kqm7MU zn3wFzXuEL|5(~1crRDDIKcnwVw9hqUO@-O%H1(a*nO+lPqFy?MJg4XD7N++glU;tk zuAZ}zy5GH8*Zfjl`aQ^XlkZUBGTrteWc3VrSK}Mn=+alfE*;LrNd5+mpb#%Z_Ha$@m3BayXMF6YBrnne={6jfuMK z23en!?9uX3C>fO6;z6NPMCr_`Dm{|Nk(Z4g$kT&)dI&Vzl}VE!LgkoAACS3yz)YIV z$1fP`(qH9Ss&dGXNM_PMQzEjzm<{VK{%rzuP6jK`>Vh9;|Y z`Fx%p$@h7zGU=m2M5i`O52R$DFYi=Q zoKw|Br=z5g(`hQDbmlP-+3?HAOZrNlo&e3ZWztkiq3;G}(qurf?#!ggfaVT@J;f=V zfn2bpWRH~xTeN~o7F1cV^|@frqBR-eKjkQ`uV0WCzP^a*>+7e;)J-0y!a81!Y~QBr z^|Yjj(UN+I%vxT$|K>A$!DRdIV624+pQB@wiaB3&3Ev&syFelX1nAcqS7h-lHZ4`F|PO8rh>~aIzW9X>Hs`t z;BhJt{hyC}m5BS?7301W3wQ3gpSe=p4?k>zr}uF@jm9=G!$MGIS>qmvMef7iBJLh? z+WOqi;Ak@BO#~xhOC%O(caPoP;qIork=xP}2!+0EiG;(jM!6PFjy6Yz?_*x$(uHV} zonpVKsbS~l(YJxw!ihkr(Q&i7E)v70B&_Pf?H#HmG8zqr0x{JR^2XyqpE?qWsorQb z6!dZ5aW$3->3xUB0$et=Q}ht1WzoHthB7P+NT41HK(=h9k+aAFYa9Ji&_) zRD6w}B1mkH1-w-5AKpeP4Aqv6p@x>{p-6Yx2Y8VuZ?LS$fIBTHtw*U@Z`Rt=%gU82w=ib_vqes$N@Myf9Hr-!HWl4C zp2Klz?lJ8ebh+&P0}jpU^mIA2&K~=qi;w34)UTZWPrJ$I&XYK|10{2(u%DMdUO)Rf zd$hrU|4+SaESgJ|))}oonqwVBb84QnW690Nf9J3V1d3zANh;l=YsJ^-j@` zwoG&#qjWcpm!*zJB`LbLEdbsF`~;Bp|A;5`3h*Z23JlU0fVTkG0^5Oi0q>N$Md}-* z?f{xmJ_76lCV>{<9w7Rb`ZmxC{4<~p_+wx%@Fz0=b0A_$Ek=yE?x$`5Qh5`Q>d{7t z^z~AA0Q->-0qwvCfCIouAbvYij{zOPzXGD~spo;4fqw@?pHnkHH}Fka{u^0-UX~ki zf~b4}a0~Dz;Fo~60X@KO;8vg$=mib~hk-kRKH%4Y+ktz5LExjn`+$EA3;~~( zCuI4Xvi#S;QP^DshJlKSu?Xd-fR6%cJ*YTx3Fnw6OdGa1&r_7A zr1J0lS8ff~LL#2aHv}UdUt)}}N3z~TUj^wQ$#eBi%Dfp^kK;|5r+SqCH#$sSosRWgy>?5Fr%l9 zh5_&mwYP2PXkr%st?b&WT0=843>dm=Z|m+@#LWIra&7S}8nu<1tHkMgynqPO5gaNJ zB;p-7ZuJL7yva}kHw0@|1V?<4a6A%Pp%%#~qmo!))bFoU6vd6%XoZr|a(lWvaJafF zv=Z}`i1A&cA&);8kCruU@9pmI?9-epR0U@xcjl;9bP{Lqb3@nO|HU6!j3|FvOpaKk zjYqS|P=gZ*yH;*9n;mUsX4}e}=GE9vR-249n_pi_-_uK`jT6T&A2&Yuy73>3`@T72 z`qQ6Pow^K9*2%pmFU?dkW8C}N zW!Um+qCL~8ONU_h^NTZ8Gra2L>1!zV1*~b#epK2%o0J-hsj9~LE4g|Wuv

J7Rl^ z-pf|-V}M`bB}+c|^aU;??jsl4ij6CZ(1uR z_5{8^#o71pOP)VLOmW`~J2feAa>wFnjg6EzZG^rFPX zc7t8d8SP&FfU_TgE#r)KETZl)u;pBPRoDIzj9wd<*n422z4yUx;M#JGyUN)uU^jBs z4Mx9UCN=^l{O$x3exC&sevg6)zpsD^zbAE#_A$cmFLmubuob-Ji(n#_dDu?~9}B^R zk7Zz=<#s#3gttEg6W+cKCcI7P+PA=jxBa?y08DuMOI@Q~P6KcG$GY|+*yp(RI+%#+ zmtZ2QGhiaB55Ydm?aY{FA}TwWi0W=I5!IJ;Z3Ik2HL7b#um;}BZe800CL(wYOhj-H zOhoWBn26xt!GzySV8X8n`w`)HKA6xx2`2o~Zb)b=z_5?TS-n};+Q7sJtpgK&H-d?| z@f9$Y*LW06wDKgFi0WA|85Nj}O1CrNS4BnzCZhtAQR&(Wu$#D#4qf{qm{?`c>e@-2 z{T58DkN?m$hAXBV4}uTx^@Ii)OZ&&5g#_6ot8{tew=B1plz2-VaLE| z{my5{B~#eHfYI8Y&uG37QyA@!X?4$MA4#S#+9T77n$MO?rm)ZJT8pl&1rv2UB~#eF zV8Vw-GKJC15wWBsQ`iwOeBk2+$rQE-=R^3V-7ztRHGl~pjgl#>3rzT+c_8}X0~0>B zNv5y^VEDktLCF+$0ZjO~B$>h#oEhQc6Ot*c5lr}Kl1yPXFyW(5GKB@eM0-KW6!uLp z(cT|Rrm(*U6Yae!nZo`HOtfdj`6Z^XgJ2@&Ly{@%Z7?xb??|Sw#n{;4grRTONv5!~ zm`Y-9oRdu9`#+jt20o_*Yvi6tGwY0g-9_nEokew)(wT~Dv9N2^nOSE8Iy<7XS9JCZ zot@Sh8s;%q@g7q2RXk>TIa2_IN-qI#4Jh=uwiu0XVh z%`3PQXZPUj=an%ii_o4>3jcM%$HYMYyI2jIe3CXUQm8jo22S$^V1@t6;G<`t|7Fw{ z*-++txpf$rW`I) z-Y8S5X{dP0`RXWB;$_NnWy-&nDf4hL&!J^15QR&iTqsf+=!B#Hd7CyUbd#J{?t)TV zr1U_cGnBX41f{-62|%H{<-AP-%Aq2Kp03dSPu}JcDD>R9-1AS^oAkXM?=`ScY0RJ<3es9x#LXVwapZZWRPSU%?VI9wKw zh2E7p>E+mvHx_4}_F$-WBoy%`qL2cK=62@sI9-ljn`@vG4?tEHXWN;@KA<@|>1B}9 zqV;z=YG@)Hm2 z^n`-(f*|qks@s-(byXD3dd=n0`=Xmw9M7_PrLUbV&b!fDdOKET%1f99uU0CTQ^737 zPDCh*OZ=5NBFhpRX2DrRQ2d3?phKf`LtQRb8OGM$W7TZyt*)F!USXDgt<$lt*KT*@ z-vQ>#DipydjYF^2-EVi<*4Zq4o)irUMVd2WmUXt?-ah-FQ?uH8wJTMl$V-hsMs@O9 zUS0QGaXj_X+(-@%bmNs{d2jeIi^Af?(ovkf4cY$Ox@s-Vv=wG(0qSP7{PavodsM4n YrQTkgB?kqitB|#gdbb6-yzv10Z$E-mOaK4? literal 0 HcmV?d00001 diff --git a/x64/Debug/CKellyConnectionEnumVariables.obj b/x64/Debug/CKellyConnectionEnumVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..912763699ff804b2800907c79fde7ca2a41de89c GIT binary patch literal 9166 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 Q)KO15dN45>EhN}~0Hb=E&Hw-a literal 0 HcmV?d00001 diff --git a/x64/Debug/CKellyEnum.obj b/x64/Debug/CKellyEnum.obj new file mode 100644 index 0000000000000000000000000000000000000000..da1b2ab1120aa3d4a9894b070bd1092e88be1cb7 GIT binary patch literal 3499 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 MpB&5dCd(Q6H)zh-fB*mh literal 0 HcmV?d00001 diff --git a/x64/Debug/CKickProblems.obj b/x64/Debug/CKickProblems.obj new file mode 100644 index 0000000000000000000000000000000000000000..66a9226e1089bf4377c2e1afe34210d6e4491062 GIT binary patch literal 13248 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 S?@h+zftkd<%y6QVq5lJC`ig}B literal 0 HcmV?d00001 diff --git a/x64/Debug/CLatchLedNotification.obj b/x64/Debug/CLatchLedNotification.obj new file mode 100644 index 0000000000000000000000000000000000000000..cd3f3db2a613d28a20ae33b15979d53c6fbe8923 GIT binary patch literal 12279 zcmcgy4R}*knm$QW+omurh{&*@0jm}l`vV1m!LcPxn?Tx>Cas9kk~S#>)28MJ5E%`Y z0BtCLi^z=V=rcdEBjYlR4C1&hpeu+_m|@0o)ZN8d+$CG)Sp;_MKI7=V-#ItuCQY#H zv(K~lN$&fe@0{~}-}%mW&pkIc?)ACsT<`DNoOd!dlZm4wzevI{9=8_{m=HyC@WNJwS@%&c%;NxXCP zF?}H`2?bnjvK3>;G1mPP82h%OFN^Dge`36jggzpxm6#-CG~On2_r)dVK3|c++@mWp zA3N+s?J=G1Bo1@;1)aHjQ1|42nq#`6W4a;|9;+@Am3`Ty$J}$&+!MdRX`iR^p|_gM zYcEE$sDREgMduonuS;joflBJy^V}>zj2npEM7qCqv>^Hx%I0GxngPN}%nGbzZzAY1 znazEs+}FRtVLrsZTGwqrV9b3J&+$g#N^?($hS*ok^&c_EqQopchb=w7=ic+vm4Z>G zF3CcYtr;l0Qc!5>!l^EVQ`4F&1&dCAaObWRI8PLm9x2!`5jG2YZ^n6G8SmQ@T?hLL zB}WyyL#4Y_`a_lORq3lLeM6;hgT|l0DaK9g(G;xvJ};4#?m-l{@*-L49?U9Ox0V;l zTK8af!MXr1lEv=9oY2x(lq_}+=7pTGC|T?t%nvP$Mag3HaJV)WC4=3A+VI?1^rWDn z(F3K*ct{fe@JqzLFPlW>o+G@*d@Oni(V!#VpjU>EAV)udgtwr=$H|5B$%Tu_g{#Sh zFHneY#tDQ$%Qq^g>@*%bRcasqonBTW|VZxbnuAAQL;guN&VM#CW{%8mPzO{IrbN{fH|JBVg1N+xI#c%GNY3ZL~YyhxV#tVei} ztnpcYlo!b&&3Zeod`|O155}Tok!HOi7A1?A^_p0e40aFR5dKyydIoflCakUjB#3_} zv8`B&mF>oY+@M)?^onB>)FTpSidW&%$c#P}miPB1|&|NBhL8W_Cx=*FA zsr0Z)kE`?yXq?ZWX%(MMJMM0Aag~!zbvk!bG&_UZRBPjRd7D=WP@Q##2fYqmkIEJ|7_EceHvq?N*A zMc#6n7pjUyNh^hACeoKvU8rDSisC6r2DYXzCk7=F0|ls~eVW`~_GQoFMfD*h#-AO` zG4UkP_oD{%edw*NSclkW_#Q%W0n>~EWyU$qhJb%Lp1Xq1X1k@%Y4>)7eXfw#-)Zy* zJky-3W>z?>>ABHqw7NoV%d8%Ey+7n__qOpyCH~gsY`J#qD01%%`!pwqUAlqJ8fNJX zd3?od&=-6+-fN0kFTw+wnq%5ZOc4ukIZTHhdbTSDoVi+uYyy-Id1YGv@GCp zQN6o$DM``LP`c3P7c(%`=k0uCs+h;60au5i25}8K>%46Nf6(6^GBkUGVVBQf4~5-c zzmwwRG|^DH0^Xp<*=%$={C*!g*g?xHN~YseK70CfXREi6njrL`(K$p|j-B@=uFO?;5AaJeRdf`pjd|BQOfchUIlcpTAssP zh|@xR7bxH7#wDc8XsvP>%~n%&z0F~%u^6iy7F&HwM^{V63O0d_E?goz4<%Y=8%5WU z5kE3C46(m+1Y`42*9Uz5I_#U8tE^2`4pU3QL2f&uT7yDp5Z8(z&1!KoM87V=$rp}?!y-ouN%5}Cxw5D9& z@F+QEU7yz(60P+5da9Yp=uVc4FYbE$xPr5r*swRI|N9zq8D`A<2R1Uu7+t?~{21T4 ziadw02wl_onKbe+un_nf5ZmoYE}R|G=eBEAUI; zB;ZJ_B$I&?fm2Biyc?K@wW|a;23QKb6<7wm3s?@E0h|V`1WpGo09F8-fir+EAbxv} zJPIUzPXb9_ACUCz29my)fu!$sAnE%@An7{;Bz+$NN#CbH(sv1X4{#(lDzkwTfOCLT zfku*JPO5?9fF|H=z#3o)uogHQXa-gTEkGL(a~D|*#C;*+0a}4!AnEA_ntDdP)J--B!o_Bzx=T|_|^AV8r{2QtfsMj<0EbyDa=YUgyKLu6*Ujg0+{5#-$;67jz z@Mpj!!2Q5SfIkPW0KN)b3p@ba1bhv+8%X+I29mx*K+<;%Nc!FflDmd;7;HP;ETZbfO~-_fd_%7fJcG- zz+VHY{~v(V?=v9v`vUkLFlU75HyTL&CIYEnG4Kp<9`G!1A@H}rhk+jgJAmhbm$5Dy z@J$>G6@ul6jZt}o%5)g`Sv{306zN3k2mg|&$m?%u3$0>U9{90H!31nnNTT0irCbRt z#22yR2lb;e#=wtPYCoznt#J9mu8^lC@o;mm!{1dM@X}kT^tuHepYJj0PgP^>Jgd#P zprwpSS`N*#bYg^fqWvnt$)HA`b-O+*d%vaue17hX`4x4{=&olYvvMIKso293(n0ql zeAwM?PrEDZ3t{g+XR^1w&EFaH`z9Mw#Hgd1fTzRl&Q#TfXRwY8H67{g=|P~;QJq0c zplygSxT3??;`Ro+(p1~5)%8_%Ci`TA9(SFii7Cfui2gebi?#lL+~g6#v1E)N8FyeM zI!z8@KZ4zrXm;&KhO{la?uH!8*&LlV=K)=Ij;&WYwwxN=ym>PUJ-xg8wOe%hoO6k) z-Yus-?@Ou7Q!A7DJ&S&4Cz4{kHPqxd68%qSow<5S3k@VVk+r)&>$LVnb}yQ|t28;G zJ+1A(vi+1+Sb0}_LMvJosyh1rt52$UmaE9y!)v#k{_lP*XTR6>XPwmcXJ62Zu;>8w z?53M8e{xW>-7~V z=W(1J#aXmFCs{TUX*{phgJEBU9%H~Ja7KGE?2RC+1iP8D#bDScK}Ih+uu}q~y_aB* zOSWFJZIaPmOtgCm%)tBZ2b;uMC31W+XN_RO)5T!7ahV@X_(v~+g?~L@!oQue_6M?d zpRD~Y80D{yeF7%NF&Yb@klg|%WHZ5T;_Vv1ia2`^>~_xD!G!m;XA^9VWE&*gF4=RE z?Ey1zEk6enKiFS$ zwi-9=9U}D~W4JJnPXIYz-m#8fO6Sa4OjpmxG!KQF#0~6z= zeWG9<$+{$aT(b3&Z37eW+YKg0ZpAVqM*c7u+(9(j!NkZP2NNS-4<`C<1DnFz(N0fz z@RDTvCHs5Hj!Sk{vVR7>;MxU{4JR9;8idY@qXFvpTL9%7bLqP z*_V>#;SMX>jgf2vnDBsh7Q*iHV8ZTxDSKVYj!4-_Fbn{(x`cHIAC}LqDooG1vKZf; z<+G5&^z1koT_5@Eq{8&<92l+W`Ru&H^h~2%=lLvKVS09>vI^w0n-!*KMPPKr=d)sk z>Ddf0y7KbbY=!BW9gOlXpWUx8J#&LmUgfi83e&T&lszV8>%m0dUWMt|Gho8TvkKF* z17O0JLkiQgcfcsy^Vtc7>DlkVD6{j~M+(!kIGBjR9~Gu&daOAjR^L#Vp4|Z^e7;Lz zde#6Y{BtNw&sKv8|DI5op8X6=_;)~IdPYyJ!oPn}n4V>0^%4H%DNN7Gz=VGl3e&UY zV8Xvnh3OeRrD75>wh0Q;vt`H3N<}u4%Yd!HQ89tWq-C{tDR=$+{$qNCv`f zWFZ$5jQSz<;SbDmud?_~pZv>GqCf$WoaC;ExClVtEM3 zuVh)w2xFh8NygJ8D2M2EZ<@rFCh1L+{6tC;^F=T7#F3DEm?rs4nq-o20v!{*=*3#9 zo|S2mSJEW3r%Ubir!>j!6motfY~7nC@uo>=ua?^DU(+PCwx+hJPm}o5B(#$|hi;@! zsQexz7g8iIL2@xg@(W0=rbym`L>x4(mUdq#9Q3#oGGuSke?Tc8vovoeDkUcW{}W3O z+8oDR$$|2Ar(q}a(_UsV{j{I z#qO}w*QWFx`sQFbMR;W}Tob%27_JGuB*^SfhIay)8>+7W@Zz^+Wx$J{V1k}UTYTOi zskSXJn=G|v2gRq>KmFId=|)x$%+(k*cy$t`g)U* zUK2Lh>~;$#iWw7iruwG3lqpE=$c&C^d!l8Xt=eSI*nDUs-pzhLCihy+c_lO2t(Jz& zDtS%j)K2l%j$z8zjYgxbu1>rQ#VG8Ks`~0iq;SUA%(q$U9hm}CW3gK6Y)y8P*=EJi zQ{J+sn5IAtZJacl&|Phzm}iWEyoO{mW~?_=HP%>d$@7)Smkd?v6sn`hXeu#(YBL1> rnv;{5nMCjs9;newSsiGxs81{vWvNTW^yE5PMl2n!rJi}NpojerqXpt- literal 0 HcmV?d00001 diff --git a/x64/Debug/CLatchLedNotificationVariables.obj b/x64/Debug/CLatchLedNotificationVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..9ebe4e61b193752fde3696607a62d446651a0d28 GIT binary patch literal 8458 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 H;^^=fz~ZmD literal 0 HcmV?d00001 diff --git a/x64/Debug/CLessonVariables.obj b/x64/Debug/CLessonVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..e20282ee86c71754edda6ca77df63ebae72ddcbc GIT binary patch literal 2388 zcmb_d&2Jl35TC8xCYS<^L@I1p`OqSFy}Nd{+1+RD zuG8Eoii8>q(4$QpWIR1!KkQmu-e{bgZ zX5Y-bePg^k4tL-CUVn28U=l(}1?FxLVS3c)F9CdUAyl5j2ZPLwlwmfz?W7WF0j6UB zA0zL(h(`|@E-j@zLkqMM7Qjmg@5KQU_)ZdB26@QmQ@ew_i>MzzPmEK^LnfcS!bnTokUvOVf>hvXdXEKg2YEjtZzb|a@rwP0@lra35NJiQMk*2S zb$Rc%8}fmjWb%GIDIa~MqV*^q{}x5wyC0YL{*1rWvY={Ts3{4yLHX8w5DzPDc-yZub#U+L9yL~U&hAZj|((PP<8{;o~~YDE8N4x zxU8pGm}f=qbS&HSSkcye-_lu&dra$eY)cpK^_kaoUCV7VKCp0x)lJXGjj`FxY&LZ@ zm1Rp^%Qk2_o6Tew8yO)9&~F)!3=DL~fOOfmniL{SyWHk&&eEbjxmMSm%Ln!e4_`j)A0=bF6h z8t65g`GGLuru>{iI|#NsQzN_4Y?Bs=EWK&-FjF(OSN@}!n1l#XZlrdltmHO_5Zpdif7r{?gNU7VX!o0hA}+z(#I;*0ET zIt%mQd-@~OsuqXQs870n7xPksW|6JTWm#r&369wWKJO^?IRNE-WE# zIGsjWd9Ad%s$8$uOK&U}YK4EbWTQ}%ua(wI)k3XYSqFHC?(vEda*QM05&d#vWBp3R znP@&9;gfmN;tf661t}4GJ`p?rnY0lSHzWRwhS}1(c7O%UO<66SyFRz4*nk>sWbsVL zFwQb{@I!LWusEZ9s%Evee1;cKA5!`|j@>XUzcb>xvbwxpSSu-0EPEedVL;VhtcZzNXl+caNc0ftBrqbLgk9ydi&EZW67>sW4GQIkL;{A^{+=q{B2iZzY%&o? z^dZ`H=vg@F4gEcr`fE(0u1jc8F88M5?R_1X_7#(czb}CP?n~_|TT4FoJMF=YsE&9E^dWxYHWr62js8oHPojk2S)%_Yq@;UA=}1%Lnm literal 0 HcmV?d00001 diff --git a/x64/Debug/CLog1.obj b/x64/Debug/CLog1.obj new file mode 100644 index 0000000000000000000000000000000000000000..587e228b27765dab11c0d43db4181f7bb36c8ba6 GIT binary patch literal 10164 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CLog3.obj b/x64/Debug/CLog3.obj new file mode 100644 index 0000000000000000000000000000000000000000..2b53a085cc57a6238d44796de42731ea99ebe25a GIT binary patch literal 10164 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 M3Xky}k!+m)2XAs+5dZ)H literal 0 HcmV?d00001 diff --git a/x64/Debug/CLog4.obj b/x64/Debug/CLog4.obj new file mode 100644 index 0000000000000000000000000000000000000000..0447ba42a3e3ad8791304e54fb4dfc93592b5205 GIT binary patch literal 10164 zcmds7Z){uD6+f?bn()$!q)_OfW3MG;9V(8KxTOtDOXH+*AZgq<&9ccQacn0sII(9t z5NSvYDr_}rM8zKsX^io)oA|&G+K`5(Fp$cop@GEIPJ^vzOez}_rSPF2I^h>R%|u<6O78eO?Bp%7uhub#4*m69uir;w=1xOBi|bcEXhV6TA4Qkr+S0XqJK9q`V?uY zH+a&>-CVF6v-OvrSQHfwjs^0A6M_7jfu+L}pS}@TuG`Cei4W<|>%)_Tb7xtG=}56x{rNM(v9!anC3I^!{v~nlf9!`N1I8hhQKt*M{Y~prZ}7F8$x?KlTOJzw!mwfAI^h--|t|c#K8-PnD;z z#{-bxMn*Fr`8&hGOzLjzecAA6sDCgVO3cnDBe_Is&Y#M}+rtZceBmD6yTks0)U?l& zn!KC3*Im<$I_M4hXMH`LU(aWQ`sZ@-bqCieI&e`+?JNX9dkKN-np z6H#j_m9Zk}bTSbYjb*LO{M=k(ZrVzf81Ax0ET?wp!WCauRTA|#0ERhOxoWi~AN;;Fs#>1oj@JK3^gh2?f&FAUBuWesPM|d(Z z7Y?MdxiO5mh|ZzeJwD22qHBgV><`UEGU;${CX>owmZ+&Rwa-fk096PIPdzagXOa7; zPs~L@;&cedo$6S($!5tvFx2N8pG}VoKwD{3(}Wf}!8#ghzKR-}Pd5>Hvbl_Bus0Oi z-`C4}d=0#e<5owzuY$V+$8T}CDzwY(<7g92^F2Z3bTu_MFG6$%O&>JucDI7%+l8xe z95g(+*|f(q($+CPKHAdOPS-;kfP`CBQm^i^?aMn=eEBnsoW8sR?l6wiINa5JX|K_j zzm@p1N%^u{u%r724)>y-=H?S1`nSHif4&<1`&UK(hS&11L(I>1Zzcaa%KZDVihnDZ7OTzA`s)7e zuF=2q75!^p%Rir&$FF^NCI5US{_&bIjl=I)GbX@&6UTRPG*s{-bhta@AMWq&<;A10 z7Ob^&i8X2pb#|}P-W6-M7wYRjI3hwgfx0RuUR~sxI0J>ARoXLaXz#$l(EeIl{qrd81nW9^?YdyV2lRMdz~2zaJ8QJVD?QQAuPVE*Rj}jxJ5I&^VTV{e0`6+$&mzA@*;&AL zLd-?tISD-*FLIfaCC-JDJ=b_1Gq%euiPU&Bx1i_tSiwXfjx#6Q&MrIcPDnLSZ+%x-nWX#tzzjNor>lfAmkr?kR!h4HwK;a4GV?{VtgwsX% z{vvz~_?GxW8m~Ayo$=>!v8-xRIXczlVw9?jF<8}va?~J=#it_k$sFDpbZ$>fMN@Ox zRC0SM4H-)^@!43cl87Cftst2#*XI`q!y`QvYRN<$WcJ?Km@un&(#w_9MRg%KEU|U4QWO zx>fbs-RtV7-F5Y2e_dU#qeeYnje5IF^z1#!dF9J_ap}rG)cqJvZV->=(q-q&#pJrQ zPO3oQ=XvWlLZ>r!!p-ZP#3lPj6sup4z9q|KWzy!&h8(f;f1c(QGA z|IlxaU-Dx)U32^^y<+nkV!ERm?+?86f)^8peqD-Mj?}WpkxXzppZ!~0HGf^UR21WoiOBm zrIB_iWYQx*?0F+SrjSXm197Yx=}m=9+K2`?x{cJVkVykTJRXe{RLG<}5RYIZEh~f! z9g*$26*6frknG>>3YnA!f;RY^LMELALMOmItB^@&f#4Ll_Y^W|3mQN`z-?8?q#%%t z^N2zw9Rrf%aak?xD8u8~*=AFPL<`0jDi<-ol5lf_$XB>~9 zOI^i`EG=yT;xTuLyC;cuX{i^8XNe2%>}|AHOL?{BdF7%mje3A&y8$5Xql*SK3To*H z5YJtgxFeG&tfdn`JlkCq(`W`r)|>>wAhCv_T%rP+NYK$fOYtZdLT$4dDAnv_E$AP%d2E72p{WIuoAnuES z???*Y&447A!C%ho04gN$YRDtYn5Uw5vOkAF78u@#H=~jQvlGmP5(dxh^e4Di&=~;p zEZi(Gco#u=xLaVdVBRlbegvi;fhg$w6wJ>{m>0lY0dJ&E@s~dwUzfq({_FuNB&9RL z49C%B2v|@6D*iG^%x>c>s@qng!-d~#h9g$|oe+(o?_#ZFp0MUM}U_{aVHr)-G-g&mD#vZWmw4E6DQ$r9JVsTZA2TE9MZ3JULK tof7+f@A!CVWO$%|B)H#y=eUFNo8ZA6h8DrC-yt{-gj+3 z+lhhkg)6`Je)o6Ix%ZxP&%5uBU+jnV^x^}jqW#wqeVt_S==cia<;Ps~jY%QWQ>xddR6LnaU+lE62 zb#!>fHz7eOrhg;D%6Sd(ewz;?dk)amf;m7)147v1{sR zHj*coiA1#)c#QA%tBGFUE_F8GAjT*C9afga;C2-gn`3_u2adi!9#~2?TY zUuHp3o5xYFsm=V-0-NR^J;sN{`^6#O(-Bz2mhTA!7G4Rhi4W<|>%)=hK#3py`TIpc z7Ukhny5omC!aUzo=FXA~(~)AY`tqlRV`+zDix}2Y{7d58i7&HrXTHqNZNa)$e7+T> zm5J{)I2NeJ`#_#d9p;zr4KcMq+=6 z?Ow=lCZh?Ey4u6ROzI9?`?BGYP~Si}l$e=IMskVNY*#81Zw=4y@rS$l+8yrdPfhLi zq$cj5&UIHdp$&SK{#jQ?=Pu#BL4C8icyi~VZ&(LX8C)f2Eluq4TV1J{bRrqgSY63T zHk*iAlc|gqNvD&EsOT(fW#(pQ6SGrRs>E=YH4@KcF&eAY+v@Y&N@IJ;o!*O=sc}md7Thn1!O%axj^ak=m6^%-*?6&f8QbGGiS;T(jYU zL^PAirY3XNNFqBINm`-YTr80abDY9G>`FS5$i~AXUE$$WDhY!SpwI7V!_T*`tt~u} zm<6SfPbQPfAWKxLOz!g%0zegl!l@^6aRx^} z^@>~+Bz6a}-KMs`Hrgz8^$+##9-B#z2|!zEQ{%W6I>9;`YPy{2n@+*rlg(v313jV8 z{@xze<8$BzY&SXjeF@yH*nW%cjSBs8|JZz@>t!faE>}=f(*i`N(Zrx(_q!D=-!5E^ zZP4)KX3`$du&-@wY^2%OO4mRdfMioa>eWNGeR->jFMo!S)0elv9maMF+nd#WX|2(h zzm@p1N%^u{up|5X5BH#*rlw_dR_fnA;oqK0{`t!M`v;nmK3XL?!=P%lv!qGy2EDui~G-M*sd*(Z54$`PU}$v(;P4zqT^} zKB(f~3I@Mge!gAZzuh(Zcdnv;t!w$`_wxL;?ylsYzr;UYGp4Y0Io6DEaNorCU2JD6 z_z^nX8R|OJ*V)4fY3JA4OP5%qCedc+D*e5)W`CjHzQJJ;!f~`!x$x>D*TiWkbg$Ci z-)rdaK>yJGT6*MoCb0Fa(jTt}s_65&G@hZ}?xDk-{k;0DbumCg+~-el@3q<-@gC3R!-uGv_4TmcQq@|9V>SC7 zu)n6Ny_mk$%&&v_wN=fLZL1kuFy2mM2j)1!Y$ER?-QrTI+c0tTV;hcn?jTgAi#S;6%&dxQ?W5#y9IguKR z=H_*7j}}Y>;y81$?d-bKZdt17{gVpWc6Qxq_p-K-;IzZet~>4YfR%oua@_9Et~>4a z+5u8_0f(JkciN>Lc6Olc{_MKb?u5hcIY)nX-D!8mVRz19XV;x}Tlg8csO(gAdz^ON zX%}?ZjXUh@x@{Mlo5)5piHSHrfDdG+I`RC*-8%X1)Z9ceUd|s#rXslt`glHfv=Pr{ zBU5NW7Q=MyFkS1PF@ji+H@bIhbk!T1$Osx8m+a{9H_>OV7q|N1$I&7jE5hj_d`}TR27F_DK8;r#?auh~yjWH>shpkaaxqKQ z#h9#WLOE-Y#^RHaxnvIS4BEFRCZnm@Y%00El!lBYnfOdBR!PK;%~X)gldndDe3kxiF1J=EVlxF7e$+bt7k!GDX+M1~3co5a_g&vEfbc8Er}A$cq2 zaT|5W=nd2)IL-5`1@+kIb6-{$cDw5aPpw;3uhqS-ZpyvBZuE`S_1bFG^Vg`iyF|~v zCOOZ1nHLu?`@{Ml!^sWe(OkOh%v>bb#dT5*dYg4zoO&WhmF5P%R;uFElesPxH|T4o zb9{0ovpaU9twGwn`TRS-HXiD``qsyM3;TzDbNpftmeV!oztStFkIsL{caA*EZtBIJ zUro5_m)P?v;ih*q;wzlgYXFjZe3jup0NwPoMt{+I?`pjx$XomY2)!kZeg!1kdjUwc z*N)qcYlPk%8a)go^_~EddRHM3TZLY)Mrk0a_kAF#_X?2o<8>{4TT5@m%Xm3@KajNj z7Lc^%{|@DtAJNjEY3YA}0H>22-!PDDc??Ll{2ctnj~eKCg-r6oH~hf) z6*B1}5C#j54~$HD69;qy?u7nY0szd|hdvT?(1>AP{@rKo2Wq(knn5s|I>aA(J+u z1CDM3H7R6LKM>DH0|gZ_DG$Um*g#7P;edh2e%%V0v=>N@?-qqjN&`U~d`=;gP5@yL z;GR;*q%%Np3f#L2nY0BRARyqjDr8a+NXB_sA(M^)$@w_0kVz{*JX;O)l0qh30Fv{2 zQ6bDZ{@<5*;8(~L>05{N;%_r23_hbW@Kq;GZ4?YOWZw4v`b69K%6BmytB8_ zUM=O-mh;L*9U655$$kSsJVqDwYZTPdVIa<3m$)O7D6FO9K%DI^ifJ?rBwJ1bA-N$< zYn0Q{c_5@Er1xmF03>aBL>xbZxHpN|mg8s8^TMoU4gk|e+{|? zh+8r!2E?N`=r|CM*`Q~Eczg!E3B+SD@Eu9vyBUz=GWg4x9YBR5UJZF<9eFB7C&zOT zWP#!9@MbhpV0MBzU&7$Io&E&(3OfB@o`RbN2Ja#$4|fYp7R-Ak%#XnIArJ+fpMv>$ z3G*zNOW}>wDgN?@&vDitAr|7Xm!(C%t{HJV)|Aifi zWU{3L8VL3Bd&v@K!KoLWPFlY{bqWgaWt|fHeec*6TJTnI2U-mC`wOn*Iwza^g6B?((m(n?=aQb?leatL~x?(x0v-Q=?^>~G)rQzHHdW80Z1o}w{Rl$bXz#v%^JzTYaC zThVCDd&HA8CQH*D;i~Aw1CVQCZ1sA<*^EYKt$m(+GG2^Vr5MYtV(k1H#y<0~;8Eje ze!pkNF4qnI=7%gjLVo7;dvbQU4)8}IcU{_BU6o7bjYRRdL3&i)#Z#=a$K0*VQ_RN` zN{X=?kV~v%Y#(Am1=AP)iTOr26BU7gj7gP8^F5@Wx^+aaq&qad?CQ`jFGkUO+2wiz zML)IV(oenT`s%y-ysP7~tAm)A`#VHu1<^yy%D>Xfe_!ITV)zfgen|h?ts__fvgxhb z1pTpWmM?B2)$$pQHx)lOBnJxm^-6G5pZ}iV4*B(Rg$CBkuj%u1ghJ&-?#X;`w9J*} zgOPF*g=BeMYj9$DU0YL&B#sb4@z5^^iAQaYCqbo&Z0P0S42Em@*@r0ltL(#PPH~?q zpZ+fQsg%>pMG9KwHkT$B2*HI=`Om@&?m~I)ITC;=z0&>zu3O=pa^*dxNvP_)<6847~)+kC~yfe2~L4So*UB=jW(_<9OOcs#+=K zr~kKJY1)Ww1SzHKE2fm6dMhQr4A0O}p3=dib%B8?8Y4JCRuC1Ps|`))2bbSXiJ$xP#~0uoYmAHb55WiH_#Yr?DRuqT}JvP&Ay% zl+y8H%FG7LywMe%+1(xOr~Nb<7&Hq-2v4SsOu=JLKFtoS+Rz4D>?*t2+{|u2K(&K~ zvPC1kZS1q!fSJb*memwvcefTWGr3gS$ZLUgyiiCbv?(*M#dEoID!~UWX!%k$o61gW zrcH5&Hg4n#@Jj3QcKJMeJU*?jlu9Rw?DBbi`(j>R+$?b-dEZ&FL?+2PL+R8c%}?vh znrU;|)H?Y_+A~#3r?t+Jq}F*Np3nBAFrWMscH)B8nK6^4w9#V)Me9T$5Iq}fAZZC4 zPx$tDaWYJ5oqRi=j3o+NotJeoJ+)SsN3CN2cE z&Vy-FL~2Jml|8mYtlxA#p3w#n*FtnCmB^a~bE>F~rwXNbS_>CT$&?wTI7Ndrm0Uhm zFrwpuXv8$rPzVG1x;;Db^X=QYGdh{dMs+Op1Xi9$=U`@cH!I{5_YG?_5I!2u=P09i zlGLTl)IKjmAlM4Qp;Y9#c@k|u+s|{8Gf^GH^Q3&P(@rExU~nWH866wx8w?JGW0_pc z#$cP-`qm>=*@ku%8);j|TG|fcEDcB_Bt-v@WjvueA6`VBlOHdjy>Sm8!odi+6$p(5 z4h{B3LL+TE(P4!s(A- z-+wNT*@DmzO6BF_wx~47)yEbd{~J#W9)yCIyQupK-FG9s|9^w>j*hizp}13_eR~H- zjI}d1OKY(SZ5%CLV`l$~_EEH?uj8o}%2_IS{bf&Z#C@NoJbn=J^a6m_$=P0vgN2xV z8!ggc_9XQ1%F69&QjZ$aqe5;WLwNz7C7O!HYpe1~Nbw?Er8`n)EK!_cbY4=K5RIyr zB&zCtUJl>~pLhXDj{6p`8oEWv&FH4IYu4(TXya5ZU=7z=WPTJZmIkwO#h9w1W@RIrlEb@n91RlrKe_m zO{-znIfA~VF%>VRi#VKnwxp&KX0~9ax7gX}qn^BxNhVk7q7gGI^kf?4>7*Wu^sitg zpQvLNj%U)bWU7#BFg-HZKioSM3~$lg2*KMle_3eNKj1mg_y5?<5MJw>*0!~JT#jZe z$XX`9$1!f>GP|0aM_oG#9GVnjV?>gQbBO&_f4q3epBQhZJWca zy?yzepE{loZ8~t;H`_b%^KZVt5&O=4ck7kjQSL6^p>345Ef?F5n*4CFbEs)Mbg|!| z#s&@a7HVvvKz~u_wn85$^az43>~$&h6cC-VE_N75Sjnp1ZvlOR_r9WdzftH8kkI`v zkkD;GIK&v+fP`+J;w2QC2NJs90TQ||tKMG&3Eejp?;4PZ!6@HuJ|iceKh4d_XGB}FlW)uv z11CRT1fqYK=%pi{qUNNRABi*|(Mtyq*>kX@LeBt^6$iV7nsgnwT(d3{;VN@FsADUT zy^u5&2h+G+v5NF6WN{t?br*vQPVMz0pP7R$Ajwy&NSO$6$YZC2LrVat_Ii@Xz(E(3 zltcE?rAYFy_OgregSJ1Lq$Noc9|z4`Upo(G3sg)EsLg5$SweguwggGTMuG)NVVu(@u8Tha2x53-#i2oqw&@e_Yudvq=W@-r@bh26_2C z+#ebU4TtDUo9+Pc{oQ{k$Z)F^JCRQnjab3>ax9%HG;(4ynN-p4?ruA|$4>6Gll$zX m&s#_P?lE`u0cwk7y@jqii*>>E*}Hdv3}xceMqj*Ou>S$Kq~J^d literal 0 HcmV?d00001 diff --git a/x64/Debug/CLostProblemsVariables.obj b/x64/Debug/CLostProblemsVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..2a2acb811898c09774af6b0eb1bf2195645b1cdf GIT binary patch literal 7946 zcmcIpZ){sv6+f?b*6@;UNm)lJ6?&^O)S=XI+N@myXiglb&oqDB*a>AA9LIK2uXb$N zP8W?z1Qo`zEF-`q`TDhQ;aRodE((GQi%@7#Oe z%d=zWPqkh7zWcl9o^$Rw=l*%u_a&dKr@udaDRK8MqWeiEPboE1QkaWVE~1D=#wR50lPG-T z^Lb{<`68fSXodC?l+Lk z(^uW*>6`9vykpM0TbA4{OkC=1k&O#=tj3)Cy*c-vs{$^hd|!Qa#Qf&9S#EIXJcas( zbj}Ur=Y`sDUzpx!T0I1O7F-zdnezjAb8aAH&i&4u4}^kq7gXnU4|A_&=8Sz<=A6E% zZQh=zK1zGGY~G&BAEiC6&D*mV%e2aPoxYZL&YjH0=gycZCy$BQqnk?sA4KWxdPcXA z<^#U7TB*rmnjaZ6=l*ni8FOo9l_epbId{4;cy?lHnsai6EYzJ_r5_7raS_`OT}S>g z)^I;*Vzv9bqM<_WG3*7!=x8`N5DllZ)0ucFotyIK3aS0knS&kCUf#>1{{CFC1m^Kf zDq9?l7t(Q{q9-^07=^do*9@h!O#j}xmEOIJpBe?HN~z4=;RlVrTmjq2lwlJNb{PI# zHlNO<3Wh%uFBa1YVOC%VRS(^E-km9=6?G{LB1SCTC#9WSKf+@2htWGWbqwxgMxj8tnTJ$0g0dOBH% zXN^9@wHO^pCknY@ZlYw2ri;_@j1ewPC)2qo$0-_MSMr5)F%=#4MJJ}}7xFx{#B8ZGcP2W$gosd;D5<&n z1j(gxAco$Ribg@I3kg^0$zG zwh=%4X7}LXK;@+6Wy=eqdgAbpp-CBtyz!gr1BE!@M(QZp}jkVv`KlG*H?nr!9_cq0FFBP>Y42NfVZ2C}|C=a8ol;e5D$tl;a z`|q`f_cx~1=|XkB?+RM66A)qS8dZCSND^gZO%cT=@n z#ZKk0rO&GSz`!)#6F52abvpH#R=^}19k0-5)qQAZefd@T_8(w!`yNkNnI*IbM-fm$E|G*VZ5+w zs#KkikC?R&w70i?;JyTZ8tHSEni~Dp*5f!d-rn**p$_`2nNiFB+WMRaI7?w8J#xqP zSqCC@n6gv~eT{fkTd8*Zsvd4`)xGb!B!(Ue8tv6WRBP_v(qF6lq3XNyo8P>2k3c`bliw$9dLGZM0=;O{ z{s6?cjBa`zPbvEsASt^ClUvGqfTV1vP2-zXK7hIDD?n0q0!YffZ1bH5lCpoaY5xM^ z`R%5+fu!sQKvK2`^HKIY2qa~{Y|~0WyfeA!>p)WWNgye^48+%+Zu+l{>M%%>uL(%< zeGN$RrR>(c-Fg|a_)!DBrI1chwBiTam_j<;0%A)WxI=+-@&WPaHc+oZI{j9)HqfgI z>Ey-@5MKf{P`yGrod%NnzN3&%7lG~)d~YbEQ$GljFQkx8i$EN!26|2*o%VvjZ@C6) zRY<32fY|c}T2x4wAZHjY=jr4;v2J3 z-bVaBld><^=$wr%*yxIl-n9{L{!+HdMqV5FY!tH5n2ly_v}mIjZ1gJ|U9{0<8^Hh( z4VQ==$HgV0(IgPR!8v{|l66Krj=E7~Jg+g{Kx3C`?Wo+~u5c{FgTX^y;(Wn(MV5>Ab z1;n;!^d=DZtI=+#U`-mngsgn|K{L5D{`PY}PDKQfSkNR|GDML94&DKegJt6vDSzk%CT6h4U(PJ8 zQuZZKs-F)$HR!d^H{xEfy0Y3rjziX_J9HkXHZ5FndRjxi>M5z_X^3LO5r53jcj{rj zM8{W(;u^{;E?LO0ZcTfGeZj#X-;g?DXWiDW$5a;7brhBdaUJH32d%;{zC4P>aGly8 bjD))VM`GSJVq)JO#bUv1d@|J&FQ(}Kd+Pdf literal 0 HcmV?d00001 diff --git a/x64/Debug/CManifolds.obj b/x64/Debug/CManifolds.obj new file mode 100644 index 0000000000000000000000000000000000000000..588e586562e6bdf552a821a402f074e17509f558 GIT binary patch literal 353608 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 ODzgoxu1_hB4*vjmNYY^d literal 0 HcmV?d00001 diff --git a/x64/Debug/CMouseHoleEnumVariables.obj b/x64/Debug/CMouseHoleEnumVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..05db1cf3caaedbe602ce2ff6f1af6688805c367f GIT binary patch literal 10974 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CMudProperties.obj b/x64/Debug/CMudProperties.obj new file mode 100644 index 0000000000000000000000000000000000000000..acc924bd5dbaeed6f00619215b77b4c9d15eafd6 GIT binary patch literal 72279 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 pp2(k{4UUH=$}3OwH{% literal 0 HcmV?d00001 diff --git a/x64/Debug/CMudPropertiesVariables.obj b/x64/Debug/CMudPropertiesVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..192fb258dbc0183258d9327d313c67c7e95fde12 GIT binary patch literal 14493 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 MP8>+@NEFlT-#8C=lmGw# literal 0 HcmV?d00001 diff --git a/x64/Debug/CMudTreatmentProblemsVariables.obj b/x64/Debug/CMudTreatmentProblemsVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..84999bef76b73d05b6944dd3010953d99e3f621b GIT binary patch literal 15419 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 C4<+6J literal 0 HcmV?d00001 diff --git a/x64/Debug/CNearFloorConnection.obj b/x64/Debug/CNearFloorConnection.obj new file mode 100644 index 0000000000000000000000000000000000000000..ee39837ad7d9f077e1f6103a37ebe0593accb18e GIT binary patch literal 9604 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 EHztsSH2?qr literal 0 HcmV?d00001 diff --git a/x64/Debug/COpenSafetyValveLedNotification.obj b/x64/Debug/COpenSafetyValveLedNotification.obj new file mode 100644 index 0000000000000000000000000000000000000000..03169e3adfd1f7ffeebc127cd56d44d401fd81d0 GIT binary patch literal 8527 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 EFG%sIW&i*H literal 0 HcmV?d00001 diff --git a/x64/Debug/COpenSafetyValveLedNotificationVariables.obj b/x64/Debug/COpenSafetyValveLedNotificationVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..72888ecd876e6d53aaba5cc46ea8aa9602d0f822 GIT binary patch literal 9920 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 mUv=w9Fq_qp9JDtN*_$iv17OM~z|t literal 0 HcmV?d00001 diff --git a/x64/Debug/COperationScenariosMain.obj b/x64/Debug/COperationScenariosMain.obj new file mode 100644 index 0000000000000000000000000000000000000000..dda67a36bf569d897889d73805de226115c0980e GIT binary patch literal 24009 zcmd^{eSF+imH%%tleSC?6r=?aVSoY^YMYc&OR1P-GHqg$%rrA;i$;?)N!u)WG7nH) zSOYB&wX|drwMx~Z;8s9>KA^Cozpebb7I|pvf{HAztbhv^exNIB_!VT|=id9h^Zm|u zl7@=EfA;%I=JUDd-h1x3=bU@L5A)D|?G*L=r+(4)`6{KZR_2&H*s)>Ia)JAfRw`Sh z)WfAlcmX`FN?Yc(cdQv&H!I^c9iFMwv}2X})e<9F3skG=m2>;sTL)XcR!VJ%D0RbG zO8v6j$j$-EReAZ`4Z(K1kVoHR+IX+!s+3tyY~K$w!zCfyuODZ zS*i3NvFU2=V1H|yYo*le5~Wh-DHXvdaxf)hpP6q~3waT8x%G)BlleAQZ+x+(dTZCL zc=hJ!tm?hHo2cCzjXuIrz47^I^~TZYCtt4K5}ma-I!lCmt7e(Xt&EJ%Ha}3k`Gw~- z-P%$9k^ghV3bl^^K`+%?OBTJY4n$$!+p6$?P%!jVx9E)CRWw+li}-Vw_UDgu@r9TE z{N|fSoZZ!%>(bR*lIiNrX4z~l`Q})$>hmwhE?P}!IU3`uuh~5mtKOR|r<*!BMcA7h zTax8W>!@ne=*FwI1XNU);JnptiUpO$YNoisEB-!hxQy>!^_*R6OpKh%0cQT4UV|P%VNXDY`37_2*pYj#8@3lknD<28Xg!O5I@|1evFCI!$C!s;fO6F^9voB(vJL&233Ku}knK--gNBgM2HqtLE!FgfrY8~wC?Md|Z zcg%0vuy8?BmD~q6B~pDI{kkU8*3r}2-`P7**V@@Lw|C9osE*>9$DvgnP|r=CtX`QU zuSKe+XRxDdcEfw(OMCmd2knVF!NLXcL~nOrXIDpmJkixUFwof+U)$RsZ|&>r>TJ`4 z48;3~dU`s0*2Q}R9p}VXcJvQmUwnS){Ia?4n_CvI9O~?9m*V`g(y|MiOZ5>`ZI`zn zc7Cd@yIswz>FQh~GmX#d>Fw%W*BhUwZ-p1H9qQ_e&r7w(=Uv{~-?O-r`Sh>lUV0!t zue-N>sHmX}6UlY`t=;jZ_;sME zuCuMbcc6FeV0>lgz))*fJTo}d-r3tEerig}RQmcm2RfQoCYrLnyrQ)>kytq%w6CHTBKi zea&N3sZ-SP(_3u!FchoQabm-N@tFGG4tpzZQxZS5t^RSh*Oli5qsNi{Q28%KjoHI^AZN#GjP>C>J8Eql1Rps0{Y0w1KADgWu|AcpX0|%P-=0}| z_WlF*uF8wa|F!l$2mbVk?9F5wJac#25QO2a1Vv}B?B#{*J(sH)$)VH1e>pOHv9>m; z-McevsFfU%y?4?%f6sf-`u7>|u?g9mtWB=0$fg=N5f(~`x7p^yoi83gQk#8g(PEt% z1|4d>PhCmnC3(3i*AB8z$$9H%M{Y+&ebr&k7RC&1$M+a(yz}SJkJye}+O;r7;X@2r zsE$7F0?y{<7~^V4E|h$mayr{U^FQ)Gg?~~_AOFc~v#`V7O#DSxh3XFsF2R4ZIHgF33ZL;XUA1a6h;W{5SAM@HvosVm;5l2a6f=Ch#2~ zj|hfO1wRA67yK-^0Q?*%*Qwmf53c|}53T`k0lUE+pqyL22yO(w1a1Yt41N*h-go$J z@T=et!Cl}3;Mc*Qf_H-AcRBZZhwPJ+_)PEua6Wh;DE?Rs zR)ZITY48JJE6Agx;g5mu2d@Sbp!j1cxC2}U-U)sX{64rG{1I3S{siRt!|;<}9r!!2 z9y|oD1SN4-fyaWEfZ{iQKFK*#4u3xVtjPF{=cC$hzXHW?PlMt&9vN%D{W~ar`wb|5 z`wvk3#zSN6w}YVgjhxkfdkGZ3{T>v*F}C*G%b@t}kD&PNRq$N!zd-Td{{s`?pTG<_ z3buo9fSurDA3*WT9iaGyoYj6IR@yIjf#R3%fZqb|0e6Gn1^0sA10M(P1)l}) z178J+@vv-s_k+iRKLBTftcBq?_`gBP{eJ>0KypCm(<5LbCjH-MLc*MpaXH-R4qWqzLkzX|>wxEmY>Wgoc; z{5eQWhJOog0$&2J1>XR#1Ebip8I<^c3VbI>%=Er;3n=!N^6wp=w1kIGYL?|6rk(7^ z9|6~aA1%&j3N}MkOC4Ni5KY{NDUk5J+@saufh!0db z$Q)G#D0@>Sh|MYiVv|aOjH#A_jG@>=hu;G(2N!|FNRM;4^Y$G!ZumgA-$h^VU~GNN z=XHnWTpsB-e;AZFv(|N-KMG2|uts#8TR@3(D=2YZ1IoV81|n1Kpv1WYlsLn6oXJ%k z=k=h(nRkwLoN1%u+yzRUyFrOFYf;C!7nC@YD>}~opu~9qlsFH95@&Kq$N4f);(R$M zab_*+IDZ_JI5W16^WTCJ=PN*o^Oc~)ncUNHz6z8$Ukyr}u|dcA^Pt4}3!udL7Et26 z1C%(Ei#pC<0wvC01|`lrL5cINpv3vBpv3t$P~!YGP~yA`6#a4jy~DdMqgwA}B8Lx4 zS&q1V&AoVg$P`4vz4ENi-sZN!4boR1t1Ws!Z1myv^UC@CM!XIdcUtuNd1bF3IiU}4 z+yl1k!PAy_{k^i+-|NSo5ja@W`tbUB<@|o-dHvFP{k(F1zYTf)uFvb|mA!sk6|$W5 z8c-3?>%Q9~#$0tEPmfnFq-X8gYbr&T9G;r##is1NaxJG1&ktU?kUl<1S4mb|oqH-v z=;^8R^!IrJJHT+Bey?0ezcdwlMX#rCcb>ijdHTGvr_bv*n%8fNb%Zxhubkhn)N`1% zzdWy>SN8g)`#X5ghIb(bcy}bz)7m$%zL$MPWro%awDotc>1dP>5Oy^7bPlqOFt1qT ztXQPv+ePUk=KrGm9vwaF=*X0!<5f|*r~p5~ClB!n*dVrgdxvn@_ooTr5cx@(ne+ZE z%UeKizmW6r5-XQ$scOrwfM+e|x>mJVF83wur{Oy!kO+qx*`l-EaRk?K#%E z8$A<>_ZZK>50&hjG_p5xAo}Y!Mjo2H?b;h|9C@gC+qIi-9N8D!6WPWf(^Q$WbDa6* z>o*T44^7%P*;Bu-WZS;Twbvbp?tf!sUx_7qO13>D6Eor`Cy76gY&`w&kLl#bo8%i0 z9<_r!G-+QXSF>lzwkLJsPB7obes+9lvTy8@w>?ziyy zT)?ZimVKSq(>3F!S)HNTcX&Nhv-^0JlWbJ|kk_*`dw^G2=TWtn*K;&`gxA@c{gl`D zX!dhn<$DNG^{>31r`glI&e7~SUf-+P?|7Z7*~`4n)9jDD$_YKHUgK3(K~!$y_4^*+r`hb_|VY}kdGod;X2St;xy%`Sk6 zucLCatlvb9%I&baSj(zlAJD7@R<2n+tU@y$Tc}FSR>KmS@#sTUX|@KI)NCDWsb*a; ziDy(E?dVIEs65P3HClEh%*0$S-c8K+IoU6r?A^s)9`NAQ=D|5IlLtH$wRunmJ56g| z2#agRBTt(L<*+lfED1Atz=KVj2Pv4zgDlMC0go+h9()vL@}Lc7@_>ikHV=5LZS$ZX zX7b>2n8|}HU?vZ)f|)$H7H0Bb3(Vxf2u$|*s65uTdGH08>>*KkL~Yq^Fgb5V<*~HQ zgS%lS4|sHM^WZ+1$paq$+dOyxX7XS!%;do%u=i_yKZTh*_&Lnv!N0=Fb?wuz3eBE_ zRciJ-n8|~eVI~j$2s3%`8qDOupJ65sA`veS_**I<2JvR;yVvETdTuEUVd-u%k4)&dELpi)q=d zPWD~cR4w}_n9;Hy)~IFw2AihYb58auOfD;<>UAfZR>I>oEqe#d^gR=Htd_}_npSEy z4`%$b7-nX^(aGcklB;yPo1E+mu+>_2r;~lh$-WP}MAtq5`;cZ&xpvROjPGBBE!VZ9 zu2xNww`ye`C9uhwy%T2iod+|Po)0rxE`k{?%Uo>=X0&8sMoS0GXt~_A`y|Y0x!%b} zU}kQgfi-ChcDUNxT_*rc-R@=>e|YzHSNjc^(R>fAP1pX|)$Vh(zi_f& z!`gMbXJP!I?^Rd(2F&P-avyKzF%xEda4O8yo&_`Bo#Sd3z>M{aVIS0*m%7?|m>D+% zGvl_q+Af&sI{-7|UgK)F!pyjzb+TJwCT=e|*{d*yV|8N zV?mvhHNuPqO-|MhGc)gm84Et)YOjWw9-Coi=C`=oufmLdcfd@BeaqGUBh2*O?PL$b zOdg!brfX(-8qDOu*-kbWX8L}>$(A`;J$$xY`bgs zCD?LZdxxw2Hq7|tUYPOA!!R@MuUxz5U}m(JV9T|Z*IaE8Cl8}#63l2h8D_N1ff*kx zfEg`IU`9)|tL2e_)zSzvTGqmhmJP1mFwAJ#>|}rMWS@nZ7=6*z-VQTnoPUR3GPa{*Vn?7E=dcAJnqPEsLq&!o&wt z)$c5esn=n(TE-TrSxlV_tJAVmEsLr7Fu59;suo(txG?@?T+3o=6vn9#nViLi#nguZ zV@tDTG4(N+v1Q1zn7R&TY>_jzu$a0XW^DPoWij zYLjKy2V+|l`z(v8m4x2d_aVz-stac9>$5DTu7(-=uC*+tcEXH(w^U^f8DphoF?9nhru&Xq7UK(=Uf-83i>V?8FnvobV+W@Ct4 zxlL7bEQ_gc!sNZ?`O_^Ogp@X>k&-hRt@Y z+%eg!Ol^x}8yvgdvF(oC=h%aeJ>l3Zj>-EaM)P#XW;?dXv1-R!9P4vz*s)!X-RIbY zj*U9TM?>tmCpos-F}de7R&8)>mt%6rXKEjGOzzr@Omulfg-M1* z^c}BZi(Ksz7@G~X<&IUsjOJ>X*cj3Kmtm46rZx*>(NnwHF*&1|+7_6sl!(4^HEg}B z?SjeLipbmFmJPbv4KP`Q5&Z=Y!-ie$CYY?>h`Qdf8(i%OOjdkE-R#(QSGxlydqhO- zbnG^mu~}v)ktxz|>KJwxWr<9YnnPYiHRGc++T%s?VJGd~B6SMQ#gj!!o_UC-BKe4% z_E3>}9VR{~Qe7yMnHQ;NVKO&*pjKu?513d_Eleye;zv1hKSIKADpDjrLn6vIn>1B=VuR8O%5*Ng!G4B>o>?p#uL5v-hoqM>B%Q7=d?R+Gj^UWguNI;MD-X4-X8j?(rQ-wafu_^-+ZI9Q)+0zzi zBh{NilG{U)ABQBPNJiMBbMq?UgmrU3ay*jl0m*4dPXkfad#=JQa{Uh~(*j&JCQ61 zNX|jBC?L52$&!F1fuuYjS%IV~AZbQY9guV*3HopwlIsI)b|8`SO3vmxkjVQZImvxU zZVpI(jAVO2@;DN?p2_w44U%e#Imz#lv^dFJ-;a*Th8rn50VJXp?PiB;Lt!v zyC>re>-$kM**YUd@&uoue8)6&jPY*n+_5Ug`B=wW>|(!(I)(v-$MHUPQTVf13;#yZIXzC>5s$oFNN^XgT?vuT_@;U+4P zs7+;(R#{?sZL$iV)hw+^=x?zHMhvyIoii0n`Fb~YtwjG}x(C~;#L}AD+PYL@CRv@T z9k+LWLzSrE%fqSkcq6(N(l|Ksn3K$Js1mgm*+lht!*~sJ@are!NS`5PPryTraqIcsI8UwHm0kS z6;=F#LLEN=z*mL?**8u*r=+g2sh>Lll@7TYoihk z$-30aFd7Q9QVHXz(6-{*<~Ed28*dv?35i#zIyW!e#1aiP5TV`R zLUnrisD#@SLJeGvZ?9#`tE!PNnTJ}tPh7etq<(I{3bpsu*+ms@BEPy|7f`rTmX%pD zp*mSA^wZxfH|O6#to#*hjJ2s%+80$d8M~v06c%V>I;Ly*^^EcR1)E@TRmKZzU8*XX z2@RItKzGTVYsT!9*Tgz5TT?sMBGnsDu-h$%0L!LN`gL zRwWz8+vL3ly7ggCr{;94+ww*J6^+SN4axfP&y9KQh>ENpv3e!Hj#E)to6LwSydRY@ zr=@VU{dJi{b*d(lCDeh=dYSlsWu|be+^@|f_}!^S&Qa_a0X@0jof)geipH9(YHqHt zt;wc|Wpk--4+{O@kM9y&zQ>-sGIU!}Xr9ZG+1zKuU9*DMf&t5=pS|wzep?~8ediWn z!STFRpKF%4`vyj``YCk8nBe-<@<4|SrirjRS+lG%jAJ!~Y_LY>%*eCa7tu0*c<1{I=lcr_IQ5M`Q+^9cUpR%PDu&t}!R{9Uf5}Ac ziK6gIagOj=eSzP$h5o|({DnpS!iD}qS!tjY@IqO@4P^m8lr0GK3)oQ>Fr+MCN!cRb z`9Cm!agVtM@XfC*VC?*WvGW7Q&JP$nKVa;9F_yDzZuJI=qNk?2bzMhg>p+M4Z&b&g A+W-In literal 0 HcmV?d00001 diff --git a/x64/Debug/COperationScenariosSettings.obj b/x64/Debug/COperationScenariosSettings.obj new file mode 100644 index 0000000000000000000000000000000000000000..6f34bdaf9672ca80bf5817639b6af2df11ff7f5d GIT binary patch literal 9962 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/COtherProblems.obj b/x64/Debug/COtherProblems.obj new file mode 100644 index 0000000000000000000000000000000000000000..25c05acd93da7e236980d45373e925e8d998dcf2 GIT binary patch literal 33637 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 WfM+=_m2YgU?r2`uc42dOoBBUU!<|F` literal 0 HcmV?d00001 diff --git a/x64/Debug/COtherProblemsVariables.obj b/x64/Debug/COtherProblemsVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..d73fa178ab8324c9a3a87f608aecf500c568e951 GIT binary patch literal 31331 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CPath.obj b/x64/Debug/CPath.obj new file mode 100644 index 0000000000000000000000000000000000000000..474e1f0588616a946053cb726429b6032f58c2b7 GIT binary patch literal 40735 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CPathChangeEvents.obj b/x64/Debug/CPathChangeEvents.obj new file mode 100644 index 0000000000000000000000000000000000000000..dacceb619c8b2c2d06d09630e4af5030f3f3553c GIT binary patch literal 3088 zcmdT`&2Jl35TC8xrgaKRfKpT;^(h#sh~SSjN~u+$IGasvNbJNm2BbyKdUx$?yB}tE zo#s%9N|lfbM2dPs97^F2;J^h5BoviH4j@s917{9MMJj@(7Y-bl*13F48D8+C;84XfM>v`l&fyI0Z)H5e6Df;k0XZY5Izhtt0_focH7CS zC&bsYae%vsn+R}6QC5Jlxs<_^Yjfe;z(~4{3pgB<=T?GhXS~bs#Cbh z&qHzX_Tk5c!sZb%Ur{hZL~(h&aQ*&jVN*}C!i{*cu(K^9U?(2`9;tBsUc7Mq&-lB) z7e0t5cj8GB?#w5B_yk)CX;>OIhI8V70`DMvnbS__5?H2jJJ%ArmHsNb;)rwnYApNNu7?a$)00} z*(k6DL_+wH;g;o61aOQ|D4yHrLg3g@#kvO!j;u<52?SE6O8x2C|_*x~OYS z+9OMwmTt8zmi7{qYjt&UsTvpeduB5Z7+f_76q&SHJZKY#tjw;r9v1VC1 zPN*WAolc#_U-tajvtm;-#e(IyZ({bn=&Tqs)8N?hBf~24)iufPh{8Kvtz*zJ5tq6O z9i0WuR4}PS&Qa@p1~57>Bw_%k;plkh34mg$CR`LM`AQ}KmQWW;wL-o$zbI7T6$E_p zBp&7Ee67Hv^rGPDs|};mIA|7MUR)ITTCrS$NqEegPoKj9R>~!^U0xPSa1y^sssdylJz-8*C|88N8EE<;K6u4> zw2N=LKf~11v9J*NOfaS^ium3*saXx#-2g5Tdp;36`~|n{16Klk?{DAL2G{7CM(X(^ z{@>95)&5J0+LF4ui{Er^LTkyE=~(&%i-=K28e26KWtggicdIc(V+`Wy1FzKPhgh-Y zeL`p5&>M>8bOub97w1d)C80XO5_sc(97-Ey)6e`H|JemW?v4Xq1OW|vDXBO&5}ZP+ zbR{@(V)y4SxtqmPuYQ!hmM?$(;a@Humw!<4_U>(XxclG&+N8oC$Jz-%Wjzk3v67A< zHww=MTmo((N2PTXJ`1=6{D2&-d=!2RxCD&hBB^kW!czg406NX&gY)_=pF6WBL&lpC zL(e^qW+d>5d2`7g2Ui0vhh0g(TcaGsIO;bD6(zDq!~sKXxOXFLjHB+2JoPESczq1T z!nfSl6Bq97aNCHX?vA)9o!lFG-b0-ptt-auzpK!4sLP{v$Hzo1hdVrK>|z`ndg;6v zcqfb>nb(k8#iuVZakL$g+{BSje#H7+B4sVcQJ)y4aEC~-jB&T|9nHlplnkD0XjE!^ pgQs?(O8r4yvYkN~Rl87~8ZblpXdxL2*;hImjiMp7)j7#g;csWMVY>hT literal 0 HcmV?d00001 diff --git a/x64/Debug/CPathGeneration.obj b/x64/Debug/CPathGeneration.obj new file mode 100644 index 0000000000000000000000000000000000000000..c44211e369a430bb851babbe88dc018753935a9a GIT binary patch literal 16438 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 D){6i* literal 0 HcmV?d00001 diff --git a/x64/Debug/CPathGenerationVariables.obj b/x64/Debug/CPathGenerationVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..a0f6a426afd61b6d489b0b69ee14a8ba2d843ceb GIT binary patch literal 3273 zcmcImO=ufe5T3P^I8jotO>O!E6iDHPf`mmJ#CnccOt8(DD^(m}iW z-pu!A-kbOKy-_}l!QRcEw7J`7UJ2}P|mR^o!I z#MgWj;1TlP@Od%R@z67ouoTIWj#vPfNPimOrq7FDI}6!tVk68ukNQpI1tklqY@*)I zyM??vA%DoL*mkgQPq5+RO~~#i!tP)nZMWOvE+fxUWoKPIa&ZvfJx#lIw(xi&6+6l9A z9h9ztUfLr+z^~oi@aJiIb5JlGRll(KCYv@bOpw8vim_3aH*0lGS1p#;CEM0yRy8dq z)$6(@y8&!wH4H;DR+t&;IK-Az%fx|(U_hb1u) zn8=W7T4@p1<@CiAZsZC}y1S(!$!jbrud4D|reZb>1-*JL+i^`eC_AIj2%J?*mB_AC zR!ECPmR!(HFH=LhW~>c)OSxi6H8zcTwZ&OYwoKcsI&4X^8xpDXb*Q^l#pT&XZuT*@sL zauZjkgmSH34x1)(rQG~np;!{~b61NcxcrQMyxwUz(|Z>WmM6u}H$xUmQ?ro6fCtU9 z=t&(r4IIWW>b;YqhI_lAFJb6!pCPmW4>8Mlw7YVMZ#tWUa%5vcCE}FdrelrpQ9G`g zW!c#PE*5z`7CH3=H}4S_e150DO}Z*jj^Yu1p0fFz{J*WJRjHvn_!-0YMv$YOYW ze-=n9W!qaB@qhi=&%?{jsGUBHM3n3HHw(}$R)qfk!(YDSJ}JEN&h7MOZtkmFf4zm< z?I~`v=3xvE4>Da0$g=5)nGWzPyiOKwk*O<=~|zy3j-j+#V5k&eS*J_MjTeL!{&2eV@l+ z71FBWX#FA_)fdDH3+0f61BTXMP3K18sH&qVE%7;S-Qvb~J-6(Hf;Ar|0HagYM<^_> zHJfhqKm|zSig1sgGw3-`{ZV=2al)R1l^+#y5sp@`U50%XalFjvh-f7|O|UYgwTW>1 z_->a^eHC#$KR+T`#;2wE8(W@ud2ZE`6feS2H5ry*9ZCBz!rj4lcm>bm(suk(puAYh um-AFq2vkL2nPzunpL|nxiqqcHyBq&Izj;9lPcb|J%H={$T2ZmCP~l(I9G=7g literal 0 HcmV?d00001 diff --git a/x64/Debug/CPower.obj b/x64/Debug/CPower.obj new file mode 100644 index 0000000000000000000000000000000000000000..68ec37b0c2b0373ba0cfdb8a7979f4dd90f48855 GIT binary patch literal 11710 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CPumpProblems.obj b/x64/Debug/CPumpProblems.obj new file mode 100644 index 0000000000000000000000000000000000000000..4912b9deaed6d16cba1aa9712f43c3343f4d3f55 GIT binary patch literal 19689 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 G;(q}*(tPj$ literal 0 HcmV?d00001 diff --git a/x64/Debug/CPumpProblemsVariables.obj b/x64/Debug/CPumpProblemsVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..04ac1527c2010724d32c5dadff973c254ea08f2f GIT binary patch literal 21657 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 Zky@=xtyZO0m!jIx6WSE13H3$9{{lds@|^$x literal 0 HcmV?d00001 diff --git a/x64/Debug/CPumps.obj b/x64/Debug/CPumps.obj new file mode 100644 index 0000000000000000000000000000000000000000..24cc86f7b7eb2b25e5d4887ed4d826bfc4a8a7ae GIT binary patch literal 100036 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CPumpsVariables.obj b/x64/Debug/CPumpsVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..616cc94b47ebbac08435fa8b8140610e74ef2332 GIT binary patch literal 30385 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CQuery.obj b/x64/Debug/CQuery.obj new file mode 100644 index 0000000000000000000000000000000000000000..5bef0bd31d57fe208b006eb5e90b8ea05ce78df2 GIT binary patch literal 2271 zcmbtVO>Epm6n@Tbo3iE59$Fzzqi7KY1@CSWrDW-06DR2|Q^bd$xCDClM9m$z#92c{A^u z=Xu8a7vS5wKj}lm09PR**$}4gZ<(o!cfV<}-C9=Sv zxGo!JJLu-?eb+D0@D7eo5`I;Pgzz(wVIe>eyUk2q0R4Vdz+V5%9e~x}h zsz9+K_fGqLg?{%_@zBo~nm))Dpof8eK)>G;`wQ2N@}M+BB4#r7iB&*(ykwXiEwFvt zYL`c9^RL&I1{c7%douOsnE*{vrE&9bM+B+tGfH!dUfB;M zdP`7qebc_S_5zzn*o5Y?fnsukDctESg3E2*<*X3a zTDcS0HY+R}tZ+vYZrQ?oLAExmNTh(AS}6~c;d zYx*WD=o_ZKS#I;dH85%P$|6C-f)6sw(vjP4rYeWQV)`O6g1$0rQ75Frm_e$2j^I-4XJ1 zvm~i+V@W0Q#aO-&^L;sQ@s{py!%fpy0wGM-$I`~r^SD?FoVF>@e{ew{|8IV@gp|uX zm&=^HC#{eKuo`_Jho#SBo<6kC$TsyqkfQvtEySd(-kMu`Q_f1mD?tD45?r}*^z)a} zN3~~P{kXI}HW=+O;~`4o;U+{E|Akoy$#qO~rkGcw_u=4QefbdnKAItl3VinwIABiu3)^}94BJ00CJ8Hw(G;*KfCCsYgp zLu<0{QSZt~)cMl0VxO?5P-ao&CXIx->sGLCR{`~p0WgEoDvnM7$lrI|x1qHsTnE=yIFk*Lq6(V&`btu>UELYGpV lZlR_oJZQD*jkSeZV`W--tyN5mrL;JPV$IRI=8Wc<@DJ*7@=^c* literal 0 HcmV?d00001 diff --git a/x64/Debug/CRealEventHandler.obj b/x64/Debug/CRealEventHandler.obj new file mode 100644 index 0000000000000000000000000000000000000000..03df7f216894b6003640d2a19ff7371c0c4e3fc4 GIT binary patch literal 5020 zcmcIoU2Ggz6+YwL#Acj;9rC9(t)^y!Qe<}5j!7E}&^qf)#?)RryS5dfjlAofvAxOc z&T3{i^#c+{DbU44sz9QB=tEzCJ_14lsTGP^A@`w3h8K81C_EqqQ2|LK(T7OkJNM4a z{?aWK9POR^&AI2Edw%ZRd-odO8lqo+=l8|cQKAzhDOxkPYaZrme1K?KA$seRlBuH7 zD4vfR=6ZcIl9gN{eUNA;MD*EDNzPGJI*nY2I!2*Z@TG`OLf1P`@^?>;s{|zy(d~A* zFM@w(xY>_Ug5rs2wOj7gA)*&Xq^#5jIm0oFwHv0d;a31xAlF9f2t{j7p%_R(2KF64 zO!OFH!gLTt*eCs67EC-CRJ@q@Joa}*zxiHXzhy-v2sPAOet zUFaXsZyk8{e?QW03L}ud$CeX@sP-P>8}IFi_GW;-hWC#YpvFQKzMv$A^hQdTn0U}{ z-ma_qUTO)N=x;-e9)V!dzxErc#BM6lNX^2e*Lmb-e0P~?=4FVhtvRzkx=DG2cnhZF zJ+l%L3$u37()jJ8eGGl4eQ1okboK2pnD*S%$Nl$b;GRG^g_k3OebouU!$)M93O=~+NZw^4$?ml z@>8L?O3k#+WS-V8+74!XMGF|`rnID8u9nbWOIiijEfuv5+tCWus#PkAfnCk1S1P5- zre?Qw9M@J&$Ax9uWPEZW`b=~}yHGD#2ER^D#3#8%EP;AaBt+S6> ztYTaCrme-qhc~@Zw=6BTXlSwL3r=Oa1b>_je7UX`E89lhGN+q?(P9V$BG|^dXfy?G z6epgEVTnK8h z%a$!8HExwE*T-P#poUqt6}`P>w_PO)!TbII&h!KvnuUp~4t&oCEmr*_Em8Y65$xLcyKDC-kFY7bu+4)pv ztz2E}V$vx(GLn~ydOQbcar6WYjXr*as8b({-$VHkO0vVIYv9eG7${?XY?{et=Psp} z7yFnpN~5E^%sc^8(#o~{BbGk^FM;wBN~Di%bJ@VM9f(P(rD^qK~laS*%{5Wb}4^H*y$KNGWYd@q&*m(?f25rZ^ei{pUblIyp zwnv+I$B(t<@%+k<4d;Wg{~jsXYsK1jkR$$jTZz-k11%kyTLS)T2o#VK|$-5X_V%_zCmF4c?kv+0?IRCY{LaeB)7QwrWNaQGwXfknl?)ObFt?)*-RtaGXOl zBA$$R<(I7|fjAl=-eo+b0m;?~5XUb>?4?BGL2Dcc;X>Mx(YTfNh3*HGTVNNbtpDz;T-Y=(6kL=34O;cQLI3~& literal 0 HcmV?d00001 diff --git a/x64/Debug/CRealEventHandlerCollection.obj b/x64/Debug/CRealEventHandlerCollection.obj new file mode 100644 index 0000000000000000000000000000000000000000..31d5d7efefe3a82a062944d5f141b648fb868c1a GIT binary patch literal 26014 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 IM#Jp?0Vfm-#{d8T literal 0 HcmV?d00001 diff --git a/x64/Debug/CRemoveFillupHeadPermission.obj b/x64/Debug/CRemoveFillupHeadPermission.obj new file mode 100644 index 0000000000000000000000000000000000000000..b6a34a5c792363d9a366c7ccfbbbb60810aa9f4a GIT binary patch literal 3860 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 AuK)l5 literal 0 HcmV?d00001 diff --git a/x64/Debug/CRemoveMudBucketPermission.obj b/x64/Debug/CRemoveMudBucketPermission.obj new file mode 100644 index 0000000000000000000000000000000000000000..703a1a0d15b247045d12c6ab220aec6da1c2a2e8 GIT binary patch literal 3843 zcmcgvO>7%g5T1?QrZ_&Nh@c9J^i&zCNX0*CloG24$BtW@)=e5aQIQs$_3ql)X4h-& zuG1Wls9J>j7pdaZ6RP0S190Hd0|)^{H%`~aCF?E)wa09c+Js)PazXXBP4Ig&30a0}tDg8+YeaxY*%1DQ;GrCTnB{P*{C<`K$3 zG81oYmAi>@Q?wwGs}JQAOO>5v)#UDTNM?1@ zVp6N6YcjXMW>&k|)S3-uc1=9Q=2eRpW~0f`RQyOh#juS0aA(p^E zU?{s-$CQr1vYa}S#8;!n5P;Mszl>T ztwCHAWQo(d=|<|1t~HkqxtrOrB!eBpxY}Y#lP%LW>kgaO?6#z{veQ;HQ=~YFd2*#? zX|^iP=fsL>>Nuf{Ff|rGjK9>x;lpB0Yl;QacFtfL@aUX2#>c?6B*=E{qb)e@&$ zs>OG+EUQh)(o9?IWRCr`tg25W0b>O{;zy~=bNK?c@4<1N%bbai)A&E({XgI5b0IgI zFHO(qOLJ4%x!j3-WhOscDwfN|=~GpsRo#9R_QQ+A3xS%=U;w6Z^@qs5g8zCCTPBcC z_I%N=E&2J$lXH`me05uk`?l#SuG@HuO<(qFQ+Y01&dnCH&uA2Vr>MMR`R4Q(pAAAg z7NX~pPVfkqI!NnzM7cslm1{po0Iva@r#)lX_9KtqS}y;pCy(<2^7WIyFL_+V=Y9WK zAnAgn*QXc}_WLo-tjf+x5Vtd)oZl>Zz@O*$H_yB7Pw?8Co96lbU|uBjdL*>#D`5ur zY#U4}d_R5ceU>?&QtVAdtxIj)!P1pJpw(rwX`A{1*2Ts#8nIMEQF;xv@DpP67%{fW zQyrVFO!d%W$(xw=vY}TM&2DW`J$-WO)MP1NKENWF9`E>DhTagQ%mq;Yuf*l6MFDfn zqwNb;JS+_2b|FO}!&`c6FHhxf=aRF&>+VPtCi~RaN4Z!ZxEu1c(aGc#jEp?`{kHIN z@s+o4q|Q%He|_yq6i;|N7KUD*hsTc|9z~sW$_&GCe9|#C466a}M!@?m;5`U<>$u-k z5r*K2ha&JH8cX&L!6gqxU>_PzwhzI64@Dq~=R=n_?4bx8MdZ%ScqjroB6p3Jha$W( zlFb6pJL95*0m=l3cGn$U2+&G^E(M6Zbmb86)k54hS~tX3qxUp~dE(j^g5dyBwQ~7n z3wadc71Bj47^R9s`UJQZpl=Y7zXC+@RiPOIp5Qw-7J7d|0(}eUp3+SuO(X#0dI4Lv zzH~Seay|`YHr{c#X9C@F$o39-G8N*G#UX*ijsT*KcObGpB;3L$#jl$_3%X?C#v2ij zjSvgQeX#L1gr=cplG&>Hwm*UUzVU8EaS91^JL;y5_aeNmq0EBdM!X|;2jTW_fBY$9 l{Z)n?6!cLFpgLR0RdaL>F4MtxUb1YcR*QzzP_vS)!hf%1CtCmj literal 0 HcmV?d00001 diff --git a/x64/Debug/CRemoveMudBucketPermissionVariables.obj b/x64/Debug/CRemoveMudBucketPermissionVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..9f579bb5743b53f78c11b297655d85bd0053d76a GIT binary patch literal 9457 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 AKmY&$ literal 0 HcmV?d00001 diff --git a/x64/Debug/CReservoirVariables.obj b/x64/Debug/CReservoirVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..48edced85380ad5553314c866820e5233341163e GIT binary patch literal 4308 zcmcInU5Fc16h70WT|518Yi+CbZzyZ2(9O^8y6r9nlTBtf<7SgIlZ`DMNhdS2+i546 zFq3TC2enWTS}hb2>{A~^`l6utqTmlj9~RUHpA>wnP^eI_KOm*};5j#wzfIEJK6u#4 zeDmG!oO|!Nv-h6S-{s-Ei@$4EHv#O0x&^AnnW~5Bmc#244&dR&I=K#S0)&nSbfZ{X z9FprSz=QR8p>8W*X9T<@U~nqn=xSAMr~nQkyfXlh!am7-cts!*37qNFZAO0I6QpQa z1VWKOrCT?KI;$fd>WZ%0@&s5BiZz{s$n`*HI2gp1$ONt~mruH)WwojE@O1yHqhP z!x3VZ>bj;TEZB~qRw|aMv94Xgsg=uSc~P)C9QO-(!*OwJ!boT&95@gN3sW`I(&=#| z912eqLd*pIoR}mJm$qLh!WelqXG`kF$Vl z>t=BALvXvSkh>5@)c2LuLOR%Jc4}|a?E($^Rq7+r_ln~TT7}}}HqFpQN7`6W7 zR#_7c%AM3{1l1Fcp;EhETqG8SLh!I<*E6->GRvp-*H>}TQA@%!=G9f^OwF-fd!Z`i zO}D06f?TcXrmaw(6p^Mu}=N~!7O{1N7}>R3@J#q*LJOUqL3D1_HC zKjwqei%ViE2gB&{)M_bVF1e!_5yscj!;F~DCB*DpG}-KCVl95tY4oA2XV6)UPDx3c z)Yw{FGx!$B^I5UkVQ4L0%?@+v3!H+{Y!wBbeDe{G~Ir-5PB|JBc{tJ=1YUxbZw>+6Aq81~}gLGVfdeC6}oS4|{sr z?8zE&hjn8?tyxvvohJ8~3z}VaZEKIvL1P=WI7Ug=do@+?lqmIRDRt{9kJ4 zjve=Ie8qhr?SB1A_*^vo&HMifxLl8MYBx_FxPR~NA&iMd82DiZf2r*7!?!s99f&r; zbr13I52Brnd*~q^hOuPZ#kjDCcqk)!hH;LEc=#C6vy8juAs&81w3~5%c!-CMIKk%_ zx5Yy|97Oay;|_U7+3WW51%4>k#V1Uh=&`9USix$5Am=aD;~%3L5p)7ooK)<28f zY-XUnZpWpNHy6y0PBds(2cgk6XD10kl`}I5bbw8M(cB-@r7Kt8N?iDALf} zTb~+~bstCT)@@mjA`RsT;4EI$LyNiUF?jPdKXoy*-!{fokFysSs*_1}F-{lrQ5W-d z7xQNq^CWiJ+1G(C=2#c=c732Ya<*P=Uo{lV$I*99r?r34&`#mw=$ob)hKVoYW3N37 z3fWw&5To)|rg|1X7~Eb$D&9H|vmVh%wDM%_BkMd%`-pm0i+!|RWnRBoJgOq>6I<%6 z0sE*{RDF+9HS3{AiCAUVN6@2|>!WNIQytY?A8}W`)<@S2N)_5_8m!3*1*xPi8u*=I Fz<;ZXd2Ijy literal 0 HcmV?d00001 diff --git a/x64/Debug/CRigSize.obj b/x64/Debug/CRigSize.obj new file mode 100644 index 0000000000000000000000000000000000000000..0bba46b6fdb0b92a9e2bc5cfa86ccc294cca0e39 GIT binary patch literal 6387 zcmc&&e`p)m9siys*V#E~>@I22CX6HXST;Oaa@;gAUT0gjBQ3V&NSfECT4h-}+t-|Q z;v^;R7}O9bbJI{WMpwo*#x}Y#HV9>Gu>G;HY{d!P6H`M%%xB~aFv%Mx?-mO_-obF)hj??zP89u6$m z%MF2kZC6!~(J%#v1I1>!E_CXrb@m{av-NEGtnONP1b!#E^R-3oqCnZsWIZXw2006z z3L__6?!)8sPsE#ahRa?$M3BCGzM$ol0Jxa)rZn<$a zJr=~mpV#`F)jFTap3(ZUOM3Rq;Jj5S@JCoNYkk?Xb%E;PQ$yz9Dvqq_sF||awk~6Fn=P5PLp%iVSq^D-X zsib9@P)GoV1_DR$3mrdlBsFgoQW2|EegcE;Wam`==m3@M?6zr5g%e8|yOVw=Sxw~8Vl|KSEtaz@gN~F)FN48jy{dKHApAqu8aoCDLg0T^LUjLjz>=O=B7r(F8H>duZeITf2eIsW8mY-D;&^7q&A z!|~XcrX{DfGbebC{eO6d8)D~A3df#i-lnnFI@vnYZv1f>|K^?jXmZej@8-l7IT+bA z2h9U8o$Z;_ADP4m$(Yws-?TL!x&bGtNdKH)ZB9iM7gQPusWA;`~c zD%dLKs{4bxo$=P@?iED;#@gJ02Seo)-ou;&-ge)<_pwQDz;;l$ao)T? zaKVw8dK^U9plF5nj7LyU3Hr)=(R)zp9gunlQNI^G9ETl$AD4Q2TIgkD-)j4bGqI!B zi8=~Cj`NN`P0Dh0N@C6}>^cQ_#m%)QX>R4_hR1`k+wL)}bhf1-#6&}sX@TQ^&0ds*aAtaB!gI^o2~tEaN0Mc*t1DT7{Bj9;zpU z#~fSF=W?xB+{=6mPQF>5k9G0nSPLt5wt-kWn>W)rqf~4%9h)4R9+?_X9MV*r^B;ES zKT^i!;k^wm(2- zr?;?MPgNnsQ>gl_YnmRe5IpkVs%hH0cjLw{l&?o0{=zGvm66!5UcCDh*37m$a;pRI zosHXkjeuqu(z`&yuhK3M;swGFeupGd>17~c?^_b7^m8EL_m>i>^hZzb zx+ixBNcjDaL@MpV_euEemPn-t5PtAGDUnJ)01`faB#}y&J=$+Q+Mj_$|87Wx*nosz zrNhnDJ|N-ufJ7>VfP{}nB~s}$kg)f(L@GTGB<#H)kxD-S680`hq|y-90$d}GVTn{K z10i_OmL-BN5Yi9YC5cpe3kVYcv|AFXbP!vFn3I}Bs&gdbd9OGdzCec^J*EwNi1!h} zo%7JLhrZ^aS3GpdLzg{t)kC*D^p1yi$aRDYg?s9A;t~j95bsew=QG8z`KZfzGvXWz zE`PW<8$SHWbdd%mxII9eKOb?F0`+>_AP{HVM*|)@=5e_P+!uw)9{L6l_eG(f;mv*( zx`sDfR_HF?Y)`?}WA&<)` zwEU_^slC8;vZ?SD?iggMMam?Z!jbwE2UZ1uYA<-55m4sfgRgb#OU!F>6t&mA9G_3& zow~l%UiCVo;>a{x&eo`LBt$FDTf7A2hfS0>nka9BvLAgH^N88}E$FSIsA!GVQ655z zFUW;f?X|NrYZShCZZ3yCDrY0TV3sQ-J?F|HKQ-6VSp3M31`W1YEd!u<-*r9|$}f21 z`4F6@bC(paJ#VJt$#6Q%mud;VMVrmoCC~iqNIW_+Iys)G{R8FtZe-TpxwMpN{!iCZ otoH9*I-N+yC!@)kk?_fMkm{PD`euK9^9Y*Jd}dL{jhasX2QM6POaK4? literal 0 HcmV?d00001 diff --git a/x64/Debug/CRigSizeVariables.obj b/x64/Debug/CRigSizeVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..69fe677ce23ec5394b4e14d68030f511631c4a80 GIT binary patch literal 2880 zcmcImO>7%g5T32whPp*cfI`*NQ)Hw@Bx^f~Qetti<2YGEVkdTLT3F<+ch}A~`(y2{ z(|{^b5eXC^Qp5>y$^pT>7bHNa6p3)?p$8-`2#EtyKuFNEhaNaEv%7Ze+7NMI6x-j< zd~f!>@4d_$(P?$ z1^7M$a2I)>2fWi55MXeIw-w2iS}cI)5q^9eU>x5`hQlBQsT9A_&7<)@BCpd@5Kr-q zUfw?Pmb&sGuj)9RV}o#~3vNK_7O&W>}^x2>>%l zOuBgM@O2^CJR?vHGznauE*FK(->(SUdXx!U;i#~8OT_42ID7|9*xU~bn-9Zp{vo^< zj_!q{Q+1Ux>!#(_bilWW~H$=fqQe3jFtGGr- zESGYNVo5Way5wq>nXznjT-=zN6lZBK#Y|DFm$Wz3vSe#gRaYI}s$K>8*waI_xV!Mn zzySPtg1$M(nXamzFOIM|%SL5P)^Mwc8%lUdEOnbc_Ln(V#UVRq9r zHM7pFu7RVhtlAFFjE%>~6Z{1}!DgD8uF&InBA%G8#663Ed`&rWWgr_0#B#b;r8Tmc zY3WwoVli)nlC`F;vsgi4v1^iTCN*4-UBexASj@1LrmiLrg<&xi0u}6X%_)b3bvbb% zjwiFqV%{;SO7a?u$*ZcomaJM$Q^BnMljC|JoRpJPXa?@8tx6PEs&(=rk;RsE%U5bt z*UYt1e-G=nWUx8Z)e#pp*|r?3=CZQpG$oyt+@_*gBIzV%X(+K!u=>Y5;L~d?-!F)w4`7H($!Vk}ao;x%A9Jwp1}174*$56beNlo0}I_ zVB+Wzi-r74*~>G9bbdA%G;S*1?sZx##yXvd<opnR6 zD4NsgNnKc&&8HW$rC}DqO7u~%68a%^{FS}>zaHGv@Gs|p4|4;7%2a{#aOTXx&!2H0 zR7^bQ^V`@_q`w4NwFgAfj2G zf`vgTtw93`kvQ&Ji9%fuX{W{p~p90)x%DR_Bg~*FVtmD_kR6` zo}OCCL#4QqsbuI%EYTf^O@`A;qe9=ePWB}1b0zfU^j-peX`N-iF98d-SLiF1oFUa! Iy!}-88!%I8od5s; literal 0 HcmV?d00001 diff --git a/x64/Debug/CRotaryProblems.obj b/x64/Debug/CRotaryProblems.obj new file mode 100644 index 0000000000000000000000000000000000000000..9a2c33e38b5d1b39318d6087dccc0e898fd840db GIT binary patch literal 7691 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 aH0d|xE6|j%ZEkh4jutZqjNO^C!Tt+x8Qx+5 literal 0 HcmV?d00001 diff --git a/x64/Debug/CRotaryProblemsVariables.obj b/x64/Debug/CRotaryProblemsVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..928c16508ccb566ee3aa2ec64fb607718f6fcbe5 GIT binary patch literal 10660 zcmc&)du&_P8UI|nOLh|=p`|cja90BAM&~%8lr|LR#Bs1k61%pO6=X;p+eu8FIM_}p z(#nE5x`s4T8D&(PCNT+Zl?EDOlYqgb!jQ@UiL!N~)0oDz2c4)ydHhkfO6>QYbMEmo ziJO9Uah-}&C>anJE}VoyE2_266a16L7UL$WyY$(?zHxq4wGQN%`c@-j)>g32V< zurrYynI3BiODfT+Mxv%VqV6js#f{2GOD-6=nsm<2 z&wzDKXnx@Ew9981@wzQIKj8Mw2{zws->`4?McOqp5T*C(8GVW}=XD>l<(n*~xdBX|H$OefQ)rG@Nhs zbS$6BOnNfeWP5by#tqSKeilYOp-euOy%+2w>EuLiFqTclfO5{v$XztBVofvD(oypvgW~rjmJE>M z6A5bdr&A*ws@Xc3NoU3~W~+D}c8pG^(`IWRVYc2A%T9Kr5Knd#57eC5I+00Cr;{Cp z{Ftps1QJ<7>PZwBcEsCmaNz+zVz!E>@<=Sc-E57IC*#{YMl#cr322pfxx8qCQ@M@= zdypT`CS%;57#U+K7|qtL>5R!4wfO<(Jl=4))YI+(Z^Yl{6~6FxsCsFp=H?kRUEhQmY!d?4QhoCy*l;csorqlJ zgVs=^V3ykZ0+B$dr_|zJZ$cxKXnn{_(*oZz{n1`}GQc4Sf7ecB1C}Q!DD{P`A}6{}m;F zwUWO^$*-$X{t_jBxsv~~lE1QwJnx~n6#IVx_}KqdsCS{pP@Z`PHKweH-vqYGRt0$6 zSwkLp#u|sF#i(j)?C@A+Y~8n{GDGqFPU3OI1!JM4>{WM`oOSO8ooV}3dr;j!s_rel z&Pdx0?L)-Xh9R_Bb`C2(t2(8CWyiXAgU+69Pdzn>H5P*#bnVmN(?QBLMu(KKIE37Z4 z%k0$i0TjiG$GW%twb)&XPjX{UmC0H6<#OX?ay!f9tow4g$I9fMDwDJBExGXYNG_gD zjU)p*lG#)u8Odbto=*0rCQ^CQZGD-1CfgHBrQ6A7*snJ1E1$NZqip9nu0GFRZ@Z9e z!J4p?{k@Q_#8PLGe$JUS-x%}UwSG_GbqMob6vozC%-AK##A_b^#?FPYPaupn)R7|0 z_g_!$oWk!09XjU9e3)hhQz0>EOe9BR)9E~p%pGe}qw&mSE|XqcN=6&EWRnw#M71V% zVWLXQL?u6;pF@%EDq6DfGGcDWM0zNZ%1u?M4)k{SclLS1YfS^=LJRTp@pG{QujBl>u1_4#y~SZR@>5Qg<>)Iq zJUUj?b^XWjYoQi;-Im$~<66wm;zL`p;zn`mm8zHHuXW&2hb67Lk*=-D-?GEWnfi|% z4@OsSBghmBVA^(71pQ9xq4=W z;^*glKV5Xuhktv<_I>}Q-#pkh(;0Yv-fc9O3FNZMEfByA*tq>a0Q zq>XQD+7E$vPC4i?AUK?baG{u=0fg$!B? z#JOq^u`x1e95j4DODkm1dq7f_eP(2k9Ue&8I)x1K0pSDLUWE*L4M@tqp^!m;2a>Yy zDrC^QFA(7a+4Tw;^c0Yk{gpxny#gdpMM^4+eGLHmKeDEJO2WYB65_+4}ZU80adyMVZ78t8t74EhZa_hkdUsE|P) z14*AxD`Zd`l*!nxSID5FK+?uBg$$~1uzYD$$RIZm9D|K+g$&vYgrGp%rx5f3AxWSe zQwX`jW(Y|KZM8xM1%YIrM-)O1faDlDpb+!{$+31!A@~PfJYsEP4U%Y`rnxoZXR>S^ z)@Vwj8I2BU^sGj&Xmnho6B;$C70E`XMlOxq8U;1lsnK4I4r+8rqh~dGN2603aVk{g z8m-f4lSV;}hBcbfh}S=<<)B7~G(wOf<95+MAfr#}@qM8{=mgP6c52dy&zG`QJ`tCMPU|#UuUlO}JaX*fNiESP-MR&c$C{no8g&CnyFMWH(N4V@aqr7k z-a}&&pmm!@QQbNW#52H735~{qq%3RY9M~wY(c?foPHp1X9fv@@=p&BJMvnur_cl5M z#6H_-3skTs8+{jueX-FKKy25B|DzQCe*+P++xQtsdV%M1v_FiH3KSnGJuq0H>;mPJ63RoM+y+l2Pw~Hlpd3-0!eDU& z6^h~!hZ@meHUSF^K*j$a;w;;3C!p@C5+1&J64qtmY!v^Oi1TE(rLAUN7ypk)j6=aw z*r!>HFG4eqWG);D{^?XfStA?JX7$C56_l|G%7F^X%bH@@`YR}$8!oc39%(40bb!M9 z6p!k`0|yrEFt%Q8zxa>EOwF* zZ|oLQxtL(l(PmkOi;pnNQc!kQSyV^axugc($}>peAW=AQ6lj%)3mOVVJVPFSmmcPq z=lFL*Zc)QkOfJ?jg&(>->Sb!TzsKM2kN5-qMIC3o#$Af3q(7HXSlV|>FqijJ;jL5Q vMYww5R8zS8E@3go$~3aX&=6k8_WC2iPS34FuF~5!-1;YCW67>qE=m6b$Pwcg literal 0 HcmV?d00001 diff --git a/x64/Debug/CSafetyValveEnum.obj b/x64/Debug/CSafetyValveEnum.obj new file mode 100644 index 0000000000000000000000000000000000000000..cba23a82577bb7f175fe910ce6fbf0196a3150ec GIT binary patch literal 3617 zcmcInO=w(I6h1FAZR#|OMA}+PDVH!p3vqtZ(3(MTlF6i#+9YjeGE{gvdGp?z$!p)w z@ZOs=1;s!?j2bDfx^N-lq6-mm<3cE+i-5RrR~JPrD70A7wjy1)@SOX8GJkC<)yuql zzkBYv=iGDdxo7TG-rNN@-@Yy%8UWY}UP-v>s_SEF{=}~&0K6CTh&!=ikXlM8YPDI9 z7dW3GOuxZQ2jWbzDI5x&|meJ63)n++eavV)&HOppFqoHdu*XuC5 zX_}f@XI9(95mr`h2N%XhQ={p`@kE+UHZ@(L?r1ud9h9< zS<6+D6UHKd6txyRr!3TYBfy-rFuQbG7jS#j0kC1D{AB^s48_`T$Rzdl10UUJ2W>3r$s z^2DifK0miOTQM4yP8uA9rw5n(3EfQ}%%djKYvVW9L+?1!N%x&c>&@dT7AH#iO3Rua zTepMq=O3Z_w@2$PE>0G63p11dS~>lnP#VTG%gcSNUnR6{!g!JZ0Jw)L4wD|g(Ed`P z9CMH(-ma1F4*{$_4nO`Ea{dE8Kl9~K6UZk!_xN=4 z{dG2&;J3?u8_Wy(o%1et%=@roUeFKc#UjtfB0D}8PUBuZ1e1us&H&T@et`EQcurAk zQd4&^$z+DLnrxYlr4O?Pnwp!K%@>DR48vn6*fO++AVn;I_`e4101R<0RCT78L{#Xq!Yd+2b8vLT}V@KwfLPS=2d#UPHQ2HB0RHsh=rrLMO?A~uZ8Gi zL}af3H?XD|0^W?bUIG;N5rJ|y-T&JQaZ?e1ak&8dut#}ei}E7&J_;$VZwGFfK(B`& zb08ZQpQl8aRvZyHq;6PR-xjp`h;S8a@?U$=!Y-|_^`*gmBgDh;0JOd`=vp4(Jl&FC z4<>NiTi+byr-(qWj`q^}-oR%N^3aPT@S(@Mj!oxjPIOTocD{Qu_B_x~St#WyIl34I36YzHcp8AGb8laiytKRh1a-2eap literal 0 HcmV?d00001 diff --git a/x64/Debug/CSafetyValveEnumVariables.obj b/x64/Debug/CSafetyValveEnumVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..9b8b02ed863497b54381a7955df853c2ca1b7926 GIT binary patch literal 12920 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 IDrf2c0A8;#!~g&Q literal 0 HcmV?d00001 diff --git a/x64/Debug/CSafetyValveHeight.obj b/x64/Debug/CSafetyValveHeight.obj new file mode 100644 index 0000000000000000000000000000000000000000..42e41c769546143f8db007f446eabdee47adc5ca GIT binary patch literal 9506 zcmcgxZ){sv6+bU_+RW+Nq+7RclfGsC&#g!#G4a) zw$lYZY=*3;rZa+lSw9R>4Tkz*pn-V z|y3dTw&N zoeSl9el(w4YuPb!lgsT)m+NWZ*I!3;>QhpeO@!WLHY*u;|AY^oT%3uHNAASku#TxL`^NCGtk?(j_5FQ%(4=P7_ZD

?t=Xwq|R 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CShoe.obj b/x64/Debug/CShoe.obj new file mode 100644 index 0000000000000000000000000000000000000000..e5052d655833e3496c370f5309616c542658c720 GIT binary patch literal 8809 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CShoeVariables.obj b/x64/Debug/CShoeVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..64d34a15ca757350ab5abe8c964793c4f10d4125 GIT binary patch literal 2833 zcmb_e&5zqu5Fa;bw|EP*h2>L1PgOt#m3(YhTQ=gb*?g=+yUA{n1`bB4V>_w4{s^|y zE+;Bgs2$?rQ;li~)R( zyz2q)5i|&JbSY^ok}C~Z0IwjtdJy0^zLNxp!6Ga!CO5*oBdGrxdE>GO>BVF(%KIL9 z>5xCKp4_N@)$ot?BKqc@;@p|*~?l1pJrU3~M__V#uhAMWA*3rto4xMO6@XT??9x`Z)0VzXXe5$l@K*Cki8%)Di* zv*O15oLHbW67%(omfDnTO=|0^leF5Gpn2elV-(pg{5&-Ue;%SM2W8V$^^>(1S;?|7 zEhZZ(=I2=6GJ2Y>+AOb2j-$z}W7$mV^>j`4-s&*BZ?kWNg^9rQg;XVFM7S(x&ZKd>wOPvBBW+1uXDRujDz9hT zR^L?6tN-MXfdT>!bXIr!ie`zFC$UJO^lZ&h#b#b?SeA|h>IgG)$*KCkRw=h{@7+F~g*0GNU_zn*Qtg+}T3)^$NVO5Az%ntEJMu9x0AOakU}9OX%_VzsEAvdaIxf4#RHfk(YNUBVkL8Rw=}fvRo=W@hf+`HK6f{LE{gX0GO{H{btz z2AAbORNrA4fd}{Ry^22R(1^n_ULW$%4UC&k%W3#BKs@|}h-NnpzXXVfC$ah;^>oh$ zh=&{^Iu53x7$6=rM6^Yx!3Yo!A0v9q(|r;k9&RH-=g8X)5D&EDXnq_#HAE+e2!S^u z=H-UQ#=H^y5Rr}p>K}YG-c8VY#yC1R$rcvMH3e9g_ZE)23(C<*0*-ec)2w~Z zBRiq--UA&Vhq@0!VR?M`=)HZc6QOymxq}*C{2Y$@A8coEhSULtWxV&HRgZDocnz=4@2J`HbwI1u$hY!z5Z3AB u!`8yt!Z*A1sqhbN`dO&} literal 0 HcmV?d00001 diff --git a/x64/Debug/CSimulationThreads.obj b/x64/Debug/CSimulationThreads.obj new file mode 100644 index 0000000000000000000000000000000000000000..04269624ad429eb75f70620a42688e77298e0e80 GIT binary patch literal 12418 zcmb_i4QyN06+UiL%5M1UM%gH1Ji1VR7M!1kv<-i89H%yQV%K)k77VFlJFTf>N48Ts z&_)pqQA)Q8ZHP_NgeJtQ3GIh54KayTfL12KgtkeO$~0gT8fcRkzhV=hefRn#dG}rW z`5AUq+u!@%Ip>~t?z!i_-kaRrf}Xwi&)Ko_iDszY{JBa#Tic)KOF9Yguy65-f5lnk zujLQaY;+3v>nn&(`Fx!OB#U}?`*Zo3g*{!#MbXzkOY{faT*q<`;6|9v8u3?hnObI1 zN^(R`t|fZ^i*;@#euimy*ndEmI}QAbbLujS-^0{9?4LK~&Vbz6cvji!_8>P?t=5_P z_i_6Lv_dX9QrWY|=b;4z0i8JEj* z`Ps}uu~sb146QHB&Xse8Qmx|0<$B9;FIz5E%S8tb!NP2|T*=Sna*b}ymn*fo26yI6 z`SIjbFp(N3F4lGqSpxo=Qf>)5*fzLNQY-luJRxr9XXOa3DP@vosxC zzLnZr$!Bs^e|hF++P>nPHFDfuq}NujrhlIzzkL)b)$+wl5|>(I2w^2tvX+R!0V`OZ zn=cge6)RZGRI7!oHCwJ&nfdu*A**_>T9t)TsZiQul{Lj~YbsxWLr+48+#8x*C>E`rSkCIX zB~vL4A+Pe4StM`O>Oq<<6!SyNk+FIZ2!v3h#&XL7`?GzUdNJu{tR6K3W-{4*R!??s zKD%#dro2$f!D{`gT2r^+RCOpPJ*d?~4Yy|YNEU)t&-P-u9;xnPp|r2NK8SlNnK^3= zajmAu3)xD!TAr<0Q-$h6rf4N=3%No$E#s69$w!&56sr03R4|6t<)9WGaEJ2Ct!I@{+42dG-fwhSxsWN)T2Z%d>`nKQekmk$N# zz=LPWz<4|wvisKOp)0!K?H8pta zWr#E#c5#yj7e}H<2}~p{x-#8cIq6V@o15F$YQxcBIJPYWXSEsT#ZiZ%M@Jo6?5G@x zR)fAR5{)|j^ip(mJ-8`{uhl5%N^OKQ9+C5FJlStgPA}nfD0&R1L+cYb+V@EvWyLlf zWvweN|mk$H@%c9U5UMvYeuV4MtW|a4B;uY_ZBa2N={99D&Le^6;-EN8$&-9 zos6j2WzS15W!0hRap)ad?5LNw!9*+-NbE`lM)X%!FRvPgDxCH5HfZRvyIy8`A{Mtt z)XPj?Qh|G3X8MvmyCol~RcflYgdqNdl88m^{&|@XrY;=4(nEThitMqRx~)8pPmaeo z+FkXkq`fG3RniviUJuV^a}Uw*s=>asp|Si@;AL{!yy8%M)nd=u)Y4x*yj1d$SUi~u z1h+XywpFRq^$|+O==L`YYf4k#*NS*mp1x`}KVvUWW&6 zW1nwnvx?q%`>m^B^E3E#&{lkRD)e(aw;bV4`XwVluL1cL_XZ=7zye}4qcXUS=d{4U#ILxV4Os8$j|v1G&LS&|N?yio1uApeKQXihGKYpm%}f zAwnm8z(~+$K{Tqks~8FTDo{vqUt=WbDWESY?rBDX-U1p^+zcCWD_H?3g#huGYP#kEz;!=zR9RiwA+!02CeghO!+%t@j8$e%H+((QA z4V*zFD^MqGW+bQxBx_+O%`*~o45&+Sk1|4T03{UnG9y8qXA&h9cP1l2*8*LnxF91z zw*krZpp$NAgt`GVskkQ?VJv|*DDFK*s2gVyU97mv7zw%o=n}0dk7zru?bt|sINYFz-H!1F6MyP*4D15N@3L~LT?l6I{mdVOfM=~aL z1fVols&A>gQfVOF7)j1YMV9lC{lwHKrF`jk)tY+-lT2WR$#8IfaT@0 zQ!EG2lBcH+D2c@{mXYQ#w-zlg-mU-I&sNnF`Q+S{7WF3MQE#eu+es^mJ$jch(3|~~ z6~&rmbj$V=Ruo&v9M_HTl^jpmq)a_B37}Io=2l!G`D`*j!j<%US?eWSSsK%UVUZ)e zEYky~S7WXRvsq*A0yC^JKLsNrw`}Jmn7GEQg6lgq=1MTTHD))My&7{E%)G|P_l^S^ z^D3Bw8gm)~eUHX$0drJiZUXb5#@q+yA&vP3m}44q63ovu#)rgtVu`VzhMx*{rB8mF z?JJzn@-Ey*i-FmUUwH$apviZcMeVxG9R_pEU|uko_YKBE+Uk}k4CZ!&dE8)58cYY0 zUANqAFgp$Apus$9Fn=_dj}2x65>W3wVKBEE%p(T#dxQC}!Ca1x^uBTibGN}fYA}B? z7+G*Zs#YKOiw!1WFt-`ZF@t&0U_LaM4Jej+?8+DD+m+jvaBHW5vh+3DjGD*17|-?CsM)bpgiPH z%2WNROr_dDuF+w(X-!JmkBIAs-i_sqQ(8CSW{0D0I@%edo1o)t&`s2F&gLenpLMxO zI!>Fsh-y1kjpOS$adETS{CLDoYw4`PO~|p^?+G1}U2FISWn^|MW*IiiK z;%(fyx%cU2(zb8cN=)0{Y}~iB<{?e=-7&X*_3g0f>0~Mqjiln(#+&YKSuwCz*VxVF zzmVabxyEAls?yY!UC7m%QG1%2G$dW^HY-z2%{NnU?L{kWO-*Z3uJ#=Duc<|coU2Vo zp=@f?A?IpSuc%E;>SC@I9hJAKNr#*#o6CFljWc@DroMaLSk_U?oBHXHbM>=%(RVZ7 z?r=^9Wso^CFS38ciq^UKBoU2WJ(P?T@7i(crUz}WQ>VmFT9m`l#qYgP&o5p(A z)T$xb!Y(h3F7{Z$)sDG(HZ^F9x>~lav`tM)ndOtZ#`Ds)#=6?!Bg~dQ>E~}P`*gLZ bFYHa-)5TmZE}w2qPeK-qw|B2`PMr7>~qe2oJa6C zf8F!T$@$K=*V=opwb$O~eRuzR6+LvrPx|&x5&aWcOYL}Wa$IBHoHU>4))>)O_F7~; zHgT%U*7oOmCw4DOTP)GBTB5ra5N#T=m=WltXvvn^(f*$C9$Sj&NF~u78?n98;#Ojl zphTi}(kpix_|&N?m)b>gwO64puFDplTVD z4>T^b5)aMed{PJQPaSybsK7(H#9RJx&Kcgtc^tS;XEkqAsmw>*wH<_1nA$$Sc*(qJ z$R3nRKfie8gU>I1>wV8Ju1O}4#Q$oNjj2QPMj+!diPJ#mIxM^9RJ0i6E@{c4S(Nhp z;!9Efs+j}H#)HYm1IZLhzr$PlK_>08=h{fixuZC4ea2e^@_#vPW;fOzZy|NETO=^% zv`x9;5?S z#D}QPiFTb2oy@gO9r&SC?6y)Bn_J@^Xzf77I#Rk`hvv-|dS?dWxOs8l-q|57X^Y#E5RLgF8kJo^bB{6N~H+dWtiF|3*qQYzoO%oTaQd zOCipRHmo-wI*eY2rPonP@6f#K3k=S_jFE;T^*Ic5Tmg<);03!D*WNd=@EuOaN$C`N zZgEYqcn)v&p?Na})qlAi?f~*H`dpV^mURi@I z=@I(H{Q30Ear{3<%|qk4!R4JR;!VS&IJghR4Y6T;ykU6X$iQH3G~O`SGd4ER7vD8J z8t)ky864=7vd7}16GKA-L%ZX{9>rDhow?C5R4%@@Zta@djkRmyTP6ku`+0Zmnz}XT zbl1tEsPFClfyPnazJ6NWJUGzHX2w?!4G#|Q9*(b;bBxWqCI$!NtK0kItKZ%;I<$EJ z_KfbrNy=D!^}gZ$iNV}v$2alSa0Hy_p_=*~f&G1JHrC-JtT(<|&UAWv`u4_G_wC8` z?cLlvJTcUdT&=yaaY;g@#y0nJ4aWD3=6X22zjrsY5R9+hJ~(W7YSrMt(B4&6GwvSk z*%xnuU&p#y2l_^b$A))}$9E2lP4o=L)8iBU1H)bHr>-QMGBP?amh0Nt(3Ke;9)v;~ zaLxMKb@*Fz&boD7y#qsCso}BlOAr9!o$dQJtf#TjzCgDkQug$Wj<`apc zhE7){C(YpNfChQmh;wFp3 zUj)~=v9r0QrM0~=+1=h2y3L1?_qM!pbGqDaZ2vn_xlK)B3g$K%$J&usE?;i3y;orU zWpKGo?VSzD&SZT{rnxmKu@(?z>~1dmYgjXRWq%CZ`B*=U^=NR}Qd~o-zHMu=qdlE& z-h$}JTpCdR@raBp@?X1zBV#8mr-e0Zv2QKKv)ozVvLk7Qw#3Ob5PnNu-Lv4h?i?pi zg{b?EE$N2N<}H@biW|XM7GGR3`z}aa>Qk3rMW{=O#>^J41Xx!+_%=d*e`iJ8Cr?MH zN2Wbf-;&OBwr@+OE!S9M7w1=eu`0rG^*OAqdH!HNf%R#uzYbB4WX4?s38*Qk7GF+6 zK=Gh@wgi-}HN6&L#e!Oj{)qrf57^i@b%r<-m;@L$;Bjt z#`+U=FX*&-fhf}JQ0ICSX)RJ`PnJ??_T>xl!g0f0=ii2^b7ONlQ{UE*lp!;)#wUAf zZ0n+J+;z5TJ4>$dMp{&J!-?9clII9{njM)=jDlel3*5x2>!JF)nxHb>LB?9=M%L1u zgOx9Uahr6#TQ&23Wk z@G2ekJJLy77pa)`9hr_DnTQ36mm=De&Llf%L&&;y)Mrvn&25d%ZCk|;+)Kjv!KG(8 zV^efR?U6ZDRZKiTWQpw^$xgW#NH-+ga6QnT7E8IKgt4?x-7@&XIqPe?=U#s?e>KVv z?rd9=?RHPA4OwBRh=aI*Fb;ye<&nDZ3fct`im-Y@1RKOj+(m<(RNvNy>%~snQ9O)= zFxmn~I^R~ZycjmDY%T4?sD)WRjA~beSnO!#gJx@bZPZR}6eGo= z(TWy}MlE728og+-=u$&0h8rDioi%fHVbBw$X~#wT)WDu5I)zPe!&af+G=;7hl}oxh?Xk zxKWJcNTU_akwz_|BaL1(N4nH7Msm*y?%m59##X}D~`LMhdwmsdt;CGSbmFSOGJm63&1Fatc~ojwb326 zb`B1+tf5G@M0A+B(2G)tb&(gP>GcI(lnApg?jjWvJ;LCC(AOecKjF!ahlH^qSk6GtKoa&6mk@9l7t|Jg_eHyf5$3u2eTztKhk=-1s@cez;ij@ucYS zz-~Y4=M#)zwRB4|+0oM6iZ{hL)Iunjcikis5leJISFrW%TTzJOh+fQLb|QKBb{o`5TDVl4Q$wETwUQb6OXRx_Yhuy zHKvuG$F`Mm;LEfTUW`O`&tXkqwHJQJf){?hdA%SM8KWtFSELEsZfv(=%kPt=u>Cx? z&De&?=Um8fJ{Mri`CN!C=aaye^Qp&{^O4u6vE_x|1>xm5tmg^BdsUE20H2NRTd>`L z?EtnLvHcXbo3Q)o49;x%^HbFYa;|Xg!7P1xTyLmSb_D)_0ei1<#AS+)AxK4_o%{aYgj_y-i-+ zdVeOXzUTx~Z$?_Ih#tSU%8Og?f3)5U*k+LSBDVQ)z;VNiTMvCs{PRa_lSuoM){C>C zUbgEk_sf$UJZ1OOxaRDQ?HlgPjP3np1H;{YOxzWDZAW9Ou7YT^}b#1lP3Kgjm7j4OP(dJ_icT9-`3^NI#|J0>#%{&C7Y*j z@7wxzVYb>~8|Z}TJbioL*0;qUw1L)pG*8do&)38Ih@NGM-nZ?w_w)5O<>{sJ^z8k7 zy^%b*JiWW}^z8k7z1cjyXY%yy{d~PsxFfli<$B-ti@k5_B_{{QGxE^^ zQF@|xtZ#InH?~oGXwi_>5&|gO`7al zN*%-a+@p73aA5ojimA#oROP&{#X1mkh4@D<-i`lK@>V{JD$iI{x!}1HWl6bgr#-eX z=J9DE11vnoog#>c$H`?HXR)=%6CSti<0Fs#DXhHkafHV}Ub1?%F@FGR<4KMAczd13 z-@?`&Ul`w_dERilx|b=U1n=i{E2ieOl=Js@TiHKl|M+{rKeZe`W&iklz(2JdKV|>; zd%!=n96x3M_;d%!=n96x3M_;d%!=n96x3M_;d%!=n96x3M_ZOs!DWkc4{r$y~xYGNIr0gq{ z=U*xB%rq9sWwbAk9NWKdu)BX?Y@{G-e2UaokDn`E8drFO`jG4GXnsSsW#rG?261_9<-&#u9?b2&%I#%)R ziud1ydh@(R{(6PKS$eGEH&QCwjp>&H^oxIK`C`TQD({56mI}JepdORD56CKa638m!J4WtdllrJhJrfSFYVal?OLr5HrTbo>Wm4K9 zlX}FYJ_&TDq|TpbqvL@rjdccXHmOZOXNbmLgGNp2RX|n^c;+Ch20sQ`E*gI}XdXUT zrknYt^(#BSm)rajaF--)f}jHBdZVxVT1&27#1tBN{0>22?HFiyA4KLIM1p zOf_Ank)j1CV3BYOHBvMNbf$1`*GSP_K*tMrk4B2lLZRG7)$~S4#UiarmtOt>#1K@-eIMw2;eMo% zqD64Ld~-@Q8X-=BE)==#8Yy}|P(rv5X{6|3pxcG}p+<`S3{)>%#S#lCss-929M9Om zNKrRXgK&KsDf%E#qi`S5NYVX3N#VYuk)r2-z98HmH9}m~;QMLe-l&nHHv?@Iu3IDY zH=vYoH)^ElJ3!6CeODtzF92O6+)ElMT73f17lm7=k)mBd+l0GZBSp6WwFoz@k)nSA zY8CD$8Y!yAPujN$w^$=ZTY%byYtl&3B+!?HyHX=XUj^zA?&}&U`UTK-;hxe6eIEl@ zr*LtN6lH+Y!d;?~qJuyg;Xa^|qWgfpEZje7r07pTJA`{dBSoulV!TthI*kl%B&B9G+r06!F zF5$kUk)l~3{@$;ep43Rut6oL)R^d+52yqYeRpGX4guV*YE!_1QDf$LbR=96!r07|o z9^w9=k)jp&sIXVKH)({i1gKBAevQyqf$k9QW{uFdfck~|p+<@-PbJC;H(w(~n}K!- zcY#KVMuBzGrV)+{KzoI| zP9sHk0u2gxw?>M71GG=LXEjo^6sK)p6Yfln6kP^1B-~py!gv5QEZj#lQuNP2Bf>qb zk)jG*aJ@~q<1~U_fJTM8KqJHp(AR~V&z0R7m2ggQ@6ulMb9U|AO5#j~t zoxML`DLMf3Zs87Tr05@jt`+WHjTHR~=sMwks}aVqHxRu? zxVT2}J+^cHByuVx#1MPXT>cxX)^&=wE?u6z<FbZ|KNF&5O(3^z2MkCZ22m=e(StFe90^K9rQH>Ox zibC%d?zI}>oE7Ms!lgAr{{^ZQ?vO@`?gd&c+1 z?*c6r?jDVl{1D6W!d0!Zt{fDlfEEeYqLHE_KnsPtMI%Lz096b3V~r5Ia0+q-zfdDZ z37}U9*QgPWWk3sryG|q24`{w{_h^LcBcS7idr>1rb#Tf&;nr)UXb(`8aDy5tng*&A z?pBS^=0Fv~J*E-rjD4I~;XD6R3_?I?E@4oIL0N+)4Z7YS?rTtSHW`#M=n{h_4Z7YSzH?%gdxt?Y20dcXQG<>dv;a=AbmIoq8I&;S5`*>_G-=Rb zgQg9-!=MKZ;wyTqw4(-bQ(4>+gW?9kRnl&i(#lYRIJX;4{D3$zxuq*}u@J|Qm6`$KUQsFM=N9TRsaYWIN0o9$YN0(Qbr6VqUZp-SV>E73CxI-FTxrmh zNxcqe5!OmM9$V;rCiO7T@sfI@K}SsLEkHbiRLVGPp<7KVTgWXFlQU8aaW334G5R+C zR|&#zEQ!ZslmTL&#^`-O>`BN0aZWL+LKf_o7&QX14`MV9#FoeCRv@-AMttXv?TFDy zD2i*3oPoH0F{&NUO|oxzLDp0mI|&8V%f9;`*NvAL#l;FDoIK05ox^Md^A(Q_x5)}* z>&WmC@3S7}elYV;M@Qx;n9Ds3eg})5@-SP#ycb*kCbTU}ikbwP50C9Y^MNFjF4p`(S20%rP(t zWa(&~j_OZ)n07V@zIJ4;0F(7FUjQ@XVIBh$hy9M$V!$a6lK?a8VS2$NP$x(0J%H05 z=5|g*?vBhufLRaoTQD;o<|Kqc9IT^tE|@6~(+6hO!`uKSfz{Ev1AEgR=27hN5bems zu$T2PZ^Yh=hsj_sj$y>nx)RKkhq)EZtcQ6ROaeo{qxB~+(;kL%<%5DFlLC|VFvDPG zJj_jC;y8dfS~Fm#Jj_urvmRzKN>1Ql<7jOJGworrVE8cP$lL%X>tVhQX2!$(6igf) z%+abueWyIkDloGiW+#|Lja%z#Fw-99^I&*#XD8<$fXRB8V_;@H%u?7LKhdqV4a}5> z83QxxVQvPKILWPbKbUC`!*|>H5x-NP6XCzChuI8f#>4c1iQ}%Kqjd<(l!v(s4Bvxv zWS#(%z^RwRRKx4j9%daF9>^S-E--xm&|%&SX2!#O6-*p=^BkF+w z8jbIWh+*(6mrajE3z|`Sbi9cC!4<5{U9_CwM>}R?x zNA!I#{9N79`cE)?=-~wiY%G=N$6n^l0*0S8cxCn%FrO@79w=a*DPT^;c;L->O969v z0dr#kb8i9j-vvw!MiFmW>kF7{0rQ>$<_iVP4+@w+6)>;E_~b3U$-~t4kLLQu_vg4x zSgtaLUp6kXj6%y=;%LF{U4!EjWBBPyz2LfFe6*)ea?w}GvBPM745F^(D&$e@ZJpYp zto;sH$;47Gd__=j-s~!=j9fp@+P!vQux{7jaL@P%Qgh?A z>q=*y_k-~Ts_Ut{yRD@;(^22Bt-H>>v!-OGg)PVPfftKqj@sgl7hS`e<)Bn4?rGIs z6QqX`_p3_55BvLO=x*=8T;0MYotGCGewpTpmdw&M=|CxCoZr>w-{KFJ@)0q=w_iFJ z`xo|0NqDAi4-&HGv(n7Au(`5#eP?AArxH1j2#U(3Kjg+oH z;q2!DH7-;Ls(7JBVEqeK0?e@IG%szanZ?{!B(P@4CMZNi#5X?N6N{Iwj%O+FJRZ^V2pFw<=ZM2nFN3KAn2Xoryuvcx6mYm3Zr#`8%B*ka^@Y%zj?wiwAETU>&^ zw%GGd2bf}u1zBRt1sY-t2HD}r`I=!*AZ$%ERyy{LT#z9~Fwhbs8Dxq}FqAFU9ALq= z=$XGl2!^&rPv0CO%Yb3l%tss$Uq&vdU5sF$Ek-h^U0i~`?PAX+9AJtq7G#Mn7ifqr z7-WYd7hr}xS8<>rwqUR+wqyunY|&tI97$h;%zU~5_87S!bBti1HAXVX7?+^0EoN@o z09%Y)kS#_q&=w;ZWQ$AC*A~}2v;o$*B!ld6i3VEak`1!SBN||pH3MzwvC+&q>njqX z_SWpUK9>zBDPa7S(*QktY(OKpMT1(wEgNWvTR5m4yt2Lx;Y`F@+Rv`3R|A9st&psO zs;`9t>m7KSf@uQv45N9t8ej_s`QDN9b-y#$Wl#+rNtuMRbZEE*dD_h|l6eztc6VboOZTlo*X|nJ zDRk|w_3rxIkF0O)Xi19OFsEXvO4--dJ|gDI)S5NBR8FqTK7TR)_F0*>x`KpQCfK7$oPMh51XmPI3GNUFQ$}f}VqNkf@nTzEm@N4=w)LIfK2A zuUW{^w(iH+^F z`D0UqLPt$z32j5I#5PrEOqIq)g)~tHe}oP#kr)WEX>=Q#7}BI7F;NPFNJC@4bMO0h zLaGgp{O6oh@d5C_d5IwzKGH*kr zQp>O}l^&Tq)D)3iqTza?_A7|Kb&cdSq0*?K%U4JxN(n=YsJ@oyry4CgMt*AX`|?gb4g8DH+j^bUU1#Wx6pNB0%Q<^P$I~=C=X1Iv)@x@cHu4L- zLONMGoHp1O0Tx|)zJiiBNGZ#GC%%bP$``WChY2MSs%=zvnDXi47AFX^&E5Ca| zz)ISG-*5M854|^lpx9@N?z0!|%ko+NbpxB0e^M{1N()!>bv&1EW1#@5fM7CgK*gk0 z>e{&~*YRYbC8}~APchWSP%!~cNyIR3!C?bdgf9F{g9Dx8x?on0boOx$XLjA4=O!Dp z`C~joOz%F;LCzi%LMlt$`CvWEwE3X_O0Fw)S=K5CHLVh?|IKG0?Rom_;Te_Ll^YgC zHR;#NC7y}OA{&)of?GzR@?5C==L?*ME#FVcn)Y=i+Kon}K2 zqRDHbK6YF%1WP0Z0Sb+Ba14D;v(n6hqLn3_4;o5r2kuF(Ds`eNA3MdZ`D3S1FvgW?kDWKv^w2gR<^1Wv8NAQluj0)tm=RPk zu<}b6*b&@wZC|;wa>32YvEV4(oZEtXpN4 zndt%9#jw4L%f9`}eFNHTaKJVwzq1c?Aa2JmYz$LQ|6jluDs^X^K4r|f)9C|TPeOPP zDdH&|=!gvza`)pIS&R)uLVdAFW_&W6C}naJfm|Wo7Mt3+Bi7CDj94I&O(Y)(kB<6s zBllCh=4*}cL$A|6SFNIpS8%CNXrh$PZW+8)-JL7oi8`U0jGa5wKyEyr$)*cxAe$%_ zGf8zcS5OoAd^VF59TwHXMw$_%` zUGWw{UP>NG(Mltt43X0vK@IHfipNfahJG8j)` z6mN#2+B}|1O=i;_RzlQfBm$Xpuy&^`g~Q3#J6iDO8&R9Z>tzJ_Q=5}x>Er_)Be}_m z6uin-u_QzYs@Rd@2ufpxbb{rnkweUdqT0MKo0FN^md#8&uuYEiP$4m{?nYjVvA#^Q zkSpd!OX^UjIGM<*ku7XW3n4qSM8>eP#9AFjeHZmOb`<--+pAx{uq1&|pvBzU`U-G}R!%Z$CpJ@!15m!@kmc0WWs-hRblxJ(*k zcp|>TFzRy6O#-~TaeW)tua=3=J~#1u`&U>AJUs*OW=xNjpC`a|_ixY7Gt2aEAEwd& z@+sQ5Y>L?S^RmQq_&lzlD@Xgl<2mGe<;*fMM)r3_0)wHhpmP-u!(?gVv}~oTY%9yL z9;=qwCg@tL+@WhMNbcw(T=lq&yXQmTgSfu5=MG$7!nK9_(24WK#ILoD0*M7X%{kmb zG|l=gI-e_E157v?5uclwaLy9?&8WN3hJKYDuU#g)-A&Nr^^AC?L#S_E!fvVl5U1$x z>!`WEZ|HU!utEGBW5O{H&r(TWfgV5Gu15VaY8+vv>yUgL1E(KDeJ$!IVTa?7h+mav zqBQcvbM;l74?N9nCRLPHVdRYGm$A`q%H-n7(iCZip=I*9$gR%XWjjr|73{*xz$=;a zK8lGCQ+6`OVT|(`UG9fc1Fq-v_5onlIj6VBfTwZ2s<#8~hx$!!29dEB<26&IZ@mPn zEG-ck>F*ru>FNy!_QqStgstR@wzh7M!@G4)>dQ#*>_xjrN*WY70DTy=#bwa0w~hQ5 zZ6grFZrEj)ci9Tln(;}!~}w$N3z^~zRK26XuwLT=ZUxQfrYHtspbd_S*Y0ODtY$^ewWwM`(& zZ`U!~cI%ic&cB_e^@fpuyX=3#OZfM*pa0kYH`7yj94k6p`Bzm#;F<^sQt8peWVVDI zbjPO5XfiiZ%w;z@*^sfMkRDH^mJ)H7<4Z`!tMz$1Js9m?!b>6PVipgNXXB|%F<<36 z+}qvX*%yp#QoWexoGob#`F}m4d%w)rBG#6dI}v2Quzen771lG;8h$(IWXgFnYTs~q z)~A6TM)f-vLRBS9P9;{%G?4YVzLEQ9b?3M2jY>#bS|t ztOb((*6TbEZ8W7f1My$K9vU=J21r^wVj})C4tpBtJ!|UCnbN-jwFoJ%+3N*r)}K-y zy4yr$6P+;8`#@WT#m6R3!PZFT>Ruoj-yt9wRl$_L41^z|dc~Cf$&_A?36-|D0ZH4P zK+^M3llQ2}JC6wPqt*15j=bd8`&dogI`Yy9AojePp3sq(J^|v9ucm+N$V+#@Gk)Ot zb>yX=0!iB^b>yYDfcTHX)#C41MqY}c;vL&+8rG4QUIvo33p&D`3MKw`dNp};1^3r#Kr0qjG^3nzvO52S(@{$Gw1^DaLk(Z`{&>?sa>&Q!Ife8s#kl@twy#Ds&blcH2O6D0w9+bROjffi9wy{=n8zgNalV z@xfl|`Au{YNJiCw1W2iBq81ZrCOTlEF%wOj=rI$WGSOKREtrT`u^uy`M+0-hGbK?y z5Ik@hRd-$gwEoL3X)cg_?l4H-)-^*t3G~Io9_uFsWAI zHz$7ua}xVvQb-lO$|!ipWN~$}IX7@{Xls`T2Yu$5dji)$BwXuX}DAF5TfP{`f zpP(GpIh0Rwl=nvcBQg!?;%Ar*btN zVV8n99{U&FE5WT*@`!`ijYTuCFn5MN3%WP6PKkZHT6OqyZA6`xOZ?jwAB+a#0sbTq z;coy#i9*q3WBZr2sjGLd4>#C$oXpL*MX>r`-!AS_raN7xRsYzZRdosmeWr#~95{xgE5eVu!Q{rh`+mzIVi%gYA$_ftI7zdIba zLTDjph-f=PY^mX9qi+P0Wv7nPUx&Ck~~%62&zA7YjQFHvj+t literal 0 HcmV?d00001 diff --git a/x64/Debug/CSlipsEnum.obj b/x64/Debug/CSlipsEnum.obj new file mode 100644 index 0000000000000000000000000000000000000000..e4fa6abc0653a238f62248fb7c503cbd123db35d GIT binary patch literal 7138 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CStandPipeManifoldVariables.obj b/x64/Debug/CStandPipeManifoldVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..c96991d7f7b375997c32bd5f893647693d84b7e0 GIT binary patch literal 4960 zcmcIn-D@0G6hGVDnmVbqt+v&E$Zc7nO1oc4(D8<1-x~p<;7iQY7d(OKHbuV>K&;az*WrypVkV~P#p-M{@3R12 z2f({%Hz4dNUKTbF#2iiWlw~V`BM5ij3-CUUNfO3iKlJy<7MkryJ%x6S(hrILSS4sT zgLYpu#X~#I(N*u1zU+Syfw>|cNSh(%If`1d0=R&7k4pf*ig>hMK0klGlnyQgzDK)8 zq4l1~p80(yyJ$vP_G~1YUHVK$i={~9E0pY+Ymw}kzalSO&%PFkE=8h5E)7O~<>GpZ zl|6eod-k_$94_kp&wPIF+_?xo-5?$2cmhIONSW!A#~u45uF;jJ^SKc@ZW&N3PFnczP&#s4Y>t+Y+U#Em2Z!iPE0zCLnY7d(_*G zAV=B}_o6Zby)=b_7YaBS;c%;mZKa6)rdNDn9pusq0vc@j*g7Z@@d@ z<>#nj7gTQnLQ?oqDZKvU(710nA?y!odP%989)1D(_8BGBwp`oX$C_x=k;c)>nzov% zf?wkDDw=Z8o<0YYQ-iBSanu#0d#Y>}G{da~LgO2GG(9qu-^V1Z4?Ywtp&Mn+U)jw6 z|2e_2Ho|TimdhG1?^q<%!ShZP(2Z1EmgNu29b9)8C>Il(;oSPL$g7*+@~ke>s=0=<#34Vd9rF2iboOxhT6uShitUyHwV)-I$c%MLX@FOp4{d;3igxicZ z)D;nGmc6w{K6*okMDq%VR=%^aOKa$kaMOfMF!CYP(dmjNb>$!qpH z8erT2^Fe_5Il%11X*EZl2r#b%m`efX&j51})6pDR3o!2lm@Bm;`X`~@UE*QJJX3$! zERCHdo!D^b0$y=C4e}#KUF&@Yg~_Q*Awz8jHgW1aHg4`(4y)D8Ys3$lC+|4=%G&r& zhiUf1x}sL+*EOqk0d+0a;#f+w0);}Ztjy{IimSuF217h8 literal 0 HcmV?d00001 diff --git a/x64/Debug/CStandRack.obj b/x64/Debug/CStandRack.obj new file mode 100644 index 0000000000000000000000000000000000000000..e401ed99ba855eed823cd22bb95cf98a6a7009cd GIT binary patch literal 8814 zcmcIpeQaCR6+bU=XmDGU0ELbfcxzMWMsb`rZPNgg6UWUnP3+WmLqSH4W4n#16MMGP z=8tV;3Sl*wwQ3vCO(1m>NJU~=hcwX*4TT~t(FO>?q!o=#9onQKb)$TUm5-_WoqOMh zpY15!rXAVu{_gp@=bm%ld-uJUeAr2^J@SXdt}hVvk|b9#HC5CxH?KR0o>GW*T`QTl zp;5^_;!37QCl9oRC6}mc1yS(|qL0={&P`}EYUy?5lksBQ(1L9v(X*@3UN3pKpz)B$ zIa|n8%*PX^7Gg&3p1YdpTI86i34bwPnZJl&;=tg8YmA<3 zIe&Y#ne!uBIn$q<4@Fw( zv{rieoPgz&=l+-XYTr6PgrL}`TlYDD{$=?r{i20UOHVe7rtIcsp^0;U77GPX1q73! zQ9Z5P#MRVFO&T|4*_4`wq}mu7CRj{K#4u;U5d)T+SQmb#xmjpBq6_BaOy?fuaOSSQ zUwlI4^m%jTf2RSz@gjABc3%+I+YYRS)liPArhP6sQO)LAFe{~6@{gN&{G@~-R zeB(vYOnS6Zkt~Zcb%$`8Q zWI1Rs9n7ARGS*wP;Jg9LO=l1@)K7u~&#Z&q>)b5No-x$)&^A8E`O||lc$eO*;ms_X z5tK2p(o5&q5!`cIxpL>^f}4}eulzJug_rWo`CR3>k%8IetYf1{o;jbV_K2vkD9TMk z5>8bv7iokPveE2O_6Y(!&MgR#mjDys5s5gzIpIyL2nbFZ0(Pj^4oLK5)%2dI7qAhy zSSncP9 zoF1Rd#Ea?dgg2W{ZHZ28?~L~G{U+)S7vmGjP&{$al^uP6MjEbbg(G^M{#^isd}^HxpXF#SG}2dp^#3f`?Gm9p37y@2{B?p%}-8D zq$dujS)1WzbvTtTAS88*drOCFhpR*FolIwv+}+aQ?${Y~3vyE8aFUjr5+%ly)b7uu zM|pB;`$RUAJ&;w~#a*F$|70ekwg;1H`{8(gqC1WG4AKFT-}Ad7NUdcL_S-{?k}pt>B3|@qlSx<$#gc# zd5ZdYD!F{Rkctj_qmgVj1A{PNN2hBmejPivZjFwnC!$)mP~3;Ii|p(f-`+`ud}7(O zVttIo^SNj+m&%K3h7+lYcs`viM8k*(*-ZH-a+6qR6$@$qPB$SvR3~L}t&U=aeUn)w-f*S@&D9{(>{2A&HQsvuTM8%{vL?fS3t2_E|m*eB2lAjk-Gk>8tnn^PPo(1 zezsJM;k~_KZ^+;4tEv>=Vd~QjNOT?*@CPEkeqYE|gqx64mPx9~>5^6DncPmRE9zm- zWR0gjYJ>WclQLF3eS}E(MrX|CL*V;3y5+8h|Mh8$Ju}?9c?_Mn4orB=K-7{{qG_(p z2DIBD2Y_k{X;2ZFd8xXFYamJ$dA!C0y$fyUpYoSY>Z>bjvGL4`8;7dS>@Ll$B5%f zUC{&GY5ZID{vt5ztkwJ8I#;+2b$DiGk;5I^W1Pyatw^QfY~1K+ufbF zk~g`DRyQ^)Um;~km%kz8s~sDeuY!*d$T;U1^ZCs05SSA9s|-MVUD+(5ICAWjG_7~4 z^H!|H6tSJ_UZ38d$W9cpnf0oT4H--Fsqtj8o+yWH^>`i0 zc&$F~?Lv{hI$rXLDrVu(cqW!i7jiYOg9Ckmo8Zk8^GvO+8%$Z@aG$&&M)$hIwWtX}cPJC4^H91SZTaWpiyDkpTCrR{B-lZy?D z4aeDJ6@5v!tlopw*VX@rNJ0&v#aShvLAVNS-?mdK!p#Ce3uxL@$`=H$c+jRh{Rc-J6LdaUdwb-_L=z33SSo@?*Cg?F=Ho59|4D9XY8FhHSf%G#xqVNg$4DCH+`OPPzod zGha!K@W%+YK=`q(j-2!ikhJ}&j+}H3h+ko?r1Ls*QWy-L+e*4eM@}jL@rqhWhjrwn z?*hqjzpo=Fy$B@7IISZm?ZYMv9oR;7lR{^3#GVr90*=xjIy!1Gk!m7-=#zRL6I}q3 zQMDieQmUHBZ6c3}hJbj5VU|GK1sVa`AG_0-PMK)YM7%ondB6iY zs1sLDqGq7gg2!u_E7&OZeiHF+SxVOeu~nm}ibSd@(eO&M(*tIgW3K#0!?S5rxXyN} z{5~UctGJ=S^|HuS@ofetApFc*LLFgWw{4r;B8z7$j*{q`_#eYxSTRG~X-?=IL|E}P z2Z^ccnXP`!2awPa=&v}A=p4>0s*7Us{6u~Phwm<24~w&r3$By2^44(THJoqMa2^9^ z41O%nC%`#k^Gp&nj7+y(Yy%5pT@PFPHHYoj5og z&ljq#DqqyK^$zTI;auO2$6+f#5tR8_sfu6M9FKr@wK^}cVtw}pBKHpYVnh6Twu54k z-k|}1IAZi`9`!klo^aUTABY5NUj(ppuxGa~uy|0LDH#iizcR3}0__EZHj~?W)IwhzQ z-j#+1{1H*KPJ0&#s+4Xee9MU)&Zmp1SRwVbSSDSl<;14O(?yD5u%I^<@_B=yK6?o& zJys3BrD~DYIRT6X-PIARs^*reYQkBa_Z#*#w}gVV?3Pe4R^AfgdW#R?RnB}HdA-5G k!C+vxC*<$x9q@%YvYNB1u9o?7A1?jl@dK&ecp*jq2I}7oJpcdz literal 0 HcmV?d00001 diff --git a/x64/Debug/CStringConfiguration.obj b/x64/Debug/CStringConfiguration.obj new file mode 100644 index 0000000000000000000000000000000000000000..f581ead35749371b3a4c200b772bfe8038fff770 GIT binary patch literal 13727 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 blkBUm7MbZbBswF&G>)^^)9uHbSiksxJED41 literal 0 HcmV?d00001 diff --git a/x64/Debug/CStringConfigurationVariables.obj b/x64/Debug/CStringConfigurationVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..9ac9a985b983794a131de5b97d35e62beda468d4 GIT binary patch literal 4372 zcmcInU5Fc16h70WZk<)x6y@>-Vn7frkLbz>$EhuGuc8p8|eAFbps1DR@_63S z0=)PDz#ZiM>GB@Ojx>zK1EwO`Qj3K=grR)^*M}XQ4}YQ%jRw}dJe(4&Ag@!R5Q+vG z+j%zf?t1(ouVPu9wltq^S%>JAfY%*dLel!SaZe%7RAqZrZTa{Lf$(6f<^J*`5U@>2 zZnFR`W7l=$9i#=JQ2f|>o%m6BnGnG3@Ce24M0(?oQ|Sx(xR5^YA5U*yDIsOk@Bbbp zy>Y{z-nipG_gDIT|M;eVoRpi%ai{abUUHT`|4sV*?>88{phn-gdhy~#Kele-cNq69 z58NnqCL*OJ(>RT5v`WRixLC?-wWcoFno&;}raD<#o0%>pY0pcEylrar<%ChMYRgTN zaf*_uNflkS0!HODNP7;9(n5cL--d?Z?+56~fmpXy{ZQ@&Va_lyN_C;Fn3)z5My;Xg zswpIN$+9$As2ZjqH5$4mvjHr@Y}V^ItYCNyCxoJES~yE#GBgv$!CP1yrRlyA{C=qSJ11|vTW9c zld>WT&A?tURf+nQ$}(w@CkVBY2nIWaSz$Y$om z`4hQVLCj`~v78u-FQoG2TBDqZiv=+=mxZJ7Ftea+--R8TB~x=^2CcIhm_y@79n0Mq z_n1^7dm>YS$Y6eQ*~BYloJry2QVM1Vvt3Fi+NJ{zi_uKAZRZCYHl2zUPrjNG=hKC9 zBD=VRt}@R2Q-e85=EQ}CC2=X$#g-`d$ zay46hLR;g2klUtXlW?m&t{G+7UIUKzJ=hF)} zS4j5oV#-}gYqh4A70qgFbDdpCW@3w}{FuOF_&)1cHbujU{K^0Eg-u!WbbHht6EWcD zhA<;&*E6tx|E*uY;64-&zWh;mJ(m6QgS%8E4p5b}&r`U4>*h=7a|pkFn8zoTX@0ne z@puZ+FzmquBgDf|L?cXh%tbtGAllD#@45)9WJCv;?y8G;_y-Y{PQ!4|MLf*lVjg3< zh>LhQhlr}rVc2jH58onsg6Y0<5f41pYX_O`5f|~0Lqx~UFce+H!_SDGWV&Bm#KQzu za`bN*hLDSRpnoI9fMcUO=ulgSfLZuh{K?kGET{x^5a~F0%jI!c*>2qoD3^R3)vUzw z3NDBV2LkqX-V@j;9NiSW)ws)HwJ;l>dG>nkyhmWTadfc0}1?Is(&<5ofQ@^Rho zG<@}T+$b=hF30P+^EQFgM~-&|twE2tfH+QM-b6$@v8DMKTa5jhYP_fP8 z+;KaiIr%ucA9u;A9op_Z8wbkHa2&DXFxeuNR$&)Cg-Ux#*2rwvk4V}Ji9)BTNFD5V?tLHj zv(t1N9Qob*yXWhkd+vSjUcZ9UTwI^raHQXzWzTFG3C zN+r*TJDnMw+T9tIT%z-BMDfdriYp|i6O~5oz3yTSL@OLbv8#yQzTVRFky-%L&q~TGUu*$N37?(re4`6 z^op5O`Js#Ct@-pnXX`E5B%G)5;IpL{;^0HQ&l}{w@{@pb7{k!**0m zTD5fxSCv+tEVM*bY2_(~+BhmEz-fsX7A!boz^c%NpBZqVvriYCyQ*D|b^l%t2+g*u z+%HXC{nd7De(zab>GX3PtEmC44rw$WXk!&^KH$T;Sr;J`EMp!GUe^LtMiYIWs{Z^$A)Ct-Revs7DrHmZSiYzx3x!-ZCAuxC#i_|jbfo6%4A-f{nPLfXsp~!K zz3$C!ui876&84}y-s|yhO?U*kD77cO=(s2~k*2O-E<4I2RJ$hgx%}?D+9kGt?y;#{ zPVEY()vi6s;$(Lg<0+0|4=Jf#6Z!O1F4JwLMeRZ&kiROQ^}kfEl;Jh`8ek(9^j!AirG>oKJ1Uj^7$ML zqJZ9w?hW{Pw{F-FAI(n2wS1|(3v(~Bvtwe@Mk*Cki>4KeWIS0c#KVP5QOssEm6=Qy zv-wgyiinWSOmMO=g~euHO=DXLU@| zM&PtLT}d4sykE|?6NQvvx{;Q3_)JxstLvz(V>9|64hQ=J!+}st>k0J@1cqoM1Z#2X zvJIKDVAu7B2L=NESTG!-ThJF%*!*-vgc(2ysfx)<8og#Fa6E) zQh;G|x*2)#LBv-`X<~lSL~+nCd>_}h*nw?6li=Nr>r1%0E*f{^d?xMrkM8V^ z`iFwOfo6Bd2+W%kr*0EnQL{>$tndXEt{Zkf(`^&G`sL1=|HRdX%eY(50Vi;M%1=T1 z09~x%estozGU0K9wI=CKq8ZNhX4I_j(fM5Q8e+oVI^zF)OzU)g=*?_H+uOvB?*pb< zJJ`?gy>T1rAnMzj*fr}9af?TVy8$(iTg7FNkte7T{@w`!p5Zo=DoU#`a>jGa*l2fV^NCb>nl!`E zGPx+StMl2umcDLRs1;rUUd)`&cTD_8u$GK*7~_0am;0d9j_au2-UZA$ujuV@;2B(R z=xx7!^SH&%AgVtj-c1cQ)`rtyZHdU3f}WxN-hr@xd%{B|^pZQ~^=?R*_ocp!5NSPa zaZ1SziX4DG3|eC|*rK>J;8Ew1W0h`?+o1M|N+r4hHd)H=Xv<|ZkNy0={_n_4 z7x2fYyXkzWsv&MVEfA+OW67yp8Rz}(RoSsrezKI$t*U23#*$)YBAsp~;_fG!NG2Nf z`S3p!>uchrn6fcT4^89}>1?Uc;5t0e7wQ=dL|3UU%=u4h63Fm*@nE|D)800D>agDU zi6+Um$-AA(lE^YzZHSv4j~fqo&MTK3KkYo;;%r&+U1v*MhjK{RFXE^1aCW}s)t09@ zKI~{ZHC+G~T7TF2y?VW->j?gw!XLl=m1G+)ANLnJXq|VyB_Ad{H6dEQ{DZ$fuRIaF z;hqEDnV#^`$1Y@XbNmC9W~J_K+@th zo#&)Kn!G=oyuazFjs9Vx^Cog&vB^HJ1d{%i>pUl|G^J~RaGpSX_nW8;BrTpW(eprE zLhnUW?+>Q*43I}iuSY8RRkD-52qe7>n24YLlJ~TUJ_5o?3Kp$6Y)NT5kj&LMkc{se zrnF*8-vPo8wkJ*Ld!}>~CRExE07=jH0!hz5HhIsOypxCpKUzwsbmXF4dLK(Et|J#6 z1!B)j=|vs6=vH{)kuRmSI&x6~2tV-3I&#rTAZdF_M=n}}*QNZ%bSbUVk&B)K;?v+# zI-(;NxxtXO>ve=afcULF`p}V!UIUV`yrCl(wL(eSUalh-9R`xN&*{iT?*hRH{!Z%1 zMJsRz$oN+3$VCw#IkuRNT(l1e34!fnI&#qoAeqy@=*T5@GoBBHR-lw@t!3dDCF_o&bjlsM4? z&7tI#sL%<}qC)a~COQiwqiRP2bPE%COr)7;mx;zrG-IO2 zO?1#iM@)3gL?=vy;6?5oVy3{x?6jfe4+#zt5zm%G>=P34e+4P!@$>vT#Q!XbR8!gs z#4ExfvMA9yQ_9Z*UPBJNelgG%Q_9aoEG{-EgF6%oXnB-9SOQE$tfF+21F)5^qUd6vGadNXbUx0iqy0;NvgDwy*Tu7kLkg9vNBbBeXm#4{90<;esI9f5X$Goo`ivqWD5hgX}(kKpVFheu;^ zzOVaXv9x-jf%8@a=UfA48H~s4Jl_P)zB-N@93H#XJMWDKNtkZnJleo{rh#+3f%9Pl z=Vo+!tgd%2IQ&1@ipK}YUllD*7?A&?TbwU56lB~fg$B-};P96>%j!pf{6*5@9A=0p zEe`LYyx&@!-|J9T?zHu7yA8$;<$?^vR`O{;5=WRA%ax}}nY6*f8msyCeL2_;0Ra z4RLq&4s3Vhrrm(I2u+4ydllGBV_}z@nz~%ztz@F_zEJGGNFWjE!AlM=C1SmifnYRd zv>RTZaE5!L(O`cl7H)jG!qUN>?SatFfq~}IV02;G(9RGgf}w5UgcX8^>O(}kE<{gb zH`Z$$4rd?`>W^uQY4!B=Ev7OQ7z_^w7Sjq0Mq>9ZrWA}`k{a^SgFM<(f?49%)&s$q zn6ypx&Gq%oI|-jR6MKr;awbvAd?k^~mKr&U>4|Ka66h@KPYeb8;i10zDX8slLwyGu V>zkOLT4jzkIFa0)=}ne0^dHYWmV^KR literal 0 HcmV?d00001 diff --git a/x64/Debug/CStringUpdate.obj b/x64/Debug/CStringUpdate.obj new file mode 100644 index 0000000000000000000000000000000000000000..44065f274a7f3c9199756ff5479f5a4f7ce04b44 GIT binary patch literal 3578 zcmcInO>7%Q6n-1KO>rWWmKIPcViXxDQt(d_wZ!7!#7S#IQm0ub>S4iI@2-<=*SltS zo#s%9ib{wAkt$9-^iXlC;KqeRC4}G*4n6dM=na8Xq*g+Lwj6S(5bw?Y*qgXXQDL+@ z`^}p-?{D7B&Zr;mf!iP7QvU7(H~?Nrx!S7hWBUAsZ$$tw6CQClei&pHQ>s>LEhR;d z3UFu_K(Pnl3!kqaJBlzck+N0Ul>;t-YY5d|fI-wrt}QDe7r-9$bsrk_lP@oh_rHLoHT1&r*RG( zX+bQ_NTS|o8M3QeX2G(xVQKZqs5D7ABo##0*3G4PnprJn)lP%j^Xy)f1vlZh-d^}~ zH`M}^Ojk1w&%MTuSvJm^$wI=BQC6@TP2JFJRxo78(G^y=Y$i9GhOTg>4zpXPiE5Y? z892liG}}R|*l=bzn>w1xvWb>%sMH+JX0l_|3@-^#&Z;|l1xiDObji?brn_3v3o+sU%hCHU;_fYoCHhTAO zqgR}t5DRmqiGQsab<+QXwq4v-d3k{KyM%V!Af9B-0q&!U!=%SAG^bQ(TRFrLz>5Iq zDef=f_i^~~-^cl1@cEf9hdzOP@^imWM|?i;oB6chlkow?hH%hM>Q+^8SHpOn3I_OJ z%2z7ExS+jx+$E1Ktgreg7#Fm|af#T=iP)~Mgjt-cM_>{W_!(gO&j|>2<11?PoUZXewCQ37UT0QexS;-duofQW4GgBw0d zz!fBTw5vW!zzsy+*qc5|z(Yiy4#1Nbp#)!LWU~O2+a5X`qI`&Oiu~Ti5UqyjqY#mo zo)iRJM~vG>+G1QAt*02yn`d7P20}!;ibp3~&{*W7oy<{uO+^64<>EgITeJ_fDLHI?9#T5*2HZ1&ZU<>WaErO2SG0wA9@=7p(``&q{ zpg6?@x>ZC==Y0aNImkmdiXes_?+5sauJUN}k&AjOTlX~#)wxQcTA;I_NQb`#*><2> NEj8pNZ9;Z5_y+>u)Q8%ILlI_vZnZt5DM7mfI?fT$R+%wNK^z~I7X%${sHe}}ZA z=f||Ae5a}{csjM!l_Yqp9?$Plw4>)d+R;m%$3M^(J)NtbPA0AfJ0)`ovw=BScuiY) z@0@^3df!98KBRr~`~_w>Y@SEIA)5Fs z=R9kn7)ni2>DUQLg}Y|Pw!mHQW20RkQ!2H$dS9aP&L|VXvq>$c@atOga*@80uRH z1u=*fF$imcEizG$Nf%>I7Y#4kh2a=R9diuhQne2_5R3Rz8-u^8DoxfHPMkP_^-ULX z{SqQWq=>sc(3^~v3J+s1C?`kb;o)RFH$9tAS8|1!K%u1fB5@a`LW%Pt6gGG9ZzSD zs9l*UJ#(aYyf8bHg;m)rR|E?|m3y-sL1n6>r0e4%ofh zw+p}SeYo{E zh>%S^I$J5uV$rR!swVdN3ArMd{9&ERb^Hyqqcm9c)H(>-0pmJ}=af+b@x(|tGI%H! z>`#P7`$xk414E&BYPy(m=g^IGO~;t2UDq~I6kacaelu?8SWOHHZiUyu<6HgNMq-GE z5-DeZ!uy3fuO{It+Op*=I(K#uMU+wcEN$9iyQwmC1GQ}_A=Gdr5gH7QghoS=gw`Jk z4uwYOE8yLWN3?qeI5#d@f#}dsD3Az8BlLN=Wqnzq5vSt-oD7D@&eMyKs?Addw0*c9 z!u6azfVJZpbjwo_+V15h+N=|soHp)dHg{m@zkcmjA!jss_Ukb^*6}o-L%=USk|6m*JZQ| z%8iW6xdM@^k8!o(Ldrz>2=yeRjh+gh&h|wg!j+%>8HMMGOEa!cfe1Gt&GS7lfEE`8 z(AMhldgJ2M+XFdXgLk71qs9M=Iz2akKFF~@#3lT78+v`9nT7W+E_{OAEf5j@-puo! zb^}^IiQS0ypJ=~?_HRh=PP81iipwkq4Z!)o*2eSP=c0<*uFPEVoG~{0ow-6PQ< z@6~QvHkZr<`x4#$J5$#EV#d$*oy8o^SrZt{3r61@m)SSXo8sGQ4DT@drk>fa)r-~W zjn(LxeN%5xucVx3R^F!KE;Pm4yxrT}@-rody<)Rx`{w30J#bNd3?6ez`gAty#$wmgE}ZFlc|O^WB!Vth zN|_pB`H|^-Dw``8>r6+7f|35=Q2bWai#dM6kvxW9=gpb)|JS31onf6_FIukLpQt{M z(i(%@7dMdO!(Qzn#j~~bH}81<*yOpo_3zIK{l@In9xg65ooQM&^sUpP+kN;+%kNsg z$AX*4mUCHKFz68m`TuN$wr>6KFE1j~{LHyoG*Zp;v&U#;**Thkk3({$SDmWS};B+d}VK=pPp1+fv$V z1!BJ*y2?Opv<-+~HF_v$p(8+eE`#8#EpFc8ehgjwpmoVWUYY|JKhXHyEF&+SMZ;Fw z>0JYP>3&Q%kFuQ}G?15;fp`_P(+dXj()BpDNZrpF$V-QT@Pk~^Kwdfr#BVR#>AZow zq=O)Ja|ZI#6F}1MaRYhjRZH%5OKz^!wD*{SymT5!`hCej@CzhkK5rl|saUZ*@^adV%p;v%p z1ZOOoxndPMXVEwn(q4y!R1593kY=I77D6Z@lg%RUAS2gpsIL-;pVplFX6mpIpH?Mz z8xYS{GoN@3qykAU=ZWXHS!6;YoP-Uo9|+3>Ts}ohwAbQt1RRS(Ph03EAdW?$Pf)X8 zh3-KP*s?-dAhx35t-SqJ14L?8_};kvT3zJRhiNzA#AQ?7MQ_=lAVSAC z7~J9**9z+T(#}(dB4h;W2W8BlaAxsM1{7X1B0qvM4~kYrIbqmgw$%D*9p%kB%Eda$ zW++cpS-u67<5iR{PL}l?qr6;4dAp8sB|9;SWcGk^1{B+S5Rm^* z*_1dS|Fg3xAuXsmHoTZ8U)Hd{xu_W0#?(ju2r6{SWJfmDEBN5}d7GhXnQ*Kt#OTI?JcI^g5m z1^*x2$0x?&cniCpSj~Gr%lO{)jJv)%N(CQ?Bp!%`QnCKPfmAo85(BZJa6Do5-TpUo zr2X-DcrcQPy8f|df#LoGp~#`3p*01<@paiFha!X*tox%WI~+e%hl_qyxPDh>_8)nU zYbX>MOlS=V_6LIvNR5Psqobh)1Vh8I!~+e;h2xD%B18SiZ*7t=hy1d9D4Y;ex~sa| iLn$al1F4ZvAUYDPPOeiAxpj8gYIr(5sSl*fI{gRi7voC+ literal 0 HcmV?d00001 diff --git a/x64/Debug/CStudentStation.obj b/x64/Debug/CStudentStation.obj new file mode 100644 index 0000000000000000000000000000000000000000..6d44fcb6e39fb3c438e9747573be199a602ccd27 GIT binary patch literal 17432 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 Yh{k9u^?thk(4kh#H>E{&TC!C58$VMIaR2}S literal 0 HcmV?d00001 diff --git a/x64/Debug/CSwingDrillPermission.obj b/x64/Debug/CSwingDrillPermission.obj new file mode 100644 index 0000000000000000000000000000000000000000..a8daa0713c8fd162eefafd773df4eb06a7dfe4e2 GIT binary patch literal 5795 zcmcgwZ){sv6+e#MCVgq?AKJ2R10JbCMat|X{hw`;6Z^H#G>Ki?&5Gp8aqO4mt}E5hc;S zzAZ%eguH+w5AAdNoAKl^u!K!K8u#~S7?c90)RTITmyamo~5*wSHNx|K)}Qm$b;4pPy2{eCzvM0GR_q=BvoBOJ=<` zuh!3079G)xyIAUzm$yFm1D3a}^l%<&UP~cW!)6t-qx%Ds%DrrFi|fPK%viT{(SoN4v(_V>gFHS$0u5{oJM6-bE#Q z;ci#;`prF1{1Zpr`p=F3 z%LimT#((ie9{=|d-{>MbK|aSTqQlvwWj+i4va^%v_;@z0mug17s+;AgX=y{*`9lY? zF`ggUX!^Wfo{d?$VI(!Hq}w)_Lgw_dG}pCzJ7m&T`cro|-QLK5AH~a6&DfXvtbEM0 z;F)E)K{#|kj+&*4ZfKSqHS!QtkY`Lw&Q~giUT~D#vQ;aWp-(p3D)!5hn#GFcp@E^n z(BaUaJX+I@B4>vN2L_Mk2Am*K;e3(S>KzqIMGD6aeVY3zhs&m6&YE)AnIOY6HN%j@ ziJ}}npSQ}xI{IVHV20UpxMUVGlLX}z3PO}ly;9^hE#Wa-cWvaQ0JW`(QF<*iCKQPC`CG}8sGoVRq-&Ne;AeuzWO z933E-i8`20_%F}x3>_D%8Zrnc5l@J?;Sr`dA)0>PH} zmhIT)L_p^zmCWap3VpJTo=GH~qFj@quOmYymQE&~QBvs)+CzKVc|=(*aqQS?MeC8g zX7e7_FVF7RVB0ef*qz7yC?b!2_d4vJJ~f(-rsAWk7=8+(I)_zk^FKGhP}{h4bYJ#s zZ!nz!dvcw1gr|6QT}L?b?^SMbv+(+AHvJOT{u^QsB8J!rAK*XDXsspuzg}yI?m*2x z)+GY_6bIhY9(NGYVWI{0GsFev=QYR+Joh>9k<4%qd=Y%S9^iPma2hF&VGDfJ*^cxw zQk*>(c$>yNUbrgg*G2w4q&VL!+(x<^={=;MK)MNf4kBg!GNKo}_Hr|J3L@|V=Q+sE zzxf*wknPRb%LjEcSE$ZA{bm+!cWdza?A80WD2yQ8hWH(kSI*^)TE42~Ivp6E&X^UP zA#j@Y)QzN$kB%jxCvx15BLTP7d}I^i8a{EuBZ%~_NWJ!Wc~7uU@_$`KkZMB!e~K%OZ4KzCr%>1%kH6v{IPZbeFJ}<)dBh@{#ZAF_>$rB{jPyN1mas! zfc}X;+d4qJVqk><+6siV2k22CHbj690=ZJ2271JyO*Cke4ceIoZ4St7)te34FB-I4 z@GxF8d+D}75*fHh;{&ZCkVIF3xJSM8u0Rsq0OG#&(k+1`+5{7G>w9U7KoUIx#Qo@{ zL4hPv8?>%yFhMRUKL29KLX){jvE3=6vwsG)jKYbL`5K1 z$DBYCeGSOf@q$1SeGkah@tQyqy$$5b`;|ZveF)^r`-eah9op#08x}~S3Xm(WDv(4n zHXOIjL4hPn0>PN*M@Asn9>^V|cLkE1eV6^f=lFn&_95@0NCRPV3ffcyRT}7O1O2{% zZZ{Bsqu1}Wl3U<+^zs_(cUD?%so&X0T*N(eOI^?8Qr?ZZmwu8PrM&vHJRe%d}YP*!y_amogK7K*! z2TwD!zPWIV{k}}IP@vZLCC3InC?I}SY7fshvfRSf*Cxj{zIM&b-1^c4*MjyS{ye_z z;akYgBf2BNWv}s11lJnZyev|evJtKHf=danpfqoE|rPqqWqSS=EsA{yk%1^m(HZd;+f=#bF_+j_rc`Igfcccl8TRvjw$IC zcZSvYI^GkaY9gM_;FjGkbLH)`Gh_1>fES?Lc}vH+(bm3@GjyAxxREGh*y}Ti)OaGM zq?L(N<85k=D;d7>v@to=oNM*N*qy@8#%`0IhV+j2^ETTK!qgK@L$_qOBwotTYNL5u GqkjR{f`K#u literal 0 HcmV?d00001 diff --git a/x64/Debug/CSwingDrillPermissionVariables.obj b/x64/Debug/CSwingDrillPermissionVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..1392540685da3c38152ea8279292a9fdd8da2b88 GIT binary patch literal 9172 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 IbSX>!1L1^n9{>OV literal 0 HcmV?d00001 diff --git a/x64/Debug/CSwingLedNotification.obj b/x64/Debug/CSwingLedNotification.obj new file mode 100644 index 0000000000000000000000000000000000000000..d38be3a9f8c721d7cf5028a0d382890532e861c0 GIT binary patch literal 8624 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 DxYE+B literal 0 HcmV?d00001 diff --git a/x64/Debug/CSwingLedNotificationVariables.obj b/x64/Debug/CSwingLedNotificationVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..410860330ad8d4cfbb78b394abea391995a1c8a9 GIT binary patch literal 8454 zcmcgxdu&@*8UJqLG{J30TG-Z>Zd^(_GU%K~-x-f2wwvqKvEA5BJK^Ctw$plbVq-g7 z#6L5Oit1%SQ#DvXL#ie~We90PFsd<$Y>cI7Fcmb3{kMQXbWmyCOAKjHe&0Fw=rj7Hi$8oHMqolW&C1-h>C%x$Jn58{0?ig zm&UaDT!*SvT^-ueVjSEhm+Lnu+U!M_Hv69Ifj6`{SI3g8gNaMN4#}LyYQSdod9C{T zMFHnC{rCLxu=dqU?7ZFPCG=NivpT=bs!J^#?PZsMDj+7wRAarg`Idc5skUg`%*&?Q z5|LuZ(Qtvrj6@6z792C+d<)CMPKBGLmQy-oPR?!a8_OWfZM^gO>2_`D#6(R28yPX@_laEL$hCO-4f~?1dP4E<|Cxy}Z7M>Y;XSrEA`4r2b z2%FmTE*ygw(rH#2XJiJ6ETV$43osdhrfrEE%_$QRXQp^(!DD5=HisVNMs=4%vpsH2%; z32v&r-Mu}Yy`CO*a5|eybGNsryJvr*TNF2??oU&rX;Nx3OPxc+<>SRnlKJWJV@!ph+I1+G zmrJoDmz_GXL(cSAF*&IoKwL}l;cTjyFXbo7>S(q!oy@7x@^m_zk8_;jex6F9m@Q@E zquzKdpU*)d3fQyDvlG9b{X2KY$Foy$Eng}hMJkBs9Gcv-i%P{*!>}S}jwg$Sc({-$ zigbylGE>Nyd?{{EqEe&Wn%Lh>h#0L9MLnk28{J$?lq z-zNXQ9-pHASi*2zcyM{;;X%EDHf&f%+uKeQQby@!TDJj@a=jQvv?FvQ7`+Ca3=pP|37(aleYsZHp=v4KFgF(NS15LMJP&OhSFR_1L(cdWU}5F58S(1}i$fDqY80;$F>B4|pmW5r=1I^# zhwF>D$ej5qqG(_9#F0>g#N%a;U<6~?g;Sh|pGF=!eX_?*4whAal+N*(Owwf1(c<+0V53|{|>G;TnL*eZ=;@M)aWVlL2h>#?k!y1Jg#1N z&A2q<>JUiqD||of!e5j@w7bzd^*H~y*!4Og$2oZi+5lS53VJJzhyOidyicIz@wVxD z;t+~H7vAHza14V2@t#B#-uLiVp~43_{N1Yj11${`(q&GtkAu5h1=Dr&1TV#xk5Hu@ded?Hnzp-w~5Qn@B_iW|pYLn-JKFc_#Ezr8bA4F%M&&vpT;Y<5qCZ>3y$rcmAZ4fK+#qtR1{g+G3FrQctXB=k5f?#&27r9q(pT3?*-j1Be9_Kl#RS*%=geb1}J`F4XR=c9`7}sZ#n~i_^p{Njud%+%}Xth+4+v#f&teV{y&UE z$c=CP@n_2Ez?QofdMX3qpFjNmH<9QKAN4E!6?yxuH~IbFT3jv~LcLy~$53y?)kaU4 z=tm|x2P8Fqq0?OSqDlL$Nqa>{ZS9BAAvk zuccdbi$F4dFX+gPOkjU`kLM?lM4cwuXCe&-gqsv}lFslc4|6f}gNFo2ka{Tq*1 z8HIQG+G78{BUVMoSkEVx_SnAdh*eS+YmKl>tY>$3LXzc5GJYD@0xpZf*?vZ+G?D#l z5N>g(E9ZCY&=OK7z6U8LftLR=2}!sr6zV<C$H9Ux3By$HS=RvVX|2$wP z=4Mfb0r{S>C~<~*k#-&gh2v<+JPtSprbYQ7V8Nt#($<%|HrQ%bc+Km}Gi*Qe`EC{B_TyXKKPSiOj1nU;Z^Fy3#H0KU93L4mvF! zE_T-sW4#MtcY^-VP)utiHQ@6#5*hIihe!R5r2NB?*xikU0?}28Asz#WqcbE}r9?C~ z5)8z|qV25h_LA2(5(ozIeZh<64hQ`;-xbVvj0u+II LW0}EZDMSAO?_K!z literal 0 HcmV?d00001 diff --git a/x64/Debug/CSwingOffPermission.obj b/x64/Debug/CSwingOffPermission.obj new file mode 100644 index 0000000000000000000000000000000000000000..7e3d63ade1f332b6251bdd3c60792b11a8cc6174 GIT binary patch literal 6231 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CSwingTiltPermission.obj b/x64/Debug/CSwingTiltPermission.obj new file mode 100644 index 0000000000000000000000000000000000000000..cf4824700e4b386899516c9377acad04079178f8 GIT binary patch literal 5996 zcmcgweQX>@6`%86Vt1XA4@gL&AXcd>g(f|J#7!CllI`=_dx`D4++CbNFFl{{*3LG2 zx5wUH;y;jjC?D0uwN!zS3V)yqiL?R)5^7Ze6_{4w{((Zohbn|XASiO1NaUlSfQrKJ z&CKrI*%v#2V6?mMH}Ac9^XARl+1bfnY-3B8-pV*z7<-6`5-b_BC5ef==VL5^yJe$b zZUs?U*JLnjOqFLk;)2UqTN`7#pRr#`y?qeqY|~)S$)-zbR|^!jqV0@5yIJrQkbc(R zADnH}qxR7aLdSjfv#$PNp;4~`!p}nQhP3wp>Rd1D7@5);!)^NmfESk8W6CBLEIH|n zr-eS@-;)nAb{H|C62Q&<6XQ*ACLRR7^#QjgD2?}+e(w6DK5uoXdNt6YFD@h@TMPt# zilU!e3h3wV1fKqjJ{Ra%40I54ai~KG=hu-Hz52RdeP@Zod87a28^`p|U0)ypY<5YT zuc3ZlHmk2xsA=`&>>Rf~N7KhX{`$rXSBbx+JsP1onOw(s3V(Z9>? zoWe!W_v@r@Pq>W}m}tq`s*gsZ>iPV+}qJ0WRO(#dOE8a*gKa&17$ zvUA#r3k&6*IV}mYcTSr;cc-QN(43Y9Exmbd2mGQDqch$DZl6MxUE2u3LcL&q-Q&Dk z3*p?!S$$3fVg75+K}Z4p&u8e(W#;(|Jx4im6Zb1E$Q$P4nHcIzMjiVpe^MHS;qG(<(&`CubIm&FHzPe95r(#6G4D+YXX9uX>CFy=utL6->);)R2{ip^Q3hJ8HU6u*?kayQn(l zd>-AYc0V)A?$7)YkPj~QOuv;B0n^u;pJ>6a1hf-a19tZY_v7k5w10nc%FHKqyI4Ab1mMv*nmf?TicV(Dup(1VrJX`D zQZO7ooAHd1PdlbvOx7}|*gT)64|Op_i8YBFGEC&}8PFIT;rYv%cpSxjMBbOTyIdBE z9}ka@B*LSKs1_Rw$K&D1cq&&&HRH2gY|Exeujz8o!XoJLCfIqbGM`@FKX@aM>7XyJ z-M=<5FnVktp{1Jm$NgAX-o01f#va@(7k%)CV&Mrb@u{fBKH9)fM50`jswwPls*o6p zMEibq6OcPpb?f!2U8FXGUSx zXC=QCdbAE;zgT$!6kEB>Aed|dbHM% z-ruF%kN!T4`W8^6dSw?V{H*K+4T6$?DsH#9kZoR{_ zQ<>5%j|(ZBphsPqmDp|f6rDyK_Es>w#;lL@;pMg~VC zp(82o#^V9uHSP7JIWK3HT!y4~Bz669>#k*=;(u82ultTKio6?Xdu*h4D+^_@{`lK` z+nFy~FDFxO965#??)IGcD(*+K#&o)DmGE)y+igx~?0nI-cB>6+$VlQCxoozXsDMpU zu8AbKQlGxmvBXdlD^6w^vv?+FrLtzRu)=g?bZC5FOpEVU6{P!^2rdnfNA)(Zr~V%= zA)?7Q`@HXF3tKSYYsExCub1o4qnREpfUA901M6Fdf8h_bw8j_LJ@dsMw=CZM$v-bX zQ@!G^UJ1O7*KGrPY)$*Cem?HByhSSq?Xt(&)~&bx@T%|g;hl${@2(6)zW?m|JMqi6 z=AzbY+jINY%}>B4{V@jk9s|FnKwrj_-s%8*0Z*(GK(w+5z2AE1eISZ(fcY@1+cl4Ln4J)_%Fu=UO^&-T>+v|wzHp0q_95&(Rkb0yAmm^6=5gu+gZCr3fl`r<7j7{ z5-Duh;~n;RX&}+okVs({fJ7fvi4=AjNci$~i4^uHAYABUNg{=f;2&1>dqg6IO#z8M zrX^C?MIh0~C5aUFB9Q3g8xkq(4Ip7}Q6h!?4M^DgheQhNS?}6AAd$jO0||S!L<-xE zkCgCvmqZHFfe=iLV^kuAEdhx+x-OBzztxlnKAtrK?Ll3jeh<+bD|nM0DtPFshkoy& z8y*7S{rb6=8|`BH720*e>Yrs6{%WLLZyM;ka1)V_+=LZ|*bijT}kCsO;U zsaK>4#j4#%4vBQ(rfHzsksHidN+l7w^V8DlVAG}ylYhqSBm literal 0 HcmV?d00001 diff --git a/x64/Debug/CSwingTiltPermissionVariables.obj b/x64/Debug/CSwingTiltPermissionVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..4fd92ba5662f52fa67aa28d1e3774d57f74e6f12 GIT binary patch literal 9131 zcmcgxZERcB8Gdi#w3+*{q-$yU+Abx~FgnLcLutb%IkDYbQ^$5=HtSn$8GV%#N1R@P*RDyzd&@Ujp)$DVT;m$W7#Oh91{Tl?@#iXne_5ZBED) z>iT85Y$BF_G+~%ohnP6NWVH0!+CjE_HX1Xf&@bc;Y$e)?7;{;NON>{>FC>V#F<7U^ z*r0Lz4r|9h7}rXvE>$a9y0qn`Fu2PW%O6p+2u~gBmX(f02Z?Bw$WTt5Tb&iVLT? zwY+c!6_>Js7Sq7OS;=F$^JTbXz*5^q_zdwEK!IhJLF;v{mKWYO#B|s0c#PwxJ7>_Y zeOO03e%|z;gn<=bxx|KGp6klYU6cv8DATX>JkJWJ^6?Kcm1`pfwYB82F-eX^x1;EG zp~DWIrt(r*WMU#9yBM$RV$I91I1r7`8ec}1N{b3hB@50K(^ZPQ)v-jDJy84XeZ97O zZN2KyTrw5sW?!$pcYnk#ij`u=;!Q_Mv6(pacv8s;9NM>+B1`m&!rLr8MLG~K3p^U@z1NPn*M!<5UJ(<~ z*duCBY&sEpWMCpaHyejl*~;Yw3r^(*;_N|wI-7_xKRz+VR0yg)hf--7sokmM>?6D7 zd`@MfGwK1vH5VR9##gpkU$0_XQp=7ejTp~Q?42RO`6cmDh zz5TX5`1S7JvnM=}oDFN~T>c0$K}6@!%-(*=Wn)dlijgdkdX{GLcmU=oZ@2F)r*ky0wtMll{35Po;-z{JDU2@n`VPq26&F{si5j zNCTgRCjs=+xNN4*PJYkzbrAWKF;Zz`XP+tB$li8p@4Od&jrlz;_n6xk(guAluX~h+ zz}SY3(5ivq$kl2({a&xz8A5=m8{M-FS^T~R4mi=@up6&ef2Ww!KR~uNhB46g<9Z0! zjn@&w;Z?;mJ)r8?(E#BUU-hVwBqU#i0E#j0bxK1!hhl_i!lykoG~FNy5-kNos}|+jHwtL9Uk)fod+X! zGGQ;-LcP6vBIerD(}}yQD*G&w)1k*0vXw0P_F-_IvK{-$l-NH*IQdSH4P0K=-j+LdLH;gz|^8Op#z`ld+{IB-E zmYC1rug$>9@mEztX61Q+Ogu3eolE7hw;$MyC2g}P>yhyrshoqW%JU|7g>9E*)A~2wwY=71X<7fIrKP=7Idh$MSJ*CHX*u6= zS|7_s(m!pYy>b>^wOnX>Mrc&Zubi1zTF+Z#4?I;q+P3ZEfBstevFE1yPxTfC{V$!o z`Xelxrkj&Sf6hMn_#=KxZ@^`tVca(f^gQl(TVu7qV4{~y^m`zw@h6>Tp*Kz1-%Q%O zI%=nXndpj%TCt>MADe-sy=^+pLbsUQJAwFPtA$2QlmwC*KQIx0I+SC`x! zKs6UlclNqL+c#1BJFCF5Is| zaUiy=&`*Hao`SQV^4S@P)T;358P7{~VGCRoQbk`xx1+_os4^vt)-C9?OyRExk5y4P z6E2#R$`d&eO@+_oRLGQzE)!yk6<4bwU|9gD^283tA#)k#ZmW{v#s!nYqo_Q;xogOK(1vxq2Y<^~4UZUq{kQuyC^i20Yj(VM z4IQucRWRau&=-0z;En_a@wuUwBB7yx*AomG?Ya*cJd!~iJPi9n{`$`x%pDm#==L4< zdK+^+!IgQVhkX?B_zw6ZWf$yJ?IPM$F52t6DSuF5cf4+#m}t$U23@XZBBSmR|Cqa( zlzSu)da#+0C%7gt#A6U~tPKffDH05gdOaaAX?v@iebvo-2uG5UW7%Xr5y>UK9Z4l~ w^_0l`OfpXqbmn(PM%_;TsH=JkD*M}0-9dkK6Z2Ck%)WYNqEm^XXf8qj0sLdCdjJ3c literal 0 HcmV?d00001 diff --git a/x64/Debug/CTanks.obj b/x64/Debug/CTanks.obj new file mode 100644 index 0000000000000000000000000000000000000000..649cd1666325a34e9a29196753cf4afedd752924 GIT binary patch literal 39602 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

`7H0i(g?k!OrHG@RdbiZ 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CTdsBackupClampVariables.obj b/x64/Debug/CTdsBackupClampVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..6168d1ef0f107a27b7371c344b2ec859094314c5 GIT binary patch literal 10873 zcmcgye{5UVbv{p`VwH9>IgT5z^_CY$X_YpmC|kB>~QIM)b!Yk>n6EoxIbYOm=2zt~VxGqG31D@(!Z!?3YX*GJ|?XJ*7;lk}{=;Zgdho zyPN3TuS@P8WIpowJj+hGJow9dZ9PUl^7=eQr(7KTZ679j_YNt`Dnf3iT$YSHuh$n8 zUZLrAkJB8n+&t{nC!dfjWz&_1vL-)-nDpIlmQ?QUAy1{0N?TGy*CChONA&l)l<7t$ z`YYqd?u*1AqGGHl5x>*M`D@cgE#IpfRadXEv7SKfhRgL`B;)*5mvR1v>(RH3RaftZ ztCz`*K(DN$LIMwJ4lon_gve9OZ4qg1%qjyw;UxscO(L zYQgTmc^}F6YkL3j^E%VDU%Mf)C7)5P@JQ5duu}C!m}L~Iu7|4sbQOrCFV)~#wqw-x zQU~i#oP`d@Md~nuj!=N7E3AkFZ;FP)Dkt2koPM>h@Tl-qK7XxPzc%=y zv7LEr4w7#*=&J?;Xt0}y$zCd}OlG69iRt<#w!QqS6H#L|7_IA+&)EhV5X%+3s zeqA3PyS66cYOnZbwizj-x`c7LA0g=4hby<$o4WP0N0{!qE?RH5e)h9+&00Ua9*&VCix+XF zq@UvWTXZ)}8g@e>|FJ~0RCoY;OgS+X3r!?qxrL>Cs*)=#`U|D(!Nl^B!9;-f+=M@# zDUYVo4=xq``P4#jDpks*X7bsxr!eyXi)t)F_+JlbeJobb7_6HP|{PyVm_A^?U(h^(&A!naZWEd6z|oivZXQ{ z)DLDrWY}r9dFJ!1cl+Vp@SM~nILcTCp(EG(c zd2DtmpV#{%8NL7ERB7>84*e<3VxukV{R@T6Qa*dkj*s4tKp>C~YAj<5Jd_?7^5RBf zM(-E9^$dck_owHx=?9O^6qXh|rno*cGsi3h_5M@&f{fI? z`P|}z_sXH1E2S3nF~qf;n8>9|g>qrGqEF?@OR2mbt1M-5g#^bb5#+8EOSy73G38Ih z3xzxsVt@mKoF_T+N7=?1>EGB`7&Z&hXgH$f1w+w5-ADd5=iit=uTN0xg zOJ^4`V+!TO>BU^-^Re9AVhT;Rom8_&y@XIvi}3Nh<$3%&I6h0q#XM$?(5W66bLvRxhRr(1ibm4W80gCb~|{WySKA>QD} zD_9IaK;28oGu!hc7K|sIZVC^gu--b|Lc4eK-NoS^tY>YCK1#cG+f6l?x}Car55eK7 zNGK4T3WnpxNH{PaoTU3uaXT)i?ZUtzYE<$^#>a#HcqkI4yU-}B%M=MaoAslW<3Zev zn6dgR$Th|)4elt8`*CFL4s7Po@z${_!b0nG2V&(z6`K!hEz~y+p6&lC^v^Vmbqd^l zI6jACc6aA8N25>mF`e6QC z?!)JCoNkEg1~`5`d=ba|_WIzQePd^W;ed$h8ceiKa%jam{uv~uHt`|%%lHr(8{3`} zpP`%U7Sd*uzs({Wf`MPgL*jmS<1jBY?*h-_`2V@c6TO3`hPgeJc-%Sh{mQ)p5seY8 z@LV{7JcfK6`JW;WBj1kxrUg)_bYv`YKJpkJDfUk^a@0T`W3!L4I&>!ez=7m zUk5nV>-9m7uMM9<9zyPEq1URtJ0ZvI-G!XngCC-w2C$iUkKuF^j^7Xn?<64i1K@qg ze~uiF_A6Z&*!{>aBFF2Gl|OX-~f5z0|P@z zYrU&!1W%o5*d=Q|q{$AbZctx?!muiv@iEJ$6Q>c4QMy@rAaXYqL%XtQKt~Hk1qk7l!vgEpH zhyQynbRqU{@&dZcy7_37ms8)>=~UotJ4}1`zVq+j(4Go?+%

E9fXv{$lfUk1Vtt-WH^{-ag< zQ4FZm{UngoJpv>xKWTAK0ZA)=W^o%9`cEL)^S3PS29UIJ3fBW^`5ch6Qna|=v(VRo zq?P9^?(cx4m7k&K_|Z`5bT?X)y7wsLrg=$R$fWLhh1|3bv_r_ftdN@mAb1no zNrpmh`V%1O-=8bwrvCzx_WoNTH?2WY>V8=vH@yJ_0oeNwh1{fn$n>vQAvc``lKn_1 zIyp*U9Wr>C@WB~DZTaBVP>jIs{ z`A&hRaXui>GS0jjHF^SPY2^~o#{{>A^T!3cj5D{Ri7UfB0zHrOCj?r@nOBNNuj9;n zgGSeJmiACksK-LOh4}TJl=E5WI*|0L2LX_^x`n(JGAwk~Lh}|{vCu^ety$=K3th3$ z>lV6dAuonS`DdZ1g{Ccp?uyas6k`i@jAu8_Jp%EK9z=1-G9&JxEbRm08PTb(P>gh| zwik%!P^TCHiTDOl>Ux1N%~3mOp<%0*ukt)kJIQCE0Fcx*fY`@Qe%YW<)T-qg?uSN? zTj)6;?uSPFRKPxK6aZqcG~zG4?2ATE197_=y$r;bG9nb;~P zjdanzc%&D%&NefFdj9fdGmn6I)WJLj<_!mP8H^w1ZLM#Dal;GA)c^HDjG)GUzUYID zos>+R8C0Sd0@?yV^?%LaXmx7*=L}vo&h(m9pC)FHtPmC?*R&eYa(PODYRf60S8d-)dssY+`OPW!0?x1n+bs7&%ZVk2lI@BNrQRL!IZ#UaWId8dBb8n8T)TV-RMlG#(yko zPU4%fpv4-j`;!qiVrcPR#QJu62JN(ait)6qY5jb&sd)3_OPd!NEuT$Vz94D!piRli zxIgLVkF+uVDvQtF)KGPecj~g zFeO9bu}IQ(!AnjTQFgfKZEnVXAIk2G2gAqX##T}zfxuQGlfj9|RB$V);6yZjZY!Zs zY+GW8#|Yxs7!r(9G8Ug455?u6Atd$XBhKPc!v8Ch50`S4Y_gpF&161TZf26p3%Lp< z(OSfxoDBLSlL6-#)Hg8XY+%?~Jcwf0^sT|Qfd<#P+LCRk8(>5A-EhM)%5zEr{bNSJ!x{T;6roBroy@ZjB7Y--69hWEY-wM5&qO2o# z!HC6eEuvBQ_a^jSHSJ+Y(my%gu+^SHuNf1I$KxILO`aR|O{bexU)j~{n>iVQbjIcS zEsAgQEthX{&h@3YeHB;pjH{WMGd;~xINiv0eC4Nn<+E=IIGyag>FHtLm(Q((Q*6^? z+H697MK;TiJTGkC`)iPj=%6A7_UWfCoBA`#@O(2>+e-DjuEPSkaD7&N+)(WvT=r z%oQ%1-6h3>BTRh&k+1xuV9T+WWr$~{?uUrW*$uYYsoPMWy`m!M)Je8|44lb1N0n{n z%)Yw7%>}j}gbtUp91ziYdFnVI0w5?RKyhbf>I7KQaWepdGy5kPCpcv}ju<=yO)j%H z*JiNz`Ks*gzZM#3%gV?ereMA7x!Ce_ale(llR}%b$EYfMu(V6a=4WF?Od?-JPO0hd zzXmx^&;NYBi)p=ZzMnX8g4f(T_&?G>G(Zlq%Df$sK|{Y8YdRkp3Hb*ip;V@rjuldR z)~g%I?U5rp+af)@Cq=yBMBb}sv(SZfKu;v|TDF*R>ti=lqG8i|Sf%Ibja94Y{3ZN! zkUv{Urne4VulDK&_JgcyGj_JAUOkgbrIUv0O~>;2R9qd`4KS^5_^@yTS{FVe=Y_ z%qtv@x3+t*&yJ}rVsjje#Sf`1@q@|up^h=Vm`%W{tmO+r1gG*H3HG3H&`8Euo*0{8 zE)><4eQ8}rYFj#$J+w`Zbi#;b)Lz6j9~nr+4Lz@q7u1ndz8FiZp+Yf{(jy$Fh{i+7 z8L50SGUAPdbv=y+A;8u)_YVA8ckkE{8B1j&K0RO9k2xTsvoEu=jq*nPqG64ALkD9< zE)vWo4Ux@IJeiFdDLs##i<$hAlWBanhY%vF6E;jQIe(9W?x((*x5Pg1_L~2`D*NZU?8A*!~S4kAlRdYw7~E{G?R-iA)?K6`MOc7{UX{x!S%d`et;DpS>VHcSOI$= z`zEMwMLuXFUH!vdVJ*7YP2mTxKhGQgit-g2?hbi}{M}0?Y!sℑck~wAZ9`i8aB?Wns2kR@%^-JU6bi zfi-Ct&dH8{*Fe?WY+Y&F`GrFC4`gyR{?;OV5BLk5-HW|c{;S=O=v{QNmHROZ&r>e^ zg54|-Q9n_M=WY;`_4)hJD!dPI`6&Kp1R}Zwdb~H`Tu|aM;HXe~6co#&bP^PMN$FX$ z{(@P58FT~q=Rk3kDZLMR1?Us(avoPT&s$T?p)eQ^z1|>{)%op0;bqn^0-3bG2g&IR>lcY|qLE zW1f>u3{aS_;{T~cay(W{7w|>Xu_ZMg*Ry#&y+y5IL&g##nMow-iE{X|%+!%&7VGop z%}}_fjuj)mfSEs>Nk)9bfZbwdd~EQdjU7$3JkOmy2$| z^*$fpd-t8sz$QECqCPya7XsajCw4cW2k_)myo;W~Q|i5DqedhcyC0+q5a+-}mjiu7 zpf;eZ1maaA+wz?Z@4+s*35a)Y7ag_rDz+Z)i&F0%Al|uLbRQ63`MBs|AlddbknH2{ zK(ddwfn?i%0?D@T1If1QFh`|-Hvq}DJwUQ;Kagx21(GpH0^wbNeoMCAcWm@Dkc`2z zHt&x>GLqXc`=#Y}AjvxiDSoJ(H<3a)Nbv)&U?PS70K^`wq0=T(=o}E|18q&D&{|9j z9@`pPZz6?u0P)DzP`il~@&oZW*3f{76q>Mkhiu*ykZfBvkwV`Fl6~A~B88p=lD_=P zL<;>4Nc#Myi4;NqNTJt&kQ|KnjENLFjTeZ_`Ku;U#CH_W4To4c5^Y6YqD~v()nf8SZIrW7$wpV2 zE5JcpZM4fqP!k@=U4(sc3J>@VZe)87I%=cu z0kIVaZH5ONAqVb1=kI&LB&UOKe6ItlEv(JOfj-!-_@WYT$azi}TwXnrQ+-1$M&{r< z;x^INdYC%gP>kE@5YQ3}T782oV&LHYidSuIIc`_k!|MBF_TA~&X3H&5eV2?$3!P>> zIn%Y}epHX)FEhZhpWy#c4TtZSts>)d#;Sr!&J`SBvq(Jsm6_fi5rBrfwYv0Ss|z6B^c6!u2Fd`lMM zYq61-k*8=h6dvmLhX=dx?b}*g^^n&W^oPR!K;KB$kiV#tF@ zBnwZV%QUf0x%KnqM5KXDrxy~Rl3w2)7JF`7>0$vYhIhY$DzgTrAlpgt|k z_ePuO~b)J-%`G@tTv0=Q4Lrb b_Ec9m-L{0)s;0sYRQ;LQM6x@UPtv~t4Wn%x literal 0 HcmV?d00001 diff --git a/x64/Debug/CTdsConnectionModesEnumVariables.obj b/x64/Debug/CTdsConnectionModesEnumVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..29af44638cf4746dd15b29517779cc248832bb5c GIT binary patch literal 9345 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¶5})bP{Z*{L%|b%u6pHT&p93Z&R3hNU-)?5oDLp0_gYCK&|2?5v0eq=HJ1Mg zQfxHhi~0D8BFt|RV{yx-SS%bF9SBB-yTyUXSGocWcMtgo#=1v?-8}>TaMjgi4T)0Q z>bu7p;-y>T8X_f);zF{PT=f-XExA=M9lk&)7>)#o`fJ8p>bvTOvASU8I)O*8*a^$P z;nPliIhHo;dec+WQNKS@ek!Ol&o%PlD*2k}YsG91Rpzp)z%{{4d^*(=w^Q_gNR5p* literal 0 HcmV?d00001 diff --git a/x64/Debug/CTdsIbopLedNotificationVariables.obj b/x64/Debug/CTdsIbopLedNotificationVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..6cfc22ebc13db5a43970a262365c6c6ccbe8446f GIT binary patch literal 8634 zcmcgxeQaCR6+bU_n&7sObbNGtj7OJ35ykmvR@%TMC$<}#I<_0Tp$vD9V>^w(u`Szy zXqtwnP*g93F$N+++tf`U!5?fDnl!XcA_KMr(J?e_8h>nBhsIV|1?5ZYAC8`_oMy}x_D?z!ilcYWV`sRteO$8Y^9`SZ^c?IKy6<@9V>!`yt&M)Z_I^!lZe zxDAa;J>$+)dSd2KS42{Y&bAY|T8X}Txuk4C?OL~M5!bxvR*QGG+d$aC8yOKv0Q(r zRoEruis@we-n7nn58&fEIdXK6vs_Fh4Jo2U#O|$4MBhM+xvaw_<}2eD6+~1FzNW=k zr*ZuD`{quK`xdfYs;_GA@+~jLz+JZ6kE8hJPTGBQXYBXC@0+)GE!(@8xa{eY%mu6l z)}Z>5ulmkO0Ty*ee=|5W|(ZALVry*s|zPsb-9(JeZnrF3W!NERbMaPLM!K! zuiEP4W^;C8v_79~$F)BD&(jf2 z)$8)jdk^^LRuo?q?Xp*AA7QDgw*bjS31{J5g|$#Lr534l_z_9PaEFi9AnS2q6Fiyf zVPSNkb%lx5!_RQDeE1m4pa`2=?>~3$oUqDnZ9VtCsW-PG$6J8Y)nAv!Ofks@{j_dqOM%-@Z@q7)m8_(x)q%=An)QO@LZ z?tC%b7n|MLAM^0u8FNQdCI3Xe5J;zj`Eq75lN4fOiDD)(kxiGJ`H8z}rseWZn5Q@B z?Y1^Ly^d>z{JC;EyKVGFbx*#C4JW4>gq{7WJ3n2>WYa~}olTTVnWQ?IFRF<`A*&5g zQj0UWTqbu&&07?=t7GY63683LJ$=2-Tb#Y>&`c(q;%;AWPw(z{k0=gG-j||g6Q$&I zin{&T%mhza?at-1`9pcNTkLxSlQY?@+8s)%-S;Jmxq%GkQ=G)cSyH>F^QoC^dY~33 zwHtvzKrN&_shYsO$=+Lf@W(Krc8lG2B9XjD?M_amllKfvMSFPCC_Hj}$&yPWBvVq#j|gSeJrBbj6|U&>FG)v-)zCXrPm z<(X6_ALBU1ygZdcF;hy%#@w-JKA(j`1hBW?xdXr6-8*)~CNjC0FJCGjKr)Ev?3>=% zPo-kAX;@?K$W)?Oh=mI2qDYrWGMz)l7dRQ6w6?M_Eg{)o0NzSg2+8S}f?< zPak8*c3cRXC?BEDGivsK^4V^D^dW}q;c>OXYsSTft4koFFX3^8?+09!A+!T%>-9MQ zxR~{Bh8*W4LR9gi-LZ<^YU5#CG2ZoPdAu7my(wV5@IJ@Ifs2n!T<|zm;l1xNw0xw) zqgCbKXz|EVQ4r`W(XK~(71~W`uR(h?+ApBxqw;lVFM{1IXnB4rF1_s20K|||vH(}O z&qWn=t54U#Pet|O`oUON3e*eej5W5+)U|L^d!3*@4}G3< z8sCL+E4b#hzPo;_{$f1=sb5d3ZRZWrH5Tb1bw+!8cE&L#7u`+WZ%M7yI{!@_XsnZ3 zU!RZO*9XzXJL(LpT3^@G`}KOhI=usRdU{{i8%~$w+ToaYGm6yp6^CuB!`Aw|62_c2 z+P7}BwJTpBC9KhZFX(0&i3OdftmidjzNa=YK;ipxvp_@%wEAAabUl}u&GR*viq_HN zWaj-hcoq9Dw)4N*zd1cyz%#>uHNL8<)2(p^J(ZqJ%w)?r91m>COeXWWQa-!IN(PTP z#q@M4wHk{DoL+@9-6+o|<$4js@dPB)2_53xkcGP-5P4H$LB-S(Z;^9?UlFMUT=A|rTXBj zEf3gjZU1}{eq5M6)3M}C%Sy}94g8;@6>G+vUH4k+6R=<7TQd#n_M>EnZjdg!?8CqP zOnKCQP@)X=|={7&Ok2! zNsSjZnw@@Q(0*&s{-B|D`m2H7HP9yp;+s?2YXjnO?R2q*+G#TozZ|ub$3V9mC<=sg z13Wzl

sggO&s06|>XhK=?lg`YDj+y@6Vg?~=y*v_xY-Hwuk|25kyRM(7xj^lHiA zzGiT*!M(z_i=DdANPFEtQnw5wbssRe-!`~*AQ*yHyM`R%-a`kpqi7g8=prNo&wM>? z)R2R20AkDQ=_U<1==(rC^Y!#Y4LQUsNOVB^I~qm~x&yE0r0!iBa?oQy_(5(_Lk`-8 zSF!vyc0Fy^kb|BElDf}o$U!dx$#GxSkb{&qU9MF_4tfO$09p1|tXc z14*BEX~;oYAQ_i}h8*-~AQ`_C8gj4^*yn!%{*RJqn}K#2$OnW|9^`lj!8s4;0BU~Q zuFyDYRiIhaoTmyMK`req0(A-6QPf)ndIt6N0v$trgFr8!=CKu8Ld_Yb(3`0F#lAwP zQA>O1XsE+Ls)3FHNe`9`+8YKsVW2YxYS;1|XJP(Q#PhQ$yz^U&`74oF6(MtpMaXITLL^p6S+elCgQIm{Z(Ne)N;2lmU&K|T z@KfwjjRFr%-;}Tcz{4ffjpbTiIus!z&{sei*C-rWqK84@oDuO6lplcNvrvAl*ui5UogN zA1EuJ)JFFJ^0Qct5&`6=!Ww0Qp;n}w1%smB7tb|Nj)SsjvGWg5#$kX(rT8ak3I@fQ zs(mADXBp)^eOOCt*KbP_`E2@Pc#+WJQ8~A2r2`sG&x=hZ>Q07hk~f|F>Yu@^2Rn+7 zM%{5YzjTlATXuZLD6MG((^<7^D6rSb_Z%K)n@yJ|qrX*Ji|lH{>|Wb2^{>C;o;!ol zJHy_1c+kB!-b?Z5P&nX^MD>2d^E~@H7>W3YgV9jq(>`-Y2KRb{`vZa1x&Fxcd87M- z6!!=BgyJ<9ddTV``W6>^8i%R9S73Jn-r#W5*Gy{A<7p-`>KzGGG8pvl!9%9}su2hw vwM?)6$!+0>!g$ATX2;=P$Q>W`x!O)G#G0AA?7x3HaVR~MD5dE?*jpJB literal 0 HcmV?d00001 diff --git a/x64/Debug/CTdsPowerLedNotification.obj b/x64/Debug/CTdsPowerLedNotification.obj new file mode 100644 index 0000000000000000000000000000000000000000..290d7a5601264cb5e7b87ed506c5b19b1162692e GIT binary patch literal 5221 zcmcgwZ)_Y#6@QmI*Y3KZNlDTqf_8~aR8V?8J8qh|Q2BB`XD_+<9N)z_)s^%4cI|Ak zcYEEvON>;&C=}Ik4OKtEhe}9AU5KlYve)Hzdn>TO%?Ck2_>7u`#f3Ku(B2r0Gv}VlJJk0E3h$x42exnpV z0H#uGDykdP_1T`RloAbe5^V_+J^3jq*$t-Arh`#OFV>2_7ST)o2$8*sR9$9|8%1kQvDDBa z>cUu~_YsYF_An&rpB!(_x5r?g7ZYE`<2|mO`*2EIvU*f)A=0B=xtK@ol}O|rkaq4` zL_7CMKP>PnJlfcel)=1U!{sx2fnZ7JFH`W=w=OS<#z zb1DL(Eq(S+La9EaE!233N9VMKOWI;`F12tmweUybcd(!O4%qxa*t{gF(Nz^ix_)Yz z;!`coOg9`;oCK1tg&agdgsXpmBvotTX;m>o7T3mt)`$b(dxQikt+MfI_2lL!vZ>E%McDZU=hNC8|qU)L^b;fqoVzp{{c3st}S1M*@R<#2S_ox$wZz`NA^*tWLCZAS&#m<~AmQJg^ zrISYK^x(8zujsHUOKwe6!6|o8XAf#89izzg`t&SIp{VvAvurs7dn~hZdXJpSS*KW5 zM-W#xf7C2FwrkJS)CtqA7cDhgtLvtn=Q!n)Jd~fik{nMbhetEH)JQ53&!sY> zg>tp9S{;3c9@sSHTUfz2PzF7-AHTuE&o1+$f+OWH>J0GP>+>Ty5l)&cm32o9%laDmzQo559ZY8uM+z}&z&_aBACaTui;#~)O8E0ixZ~B( z7}mhyuE!1!JV*(BJ8cYig?184iTqeG=J~;uk{;EKnPT0l;pH^A%bY3M71y?QsR1$S zxW+Ncy56p;ic3PdO-*^FKEJ8PbHi<{IHhGm_e|L;=%!m;VLFo@9*rMOW_PIyPVi2D zsxcadZ;7(;|62Iykt4Z7aL!gcprVmbrU}^buH8#~LmZ{8TW|g4=b@KUI}d-qZ$6&+)eHaHitV@N0nqM6ef!o&UxH0u?GZYJ z9G^!(FC*u>dW3$2ocCLVc;`yJKR3`FplwJI>cDJZKLd3GVTS{41ClKs0^*l!grY#w z@&M3gA5ck$i?|Vq0 z8$djwZo2Iug*G9u?0q+F@sL6TKs=6a>_dqZ$^fy?-IVo^Lgj|+nTBi;NVff+hZK4R zNcQm)4=MCpAnD8RJfzTdAnEfB4=L1%&nMY$w}%vp1Ia#;9#UuyNcQophZOn+knH0P z4=MByAlb)1J*3c2acmJN{q}i?fTp3X9WLA~_nCu^#&uq8A#7Pi)o;;rqJzKLJaJ!l8>` z9J3&Czf2)gg*BpwP~uZmN?QLnaBtxd|8dw2)Fe+Q#}f7`91^gp0Mzz@fsD0FykFpbM-3gzdKWE{EDM!FD?@U7h^9<8hoO86&$ zPg3XKei2+sc5}!*l9G{z#E0+H%Rq(=R)#e!kmi(;x=oHY&>U4#Au D_`V?5 literal 0 HcmV?d00001 diff --git a/x64/Debug/CTdsPowerLedNotificationVariables.obj b/x64/Debug/CTdsPowerLedNotificationVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..b4b3dadaf48f7fc82ac3df786c9b65496cc52907 GIT binary patch literal 8548 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 Gr~d*p^x2L8 literal 0 HcmV?d00001 diff --git a/x64/Debug/CTdsSwingEnum.obj b/x64/Debug/CTdsSwingEnum.obj new file mode 100644 index 0000000000000000000000000000000000000000..40a60a0b95ff73e142ad8c6fc5aa82ee293d4788 GIT binary patch literal 9878 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CTdsSwingEnumVariables.obj b/x64/Debug/CTdsSwingEnumVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..11613d768d81fb03473164d533a3a068c40f9c61 GIT binary patch literal 11563 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 OM&{BpxufZ7j(!Um@+8*) literal 0 HcmV?d00001 diff --git a/x64/Debug/CTdsTongEnum.obj b/x64/Debug/CTdsTongEnum.obj new file mode 100644 index 0000000000000000000000000000000000000000..456599901cd06760528a92bf859812d14c76c423 GIT binary patch literal 7258 zcmd^EeQaCR6+ez$n!V7GcCC66ZB`>%?j7gcf-?j_sswZ9nsD zmoQaZQ23~qWlZ~Lh>eM9Z0tiw8`9VZh(Q?&e{|4^A+(8UMPpMTm7sLmD$$Mo&b{|J zezB8QNc(G7dGGx0Ip>~x?z!h)-*=OIsFD8imA4XqUq^H!$2;!&ao;E8PFUD;xA}?&6TSfHGwUXBa z(nVceZIe#DR`6RdS!l|sdKKRMorZI8hL6%(7s;~n--pBnYgW?FQA+0){mdoc>>oX2wv z#Xo)0@7X#%#3h%|MY~<(HIQuPLJm0Tm z#TwbA^Bprre)?=fY4eOxoIdL=9-ZF+pWcUQp%_I0sR>t157NIaSd1NhW1uw0_`D z38m6rJ8+K*Z4Mlxs=&e0Z9=w?2s2{-{4;VkXTSeb$T>4UeX5;Z)PqPh&h^uHe$YVF zLoSiszRu{NWgfsI_|SbRCX!nkFd?lZIbbS7o#zD&GO zNGJ4h)6(Pld?uX`eHL`9l*^@a6T0bW*s71DtOA_Uw|KX7wB6d)q4$*1nIu=Yba*?q z$GoCwl(;uZ=Nl9yvPo(WWYS|iJiR?MyfTF&K+!(Bb~6~S$!wsT8Q?i6P8&p z$BX(%x=@N|^l-71Oq)@TQ`F$0+KBc_=_gD_ynwzjSK>)5_^YjiA~i~7w% zaW5ubL}yR-mTgq966XzT)EC|#xAM_YK4pp73@1{#xRo{w(cxUWcwaa@k&B~CMuA+#^@EC9?@(aG zi0m6QXoG_v2@MKSY(ZgTT?KSH7`oFK3P<1qUE$PGve?c$d+BZCFUG=i(ZD4U4ZeCW~ zUPduayc^G_YOjf#msebBja{HCoTytas0Z77xrEyzH*p`T@EYQR<%O+BmfMM@cwOBA%KEP=J`>)@x$ts(ULc~2 zpvQYVzAdKi2E{ka)Gt9-gT4m(InY0VVyB*ZAM{et50#t`TFh@i5MXm^HR$D_*MeRH zdMl_7x&w3rXc+Wb(0!mRk1PH`(CbkDBIxy?4})$6{U+$mpr=7GCNUn^s}y_u5VK#R z08eq9i!R;^FRy|;Z;b7FOWKSjij(A4^1X`Mf0lJl^2ZVE zU%RCJnxEmb4R6`2g&Pmh+O;3O^9$EE0_%4@+A-A~dhV;|-bcEfcQdSa@;&p>>CeL^ z-*$L#ZV-DC(BnY-8SkO*;f;L;=qTP&??eTyz=W+AQVr-zfz|?DCeW2Yy#IOV1|Z%w zJ=6ijHwPZ#9gBAo4~+mx%Xb4^EqDbWY41xw(%u6=*dx*65g=*rF(7I02_R|jH$c+f z9FVm4Cm=bZ6F}HWVddkB-WA9>+2Rf$IU=LN8wA2$jTTQ;c+XULZv){E8YdLeD2NH; zIcuUpg*18$h&^bc?CeODp$3ncwJrjSPG zfTVwXaAKs!4Y$bc;$JEq$XQsMiwiRLQ)U4FUN3OA zqIM8M$*H~r7bA1=EqIWdR*KSzFoQjIy9BJr8C2hqix{~0mYjDkXBnf3TGH1ytrH_xiGq)|PBN6rAtCh0#)o^}a;n?%_*BZ_>vIF#H>-5)fEO6e2#=_X|2j^V}=WF1cba1`}&M61y z$Kc2!W~b`^57UR=wo&hXUb9V4!cLdnnM|6Ewp0KAU~^P1Iob zfDv@4+FzaGn|XOX`-6Eot);$}mupjf!L^*8vTb`Tzmw|+z#eba_i=s2h3{fqXvglg z()i*jr0$7j(giVJzR%U`_(ZBFUP#e@0eS#aD*ylh literal 0 HcmV?d00001 diff --git a/x64/Debug/CTdsTongEnumVariables.obj b/x64/Debug/CTdsTongEnumVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..8d4a690944033eb2e2d32bc14afc3a83066e001f GIT binary patch literal 10576 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CTdsTorqueWrenchLedNotification.obj b/x64/Debug/CTdsTorqueWrenchLedNotification.obj new file mode 100644 index 0000000000000000000000000000000000000000..6864521bb4750914f3fdc0adfee7abd0aea59407 GIT binary patch literal 6220 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CTimer.obj b/x64/Debug/CTimer.obj new file mode 100644 index 0000000000000000000000000000000000000000..9c425890c1ca9da2a80ef6434092870fc6f95c83 GIT binary patch literal 11384 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 X=<_T3_9*)HkiJMEJ*)3eS9SKkXK;c) literal 0 HcmV?d00001 diff --git a/x64/Debug/CTimerLegacy.obj b/x64/Debug/CTimerLegacy.obj new file mode 100644 index 0000000000000000000000000000000000000000..64a4315514f88322b20d7ac9302a7e87434dcf11 GIT binary patch literal 4691 zcmd5=O>7&-6@IIwErD`U$+2B0&0%3MfLk~uWeZNM1_&jR(z2CgS!4vKrAtxVm9+7a zOYD-4S`@7Ur)gP+fDj-+4n<<1D3ViP6amu2XrR~ylmI!Ty)^wfxJ3)Ng@Gnc(e%(m zzc;&FE@`RKA%_k)GvBqP}}w zVi=u5@x`d7FV$BfS(i#Qu%GDJ5Ye(H2a}}I&_vYMinU@}is&Zb^Dwgi3oh*dx&$Q> z(Y0>56zJxlE7NWh6i-B}-Ewg-uR`v7UG^ZS*?OsVNpI`E18}p)9)*V}TC8scfGl`JqEAe(;m4!ulEV{^6f>nWkwXW5sIi=n|biILZJ^()XTR* z>g9ijzW)!k8H#L$B23&$MONB^mFatIdp3R?NyeFHD z`gyf+VNPw#RMlo0H8G$z(urTN`M0@wi<@iQsBlDKfc`l5YO@Z7(`us@iG%hiHW%K_ zsA}U~*iti%&GE+XJV*CEDwrMDo0znT$y@s3|G^Skm#`aqSw?lQ%YZ$xyL;b>3u|hl zwISmA1Gf`B z#&2%nsg|#|8IKA1uq?F+hgIjwFd!wz@^iNJ6rNuvzmUz$ znp|5x1-k5Q#93gWEiICL;7ofKYhHP zTZuB2nrj+#b zjXV-ZB3)8qBKs{BOBa<`X;m*>99y#L6%AJ1ky8^aIOU9K>_KhS){D&7mR6VwK_zz1 zwA@IYFpbK^6Yln{*u}CkiMTrX8KY!dj?S@m;th~x7D>UfVo^LUR>fu2Dx z@9a-{dVDUMPI1il;M4{T2BLHnflGjN5Or1xn&S8o{S)*7RJb6@r)b9+?V8|rIkYfw z2Q|*Nyu$0{g2YY{fyA9|on!C-(fU`w{}TFMJ>EAiK|QQzo%ixE`d85(*+!4gAD5sW zu0ui(;a>kKcnE=*Phml?ob!5imtQknfY&|uNfDGz(_SOTk#Tz*F|0zVw&ut7d`Cr~ zRd3wZYma;NHhT1~^ysz6y?XEU=zY|q*B<+NVfmr3yzl4I9M+o}NT)^*QbN0r?vV$i zLnO^@OH1s3C^6cR;VIhjW6XQN_h&A=j|u}6J_~#Ycv#byi*>VxL_K!QST0!=$1;y8 zU1ac>W9wy2+m2Pm3$wfpr+l|OXYKi1Y8xwdsfXxXDw_q(aH@BiK0BS79iK^Ok11ii z#`!khE({;$<3^8v9uE*A*SWq2Q*|^X^<$I3$NBe4kk6@Iq}9-Y{;81M|BY8%p#%J! z>>%%^Js4(%Z@CHw_<7txK9EbGGzq0YzsfhISvq|9&Y#|tUdTM~wUD zejr!lSJ+3skqy#&9tz`j>Sm5Xn)XnbJ_6!34$>bz6sA=W_;1l5nH~yL0tA*(+K2!lzOev19LLalvpA=S!E%p7MHSytLX#0dlz!AS@4DUWbcL z_*@(pF|S0LkDdkMIV5@mEnAl8FKAg;!hht>Hvw!l$r67R;8=7Q*5e|PB4%*kjGVDL z6!z#4jC3fEgYpNT68x?pVj}UEg(1jviYJp}3a>_%1ndX^1;0Cp=t(z0loEF}4VL6-jrEEH{r@aL$2PcV9+SkVeK{QIIp OAyY1{=o3Xpr~d-F=aYB< literal 0 HcmV?d00001 diff --git a/x64/Debug/CTongEnum.obj b/x64/Debug/CTongEnum.obj new file mode 100644 index 0000000000000000000000000000000000000000..45f77502f9561ff5f5ec1f31f9882422e697fdf8 GIT binary patch literal 8950 zcmds6du&_P8UNfkG~Be%2b5CEc7aSPUCE;jeNl!J$F1GwMeKx>xpN)cNlYEv^Mj@v z64?r@A%svk772_o|F@%JGfu;ar*#ouJ#s-K<454jhV^Cn47^=p8-#O==>zmk3 z#)qlVtP^OacVr9|sUmij_sw4gAP3#y4iE}}oKkj#xB zCN=J@k0%C-Lv=yPB|391(eOD$3oe$NHV{88X|2!2qlKs?MYN=fD87W~kxL}+LJ$vm zJoTeaxe)k;<#s} ztNHOKDE_DEliLoO$h3d*(rtniJ^t|m=WKFJNI&PFxSdg8d@3;hnn;JZjQg?^zU;%U z!fGgPjdfH<;Au{Kmka?VZ;27F@kpEX>!uL76JSI|CX-rlwV4+VnCMI|N zcgN&P=@j34mB*w`I`wJB#NpIrb+@oHpD~#dj@kFgv#8JWK9N)A=oos;n2w>6>FBvi zSg0NoX{$6IXPo2Fkri{%mo1ryGi=04Z1k^{HXf5UDolAd7G{jOmEMj~X=Aj+2IkEo zma>L-vbs^IEX^dxi`gxrpL~Ek2sc1f*jG2R(oEgn#Q^}Yxm^X99bUK+H zGBb{j>&(7HE)S2)^^NPB>NnLlnXScSD$dpQO^r=kB8{RL6x$!4Ga`zO#Hk^WN)B*r zWn-GUs4z zkJ|z_$C@@Z;z>DRHi*aDKs2_`Y={jfV*9oZWQyrHw8~n(Ae!J*erudPC=BNkQErb9 z3^5miX2bQVjLg)!R5HD9ogBNNTy(_Tj=bi>9m!ZOlg|tm%)Vs47)_bMLNT7qggH-P zABU37CG&}JpEn%JWK!r51Z--q-+*7!mJJ)i1IcvQpUD^cG3p{a*N<#$rhG0oXIjJF z;BYjT4R>V|IWd~SSRx(GB{TVOZ#r2x5KIoGqcCaDqQNbVgxpY>e93vb7t?DS?GW=6 zP?YO&-KGB5tdu-ly`iqo9lp-qj>t$hqARqTmMz(P&AAQ!*8tUp6O(g;=90GPn z4nf@0Yq6I0&xqk$;O&IL3D9dR#L(Isg7@7$zF;uY+T&~4)zupk@pN{D0^0-LmQbLp zQ^a=Ca())AS<{&pRlP}Q_Esh8q7Io!PzI#*<0sSUdbz-VplruSiL0i z`ZV+IUsqYQ%u;YgWodg|puZt=HTYv#MEMZc8yL;`!2eY1IDG)s-K<{~o)=se;?M7( zT)s~<#_Q1!KyL(n0Q6DN$3XeL@Nv*(==TKZWuRD>$5?L`f2;7C#-$ejxIjcH$g$oW z=$AkXpihAw0G$T?D(G)PZvlM^6q}+k&c~gg9nkkp&@kv>(0!oyg3ib8TF9~84WMlI zYEZU|=Z3I*4Jg~)2Fi8=pllb<6k!+n5_a)S6Lt}gu)78_R^jIz7v5^E7D&7ckMXk! zbs=vmJ`+ox({zF21CMc?iz%-5rBOkiD~zprT{07i6-M>^>9@NGG_2}YKdWx_!~Rs1 z!-`sDN&&0iYUP**{3ZC;sXE)^dV{LB77K+;x;vN1=OeAy8tuyz3lZLsc4i96LA8Or zHk8S><&ylhVSe(v5~#-k&?L$+Rkz~% zSk*mf<#-nGK%!XjEmrkXe>+R?^IO4HlWB;u9x|M&-5yc`G1yk&s&nIksipe->WE0EO4Bl@bcf@BdtQ zo%DcS6;BLCi>U(k`dcqg4#qO+d?t0d>0qOcTXKn!c)VOw7VlgmWm-mN%k##+C)8F( zOD;BpnZJ1?6^SSF*;%T)+S@u?I()&)O#`F+b2ZaBDu(>UlBoB;^}u1}w1^Br`Jx}O z^={WfF&5muYIZw6f*o7;kE&l$Ul143`ttJg+9tctTNwEDx$XrEcOQ2jUvSrn#R68} zeQNn4y{?w{$$pgTt+17J*FftzQWa}mWNF3JT131)$)e+*skhRW3wi=4s&NgTsO9VN zs#E-xl?#6<=%foT{NT+eUH1f5?L5*n*3$LNU1$D@+kVasM7j654?lPxPeJk2cGC`^ z#lp&@<{iH01G-4?z6iwkmYY(#wE%Rn;C%x~>YD^w zCU_5Pxu0tE7a*zcG?3Ki!n~Gt&jphDmT2B3Kr)W614$c)fTYh4X}K3Q`ZJKU@g9)0 z!Aq^QQ3E7xTmmHZT?Qn5-lpYl)aX_qsqZ!*sqfpm^(c_kcfaQS2uS+80)s4VtOk-k zZvv9O^lDT9k~Y2qBzuejNw2=A<(}5)RUp~p4bA%#ko4tU&HD$C^yOt_13%b)RUv~o zUi`rGC}a>v$#!e$kU|FC2gKgj(t`>a^a2ojT1(RkVV!_A{J?W7WYAt9DHm7Bpiv;H z?-qp&`Yw>PdsHEVp47Z&H19V+vhQmO8T5A`Y2#ys3~I*O$jf6bZC1#jdw`_ecN8+{ z5g@7WQH2cpC6M&xghB?rt$BadyoI=#W#3wb3|a#uZLCwspg0hI@P*Hf7$JWkQf^uy zgI))c`rc5;pffkg{SXKf1-!=;GU#_ea!&qU zAw%qX`2KK-drhJ>q95}-8u8;tw(iwvRHH*09nt7vjh@n|U#(3p8rEo3qeB`U(P%Rq zmUjIb^=mY&(Wpi+CZenoIRP7aK&t3Gfq3`Ad8rb6JBc{&vQ@4(+{$kzoYN{Yb!#0E z=e~+KLlW_>NA_(5;?b(2W{o!MR`!5>aq&BwLiYl(2QGRESGML7Zwss$a>xPebKxY> zJ~;)Gs$9Gi*$Ct;tbvOQKC>+%KC|Tgo6W%+9^L2Q>_KfK#BG_o!TALolbq7?Sk_wQ z;uG06AiF4;5OX-vDwlw^08r_9t;oBJPi(~zpF?g+*EovO(_4+eCoT%<)Wj;TP^WZGbi{S7frLFm8)cEYt z=DdlT-@)N$`7sCQ6Vy&RIOoCjmH69wE=A3BaMq&6CttSA7SzTZ9KPrHaL1Op0X04} zvN=Pj@ez;B*$)mM=h&Rvz>!6aX~_w?xMN)Wt;AVMPtUO+V%#}GmbS}bXw`efdK=E# z4m+Dlcc_&=5NpLVH=h+YwUupD+O1NgC*+NI`RpXfhb4W{T%NrCu0Svp=-koQ(i3QD zZTAJ){><-d<)zAeS}QMTe^rY_f}x)FK&ZO~9|^7|N41%7nibifOBNE5eB#TIR1)s- z!9eMUbcdTed}Y40>qI(4gG$tCawDppmOG8kwoT6J24{7>v$`2ot*FV_w#8YU(K^Fw V)66=HYt3vmFcKX~v_|s@`WNc~pRxb| literal 0 HcmV?d00001 diff --git a/x64/Debug/CTongEnumVariables.obj b/x64/Debug/CTongEnumVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..751ad6bf8e5c8077bb6433243d7e49ba751121c7 GIT binary patch literal 11842 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CTongNotification.obj b/x64/Debug/CTongNotification.obj new file mode 100644 index 0000000000000000000000000000000000000000..05116b4d88ecff689433da2453267b48342725bf GIT binary patch literal 24406 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CTongNotificationVariables.obj b/x64/Debug/CTongNotificationVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..f7c1230b6687d4daac2199933acf271be5455364 GIT binary patch literal 9934 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CTopDrivePanel.obj b/x64/Debug/CTopDrivePanel.obj new file mode 100644 index 0000000000000000000000000000000000000000..6bcc4a6f1b86ec583bdf0855b0e36797ca3c9acc GIT binary patch literal 32193 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 VX$7JD3pl^>)`k`FISrk0`XA>rr|$p& literal 0 HcmV?d00001 diff --git a/x64/Debug/CTopDrivePanelVariables.obj b/x64/Debug/CTopDrivePanelVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..ec2643d3d8633531f6f2a33bb0fd8312c585d7c1 GIT binary patch literal 6185 zcmcIoU5p!76+VvLF1_2T2`B~1-w<57rNKX&RnlEr)xR6N_1cc@b$A%$j%Q{!(~Lc4 z#@>bssTDz$LWvYrDyn!uK`Oi;fy4s{MU<)tA`k_hK!T?hfeJ#b9L@!x5U@*nwyq9$bZ?Z` z5PWr)9u2)s>;_6hlKvvl^KPnFJ_ajA4J z7B5|XT}Fk=vDj}=N@w4RmCjy|J@@a@i?R6SSe(eqg}B>z{tgag-o2Bq5h(YEy1CSNNLsgS z^iN+J6GvC1yww{Rrfy4lQ*j(am9{KfQU(LlP`PC(chM=sg8%Gwr)E(KWRC& zoK74|q@~=*Fg3bePN&kVofH=a>NDCc*9U4(gJjt>y0lU$*|$t<+me!eo7T2QrYR+B znv{G-vHNQVuE*ZOeRiZ|&(cPwzBX}>ltf3MAE&5wZKANFrjMmCj=NHl2TNB`PfJPl zl&+p$>sq6}hNHT7&X70Zq?|R4W-vTu>k74N-ECq~QA(aLE!R_rO{0JMu)CAnw$hW< z(XWoYVW_s{SX)D>Z8#&vl$yhlW>_-$NiNb-2Dahoayu`#EX%|WO@!%{#1Z^UuO2xf zca6SWvYg@PF$TDIPV|nhfMct-bgP_io>J_AT>Rq581(c$MpxeI4{gij!Gm{u1k=`P z3eZJx6SvVzLx_o&bG3S=qw5apr^ICNm zeX>!k=1aF_y;W$|YbT2h>YSa|daYh;WLxE0bv?W3E+84!@wm@VR%gt& zS%o8W^xW7K^PIC&vtF(iG2IJ4N3=v?0`yFTT^E1)JL@M4x6zAyIKQn%u}u&BRs3NZ z%H;}PccoP0Hpx{PUsD2MN(6+x`?z6s)ZrP3u;>FUddCkVbyx9((5GaF#IyNdlzHwy ztLa_%a)81$mZZe9k?joI? zp4rh1XAl^=Rw-1o8^z`!iQ)1u(sG567hKQC|JT&uZupRAa<7+jA{JSwQ>I&mg9op? z_2bA(<@=v_CH;K1cIoRkmT;Tr$au#Y8(h8e-lI6?0{&uf9ItnA^egnk#}O^Un*uS2 zVrlaU&MgSUAcIKaTtOfPUqSRq&b=TIgG-1GaqedVF}RNCQ=GdY5Q9}*V4QQ03B+Ir z(F2@&Rv-pHLG)?P{Zt?Z|3LI0=l&%SgNLzZSmIn#AO;Gehd8GT#NZ;L&v5Qlff&4v z=wZ(NO&|u+omjnhgId@th2H!?>Kj*$95Q9G;qF34?{7E1Nix?Xp;oQ9fF?bx&M>&@l zh`|Wa2RQd7ff#%b(Z@LV1A!R4iwJ`PZCn$G0RkRF5xyEUjqi`8F^7Qnh+>R+hh?5}eB<_5U1(>Y>^UVPBivV*iz&wcCGi|FKU|tL` z-w!Zv1(>@qOr}R(3o!iv^Q{2$J7iqpap*hQq0yreI@_5R|EUhW@uQK8c*Ujr#xvX5T9aHhj2`8ov-HGS#rQ-bgsxkpxhDvr z)qST9A^Ldd3?Wp#G6};V%tHMYX4o#i(}NHb3Z56t=;WOc%uw-)eRt-QGl39Y_$fdL kJ_mpitr#L$N5C82FN&o-= literal 0 HcmV?d00001 diff --git a/x64/Debug/CUnityInputs.obj b/x64/Debug/CUnityInputs.obj new file mode 100644 index 0000000000000000000000000000000000000000..769c265bef1669fd1338ac0410f6588856f9034c GIT binary patch literal 45394 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CUnityOutputs.obj b/x64/Debug/CUnityOutputs.obj new file mode 100644 index 0000000000000000000000000000000000000000..73bbc82f664a902db4257aea9d8e524cf7830499 GIT binary patch literal 53584 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 NIyQH$>=^74{|zN5Kj8oX literal 0 HcmV?d00001 diff --git a/x64/Debug/CUnlatchLedNotification.obj b/x64/Debug/CUnlatchLedNotification.obj new file mode 100644 index 0000000000000000000000000000000000000000..7e4704594f26e6a0f0bdaeb49fc8dd0dd7ede04f GIT binary patch literal 22265 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CUnlatchLedNotificationVariables.obj b/x64/Debug/CUnlatchLedNotificationVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..f4970c4fea52ee3d907ff5bcf0205bf48f71e3f6 GIT binary patch literal 8590 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 XW{y883uW7(QYlj@Z|LXBj!yppNte0P literal 0 HcmV?d00001 diff --git a/x64/Debug/CVoidEventHandlerCollection.obj b/x64/Debug/CVoidEventHandlerCollection.obj new file mode 100644 index 0000000000000000000000000000000000000000..7493b24bdff43224c1e9d77c84912f44280e7df9 GIT binary patch literal 25982 zcmd^I3v^Z0ncg?|A~8S-Di-a-BM-$&LmoT=qFzWYo@fY>1R8B>5^@7c$>XlvM5*<0 zop@c`9J@onIrkjD2q!W80TAmb*!CJ_=&8{51vL;ijG@B?X$x*s3z5 z@hQQ(0wl;9g9Y2&a@)aQb%T&m_aG|_7DU`~wFrCyatCAqX2Z|rHb9#O;TkvPVJ zLj~^S*bu^UE8W7-4|3ft%{{lasE|VdqaHbym(L1%x|^D{6l0Mb#_n6k*iP7(9EuP9 zfh^6Ui7wwc>&VbInAk zT6>uloU_;0d+tam2q|`QD!@3L6$BFhmF`y$(_s-m|KK% z_xfhuJD#s2xeOCOg=iMPC*t1&9*iRm)7n^P4!^wI9RBUKptyd!+*~mJ$MJD<+F=L-(!eiY!U!_oC% zlZ3f#DA)A!ctP@7aY1-9G!yyU?xtVJCO8@7mh_8MMRq5@V)1HA#D4}oM&d_tr^>Xr zKRz_`{>>tBN87EoIR}DVGu}U~ev)}oaPm;QEHpKp+YW^yU7^+eD7h1Pyj+iZT@gs;%F z_EXOP79=VEHKw(k*rkc&4(Od2w&Fx#|JAbjOsvR+CAjPE!91Z|BQh4+<$1K@DrKP^ zS9bLv*{RZhPK8xy`j?yIKax7{k~$N0=&ZV*1v~V|DCgulbf|Mpf1Wx1jCs}Y%rBnf zvayu1&Li74Ww!0BWY9F)C-?K*tYuQa-BLfI4*hJKrdRK-ZJ7;7gW4o2B=1ClucZne z|FN04gDQAHDnm4_GOEki*4Xw!u6gBQvu_Al#TyY1{YW%*X7!6!^@2%4^bF!5vVrHC zmXCMAE036chY`EKRm2vgU!(^1P!Z=nx^*Ho~`~Tq`jJR?L)3-*`{`MsyN$PM_eyILbyzdK3ZCY7S0r=&=90ariA|zRno8a$ z)gtOp>w_`i1zG5<`^KQul&C|~vt~de3uV$6a7d~})S(t0JcDQycyNl5?5KE z%gJ6`NAYwoZY1AGycL8T;C37Cuwl%G5e0QG-USX~?p6U(71fKK>ZxAr5ToU|Ay5xk#jg zWy!O&EKws@B0h$>fW`0eq2AA-rsXsU3o~9tHUlenvu_NF@cA*BB(Y|WBLaml82>$n z&50xqV4Rf;&1z@Ngww}22xi{<7}c_!xjQO&b=MzTDwJN1+akEe=}=w0NGL!6&9On;0tj`JHk;Z3KiTEh$*ilFf#hAa5DCTbdM?p#kk5(>GMg&Qv2nsh6Fd{Oal-Qz*`NG^PM0^uIU*^_Nmn*D zErm*1ZHmmb2Rdg8eW!hQg)=Yh>M4I(P0nOAqMnf2l7O}O)MT53r&RZCNBqn1)GUcEm+tM_CsrP_UB zXc=U6qN(LMOID9%)@O37=SnS!I<*{$k5ZeWwt#gaAn#!#@gp{ONWwvqIv{!=_L=Pw zm(NKK1}P2yMW!{)-1ZEb)p_QXKQaB-Y>w|k0;o*NNX{@hlpHm~KXD`8nYq!ZMw~C32T^D9@OHs78aj4o)@SlYJV$CtG*wGEbkzNct-dF7DV5a? zSstRPxe3VLoi7f&wl>M&rwa4nGu&WN=g{49K2q3u=?K8MM&s$7%j)ILyf@7Z-@8R;| zyqGYpnXEV=oUK!mV^ZM6MM&}kI2KM<`s2_+ZS0BjVweKF@lknLd`c>L@;ntFPKt?d zij!gvCp#%70d-Q`$ZL>JiV3++iuY2I@AagZB7YDk#jQeri|>zNC?#Xz?C6`MyErL6 zP0+F5ZN)h!^`w|lQfg-piy87-lFXh%sn{pQTo&i^kWmXBo@#<8e)21h&G~fIoQrr^ zh~b`yKY^6Rc>=uPlAjKf{Zq*|Ncmd4Pg&<(b+~t?NSPY%iEo`l68j)Q?T`H2o*)csfdBq)~(yC|wEc!{;%ro%is$E=%q9ld=;o!M01Ci8^#veL2%vCDo^2 zR5r?&{;YCh1BX=+4)JvMyR7UztBgrai8?gpdq^oNOn6o~u{|SMD3fNBeuq?x=)`KN z?rB?y4xF!4r_!Z}>=^p{g&`cL(o}~No=OKrY(e@(T4=aAC$3KES_|!r4*V&*)*Z^& zmb=m|-da<;)-LExU5lv0%I{Ox+L5JplXtD%QfHzLowMj#;=K;h2t2(?zt=HwuX<<# z?Y$jpKY?eT}xbTFc3a^hfOjAt?7(UJ(B^k~T~l6Gb< zrn35kD(xKKBa?Qv?~%!3-v1PeZpG;?4<>}RFdJCTs=+f}9W5!7h@&MH!FjZlUc!Ao zWZPLB2g!8YM@uSkcU0Zql# zG=(1cWO>!7CkoAnJUc`lrKg0shbv)YlZK|`lzsdWi#>JyGJmz$9f_d|omF~A_En0v zE$N+YUZvFnPg147KY|za^?Uip-TH|4@*9Opjl9j-8#eXuXV=P}re`iTZ1OpIIG2;8 zV_0x+!W=>(g7XqQb*jq`^1mk0L~J+>>IGajZAVn{KtH zUUsIu#LLd^i0<{~7*@aO*PG8_b81pYZx$g5cvS#9Eod{1?F$|$05>R&8g}^c!ydvH^*w#(fm{1p{7qXXfv2z5(OnJ z_wIp4LL%|x6a&2k0(dx0DHIT&kHlk?H5}kBfd~%RaJLP2D5&@A_ksiQeJX(RmYelb z6S++7j^6gBp0=*evaary z;`;5&meiNiH+S`Ao4VS7c~}l zbcK7{TUOd8G8V%SFo}z`Hf#&r+FZ1}5Z@ARHWu>__BJ;)Z!;D*x3)BITe-Qbw=;}X zg)iE}gP>G&WtcSRY3*)lqVVwMt;B_(vG~UJE@7!f?QNag7Kz&2+TGM)tc6{p_3PT2 zySt)YTY8L5ZPDJQcB7`JH{8}$Pj;#gQBfk@ZPAwcO=b19U0v;nPy<-Bq@VNmG_)|*|?o;tJxZk-!DmMvk??&geUtuL!-ZR(EHqmnziI_sS+Cpu|k+OndM!9*;L z*{I3#HarB{$gbmUn0VxF#6_QO(sg$}Zo-vqT3=Bf+7zm)HCI=aSB5r}t*@*MmDN_P zuWIOsG)xlAKFZF^Z&c}|&>XgY)`wZ{tmV+cn+LlT0WE0)?96#Neu`9Y@RVZ|yfR#e zamBJOM`ft$x>}Q~ti~+F_qbVX)~pzKTcKH%uhy)nVdsNY4%T_Ns(dn)Gc6h~8=pma z%J!R&G1h>behGR{)@55=UM>noLs(iz1*5GhN5P2I3f4+q*6I!G%TUHyv*<$=QPzr@ zikn01L*N~?dF%rCgUF*`V>v22z}kQP^A8RWpS>LZE+>wLLb3)~(+Z z;wGU(%Jh!PKZYzFCZX~l2Wu&Es`6D-mE++{ynRTa7*~~V?fQ*X<=iHN@JlQhE#c7F_S|(}}S+kwuX5k&bLZj>r;@ zFyq4TP4;O5?FZcq`XdZT&7g0AhCwNvLMcy#+6*~AuK64>hMz2m1%Yn{?FRjHnt0S_ z$T{QP2s!FUwV*Vi+$iG>kf3xl{*Z$y*+U#*bbuU<(JMgj1w|UM=RvOlHIUA=6poC7 zplzV5K_3NO1NtOr8R#hJTF{?^UI$u)MMMQ?Cyp2Ke2(1?v=a1^>5Q!dUGX7| zLZD<9HOU5K^xPmv&1@$}3{6Prc?l@#IS=%Qps-u)6zBrbk0SreK!c!{gWib=^Fq+C zfnEXHiu^wTx)k|d3Hnd4$0E>YVUPmQjTbPs7{&vs{LB9n0VbB54i$K2tdNC-aXW&u}b;ljdjnP-*82QN={BGY=8=}5I zSo!C-bu~2iY-cJSwMVCGl^zvO`Bl7X710@K66_VHbe#^(fV(kC6;b&pJ)$z9AOuWY zpO^k!z$Eji^bY{XaM7n7s6<1yIjQW8s4E6)TOJ-p$eG?zTve zF>gWG=-OiRw6+*c-Q7)}GZsXR)~2X&Yg2n~i?N_$*^;nvTWec$tI-xUFz=5-6iY3V zZ|}Md>npytpd`2~+WbWBEablx>l7?3Y!!MVku)mQv+_`7=(^Rlp&HbPjWJ$HE0T^1 z$0ooN$x!vGxK8Ypck&GcICZdbj)Q+_0(_x^f0qNFbYS#;I1EGFjVU1g^cE~R)&7+~ z2p+Y6djFK1YX57cKg-4`CX9~uS-gCC+BSF=>i;jK{cUs9O`QWD((NV&d#g5d6xePP z?slMLAfn}m$O9*b8Foa@4+NL7G3i(Jt^BG!RlHn!pg7zd=~wZTU&Y(yk#|H*3o#sW z7xBbX>8O0ZBg2D`j^R2e{V9Xu#N%f{ZOO8U2R@`p?ysl)ImbWeIN@w(PJB1Fk1x-^ zAkRPL+rDbFtr>v@GyJ)}^O&#NcVk}Y#wGW&>%(7UWj(tX@gLCqYrwx2{2=GAA-+iG z1(A-Q(s`3(p3W7J{{-Z(O;} zK@mLfJJN)7q{`FQ+=klnG^unqdzjH%JK7tK){ZSjN3S>=B*=he3Z(?rG> zQJ%yC}AL{lT5@Y{etyU7SMb9d!2An{UucYX+_WtuYyf9v~ko zLGWn5P4Mmpx|D~$g%&@LqsK7=o6pfXP>t4D0rn!0i2J%m#Tc!q1qN6YNQBaF+zIq+ z9a@AZqTt=2(S1N7?h~5#BaP0-Vn~Eeg$+d9OEqc&5}^-i-al(}T8EnFs<@jq`Wldk z`=aK(uF(q2|3&DJfkeLlsnOhNigzav_0<4-Uh{sV(d8KaMJhJ~iBx(tI;2BCgdh>R zP@`5L5%;T_w_l@i9ommoIXuwd>lz)`=z3J{M|kM+e7?$u-2Y(Rei`Te7*#6j_gXB# zMg6`EB+`3Fqm`JL3thT_MCeY9#&l>MmhB?6TcdqIBJOd`%fX{i$ZY}=p}*I>DOmK2 z(CamN1W4HVW7rB1q02Su1rn(|rgu# zdK^gTa!T{^5K+iA1BuY@Xx{T0%|MU{4T6XmH*2&UB|YGrZR><@a~l;k2U6sb@ntCmMD+aVswNDa&;2rvA+ir zaR(&IV?P5Dc^s7}k4?we2_+CWU!pwr1dz}f-?wvwJTP{mP?U#6CkVgvP{e>SIBTsx@lVD56mehu)?*QqvIN#)+iSy6LNzvs6e9{9o6WRMpPL>E?*-< zqe38IgHj-2gCLNwfe9pRPzNMZY1L@EMmscu33zS!d5u!N`FU;SbA(48uU|jkrADFP zBg=|VJOX$uzZ~l+)X<^xflw&$sHO$NU?Jlc0znCcqLWEfszX-+Q9JeXwjoft4mE*t zd1$3Z)jE_ys2o0aheqE7BJF+bHQcEc`xw1SM_T#V_kc(jAA1Lga`UkzNP<%G;dhAb z-*HAT^ZRH`@gR`fQL5y8%;5QpCkL%CZO(P@U4%qz&SxnKo-#IP7Z_C-H*L;-a6S%$ z*_@Za`IhE5e?gkpppSk-n%ai#oWGKc?u$~?+JO=|e_@)}wU112MT%SwnSnbhsq^=y z$p(Jkb{T3D=Wk8(mcVnLZ3_SuIDTiEw+x@*3Rj*BW$vQ&5Vss0swUv_b@VP9M-_eFVLJd?*EGp6++)*)~jaoIXQ4;ZP=HjwBmjlwTN7|fafQE|`f{%XO4}bi^=^tRJ zi_-#Mxr@^aU$u)9hmU>_27fZ0e!x~2=Mnhm*GupxW%dKcT%7O2M?VgMKPmGf;BFV^ zSMcp|asC@V`Y{3g$yig+X=o%BtrsUNON&uojo{ezwG1+ixa?T8TR!IEY=V!zyR>Dt zfJ5Ip+MHX#p-%^G&VAs}_j@+yOW@E)W;W+haOlG>oAWQ=(8p3X=Lg^nxHvxt$3UTM znO}oL&o7(vHaN5|Yje&)8e=Zbh2S*86t>J|;LsbtHfI?)M_rt?;LuB`w#+7Q=*3T) zvjrUC_&DbHU3wZ#{JujfSX1Y3(qpm&nFv}oN!zX)sZO#BQ7~Dcz2%chirycZBo|6Z zzEYDxO1zqpK}fxNkwHwp2+^>iwydFy-TISz6;*53H#k*jXsD^(P+3vSH7qKmBZLP24rK%0WbJ9_ zx)twh;uI8bEmBBRJ6@R-cl?8h&Fw9m+tSh2gALQBt(|z)v8|c&!Y!$?uDoCkXV%4T zZ;{(u;`T0adzZSs%iP}OZf~jEyTa`)@?>1()ytzvkw=vxk1jH8NC7uG6 tz~HW4gK$@`@ydJC_mro^Q=Sq}c}hIxDe;u2gvwLV(X_Q?O;fam{XbL|0IUE2 literal 0 HcmV?d00001 diff --git a/x64/Debug/CWarnings.obj b/x64/Debug/CWarnings.obj new file mode 100644 index 0000000000000000000000000000000000000000..6319dc65e2813e57bf3a1800c284098ff4d5a2e9 GIT binary patch literal 2111 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CWarningsVariables.obj b/x64/Debug/CWarningsVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..94a2050c1b66f76d41ed747b52473c326b64b7f0 GIT binary patch literal 97296 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CWellSurveyData.obj b/x64/Debug/CWellSurveyData.obj new file mode 100644 index 0000000000000000000000000000000000000000..9d0fe3f2c760c55f72fe59555f30b936c7b234f5 GIT binary patch literal 10986 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 QQg`e1a$9UE_~t0^H&v)dE&u=k literal 0 HcmV?d00001 diff --git a/x64/Debug/CZeroStringSpeed.obj b/x64/Debug/CZeroStringSpeed.obj new file mode 100644 index 0000000000000000000000000000000000000000..881bd48019ef9496db176c4192c46283b84e26b4 GIT binary patch literal 9322 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 SpK4`}H8_>rpXpDQGW1`Oi;^1v literal 0 HcmV?d00001 diff --git a/x64/Debug/ChokeControlMain.obj b/x64/Debug/ChokeControlMain.obj new file mode 100644 index 0000000000000000000000000000000000000000..89a910e36910ec1c4166814f6563bdd084abe0fa GIT binary patch literal 11437 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 QUpyX|NgPcNCJJfxFYPhp?*IS* literal 0 HcmV?d00001 diff --git a/x64/Debug/ChokeLineMain.obj b/x64/Debug/ChokeLineMain.obj new file mode 100644 index 0000000000000000000000000000000000000000..67e1d23d574ce534e76705cc56e66f5ffd92fdad GIT binary patch literal 12509 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 YY1Lux!ftz(=AeIK^hBa}G?!ri4Y<+7hX4Qo literal 0 HcmV?d00001 diff --git a/x64/Debug/ChokeStartup.obj b/x64/Debug/ChokeStartup.obj new file mode 100644 index 0000000000000000000000000000000000000000..d3cd15c70ef7abaf9e21d29b258f42191b9af4fe GIT binary patch literal 12474 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 IWGO@c575{EF#rGn literal 0 HcmV?d00001 diff --git a/x64/Debug/Circulation_Code_Select.obj b/x64/Debug/Circulation_Code_Select.obj new file mode 100644 index 0000000000000000000000000000000000000000..6b26e9b0062071bc29b7da7fb5551d1a6bf389a1 GIT binary patch literal 17193 zcmc&*3v^q>nI73PF>*>AAZ*O)}3&0CtjI&aOD&X6!ZS?P?af*9g7N=G}I^#o+I}Lg*OJPS)DlJZ9IM zkHq_-*N8r$P>X-Am&~Px3cFIA#N#{oKUh&7^E9&NLT+$KX`vh!W4Bz%ShFmzhL_jb zDf=&Olt*Ax_OZcH|Mlq~et8T==u?@dPQB!A(#z8s#LI5?(+K*W7u@=ubM6nF)+gOf zWp@*iWq*@MEd8TKSxets%*AIKNtElTFHWJ~05w2ZNU#xtf<9F@L84TrlPK3kAt(S2 z3q)|Y3CB!0V8RI#?la+GKw0-Rpsf2bLt(0p6j1jIB+7MXjD&JsJ?SEVU2Hq zgo0+WS4()9WNjVkmiUuuU}X*|3C(V#J}EuP6DpzxM|qxThrV8W zau>Ikon6q#%OiHXNl$X}kgKpzpjS@-iyVR|PTysXmWlRCSr*gP{WtezBUi^z~y zpRMI`=E&M33-12*Ta4yVnrN6E>E*x{Vjy*0$N?GWV~jTQXerRCPX@N=dycvE5@b1G zB-3z!8Z$L_>*eAEQ^ zVE!~WNwS5-Xn}FqdRWYYu~HS{7^65 zNhThXCX%db;?8NeE_}G6yLSG_tzUa&l1=hnUwdTyBGE44=)YPfW-RaP5`T*1$p>ge z;qm+5`$zaexp)9kZe6)}N+5Ee6M(|Wi@eV$S}vY66bx4{9;1Xwo>MryfHqa(_Qi9g zsxoqaEf>|Yq{@Il8fBOZRnb_7UC6g!>TS=6Qs~{*C*2!5Q%9gb) z6LZ1F@fjhQDbYMNFA6o}z4R;}I6Vw9C3zAixZqAwfM&`wJ zb6Yg~yf`UMBw5wO^FJ?W1TFJ|mLTpw<>Ij6O6B4faxU^JjJ?SY7*M%)l=QHMlHePG zfaRh^RnChE(oq@rQ4F&Zg4eFfpn1WI!+u~SVxc$TAp=g;oe=ZlAu#5=I83o}aoSLm zB^&dCmu+xzURXIXFE}$*5T!8555k9BM`}gGiazefF zqY1gRtX&-%^=gNd?A(VGzZznGDtYxMwOr0T^}5HEGq9iBkEC^M`LXiV*^H`wa9OZ_ z0%J7y;U)BDES=pg&q>os&SCl-4r={a;4wU4Tp@Yz|ML!S{LOTlT3zVFFbyxsIr?bM zb>@u@Z~vRIboSw`m!^}P!}K>kym!>(h>f4aa?zryQDUiB4-4VQoz&V=v5{is;$jF2W*M~c%QCJu5^=mW zVXFbB>ds(*pss;I$*rQEPKuR_x}hemGd6x+w!z7b-^z)NpEFZM-aNVSpIxx9_z((3 z4@$XEd;%7o@x)$gMzs(6yywk_7&=L(AGS zUZ-tJ z3phxldnIX&1R4x2H4i#d_Df!R$qU8|F-mKzn;w(w!jB??`$0DXlMD{ z(45`cA9(+GdTb;$3b*PRPsVP~7g8g$deHXOtqlFbs`M54DEaI&aN@OW9rsz{D7=VR z5Od%Z?4o_dO*Vh;F#)FZtFX9ix0-=B}&X%x?8^=&c^{|-DU+7gyJ$?R!KM;-u z<6GIKwiJWC9PDzX-xu%e3PdBZSg9`J1l_}S&GeqkHlNBFmfy*)vn zKhoC~3V3^ay<6j3qX9-{P_hW#a9Ek~PMaB<1EEl)FCGfS4TCPTrTYV+xOY<|)YlV; zM44u@CKQRqgW-5@Fp3g_F@Gc+U{~2RHUweomZ%pU5P=1Kfp`Q>pnU8du>bBxWq)tL z8#1jY8!1tQb>3Jsf`VY8Fb0{eoknfY173eH7KsMJ7@w+{HwS|2^f-Gb>RoR38|)9P z3-p>*^Cqf}^XZWdflx3UNWkt$FSUogohnxvk*Fn!`p!(EUN^H*n=Uq*#LR-J%uvL~ zN7_tBu|@(7rI|p5R!<2>R7X`5M*88to~}SI?;NwRaA0#V+#TxMB2&5j%0|i->F(}| z#4&7a5w*>hMj3g5roYGiiQYg@WK%%647&uq-HyIOHzdd}H+g$wtPv%xP#uUQw$RqZ zAaw`L3)9fn1gV5wK~}>en7hA4tRDZE$~^oAPyWTv zoSV~|US-%>lzq^s2$84Bzcc)S(0WATNR30_lUi33C61jJ*%?a=a$)hrAXt z0r@`2A;|AT?tuIs$TZ|hyqDey`RD@1#vs23Np`*jIS%<-$lD;7V4mL&xfJpa$d!;E zguDTA0)OM^*S(ORfGk2j2w8&sG~_*y2O;l+d<60V$VVX`gnS(GuOKlTJfOL@Fd<{; zzVi~$O|~#0W9O@UTjBqYk!jh01G3JiD;ji2@^oCahUaDcm?Y^`YYnGl zk!(%kxP1=&fr=db+zf84qF|$)G>)zKzeSeY2|R)S?J`d7q4rP3s+H%2rgSzjRM^d$ z;~gumPmox>n#9Vs4ldePV2;0Tz+t(aC&H1OXoG5G4oKxv7YoZ+1qfI=jT`|g6q;3 zL9>MOQ2!2eJr1#^3FBj9RZI|H+#7Bqhu2}%pDO*Jr6zt{LHvA4OVJMK+UN;vY`>MQ zPwr&CLWaGiw%#?$Tv1Xq_PoDHrnV1`XA1a4vF6J3_Mz-(KAX8xv(ZSSlw4{gnXHyH z20t39k}~4dr;iuCaetLkazhnle%DAQkxb{u97RV$ew>^Gu`4wXhVnvV*w8A1qGcQZ z1RqZrn~$@U5vqQ~aJ%Yt*NH_(8;;lgpl1Kknp1Vp)cv@2@9_(c*38r$uPK$>HT4T! z(Aw{sI$ev%`dK3GdD&mPk^U1G9?!UbT=)Dl$6J0`^Hj}!M{C`+^{ZUZx%VD*AHCqH z8>OD6m5+iO|6#Uh(b=E!h!-&gr|N$aeIJh zqPf{Vpp6{e1GIsoF9P*)^mQPd^`J+)7@c_C>?xoiM<;-Ej-CUek#Mu00j=ZcC7?cz z&M1!dWSrHY=f>O+dh>w-oTK+-{?fsNO z|EbVR3el^kOL>k#Adxq#&>adLROm2}DEUVUy{u9f!l^g$@~!|9<Kxs2NI>6Q{0R~i|}bjw0s#*7jN&)K=0+~gDQ0o&^pe2 z14!rSpMdDLiktllkjU{G&<&jP;DVn(ixg@D61A-c66FO{>dio+MYk#R5g?J{<3J+E zr-4Mt(?FtaPbs}0D7|Nu-p>`9hfj5)jw=+p4oK9|4kWDt5_Los`T&rq?ZZGKM+r#e z_>|H+sL+!@qKCc@w3heFzX5IL=sBhLqC&q_sPQ7Bj>SNtjwT>s)eS(R9h(#y1QJ%I zfkciwfJBamfrRysD7~*Ly~mZ_QH6d1BXh;}Rfg6_BW-MWLI3L~R2=BF8Y0 z$gx}LeMq6t0g1l)G7vtw!>^tO5_x~5&`E_}2BO=q_3U>*TX~M!M*fxoc`paT=YF88 z6t@Zp?*PE<1j1Vhpa+4F9q0=Rol)qI3T?&b@g-dE{Xi=@+6}aUqkDn+Ir=2f%^dwD z&@CK&7AV2d-vD(0)w8byt>Ea}K*EAD&;ZvvRl^wmSOa@rA`e@N-C!5zu9C>Z-UEcU z5YY2VXexvWGUHh-SsFO3pmj1cJkq6^-}@G6rK z+?nrDF1%r9{2cFM8qizu@1pm4c=bxC6;IM|aSwSrN1b@SgClAo%>@@f-CfSn7Chg{ z(Ey(B;%FF8jiWIy`-fhYOBi|teBfI;kLW^YXMZpYF+eu0cx>5P^w*ypSt&4s=K=alN z*8B0~Gqo-{VcUcCw*_bpbg1X-0k2*@AI>zc;X87`9) z*WsAfl>z(<#`@a?OfHl&frM*-?15Hf3S5Vy41bCT^$33#E24M`<`ES)nD086pEwwF zxeB73%N@*G2Sa|>iF~GoWxKPC(;=08xUW_wN&k znHKhgp?PXD889?UP39wDXttWny8!O)B~b&i3do;8_g!Du#yK6SO) znAgBe+n5HpB)$1H%ef59NgHzw7<%h#>Z}GspDIlz2!=jgn#@)(^v>60hQZKVU6a`j z#t2A2c-X;AI~ZCyj39D($o*vyOtXX8;$Z0WpAkf^uQ-^0buecg%o1vl45FMH9n6q} z5jSu|Hd(tv=LZhvw1b(Cz0L@toaGK?ql2Nn(g-5g0}kd<2lLMk<`u=zx=P^>4rUoG z?mQSeVF#0NFt4A}W3%~P4yM(?yvM;dDqG53K9*_h9RiQAZOfT8<+W;x#lV+7&PKXWiMiXneaY|j+N^QokntJ(5PJ#-vK z=Q~EClGb18QE{~{I){lG4W$MgJF31%uFf`fg*G(fw6O|ji>leA!pfD)6D$$$iiU!* zcp~ccZAi2l*G;V7I3-5L65YXG-07(DbrdCryswiM2(OFlv*q;q{jZZ0kGyWR$Q+N% zmR;OZm@PHX6UE&dd)wO#Wy@D+j;2?nSzBJ2WNUauqNUx=l!|6oQ<%k6d!s8d$~I#R z=_^Dr-fb*li!ZN;ha*vcJaK&myP_iAQ4trpR#vdBEP=Zyk%ZOT?6tQ$G+uq*&fUK9=2vw?z|PV~{L)wTOpeQ6 zF+CC>hmG}hF<)O8_at!vG1?~#i3Q>b$`K7l1Gp0Ci-f~;YjajT-0ur*wJ73}XAd>X zhbxJ6^OJR>y}|H0^3g=s)XbgGY0&(ShQH{&?&39joE#o(SoA~ljO z;M?fI9izAln;sG>YBGr^4377DeY|SSG#DqF09yiZ0s90)V=Hu6w67uH}a9_dY3&IV9Spflqv8j8fbgJEw7jL}gn z(Hr+Ae02LbM%Rru4d(LpwGs=rb?L-@;Ki*|AFc}eBE5e5ia$#VmiAdvu*%PpLJNM_ z*c&RAZ|qT4lPdOtimjkxCuplEtF2<+X{*?H+A4RRivDO@!D78wBWxo}U2a^-#qHkB aVLcL}>yze2W27b$!I8losjk6%iv1t41!)=p literal 0 HcmV?d00001 diff --git a/x64/Debug/DWBrakeSound.obj b/x64/Debug/DWBrakeSound.obj new file mode 100644 index 0000000000000000000000000000000000000000..0f6517eb03341ba8dea070502f4fb9824221eb26 GIT binary patch literal 3007 zcmb_eO>7%g5T1>lHn^dVQCoh*VTp`Xq~M=4YKaBHj_uTLV>_{(q=2be@2=Br)?Rmi zl86IDDyoRuqEPiv4oDo}iUbk@38_i|DHKHr0a7`_0jVIQQilTv4$QpuZyhNd82P=K zH}k!D@6DU_8|l&jaF=h3XCDA~1Z?t|@`~AziEU%ca{!YAwsH^|4}n*Fl3cPDyg6G7 zFycggAHdB9j#vVQCVaXim_ic;5JquoAHYFelgNQB4B@bEr5i`f z271TsiHGYrAkWAjwE5Xh1f;?{?iX*>-7jp`-6I=o{XaAOQ2#l^l-+l4xqX|~;H$1J zW}tbOnY6g!vayM)%xi*a6Kk7y2!l#?S!-V;)_!Yf|XxsQ4dl2ubyk7l3ZCp8@}qsq4w$H(}nR;ekftn*P-FbqZH%bLy$wVJAk zY)ymLt!h=NF7R5{#1Vc@)(zYgKN=Vf`cC+Q{Dh^b5)DU#f#7&Cz{mySvb5)+K&(jM zPpV3Zj>r3}nyM{myr1PnsBEb!@6SlQe_7D0AqCH)mocdf-e1uqOO-?InDBlK1O~55 zH7T_LOJeXu0F%7L`&nj|1aXn~i|1rRqE~xln9PKmGC~sVz&xkR0@%R2N6=>s!!;3O|W)H3}(3)HOpZoBW(&Sc1yuOiNO<0>!Bir=!$##gGeg z(L!F+RGg4QF*xQshQHwWv15gjQY|Dj!#sl*&!RI^IX(u4F76rDLi~cI)GBfnb19|^ z%gdU+h*D?Tl*a>r!GK)?Was84=F=#gWVuQCN%Rf2aco~t!e4u!!YQHw6ytHF_w+Y&u6lyb5of}ESa93&BGxW@Vs^ipk*q~MY3=NXOh;Y zmJJ>Tk0*>uYH2Puj~-`J+36JYL54Q}7dH9~@r!1(gMEUeJwLer7Q{NbIz#>%L@^?w zHK&-w)?TH!g#lJ4ZT;#6Fb5nPRAKELwM zb$spiOtjs;!JYcO=g{W?=KB=(w2Tw7*wf?agbMby)oMwX8qxrJZEfp2E$e$N=|hz0 zTu%4|d)wazO7tW;;cJX7{?Pk&LvleMmJ_st1F)|lx!_rpXpI99Zb&Zp5hZ)>PYuZh zLx`a@IN)0nWvZ=1fz5E>%1w!K`5-n2`-;dP2WrF0VP(;-r0Cuq+&1>@d%^)D@<&AL z_CaS|MIId-RaUf8n;IA@L72tCF|iFmsk83FBch)$_1Ljz{y!Oga|HM~anN zarZ}}^#IW0kc>=B#d8F1sUgaqBc{y7^K8)A1QfIRXfaAJe~zB|IYBp|SWH%g1$ja+ GWcU|;j&}0^ literal 0 HcmV?d00001 diff --git a/x64/Debug/DWFixModeMotion.obj b/x64/Debug/DWFixModeMotion.obj new file mode 100644 index 0000000000000000000000000000000000000000..11dcb18ec753f0ea3709d438894b70e5f2cd8096 GIT binary patch literal 2911 zcmb_eO>7%g5T1>lCb%t0P+AJ=;i(w4pyHo2w2dVsC$`fyspG~rZVyYh>)my_&3f1D zu9FDy6H%!UN}%cqwGu*zLnZEjKte7YBBUNFgeWH@4oF2pDs4Cvi32mcYsXF^g##nM zH{Y8X&wFp)ytkuV>W7E#-jR<#0`NF^6mir=$H&B)*h(D0v;8yz*oBQj>|8`qD~;K3 z(G_AB3<3=I0DR)x?LZk1gA)-;ksPUI1#kx8K2-kV+u`3J3CUz+vD=R3sgsiqN4efT|9*6?iTsy^5WoKS>h1h+A?VSz&AT$UO$CBi>6~Gm=o9qJ!`~GlC-uk@# zmT>42fuGQ>lW4y$@fZK7^DBCo@yo$5zuMH%Vl^1Ng~VUH8{{uO48D1fzZ?v&2E!y= zO^03O+Q49M5^dK8hBE#93by5&cgg#@VsN)-aP}q|^~O+F9k|ydd<##gg>QG@SO-3i zc(r#wxkTbudR?~sEx-J`I}g92o_hH^I*W2!?uu0RxGcZ_NaCDTV%vxR3Rg0x`$+k6_RZWXY^}4Rf?zA?u8it`6v&`)J<6%}- zEgL6hBe9Wqt(i(gR}<@DVNnbO#;;2>sjM5!%kg6|%y+|F_HDm6ucY?E) zRAZAES6j$wvSr$4)nR4LZb&*SIt@iL1&Wi9p{>*{%~pkSN+_A8j(;d3jE_c+;4eOQ zn@vIu-+r2W$}| z%1O%6x3N7BC)^w*8Br747`Csl9ee^ikI;MeOfH|!)2H)=siIgOFTh^d1-!sXuW{R@22$52JBqn+aE);k=6zKhdJLQd=zWsBG zT9q2QgV~!npjBnluuc5{>k^}mG?rRZl&w^Cd_`(oXlk47DU}PQ^cG$$d4tfNuj!(q z+4W7X^C#2OAdop8`cA@~%L zXLrL#A@??tKMp8gJ#?szj<*p4_rC$0uZ1Y1@y1{^L5MtaKp%1sb=F99+5xVKJ*~K# z$R81hH>n3YD<<+2;HYNmE=hbF_cGJW0j_ng$&W{!6%}q4ZK$Sd&E*>*8^)Hz=Gq{~ z_t5RVj#fYwT8n6fL|RMWt+}HrqZtC+=3RDHWK>glHZ*HDz1|+uTw+ys8n&vmgcP6k zijATY;HYNnrp{`OPBg$>!QNYW%W@gPhWi2Hh^EJ?x+ytz{CcWRB-Z`5XU8W_W{P61 zF1DY1Nb&jn6u$fGx?-jzl9112Pw*uW3#F8pqEB>@zR6|DvOyHHHEC9zkZcwH1->|6 A_W%F@ literal 0 HcmV?d00001 diff --git a/x64/Debug/DWMalfunction_ClutchDisengage.obj b/x64/Debug/DWMalfunction_ClutchDisengage.obj new file mode 100644 index 0000000000000000000000000000000000000000..7214a06427d831f3b6f7db6104ddf89e5512d69c GIT binary patch literal 2478 zcmcImO=u)l5U$S5Zq{)R$;vJ&D?GvoD`e*<30X6En51Wt9?j1tGs!BnOnSO|CcWwI zH}+4GgJ2*aWHk~zdGh38k0PQAf{2Q_c-Y%|6%Q)K2j9r3J&4DDM3Q#y$EBUW;_v(}y%$d&#FHdEC?rGWUf`Xy z`>nM5+kG-A?dkb9zuVv6r(8b5@dY|l24RqtVotv9@S7N;E3cGGb8^|Rd{glZZj0Q} zN93*XF}XlzBo}VXDQ4ZbRZ><()A!W1g5m0RLuu$KUb_j^zDt7?=w0}=zaJi+rCETI z?dj%~rI*+=cQ8vfYYWE5n8>ZBVd@SOO~rK$mDRb!lxEX3)W8XsIlgThc7yS*g~Mz` zcU*LYjbui$scWe$oAM1)qt}saCOc8h1e5@EQ#&9}ds6;V2fH z#=N@noS{10<#ms(7_P6FtnB%k!DY&mT%=H%4j!VsBFYucOPN`+FnI6pHvQ-sTKVPLfd z?RoaW!XW&CV)}&fFDanMIKM&MsUOaNj2%rM;(WiAe-~xZPDPH`)-ER5D zB3w)VNI>2<|7J*=_ZkWp8;?Q(O7b%{|& z8b`M@?Ko8vzjf;vjn#{%f?KK-j*$)J}2-Fd@Fd;I+1a~Oa zc4#@&wdT%#fqH|OKpg{d-89sG4R-J79%#>)K>b5Eb#@MP)rOc}%j4~3VO&Rj1hxgZ xiaLpI>g*vX>oMUr&fOWCLdl8M1=XdBSQY6$DboeAqBt&8t0fCB=_$q4;U9PhDrEow literal 0 HcmV?d00001 diff --git a/x64/Debug/DWMalfunction_ClutchEngage.obj b/x64/Debug/DWMalfunction_ClutchEngage.obj new file mode 100644 index 0000000000000000000000000000000000000000..b20c44d52c6bede8cc420f5db0d069e055025ba2 GIT binary patch literal 3437 zcmcImZHOCn8h>V!ZP&EkZhLK!a$ct;2g+^p(p_42?>=mrq@C#QrY7mGAEI$GGue)v zWa7NE<+zvJ6%XTDC|(Z^6#d{AzlbLuTtShlAC{Fn&K98{DhQ|a@bG076jb#0%u9CD zT`e5kLo&bLJa6;=KlA_3|55)qL|;8}Rrx4JbPM^CaI`Z{z!`oi5LNKM?K(UQRZg^XU~$yIH`1Q&;w5)bziy0cZ;6xp-ax#%J7KC8^a$jH-;0h zxO;yU1b++JFgOfZ86LgV^@0}%cOdE6F9mmeaS$(&sk0}f-#R;d`p_jew&dBp+)Mc> zxYCE|#X(*<9KORhvszlpON<|G?|&Yr4~Nx#RqFo7n~-!)J9h7D=g*&K^QZX#6-7Tr z!ZuLKPF9au<^y<_c6F{?n5mZarfbNKZnm@(&AxPH&nho zkWQs1YAH`*q?}f7I7L#LDkTesUgyb*$(CuD3#OR#R^(*EH4HIXRK?_J*=kMdn2*)K zlD5TU(^OqUn_R7sm_#8^%0AT*b=BdNl0KBe7ORU%Z(r19<)oNYPH4)>$-3#bRAlw< zY{xTUQ1+zCBXCYwn#^{!zQ9^IipjeT)34O1p|?(s`Y&_AlAGcY)YY!e=!#|9X2TKZ zbla5;vFy02ZdSQY)jUt7ZRxgFoy%4$rfDFc44NKKjNzA_7#pkB^;T6fZRZ{=1Ft%F zHxG`JZ7DY_Yc>C%tGAn43o9#U$)``7)=9AMUqp?G6rnVqmjV`-s>$XhK zkel~Ir}K0965R^h_BFOzaXRPQXNtKz?VzD;zr|+Hl``}5#nN5n+FYhYyAZ@$UwSqg zpdwG?bNul+#7^<$Gr%0v8*a@1rMyHdNc{}w4}|N-!t;8C}OkO{W9g348>IGpq9y5asVY5Bw?cCEy<572sar+rWLm4}fvtC%~TrzXFZ|2QiNQ zz+qq-xEFW`2=GJHvB=M2k-;m%G2bzq=YCad$gbgF3r+6R z8;aSoO=F+fr-qF!mey3&jZAHP%9BsycLur_E)TrE>Cejp-Q|JTH+Q?2 zqgOWt(R}jE($1YL@BLkPtg!pezoa{v;){=deF`W14Hx=G--FLqKK%u9ZoxlF`G5`K zR10gnYYmI0~VvLcmaOCk$}a#uMR&~@Oo39-G+Ogfp`%Sj4Nck*M5Y5 z#Ea#80y%+IK&Q9b*! zz}EJ`m^OUw;A@``-{70n6Mi1ioxOX1oi_@% literal 0 HcmV?d00001 diff --git a/x64/Debug/DWMalfunction_MotorFailure.obj b/x64/Debug/DWMalfunction_MotorFailure.obj new file mode 100644 index 0000000000000000000000000000000000000000..973cc3a8627bdd73a75efc60905a94c7dfba0bdb GIT binary patch literal 2703 zcmcH*O>Y}ja5i?@;0BtYwt@=+x8IJF(8hlTBWckOPoyU*-L zlLIP|A|X|!0`Z*9kJQWYUF+V|eP znb~~gzu_aUkczR%Ke0L?{)Q!;9S@j`di1T079;G zW6~uFe^*P}zh5X_x8kgHH5xDN+>(*I6ODe4P};s1Ep0!HzW+z*S~R{BjT3RF5EsmA zqZ25({ZI-fc8^Ysrf{-*baM1Oj-~4uFdVLaQ@Z-wJ%L^~vTxtUki&g!pP`W}AWae{ zpOIHwehGc|=4k3Im?m`w|JYgq}ahsE3hnny2VG_>_hlLwBDTEm&=3l&~CYLEr@&dWiaZS&V z8+p0TxrIN}5KYe{&fu4xJ99>EnvPuJo_`+GKt$)9Jv#%Qt35HS^1{1;*|7}=GppdL z8ynnRN9^%Q)S62Hh6WA@SD3dqFuStwhR9pWT>`pq=CHM}%|4G^2)ImcvADXNua_&! z%2K6XsTOnP#ntKpya3NmTt=HowS2TZ9%%oW4rC4P2b7>{y_SSzzH(F|7`Iw%WQ)Wx! zj>oN2Y>13J;<$#b>j$wqcum*`aP0l^l&jTx;Q%eJ_6X6tY+H(MdYyf$D~pBY+|okr z6pP{I^=ar(=q2`{XZ8POBgf%nf3?S_>zCh+e{@&WA==$#IDY)W&tFJ4$|v9aB)yfZ zeD&eqH=p_!iFVML+I?{UHPjiy7R6cwK;(iQu9TD7LFiQC0>|Pg(!8{ga z(sBffT`UH75DVpg>|!yISG0x%&tV^8r~4Qp;*SX0(8DMb$FW7kzobtBzsr@d7Vo`1 zD5oP5?U$&1IPL-IBandM3WF~Z(ioBGEizo{yE1fO#L5v#pfv5n;7bKvL_JyR`}`jA zA|iB}gp43g_gFZR1pxhLQE1`7+lFk9NECx%7<|`|$Dz#r)!Y5w$ake>`GIHXJt9S8 z@7+T&h)DGE8HT|(5A9k+x`};gc~8vS{7IR4%RipPo#%$*m7=uaiONz g9i@Nqf>N#Ll|0qP8WqEa>Uy9kWm|0<^QvdSKh>c~G5`Po literal 0 HcmV?d00001 diff --git a/x64/Debug/Deallocate_Normal_Circulation.obj b/x64/Debug/Deallocate_Normal_Circulation.obj new file mode 100644 index 0000000000000000000000000000000000000000..d2698e0cc54e887fbb43e2b05e2b1d48e426442f GIT binary patch literal 84120 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

PsQyKQ4g4*8%*`*RxQbvtKOrngbjM@>h(NQ}} zIm`%UrhQPqzInNBb)^E|p(F%&yicAT6f6I|%1S?CIZaaSdzXB9Q>TX8aK*_?

msrcXsRm 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 RE$8>U273B~O+C>d`yZGZeS`o2 literal 0 HcmV?d00001 diff --git a/x64/Debug/Drawworks_Diff_Equations.obj b/x64/Debug/Drawworks_Diff_Equations.obj new file mode 100644 index 0000000000000000000000000000000000000000..0d656904c3ff287be4c0fdd5efc27d22c4c15437 GIT binary patch literal 13988 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 DV8ur? literal 0 HcmV?d00001 diff --git a/x64/Debug/Drawworks_Direction.obj b/x64/Debug/Drawworks_Direction.obj new file mode 100644 index 0000000000000000000000000000000000000000..d61c3e5aab67448bb2b35d76e4c81f50e3e9d4f5 GIT binary patch literal 7019 zcmcgx4RBOf6~3F@G$Bp82_>{eXkRgCz>sW0fDp0WkPU2vkdQwDE?GAF6SlnFx7{B| zYioC;MIcloLm4_yl}=U0860%zNJp)pRfN(JDYn&C2WQ$!l$kv4s z{A17q)^|=?YmRR&d(e79cOm2G4=@@s3m3r;oJNk~%W~EnzhW)Rw@EGkOb%NEw9$UV zqSC7LQr8}%0E*-%$E>C0#K){_PT@kp+&1Xt)Dc&#YtND|gyWS;-fS%6{9LGUVR#OrSbJ?d_x*n!AIv= zQq{bU^xt*+->@=LgMK~XLYwrVvaZH(P)ClB9F0<%Oj+`#-bs@wOEPs-noL=)=x$`F z>(TR@R^*sJHW|a{+uBYy zO7Jmj{~Ks5mR=tkj3u}AMW}M{X%xYbxV?H6%kbYKqdEF`(iHu;;XkSOhTcZ!I#MuswW=Q!p&OLU*{THQ15ckp5<~xJ)1Xc(Ty>; zBS@PfT&lH!`$SLP)H2%M&WN`P3dE(G=x!3N;kaL|?3}GE)uPxN!wL%v>Xl|K6bY*S zsM4%@VzHoC320Hp6N#unuU>Rai6+9~V0ci`G9Ii_di~KD3RdcDb+y$Ct80}diJ1i*5`gR8^^I_bD}-J<)Ju z5bcQuu*b)gnvmv8sQ$+Bu2E{x5$KW(X{m4AVUxFZp$%t_0i{MiC=7VK8 zTPy)YnqA&xP0N-y%Zl16D24uy+=%Yk`!=n~x=olUD(w|6e@aywc(TbjFD+gFO|VsdGOJtmSV zqOj~MQ_`R8ZR!+LMX|0*Z;mSRM0=Td7iu9cEO$L!!M&Z>4Hwc!>J>4DkP59TBT<_v zHQ}0K=%_=I`T@t_ByBj@W0GDVIxD#WI2rh5;H|(NKpd%)w3XmUntT#?8}M1+?Z8)n zp8~E$P@E8xKHv;s1b8R#A>duWy+8$c1o&y-F(9^uB)tn~0bc`t2KXlMv%pKhN}vgK zo&&rY_&H!H5L;KW3OEB_xB~bAunjmF$E6P7 zY~U)O9oP-*0QLZTfW5%`fvbVLfL{Xc2fBa2Zvvn^lE`oCKiQQDay;o{`wQsuGVQ^+*_M$ zYX9lZf7&Mf2QR{0Z~H4_m%o6RcrytLtxrKES;Sh_uqNnz1&x0HNxz2;Rw#Bddjbsa zGx$AaXcqBZW=|Z=Y+F>7V5ioxzc{Ve+4BFmj_SS_NG znT=TkGY7MFW-ex4Fxf*JS&K1ykgZ>3Z3nY&vh_*U4lp~&*2Anl3pPz}$In?iZLmV| z2Qch$Xyu>T`WCax%&svrVYiUIQNnB*m~7EZW^>qD$80HEyTGRF<*sLK1G5O2EMth- zPPXo6b^uI9`5|k+V0MPtc`zC80<%kO{TH)*EMlW=V6sK!tliCQHnaK6n!w}}t5{pd zT9CB|m_5eUCs;ec>=0W|8X886trwWR!+!6xcAeQx*h6KlZUK{Ro62kkTW7I0msveq z7qjMIZ3Szqz~o9CVO%j7|wrKGp}J);7{Bv-Y{5^s4-^P&0?Oxio_8x z>37s%MS@PF6wf5+G$7eFW+3_#W|Wd*bgsAymsvk;Q#_N18&(s(wvK;Y#_LR&P4s;^ zbtZveB#KALBovg8{;ioJnoZP~crY!cf1jl~Aaa^j()4f9Xd-+L(>=?N_905TkIr!7 zrBiyEVnxo2h?~X=J%yEnq%YtFQA!aHa(v*GN%8p zfYyT9bP0D3toz-DY>tziaMuM@TR_!3@d&;X_~X^Jbvd+o*_tg|s?C;i1j`YtKKsG> z+0ue+X<@e1kS*2bs%vdpci>lgYtxbyEnV(V#Lc~w=CHK0rN!Od*`$92aJRL0w|CO% z_`^Lu-0F5TtzJo?=(7TsIkAxD6+PX}&bD?(%Y^bKRA$^yI94y|Y+ByZ)!wtxA>5ta d&F*IUEYwBcfqFgBm~gvWL!LqZ5>L!8{tfwTKUM$$ literal 0 HcmV?d00001 diff --git a/x64/Debug/Drawworks_Free_Traction_motor.obj b/x64/Debug/Drawworks_Free_Traction_motor.obj new file mode 100644 index 0000000000000000000000000000000000000000..ee895ab8b1fa713a44d3af45bf6d83eb5e57ea58 GIT binary patch literal 9700 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 Chxz;f literal 0 HcmV?d00001 diff --git a/x64/Debug/Drawworks_Free_Traction_motor_Dir.obj b/x64/Debug/Drawworks_Free_Traction_motor_Dir.obj new file mode 100644 index 0000000000000000000000000000000000000000..b8f9056cd07eafa1258ace738328a38d95d38f80 GIT binary patch literal 4626 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 NFC81vyJ9(={tLVu=c51s literal 0 HcmV?d00001 diff --git a/x64/Debug/Drawworks_Free_Traction_motor_dawn_motion.obj b/x64/Debug/Drawworks_Free_Traction_motor_dawn_motion.obj new file mode 100644 index 0000000000000000000000000000000000000000..d9f1fb43ff018a823a89fdb9ad330e0ec8f837cd GIT binary patch literal 9816 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/Drawworks_INPUTS.obj b/x64/Debug/Drawworks_INPUTS.obj new file mode 100644 index 0000000000000000000000000000000000000000..e7d389d7d3ff7adaac56409fedd002c4e8b5033d GIT binary patch literal 16671 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/Drawworks_Solver.obj b/x64/Debug/Drawworks_Solver.obj new file mode 100644 index 0000000000000000000000000000000000000000..c8794aff956004f4febb82d9f83dd9a574791a9b GIT binary patch literal 25944 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 LteaZhQm6hG*6mJg literal 0 HcmV?d00001 diff --git a/x64/Debug/Drawworks_Solver_FreeTractionMotor.obj b/x64/Debug/Drawworks_Solver_FreeTractionMotor.obj new file mode 100644 index 0000000000000000000000000000000000000000..eabd0d4c74b1988c33e6e5e4b0406bd70173bd11 GIT binary patch literal 24969 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/Drawworks_StartUp.obj b/x64/Debug/Drawworks_StartUp.obj new file mode 100644 index 0000000000000000000000000000000000000000..389c1b30edba64fab27424358cc65566e47dd045 GIT binary patch literal 6266 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 MHSP0Sd)v+b0Z$s3`Tzg` literal 0 HcmV?d00001 diff --git a/x64/Debug/Drawworks_Traction_motor_dawnmotion.obj b/x64/Debug/Drawworks_Traction_motor_dawnmotion.obj new file mode 100644 index 0000000000000000000000000000000000000000..ec759893309d7a9efce1f56ff1f6962bb6395d5c GIT binary patch literal 21809 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 QvdX5~CH2?U`s>Ai13c(5;Q#;t literal 0 HcmV?d00001 diff --git a/x64/Debug/Drawworks_Traction_motor_dawnmotion_Dir.obj b/x64/Debug/Drawworks_Traction_motor_dawnmotion_Dir.obj new file mode 100644 index 0000000000000000000000000000000000000000..e48fb057291a906f33c2caf9ff9b50a59a6692c9 GIT binary patch literal 16053 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 C)m`cU literal 0 HcmV?d00001 diff --git a/x64/Debug/DrillingConsole_ScrLEDs.obj b/x64/Debug/DrillingConsole_ScrLEDs.obj new file mode 100644 index 0000000000000000000000000000000000000000..7230feabb53f1aedb5f199deb6ddd14e08dd0225 GIT binary patch literal 4300 zcmb_fO>7&-6@C3K+gB=oA=(#yq%eyQNFW_Za@ES;pT3lL*z)vR?pimXL!d$bOHa@{EqT7 z0Er?`g%owMx)e-1TB4yHM6#FYcL7JUA0SizWXM$VcD`xFIwHG|=n~pwfeVe(_;{$( z3~dm-4!eyqPA9I0&UYGen44X8k?~Na+wK=aWi*k{#dJHG{a|E_rC@28M$ z<_j$=qE}(}%Uwiox$%1N?2JR?CDV+@WYNuCQ^$EZB|rD~8Wi%19+c#|FDS2Gy@2Oc zpYI)reDRh~zW9Of*?-6lUvSkIWaVl+C@LE}J_XBv-}vb2oxMl!f8y%;-u^vM5%7S6 z-@LxQ_v_bK&x3LJ0NxQ%LzMNzxV)M;!HU&HoB@vuc+n&`5({X$@0neVMEu8|YI4nP zz_@X0L0Vo#cLln2EO=)y=yfgbAYv8kdGkn3nb)vBK{i@&x?5V#KPK- zRz=IKyEnUi8759QFMhD2dSq*BZnj;!_GHtk_g+rz4zT;$VJAR4)K*Mh+0lG@b0?P`N|tR^ zKb(3*I&PSlmu0D?I65lDj8a9@Ra1)TdCSrYQqeG_e5Imm1<|}EnbmR`?MX(5r!}5k;3QlW_e7*c+4W!mnDTuhEmnlv37c-FcN`0cBqakZG*Fg=%W#=_eCiz z7U^QXuq=fOr`5vp*rHJ_D~RemS+=M`r>rrBdtje7)jZcLi%YD9p%gx;8&0N%@K%nkPbH_Ple1H?x!LsGbRw6Ir7$9eSwXf>P4Wad&Q zPbH?4Gs(Sc4ef)WM zMaqQSL78N>?c)EKZxNx^@qdeBy29^?<$nBM7fiHY<9CNoZ|&Pa^sUByyASwZAjVhg zgC9N(wS7SN)(!#j6{!sY9{?T&;@e&u2R;aV9C#2o4}1ui2Oa`00|$Xs;KRUYfk9vc z_<7)qz{9|ofsX)x0z3lz6)*}!cOb!W0Si~SIUx}jn=tMY&M((BpM#o_E7<2n&Us_x z^8@d{Y=_S=@u!xLAf7$m&+YN{t$V~L&Y9m((-#!An6K(KR{PkXRxF4;cTnn3qmFA# zwWKJURaLO-mNuy=b=&jOPi5kpL@^6@DXp_5J*Q|^r7QH@bbNMVCXpVL{221jc^Iy6 z_M90p_5Yl7w3|NJY=XAf0(2UnUqMXXTzr&5$?MQZPoU%meRQV9&Vupx z+D8{q?iK6`N~{X#{)O@r_+#E6iF~H%BR?1)=lW{4S_ixkAXQJlVFa= zG??SThbYIR0OojeGrzeO@<$M z$MJdu6?M&Gyet39r#SkOJsG!osF*mUJuX2PT6>0+lea2rZZ!q z%(0Q2>n2(k{BlQIxuR}YEmdho=RUV@c)WVN9=_vs%EsHB$iC-Q7&tj;TK)j-Y_S(o zZdlVJMcv5T6`U|tI~3_wMJaZdI}RX8K8d7rr3#;{#3^YzBXMZj&Pbf0wlfk(s(TuB zov`j{-ErV@4oV;2UL4Tc2eWow+%s7&m5JqIe5OzHA$~q@T9nHrOZg>rGHrJ9(G~1cVYc z9k;{3Ln{*OE_BVe(xpgs`zdup3z*cp2@kcfx^~s?BL&v4rTAIFg{nyQckb)|nEzx3 zK@{PBnK|d4d+xdCp8G!k`=8W*=^XaGJAYOe>R{|zCPHp!LwBdd3CuPayVb|o%Z-BA z4-jB^HM#W-8@e{-tQAzo_MVGR8Dp2W3Q7)u!LpX-w%6Bo)+#Q>`qLRJ{~Tj?w^@8a zRujzacJe)f_iG<-$FbMwxfV*q1<3l+NF{c@kPkJ(sqhQ zc3EfizEWdELpcE>lA2=-4^|;{I5qVd1f%yvs?mEU_4eNwW@^rGY7P;HOL9bF^emEN zL=GE~lP5SDZ3tff{dLA2uZ&UxWCo?oUm~8A%*f-rC~M@vP7Zc&;~=`9fEgAbm}W#u z4H-R{M@jxH!%P9STr)8l;9I zHZHqH$)>DQw%JF8KPo8chKL>#g-{B#i8LC<9*xY#Kl=*lccyaz{FIW)d-v6U_ru_VkXhPY z92qQ*{Euh=VIr$kZm~y&mT89RGyEyW*oYAxy#1DebfF1D5keE{Id)At6Kld1D;}T% zR`|~@GxH4pd}HiKLceGa$WSp%Fjh;$gxOtIon&l&4tg?U)?uS}FzwaMEcR;Vq|)`q za4GM)r_R}!`I|vbLR#s1!rF}JSqo5tts_!en_-IHV~W0Hik=nS(+^(JOHWfSTQ7YD z@g#dG2|+Ivoptw49*YhVFv9}qUP{r}UMiRp^wM9U1!OP%1vQ34Huch2*^P=CM6tT> z5}&Q_Qq;Te=JOI8jk-a!jWgFIbne?Wst!B|M(+;14-*paz-AZZyiRDIVICl1F}sBYbcjLfTBccWYPP@`M(D|PE`bZg$-Owsww$NQ=1=$`!mqFeK1 z+l0OyDamzf-W*W7heVpZ2h)ryqT}|}&Wk0Vv!|~&OV>wAOE7$EAd=6*C4`uzB{YRc z&l=>7qE`@;hz)I`9{Z{Gw&A%C@#O09cq3(v9H`-7_j(SZ!kT^CC>AXZViqP<9yRb~ zM23yXe@8})p_3`E?THNa9{0cY0M&?ixgo+M#HJ|H788fV{UB2~l`e3;#)SJpp=D+k z=2V%589k8$A;@kIDkX{3=b*c{puEC)c9!#zC8h&n)DeqJ;dgL94H@F)lrPEE0; z(L500Nw64Z)V@)07!j;s=!nCNmlF+BhdYRdLbj_qgxbm}scE^*9 zrLssgP3Uii3Bh_Vh9u~bF-dO$X!D`B5=41c;Y_N1|RD09atP7U)!u+j2g zrDo3_znZ0Dmj6_;nPd5n9uP9-$z?SQ+R!XS&^`-Em7?pQ$Yh%Ou^$OPcl$;)HKI;& zrpE5Lg+_0KuqCwX82hmixfQ#PXtpe#puKoZi=ZfTKm)#%uM8Tqo-%re)LQPd^{z;G z05%#9KZbAWJ|>U%o=M5vemx8%2aX(nr@Xyxkt=K=l3LfKRfmDW|O&Q&**+JfS`b6KcZ5pTvVmA#|C1?}jr}axN*XJ0U zpTxFeNNy|C+)i>M+~gvw*+-)d2b8{pH}pbE z?+chI#oCGK%`8K*Z9dL;_Kp|$0_A2Yl2i83@iflECux@$OxJu`A38oo@X&Pa;z4mI zFYi5`sd;GPcJW{emvW{GIhewqqA47UkDRjyQFXB$3lDbPY^(e*67Qo_M8!Wj2}-kw|HD&8sEQJ6U1D7IN#EGvhC)BygehMB?FRV)Cro;7+8s|{=lj zw&XVF1N;u_xxK`x+7xH(=$xI@D|!7 za23S)|0t*fBqu!B`O$$!AckM0N2d((KAJVKz@i?^=6DwQrOiGeC(7#(iPrFnJqtQv zV@GYL?~~VBO3H)JF%qOyu^bN%fJ}iL4}{ZZ(&QNR&hsoW&brd{V)98Q65b2^ujF{3 zqNU@3HaHZt?K-l}w@z5spH^YQji^YC2jOBQE zQ4R)4kT{)3 zxRb&rH4@Gy&S8EC21a56JZ~QtO3zOU#ZHLEj9r!(MYfYZF?b$~cg*DyMcM9b{D{9v zuY-67NYS{9Vvp39pj}_9cg1sSy(JorH>2YmU!B;dA)Dr00Jo|86u(XCM$oRCDf*7L zVq2OL8?Jl2;yq6AJEbB7or;ic#i=WcF!FR!hv(}-?9m+wytYXl+_9=~nPTV+Ks+rp z!de_C5+61ZK6*}mmrnGF+io&fTP}|@#X1_$+8o9m6!+LHcm~4EdD`pcZpB?lrV&BV zX*`~h&+u`YvL$g-_9s-tqdohjN(7xM@r7B;q}cDNCphpwyL>Fq!pA~SB(bJ*D;|U- zhL%T;H-4@fKzWzYC!X!jPnOe&^v#4cJ{=Q6;cev2Ll&@$j>)Iw1%hH(JHpQ%u`(ll z2C)u@%K`95atOuJ!lk~eb8=7!COxgGJlQ$kh&4H>n09=Y93KNUp@m#W=MP8QE|q&PTfXRYUn(#7L>wsi5l-BYG@e!|>Bvl-1RLVaM`%c@KwysY+g z_iqc5F~nmy>19=> z_-nNwM$>veumyOBUe@=e@1~!(34JH+yBXyU34N^szMBzlMB!mEA3sL1=$=u4_v)@i z0A-EqwCUj*@~z7V>WaxiP%M`RnSg@#U5nBW?^^tQ-n9^3tqAvC4)ZGl=qcKpnR!<* z=E(`4&0{^_Z^MWF85AMr!MN81n$&r>W`a7YyDxLBNTcllE_0X%Xkyi8C6jxsW4#Dj zD3x}s1Z|s}_=@mHA)bDO+tnFrRBMOvftA?0X-a-@eF7z) z0?mT4J_Sqvq;{}=K5oQ?8vV+ z$VE=V63b$ z%u;;l{7o;{5kBr4ADLU1a}78n-@U9umUvqi5rv2MWwm((n^t@%a}B$<5AeyASYw=tbRVgtagqzlnc+yQL?h_ zR?RbrC)cEp(}oncYWT>C?C$2VXg>#idkKi^G?YHBXNIykZ;_19j3=I~&^?l)nLFJ6B4Zt>QZ%v@&jcHYTBrhXaCkP-H-YHnnV%X{-;4 zS|rwo;Zn`yC!8+SkLV)5KkyLdcz z)h-^-jkSv>@!s0@QkwK4smkl8%!**$6A%>jHkLhI-4pQUaP7I(j+1Y@o%>JyHkK0Z z%t{l!>z;sO6!!#F3?uRHz6A$i3x_9HRsOHlg19G;%}0;`AKnv4>K%_`X_$1ZADF;B zfo^U@ab`5d2{O88Cy3X7f9K9rwEA!Hxtrd_V7^H}*|J4dH59kE*WR4ly5aL|dCEs8 zK_ENI{&&IzcKU4k_OY^-&W6y;ic12^TifxIM=b$Om{$~7*4o_G6l!P>EDP0kbTrik zHnz40YTMdEO?ABFjzD`?OG{JBra-GB zS=5C3v~R>uH+2N&G`H4wg&G!FmI=&(Az(rWX?eZHaARHm{5<^R)P}$u{`*fGYU?%! z=F~Md)NNk0p|z`}9#TcDqmw5=sg6bUq(Nt6dqXXy*KgQFR4@kStO>OWOU({7wQQa( z8gWy5ZF68b?AlSavZ=1UwWD=oXW;6lj;`8JU~OkteN$@{*{Q0Os?yfp)X`9N^|GqU z*47X*tOc51lv{|u{Dp;uRU4XGs*Ki-&h==1Zk;vF^NLtUdtE}aR-tv9TU)%k%f^Ly z3`SrchM~Slee=ustYTO4zDYC+Yw)>Be$LGz3J)dMtSVkvwyb3Jx}_^hiz_OMuc>Zs ztB$3z3)tkW8ks2;q_EYKKF-o6t$^g%%$3)amr@?m?O}Y1UAp}ny8e35cLRPTk#5V& zD%MtVbw-iJJ4|AeCecxM6@;zwRT^b$*<_HYjAA1Dgpg#kCY>L`C+O1oXHw@M0cIxB zc}1~Q`7|VX2U2+uNj8;@N%mvj_6}Tk zq}p_+PO=T83KX)+cXjcKb)~%HkV{U~r)+K6wWaJM;3G%2q_Oi64N#bCnr^B-c$i}NAEz@Jsn%!Ga$|7YL~4lDP7O2ORoaB zO+bD!y9wSwmH9mIBIGS`wewT5oreI=OQO!a#(%K}rp@jKNcz!+)je0-^${`V!hll}=~q#@a`n}vTtTXr zcOV66i)>Sn#@k+y+#PT~BoyF-iF)lNMn%#Rr6MkF}4AGRKEs5s$Ub}(}14`JPo)Rupjjb z0UiNt27LZ3###VVQIA%@FXAp<8{luzNM8WVg8m(VXG8x^zym1oCP1pkPJC3L`H%vs zMP*aC3Vbw2t^zaxD*$PpS_}9Sz)C>!O0NT43HUj{djPSh_B;xB4PX-tgWp^2>4jd` z0iK3lRe&FZKGy?Aq0bF~4`wk|14w$=?L=!61+Zy56@icJG#`+3T@3g%;N^g1C)l3b z=?cJ~qx>a+sj0l5_FN7Ucg+ye!x7y2LbZ|-STLkL%}ZZli-65*$lu(051d#gD(eg z2jInky8u58=$1!&JqmVt_z^lTFB_2LO$Dq3-!#A*051UC1o&}4k{7^7g*6gEb7C15 z0eBC^DFpbp^@Y0f0JHLOqT)GCt<`m%-Av`9`q@LHjHrAnuJYM=3CC%yb5UUCMfH~~ z3astg&{5ak)Ycie@S^%a>&8H5V?&^p4u64*Is%Qg9f2EbLtPDli^}E|)dy~BY^rMv zG<5`U2|UKGJPj-;<;JImE71<9UT;{&32C3_2yRQFI-Ul0qXx)XXJ)I2)ij9s2&fhT~%5l zKFaGFHmrt-wji5_F|4olkSF7+omD&tCTiyeGF`QEm5e9R&bB5lm^+UaxN*Vc0WT4s4dLIeu08&cNGtUM(v&_(^b1y$aunb zx3zjJH&JobPP+YF`DWrg zKtbhG@gQghK6x@-wf{O9S8~1QcX6<@cYy^9MHl$6{VVAFrQ4kBtonz7sy}4A_z-2j zbpJ)^{v~{RQB2WX>3{Nbat*k&36Iwl?(bb(5Hib0jGb0=;x+hL_Cu< zPa$}Uz%!Tg%+vH@(3gU~jMGar-Gg7~^PHv6eB@n#ybF2WMaWBftNk|Nw3o+mga*-2(X_FywWXsqG$Y_3BaKqp8=C9uy^`8+#%lIR zX^!QmXEPO*B_2}R>s-W+8=FJb^-UdZF``$mD8bW`(zP=J>FDjhk~?u~P-@Lfc{jh} zojRI$|Cq?mvlf5PWd{S&TB^`(8y7a2);Vj`Wb zWr&qe`RH*&YKqQwlxIVEIE#;;k30O4bLs2;`y&6D($BdkvVhFxRUhX`0*c=7l0P+d z!tw{8@4x%-wb1tvzUTXi&_#q#q@<>#{U2f9@}>II&R3%;u|4>S1?n}t(5=mZ~9T` zTYO(lqCLb4&TX0sn;NKb1(Z1Ki#&GsT|e{#UEoLUrul!G^3v<68M?wgUST+;;9Z+C z<<;Z=;k&zR+Gls=_Y|)_wEfN5m^KqSRK1>1zV_;GX=Na%St`2{-&hiW-G~Mhw4E9o z0rpXz$}rMI>NJhD028S{(6pn#guMAsT;y1zu`dG?Iex5ZCpESN=OB@KKQNK^L104O z7VNeKEdor?-UJ3u7_@JLH9p0$+1ORh;8+(hkzF|jP z+FXs@227+5Yua&*Ex|G@Qtt#N@;;!k=XL72@M?x^VbeVr zazcZ*FlmXr*_ieOb`3D0!7fevw#LrEbR|+NfQcL-jqTB?&uZE!jpf4KDDs~736=LU zjco=dQt#Ka?`rHVoqBgb<=v;TUjq|)XQPTjtK}No4NRo|O4G;yf^Q)(k=meXw`=UM zPFSB%c027ic;G`CLLmJx$Or$=qX}{OlvNs%%IUXA?(n2md+NOt88_-#M0R|U@#`i-7YbdfjHUT$LRbju$dYQYK(TGBDF?ibcsUHc4>?r z^a>iapumo4?1aY1#U)a+G#1cUp2mV2qqh7c%J#7nz(n3N8cTyw1T9-*Gc`7f_7$n8 zHAYP@HPBcN;dHERDo?roNVA@ zNAR7>u{ZHeb@Q!~ zADA;xNfdl6z;$BW-fJ8bvfUeyZ1JoHqJ%)X7b;qmC@9M@JzA89KuMWtr+goj zXRxMNJkNu2Kh_aJvH#akvXkFO|MxQom=)~*0h70gkJ`o=?Ee*%_cUKW%;c0qImqH7 zkTvZ8Bb4mq_dTMLHMIYKP~H!HWC?7}Tp^1Zfd^&h98h{d5j~%h3W*0Fi?S3k`cIJ- zWesAT4oVGTgAPh7VnLY8%C!X)`iFfMB?=1tt2{x;wf*-}>Suo6DAHpC^*#|)ExsE= zp*L489y}_WKfhYUxnz#M1fCugZRztG<${qdiXYmA9F)nR(EqTqcxHgI)j=r$WxIp2 z6cqZ;LRPK{Q2HH|4WR6EP})Ix#6kH7P->v0Rf~r}8Pq(vl?4UlI39HH90E@dI)+vH z)1Z(Li}DLl=r@xs$|+E2eYPln1ciR9+M;9t-R_{!i(B;5y%x_bp#2WYVo>O}KrNoD zfDSk)*MUO6!D{hr2KtPqpr#9{rUA4Wh@6kHFM_8AQdP<%>rfAL0JsS3d|oC&sCsQIw;qHLa!lOJextGcL6QR7eS#{+AN9*3cW^V zQSJj}tAp||DDSYu5It2=l|6W%}t%~q}Fa~!6o>nI#yl1wz6VHS!H?gva71|oY4YjG~XF5 zbViGu(Rt43TxWDX*M+|sP>t6zI;&f6#9IisPJ_Gnq-AXgF9L{f{C8};mcgm@4Y72G z{tKL?CRxMv$ zy`pSwWwlp3Y9kd(YkZYWyB*l=5J zf3C1PrbEZFny!H$KKtym&wKypzp4G)Gop=!m&SbrvCS@$sZP^-lk zWL3eOO-{apNIq%HN8CY{8_a2S@->3KbuDA(9v}|JuEU4(Ioa45)Zrrd>;dKW=hU{< z)r2tP%V@j3`)C{D+z>bk+xGbvdb!? z>-8!l+BhL#MA9c11N{|99Y{|S_ zk@K%{G+GzD|NE+lC1o;t zIG2+AS%#Sg>T1oz%wYCDU&rMGB|$K-3&Vj7A($n>eZEm!zlByXOIC;bM?Ka9RA=L| ztCVcYDrKA9RQMr5$uvath$#G8!@Sb)k2Z#m8*`40+Htid@UTrn*CpSUPxg&qSy@JO zY$pjL`yCm9F9S9WAQx;lt&ws^LK7wtF_#m~UMl;0L1OUVVVE;0eP(1yYvia|(pnVh zFN*wJG=MOXRVugGA)#f4VfqYznlUtJg!>-}^<@f87>W>@P|vYz5=yQKSFEUy3RvvF ztkldk{4Y!LeR3Bsu6HK~yG7T0|NG=iu(#}!r^xh< z{;vC^XiVAP>)%^Xoy<$DH){Gl+GEbKhpSX~?FXZGcioTahj&-A19JXAXs!{j!^U(7 zv&6G--Z#7k*Otwy+Xhjtceg#5ibe@LZnP5(jlLTu=-GYERnYqd-eqa(5yLD9Zo|)q z*@pgfWAaHeO?2W`B=8x?*@-);k=>n`cP>+OHS=lS@$8+LcR|}^y&aNMn^<|JplT;_ z7^a>>MKs}T8Ty3G=9+8KS4I7*Akw3L{k$Rc>Og}uTGuKD;{mF>ZGqU2cxv@{x}KY@ zw~B+^t2u}YTXt`wShOUF8J2W9WZ=t)3>cB0MFx$d=hNQU8#&r_*8j#HsuA&WLxcy3 zO;MyRMh=8~K&EgZQ{a642={G>4H+Yj$;50B=OPiGUu7GIsJK!17&jdy9$MW7N{n<8Hc&#pJT@b++s5Z_M44x$9-$(U;Rl{P5AULqoqDGR*tI_cAPZVIEHzD^hNJTc*Hl z7v^@oJnHDnGG*w`GUXbbXPn4$X6Vu98LAeEW(fVwFd-P@uc2HP5jzZNO)N&y?oN=6 z=n~lHa>Ji#3_WkmIXY^`1x^j~M6l7)UZLj79>1EI+)Mj**pAPY*3usB6*8uaB{P}@ zZD{5pXrFncO3_tNWDIRdu-6E`@W?tf9R?uUdpg_|x6tUr5H^o?6hl8TBAcK^otAcw3fcyfg$dg9iz(POPPc4GZpHq@DtL^MnNk^o zHf40LW`}v-=@xy*wn?BSkR95-Nzm4#O@p7-F1b`+ZftlS+lZs)m`Ii!T_iKYGl;sI z-89m0=y>ewZ(*U(OPJVUQ-L&Hm@6~eQWPY|S1I~(Ai~mR# zjKjg(R4m42_M8!Wj2}5iZT&VkyWC$e!Q zlNQ8==n}L+qi_&i6-=;&l&%GA!d7=uCO+YdK7yvjcJ2JvVphA;V3hko-P6SI#K7^~ z8M@dob`tCn<8|MGUfUymFzqiybnh5-Y>d%z!$r7 zbnztELk4M})4D_mmI661?IR^sCF!6QrUXgRc7?y{9qe(&Q&B>uT>@=9Ym=|DCtzgP z#?$O2bH#3E3{a^`1Y=h>t86~Kd3u%}O1|j+G`T)py|^2eGN~m&rn2f;k&*cRF$a23Rv|0Jk=Bq!V-y1K6( zh~XFM(XnTE|IF%}X;BYnb3BXu%x1Tc6XkV?M5}nkPJvF?&`H~g`}|T%NqOKoO@fpv zma}0G$P~!gKsaq8O^#9T9Bzqm)|I9flTR>_@IK&wBWD8@Eu9UtxuKw)4U{IF4Se4t zoDCdJ2bHUYXpc+ijY20o{I8dZADnG(Uj+l$pXp~wB{o;C6MRG!~s*}a@>?jUP+Bxfa zigfXKo+n*A@APD8otZGN&`d^iiclYz_NpqA2(PL=U3pc#Ih?LhOS15UN;yuisuJ$Z z+DEGKBZc;=Dn^Ga(XW&;as1*U`GebnWDN1hO?p+8DgIV1h|#o~4{8D4qgV9<>96VG zZ9?BE`)e3>ZccyAAUC4$s+doordV|E8Gygmor(a;O6aKR*UdnKSj zopC#dtJAsr(nezj4MW_=G<#`c)n}x54)iRPO1o8pwvA1EMfjr+Pv5~K>g>dzgSYP> zl%jTt-Rap1WwA&f!x(|Br9L zZHZOz*tt%U$`G_EW1H*vLwSAjBtHVpg0X%COaG+1S3e&!;$n@+W_FYJpC0``o0`Mm zTIkS+kGvWd<1$#6d@MY!jP(qc(@TD8Js{kTmJ1$gG=ered8^<)akM7y`aLNqyK_*&^5ph>V27Kc?;6_N4G67a6Yk|eU*i5y{qjSy+ZJ7~x7y#qqn8O&yK1qd$}mgtp))tV1x0wm zw>d^_UC0}aGxD9wDrAYbZ6WcARy=#U=Z3}3;JI6|Gk9)Q>|7;Ii5|T305#F(=8&w%ao&5Kpa1pXQ?~ z!pEc$*}aJbMWQ_%bnoM0`5P`Y>JoZmD2wy9$RN!i;z_rmZ)G3p@@`*}q0E1cmt^SZ#xFP$f|;L;h5P69j?Mso zRfgiSH#kjw2?^p7ZG4~4lb9mq5!mGY+8i_ISjQ+KnXW&buj3pCAdBumO%pyMTW8E5 z{bWlANfmKR#q1^?>#-z{dU;qz?Qr{uoEiD^Ov^`fx$?rq_=w1D>FFaPd9k-k;+#P( ze?ZDL*kbvJphFxVQHt92lCp7cm;{kX$9aPGO+fOen%wa~?J1lX2^`mw3=rNu3GWbXJSd zdv&bF9WQ(0Xzv~>^-@2AHvKG{CUvZ$An#e{Kw=d<21u(^hM-NEcQHUL{S%E1d212t z23?wAD3wAV!9?!X(m(Mxt*Ddo?K8gl0uz4|E%t5+_t7pE&#knJ$8$IB;_=*2yLgiC zsckQuNzak0yndpr2-ckdK~Zm7+0)gX0B;W0UR&)n`F7j6@6>NvDdEnnG|{{61Sm#v zCqTt83jg6-uphQ?cyCqZ|5h!CI|12z1PSoboq*Kd;mDwkrghph#pzJEmkd*!9HV=8 z!m{^&f9KA0wEA!Hc^vOrlrrCFplreHin6wrPvN(Q+AHo}S-PZRWkXX(V|A#ZrFlV1 zTU~y|rs;(h#q^s>6~zxWS2s1(ls1Rz*4MQawY610nA5WMQ*2S%)uSPion)^LAI>gb zM&CY0Y>ksv+!9#W(uUtCY7S_^^uoY`mZsK*#=5q^g2w9h_J*3kx|X&;b!%&5Lk%yw zJOvZfv#mT3Z0VF=jJL0VXAF>I{Kn~{s(h*}$%%73tFZFS9tz|@-hx|$8M*S2&t z*Fvg@wTE~Tlxm+{OB#gg+v=(*y>{(-qJl9nb$Mfpu+)^shUN`ZL@Taut8NM`gk9S! zmNe9~wY0aa3kB|OXz!?Q46F=w)HbwKkew<@s4A^(4efOmcQ2?YZ)s^nhLu3`3UdnZ zmp7}Rpki%9bA{2;9$Jm|=hj)?G`*0ux78#yYXw@jsioPozpR^;%U}iOVHw#s(UHp7 zBHlNte^OYE&t38}DT^pP6t7uYw4`)F>C*C&MI|eWR;(ymQ`yv7=|N`KvoTp!GFvQ2 zW6MV0z%oYvCuDo%E?-kt!pF_Gk#)XHHyTT;K{o+!Nvhkz(iJPqxi)8F)sU3YZ1iY4 z<9-*?mio$#(v@rsNW~zH!Dp#Y2uVe0u+w<|7CuETy?-F}ehTo`qRP02O&Dd8uwH8uR*86n`TjbJv z&nU(!L4N{pN>aUxii^vaSsmp7Z9qK(*Bz-g-KnE&18EvcS?asHXz{8N-g(F$Cpu5* z%F=sF*vG&}UTjHYS0Nrmyou*4FIiHC;e?y>sf~*Z$mt#z2QY%yf&O*C+fu7DZ>j+L zqj#X{UW~2oC0*UprNt$yd3EW|zuN@lB(s~~-B+29saGK`=xXO@WIOi)=A=?*UgN)5 z1JjQ8y*Ds~(0KeZKJGR?3De&W`fvfRn9w*lC)p8DM{mQA4sCpSsn2JB;@0RNqgC< zrNw;QrPeHOA{Tad*hq=+20#&^NjGdsR$qwt9X>tys6aNNK!$sqV~l;4u}+$^J_ooJ z@C$%H0yF^wP-;8i%NS-+z+VGC26!u+OFIB>2iys`81SC~?*)Y1&K>aIehKj3;i%XJ z_!J=JI}3>Z)p^ed#{L!X0sKDH6M&>=E zC(vgB;QzrFR08-4?6eSY2MR0&Bz+8gR2Y;9%uVI-a0~b#gG~W^2=F#Q^eL7D*aMgg z_;tWMK({>F^H8wMyAgb_AsY{P5b!3z&wy_NU>NWdfZG9Y26W4#y&na;Jp9lcmzNDl z^2Pz)3BGFq%K@(kybti707+f|9~G8M1kH&RSp?vn6sHj2-_{rE$^*>G$BBwhXlSXd z32kC3AJxwu>SaXbQ*o8g&PzBBXQA1FNfT>tnH^Z!v9`UYt)Vp(xM^Z-pk-YkR9_dU zrn6vRVtb&zx;?P5y0N1!FtK!cVQt{k^$j)kfrj<~&Lr(%#W9fh8(Th&vmZbAkOxatQg9t0EhgVi!!^@E3HJe7W6>jL@HW+d(cAD;Ga&~0vS*8ps-+EYQ* z{wI;9@ID((c@&*+l}|yCm}>WI>>upGka5-SDjozAwR@RNSM5&wGz!Vv-PY;_`FX0< zKRoRlyZ)&*3c`L~I4y~Gx@tcKk*vq}8EPU5A4B^ag|TSgJ3f7 zDU<1{{Wr?Ek{f6K7l%K47nqgHyTFI1{mWv;p=w)NniUQ-E?>~br?yMJO#j48|FHk^ zm7y;z&n#J9n9c629mf`gu4PyFGkn)GUzwnf1N~aiue0b^q)#NCF`B0UJcZzy#(Ab| zdJ*XJL0`b>#hUKHFZ6lA(q{(p&P3i>JnwAer8=tpIN`L{$8m)RI!EAqz{4QE)!Bs3 zPt^Y?&>63aW8(a|N#b;drG80)&fQ-TsONX5q$)dlGQ9&Lj%AL}DP!-Ke1~vEK9Vmi za$9ZPy6TR`5T4%59^bI8rlq;PrEz?~K}H&-wAD4$)_Nti;tba0kJ_pPoK^;U4Jy9Us1?`M!bg z0zVNth;Tz%dRoTs3Hzom-Jfxl9JVRgg`aGoUfnDHm(srlgVygr%qnVZI)v7f4$v(l0tikm7J@T4x1XN z@d_w$%olm;i;w-t546ya+Fk8`G3}Ks=Q_ECjtmR!olj{V))Cw*Tmz4p#sd7VYe zj%Vb*W zUQO!8mID(xHfZc?z(g6(Y1$c$1>p4&sc!%id9Q#MRbZ=tiPW!Z+98cy zgXLJHt_3D?Y}VM5I`vge8`4-YJfb4+L9D?yaqTx|DQxkTsz%3w3CXW$Y&@nbk@sF; zA~mG3L7jR4u0SFAJTSrcCNN>iE{G78yy_a2dMI1jv;%HKVbdRD@QJ*yY3!Eklm_*{ zMCxZX_H&&&9uuZWovX19U_$$^Y1$Euy{%J!iAhi7{gcLK+@SK-1C!-y?6^+7H=t5O z8tVln%6(JQK86k?q|^ZussEvAgBtU}6e9IDU?RsNjeS9ERKQU2ZRW~c_%fLk5 zJ-|dOOqrxwq30H5`-)qY?Jt|Gas)J115D_$N7J6s*fmpB>RMo;w9OiOQm4MEX+s(- zhAUf09s_5#$U8-2jle|eS2gXB#{5%N>iAq$-&gV!cDPX0Xy!B}d4&q`SYw|D zCbiPEa~hj-he|bp30?MT>{XqbJx`_PYiu(xA-OWBQXkaVQ@}*(pEd28BE{DVOr##s zv==p&HD9IP0ZeGMT4TF)>J7!pR%c2S7Q(_Htovvq$J~xTHi88tmdQ>6!=w%x{mwFBnQR*XJ+&CYwo5FNZ3baDr*%p!leL0? zi5`3*iDj}X5HNv*Rx7bgmJR|r@JBFO4G6=(69W*mt0b05|HeY*eM(}P>>@Bx#+wq$ z#3L)E%T|eHvh0yc=j$bw$@T#gb=xnoOm+#Fu)$jr%VhK)XJ91gw^(ACY!@&X6SS{L zER*X&w)Zhi#k>`KY?8);8lw%V;H%OY-MbL9T^gfj!h%LED6rESdrf1coJh^mSU_XB z8VhRdBC2>J%J#7g7(nFB*4QMC&D5BoF=}R6n#KYe%hgy=V}ocQslCSN>7t-flS+9S z3ur7?V?m8Uac+A*Zz*a8KezoDj-lDeAoyTOmKc^*ewo3~TZY=#&(8w_3+U7dz)(@7 zQo9LkicZDk$osvYVM>%3CN3!%6A~W*eiqbNu}(FBp~{fFSYy-=gwEx_P(7rs)>ws3 ztpbM5jnrC=)dLfGNh;aE$5REi9dWXOkDb6b)e<{X^d_p2kIe-}y2beQZNfdl6z;)tJFu5nhqD)8nt0=>wtN`Vk zP|c#Wg3<;REy@=`xf+wFMfnaW&)saN90z49))b59e?ck7>LDoh|L#e4^84ujdrkmm z1^a)x+_)OcTm0r z%0W%ZvHh1)>Suo68KlRCy_%|e%lBd^FFGiAqBcW4PT`Wd&|ib62kKcGz6DAEMz$y; zq1|=|X?1-Vqy0NM;h z&WB$W0Z%8UCM#Drp_rm9%3h%Ki&_??7byLTl|}ghQ2J#ki}E5+`k^L^@+wgJH6n}h zd!RiI$}qGH{T748GZqy3H3UIHEv8RHEjk^wpi^}xrV%UGG*DWuA1e$YL@S+S-z`g z`L3Gf&v05Y->siZp8}V@1ulIGT>2Kc^eb@bSK!jGz@=Y-OTPk_eg!W53SIgYy7Vh_ m=~w8|uh6Amp-aC)mwtsV{R&CX|C*R=MwtfuS2Ep6#7>t3=9pf*rzBBd?5YA@||tpe)0QtU0QebBY6x!<1G|2Y47 z_~^sxtems=?3vlKXV1)@nf=dy((u`f*;AkY@A|4P#?~+q@S&e()@L75C-u$+Z?oeg!NI+csDp-jed?qcl0 z4l7@f)dur6IrAMr@(Eix${l3+!MqM zkzQ6Ay>HYS(U!>pBa%MZ7#^xd>Tr7caRj6H^>m~6Li)qMHq7+N!|9WWI9xheBu2*& zA0u+qh@5?$qtV9Tz2949Jo3gVN&wHG|r%nau4^>tr7ToyzIc5W06U8{IgQOVovqsk8oN~R&AhehRA8Rn&if4nhz%$RpHd&lJ#!$UR>y%&62J~f!d za&nC5#2#Ws`a7J3F9SLapcHgAqlHRGLX)QwF`pC70jm4ELCWC2)i7sK`s~P(j>r+S ztfM3{R1*1_=m4Q2t5&YDgF?y-!}J;cG-Gtc2oF6R8q5@uFjOHVp^;;kB$QkdE?CJR zRZ!u-sNBpq{IiVFA4&N(k$jtCwOfhmyF^-~p`jPWJkI5%^bpty&*d>PM`#&aMhQ8&P ze1TN&81H&aiq4edz3IJ;)SGyXO-B8YM}N#a`cSPJu0zP^JzV#}{P5vwc7x9!2+cR* z4cM3gVU~GT&c}w=W5xqcL{F1U-kZxe9W>$cHSM9x=^= z$Zh!fG}|zgZrpUjOcR5+0}0#$IR|kMb+UU9^TB0`p=LhK2cCTp^C4(6*4x23HN(mq z1yOrY!Z5WB714y&GV}>q%w=maRz>@2!P29BL%bvO>Ohk;+Snl`<9=$pZGqT_cxvr< zx{0f8pq7JOt2u}YUG{CGShOq%3rjK`H1K6ahKr6HnA8* z`+7h&qD!Ekiw%FKG5WkQ?@0EJbDSFHiO5Dvd$qEa{eESc+)Mj*=#JY;YiW-T2p%)V zk{Qi`G-P=Q+AWV1DY^=ROrR|Z_8Q?AA6}=-VF0YX&EXSqD~&z`W(#OXG5TX8vKc#y zXs)cDpuKuCEM}Ha2PEK&^^%}*(=ns>2(8vW+sKN92ce(g@KgAvp=0uR?}fDN?Q5VM zIcenFJC6*Kawtf+*vpxHJ&?h+-=e73l90V)6;f!pjrw_wVl{J?9*>RLLv6`>Xtz?< zGo0T5wZOKj5!0A$STq1C^%+5%(vpb8+vnM!N4KKZ3oya;sqQ~2)MW@OZ5VW;G znUw?+;UbhUwc6!$!T5l>>yoScfNFy2)UVCl1_+gN=QQ@ix<{G`HAPApyq>{+OTw4L06|olo zku(@52k%p{7+2a$M(i=EM)-{D{e?3`L>X>1J#X}NMzazId&LqWo^77wS{^68DPlR8`Hb=5*+ zU+w}iQD_2V8)#W6jQBxO!fK_<4mh@lhf$tkF9@RC3)*&xyM(#B+A!~dlDzket~|&W zyK{8qNw9|u(nP0qi4ZIW(k|^KAyp&kpcSSBNzreIv*`@8}lVA#f4Ing0Z+gTyC16uNw{ z35ekr>CuU&`1s5joNZAL<#IfS{LE&b;1lI-h(v37!(ITLu+bB?6ZhGrmXPwmbCMV- zQ7mV}ZjdREvw?8hM4B9<(K*&)<7_LL7Lyy8NO&*szmco&IZ2k z5zYpVCUQ1V2IXvM;tD2b17ROLXG4dO-wYFCEfo7nF_yF8k0*`MAq*lKx7_&ye?$HA zhX2T>n^Vap_b%tMF#IlnGldk(F_KRWNxoubSd>FSVkA!G5$>3gBmk-%G<^uUf4h4T~BW)Q4tkrA5WK#};AiSU_o_7I)q zllR*MF0x!2$-Fu`&)O8moe&3X+PeT|=1lGBa`)g9NT%69(5X0HkX!dS-Po4A8;6n# z;?bA=QY3;-k@%u4tSI(*>M0HU%`U&n3$*z|S5gxW;lt45$o zIgLo)RB+>Fm=Fr@plm*hAiEfl+!W6i6id?)e%^@X8R;`9>u|Ud0Dr`XP%J5&>-%bp zgMu;1X_@d;ZSkwN9_Ne_+Ty*agGL`gXIFa)@t$n)8!1Va*cR`X@)ESmn|w}7Tgkl&@P)e@F^RjM!tOBk%}!onW%b?`8y;9A?Or@hLo_yynB<| zV&2+RY%%92W)HQWY_ZT32Z~fl^+)*35w=*(Mk$q$FRoWrBq#K$Ig}htoA`aTcCX$;atcRm`15 z2T3%3q|jbfmC?aVj4LHf9KX0o{^0f?DMLJRlU`M&ioaD4Vm7VjlUjiH=vDnd`fK`m zpU`*8{u+jzo6}!2!j&kzD(2HCDHh#x3gEAGry_v55;|&nxP*M$GJ>|kSO|*c<{%YN z@V--V%SU%A{xR=V2v1godn||fbpVVM?ZM1`bbic}5^l|7J>KuYXMPK+5Oy%`m4Ie- z#_buaPUr4R8!Z_$4RIgS93aE0&q(nc=sBpBcB=$!8=Lro@JAn>zJrI=*@;00Z{I;E zMd=c|({rWF1Z^^_gHY1v|3WdYBdC7;7c86gWIo}|!ynk|>=h`uI6S8Pro8-=sG z$MO8UZgFkqB*-WvD3)7?Hp~>fZm)C`%TqiVESH1jU*VF95YgHC*CB&C(+)Ez2a}p; zqa*ICD-%@0d%L$Xl{$+%bO>|YTiHvpyxW&#sPJFoB^f%p@e7WG!19x_aQ~d%(HZ8i z%1~U62B)eoAVFNBjqme$5++g}flWTH%?b04c4rIDbp7dUBhRrPyyyL=m@C%s$FvJ(lEAFAq!h4!4iUS&%=^w0uMtD=$opkBHoso<1Vt7kj%T&KcD5 z2c+DBEtZc6GQ{x_r6}D12^;r@Nf3#2oF{1C1SEf|$sG^WpTdce!0`}Q!JAbRT_EP!gx3yX!k@4Bxn=MW=v!KM${v*ej`^) z5;>2~UJ)~Ca=`QNVbVOV)EMJfrB=sIn$@6^{s`Li_ZONpUrABA#FM60%1qEEvs#4S zt7A3peAyjGdiPXmlJXI>$!F;_sbdutd0U*t;d%N4v6kZlzs$Ja^NsJf0hBSDxg1 zYTFBE(sQI5ub(I@f^{cAP}G}N_H=b8z&nR)udQ~Pe7o)3cj`B-6mw@$GW4!H0V<=o z6QE+4h5zt9I0Ridytk_Hf2$tEoq$|Eg9P~KPC#n!aAeR%(>iUM;&dq7ONJ>e2_=>ROxYE85pL*Vna_bavJ~kk`KU(`<3t<>SGTonWtx9m~#N zMBhGE-WFH2rfF{f=4lHVK?PzXk>~3poZd)H{cNCl!xU;dd3mF21`Go~}v+@c83%i?J8Yo&=kY6yTCZC5)R)2p( z(zdbs)&@4cyrp?9wK6cht-YmveS2U!{|TwN>$+Q70@If@1g76#*V#6=8SUv@hu>Q2 z3QTWpZ|H7moNK8jFdd434jrW18mtT(>kDS(<2Rz#2Bz~LY+74azacQazNxW(!`!v) z-E9rvDq>wBo&=$~<~EQ7p{CBpI!bR?yPl}X7?{4irCn%hT1#`=hH0V~*LT*n25y61 zyQ-Ho*LSvewXX{W?riSru4@Ub40Sg&w^x&%s>`S;9i7cxjn#K9s;+8pZ$W{TKnsfV zittx3r>LlUZF5_-(cTqWjsEA_S>8Icn00m5Csk`TdbhQ`&2zl0o0HF=1?Hg{IW{qn zD%oN_HfelPSdPyf@{^uJ6dp>~EG=15zNli^;_^i$6(uWHl&q;~?Wpk}vuoIdoLX5d z7NoIdcgJ31a7qZD0w$xQ%fwd zIgga2CYis3&mx!1Bb>(AQNXduWiDH~xXR$l-iZRtmyNrDd`N)ecY3wq@gNWbA%T<*vsl;@`&H2>k#W|F8&x`$-!RtW(I^e~r zwV8KS0OQd+P;<}6HunNZGq~90OH0dE^XAf>f42(ANoH5UyKgd|Q?G$t(ACe+$bKFG z#8307;9*k8PNAQ9i~nLBOgrB9-oao(^YKggxcm47RDTQT#{jdEwikn{Y7K932g-N{ z>f>4@*@ko~gAgT1MqwWoW5ikEvmX<4?;*f(No8D7wq)6zWn4&VoOd80X}@d}lIGoB zklX`tKR6WP1Ealc)zVTv?^5fQ-=P$Cci2dY@FqYBp-DGvNmgI5_$@yD_^3cSqCkp! zoMVhV!dMU4tT5nKzzEqj z&gxraxoxTtAk9k()XdEsV{9$*QTrMJseR3WKLGqR;Ca9efc?+2uI?8HX}vW*l-EUKHr9mq%aaw(t* zxB_r5;7Y)s09FB#cX}1z5>sRSlR0eclWB z2;}(`;Foh4s|6&v?0TYgiUP7}JryG#>1h@q$vO}42Y~YdNl(x{*VCxpAJ>3Sl0~MA7k~{`JDvU@3>Zba5xDollgG~cO z-?N(mzW|sA*bkTw_;tVnKsP_y^H8w!yAJuFLpBNU0O0k2pFzIKfMLK-0B#4o0np8l z_I?!X{P06_oL?>=@w*c6cI3MXunO=RzkDl5JW+eN$Ig)AyQDaaw|Qm zxLc3!gZv*5{ncr`dFk(zoG(&+{I`k;SNfyhE~cRL2Xn$hu0mwoka1N`#e+yU@TrvP zJAqT42W4FGjlUt28}G?#2b@<`FlRQIzl7n#)4v@|X{H|RUZrHrd_pyEMfqH(ZVrmJ!Akc_7?4s1i9aK@~}L*T>H|JAzBPeQ+{ zkNbhEepgVXAxY<>e)6IRL09Dz1c|AB&&B@19t;^*{jTCcWTJkrlWHRunlkmp59o>?e68)fJ4vU5?El zGWLG)cQ8lfBmP1oH#an{tLttF;pxrXNzLo(@qDYjWm3RFMjEAbHnui2cqMh<4A$zA z(i)qe9_6g4D)r#fS??ltZES6+X=v{1h+(~~q7+Y8%2rMaWMZ`cTJFrLJv3T=zL>BD z?}sxAvr3(HJ)gehrTfP6**K2Q&N9TY;M{ATe%aW&(*0xaN%v*+`6ADy4azd(`2S!L zkvQe)5k-2MF8&-ZK90`nGQ=y#9}=MC!aw-Gj4Jyn`#AP-S<16r(giF}91!?Zulm!| z$KJLZa(~B%uNl5?;Je6Agl-~So0guI@q5C)=}Y%#TqdV&3VPv>6d+#XtNxeMzXgRh z?Lf?`YGOK=HWBAZgz?(0q}r&Capb#@Ax`_jAN(8*_&4ymoXg%xd=oSv1^Kz__$@yg z{h;rQDfEX}$+=F`p;H4bUI8JF`XWy~_UI4&K#Too-R1t5(q8>TdX{dmj~Yx?aw(fQ z@wca+^gUL7)$LCd^pq?+y#1}KvE4}OeD!*+`Q~qbLn{P1*V6H9NcdUP*+%GA&~|EU z1lZ*~AH$3jsaI*N37AM7(6k|7SZcs|3IrD=7HI4NV4}p6n)ZUmZoqj+q&^5tlnnzD z{O*QZOVH@vt)S7*x?IO=tAI8>&an*at|oD8IWSRTgT}rFOw{q5rk&DQ0A3%F`X(?@ z_7Zqe1-1&9Nd2m&9n{zrSdK;NT418YW{o|mQ(x1xQH_)R4wTbn1S%0tM%@z(l^^0TY_+1q-3c%dSwV2XmE9yWutz zI{gtQpD6pf#%{b?NzepLr2ezUex_3=!C;Ei`5Nm6CZzwGrXAMU+dB0ZFnXfwpENe> zT2;0Qn5 z=47Su<5Lt?dxOHh1Wc6O4NUaHw5h5W`fpUaul}Uc{Y5va5&@0X0~50B*0g6dcEvQ6 zx)zwIZL`Ln)Tys&+Nj1#;mQ`AC%~C4%1+Z*3ow!TRZTmnG5>UxIw@bZ_tgT09V%8W znmt2tUZJs_zy#+JO*^BpnKM=DwRi*|#`9gkgnVm(2~8fup-`kQn4?l}2PRSv0TZMB zzIjT|H_um6eexDnqEus_116=?v@;r;cdJS@feBgmXzVqen!7-y7HVuWFu}Pds8S!$ z*i*nn>Yp|3iV~Ht1DHrXtZ6T4EN7ugy%m^{YPH68>C|gWm99>eDJ+DALFn(>z(mS(eEr1mdUmO&{K;n zwq0VGY%>UBIju)xnXCf@7<%LjNi37qf&c>!T7$$gSvm;hz|Uf|8W4tmCk7yBmq{#> z{*8q!`;^2o*?C~1j^9Zv6OXKvEL$a($#TajnXi#pCff^4v~8cnGT8-SLI-b2ER)fH zoPm-cUxman*%QE^Owhg}u}m%p>E6d+ig_>i*i?-LHAWj!k*`)`bnimYp3oRQ6Bab; zL4lpr*y|c2;Y4bV#sV74*H}jZrtt+B6o>SiZ)B z8XG|eN$E94PZtG^x>WMhSU_X>8VhO+f^*&bc~4O<__^*Ua17l>3c&|Uvc#~g^2-c< z-ZRv{etsShSU{&v28MC^M1%8tSkpD?s@sM6)Ozpmah+i}DyKm&15kl<$D@+zochF;KQ*O|kO)FDO-5 zJp{%6-#tlBejojR&&j~7VE<2-yhnW0H_l-H@1K06`G%k-Cm$*?hE&A^X~X`%KuJ%2 z-vOCw0sH>}<)hEnf<$b|T;WOwXG**olpa7a@`*ydjE37NcOXXp5z@+YH)0_Nr5Ujy z2W1mtL8!|r^*K=XIVfKM<$$K-+5Sr@jWfUR6w+hE9!*uF<-0MImmCy4QJbY6r*O`k z>93HdAL3aOz6DAEO13EDAl-Hcn z11QHGl+S=d>!(%91f>?zTdnvnP)_MQc~yl)|kQ6M^n?P^N%FKkIAdp?4;S9F#Ip=(j?xJgb1xInSar0;S(* zwJ6;{-_Vr2s-k>qX#jl&BF~4LL&(zu(`1$EBNQgeqU-@mzo=zV27uD9SXq?s1EpVv zvM4VBr5|dtD6avfUn8<8zX#gypo~G!&~GtVc_xBFzlIadrxkV`hrNu#61xm<4X#|B{TeM1bgF^2PT9hy-^ctK+=>vscJ+ml#K%v*UEXn{V z^mdg+`93HjaI0nePr~R9%;jfPvWE8mA`FEf4?T+qQ(GXvfrtMm&x=UTEpdg_qXZ@L z%fRu{#Fg7PskZB}iE_k~if&!TDJL!{#z~Yn18Y`PEvi{W*Y;P^J^efDI=kq4Oig2J za|n*qy7g_iGT&U!YHC(it*9uksw`P_M@_ynTIh@xIHN_*Xt6Uo(;1!NjLzb+@b?I6 z@D@j?rhOycS-@=@+}tNA>ss*IfcVBgzh2wY$f*sDv2=(0vz@gRxY{$vmF#LzfxEq~ z78bagSm0_@fve30v*L9i9~zSvR@{*X+dBh~Z)?hz-nOi!qI_jljaNq$xEfaIYFL4* zWrePm6}nnh=xSM^t7V0*mKC~MRyfP4$wIe$E_sSv@)o(|DRRkM4e8n#Lie2&*yW}f&$yZGBmABTdZ(LZ{)yV!I DY!_vN literal 0 HcmV?d00001 diff --git a/x64/Debug/DynamicRealArray.obj b/x64/Debug/DynamicRealArray.obj new file mode 100644 index 0000000000000000000000000000000000000000..9d8f97fb45234cfb19c3780b6e07ec7ce9f8951d GIT binary patch literal 32295 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 Ad;kCd literal 0 HcmV?d00001 diff --git a/x64/Debug/Elements_Creation.obj b/x64/Debug/Elements_Creation.obj new file mode 100644 index 0000000000000000000000000000000000000000..2ac3a82073ee926658958c9615db8bf76071ae1d GIT binary patch literal 119139 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˘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 literal 0 HcmV?d00001 diff --git a/x64/Debug/FillingWell_By_BellNipple.obj b/x64/Debug/FillingWell_By_BellNipple.obj new file mode 100644 index 0000000000000000000000000000000000000000..7053ed71a38e0433f9d8eb9e23e477c3908426d4 GIT binary patch literal 52015 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 H4bJ}s#kjDt literal 0 HcmV?d00001 diff --git a/x64/Debug/Flow_Startup.obj b/x64/Debug/Flow_Startup.obj new file mode 100644 index 0000000000000000000000000000000000000000..1026a47a8142407506f3aaccdabebae11e7727bf GIT binary patch literal 18775 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/Formation_Information.obj b/x64/Debug/Formation_Information.obj new file mode 100644 index 0000000000000000000000000000000000000000..9ac0720a7582acc00dea4719c7340c01bcc564e7 GIT binary patch literal 26054 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 aZ)~25e@cja)2*SQthI4&^Tftbv-)39Pms9) literal 0 HcmV?d00001 diff --git a/x64/Debug/Frictional_Press_Drop_Calc.obj b/x64/Debug/Frictional_Press_Drop_Calc.obj new file mode 100644 index 0000000000000000000000000000000000000000..34cb62e990c6a166035bc8ffef9e59198509760d GIT binary patch literal 145642 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/Gas_Kick_Calculator.obj b/x64/Debug/Gas_Kick_Calculator.obj new file mode 100644 index 0000000000000000000000000000000000000000..7516bec9843029bd24d4b0cfa06e1347f0f82950 GIT binary patch literal 225711 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 PnXUcT4Yv009IX03bjkza literal 0 HcmV?d00001 diff --git a/x64/Debug/GeoElements_FluidModule.obj b/x64/Debug/GeoElements_FluidModule.obj new file mode 100644 index 0000000000000000000000000000000000000000..c7a17a7a74bedb1c1c7200347d0fb8fd2fd96788 GIT binary patch literal 4381 zcmeHKU1%It6h714Htj?qQCqbjT*?;uyFW?jPY_MAKiQT2X|t29$jD}PW_CNt?9Mtf z+XfU37KEzBQeO%xCHBkzL8dkPIn7?}y0ieyVo7QhjNpAG@MiG7mz@R@?Cso-)qkIX+HuT!QV zJQb|3=iNfy$6fJ|*G+?)IJV!{#ap-)|YJ})Pp%E`-o^31Ob$#Z&uCC~Z;$TjR?}(~W^_3oU&%jzz+eqs6czJjkb& z2hI=Vssf>uu9aw}EL1aeqhhd-vrLoahOVZWF?Vj(IDhM}WF9${o6IF5gjqvPXZNvnxT!?It*J>X>Lc=gZ(Sf>2Iv|>c_m4+HK zrHUxTitbLadTyce(J)|QV1r}6eh|c779Z4$J3pt7FlJ?Gus&QbIEWspK|H3jv*|eOACxW>Vz6&eawZ0F54R*9 zO^)2fw|AU)nzoI#G%g5x?XCDF+-wIlqbS?U!12D_yl?a8+%cDU+~fE9tkCg=(i{un zhbb%n$M2iYhn1g$idvQ$x{asE0 zoDka}iYc#ATBoXdQPHgWy3o0FEIXZv=XWt4YYeKannJtL-MMrB#gT;nZB(ba(&HEj z`njQFR9R(V`}Vs(e!*Qx?R?>4WMw*c`Q5()`0w`*Dy&w80Qc_Rc@|?*LF$KDd{fEk zhdVg`?TCiq4-fIM8%yLJj&84qcqk)!($Ot?h=)svXg0&}nTL4z1<})v?zV?`*pHLh z>F7cp;^8AiBaZG95AncZ6-g!JFl_b^595gF5FLiY9^#>d=y69^_7D&6A$r2mz3(9& zzD9(TLf>m1;(>m>Cg@R zwPyhK-f`=}p?RF{$elNyEe_}AhCk*JuXp0OnK^-I0iU+!Rcu}D(tL<5hVj~*%cxoD z(tMAa1$;={$oCP^I+3`VG4$xxsOvNztkZn6PIDhMt~fdDxW&;f@^N&J>z2+N9F4%o zUBtILswQ(7o4tMqpg1Q)i%}})^HjeVB-83erkb^*p6L(aCG?d!E+t=re5S)+DUx5Z+rDpk}O$x`8OK(AC4 literal 0 HcmV?d00001 diff --git a/x64/Debug/GeoMain.obj b/x64/Debug/GeoMain.obj new file mode 100644 index 0000000000000000000000000000000000000000..ef040ec0a85eca8e8d21d1b7e0c7e2ddafa3f432 GIT binary patch literal 33588 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ƦWrYDE1|GBzBkB#@aI?bjwij8`s(d{0B7_wjY zAJFuO7Ck*dAywNoILum=C>dLXA+24H%QY;Yb`Q4NUshE@5p7MZeHkAuk-Kws-wQ3O zJ?;qbP|1|;`w)lTTyEs!TR+ZW3r7Lk78ryrFrnDO7Z8s-BqjTO5K8jv#s%Al6p&qG z`*Vij_EBePL^27rk3p>fqNM=z&$)#cZXa$Gn{fLW*7S%0^zyKc3Q>h^BT6t*&xvK8 zji{C-f0fDFld@5?D>Ibltv!V+t=Whvt^C+~{Wrj^N3>jsmRx-MwFrbL&Rcs5ckI?^ zM&YU()f9<=6yqsxQ9u0h1w1m)n|k3*!LB?2Clps^fQK&%>}x=r?oX0^bVzKmN0fGB z2I0m`ByRi#N_&$5GunjJ)d$1Hgv z`6yBule`Da{M6X$ifb^@aey{a208sl;Hcwkb1_lLz7P}bu#7@72{qA4Z3Dz?8^|rZ za1-r}ViRtnQ<@$zfL>lEO6A!m%5!6)N=Twl6D69&v@bL{agMfHoy82R^=)E?!Qs=8 zvs&XM@)v7lAle$IkP07q2lec<_)r^Hc!rW?0Bws5!WMZ8Z1MIt(zkdQaLMP81HNWg z{(nyA%&A1nXCaT{spOC6H~ApH8Ck&x@J=Idc?$VY{MTFzTeuct*j<(>NhYC&?I5MB zF95SGC%5pz4ZA0bO}Jr~X?nx}dT|XKPccy20qk`Cj5Z1Wq5{L5tx}3SQO;AMRAbyq zc49LoN~|R%_A~Ki><`jyo|uLmo;V+xR~ExxTZr3W+s3Di&~MCVUaJUf^e2ug>y6bz z7`s*Dd()e=4xA(bz_ z%47oP{vFt2f^#%AH2~ezFo>pxH%hnnuZTwua;H(i0IX7V;T221C}HXLlN3at#?72{l(ov-*DtvrSekHCnHs4m-&teG`T>vMy7~u%2{&j)sJ|8oId&k z6t4ck2rl93uhZm+Gs(qMfA?SoT4%J-mB~S^OFRk>lT#)mF{z9z45>GUpto_P#C6pR z#h*c)qtA{AjTlO6MnWo$I8!e3qO{QnF5yaR)#QjX$;DM#l~LM=ue338(hK>iOq(#I z(imDWrHu=X7)onLLMn|oQ!ewOw8;oA;Y#b!RitBnp zD*4X{`?+KN2zhbM2mq6kWgf;r^8`-F|4d9xGQ(1IU4GjDBzw#4Vy_vw#>=o~B$im=k<%e2;D%%{GUsxQv;LPx&y=H1L3 z#qH9}Fu-G$ykHR{NQHWN&Bz$+2wugTWpiuDr%*rI=d6SX~@rO>!0wt4Bf8aC-2Vlf(gUc>A20?XJB!;&6|=|l3<)bO2Yf5h?*#$OY?S^ zJPT20k0n6KBvhT8wV}L-+49OQyl{0Mj$#w8PR`$u9x;Gk%;wG4TSbO#0C!=*SsYcT#TD0d`vPYvCg-fkdP1xO4O;JkRxU^Js}9lM$$(W1Bz-ZLCs4^Ohqnl{m*?OW2k zNOmNeQMhDVHASLDaUmo-8eI=hvTd3+(V{)ik{yd?6fW6zO_69(TnNdIN7uuXY=@>z zv}n(>WGAB;g-fm+#GHD5pOu!+uE(-;{#z(R{>UDl)rZu{;C0`{kaA1<=)BRR^DU3xlcp1dbV*f6g2yYZ%ms4 z(KZD&V$B|R7Cstji)IvVt>c;^F_2>3D?N2sHIkJc26*@n1T*q-@vUW~GMioop;JFK zKHSU&D15jXpciZy#DWcPk_DUIf|iu$ZUvpuGWXi7NiAYxpor&X%A_lrQMeUMX^KRP z;zIaWPjo#z$vQ|YD_TH{wr@i7BH6>yjKU?$hZkAZ3ZodaS@x%LWg|_7uEI?&cx*pC z+il`y*geSY+f~@*hy5~ddfXRT+}jh_GJ|dV*FS-;qhS*sx7x@iyyQ2)Y+^gV*OPba zthaiI+gqxOy&0|DXbPLrB$M#PGp!ar$yt_zrKQ}$L)zsSo6$O=*o0dRACP46ESO$A z9huE&No6bkCk%KlkDK^tof4CPiIO%JOYmr8CsO!moo^d6+V7~>Gi#BD^aTt=_XRFe znZDqQIekGhuAwhz1?awjLG%T@Nj5+ZBfemplk5wzxn4`ll1Zq|CA3nB**2G3c;PnJ z7sV#r=BhP4VgS87ZI0?g1A`es_1O%b8v|2fN)k+z=n^06L)64;^fw7~7S_sDr8F+I z5NpGt-d?Ub!K^TxMG7^)@)OmL^WOkEV0%-Huy+^TY4`nwfS>MN7 z3_I7$pP?Lfyum{g|OyPF}y&R6Bb5S!T*${p{h@)2qsc(=-YGkP<# z6ErORR;1xp)%ja4<`N8vsXgZIxq#ilGZ2CH+he?-N*cudH<-L1gw z((W?AW0t&V<4EP#uQK^d$P_lrn`hf?Rm1BrbppOA5AcggCF>YHlym{mHxn|52Aib? z?jRkGx?^rTNG1D1n)nehOU$P8yGZ01+QhdaCHrk+b{m>oc;QX_XcU|9CcaJ6BWBZc zSuM52ih9&rtb}yjMWlWx8AgQv{ti+ltt4SUjG#mr0e;yKQFGftD)v=~I>#&lN+zM| zY}fK4X3HzL@WRzO9>peHogJDUF@Rpo9^2PjMTU;Aw^&g@ITm4Wu~LE)ClAuB-a+ax zla%=#R-E_^MBZ)MIBu6VjR79B9xgmm2I&0aGz7O$k0B$y~E3BN3hsJZPR6;mrjolYf< zN%dBeNvJw|w7iJf^2#l|aCMeNu?bh_VNH)1Krd$V=IgB@!!|%SZvhrzH*ZRC;_pG4 z-uwqq=eS4A@l*LR<$NDQQy zcbCy@x(o)QyNo`hGSd$Zbm|KS-xy;PjZg0abj!~mT7KRnE&n-qJXi=TsEL-jH(}bZ zMNAA7@w`|;Z8W2BD>$kt5-o}gA=$df-9Yg z@q(I2y(%Cru;oRuR|OJAwRn7&OhN}lqgszdOOJRS$Spjii;S@*J1P=V{kUE6-%@f>sQn=`w+{EF*xgt zW)yCFlbRyYqUg^WR%ED~f_4vk?Zcc_aKscWLB(z#+KgP#K1e2^?ZcE70?`rz+K1f2 zL$nm5eQ1wj6RsmZ`N?uPFo0g3?SoRM-#+l%GzLmcQfm_>euwQG@VkkF3-p3rmyulz zpW}n6EX-#MYo2|sCz?^XKKXn{ibPwV3-G9UIJzF*fQ=7~qMzuCu7@XCjvYvwXwjZ$$@WJx3YTn+rbrB=7_${(pOF8HEY|0D@FL4Ryo+)Y z2Su^oMOlaM&*X1EwHTd93p%%VQH~mwMZE9fSyHW56VXyrIF*nNEylYj12MUU+fv%DZpCMSnw~ zy&Ez27S3&9Mr4++2>QPd<`3fYUgm1UwlSGcV}QpjdAazxQKT~SX%FYjr}c0L8h&jQ zpy$&V#C#fW;(XenInB{X_Jz#RR2VP79F1fWI!Dv1O`d3(JmzR}3lAC6#+ak2ieeM) zk$svTF@Ro7e>8KrR3E0`yj`|Dm%$r$b}KOnm?+UDzJmr`db@0O7BhC)B3r$kv|`CH zK8uF)BfV1G^^bCw?Vo)L2IBvQkF|xg2N%wT6{7wAFkB24cNj5l;2zopC7HR8x0o%Y z{g90Qlr=)u7E-H-KBU)sXdhNZ^oJHvt%~3+rii0n5e!*H_?50qQfMTNJ+w8FMMh#$ znE~%^hRiNiiyd7=v-@YoZX}dltzySp47))ue};0{DHY(G`#!rm#ZF@Iy=d=lhCFr) zFlXeFm-MC4Z_15;D`z%{mRtA@nbl~7_-%|C@aAYn;hsCHDG~!I#`InNz+?7m!^UJ^ zG4>?Y#r$UT+;@(&Mhn6lK#u8p69el#FRE#aW)!ZPaZQnEQCtYgwnx{)lkB9XO|)pw zv(a}%GYXgNl%`0uC@zF#JEQC2NtVNSHYY@j_B>0rE1FTbWI3)UMPeYuJerf=fr-+e zapVzeqVybgiFvnqwdn6;7&Ett(jKF-xD%xucv4M7OHJWaLVBkd6Qze^atpU9j!Q|F zXpzld+H;>M?KPE&@gSYhw22n&d47=Yi)Iuq*=kLZXi>~DgP1Pc&quVppQaajqO?C+ zeqQ@qqs2wE#5K~ zLbAir_3$LytZ5T1+Vd>gk!VKYl5N!#iGdVjHb8|<=gnALo%gT9a1g;6xgY&{dU~7_ zS*hgb5T%A~-BZ&CPfSY$ei{1U$tsq!bsv^z;otsK)TpP+=m*?3tvaHuI>mavJ_R!t z%_!Wu+BHR@MUhj5{=hj83*-9~6Tdjg=#QGZ>9|71esh1`9gmia*A8@OF%T^=_#&8> z=iSL@M&X+3)D(#p#R6N{AQM!Z=VE-EaVokVo@Bc;ZK6eco+ayGdOl*>DO|EWnj+Dn zxDb*pi>`+!*~6MP(V{)ilC6kl6fW6bO_69(TnNclMc2cVY@eo0v}n(>WE0Vh!X?|U zDG~!I#%#0sSb_;~{8zu#RrqIxD$EBKd@;r2&^^e{3gIW5`MZAVXUFo*Vv%}ILf3OM zIvaI2U(#z|psuGnTD6|B9o3p725NF%x}KV7M&ZUbpeYh9iVNY!wbAwPBs-{S6D``l zam|Zl>!KNjOLkaOBw7>~Lb7gjJv_;dXxc=J_B>0rIhs+pWJfhcqD65bB-O#g7)UW*v%e^}>&f1h5HAz;MZ4dLu4f@Et36teo@GsHwGji= zHZQGVM>L~w%bL;@i5A6$kZfmkJv_bA>ECWm8-T$@WCo z!;>r@K4c*#oAx|Q_HZ<#aLMwyLY7~`D8_5ZWCWZ4lHQEncHVP+%wkm|j30@dWf>2X zICq{^R>&mIJT2h$8U@8&z)NVQ5G{|)S-FXB@M0|B^~K~CZb8+WEYTucpl^EfvsUe5 zPwe!Y%EVZ}tI@QH7VUYSIzJlCC|t6&nj+Dnm}3Tcc*_601-yZ1`FX8vofa3-64yLy zbTFDxxJF$~k!Vp|2wxeFu7@YtW=)%D(Vl0?jzlvGmu#!1NVF&}gk(pf>)}bZP17b? zwC7o}W6_MlCEKnk5(6p5Y=8<|z?(5b@H&W?#b%EXcz^^w9B?kdm+r$2I31S<%T;MkJPZYG~r#~ga zd<*(@-f^RRY(tk!LbsuJXiXC>O`DonJ#xr~p%~lHC!^Se8)B!XN3`g1t6m{@}^IR|Th3>pyaGr+^v{v_2il$-)+?K24N%Y`{>Uox{45c@+BQ&zGPO2_RB1JOD3V(Kdi+|w8RVT=N4YL_A8>; zgloT7(<55+wDyH!Ozo=<1y77x`${ZQOVR!~b(=~~X6@nl{|95J3FkMq!e{heG4|=yMq9V%Z-d&HiGjv!5eVtQV!Vu1 z7tJW#--b0sqD2vU6_d>KT`KQ6$f{WEi84339-d@JG;N|q+xKOQK;e>Yj%E}t*-=fA zXi;1U$+kwo?1TC1fZ^Sluhcb>riu?)eYl#cK=; zm9?jmXNrpWSH`{XnZvsUqV7VK)DtZdPf45$kfrf330T!GTuFzc8HFo}57M$U9!4=j zNorr}1%oe?|IwiK8NOcd?5ovcwTRmI7fq8>(S7_1DINy&Ba3P(&A|HhZPo`H9C+e+ zaA)LvCckrn=MwSFhPDUzH00jzOuwf)!H1X3S-liP=04s+w}H!N5+WJ?>KjAW2OB)5 z75w1JBYc{xytP~=T9n_j4pt)d+hUbst7>ZGLd)~a1!_}+a(N(_AO#hy^<%3| zP`50Q3e(|dx(Mp2OM*j5JE>}nU8eCG<7S@WCl>)c{5;qg>pa@cMf^;!AM7x}%%Tp} z80*GPH^yDKj+}c;GR@93#*(**(~Yqmry664$-DjRfEtx-OGLKz-#}-*W#B}oq5{hW zb4AQ@aB*L0)!JJ4lSGr8hRY0FsybW;R{m zNlm5U*d&3La!A@v8Zw$MoO5KdN3j$3`94Yq3=CqAOpbcicwgkmq*j|6(K0o>{EkY* z@{!wPOi~O)GYa>HI!%!nNHL<*%O06jqh4qv@K=pY?vegT8i{&bsph zYMj!l$0S_PnFz$YFbioR`zmSn|Ow;hrXU1eAo5S{ndyO z7?uttTN(eOL#t(3sZ6Vu3DJ^?DTE}hkM3JWLrY>6wp3zzP~?S81t zEg5m|c&MLi%Eeqg!rb+1wWK&P&M-%7N;)UXc}gTD8o<)Ds;a=mr;!aBV2YV7VGVA^ zfCGPxju>WJ$N`Q{_*-?eF(bWnbX(Z2B}ud-InQn3cr>GMH|x+8iGdU&+$_5-tP^$d z@4~i)lhGpa+QLpP0b-y8=A|v1ie?n9q%KX77)UWfNl|U#Y)@;wsuk?et>Ck-v>ub} z237l_AEjPc#M*JPnhjw_LH0yUKx)--;_=W7y0GPd_oG3;P^{IDbxqJ4LDn)|TJF>% zNM?e&?4*pr&tVX}5oCu-)(PO@=fM%A&ZEa%#1xw!JZyrQMMu>LvI{ZDxq^^N_7N}! zHpw(QGlG=7O`IM<+HqQvr-q`lMs7IS9(KgW_0>O_)afW?m z(Tu{q=&+_pv?#(dX*l_B?C+U0Uwc2Fpxv zmz|U`SfV9(20NvaIU-#<4;rk_L;WneWS21M@K9lbnMEVYV9OALoGVm0)jY#=hDoN` z8H1I)O`JAZJ5Cv_#Hd;t5BDB@Y9Vi_cV<(qC%x>n?D#K0ACi{8rsHSKLU#OIZcyG3 z-SPKoQzKfYHqRY@RWze;Z|Kt$iGdU&`jqUBf2F94e;2mnPehBvYqI*a1c-qWn3s;f zI+{_ql8$PM#6XG>N($=up(F1hC`QNMt~-7-5x9{*(OehvbEvX4CD*faW&qUFZAbK@ zQH>F!UJm&(nk!V}*U;u{b9e(;|IcqwN!|fRMLuk_E4wrk%k-1C|q$Pnj$ff z;;zAAF<&iklts^a2%dF{nQ_Ge*rI+$t5)cKOclf4A5$J(S*)syT~pAa4ohZf6(c!f z661Y43V%!v5@_t%sOD(-c@6QX78fy4T=UWpw?;Dx*XWq0NVF*C-zd)ASK6ZM;YoH} z(_vx8Jafg(0 zGWGWeosTnxcd2LO&YZ3?bEKC}s~-^*8MDq=e&@N!#9HfgamxE)Qm$I-Y-WPMuk&|M z;F1!uJLsm`H zLUAhD=O|v5;DNRS1Q95_KkJQV z6z-!5O_3N#F|K=QAFWLG`a0|*vrI-}QkiPuNgXn@kUH!aCh>GwgS6BkF;GDB(t{n1 zW)!Z&T1}A{NHMMsbrV^c?DuszKxUbY#H2EH!jn2=$mme7xBL_@on-B(KEmdOt?2#O zObutGm9qG+=_!3)?R9={Xjxry0^TE|`-{bqW}ATQ(X@#c?LYz{joO_Z{~4#LD2rwlF5SbLCeflf@gGyNSGUy+ zS+JJMK@6J@Y=ZG)n@!Lgf7LNvI>|fr_)CIV*tL?X@mB}ac;l~5p5c`Slg!J5<1d}Z zVRLaP+2;p)O%NlllaUD?6%m7+_4uowXV_0@lIfhy_)GFOaeDk^$Eop`#Hd<6fPpKg z(!I5!tMd@_Jv;&sqsX6F`JKBAGZdyB#E{pgF3mwm0cUn zC|uctnj$ffV%!Im4)cs6GME{>v&1c8+rDhSmN;WvleoOF}&2vA3bXMV?;)w zK`*VfQRA8Wc#B#77>6*_LJmWiJZ((zFhk~6rCIFB zgq;1)3Z>CETBduR<8$f z-S~JJ-uOj3BFmK3zWwx)PbMQVc%f6+QF#m*`&kIh^$C-Bi$m2&OU)4j#bU{#aLx5c zGYZ#SjiyKpq!>$c6-)SnAHH62jEl{+z7~&?TP7nhsZ6afr4|`lNG%QslXzOJLt1K) z7$~B7(c)kG(_AakQgg&W zvCNC+Mxz;pYpzXGBnDE9skv5Pb7SO_$w*8p(=P0&Ifeo>_W(yhn9IuE+j+l=ea!XS zr7x(cue<3J+>*ua^ds&S$I1`AK6}Z<&JC}G-QGUSP@NzCz^2Y|VaQGz@4M9?J4WI! zW)Hts_hnV+ul)~TbRapEO0*bb0yoODH1J;mQBQz?Bc9VleIG~sm`|~$1T6N*wt^3 zoIm0hR;$w-yI-uh1VbO|vq0j|R%+Q)&B*gd(#3A}61nKJJo97ZGm9T-m#H-p^xdb{ zb01H3b(VQvf*M@vre7yC&wtsv&m@|xAK=AxCC9;@{Vh#5{;Je1vC^Xsm$-~P|K;?h zvp!!R)|w&)YHGn{?l*W@PIu>XR6^v!V%_hs5w z9|**kv|5KT5u9oF`$U&&$*7oArVrIrPudKbJ~4Eg5+6^wP3axKn4VS-{`3iZ`k)Od zcyP9ZVKsfg5GM@o#$uOAU7ox`=DFBK@Y)?*2vg6&XiB8BJNDG;-DA&O+5J?}v8Rf= zpL)qnFH!MNUg;j2xU&1nqQ{;*@v%Fen&u1B-nEtb+Oa3gq`jr65`!s zFS{uf)G_ByK@PCgh^4w1R%s6^Rm{ktbxvRY?YF<2yfFqQAOy)|BwEf)`GUsQMW zW=Ce<(Pv%M9h)a(ON@6sIXz7wo~2atG=%u?)i_o>5K^b z#z#0@@b5;~dVy@&FLh_YFy>F+4qZlkwyD|lo?l`MswVAc9ZnpD*YIJ0XmwoSRDyf= z+hhEeRBKFb;l1pDCQG!)`eqDW!v!(7N+Wrw&Nl)yb@nsY+}E+%Ol4xcb~UJJ6D``h z)5_L#hHAUhKikL}$&-)?L9HWRgxab~ig?DgRvE&;VPVj?q*WY@b zU-yD@IrY{``>XmBtFUsAza`9*-*p(_$Mw4rEpVbG@Ej3GnsOY!>x{`Q+&V@zSzzA;vuBNzO!=X?J9(FpTnr~4(=sAj zGV%>Ql5w1e{GMn=;c6V$6p4Wp<7#lmV)evV(K&khEKh!+Acf77FCI2BitCG$S}sIO zF8>|A*c+2uxDux{SzBRo!sd^XiPE2NFbq&j%XWQyq*5T(Iti3 zd$lf_Xce7*3p4kz(@1nZymqBV(Xpzld+OM4R8!MBhGBG^AS<@z3wDYjz z@;i6LdShiOnpL=TTQyChMRVersp)BZLn6N(%`GW1rOJIN;~3>5fx#sz!CPg|N~f$9 zBn49H7Bgkforb$H$IXKi{0wt?DlH*S;=h8=3tCM7LnrY&P${gbc+g zlmI~b3~~=Y58KU#><{_5%XARVctRf zSs_n2dNF1ySBzYtari?CUP^f;!|yo+MOH8pZ`K1usd#Tkl9?${lyZv8#fnu~D?xD| z^Yo7mtD;SwxS4tW>9*+U=>%r&W!D70(kz)^2Sts)YL1*P;bm;~=zyqXlZp~qz1hi& z&8JxvstcLpy*H9ex$gytwIvNtV1q$MhPvy#V_sAJVZG6|Jvm!?d# zDPv#kyh*eoicPpgdo(>_Ha$^z+~=eUG(1wD8y|Pw+=V3A7ng$EfTbX1jbdB_;yEQs zEGYpKCC-F54YFkJa3QlDC0YI$%+hmT z(VLY#w)@stb&yO#CEBMc6K%@a3Y=vkb7>IkqS%B>v|rOBX44ae$93N-xUbYF!hQMi z{M^-CWs%}o#$T04MM5S@94aL)Ht}J8e9Y6i_EuNKnd8FES&`a>TZ1Co7&(+|2WS^& zaK2qw6E>}HwBTwJ&#icPpghc!K7Ha$^zTo+Ejg{3~xE^NMO=55GO7MUa% ze^nwC37IHyD7^H9RKYIXA>zz&;m)i`?ZRC_kv)vWk3<5r3o|(1F06_!z=e-mDwa$_ z4Q@nhl$fp2+`PJY}G+B36jK3<8iiAv*I23;V6sdw; zxL3rPO;wCW(4gi6#wN?9@n+LW;eF3Uvb;=&_QY{Dg4rs)y0 z>50PQxp4Z3)Fs+|6S;$EWsOOK@l_>Gk&cNHXTsi6qzZlx9u!gLxbJXQq;}ttpvX~1 zVlON}yDx(Q?mMUFU{!Ph?ptvN$iTqRPTnV(gc@6g)+RAqo4JJ-?!Hw~Y{HGLO4B3S z^a^!f(OV(zI|%|tqLN9dL=&1a(WZ=FR>?Avxwx-mNi>j6xJ0WpJz_RJQFuJ}?Z(UA z=_68dv%!<@5JQWn_@H4JM$ufX; zVFu^hg;mi7xNx1NV#y@b;A*r+iP;*>Exd3ScB9yY8(giXN3`h`>cXP8LR>gu)j=`| zm1v!&OtdLu8&{Tz%*BOkqS%B>)YbHe+4Mx=ab36tE-dwlcHtWA(!mbtN^cOYEHX(j z{;EVO5;9TZP*@0p(1Kl<-;|j#zg3kLsa-e`6j{wk{Gb&;yD)P(w(206gi5qcQzqJ!@u`k1 z6Pb$(w?(lDmuS1DN6e-t3XkW)@?B~;vD7HqiC5-2v9ie|!Fa3^s>sMhiA!NQ2&pDM z6f_@QD+0~whwHK;wG+ERkDdPJLEp-wD%E5wPrtU5?0p%U%Vl!-QFe4`}GMCRhehojhpOSDJRBWBYR zg~xQ_&tR_woLFiU?ZmaYPONM)NiZI(geo#JQQ}hg#4b_=J8_!`G{=eCvm&(b6K3E1OIb zjK?aWii}K@xKv7xZ&X2HoJTG?YedEo&#HV zZ`rzM`<9Id_U+p9wk^&3cI@AOaNmwCYj*8N%nb*5>$1H!yxqB>_!X7h20P;X%kjrM zlgIIIk<+;6z>eM38_r9t-MjC=zO8!_Uc@CU6RY>$)Uj*#j(v&MySMJ&ziV4!=iYsZ ztsNb^cWo0&`xE;P?%9K46MM66ydZJyj(z)4aAHNxisj2LUA8>2>fo;3+j+WTdCl_6 zw$#Y6*x7c=_Q*Or+iu$KT-dmK*A1+F;=(<9ckg}M-o%C5DTd2;9^AbgWw%(Lj3%Ty!e9f+H`}XeNyYoQe+Fkn(Zrz>Oc;MjnU3)iE zPMaH8m5zP8_V3ty?dr`fd-v|f4I2?$zH-?`__zGBi!R!H!>&EBg#8CvVHYBuH{Nu~ zN@xGRZINQ#ymt4&UEA00-g`@4rnK|28V3S$0)z(RqCM|Lm-AZZDzRsr%F(jPakeA= zYT&hK9rUrWY2CFATh=wMZ>Zm}rQwa6>RTF{)^BvqbWW-0!?x|<<7B6@vIAG&jGkwG zQN6=+z6-EL&RgZY3+LP9e3f$wu5%Ok3T!%GU(~Q+L(>MQ0&#~Ccd^8+X}rcc9Wh;C zcnS(#U$pGNO&!Z>meosiUv~6z9X*&Gy<%Cbq#nzTzG&GhVZ`5AR(W47=PSMQ_0DO| zNtHXnRvp*Ww{BV2v|2K2MpUD4Y-zZrdCP{T>*VG>M86vXUSD*LQ|vTVirmlQ7kG2z zKGjg@IQ177FLy?H~!#*LdcG`LM08sAjEe$B>~4UOxsTGL2ewTVg)9n|=DAP@U^ zB^a;pBG#^Js&Bcr9=dd1sB|cYq+Ly{n{p{3itL> z6mm#HWN=->I+S@*WxcuJz!Kd0s~a|~X;{CpvE_OU8cwS8Zgc9_uivz8)5dl68(VPa zS-4i`-MO)0b<_Ga^&76gx^eZ@*ER)T*4H*&(;($ioa$&=w}#i=P`|oqRb%~n=M3cS zU(LEi!rk7DSJiK9Zd!eHLyNA???D#tgYwo~zrOyO#?>1d>etn8*ie6c%k|9^)Jbwt zm6>&GcKrRk*+6 zRSq+|1FcWOI6`q+{1+u%is(#Z|4PxWIGS+NpT(_>dvDudn&2hxDW0SqyyU{rt z7r#B@VoT#S4QNrCm1wf%zp;h6%k5iSIORDuX{jAwENx8C(-B&X&gYZ)jNE z(y(UjhNf#EE$3XM^X0VBg`2NxYTg2qQ+?tVctOh=v0OhHJe`ErqS}z2w1K|BHnnV8 z)zI9uabx4E#&v8yPe&2{Wx9@dB^mk_*u+##awS#qa@{=g9NjQucc{~n^SMnV4Je; z`sQ`8ku}27&%?NRc4wl@a&6-V=}c;}O5ND9Wn=xd4QsZrkw81()^9+zTeKpj`;r#R zmxM3G#`Wm)?JB%+UDL)EXL(i}^dGMTUsS8=S6}UE=8ut^e+juMiMKQfUTcJEg#Jgt z$paNcFU`u@WaepzDSYW}sBdZ5(zJF945y(5Cu$&Jn>KBVEtrvYZqwm)gwk~QWz$}j z$emMB&nOs-DQOHpF{&i__u7TApmu??~)<~c4r=SvXZ$m4( zYWDOSnl@eKN+%*+m7maR?a@3ouEmf{3gi%C)>MWWRg#?$O{&U+!={;+>>GWBp)nD0 z!D}~41L|L5C9bJQbaoq+(~~t_C)S>$w(LZ6xR~9&WM{jkzNH@RRWpYkRHSdV8(T2s z&*~`IX3uin&gwKgC-uT6n0$Q^M=LGYu5nDGGRzqU%Tm;sqorw6b3KN?(jv$ht`4cb zA!*rXqOb8=RyY-sR95m6ZcMhmNK{b2s_9w|jQj@;@W@VrcA)7xD+wR`@Zzg}>}p)Q zp>ef5Jyjv{6v_Dwa?T&SR_BdSa#^K|u}@<|L&KJ}>*}xCBBS-woh6lx-jGNxqKiQr zwWRV5+0mOeZmM604q=I8gHmuvdW>3H;TX{Nj7yu)WN)C)IfUC{fSZ74lw-~U zxE6Rla1ZcJz&n9&27U_&8Fu{&xCO{Lg*G66x9A4ocVSyQfKLN=0!vSIoVNihfV+U7 z!4EaP9oYD4$GH)>4|o&sPT&DxFYqAn9^lQuhk>^M{{{F?;7h<;fv-w9&TYUy0(Rlw zO5h#9_W_f@&jNdZsdKO^8JGd`{8Pa90v`dUfj| z_%+~{fkVKvuW_7V;2`i3;9J)_&bNTOf!_vx1~>vds?Q$=K8Ew30>1++YjT|L0&9T( z1Y8IFAu!S6IR6a%k5U;_AR7{_aXe+)bu z_@Tp&vlQ45JQr92rB?&Lb(iD7C%c{p{tBWKW?&C+2QUSE{=w8VnC5jL<9~Rca}`0%Q71;3t3|0^SF_3t069$N30w8L$udI^f5FEx^wL+ky82 zZ~2nr90h(B#`pKY?*RV+_|9XF^Eu#IUvZqz1Fr$%M`yb}52M6a3cJRDUj!y$ln(;W z8;0EiHvu03?gl;%{1EU7;QhcK0pI?0$N4d^{~NF`;17UL0dN17<2(&K8%F!Dz;(b0 z;42=-2Qz>d1OFZP!zUc)SHR=HgWpC4UiE#)nF8Jd{7+y8_#5EIfG+~C9Ce(RfHwkP z=5-kNH1O|%Ma53n*MMcf+kXQ41AY?7^H1yZXY~1`K0j^@_KE8k0-5e2eZEhhck1)^ z=<|Dl%=fGM{OkJsTl)MNeSQL*jrpAmWcu5lR^@yE$n#!(ewRM~ygvV)K7U@Hul-l} z4br~{PI@x%K43ZUO>oi*;LFdzUx3xmI?gMBR{_rg{`6<~eK+78{|-9`zHJigIKbn6 zfp#BQ0o(?B6>tY|Dey*M8*n%9?ZBIW-vsUf{>}4_(*b-G_zvL8q9SJ>@Ot0@;5Ohb zz-7l3IT_&Vf$s-?;)EjS1HgX-{yA_D8iBt6b_0(9-w*st;6-Q*{tCDX*b98=KX*xy^J(Ba(b#+j_>C_16}}}0&W5R z7jXOW@H^nv6XAEj=T3&70Z%PQ5hdv7F+L~)zEp+wANchIqJeMt1IIazc%I`N58Mnq z3HY;%(B1>9u7dpnUEry}O~BKD4**{Q{0{Jyz*FAnIA;Kt1HrNDqK&X;Aiv~;<6Wwz z=I`Y6aXMIQqBQnu1Wk_H*!RoPjK41a_sN;UHiQTDc^TwYhVT#cIn*uZXg1{FwNm{5 z7j^0^-L-eiwga6`@S@RDZ-FG_`Zdn7mP=P|;onR6clq+#Ejs6Hz#`{?%M;b-Za?qx z#Kwa+?BBL;SI2?GIp=Oq?A@6-(7q$Fb>F_N?@XM#KheH*f8yq?yASS2oZEQG%I%3; z+IMYhPwd*Cz}nt^B*k(n(_@JZYpAk*$Sfr7;_Nc*vw0~0ZCH!M;-OFBU`Iy)g_|4< zh4T9E2^sf!Ve~86`6O^&jQ@)R;!WCv`r1BVk)M~HugC4;oP3zaejQf|Y{&nt`rPDC z4h&alEYisI9Xf2%5_jgrF`a##VY@!+dMh6PTaixvUx(0q9qa3mQ{M+ac>k4>W8IEH zVAq#E`nNnE`~DqInD{!JT zTV@@DS!a%Oi9T{wJ~w{;j6UzjwF>+{Rr|;w!c6n~ z`g}y6pQq2q^!ZACKB>>I)aNiSx&ICNyh5LE(&y+#q`WqLjA=ksPlF@60JeLjivF4XC}`usG6De52T z^G@_Ly#6oxJb^H;|6HG=FA+Zfq0g&u-i7N$=y!PZ>GKox`2~pM{gwK>8Yh(h8Tz~y z=Uq5|jXodL=jWO0xP~ZaxjuInsq!z==WRG=ehvD(LtlTRKJU@j-=fd?4Ogb$rO*5I z`9Xa?fb%X~zeAs|L73&I^m!dRE?$4XK5y37Kd8_7yS}uykLmLrfeO|54f27ZA_4$N8clG&y=<`;6UUZVmuU(%n(dV7|{0x2Gqt9QX z&u?sdt`2wBee)aNz^{XKtor3kEwB6KOW#4b4{_^Wf6+xZ)vDK4+y9 z97cbA>xCN+B(S+<-+>DfJN9h9AhCVNp8dNHyz_#@8!t%Qbnt>i%R4)EVE$z5`oyk1 ziEUeVZe%560US2A@7=LxN5_Ho#Os`07hr1-gxY#RqG8YWR>#X`=dL~5 zxq-@T6ygA3KW@bRSMS<(W1?y2&cv#{2M+AL$-xe-o6PpE#05Im-Mf2-M0&#`vn~|A zw_~Z9wT+Qf&6;A#YZbPnT)m~n@q)|!;0ix@ksn;?2QT)6m-xX;{a~#hyvz?Sw~MpN zTW%G&+$wRoRpfH3%;lG0ytiWIWy?A4TXFG4GX7g}@yd(U`O3?-SY=)+X=*Q0*Dh0O zFR7`K^GjCB2y(?G7pr?OxdekqMXbFv%;#+3adUVtop3Di1}SgPQ*(U z=Syo<`IpwBd`|@{top97>bt@c@(N4JD=c0sEM6B`ye_hMU1agPNO)a#k*fb?E5Rq^ zn1}J}|CsSJMS$*E4s^p=M?#wJ_xyk5JwNg`a{OPp&#ydt-$va=Qb9EQg3 za^)13-o(oWM&xVI#D`(N`RC@7dw+OHEr`lIlE?Z2nr$*o`Rc~t#!uNys@ zdYk^$wBM%Qx#gI8$Bj4n=B79C-c~b15H>QGIFpS*Qy+8wKL)vVUz4qbOza){a-KWR z```50^7?;FKD&0}MJi4hEyH_Fu!qLA*EOzRwytp%!nxNX<|t;&Y2?m}*mEZN%(ciA zNWgqi*!)sn^GI{ZH)zf)?i?G$o7d5$Q=8|_yl#$>*yOLCs$$#_k%V)!_R*zJ=E|Sz z5liu(`H(A?RVB>jj#`9XgHvAP9PVZKZ>}?~zFr)0y(H*5^PBB{PQM40e<|Y0+3=uT zg7{nc2lD51u+Be_AEu4X^{o1t@=ckT?#|)@c}aRZo_U#g@-^HkW5f$TJD#$&)3eNP ze&c;tF8=<O z*UoKw_w3)hJLeXZ#Vh-E+_Zgr(4`KnE#DMy<))eG`Kl-0`3T5m-?p5{{WssVd&~A+ z`#WZ2jg8ZI_pD*#*$M2xaW17w^ic#{hiy;X%lO~8`O`TGTl38kyfVM&N5y5^ihf%0 zZ!eb~cl?XrC@C#EzU|QS#ihk%rKP1sWiKM4EK~9{;V2_&7vax0kH??e7nPQjO&7nv zbWz!%#W+9z)aQ!7fh5Oo|3NWMUw6Wfi;5uk(zxc!7E`Ee$uNx}`%O4hZ|8V*z#UKA!=}$`T z`iJf(5dP>VamN#^@^?y0Pbhm`336#U?mnDfNh&SJO_V%!a{8OB>W<@a?ND+0UrSSe zjx2A$|GWABn~T0ISv_6y$sbZ|I=62!JXwZ&Ud^%}EX~UFnaWi9C&hOm$)Vz(E=t+? zm6o#BMfM#Jmj1Nl->HqeiZb}S`#2%=w&Nt zoWHLG8M{RzFZF`b!Q&8fanU&Icn?$GRWwoZZA$8f@0NV4_^k=H(+_oqqQZr$6$;X{5Wh z*go4BRML-2OOGr2uvkD*>5{U4DJs3>_>ZJgj}-srI3wTDr+MS9lka(iM*C>#w_gF7 z>?}Eq$j=x31x5R@qC4^T0b1S85>Wd4uS};Op8mV9@ZX{DP1_`X51w)S)yQWx%lt8K z`4X%CQ1+jkxQBVw{`1`VvXZ*qIsNqKpZt8$2O3}XhTi2}^-W)R--~Tnt&eOsf?g7T z;rUd+Hto7jt#I`?2bms_AposXc)QE_iVhoj=&g>H~NVX5;$FZ4Zx zxPn{iECDNZ^$)$!L4?%RV_w`3z0hgsmetkO2&sGD;)Oo$UFGVlx_Xfpx&2BYqMuNV4?clCKM?j%%JrQ3jz$~lQ@tGHhy#OJS4=O8YrxIITgCZcpiItYpy1SAwG z3J3^#pL2dYPu`gY@BiL>USGfa%*=1*oISg$8xouN}33tsj(Ct(&O7AsOo_r&{Bww;^dg3gNE9b#Q~N zVdd3`Dv-3cgJeW+X7-;YkX3y`?P6<41vR1#BvlSRu0~v>p2QX^mHm*^>qo6&YuFR2 z^(m@5BxC0@TT4AqNwqeCWCfidnd2pD23xm5Qtx|a`JYrH%29P7sh0uCh*QiysH{e8 zqV7V{uWl99nnYzm(t3$mNLAG@3X;|gW|OI-Y;E|I8qtP&3zD(>n4P2QS68j$p%CXf zSU{a%>w`5^YZatW8Y%7in_tpVhz;Tnp7`H#x7vCfhvSwlaba>Az9UT z)B}xFYaK{h6RBBj9p6~BE}*g@saz^jwR)*nA!*&m>>O3GiE3>H$-KR()od*tty=3) zgCMEAl-U;Qp%~Sg21(@+)Ec&)VfHW8tf?C7ja6e?Qq!Qo5ivVQHHuTMlb{gi@wS*c z$<~LPtJWG+1|*gHwot9(sg01do?v!^3XfN<&p|Tp5NZiqcQHFfm2RoV4ufRuG-@wf z3nZx4@>E|)R<(iI5h^TEwMIfx`8n!+ww`Z=-#K^A)rDlG+bK$y{7O|)RTU3}7Y5kX zo`dAM=@aN7WFgj<)K2OUBrEtKkma{dvh^bM7nQfQs`nsOl6r#jLN}bXJPTcS6a!sz z)B^g`Q7h;VM{S_1j-H3EKp|Fl=(3Xygf2N61O4u3BDI)04qbFw&r*L-CEBRgT96!h zES1jIv5?$@Gnmb%HbOG?D0PXgx2Q^ORh5R2tSXus3CVGcr4~|apbO4%+=66m!FEay zQ+25XNLJN@%4F*zNRH@JW}B!Jkc_=S6=|<#D@8>^Ql%ZUbm~3mytC#-klb6#*t(wD zMxBJtIU_DG%lDjGOIfNaB>n0^ayB|ZvX)M4?Zeh#)GSDjZ6&oHl6t$??=bZ*B$W$v zQ2k0kGH+R`DU{=^K8fl}En~m+)HdoImFIc2zS5KzlG)lqvX*Yl22xWXIku(L*KFNG z{RK&t!Y`=G#i$;TRLOwOI!E*pv)7>CoNN+X=Rs$jY#}6Pay4|?$-ZK?m)Rv|cbSz* zQ)3e$Io{`~9@Hf214vf7i8{*GzacrwLg}hramoY9*m$Z7Tl-UQLsDfWv(Kq=9aWX5 zpi`FpY#R>!>gZWW&Ou9N9hkku>q*oI#seES?Ogc+sTS_vaDYmRfXhS)uke- zuGA<J~fYV4C#LrCV0r3OP%WdgG)l&cH=)TOiL63|bM9*1NP zs0qpX>OgXZHH1z%{aQjN9Hl}(I(nX2Pe>{cq((qegsalY%uP!9(YYNHw;-Of&Y9+M;lCdYLTWl@YU0p9VAgNc6N`+)>e`-8ir&C`-a@8GVcATo-LtSC@p&aLI zq(gr>>JG`gL#RyZeQE;~;*2;#U1aM+J=F@zK~k?8)eMrc9jW1LeU(}P$#HzcY!{US z-E>w^qL->yk4l4XIj!9wSwRLhhFVCihh$ZUsS9ik>#f#O7Ls~Zsiu&OO{a#j^%ZJ4 zBuDf$vz^p6NU9X?gFnCNtiCiPvsI&fR2!;4Bx5I1S!~?~1+EBYKT&@}GWL!2uyPG=6 z){E4m{Z*CfkQ|$bdI6Fuqaj)SShmif=2Kr&#~~T}C*>NT=BN$H>Kia?Ms=^1T zwl1LdKw-}PkSai(%wjf=+6l=Dav)j#Wwzd>LI$hK)u|{*#y(GFuyrmZ^Dbt#n%W1+*mIQq z*P+PjL#euuRB6tv6*U5qDsv%OeHOECpue5_?KE`6(KYC>Bm3{)kbTSk8#oR*S#hci zRS7!dw1z_m9X$hGa})z*J4%J5UPq{~lMQ0_A|&%>LI<4INz7(KavWLI8fd@M?*w$+ z(P`=;B&)g!$?EeBRlDTFP>wUA0<+r85}Ccg>{Up1`x($aXY6wJ%ZB8hxkTNf$_`Vl zbs#y8M5;SmCqZ&wzRheAwFQ!~KT+4&Y7JL&REMNWV`j~$w9i=kRVzd2_p6*}vvD*Xp{=p{9_79>|m z17^*ru8@o!L(OLELh3t6s@!DuFV$+4nk|j$MNOs_Lo(ZD>KI$^LNZ6_XjQKS<%48w z0@aPJ1F3nCR9VezE!Aj@I?pX3x!;~+){EKe%;qv%0m=Qg7n1w!D*HW=sVaAbD*P2yxe*md^`*u_ zGTVF97i>KN$sFgIU8jn@s>ar&Vjwx9Bx)oiRi-kVO}SoEBT7s6Qd8_uyEil90?>1(GB3P|rhBxeK#F)F^5$lw;YSQM}J= z10=H@p|aWUGW!)Dr{;JJk}8!TSxarIB_#E_Q-dHG@iO~OqP~D+^ypibcJNi1E_Z(sl1TcDry7uJ(S~AImzr66yjvXCMuPKq+d-)W=n=-j<#&= z#MZvl8<5mnM6H6P-dF6mo4O83>$}+3$f#YL3E? zR4D<;S{|pKg`{3PstY6|2D9I2YAGbEU&(%(*}8)|&DQJ8?ogHARCCmWE;?6JBdRl7 zGnkE}=0QiD5zEWhU6T?Q9aoDCM3tZklAwTTS&&9q4G~r zm5WkOLsBJ@St8Y*%B1E%Quz~V4_mK7QZLU`HCtioDM-dfQ!lW!Cp8labI#-{W?xWe zsEbswX==8|sTx!=)eDjpyhhDu>lP@?nfDO0pQ$^Lj4d%;DIAjf@)@cdBvtw{8%d3$ zmQhLK~gz_N@nXY zNa~GeHl11p$=Kc0X|`Ub9-F1AJPygR)ux`N(y8H)RGv;PW9tD(R&|ouMauP-8e55K z1j)Q{R0bqf-e5MJ+Dz@B^3GOO3Q^BeO{p2s_s$je9#q)T8t9Uv_0V}oo2h+}tnVi( zhsr-ky=Eu^Nx#aFoT0{43-)Wzeq$gx%CT&n!q&H`wUE?1Nc{wzb5?qh{r;jV&Q+DG zLPwo`^`IO_G0gnTGMK%}Y$3BFkR017>JsI8Tg_1%l72NHS#wjW75k;L-&iPcPqTFv zTeGN5kkmUyor2`p{$RhmRMmG><=T*}sv#9ib%CTxKW5_~nJtU@nElqX-!G7?{tR0$ zv-LJra-OQ^p&CLmZ#*RHYeT&PN#zNU+|zT}nnfLgWTnR;sdt{OSE-Wks@7_d%oa}d zrAAWYsE?>`Aerq1b&aj1=BqVVfn*L3l?2JyUeqgWeUn-X$&r7@>@ekfPaQ`Tl;d2_ zt(c`V%Vai%*$QSSAz9yL>NZs_OSRU8WX(xb54OGu$x7d0wwT%q$=IK%8*I(9K+RDD zk}8qRVyRD{gO>fCX*YD((K%?ZqrV{g`6|T9vrs*A6@=v3tQsUMXig1+ZaHHoF2U?KTtnIbFb2<*ncCwk!HAl-JdAx0aPCMByX2+P_ zWL9vI>Q@GmV`~5vbH=7YQg0fy6_V@kAoUZKXR&H61<4urQZ3jz0FoqxMrdkj$2MiPB?`)O!|^m9}KomKq9$IOl3AwS=vo zQa?jdwvS zCKTd~efVRgryv=d2+46g&#VVE4wA81)LOP~p)NsErPMN2xdJta%B0?)R#H14ne8NX zi>>9Bt2t^w7o8)jN2NkCwm&tVt<$M5AzA4`X2+=(E7WsDdr0Q!K@Fy+KyrV~WwsiU z6?{t_Wxq4*=US;&5C%z=#~_*QNh%7Gde2imAQ>@?{a&G#Lvn1NLbCsU1LZj9YCp4I znElJF$ST#ZCM09iAz4*FY6LZl{oZ5t1te=eK%HQ}3+xxRTCKDMB(qh3WVY&593=HR zQ~e+rF^c^rP@h6!&hf5iwv#$UU52E}EoKjWqGqd3)rF*A3?%F81<4!(*!m({$5QV@ zvidKnosiV~p8bBM9{f~QE)L0T6{(t393=N@3bWpj%r=&q%6{*$-&ROgzniUx+4>80 z7m|99u2HH8$-Hhz*4KdQ4oT&{kX)yu**cb53rXcokerQuY&}ZdWowbo)NGGX(U7bq zm01VsRcabFkJ?NfgJdm#P_EC_Y_%adqK3?3scw*r&7|hA^?hnDBvno^J5M$LLY;$l zkQ`BWW<#01#cUC?t<3&{>P?NHUZb)gIm(ZieFMq7C#bXRcZ2;(Z&dR> z4oQ{jkQ`fG$`47se$)s^MoeJ88Pq07j%XXRL)6dIZAhx*|5D9c29nw8Qjw7KOJctv zkjycXtz+3bm0AHwy`9t{Nb3E{e!o*CH>t|yAvqg0sR+ssNtG9v4TWU3snk2{_YwQ; zgJktb*!l}w&r=~^sd^Qunvl%f0Fw1JqXt1zc{uw`Wb0JQ{_lcFl}*gHQJ2|jZB}y> zq^d$kokv-HNUAialGvIC$@=RYF4Un9*Bh)pvmik&9Q7uU7)u-A(GIk&}m96hk z+aWnG-!c1<`i(05jhdqpB$XRcZP_{sl6r44n?rpL$=LnWdA44sDr`|z8bESvQPeC9;f0VsglC1Bh`nRPJIMP<*n4uY|Xbr)hhPBR5X=6AWfirX ztw$*PKQSd$9)$wOM#WPp)MRQF^(}RfD!W^KVp9|P-dRh1sIa40=sXl+wS^8lSvn;B z`ap-AY&exkO@PigturCn?cavv8EGk$IC6#4YHeGq&J9rH83nP>$0Y z!7K@qd3#Yq*zYy=TMEf}S;^LQY~4!z3Q4^?RKfjf-V%_k?{UihFH?m%t4fAseVy6b zi<(I-q?S{=AQ^jz*#$_}Qs9767$p75L$a1=D9l+wbGG`~nnsO+q~2_5Atd!yv)@MQ zEF_gLF}p(*#Dhpy@B}1PYBGy~WVSS_7yFH1zxj~N@c~;`uyq~vJtXz6Qg6{ZDqeh>~|BAIsRd52%eZ^EyXA|B=uTQts$AW zEBg(g-hrg@0`~iat?Q_xY(2~D5>@hunxh&ds|u%DLGt|9iTwssBiK3tlCf`53#dKR zX-JOpAF3=Skg-i5IifbqI#HRBjD4G0$JVXXWk{;rV3r>nfXq>pszbGeq;hxaWwtJc zq~7PuzNUVGWb7@f*fBL*IVuj4DqWfNq28tzP&=uk)Jdw~aWzMINLEmvN@448Namfu zYzDO&lCj@XXV`j$D*c11QV|MVCDb!iM`{Elm1j`P*?JI?RsG8BcPjKpHTFsBSxDw> zP7Q&i%1g{%r)E(bs6&vf>UXN(301iUB=s6FYesd2Wb7DfE?YmK_CZqRH)g+6rGHYh zRivJ$x=>4@JI-_VXAm}2yyp5A+T-X4_RFFEq>BEm{(N#NNY0uYlGV4MTC-nQ_In+Y z)lX&X+iYD#ZGoiTPgD-{yR*K(*e~xdY6UeRsay||ez9y#q=rD(oGPy|n@+t;t%L9Y z$9dVp>_&bqTA(>+)Tj#TNDYXNVdMBxikevI!+3$g0)e78@RE}WQ zlxjuwh2$IzV>Shn*_Kjk*l!E_zbq+TRjW2yd-RLNvEp85omv0Iq!rmjHp82p#ngTJX2 zl%#x+%+ZKhYe?2NfEvkuue0AuNRIb2wtmId-Bb=F_41xodJvL%%Rq8os!++0RBp$t zJ2i-!49Pi|!)z5Kv+bsiu-|F+E0m+=C<;lHQjn~r64e9>vFvB54petYMht~y#LLt& zNLK$Tv#+T=R1PHP;16c5b85CqRBb45A3-u(XGrGg$=1Pa9Zk)HLY&oqPJInYz5VR> zBlQ5@DoW)CA(^c-Rheo6$vKE;)&-K;MpF~nZw~u?3CSE=*!mq?k5M-usTX!ZsWc?> zJ_X78>QL#BRPF}JQ4VA4XlfB8l|P20-bS`=q0U26>qh4g|SZWm%=A45sm~Er>Q#Yt0f2zt=sV0!DpgSb> zhB14E%7SE7>#4(R{e^O2E0rphA*o!GdXDNuO{8X13#pw{HY6*!O%=bc=BN+Jym8F@ z)F4R4PNEjGbv1PYk}9W|U8U|&6>q3{pN6EepX$ff8IaU_pVl?6=e@ zwqBx2{jI8aAX!y?Y7ivH@e(zc+QWW7P-mz@cpEJB9*1Nt&rm6B9S+HHjAJ&9S_#S6 zUDQdoUZftqtEz-UGH*R<03^rpA~l=Z&3?zIQ&ho!RK4<$tffBHimgK-IgZzuO`(=U zGIj^`3tP`qkNm5u)Pm$V>QH?l95VLb5zu#zra*WSLG~VW*wM$(Zbus-sj{0oLj6q@ zv+@MiSCeW6$=E)S9NSCG##4(RIkvB;<7_=m6~*7MFI7rFQn?aUn@XknLQ;7=wScYL zA*pwi*-7eONXC}Je+fY3g=F4FR8L5%WHK91ErDe0kIa6h^5MT(Agx27UCtTLVzz?1 zP2n%>4vcsXlC|`tGAR6g;DIZ48?&Dvne8v?p#rK(T}Y0jDYI5oe@Mnoq~2%i3hFo{ zRkE2~qHa;;A5inwgQRjRsyADwLQ*e_*~io_NXDL`?y@zcpqj%ANtLIW#ZoEM2x=N6 zl|QDovGqJ8^=>mO5Ta�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

I}))QPeE9W>MclQsp2dXCs@sKouRM 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 IxU2R503*8uGynhq literal 0 HcmV?d00001 diff --git a/x64/Debug/JetImpactForce.obj b/x64/Debug/JetImpactForce.obj new file mode 100644 index 0000000000000000000000000000000000000000..0078e2b278f52d5b568552138cbd6989e0ffa79e GIT binary patch literal 3878 zcmbtXU5p!76+W|`Hi?}y>yVVTLh3Xuh(hqsW|goj#M#K|*3nrP8#GT9t<))Q7(Gg$D!@KN3aNLLVYfB`WcNgm?fXq(tH`+dj0SNPK60 zy!LvdJaFW>_q*qud+t5w{vB)29ilrg{6Ve9h#n)K60UyD4KP=i1fp-^`~D%HIgLu9 z)TM-`uMak68a|ikCnC|Grid1zKIb?pnWmQ#w$^srp%&2!;424+rZ6T`1Yd?SnZ&pn z9R&Z+&>JP_Z6~gcD;|cztqHwUCefeN`v7{<*tpQsY+ZG)>ftzVGvL8TDLPFF*KVsr zEu!Zke;ayV3GBi3zz;7j&9FOzVi3EK$8lMepZWV6V8}Pj8A-k_&d4{nUq}0l@&weO=>tFJV;>=BPhM70>GoEng==6PTYv*V@sE6%B=EZ>Z`E96GGALG2T>LG* zU!ift@5ne_kVh;PRz@2a&|q=AaEaL*5Y!``rz@<#iehNG!kt!8FlTy|J3fWt;_rRV z*SsMwgBwn|f(B3I{5B8NX9;gF)T0B9;tG_!se2~m8}~f~efj#Y5Jfl&on|^69qSTQJ~{ z-N9COq-5992ByBS8x<*uKp=c$tfIE7a8*s8P2uRROG)p%thd!oDXCu8)y;)*J@gpi4G0G^jzXJe(Cwsr(5eruO(ZKdjU)D zMdy6?%p5tkde5-7>Q;a6KIzP-2;S2^5y8&k{rGjvnR#z)adsP}FjTve*>!s?sV!8H2J=-i4 zOVwjwPv=QtrxO%9Ma1}X}(ZyW>=PIifSC} z5Ag9Vh7f!7KFWDU_q-JDvdrkZgO8^Z60alE{rGr2nZVj&j6iLbQ9p?KIn=ngwmw4r z2knRC4CnkMD2!4#Hv5&r7q({%OHtix z)bZ$_i^37{Ge;r^h2tdf^Go48zo_Y*_P}&;+!jt69o6bNmU&VdV?)LgTkmSxexg3E zz3x7e?xa4Sy?Qghj}=?p!*s58O+_=D{)FjTIbX$YY@C#$xQw4+cLL%l`JSEqe-@Pv z(*vQ&JxB1Z-^D)?#i;`}zU4o9PY^WurK!@16FYzTx$tV~k>&5Dx3aajUiw(ZtAEeU zwckbY{?45YZ1S!Zy*1@WQS>sWqaOMyN}i)g-$2R9k4P_|^z~i?;$tb&4^jHkp8@eZ zD$;+4=#vPTFMSlq@9_m7-%19Eb1RX~4fX0koY#r;OT?bv!WeA_C`um!VK;;Kae$)q z0Ma|Q5~E`Qiqa_{o=c2U0g6%)h<%IEa)6?=3B+E;$O=%DUIya0#OS*LiqemPc+N5U zX@H{iE)aVZqxS+7B@+wf&$%CCkPafa`<|7hMDS^R@+5_ zx~aQ~6iu+wldM^4)N3osTDD%wE|m)nrQ27AmV=C7Qe!kL@T9e-jAwq#%KlIP-L&tL zO-v3wmJ47Wjf;(Dp)xk|ehGzAZ|0O7r<@JWG1uC*vnPTxNF{Rl+7nf|RxXU$3-cdE NDRtW$`cm7`>3@Xq1}y*p literal 0 HcmV?d00001 diff --git a/x64/Debug/KILL_LINE.obj b/x64/Debug/KILL_LINE.obj new file mode 100644 index 0000000000000000000000000000000000000000..c7ac283a15bc55e6d53d5f539a223b4d2dcd9495 GIT binary patch literal 17363 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

RQSIMNtz$4hs?c;1|3Q&F;MezK`B*)%uV zbWXBqUb1NcmEnET6%{3Q-s&p6Tjwn)t#JGNt?hp66+D|+ylQ8&*x$4(gQxrIO3E&@ z#o=z?7fdM0n)Jfmh%v19?M4YU-wCn>kNCcvEr#_LoV{ivzeZ<|V|y9Smg~r=#d~(P zcvk5mZ1k=ZudWe?msMBQ;We?Ek}7wFEidy$9T64p%~6?q`3i4MrMs%mheQ|>0FNub zQ#Z;uB)*9Exe7C1!8=x2cz@4UQM{mMJ2xwCzMp3cOn9%yW*`1`o-I(moOjFy40~74 zmOSBAJ)7OEsCpIZm?fC8<%@f^jQABjn<4oPJzKEt1wC7cdOz=&RpC)Gt3&uI+8=BU z#qq^uy`&e{Efvzl>ja7B2+XH%4RR_xtKFME zm~Pl9R;k2Ltagc~Sg@>IM_3#SQH$YgXyFKJVc{Hm@5*=3{C;n1za)w)twKSir;&}wk4ZM3bWwJL3Gi&iUQZRxg^{hfRM_uR+KWFWeBUvZ~_iVSWug_5E|909>G!Lo9v23S1 z)rhoPqRJ(^-qz;+jjg7e?*QI(*(q;^%I@!NY8ES{a?y78mMXP}9OFpAPq8X4*6kNG zl=zR}=Vj&@OKQK>fzQ2}0Uv?U@Z93SuxD;yeC!mQk9$1d#}U|k&=c5v#Piv=10$Zf z)110Wn@6#2uF{Q<+rEfzX0O# z!3PQ}s-UV2_s^X_QUrzi^D8NaJo+b zO@e?ojClgwp01|c@Pa3B(G%~cXDIxfx)^1=o4$7MyXl`AJDi^BFXqbcO6s3?I6cGY z4@jf$4yRwW*W$HcF^`O;Z#@-*k2B*eax@vSANOF$lEDyj2!s+3fd*$2PulVI)QMhdRc7Tkx?n&HGXkZIIT0k_)%=D~2nTC+cKEb&{jhl1;g z8Qg}kw0ILG4HE?;Ug4**_;7mtUaLw8b7fkSVQVI)#_@OGY*g4P(6*HFdUyEJ zlkOX&78;D%LbjsgOook#C&P`2V~N{+qeEDw5MP9(EyUw*)47wkX=~yI=9a|uFxzx= ziw>KlE$o<`I`x+QV&aJ6x9m0@BFUH`CLHMh`1F|PxN@96rOEP-ckEXZH=}gycHL?u zW477}nKE}JjwpV|?$jZYw1xO#Oqp*au7|YjE*&;WTi7Rf$~=@fqWCSlTZc$8W{4ly zltJgEq0qqa6M^B^4}w%+gty%zya^xSE&1r(6G*%AN!s2k?BVR&`@eaPd3(PHrr6%^ zHpGryB*s&-;Q0Wf4~T{&Z3YA#h%ke8e#5B&IvY=|G1LaOTR3Q8kA;mE4q3RxMBYt4 zx)A4q6up5pHm$}kRS#@ua;A~QgC{aJkkyv{Htli^E%CdWkAGIwpyKQ|!EH;oc}Y2d zbuIR7%QotwFk)vZhJ;|!3zx>l2NT6aNc^y9xm6*elPw|*_Ak=_yc6O z4w0lS#1ErocPFlgT)g(^uu0m&=D~8pT6Rz3h~l^Gm=2L-%n*<5;-x1?!|~k_y?*!E z=6s~daw%f?zc!J^5;v}N_dea0BxAPaaqI%)Po#Z`BZ}YM6FNkawh%vzi8PV89@4V= zb=V|rVV~fMv_Ek~@mrSGVp>H>#tiWTok$I5*rrazaSht~VO@g`ByLXW;DfsLNXBfv z6EbxUCXOh62OrWQlC*{RVN9JviR&RPdqjs#(iZj!o;pVoM-;zh750}jbx6hx@dKSY z=bdJoI$PhsXY|%J=odIU{tiBw?k1g|bz{4EePiOCKRr+~cK-AfgC6FyKn& z%#Zu)jj=!O5AX*f{ziRnd@y1<8usIPq`y9}d0$ds7;@ZiCI^g9Q~W)!9HV7s*gqH; zj|`C$96D1nXNqiNEsBlow2(feqysJ{Q18HSgg#QiS-s&qvWw2fBfH54hv9SHXOA8| zYIvov<{f?8cD8vRmp6)_hxZ<&Jh&~6Y{3Nw6Wf%w3EoK;i}A<-vcv(LAi-$lXWS1# z2SPK%aAY5yVUI<^XdA}yh|QE+C~|~s%tngP=Tayqjh0kO5FZHL^g$0Bjl}WDd<%_d z$&_U@^$@ofKOi?-i&klPUTo&jo^^wDo^Hb7NDms&topG(KQ}%* z;JnUTcYaDFPc&$s8vC<@TyrvwJZyw8$+Pm&#d-pfv`wIqSOHA^vxCKnBZ@!Ai*<-3 zZ6Tu1+RZ*2kJM8yQZJ83dMs_Di826d$Zo{QsRtlAK`xuA9)LrXAOmmb-_?%vlIAi>({p5-_@l`|P5_1Kr5sqZ0b z%=Vpp-&?O+lBBIAQ9X%t>U)U#Nn?oLy^T63l5v8Hy(jpv_q~miR#-M}?Ye#>Tc!Wx|dp0k&hHqV(-XwE*(GiSB zjOyvtm^RGYutd{_Sxei7`O_52cx2El6J6sG&@P^qy>~btq zstl^Ojf6Deb~+o6>@>~92Q{JgvD-|03f9U@6vi0Ctg1~!I0rZe>-55P1_d&KNi8Gr}L4j=7N*YE%|5HsI0)dMh# zyN@=q7$!bC!=0GvTzt>~)IJuQiI|ZV7MnPl+QS1d7aD5-*3cQY{HB@qYz{!fx2e+u z(5~YFXlOZsKx`COYZ3@AmgKtf?!nY^dw#90)h{ zcXW4^cK5dCHw-Q+Y$&659U4}4G;av`2YZ^j`j8rG>S_sazGZ>CLChfbpZlT>+Ee`|Pt?E>HO?p~O8`9!g(&{x{s+0zkj?e&$0oBH}Xntg5E zy}qWNo^VIA5k;S`cc81Qqiemd+mUghZ%u121>(!k&CkoeBs21Sn4t>6y&hD0haO+a5m3%p92sEcdwYRQ5Tbn4oW!-wx!qAtqD%{O2wJ_Y#wP7K5==$EK zPTz90YhOcUM{{p?Uw2!-Z%s$vKvURP*FVtG(cM7p)ZnM8^z?T0wKl9NZ3uREhmoNU zm{*uxfPZ;Q3JMz5b#yfZy8HU;F%*o}S=G6yQ1$gTCv4UR|J4H>J)Nyx7+sYEEp^xS z^|y8=8c1zRauu3K#b`1fzqAD?R4a_}OJkUhS8;#13i3rrFCIPWV`X{i%8RV9_>rDfHtmsR*nYHLf@ z2G`d3)kVle$$XRss#p3e%B%dL%GG6M<#nZjlG+vive269iq(~VH5XT;{Jum)M)6%71xz)$)qf^*Z$|H2y7CVTdInPWQsNPq96la6#s=EEAiF-JO$WXm}2NKP~%XrxKe#`g}pd+r@J`xy)3v^NeZKalKHtWs@Ib3?UiqTJ7T-1P9nI~& zjy@kYS$#0YzLxC6-Pd3wPZ$Lf5%Dp6q$;JWZc$*Z#~jvwU;BjcUKeFc`wm zm-P8QeZE7V*PuX3zgwTvM{RU|zdonWjp+PgeNMOWbpE(L$2~{y9CUPe&SDjtV_moB z#M!hewE;JCzGmz8&DYx7iyN;z6d5lqUzrmsJD8V`8!Sb#sEFmF#VnT;7_uN2Z@449 zAP?!294BD>|38_3oklB|wC5A(6YfL&9$i8r8mz_ z|MPXaS#Fcd-hFQ7Gs`pMS*r7y@zm+_GM7IyU!K;R^)U5j{%cjzDzAT4;koLQEk0G+ zf1WxuB`xWEl~lv}9njwa{hfw>C-l_O<~5U;_6@iM%R%dk{TR|G=D4t@9S>jJ(%RNE z5bnpv220QHXv56!>kgmqbEuI2d zhC?kKeLYdGt1HTI%k8f_-{-}2$+0y7VL5&?hf?()z;A0>E_rqy_6 zrtMAoL-I?hp47DWlb<`=Gc7G6<)zu4+QnO|q{^hrlZY@9aliTx#N~*to%inIoZZYAeIM(Mb?;d`KenSU#a`3%Qh}JaL z4TJEtRiu6a|I^KbNA1A>oQfT+u|xN$9|~btsdM}a#5ri^&N*hFi)mhXR2GOm`#@~B z5X5$u2(1Ru?D42>q0fLg?+qZ%`!68Qdxy}IATI405a)Ov#5sN`cJ!E!^Cn|Na%rayUjwoKPB?`g4nUg%FC_DrvtvYi+A zAY3lJcgd6w;?!c%tq=-xgH^lBQVwZ(GJ&trX zh)bhym2znXLaRXRZ-dZA5a)=99X*oayx#_~=O;urA@q{apF!*;3EN@Ldj^P0D-ikw zi0vxHt{22*3`*(^k~%7MABg=uB{TtIf3J$&8$z>S&YsT#vE2d?$CoR#N>W3jYZJO2 zgj;3w+bv>uJLnWc_jRF%geE|o}I zj)yU zds*yW7rQ?SorcNAW#kH73gR+KK{_fBmk|>BJcvu%2I3ssL7Zck*gYWh42VnnvCwZp zocA42mC=%a2XTw1ViD&YnIOLYE&x>;c9(*9Z7&D$3Q`ZkKa89PL7d~uqI&?u zWjrJFW3l_S*rlNWuJ1=c>?I2X1C%yLs076Rt`KSiagG788xpz?#GW4%-I&m`LcasC zmv=;WG8A0e9HDFw+g%31@vQ@K8SRqVE2-BB-40@Z4-1Wf@DH{8Aq4yTxlk&)g*{IP zvE3OUw(|*q&_Y58i@V9FLW{{DwmrD;;7~bRe{)ZQ0&%8YKIVg z!;rn)F1oJ?eOFSS194ye0)(X!effsadqSC54A|~05Ze`iIQmMVda+wCcDH~y=36E8 zE0TJT&{H7x_o~nvATIYWV&}n<#}VX!*z+RMl?hb~Z2+;C0nv?uxU_qO9u&L1V)t7R zm+_{g{z+1kki@Z^3u1pugvvl%Zk^a&B{U4eKeYHiL$KWrNxe&GpQOGhx|fCi8^p6a z4VPx_^V2~*a^?x;3RMcVfjH(Np)X15qaZj(e0xRreW5o%oY!-vNoRn#+_^&4Aoj9G zbnQa72>qMT-9k?Yy#(UY-V^fTVGx&=1L86kiLOK_1me8c3T>6t+l0OcVlU5%?q@=; z2_@k{3zvH)h&>kyl}l}V z{%asE<9?w-LhlQe%~oou(bKnqIPdpBoc9Hx+2@+Ng+e!jE;aIg5v0o%x?ku=Lca&G z=Tx6b=YlwI8Hno}6kSN@IuPgmvd}jr^)aE}f!NEL=b4`UAkJGSbf?h$LTTrlHJSzD zsOAV|3k8M3AohHd&`wEx3dFJeM05v)-Uo5stT`s-gSgzwgxW#uWs~SO3q36Kn9$Eb z?D=<~Iz==2Fo@R(HP>8o(m}k2og*|~$S-sii2V%;jY{f+Adc@5(S1+oS0K*&H=)dV zX1QkztpKr?D$z9x-6(Xc&<>$Tg?KB9_ z1F@GUMfbeWFNFRgG~+_k^FpB#5Vw6Bi2ZenZcyl7K^)a?p{FEuLg=p`_L4l`^gL52 zU#LvzW)QC`4}#K+Q8FfU$^uh&rqBS0SBw7wao+bNHRWSwj%uMRh4z4WwRj4|d4DAI zije0bGxcl`N3}?(Mp6erT;GW3wh8?Qi1Y3f`jw=btUK&Lr34! zBJ!%wgHAPcTQzyry`Ya6y8qDRRnLRc4c$*PdDWjmv~o>Xf7RqwnI7KzOjolsdDX{2 zxXFNBwkEGy0m5bIx7x-O$lzphRAEBM93}=;+(}L|(N6gl#Z%U)AJQ`$5rGIW2_sD>8e?iSJ9`OxrXirO=v$5_wSvWyefFI*}wIgyox>@LO z7}-qog#tqDLR*B8O~ECc!HFjFikk=MXdcjfOEFrUiBkyapjHq9FQUpO!#O`^YXu*S$^{%8L!{zybwK{H9D z{VyOGHA&iuxp$tVn=n@c*OpE$!Ovp+Sej3gS|1!Utv2StntRMsNY=a-%^rj);SORUxvUigAH9@ z(bTSEB|JAmXSM35pgG{sbU;&qxGkGOXy}gvSel!mq2Fb1Y3O-ni$ilaG}LOA%|p=8 z?@6~bPeMb#2Heunlg%3)nqNY5i$n7cH1unwtz1b!`VGmJhMs)h<KuXe1a^yJZ%Ton~Awy@_DEr^yz=Z(08XY;z zlV^2VhK->-2+f$I7DpWMkkL$Y!h^Y9IZ>L5C{0_G=H@8Pzej1tqBOJ*p<*d44()Ad zG8~$t(D)phbPQx#-K|{nprKXX(iA~c@6gb5+B6tgHu#;Z#y15m&3b5j4x4MBq1~Zn zL(g&PojgnPWoYP4EK73_H0FUIa6A{KIUJ=q-8L;b*JV+fby1p4qA^#AFFB^P6IPYWw1s3gvf%bKAn*P5nK1!LPMH zJ1<(5OYdFOt*s0CEAdW7c?sS*s|$7Zgc7`VlPD8~MlYJhwu}3kPHgjduj9nFw!eTD z+rsuDT5JQ?i#V~3_{Fr?X;giATg&-^TI>w&_t9cokz4)38lj`ZqF+nHSDr(yogMx7 z(qq&5F1%OS(X2wX!O~DEy#rcDFMY0Q>g`jZ5MH#YC=b?@;ERX3&eMG7DF%?;xWIW@ z=sYcQo-T5pUgA7m>^xoKJk4{3mFEg1&mE^LvOHI4c|{5@SYBQgsIH(_k*r~FzPMIO zZ}8PQlFWDW#H6eiuRdK~5-bhGwA1enP2x#gP*;X*^LFmCij~>4Yb#t7Qla3onu_we zU`Y2)^cU@Ewk|KP#k-HO(<(~hC;6*Z1OsvMm6VmmPYG5}RwS|ptK(#@^;cG}@yAK@ zSJvQ7*r;_2y@$Hddt=-T=zYgIdf#zgRb5jS3}Fm7v=~Ep=d(IwZ%)T>E_98mLf5D& zbd9P)_o#G@>AXd8)<5@afU#%0>y5wIMy|K;VjH>N#*1y`dfhIz5wxn*Ut3#UOXJRf zx?pvUtL5@s(>Wh4RZ@WqLa5eXT3uV_?1MNd@EIos{SqeyJrpMeV<=9FYn{q-tv&g! zy5+k@MZRlPiX zz5-W#1+MrCUH%JQ{tI3H3tj#TUH%JQ{)=4oFLKqt$W{L$SN)4z@fEq^D{{qGbcw2~ t#g?Hu81UDI97{c3h%SwH72sE+jhv1=m_YJ+bSPBb*|ffOSyNxD`XB8iLwNuI literal 0 HcmV?d00001 diff --git a/x64/Debug/Kick_Influx.obj b/x64/Debug/Kick_Influx.obj new file mode 100644 index 0000000000000000000000000000000000000000..535940db1497571781613f3b71b8bd669fd342b8 GIT binary patch literal 35529 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/Kick_Migration.obj b/x64/Debug/Kick_Migration.obj new file mode 100644 index 0000000000000000000000000000000000000000..47e9ea9c01e3750f675341ba5d757fd2d8391482 GIT binary patch literal 230708 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/Kick_VARIABLES.obj b/x64/Debug/Kick_VARIABLES.obj new file mode 100644 index 0000000000000000000000000000000000000000..e115b974305eadf2f73a17067de27007747e00bc GIT binary patch literal 14666 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/KillLineMain.obj b/x64/Debug/KillLineMain.obj new file mode 100644 index 0000000000000000000000000000000000000000..9cd5d0074c8fb28ff6643e8ca19c20a91851c395 GIT binary patch literal 12436 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 Mk(06BNG8Vq8_iF)kN^Mx literal 0 HcmV?d00001 diff --git a/x64/Debug/LOSS_INPUTS.obj b/x64/Debug/LOSS_INPUTS.obj new file mode 100644 index 0000000000000000000000000000000000000000..293923ace97a157a45869799180a58140edfce15 GIT binary patch literal 507544 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蠱`lisaDda>1|S8Van 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

j% zOWi(bMAj$vX$jlhF^i^Q8Th-;t7Bja7f5xiVv7kAEpC_UC`qA9^6FU4$`Lxs?Q?I| zq_9A|xt0|sbQEsS#$A^}m*n2uz{(Li%Av_-_rPQ_Y(SzQm`?cG{-?-S&;c4#xJjyP z6MKcw@k)DE+0qocB(Jh9tQ=vYav|eUSG`g&*9NGOIHSRddEJHQAcI<()E@*3LED`;m(!yvGQ?$us*5ecSCI+iz4(B74odkz+hSCtWIy1Md-@f*DIW1 zR@o%0RcR#otT3UYaCryyN zDz1=yL+JRXJu7a03SE*{Tp24z=qR_(y?ILt3&fjMtT3UYaC>@lWeQ!AdviQ1N0_Kw z$ceR?N5@X61$+_JCn}`k2m2 zZ8e>;cTP0b(21sB{A1THx<{M(?s(i$NblCB{SYzqYqk;Ub8c)k3F+J|^|r0MpmAm* zR}-OAO%koN@D7;Ir9KhMQg23{od*yAv8y2VE(|XWR>?UW)Vy+`hNqrq*jia*m zb@B@dtapP~Zy(`F&Z;%0cHpK|+9dC7^H@DXZ#8POQg@ir@o3RF@1Vc)S2|ud)Uqto z02gc6UjK!23uodecJ;ai)JElobCgGgcFD9SQ76ht)QNNw^~l3^r^fg2!qE=v;#52)El-}OqNOY%;)f|Vn5l#|#QZaFZ}$`1{Np5xTPW^>U!ZDx0dWu407=9fjMouhyo}C3z!R&B_rv%1I+h45XfKOe2c!;c}pH zpZD&@6wZ>~y_S7L==i2RD{fH=U6NPa23C$RQMnL7mZpg4P&n=7eq2iPQH{tPi$8Q4 z%;fgglgaQ`O1td)sC|11UrN1hV%HHSx~^TK_No-RB(K*ktQ?`E+&=Fm>r+@D-fU%s z2_1#ovzKg1p-XaaZe!&L6O{|uOVVFRZU4=IU%|BH-4t$;Dr;k}5GH!1T{^($DRfC* zWjk3p!bIglRGBk-97(Squn+u%o9}cU$ymfVF

?+Fy3YN!4M}kn0nrW$1Tm!XitUG zfSRA?Flnx()2Wqt`#i!AOW{Nb7kTV6LdR$AS)o-abV**Jy;(UzM>(ocdcgu!iZja@ zH4h16@yE<;*o2fp((#tT3UYaC>%uwiLP~_vUm~jxbTVkR6~P%`y5b2>y{W zo`j~FYc;S#2ooLBE^WVi3SE-d);v~@&{1xmxBWgTEReR}#0nES3b$w5FHE6Ja&InT z

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 literal 0 HcmV?d00001 diff --git a/x64/Debug/MeshGeneration_FluidModule.obj b/x64/Debug/MeshGeneration_FluidModule.obj new file mode 100644 index 0000000000000000000000000000000000000000..2fc0c9feba4ea945b2212df4dbe4503f527942e3 GIT binary patch literal 155136 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%0DVvOx> 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 No;G#Z#932|{vXdN%w_-p literal 0 HcmV?d00001 diff --git a/x64/Debug/MudSystemMain.obj b/x64/Debug/MudSystemMain.obj new file mode 100644 index 0000000000000000000000000000000000000000..1f7b2da07e967743bddefa382e7efef94ba1eafe GIT binary patch literal 12473 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/MudSystem_Variables.obj b/x64/Debug/MudSystem_Variables.obj new file mode 100644 index 0000000000000000000000000000000000000000..4af338983e9798073c1332d27595602439a0d79b GIT binary patch literal 60883 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 w0ui6nAaj2F6j=Xc)!1*x?cMgRZ+ literal 0 HcmV?d00001 diff --git a/x64/Debug/ON_mode_simulation.obj b/x64/Debug/ON_mode_simulation.obj new file mode 100644 index 0000000000000000000000000000000000000000..b259172a043eef3ce2b23506a60e36146a4ea361 GIT binary patch literal 18864 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/Off_mode_Simulation.obj b/x64/Debug/Off_mode_Simulation.obj new file mode 100644 index 0000000000000000000000000000000000000000..bfd4b4f59b483a5d7b5a761281c9210e20d6caa2 GIT binary patch literal 12077 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 CH_^HP literal 0 HcmV?d00001 diff --git a/x64/Debug/PIPE_RAM2.obj b/x64/Debug/PIPE_RAM2.obj new file mode 100644 index 0000000000000000000000000000000000000000..225647a7ef78746e340274b4c5518b0b2717f66e GIT binary patch literal 18486 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 VwKsWZWiaULXjt{tCK&r!N2i literal 0 HcmV?d00001 diff --git a/x64/Debug/PipeRams1Main.obj b/x64/Debug/PipeRams1Main.obj new file mode 100644 index 0000000000000000000000000000000000000000..83e963683ae65ecfe9b647e5398ce9a7c6cd618b GIT binary patch literal 12499 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 MiyABEuWYpb4~(Ca{{R30 literal 0 HcmV?d00001 diff --git a/x64/Debug/PowerLimits.obj b/x64/Debug/PowerLimits.obj new file mode 100644 index 0000000000000000000000000000000000000000..33b61e8ea0035acad1c451f594ee6db8d65d7526 GIT binary patch literal 5361 zcmbtYZ){sv6+ez&|LnP&lXhv#7~;{Uqiaj-q@|_dkL);3?JbE@+fBR4;5q)2zV_MA zd$!YRszzwhSl3o7Ftj4|10N6rKA>ruM78lJ>n0*Lgtnrx3B-qeK-x6WXu_m1A;j<8 z`}}Oj&Vt01-#fo|&bjBFd+vGno$K6V>*=E>-ppS1673+_`m6cVRU0#TtBWY+E0?Ke>RLnrK)(u#F}b;M1t<{c zKi#Uw!_(0PY4&i-D}ub zS=jw?!mSNq!TY}BhmFI5$U-=RSy1FcI3iZ~fIuhbv3kAWW7yXt=dOPU$HM{KR2lJ} zaNwHg=0>;k;mCWxwiO;+VY+g$3trz#vm2KO;k}&=PDAh1#z(pv{N>@3dNPru3;`5j zI)6QK{@r(k>zDGAUws*`Hr>MYI1(aAt{#?zhEkK3c>?cQB{h|Zj;9iOv1Vkdx>*XD zR(>#bdjG!E2=5cAN%K_R8q1ut5z!Mr5Vj^>9|Lm%3Brq zqz(E92l@~64`{tfv{@_VU{yXnW8p|xK>i*de$;4W}&K0>6Kc>&=S>JPB&8=r&O4yQnvI;J~b6eB~8;nhXmlj zzW%-V4IJFNH#M!7QW3LKJ%)7`(K%e)zmF)o0qPJH znU6(e(EuG1`N%oRjlWq3L2rQG^9jM?+hpu$I6f8~k0ujzH*M@LJCfz#ZracjbeQA8 zV`!z|gPfbN9eqhOB2gGZ0X;`b+n>Sm}iS2jmRUTA*Qxh>)PGJ{n&#E;2xbYH~9AIy5=Jm$vhc2OWP<{alX%9FVm9M}Y! z2gQu$YM^jh?lm`DlTxuhzt83Jg-p$; zVy7C~rWdkisbU)2v=%mGEV1&%T&|O-j4wv9gQVE5&)Zf!Inu$3m0iZH%odGwPOp^P zOvlDXCW7PP#5PSubS~I4XTs5uGyCHIl@J@KQC>D}UDuR5*7v$@Do;Lj_3G8vx|Fr+ z3OC)~e)`EjyWiwm8kIP%3F_@#eEa9F??msq@5;bjF!tibe_OZx4++|7pIutK#o4`1 z*dD>1w^W6WIH&?7rH?qg?>gw0j`S6W_ZJ7PL%5Keu;+Eqb|7hQHxM!y(!CD49|+kE z-eDkqK^4jX@jI=M4up3C=wTq#Si1m+eoDkfVhW;{$(STHX&iy7Y}W*kxD~A?2CuK zVk6W=KpX=P&Dcn#Ge8_G56#&~rSAc8Og;2{8>#d&AdbCQYi++Ywn?hja0ILI5#{rYa^9@1jM=Kp`Y4F zr8j^$!#s4;Mk;*-#5wMv|JX<+0|yZq)3S|JF$a#li!|IN@;eAX^l)QE>WFv7PvUZm z?+4p+QOcIOa29Qxy^&(%cJV&48>qFhJ#IX17d4;6*`nLUXYoFvQNP(bNq%M@+%5s@ zVnLfv>R1Bk1o$pw%{N{-ZbC<(?cy$P>;ci3d=PiZd9;o5TpQ<4ZJaI+gWaT^U2U9n z8|PbXoM+oOZ?$o5lLLs+B=og$_={O@64u%{m)khcI2^HFP5*T8O1fSAzO}aIe>wOB zEOpw~;>8xr>4H(MRr0yIEzXU`zaU5o*x~;{T3ho!Ae_T)*Ja!t!$Nrhk4@hoN)PIW zzhIb|Y8fYwe6`tk%jxCi^NNZqR?;i>aO&9h5;Rno*(ENj z#3+}G33jQe#$HXYUUILdSFgZV_q9XKy_)fQ6~ChK44zd6M literal 0 HcmV?d00001 diff --git a/x64/Debug/Pressure_Display_VARIABLES.obj b/x64/Debug/Pressure_Display_VARIABLES.obj new file mode 100644 index 0000000000000000000000000000000000000000..33aba58789699ffb1b57ddea0139ee09bc51eb28 GIT binary patch literal 4142 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 RB89{5RAfiICz6k|{{sKxo>Tw; literal 0 HcmV?d00001 diff --git a/x64/Debug/Pump1_OffMode_Solver.obj b/x64/Debug/Pump1_OffMode_Solver.obj new file mode 100644 index 0000000000000000000000000000000000000000..a66bfa8d6143f38f6084337603b7e1caccceb97a GIT binary patch literal 11643 zcmeHNeQaCR6~9hg8q$v>(6X*7=m9A!5FFb{(=_`^>bP~fd^L8`Fub~sKN7c&ZT!&| zgw~W&){tharcOm0Y-}nM(kj#mI=aEMBr7X}3Y85QpIbq6Dx*@NDU4Os*zdgieEr^w zd2tl}+?D;#@BYrc=bU@qeb?_@zu^5P?1KmX7WjT8V=l&vC728a(%V8xl`S+e=D}A} zO3Rrg9omsrk@K%+tgnc%_Ukw~0wFQ$W=k;Cm+7x`XPcfhGZtIS*fTeBWbN+Gt5=+mWAz*D~f+>=mOf zw@WAe0Wn&}PJ>^Hc6Tf75C+;cHY(%rpeh#vm(WgKXdJf%Lt%d=nvO>L8g7V$2jjs= zESbk%DX6u5(8)dt9T@%0}0)xzcrF>@eyl z%;u9QuH9$NuHB!Scb<2Rm@7}1D~UYOT*;NgM+d0u@WY#BF**csmh$Zy*+Y1Q?HSwI zdu$#nFL#YD9)jYxb8vWi9yNg#32oqcWmN8-u3X_7IV$(7a|J$e4W}!u)T*9Z4Yzd; zkB>Mzn})}lhF{k@+5KtpcYBYOaxV<6xtCI%m$b1Lns38xz2v1gpO?aha*weSK9tSm zWOF_z1rFstV=sIt1LS2OpBGnP%oQ2yB_pG_(jj(DG*hkk6wqV;{p_>Jvht$IvTu)x z6FIfZ?ulMa`%<+3^M$fa;}^=x7nH+jxU71-?EZB)SAJ!$NV59>k27fF>bOvO1g6~zQBcpBe69xmHRi$$X)1(2v z%V(`Mqy*=C~EI68!bOjwoZNUEZnX(l|zzIZ0;6<;J(zNXE@ zGPIx7I^i{r4(5@GMkP9us_15#iJ-ABo(Y%Yi=@iew3(L z%`_8fV_!TIy^1fADqquPq6+QvW+M9lLO;vcA>dCzyT{5$*uP)MQVfPY5^*R2y;rK@-%>kDx$pm1Pdk_&;rj@( zzMh#X0GXq~+nJ1S!H#Rn+v9F&^SUF0nW#SMX$RHYnHfyjd>!F% zTRa%@x#Q7op`<0=w}o{TT~h&*>=ZjQcP{(z3ObrtODr9VuIRd1T8quUq(3GJqOMkQ z#0L|RXecQ;qW)AW5|G02q~uQ|qLF~?J0&GEu~;P5FU2(-tE8S#GKJtIyVY*9tg_go zHJL~>NL9PdYFq8I%B7SAwg;yj919EvS#=9`FKL)kbu1o@_s6AbdB?aRoQX!I>W-jP zz1^RTHDDJtlni65HYHVKQ#BI}HRN(5RU;8dqJ~-<%r)2+u&uIUOSn&}miK%6{DG}f zbzmSA*xJw+&%}bT%4?~#tU^$!h9E_d9!Q4#q!0G>6N`pY^@eDiXR0b1iEXXor?Efj zAC%T2uPJX^B#?}!;^DN^6G>(KQOTXo1S4@T<;m-$p(K)#RLI-o@Ot9$C^}%@)oZJ@ z)Zk-VT~p)ji^ROHcq-kC2_R=@!(d%4OC#8%G3$3wlXAy z#9hByh_itiVh;0rK!ifk%{@<-)M z_#T&$?0<-IijanSAhDhdg>XS5y+ix3fZ-37p`SoXkca0ob`#_i2>dIMzrT{P6_6*e z8+|k6OL&gI1@cY&-Ek}A89et_L7rd8*lm#iDPzn6Sqx{@kPEJ2%nrE>vKI1s$a=^O z z=^f1CvDK~eaW3Bx>s7izTCqHMbA#m0^rZsHNFpuWxI8Gu!%})6B>9s`|6S7Zlr-Q^ zN!$FYHx<7)$6QoWUSz(a z!O=(0Vhy2tk#@Ft@r8GuGX1b+>G}t4Lron|@4IZldNPB1 z67jRjCNF%{1)EsRVS6i%Fa)$mpr?Sa=zx1ka32VCEfUPNbwIo?-Q03?uh2duxZenL zR%nZG*08|A$4Y@V0&y#M3v@uBKLK&Srv-OOpeoz}bFCAITk#2WP-uTGxEBN}Mv8gg zWk9@doj@_6-7C0X2=s=~zAL!PKzwZ1;kSU>s|Vs-N}z*4Sfr7IBck2&0u@~$q5@K) z5-29L-xJ)=1$td*Ck3|vbBSAV0`c+sfOu372sAF*y(!SuSonF5+km*0bpq`a+J}L- zz2}7XU4fROBezlu#I3XobidFZ0^(NwBDCiOs>E8)t$YIrH1gLg(0-wP9Ee+aOK3k4 z$bw&AZp8(}t@H`>W1+<#dy18R3N4lbrAIvwx6&oJs6dB=b^?gU@}ba{;`g5WT?53e zcm=mjpvQ&wBoMc9NoW`0Zh>2A1>#o1f*TU(n9#lo#I2Yic;D*;>H*?b5`ud`pb4Qp z4TKMJzYq%vx3WT@%|P7B-GVzH&`F{F7ZA6y1kJe>yFgojxRv_^_fvsh721nHiWOW= zblYZT*8Eu_S_Qfji0(Me>@Far251)$5)8Cgv^yx!;{v@P(Az-Q$UWWz z;^R0EME8zn_A*u}ED3BLdrd*5jMl40nX@XWlr;fS1oIfJVT4NA9Y7SzJVvV-p;ERJ zh(j=X}8+z|(MB4~8vQ4E3@fN{y?j0ly3BBkoBwRGAqJF;ziwoL# zR9X(z?Q7|Cs9RTYkymP$s5`X(KeLL}P$|YZ&#LSoncK#&Y*ES!3$Au<)Zn=ZlV6wUD&sGK5+# zV|S1*d~?he)S?>ZF4WQ*W-n^@Xqbbj-KSxGiP}C5a}>1$8s=Hl=w2h|{T0*>X_zyp z9o8@(qxPhRnS+z`jD}eZ=D3Dg4(6nWp}UutHH;I?TNHMW7KLj%p6Pw`adAo zYcUwwwa+oj!L(|am0&y?hSoOPL(cW;217f&IVJ=qs$nu<(i&zDm~4Rp<*BiB3u`zapWGet=@)>e9r{TXOBd!;b`2S zPGGMpl(yKXQdZ_@?rLdm-Pq)DxUdb<(zK@4>GlmKeDW@dqq)h`)ZF6kY;C&T(b0|_ z8>gm`dXt4>@M*O2lc-F$w0CxU+zgMyzR+MKjn@JF{W0uXMFQE-+tph_avx=TNXDKH zPgASU(b3%wE7Jw#c6xm3z#MM$YvzM;dgKb!%-7{{_#Cvg=cc{99)B{$d_K3QtF^_` z+2r_^uSQ#4sjb#(t99DyDs8o1TV1WK+N`=df>Q@#!-><>b&=V0vDkE>+H}F$bkW&# z;n{TY*>&;Rb@ADC@!56p*>&;Rb@ADC@!56p*>&;Rb@A2c;;YfcSEGxsMi*a=F1{LF md^NiGYIO0{)PL?(q-;%UPMqMw8ozbvHt-!INO>4 literal 0 HcmV?d00001 diff --git a/x64/Debug/Pump1_OnMode_Solver.obj b/x64/Debug/Pump1_OnMode_Solver.obj new file mode 100644 index 0000000000000000000000000000000000000000..986dda5ab857bd1e1f492cc2a000887798a23e3f GIT binary patch literal 18755 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 T#t;m};_eS_imV7GBkcbGiqyq; literal 0 HcmV?d00001 diff --git a/x64/Debug/Pump2_MainSolver.obj b/x64/Debug/Pump2_MainSolver.obj new file mode 100644 index 0000000000000000000000000000000000000000..4cd2bf5f6b64f8af6ac3b10a0cabc496ad2ddf65 GIT binary patch literal 6198 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/Pump2_OnMode_Solver.obj b/x64/Debug/Pump2_OnMode_Solver.obj new file mode 100644 index 0000000000000000000000000000000000000000..8778a4487b3d07758106da405f36f6117710e065 GIT binary patch literal 18773 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 z

|U{;A88njUTFMy=b%JxT3`r)YqR4pK2n&6cvc-1%fBmBD{?HaU|^m*r+#7Jucb z*<>X-n=Kb}$;VTLd0ZgU9;5!7fb)01<3jw?3pzVrT&R?tna}s%MugtJnFw4dRFXM4 zRalrukG&>PPFLjqNud{ gX2HJy$a1+-+OhUDWAN0cokTO+tgWaswT?>v2F+7-i~s-t literal 0 HcmV?d00001 diff --git a/x64/Debug/Pump3_OnMode_Solver.obj b/x64/Debug/Pump3_OnMode_Solver.obj new file mode 100644 index 0000000000000000000000000000000000000000..27318f06f9a2d13179aefdc0b588114471a5cd14 GIT binary patch literal 4334 zcmb_fUu+{s8UJi=nmgxOCwINltE#e`Qq-2ie{#o_Li&N0Mo0nmMX9nnqn~b zw(;-PMr+iJR>#n{H9_ZGW2()1eYdK%VRoCl)HHY6XNu)mp%mYx7qhmF?5s3(rLJ|_ zJG#!LYy3GI@1FN35<&(yt)NwO6F%+FR0RuO*+5Ca+49 zOkRyoipp0wrpXH#SCSVF3v%ts>~j|N+pWMjZ3QO0PYCn1x32fh zM&Q~;zxmq6Y`-zAXt-*G|L%9Ky!2j`&upv2Xn9b{^OuG1t_iq270~3kaDXpfY@>QU%EYpa9DwR^hz4x?8olB_Y!Y~q_*(@ z*yPB?cdlP|TXM{8M+Om%4>`^e{Y4;jd1X{g`n3_)+|Q%+t2U$NKl!sS^G<#P=_&l5 zDe_DJQf#J@H;pqmc{-JHF_ozlwPsJRb~U3F!@8cToI81<66ceolJ7O!$CX?wW7Jip zXy_}d88nv8(1Q1t3Er%~p}&ld((5;H?x9qxtLk?Z?w04V2h3_qc8HTFR9Xf?TEm~yq<*0q`#x+9ytR!eIw%Z97rF}bXo9rz|sg{LCHdxH^quBYjBE>1U++OYRx)@QrN^iOF7gsbYt0&L*l@hY4mhm4&~}{=#i?~n!#bBnhl&- z9XW)vrKhVigV4w!1OhR1QSTxmW*Djj$W-& zrz@)9RA;8n9&{fz)hgH5mzJ4@p&VM!4J%T|bggyvnDs9%o7JW~kGOU!8Leg-9i!2e z%UY*b)#YNhSJ#XR$ElLwskBY4qgKkXO35&EG{EswiJS-?$1gH{{CH(aYgLj)r~3f@ ze-WL9=E)P(F>8BUFxhz?9d9kP@wEG#DIRu`Gc zM~eB(sp#UV1WmYVKu72Zs41rh;lX?~m0m0)C_wur9>u0-QYl9ZqWR~}pW`?Q5)$Z`;AT_7?3D#!H@E&v~cz8$&+eFyYs zpx+PuHE0?7`_LbNei8a8^lQ*}LjMc;gV5KZ?}DDkr0#|;L*E1aZRig{{~9_3eGNJc z{U$U5x%xIVd|0*JBN_b+%dB1Cc%dEj%dDA8BC$+rhEnUEqhKi#o>qwXn00;JQFbl? zyVQC7zB~QCk(WIDS%LK9<%eV6u_%$lUAr#z|NOh?0RIcN?6R;gJ%8}p{ujL8SYKa% z(f63-9i4wt@{DGl{*(0h^WK+7ts7gG4jUnH)h~Z07;@Ka=trCRCW+=vl|7s>Tut55P!|B7Qc7U-+iSo4-oq|MnN0-DGtP*j^QR{AwQi4 z;;4<$Cv4=WH6Wh(7=7MGxawk1Yh1}jezD%!KM&3<%To{UIpMR1KI$L<(bgw&?!_nC zzRy9-d5Euv78-tsAPD61@Jqxk!*39T0yg{#;g^S7xJMQ*$w9S+IQ9DkASQ zKit9mdW!Z4V-J+srKH@|SMV0A{ z)sN3t!0s6^w{ZW zA)CscD!MGhkp1sC7x?=<7=;<@v!2T47fVG8+cyqjUdolCX(g6h%%XNLe~O8c;_|78 zc5!PyiIOPbVnZ?R+3ja8pUB1%nMAfET-wDVmd+IuLncb06jNe+{tq$tHwVPNelM$pqx?G%csW_4Met9DfS50%|{G5`Po literal 0 HcmV?d00001 diff --git a/x64/Debug/Pump_INPUTS.obj b/x64/Debug/Pump_INPUTS.obj new file mode 100644 index 0000000000000000000000000000000000000000..e90847a446e8c8bec85f5a38871c4a227780fe51 GIT binary patch literal 4354 zcmb_fU5p!76+T`&$>QDAyO1odEm(7^WE>9d+)jD-nnzH^wco@{pnYm?~M{YK(<6BU2d8eWv57Y1&GRcd=eg` zs41_R9&&hysDbD8uuUF?5-7eBmE=ZmbwcdB{xL*!9?u&iHggCnLu2z%U8{7k*xbVo~c9Syw)zrQ+u z7?RzuJ&tm}9|qT)vGzG0$44Z&Rqv^$sx)SgDXq39DIHUfqIgX3*|LkLv-xN)JHL(J zt&Y-aY8^vUw^c#oY|-VmB<*DCYP#9p!O|Y|UlJ>+Qh8yAR`ljJ(zw`GYm#Dg2bwPA z7V^oZw0KNd&TRZ`C397s5HgoT6PcSgs>s#NQ0QeyX5-CJX5*dEXWq_S2~FG#O)zVLL2V{dWTz)w{K)zcKUW?oZc#KM#e0^&B){1jXvKox*Zui7)Ohd z*iSFr^TZJp_i@qZHSQ^n{`d@5eJ1##-Ti&ry6;=9FwWf}46l=?qb=GW)`yxWvh6A*HpuiYn_uO064)(iB>n zF4VhSRcTsX8iL;Ibd=7jp!q7E5Gt~6ASPilKADJ~iYA2lo}x-zoJ_TLad{y+NvhRtj%S%)l*d=R*;0)rMljk#l|7)E$mK)5W_ywQ{~yM zln5~-0=e^1i_(_E#b)AE9J^pch*?`)qu#tA#G2>i=7rgY*6T=U)h-#PWkOKKti%zR z=XANwcB!$-EF6W{W2$Cn>V&FvE}XDuZ&k0ig+=7ms4gi@T{E`97N zJe01k7;?3es+KiPMFng%)x>mk3ctk6)Ks;hbgCK6FwbD#t?WG3J~>T>-rO^- z)$}KOO1CX{u#|YM*#G?%)0&AB@<2P}hSwpl%Ne}u33|j@m&~#3#|oQa0A0I>fhEP| zrJ~a^-AnHuTXFb7bsvq6Pr7t5TYe;&&F2cDSW1iOGAfUbCwDSGo-P&Wh_CWuu8=HO zlDSHn4*9Arr1N67e3p*-SdOuXUc}{6dTJNjEjg0O{Y zJ@xAC81wC78{=giS2n)xQTnqS7 zK>1V9hoHX-jo{Z`fW9C47tjLqpP`RIhY>tZLF;ko3FrcJ6k36fK|ckZfc_3Nrgi<- z&{NR=fPM%X$`ZlReZ`*{7S0djX)ai@lAKVqTGL!3-$x%d_izBb-L}2Fn=f}02nQbw z2lstHP~?)mu33kX$1gH)gyXk!oBV%F8;z24#6!EDm*z*WM4owV=((@_KK!-Uho1ks zqh1{*{zl~K@Zrrr{4nsP?9q=un^;d4e)5HPPvJDS=Q7&q-M+nf>tkp$f+s{J7fC>O zS)Ar_pLWqTAU;lp=s6dC+qM3{MX$K%Eue#VLiBH!JBVc3{XPg}w>Ryghg@sPMO_y? z4aA4f5PjL@zU!iwfb8~u=c3nK>n)di7ii3Crb1YVoZHdyq#QpE6UtGXw(`^mt(R z@!W~HhhTtjMckrac%FG@v3xAk10DyCo9N*I=Ij7t4lq|-#u}IB?#0LMV8FQ~xn79b zbMM;k`V7YW4No0A!e0(Bw+0yAqx)jlIu3^4@~yF-0+aJGi(t<9m}M~Me2fHU&BqvE zKIdbe1Y-+lqt;T*o*_$p4)gB0OCA6n3|z;*9cSO`8rtyehE$tW)ObtP>Sh~$xen->fooglB4|p~?pG%AVR;gAhr)nua5Q=;PtkiXbQet@- zXNs~|PL{KUJihv#N?Ruw>xkk8v#VEXDVfhM;!0?B>^aD!77C~HnL;k@tKL7*)M{e6 ml*^Wj$<(8@IQfbRe{s@Zobnf^{l$->m~Gcr<@vfH(|-Zd?r*{X literal 0 HcmV?d00001 diff --git a/x64/Debug/Pump_Solver.obj b/x64/Debug/Pump_Solver.obj new file mode 100644 index 0000000000000000000000000000000000000000..d1d0d70e10c6cf7ba42379e47da3acc36f3809b4 GIT binary patch literal 16356 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/Pump_Total_Counts.obj b/x64/Debug/Pump_Total_Counts.obj new file mode 100644 index 0000000000000000000000000000000000000000..cb6de82c8bc2c263db6ff832768e27144141c5fd GIT binary patch literal 3280 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

literal 0
HcmV?d00001

diff --git a/x64/Debug/Pump_VARIABLES.obj b/x64/Debug/Pump_VARIABLES.obj
new file mode 100644
index 0000000000000000000000000000000000000000..1322c518c92e8a6f4a2de5426baaad5391e96447
GIT binary patch
literal 3401
zcmb_eO>7%Q6nLo&H}VxVgn2hUS*&Rq=90-`e07rb
zwqdYXL1nQ^veiuLI3KHy%WJb(!&KXbmh44^#V`;UJ|8uw_5{mH;z%5~TaCr|9;wO7
zMHW-eYs$rB&1^SS^y)s@4sXIi*-4c~;GDNKncCIb60s;`vD1d>M(UuUH!mJ^7jVgv
z8*C2aYD@FFVwtvCci5tCw`GHsowll*62(cHrKz+m-PWYVj8rjA13Q!vCZ?j3_)8p}
zoRn&MQ_7mQ^Cm7mkIw1F;VG~!WoTHX*|*zztD!Y)+uYH@Qel!jk3K$R`fLCDW
z*yX(d#WVB8UY{!Nx()-c!V_bwC~>VryF0QYgkva5buT+@ZapWgZK0d_zsa$TjruYb&+`=RHS-_Y-JXWQ-;ga-F
zNq)GOd>ZcIn&HvU?Ji#F?C!Tt8|x<#$GvAt8H78}5#6jR&I$-(=ru94{kl+eg{M9J
zAyuo(ZNtG&D><&$6|-rZ#yIoQ*hVdu)=O
zOW}ju{*xaiR?~&Au0EK+Wq6FN(mfvG-rYOL&?hCsFr2_ErOq&Xhx2?A(J1`jArWpP
zqS1}Q-yRYniY34v&P{kogtLe!&5eTWArY=3dYW_V9unbmM9*;UhKEG>3DL8h`^7^d
z+($&G&nP_bkO(hgAog*Nc}Rrgh@RtI#zP|15IxVix`#w~2hj_hTl0_zHxS{Z@Etcj
zBm(Vhii^NKxadHaL%@54_?l4P5bq&&5pe>jo=(7OrB|KNz6l9bhmgu|H~?+}Fl_Cw
z)%aV44HQs?)-zAT>l+%i>$%rXsK1uOFrtR4IYNG;=)1<>-dEYtxI)6#^8r2gRdrMb
zxtgG7iXE*MnLF#_h-kcIE@L9{GwT87ivY73V15lSbk6xb@4`j!GcN_0$pDiLFlUi*
z&0Viv?MfwUNTBM~Z~b*E?W>TmidX+m(9!Fb69B5EN~W5jBBo4L%c5-ATQuEt?C(nS
z!xQj-={Zj+_n`txvOxi*)d4If(g7@{&H-$35R2(CC@rN2keC94N=$myYOWzKY16W;
F!M{Mdxqtuw

literal 0
HcmV?d00001

diff --git a/x64/Debug/Pump_and_Trip_In.obj b/x64/Debug/Pump_and_Trip_In.obj
new file mode 100644
index 0000000000000000000000000000000000000000..33ef4b3d57e8afbce250bf52ec75705562a0b66a
GIT binary patch
literal 470075
zcmdSCe{gKsT_4yp?>*8Udr;5BLj>4yW5!+;W5ylUX0n6V>!
z?4a0Vq5@--JYS=ByT__6CaW!=R@pdP+AVKNNVMxlxn9N1u5AJ0E}QC*J8&wc1zTQ>%Rv|DX7~uTgvSsduhC6&a6z<67<0_tt8k
zUcN5YPrs&CYt~wek3R9vAN%0nefay$^?IvT`(Jji)&8f~ewCPh5V4C|is|ZxM#0c+q$n-``_XB
zFgWHPBe!eqw({~eG2$O8KdjuDjl6vG6YqT2kACpIPrdiuKlayO`R;eU@5i5b_uqT!
z{f{E~%I1k5GgX_hurg7)7huy*Muk5`Fr*@y+74eHBik%y?2)mC0g4%@2S`W1W!M~z^V~e7DqoCNi
zu|O;Spe{L$>Pk?TgSr^h)u65gbpTbbJ%p;)-ZqE+jeV%N_5sDtjUzj-bE8gQ{J}aK
z)J9Mxm~&_b>zt}P<#Lm!BS8NK#b-W3{o3$e>d)-Opy0hYP
zjQN6HtDW)
z%cq*P+TcIoq-&yf%M}=QgcQ=)lXN+pdHUV3S!Qkxk!_?Nf=8{m^?bYN-|y7ht)lm$
z;@W-1ozE9A$pnTc-3EiF+-w0OMw>s
z*UvtPboZ%;=X$S~OFaG+rdl}SuJ}1X`Bs|dyZxgkvUIywQhsN5_?_L~kz7^+s7CzZ
zpBUWd5Vb+MLj>gnqGldZ|Jxn79nkR|#kIdt-1*I-`yoO+R)~}l#L1bR2eShf(KRWo
zN_yXur+3aW^I3_N=eYI_j$_Iw18FD;qJJt+bZbm(X}0SMmNEi+LALL`G~4q&M-nT~
zc0)5j8D(IQgmQ7V+hbx&vpuU|DI>6<`8_$jUTAfV`VMpjPk!-w@yPSN+O6YzX3F0M
z&8MnU_C)kh<^Ra@P7;$n4;TF4`_OIIaV|U45yW4n+Q0GMuVTkj?n>%r{WItz?-b9~
z?tJ7HyQZT5@`8l*pXDj+f0{+N-$c&Qw-&vU+MBw=H)$8-#v+^-=d3F&*U{5^h8^!4
zo}YR8zx%U0cm8;$A;%!^=iuic}BOKWooDNqpy#Fp~hmgm~Fc6
zlqa*j*7`R(4B0K^ay#XMxoKn_;9P98xnb^vO$Iw>>AURtA#b(GagG17
z)~xX27@6%lC@H8)+FG!#nCj*dK)6Id1fq}$fKzwM$aR(nyX6LjKXH?(opK9;e<21*
zlW;rbzz(8L26bp^|HhFcZ5tLuo})lzrPwL=%uUf5X%gFPN?L4lq=}{PvZu{dxkKnW
z8yG>Op7CN%Z3Ju0RG-}=`t{^Y<%vNMAab3hPq%FHfIo50xwR~!k3pU^M%xaessyz#
zwSS|52?gBeVL@c&sl(JxxoB=0*?5xJW>cPGo8w6={Zg{mf2bwbanmY{TuU+ry(qX
zr+uc-jhLIFGoB>2*_5Z)=6DiIzm)8q;b~S^!?;Qvs`6xOWLO*K;Imt!U$5ku%9E%k
zTnks9TJ-Uq)jU(^gdmhBjX|C?#)2J0?FeeeRCG^{rves4?zrnLF@>JP+!UShB(cq=
zJjFK0lUVwtWUv3wf(*yLK5bfPR4rbN<%}*QST{`dJgw2MSMp5dNz|P(a@G1YppQRs
z$Q1e=2<1s*kSC3?X9rO`g1T>N|Hg{rX%`km)^>Nq6nYMGQ*_3Y#5SAq6x$q6V(FKX
zy)*S`j@uCU!&PRv;B{&%SevH$>^A7vD|x2!Bq~O=;HvehO&?#M3Z~HSn46D5o;1dy
z9YpO2>XNDb8yk+N4lIbQ^=XAE^c?1cPGo8w6={Zg`bhNq#0#)bqhM*QePf^}f3&+ZoedL_?Po^i2fr&i-a7xY8{*7bD(~*m;?XJN&KY9*x)5yk?#5SAq6x$q6V(FKX
zy_55&FnM>IPsox08-G9LMI3KVo`ogMhZoU0GW#fRv*jH(S6T>zI2BtcbKl^W_mt5Z
zF21H;x?ywU!Qxt@xbuag{Nm62{rrOd9p_?5FDzRMiZTIeyzQuq)Az)=(ESe7ydtGc
zAiX$!?>!eon!dJzqD+7SeNPVSMeiZ0kB{tPQ?HKNdM_8CH2v{R=XP8Ns{J3h7mcT|
z#>)gE(^2mFak&TScje<22Y0*$e12hslp
zb6?V9apN|
z@+0^+-f?C6DtBC;vT8QQj%%S+i!!QOVavzY_I6^Ac$^*A59JZ1YyW~mq>Lb1B^tl)
zoxkVA?#)GaTt8x&8F$CEqZy!#GB5y~>doJa?*V>%Ol)bk7ZogJ1onb#bKQBl{q3Lg
zIg(iU9oHqz0A-W`SzK2_xj5UuFebJ%+sg`;G6EZ#-#8nfSG(gnKo6@suAgF`iy0h6
zziP+zlO(MFEKji=*A?X4?YL5#Y{!)y?YTRyKl`s_U-dUq`>r4T-`tMt0RZt21I8Y)
zIrS)5_f7R9*Dn2fCC}6$Pt=_=;&WX}(IA8*=SK-_5krZ5Y(xy3tf
zziZ}gH&&4yn{RN#`vYIyD|sfy!jI@K?XqFRDv4-u1`w|V>yoLS=nnmQCC^l%McpYQ
zSDjm|(Z`>-&J;FFAov$zkZ6suWe2fn3F@|~pw*xIr!}E(+?Z!6mBaMBSEpj{!VL@c=pZ1wT&tYyF*?5xJW>cPGo8w6=
z*!7plr|Z)!pQ&)<)OjDvsm)+*nCi1zqaXIrDI8CtVk8W%TAy0<@%3q*DfBz$=3|g2
zjj><{Q9FX#F%`Q-j;8_^MArJW#1wiCbJNJilf*Wg@)X+~Ph!EYzeGN>>u;g4cBO;k
ziBI0~57*u>)$_DQKkT7XIG#j3;i~m%Kp%hNkSX*#5E9(SAWs@&&kmw?1a;q3tfjGA
z0QX&35LxTf5mOkH%uOR3PZHZ~%2RA}Jc$Ln{u23geVW5&o`A;Q9ryL1<Dy3HlnGGPyRH}7rJc9NgZo-+
zPHaaQB!jhOs_zM!^ut{u3fB{eihee@YLB@aG%w5`{W`HuvzzeZUdpst#
zG}|KuOBsO;&F?S%F6|aNN8P2B?ODv=*j@Ikc4_H|U0R-EyR^H=x!a|sHrXyMJ6hYN
zMPI*%u>6BM;uV~_AFR8k`tfH-zn+|_0~doJK;)`Z*dreBQ`lqYR+BC!R8-{E|A0#g8yyqR(HzY-4#7gv7+DeMNcg%dc;Fi
zj5K5anB+zG@VY0?8uQ_Y266F6Bf?ZdyfMJMVSEg
zLQkuk=R)_>>LW!;nLv7R`sU8Xkf!fgK~W|^O>tVyS*p}(++ScLUgJ9oBlV9^18jb`R*+lQWek
z2Ekd8tMW9<1OCLObDOi^J_dQx81r@z&#wfvZ7McOdG&7Df+g^@z|>CJF*l8DJV|V`
zDNnJ@@g$ahDcL*2)0&0G{RLjk@w6VStET$wF4M19@=WDPRMf)YsyuDd$Dg>x6dvC*
zHy?vMX^f#AMC}Ob$W&~UI-Ulw1fKSo!mUkn)5yk?#5SAq6x$q6V(FKXy)!p*8Z%Oz
zc$FGd!$kb9urir7|4RF)~6wT{D~u`(C?U=k3pU^
z#=ady?Fj0Dsn|wxJng}P$XcI{nL^L;fEKz&Hl8H5*_5Z)=6DiIzm)8qsZT8njr$8w
zm8bb&oio*Ecb0y=l4mMUqGG=;xGGNtef)_FOrhT~Hy?vMX^bU1h}sd^#crjO>hQYdRs?Y8w{dy(ORGvh|
zKo(rJ-R;uHx4S*2(C?U=k3pU^#*rOF?Z7?&|8UB&SuuZdJRLBWZ+CTW8Q{*OouQG9
zCy8w~Z+-jR5|jNVF~1|GllNN+%&S0C$Y_@=;&WX~^+H=3yh@c)fjOZC$DmvIC`3C_eoR{pP?-GpBYZv!Ki6$F3mmc|3gO4Y7N
zi|d#EvpmI?#c=dXpSUD48b{@ityU)$AzkV|9A#4_sQYrFQj7}9IIhJvC@fO?^q
z#>KhNJ$}aGYyt*X9RiQ(<4=?=NX+Cx4F5t5_D&ju`!RA5BWh5&)ge|iY1cc+-jSawNHa$F
zXl{zmdMAl(Htn5ao9ms#(k~@@XO?_R78*l1ROM+oSQkz8*_8^=D|x2!Br0yX1y|*1
zl|KH&HKs6=H#Z-HJZX$gJBSfAs9UCDDZ|kRGkRDMS*KJ3rZD+8H;rsONo=zzPqEGM
zB$j?D**nA2k%h((&WoYcaKYnXJuua0caMH}Jq(4bPokn023O^&{!;k(6B|rnCJ!N%
z!^a>`8e`55qILweWh$03j;AIpfu}Z8nEacYMmC-#w%L@Y*yeZ=OTU!totaXtSZIva
zyqM!@HCUHT_1RsdA2xU>bW4gVwxoiq&I;Cfz|RUcoZF_k`55F$!l4q`LDY_*4ot-)
z%JH-X3nF*i(s;xadJc2b$i|bzHk3+`i(Cyg<02T?nM+BOwS8OKu#7DU!|x4;y7
z4s+AU#*@T0oAMOf98Y4wmK3vhrarA%Xe=FgF~`$-u&$cwv%5?`Z17OH`Xnm0q=Ku~
zr%n3!`n1Iqs*Jh$801M~4DBFlM^HzmVkzTz8o+|cTA%iqLeF7t8rgV~*k)6nVw>Yh
zEZCBg$fxU5<7?Pe$W>}km8aQYt()q3I%Xhj@X+1yBq|27;Hvd$jz0dx7E|bV%+1Fj
zPa31JgQy)rT`(0(8OKu_7DU$iw8#{C4s+AU#*@T0oAMOf98Y4wmXzbE#Ye8X{>=s(
z78;(#giJLcwNkSC3?YX?y~g1Toa
zRxOUF5iEhH1E#R)U~U@Oc#_y=Q=Vd*<4G*ol9I@$pWSQz6{$|VN&~9$G#9M1ruyvG
z>4yy-3dfVE7|4RFw!3-y_;%N33jL0``55F$V|45wYDZ8PO~w4l@w5O7B5S)_W(qxr
zxoKqMNn)E#d5Ue0C$V5lN+L@Ow)zwnar*2Y_7Ut-SX1%@SHHG{b<3u
zmNel}3%|;0U*bup#XO?)s;i|CDIXi
zUNb-$WgrbD@krSiZvb32qBGdiY_}CGWd!zuY~OonwpV_ctK*s&k%yOZK@xR
zTJ*zP3Mkw-CMuru4X(53L6FHs`uG!9QY~z^3Hk*!PvCWNRV!?YA7|V}ip9EjMlK*zgPvPHq2xFQ<*lYRrps;^C
zKmh(I1@Ky~tcMI)S=Q^Wta*x+^`b9pYEfCc`i`H$Xf!OMHstiaSi1cseoli
z|M7=_%fDWCleoqlT$h2Bd%%>Ht$Qki>sB67x&vBKh?JEO`IeJw?h&#Gt-OM?j#rRk
z{)ig^50v|%Ch>OH%J;sZXhj~Qll3Q1Z
zl$8*(LkD)^LaB{hsfnfA-#}1TYSgUMk{vO-3wFf6_2+l)@U`Hm5mIGRy6bAB31e;b
zwN!9DEZd=KKiv%0hN-^0tvy`7a(K#=mht
z%{2SzPrppC)bKaK^P!jT4R`Z3*te-ot+14p6?Q6ZYA=r{-KMq_B4s7Sd~YcA9=#&o
z2GzN3?I5hO8~3w}-0O+=zV2!YZ9h+uFSKoCgtC&6sTA5l9#Oi`1`3g~5@NO^a_jhsnf|xpoYNyt+;*;_aGQB5ec>J{bCi|L
zO{H+>@`%!fd#n&CDIeC$(gzuVGx`Zx$0_Uzytoop>rES@Gr#RYD8n~
z*+D#X5!8KCaaY@|Ms{IAWZgA7VhXp_%}vqSYD8k2O;;na&8`H>N^NXsQ+p8brV@PdZvz{fkb2p9~
zT9GK@ic|&Q;%ojQk0@Q&XB8r4CB$sE!>R7OFFtju;$rN=SjcDHcRWqaDP?6&quOxs
z!sz4?r3+(DAyP&VucDgE13EG(%~$i5!lsO1_o|Ba;><2xhS_~TvLdYl@Kr3bzMc<8s>@cMYFE?rmW2ORElPlN0cs_4TVTq2{GGHF11B+
zsaCR^&$us&P0c4|Wj?1;6nl9@>7v+Dh?JEO^R2{h%DeTxu#4w4u%>oBU+)>N`gsrd
zp`$x@zVxbiTRcP@ek+E@*bK~
zTfy2i)o-;l=!bWKQn)+DqT<)Z!BzKY+Vt@!7EIx>A#?LFxJRQg7VRMJ{|0r*R6J4d
z_Gmh=AhPb!tT2T~`pr!v+a8U?HklJYcyq4qtj3lQ@1f5
zsXQ1HTe|rT6f9)~*6P@VGh;WMt|EGj{jej;%ovXb4;40L1UuY~m`cZXoJW*qcBBv~
zBZ#M}L8f=pZ#X^vMSN8m3tic>49_~Z`F-{$KaXdfehYmRyTN-WFSsc+lNzwey~lBz
z$*%H4ndT>7j$<^F`k2_#g}J9-DI>6xvwiu;S{jy_F`CJ~!lsO1Pq~@Q<`JctJy3|0
z5yUgiNBTj7+)E=JJTr
zg?6kEDIcYO}
z?U2uGkO%xM^KQ-n+Ii-DSvHg?%1Wa0BgYs|!4`Q$>9U+vh?Eh;t7s()`Fwb0n+lsU
zf*oqlRG97L5v7@(Q;3w65VIAWv!%xU8yGeIvuGKMdA5A{wUivnN^+)BeoJ{o>GGRb
zh?Eh;t7sX^`Fwb0+X|a9f<5Jyv64rWX0}j>l$8+2Xc-|tdFQ%3F8s5f!`+mbkIA>t
zF7_nFrB;rsdB%JhE+|2il>|+tb*$wPrOU9R5Gf;wSJ67w^ZD@1E-Gxw2zIDVQ(<-^
zk0{OTl0u}cgqYj+#l`?yZ|K^{?>*)@eo89}@XW{3HFcxKlXHf02R%FK@Ph|WR+B9Y%qe%vG^>SU>#s{}1;)u3-G$&GYSRz^2kmSxN6ydab=YqI3<|
zQizn55Hq8Udp@<%1qKW@S5O}N`P}>R*w)NaR%Ui8<#CWllrE2fLZpl!UInv9`Fwb0
zhYFiAf*qRlRG2-^BT6$nQizlh#H(Po#`i3Z``agly?YY&l$ovP5v7^kQ;3uivjJkJ
zKc8e2;a13f+$GJ+kd*HoCD%OgrNd#n&CBZybQY%8A+
z&ur~gdItkCf<0ws=ktit%+?hmWhKNb@42p`klT4meIYlLLCQ)7r_y|iJfd_V&niU9
zN{E?4#)xx+;|2$kt0<0zeCB;|G&Qf3m3f^?adh&C(#0{S5GgAmW>y?KHU1>-DhgsT
zpKV_dEzKomWiF>u5KDPP>4KP7h?JEO^X&pJ;P|7@yIu94|H_>^Gaq{f|6;1OZO`KE
zl$(5_js><;4uW;dRGoL>C8+en$FnKigN35vC!@htA1oZv$Dg>%6dr&yHy?u!7HW(G
zJBXih2KC5Pyn@y}Shx=hBI|>NwXc`RbqM|$I(x8CV(ZoX=e`->ECPJ)TOwoqg5&yp
zAwbVtXuOh{7voX9RVP?mruytQ>4#4XQ#hVP#U~wutMar!AAe$pDZGlu+WZm&1+C+036{Xq8dLb0ueoVt<4IzhO&`FFZSDa~vGhyHp0sD;6`;JZrj!c+SASJ3V=h1G(&`55F$V;tK-ylM$=4B{V7
zshNsb&^n%uT;z_sPJ=HO!lSn4rjd;&iETFJDYiMD#L_P%duMnmEHtVXFXnJ91Z&$=
z&r^$jc<~*Dt52e$76wNCoVCC2X)QO#~@D{W7Q6#b_8|JRJ?Nb0R+Jt+F?Ot
zZFd_?q319+jchzgY_lm(vCZ)$7QCuYBA;$|yA~R+WTu1TX)jnuruys-=!a*tDI8Ct
z;$yJERqN9MeSCd7Vha6^x%n96Nn_Ms&MG8+vq5c`idPyso@%flveu_2Q|LL&O(Ppm
z65DLbQ*3iQiKSmk_RiF&j)lfsAbBwdaWPmIO!Yjq>DMcHrt%~zp8O83TA!Bb<4;^+
z3jL0``55F$W31aj)Q+HTm2|kdq46qsUX1wBg#_!O
zsXn_4^y`&8Q+W~<16goYo>uAOPh4XP{f@c$801M~Y}!H8j-YOtiXR*}o;F|!JPnva
z&tYyF*?5xJW>cPGo8w6=_{4}rKF!mSg~qGk>EL)e4%P!xeRlWghYxm8xcVe22D0F)
z{ZsuF@bUdqgDH$k5c~@<$dksHvxBG|L2a3e`IFuWKkN4EfVNJuDJv)0nx|XOx5KmY_{8&zifi{3cRpXd
z;r55ec=T^2k0`wkC=?=PCB!k-0VnV0J#d3HDXg0t_irNY)(L;@8lS#-1plI<&~4J6
zZMu^#_`8kOJW;;r7QhGJI!jr}%T$VPEsrQ&bRC6ASqU+-mUcVu-NscE#d<#Dz9<$o
zpOlsPoJvt_$l*Q%0Ge@>cIw9#Oh{
zRum#-1o0|r{&qeep4nA}O&P(SGP8p`qBOH>3X!rB;zZ-egm?A^+zfO-n(W?S13P@>
zAIKKeip@Ikl^D)La0qje)nHvV)lZ=o>4$H5QMf6TsFTitra(g+JXgtl@7b)P@N
zUUs?PlrdW61HvAzRfCy-P>*`N{E>v!+a^asqkqutC^2|3jbb3
z(d_4m@I|w&`KGMQ_f(4JAde_rGy{c589@ZI9W;dAGp@(T{(8H(^?dC)bh&6X{UJi3
zXGFhE?d0bTq#wbKxwJa@_ZfDNe6_{z|Cub@S6Hsy=Zo&)0m7m8|HTpG^`6}o@hf{2
z{eQL(@ppdp2a13AheMvwfA7PsqI><}VrTd-klwj|{nznV+&Z{k+&aGgGk;X{u0OnU
z{b3q+9(&jw>^{3H*ZM`d4zc&2XPJ1vwtHg^2jSj=kOMn6
zilBCax)9WMP#1%`6x0o+Lp6x98o*095-
zkn5(pqWH{fc*Seae;GsVmuG%xh_!$#qN>C0(Aiy#ciev0%-e3PA`*_tOC@D{?;o|H
zpX_bcc{TozTlo8Xh5K+2{6iDl
zq;OMsQE^iR7XHESz-d(XO+}l26bG%hxgodqvHR`LI5szpY>S9Z9yXgUB4S&F0B?V$
zvrYo6EnwwiHO{r$f=;-VAFOP<{6ls{;H$c@;Ho@Rc@h#NUr0*
z)w^w>F_6)LjNn#&ux^>^dD@^K9>t(=^+{CJ!r-brjp*Zf+GPq=#@u`i@}w~i>>$>-
zK|L}Ri&DqaJ}iN!8k#2}*R7RmWaCL5UE3Y79M{7@Z#Xb
zwFb6-9~ypht@a$N*e~NF$pHD-!%b$U=)Zop4Z(-iX>6$xhrsIR+J&D0&wsC5PEwwn
zT{_=k+iL%<=dp@>u(;MJ?tGyrzxXqMe{i3}&<1A?gM1q=!tk1NF{G!wZ3RVn0#wP`
z@fjj}u8x0-Yrhrlz93WXO+`K2!^E*iey6zhuWVw2;+wbPL-S>U(g%-A1Z&GwUl*J7
z!y_;ht}cp-mL6PprPnVP=+nQk@A|e5Q@Gb@ZaxO%?ugb1sH-n_W;)lqW!y
ztQ{9@vxOBOnlB5~)y0KiZJX-rVvBxQNKm-CC@NZdaMd=uNFU#3mzcu%X>L9S>!QY3
zwS#DZL0vNyOY+wu2sV#lVPw~4H<;QfH_c5WTV0gcX4ASD+gx1~3m%M;$fw)vu7$>~
zCLJ74d%-#~)$=rcPGo8w6=crZ#ZpPr9&EHpNyc`*lZF<2K&^*pud
zhvgrI<4IIZ$bzf#v`in*(+X4Q+s)0#AWs@&-45=Qn?c<$6{~5-(;6&+r!A(?JDZzE
zHl8H5*_5Z)=6Dhd9*mO6r+M19(71;|2glPvu2*_5Z)=6Dhd
z9*h#q552dIkUCa|)zyiG*aQzoTzq!7EI6_wMdy3n?2ht8r!15R(u?x{ha^p{AoXapxGIr`PA@dwYVbA1Mthnx}QN9
z58D)?+cx4oAACvtS=@LptX#5|iaUT%wcA+^)i!N8%!&{$F@X!&rs)!jT_&0^)EL5W?KNBUWBf<2_N0mxNmG-(aKF3Rqj)-
z>hz5+)i-=NysB#Dp<-0ENX((sPR|%W54_}N%W>=W{fwst|@HF2=>LE
zO-a(bl}D6jc3mM-Mi5U`gUmh234fpd!oS!!S$f;X)ws=ML;0ah^D~uZG8hwEx-d5t
zEM)}tDw@gAGBZXq*;3e)5$q{9lTjW~n%QlINEtyq(@g%ec(HM^b?oLT@-w!9GC~v1+_KHo0l)=sPMYsp8k1U
zJHJu=CvBalgnr>d`SVO*HSit9wZBo^`OTvHp@-+Y{awv4Wt8E`Oa1b5h5C1%$!xNm
z_7pZ{1Ur;devApfgGkO58hJ!%X7?2$Wdw0@X76HqnmwE03)MH@?;R)!lo1J`oF?ra
zF4vx3Go}2cOZ`YQOc`Z(@={;MMq!{Ss?MiBx0f8B+GjJHY){7un=*o32_RJjpS^dS
zF0II;O0!#AaQjA-5zNCk;?e=@SaoWGN&5MpRd~>Sdtr=El$?Fj)cF%285-|4PHxCN
zh&N(=0S{!{zlu@HZOHu4@XIHk>#&WOsAi@r#*bj#dH7*`$Y{bMibA_t!N>nG@LW7d
z0^cWo6HyP}c@Jj{6Rwb-{w6%Db@)vh;rIU2ojdud#S>G4
zlWwdH#YY+8o0#NJTz+b?ayGNcu5eaiQ%0~uwTr4{b&ZOCVws#;tmYA=nQbaW$_V1*
z%#QHnY{=MH{brQ=iKgmnXES`c>OZF>P(~zNJUi8eIrH>C{SV``r(c*-{?eu1(hO5Z
z89uxQd?DAT%jc)V=f{#Wh3&K0lg(pZQBX!GDgjh8I!^N#-Ppb>Hd}2Mo9ji~AU`3W&6#B*1>EH2Reqo4Z9HPI_Up{+!1}pEwM^Efkj74J9
ztG)1RyJ!F71>Wr9)^(KxzT$~Yb|9|YY)d;+r4Z`aMG=6UGY)I_}={I
zmz|5Y&tgxGog0dRGC~pBb5zT!d-!p>pCXSaP1L4Bq>La=K6YMyRQU3L6nsQO{I0LHvXYFcl-E`sQM$Zpe@pNAK}Ha-q9ttS^WmAT
zD{RUL_LN(~Ade``Y(pVZMi8%p*xv%@|Q04mS&hT%JAf+e)+ZD@!8BKSJCqd
zn=*nO%4sTNK<$l}*duK#M9NBtnMvx2-M(o2&h5|f7bOq51>z5XK^BS8$y0eO1XsA|
zCo3QSjSK8*O<^5c&zGd{s|zhS%F2S9O5JMY5v5!0fHiY{7KN+2MIBdxjThX`^9~gC%;%P
z9(kT$8k0{}uD%sr75)zAc5ItoK3Vz8_g&4NO_Ar^*Mc>rn6i@MDCgA^#c}rf7xIYG
zwP0N#QbrK3qJ4Gp`S8qcC~V3I_LSS#VjfYN*-eE=89}@XW|#8$@XT&0Y|04sl$l-5
zBT6&7tq>_IAzpdUHF+Ul{P*`OM&kBTw`rNcEgr6-XSDzz=O&P(SavRyoBT6&7s}Lz8h;eaOz1bjSA#OwWa{w-G-NtXy
z+-t!e;VTaAbaB=2whn%rh%$m`Y~M|0
z_w)Ji%+?h)WdwW5J<@;7BT6&N_n?qj%1Vf1G=z|!yfYs9ac|_@=XemU>2;x;#@`ZdpJhSr(n=*nO8vRt5eIk!2&1_pCQbrK3
zg4vaPK0LF9!lsO1Pnp?|=MkluT~LUW5yY!tb~B$3&um9wQ%10-%j%>FDN)$iOM8xj|bhp+j!VK#g>=V#mbLh;pPNy~sTDua;G
zsdR0FJfd_pSyqUY5yY!#fWv$~JhLkbn=*nuWoG~1JfbwSs|t}af_N3o9_RDnnO#%Z
zlo9MHGh4fvodu_vT~~;dl@O=crSTbgJfv{x?8JyrV
z8c_8Wo5#U=V5)z`<{tg*@T6W@#a#b+Dzdc&gQ1*>=m05+id!Z&DiE%u_+dOqMG^g
zuh{$$U$I&8-&@B^Gv&*8aMHI`T;j#F^_v8feXs9^R!qvMV#Y{)k3aFoc;j3Q>DIET
zpeQ3y19@%(JR)a!1=*d^hraHN2}L^pmRjvgFGitK;a`T5#O#c>Lx1rb91G`i==;DerHnG7EJk|qa_pRoAzhB!3W_oT
zs%jhF?XEZaEEmqQ;!ITgKXC8i>mImBxx9>}i8q|HbUi<9Zfd^a`Ja9~|1-i_&rI)G
z36i{PGEgokV=m5KJaI4lsr;{+UzbCZE~=rzqpX0J8JY7fe6g3^vTKX0!Mbd!A5j+RhwtA~xDiEEe0(9e>Pwr~
z>C?AwMr|;)Q*N4@kHHZ|V{F?&yn;EX15@!`l@@|@%Pm+CSzp>bVhV4&H#d!JBZ|Z}
zn~o^4&5bBx!54ca^67W#*RT)BKV0RA4o#<$i^K?KzY!-6|(eWfIKE4oKm8V&^
z%c$ShYBGg)_f^OgpDZia^jWvQriH;*!*G=`UZIymK
zIa6C3gW#;lRa@IO5A>~98aTHhgj~|cU~AJDyLJ%s?x60OiZ92w);59#k+oMkU<&<(
zxoKo;Z4%pT+S+29Yi(kgxHjK+whi1mzIU82k8Svx!!M6XBdmG_?4H&V%D9$9Nd4Fz
z&0%l-*}XqK#;3-Q8DIlqXP?tRA0{-0*3?ThF7I?w8_@o-s&#daPO3nz2(h
zplW5D3)WdvePyiEuUGO+t&E~#H5FWS(KSyWzvyZ+g)ZIPd<<4bjnT1#7_x)9XevI>
z<0|6S8cRI`uIjWVhRJkx%n96Nn`BWK{Uaj9+-;H^EjUNU_oSU
zw8u>03uQ0TLf6Q~lf*Wg@)X+~PhyFh!gvdoi#OU|JGZ^~1
z*=YC91(9yFM~aH_1getN>!$8P?t@`H;`OqT!e*@U87xP3S*$TX=JO665DKA8DpEP
zjAH4RlD#vHc3`3LiB4Y3@iYw9ZBso@oAm3IJX3iR6-_<3YNOqyk8iYlOko5yHy?vM
zX^bN~h$e{Vt@(#jj?IdXwm6;+7|S=>Iv>qO_iSfqWaCLr$Mdwv6gqcv^D)Si##pg~s2xFF
zH5EH=j;Cc<0#EBqp?fwrjchzgY_lm(vCZ)$mVPPOJHyk+LgVw1yqM!@H&}w2ci+wx~W)C{xt-_cf~cbYj?AJ
zJp+0UbJNJilf*Wg@)X+~Ph#nplD+;ze;5sxZkHT8yybJRkPHdJ@o!IEd}r(EL?12d
zs;b%Dv3ALnC%WYG2a55&D|>t{hV(d5`+j};3NitzdZ$XB8+FKcZZ2qTm`B-S`%0SK
ztECFGS?K+n3uiwqU;CRp@+?o`_HMK2_UizFeP`5LYS9g$##rJ#DcOeA^Hmv
zqTldmQ#<|D_VFvi#b*o+;_+M6$!Y#9;PJUE$^_?^nC8!(3nE<;nu>}tMuo8z{AvL&
zk!lt&zTz0HeEo_z`0i(se%KtM(CsX$*v<;B+D)(XfbXU^oZF_k`55eeBpilBJBZ#a
zr~^~6P2;+sEm#m)=b$5|FuOH3jcnbI#5S9DKe5eqKVrdl7Gvqw2Gl4-d~L3QI*doH8-4onrdIV==ifLZC~GfKM$r@VT1WwVJy?$|8=mq5`eC05K1#W$
z80UklQa(!`PkECmOvo&_k3q^c#=ITGGAgKTQ?XWel(%3BlrJ!aIh?s^WTRYSn@uT?
zZH{t9ux3F}9~ss$vL39frg}z}>DMcHrZOTbs%~&qMmFi=8QEeA^~~IS3^JlIhISBD
zDySn@kJenz?CYV?<(`O&N)8juEl+OUYhT3D>1!HA*KRD39gJrPK?Z
zqW1e@?Dpr-$X!oM&G(fUo$vP*j~_x*n&*Ob)>Kb(oqky5Qn+%&S$EV0d|G{-havskb$m&k5i
z-oO6{uT{rL)$;sNi}>5JOJYLE6J0gk4%SUmJ%8);!|Ip9@h2+Q>%mp|8`7t5{Ee7G
z^)ojggZycXeLIMbB&Y|bVu|GV+k++Wcgz$P3tz33K_eS~65DLbUu<*yiA8gHH%8y)
zxdWeHug{~vIQmk?<6MOF5~J_y&IOSkecOtP@&u|$y3i{+6o7uWtJDrtdOu8~uVDrw8g7403WR?_)koio)}(pmapRZQV3
zsi+t>f~&3L>EqWE3rt}QFgG8Al~iLa*+Defpe~z=^{K0*i?A@VuH%`)O3mCfvQ<)v
zZ8oi>vCUOdv0xo9k*$%tJ-GgY=Z{*%-@q=3^*v8yF<>qdtlOq~{x<1{)iQKZu|0$yn_N`Bd0vkoX%fsjkziJj&nhz8~LK5qCA1Bl$V4XMBSJFB9VXK0|RZ>y0xe{Epk$33h8~Gwr7@^J0
z$6zJZ7%O%VO*W{jref3JTM(pMF2lmeu92@Zg|XD!G_qAviETEmq_NFaQn6rjMIxVS
zMG030B
zs5PWv)2|WKx~W+8IR1`ZWL@>l;yBJ|nwv&8{v@{9l)u>K_!A2@T_m#cr!%1y&mXmj
zzXiMGPT3|1$6qH{3sXIR^YrVLJX84-6;s6Es{Ad{$Md($6b27-^D)Su##pn1s7*m#
zHx)}5$KNU}h^+i=GKFs5+%&TBC$Y_@{KYoMpIG{(WY1>eHj`ZS{85Ye+p|mVlp}(0
z{Ot$puBo2CA^mzK&s6?I#S}5PYWqE+k8i)nOkwbNK&zOKLH;yG!w#Z01$EX`EO;D$
zbyyhLwck0W&;yy9MmGK=w%L@w*yi{XOTU!tdH&wpM&xdP&GSdi^QWBLjd|ztxuby}
zlGXu_LlWhQ&VMRH(#p9Y(nHdQqM}TodZCB()pMbH{x%gUWdi9X=Iv|ef=KhXrKl(q
zs4DhPxf!GznvMILXes(CHY~fSzn#C!SN-o$$5YUq5gHW_+v7JC8%z(}cgn{T(k}d+
zc|17qqT4!R#v)lnE+4%&1oybAkBV=YmKV(1D_&OrUz9
zyQPB@(38FTks_r`Ag$tWyk7n2TnuUYjujMT0#rr)Zk!r4Wnh)jw|HcPoi=t`tpE3%
z^7HviSL2J14#($G;JcaH+uWp*GLd5sGpfep6+`X6VG~aM@+Msjbp=J4042q6{lpEj
z>pS59)_qewQM>f(l{{04
z5*6E&!BvT>JqRC9RGleoU_kIM#2`@`qiF}RYz*q0skmkFEjY7V&cYIinr8}I4d$lk
zj3|k1HYF;yIikeUFC}{sQ7sTRQa5&=tv!c`e*AWmRpmMQFCSa2VMjA)FO9Ykdc>b$AgO#c=H>6UY_1V##`(9@WkMm9zy
zw%L@C*yb1!OTU!tMb&T3Rj|^@2g)V6a@k?_`_D+qCR%th-w@z7H~k!)8^O9}s;6^>
ze%P3xaNVA$=+Aw;j72+$CK%KuQ?V!Rcmh87wRh45mIr%|vDO!Yi%
z(XUtXOyx;bOv!?)^0Y@E&(l6r=-kcC#~@D{YV76lUs%@?Sv^$bi(Hk4dd-qEuM=ZJu=KID9Qw=7kbBa
z>0Ic3WNj-_$^_D?k##)!me0kIrms*?lnGE3JFes02pZ>>r`-HGy-gTx0q$Dk!V@@b
zZmy@;3)YdTzNZ+_uUGO+?I}dXd^xykk9t5K-=iKeg^}0Xd<^y!8lyhTPE`D6gW50^
zYvI@7V7IKng2>vVHkrcMX>JGpo|IvZT|GdtDl(o@EETz`eY7Gx}Gd4Jjx1q`C1|c8PyU=+gm{#HIh>^Nzr1?
z2j&kSjDfxa;>&`_WqMIW{YPg$lL*
zv4@*Fdl}^srOR+dAyQUC%$Fi=D7c$jAzu~kdxS!hHvv)MU+j(czYDXq?>*>f-}?~S
zz7L>k`=*NaO@F={?h}`K+Yc{sp+>xGq@xi_kYpoXRfZ`ehS7*mUp!F-#%RQUm_w7U
z0BZ`5vI1Vd_)C^n+=!XB7VD^yoSI3>4>!=@b@-S^JHi(Owe{ATN`
z_;b#sm7@qne2g9y#*_fJD<7qxWp&5v3c?hC-x_
zAYKKtv-y1Z<=Ljfri@@unb~F@QJUE;g-97eyb5OL^7-)0ZYylc2=E^$nszRe|SUn{}u5c~@-B;L@5$v$un@V@Lm`9Xm_CO(0Mi5U`gG`?{
z$rn$!M!t9Qf}2t^Su(E1Z6-&`4`rI4d^wKMOqR#QmM+X=1xp!$ot*6{Yy?|o#%LzB
zA8=0}P)4w)+)P&Uh|@k}$hp4tt*j?b#c%><4QN#EtW)wcV-D;$5TSL0_8xAGuxegW@p
zynhv=l-n`;A^+2~iL3I{KZ14V;fJx_pRkCcI_G8uAOFX|bMYXFiu;M*MAXA~V%9Qw
z*1ie*2Z!IpO^N(1jI$O0a((NfHU`SLG5j8Gj^*3o%ccY;-B_0tA7zAZVv^nMBe!=^
zwcj(w?W5M&%qF|SWra-{!4B0fs+QF?YMiOXd>&Dn*%gII89|(!+0mcbR|5+$J669L
z<$j{6di!jKFIW9nl?2L&giubCW~aI^XP*A2*lNzVr?*Whf9X5Rhr$A!laB~
z9=;iuo}A*#SKfnsW<15aik&jTJ^{t!3fBR%#y`Q+gJw1b!_u-=__A16gAN6W4{MznWezJ7ZyPr?X+U_TD
zYJP1uJX=FAH+t`Dt)+}=?csQ9yWgG?oOG)?P<)gzzBm8*W#^*DXR#;8&Lc%Z8KDU6
zIjUvVJ^VP`Pwl%ev14_t5Gf;w6W7KmEQ0I#eE5#N_Jewp5i){3Wo8?BMCmG6SBR9A
z5HtO>?#bQ1A$wdebVoUb@|(@G<;$<3gEUj38b`%b3gO!!z4d
z*pw0MDYuMP9#NXvIfY1B32}^;5%QCFuDhQ`E#sl>nUB4PpXix%teryZn9noj%dn*c
zQC1Q(mDbVDBTARyyh5amAYKKtMLr*%*|x%_j9`b_G!hlxB8GAyP&VuY%c?d_Fw0%Lu66u8dkl88~53dUzk$<(xtwp8K#UfJb9^KeiLu|Y-W?I=yion8Nm+a
zG?g)6kVlkec0(ajRzl27QcvvmMdNpFe-009G#+vb#2>~_hp#gT!BAG
zk{2F~0_BuQTD56i{otg*Yk+dRpCG(QbrK3qLDT7`S8phDQwCJ_LLjhY#vdX*<*!B89}@X
zW}EqZcxG#VTW_U6MzE*M>|7pEn%TNSq^yK^<=xj+6mlz1sW0S)GDum;;8Z%M$MT5M
zg*>YeDIlC+`OrK`nyWmjOoje{G&e631dG5x027eFN(J2ld>|O
z5rB)&m{#+M(nV1yM9NBtndZYA`TmPFKl{+XzjJ5iV>9^IdNzGc#o?d-NwD3`cOb0g
z$??Utpj=Q^axs7rOuh?Eh;tEl94yf7*AgILe(
zy27T6V24IO6=q+SN0erELm^T|5U+ySRz4q|*-eE_8Nr@1vybHwrJ3DQh?Eh;t6;X1
z&xdDrTVYd1u&2!IVjfYN*?~f&j3C;O7@%gx)Je8+laKyqwsPI8(Z`0wz2C!o{_WMw
ze3$Zt;;YF}%YZT}gOJgwbZyIdMCocWQizlh#H(n4EBSnQW_J}fWdwW5%>G;+QJUF3
zg-97eyb5OJCBb-BVy^dk-YPlwZ9)4An=*nuWo8GLVfH{FQdUBoVwZNYJ5y)g;d%ID
z{|4O^KK*Jhs>I8@`RYoR20l|1tc#}VP4{lOK);@xsc+q65S$gc>Nk*9dBA@IY0bH<
zL+~%e;9EB}#-<&_`?!O;Why>|_d1-}EjM6cWcLlE0aN(Ugt;j?d+VmeHk-b6Gq$<6
zZi=PvvZvb_-SXqC7x*5mMaGNoc`d@nH(G-Az*JAu9{qZ9rqaY9I4g2hn(EAjr>Vgd
zK70kizYv2oX^c5Lh*ymUwPh+k(dKAs!V+j|Glf^Ro13CDnk2T_l&09`Xc9}mls3vG_3Em#6gBc|{cT65FLMw7%go6;2998F^Bmy$hC6Z`L;)Twg#)Ysv=
zvrIoj>l>c`;C=3OxcsPsO^W=E+eepQVZZ9#x@YDiZN5ikr>uQFD~PB^#O&01upV0$
zJlzNM>&cl)H-jKnL}hoAtxjJO0+}lK5~o
zK{)=_gLTzZ&)+irdL_?P{zOG353b7JCVf1ATTG!-GdCZD{ArA#9Yo~|>c~`l0M79@
zfF>lfti~|Ha;b`*_6-N=J*s#zm)7LL0Bb}$8V7<2}$E`
z;=YFOK9ZLx->er^Z|C{DWBhs+1t>cp?lrR?M4)p%?{K6u8p>!!lK_#pr?Ha%QU7Qh
zROu=0vBIQGz|2g&(9=qxKw`1@j@x)4*Ns&a57MmMZin_CJ;HC7;fu&tCGbUaRuUYC
zbu(DkP4)GAm3}=rQ|mW_;H=11>-RPf`1(C?ZbJzEg&3^g8e`WEqV)%L&s2Qw#MSQ+
zETMiMFoh|NxhXoU-xAwwTEAnPtKW*C`ErGa#t&5)nG4ogQ#~Vf`t?elsf>t<2~TiU
zM&{|`8EG?xk;UA63^JlII(884H>iuI;-&45kp)-+Bg;%-3@|s1Y>Y^3vneC7%`qaD
zeks|DT72`ZQkhC8A1K%5%B9qc{twiPeqSuzeysx#-P@ps+MBw=11WcWNzGv4>%Kgh
zwE^>)VBI#=bG%7Ee29#~y%=9q3_rnDIo_p@=Xj4P)FyNDG03sTII@H2<^QTL{$sOZ
zitac*U@YIO*5QiC4Ld_48^;pcY|3$La~zAMUrP3bJZYmvw_o?!a~EyEJX
zTW1RWkGW}NBTr(RP05RGjy$nwF2^5xF8(#wUF+NVjiDBXFk}dsgShp%cHwtU8Yr;t
zZ49W8Q6G-XJKteDe9Q>%_kFOq)+p|Lp&0LTq
z>DE23peRp(Dy4Qz-n!ceQ6vpHxE`q-hgB4U`G@5cu+GAG{%M0oeG@@n4z
zA5UJLDU25o{0lKip2ld}LDZw5&Y6m}iX(3pmO$P-Q|R2yP0<;765DJ_UTkyZiKSmk
z_D+!3@#Im9$XmASVN;t3m??Dq!MbFsC$B@lUdc0+JW(+n46fR2*XZM$?K)E!FU-xy
zAbA>N%MPL*1$En0ENdKjo3JplYqmqC(D9g?MmF*!w%L@t*yhL+OTU!tIr84yM%ZqD
z(UV8b$UEG*&@Wu3vBS}{(O|3{jwOKRz(g610aM@Mm>UOGdZ=1fn3NGr6tc9m@#pc=
zV7N6-Ui{F%qR=TL=u>BSejHS3hF29PWdsuq=hzw!?%A*@xn7|5N-{4k>&P5@FR)L)
zo}8(@0D~Y_h0194D{yy1n0KFbs)&=%asU@xFCT6Pc}Vo>Kz#lqY50&}n+vW`Cm
zQy4+bO(R<`AhFG+y+CYpy?|KyrDQMK+-PBQ16L9{?rv3Vk5lNrDz0f6Q$}Sx^{QBm
zgDPDW*A*sZ1oLVbUKl4Yp5YCJP8mU;I>ViDP^B5(RG5?rnE4Ik6MOM_cX>l7_LKW;
zEszhfx!5;WV}iyCWv9EZtWI?L16R~m7sn|xUz4`9h$s_9lz&QTj9U*&V%(obSBZnU}j&qnj^#T6gWr&-0
zGQ6eq6Q8hMwJ{b?FL2a#vxK!^T`|>97?$YQD|x0)7(~TlBe?2>VS_$>n=ouLg@vfO
z`52rqXpDg!#3CT5LsPNY>?RD`upqKd790T@GiS{y*HkD)y1Z_*06@|MYIvD(e`Jq>Z#@Qbsj%
z%8#V2Kx)>qOm}
z`yt@t`5Wi!Rt!b&Spl1T$J3s2P8o4taq+|r^QZDR%s-Vwldcl`3Xie^UcN#|>7iV#
zLP%Pk4=Jv>a>P0YMRxcqd>m==g1USg9vL}fwBZ9~gEC?xRNSbpB#P@N^2N2AN0ctG
zBZWv=2{HFmrW!ib@-tWTiG#g-*8Pm+SaV8QnbWBh#(o}Ax-e>Qcl$+@l@Rmo2Xm40
zI?*2
zM&(LTX^h>C9vJ!PMkPqH8?7tTlo8YDMo(Wn(Jsg6Mz518xpS02ldcF2g-2NdFJBF$
z{NiquC1l;GqegOi_>JgBT^%?*-p=C;sVY=XSCs-b8*dk&qpEZuw5m`=RiP8A%FHMJ
zXAX}S9aJUQMQTHnmskEJNU}D}D&3SP={|k&i`Ry4%b`ivhNi-!tbjL0ZD0|_wSj4?
z4UQTqzQZ+wMZr!)T2wmYez=|2d{S2Cb1Fr#oJW){inc>)irvP2l}=~pL1?4i|Au;
zjjl1;b`V?iK`l(h^EPgcJ`W2b>l(eo6mCwMn?|-Zy2Lh{uF+$gTceAm@3QCD=m)Y!
z=fBH3N>u^4cn7qaN0hGh3ks345@NOk;*9^@7nhIvHkO0ljGDJvo7D}Zgu+SZ?>5C2bm
zYV<0~XOw5dm(PY~p0YCYQz@U_Jfd{@Y$`;`N{AOMpQ|XEy*v@VXtp%pl$H6OO401+
z5v7Y}TOm?bLd;IcF0~@`U3A36*we9te8zoI3^bpVmHCVSTzt}Slt+{Am10-HQl`O9P%|bkrx%^wK)rQ*&xaTDMbotGSN?p#x6M7xBW0Aw7^!ca6aPSJ
z?pzFM;`bF4Wdam_fx_NV-`DiWZgK1R>#o^!?~TE~(7#k^ots5Z^MU4wGLfT;(>#AJ
zhBVDb3W_oTN@&LK&15g85SlSdvzzD-+-o{+34H!tGmqY$DSz(U_`b=f@h`TJ)@=(3
zuQ1@I61xXHjUKFPruzM`75d@j6%_8*rJ~~36TwvE_of7E@ODLle%ZaxP0!!*Xo
z4&n)vpzfNApHR8|upumr>>hRBX9|z$nwv(p{V<7bHr)@4ZEinIEd5fl=l8>Y2_5`N
z3SWDB=A&<&;YJvbal@sJRIzh&LHbr~3qD+{0T$u?8s3tCywzbT`ZpIo!yoY%&(-dH
zvUWcvqJ{_S-_-q`0}b7RpQ=rs0v*|&57s$TeQC|o
z4?n=7aHS>cP8qrC?qxxrzU^KvFokENn7?ec)oyX{B-EQLP-2rhOsZ+;um5}3U8J57)I#cMh%uOR3PZHZ~%2RA}Jc&hf
zIsSuZQ<|j}Ha=u#LVmQW{g6J602vJoFT^bE9b;lkk79KNOBsPJ`Xwt
zZ)h{3jG9qY=BE~k7hjouWK3-7Hb1LiDI>6`lB`UZYV&(m=6I}`wZK*2{b1cS)mPvl
z{qPfI3Ri(e#gD3ktG4+g`uH|~%oGOg|ALJ=j=>77F&cIdEjXyNrs6ScSApxWF!I+y
zbjvxWFzlM!|IgmHz{ge9`JWkD2o=Z_c|-&mUK$FP>65ewByCfs&^Dn>Az(G>i>A;=
zwhxG?I0B;yF(vDYMp+>$O2o%Tv>NdhihmjqHLyOiK9;Pzt|_={mWM{v?f?5b=XV}6
zxwmH~85sPm`9Qztch0%L`#smM0-g@DV7TWDu>;X5}u}N_k8d>?8}<2A$3LAf4Dpk4{AEu)$s(#C?d;sT(om
zS#`mFvM`9~Z0uR{KkAT2$sn{Ycl8Pl$DZ%P@IPU2juaCz=gox$id
zO!@FaCV|pP1~KojSy`tT{8*jJ$ifh$of{vd6Z=T$M6?bYtk6N+hg84`1}DT=oswi>
ze)VF&$}Hyp9vMR?>M?zdLx^6zM;u{bO${olz;&YGYe;(1_JU
z`S3Cdff7pw(G+b~7ORW$m`2r276u=k&G;a(*himEL=&;WejUWkh!U$8F;=WWvM_w;
zZ0uQ!C4K8S7R!xOV#yf1K104(rMC1p1D7I(qqG!3X;_N5{V7=BB3oDPcQF%R!|c)%
zg~P95#(6eCm@yl$Oeem$)_qtG;Zu}yCPf%R>g8UW>^UrTGxJL@Q^F9Y6PK^|upGkW
zt6)-uA*4dqCTUIbSZbp5W>HparM3F3wan}_Oj>}W%aUG}(_00y?JUnmp~__N#JKd%
zFJVzmEm3F9q;r1g)~ChHVH;*83rOe)7)T(5@!msF(f^>O-_I(%o|8$lw%}18r`sE{SU8@tJ1-$>a7&;D?9x;*OZt}Zr2mFGX
z&Rfg+5jy%=nY;}%m*3MJ^fL;t;(De?=uphR1AT1L9caj34x?-%(!r-jSR-
z(6FCXxVlYDlhC30Y_la=pq|o(?x06O+f)98Il;lxPbyAN8SyJ;>a&@JB6NhZG8Lq!
zjQSac*JTS+By=d|-&6L#q+jkyPH^w@n7xdyLI>l+mP<)v#Lr`y&%9qEJB=Jq@ep2$a=
zCVw4C`s>NGoI$P@!oX@N$aSRF&nUd*3^7GQhhj1MWWB!}M%iJeP3X|Jt*0Q$Hu@Qb
zD?7pz2?HtmyBXcFnAIR#Ht&JO=^0IawM_kuvN(i+;uNI*n*EHz>u-!H5(ZNAR)g7T
zSdcLf&kQiItOco#l%G*}b(Ang!a$0?TNwEOsx4NGk*(EVa8ngAE+=7N
zISW!1oqk5)RZ+$i2?Hs<%6mqazwo9y;#^k3z_J#kI=cOg!mFd4DG~-!d=>YM9)H12
zRV28agn{KONLBRu8HHCx1ydw+C}P2}|5bna?(-MiR7EA1lh7%rEn`8dqTkObyeg7R
zkvy3mc#Lf;21r7R>7E!6*_1h!H-ftd}{&;{0LqKv1iI=<^3;l
z%47Dwl#_*hEjpX=L66|sN2N~0?gJZ4>L9jLsz>k@h=FI`Csa=scBbfT>{&m8m%eoz
zKZ1AT)FXHqgRf&y@wlS-Asl{n0dnKHJc>;r{q1|4vQwWDZ&MHnrC*ngZPh`eUkl~K
zy9oqp3xf<|1C`Cn`t?vAqhBvs*zcmV86Tt{`xwxP*pOg@gF1-4l}f*U#8~}?$-<5m
zosB(f{iJUl$NIT(N){o*z@rh`U5LHY0<
zNdl#x3}R!I&C2>ED38&vf-LNV(bO{0A8?4tsZ0%F}B@tuwYa$DqSade_
zto4(=bsX#G#wq<|Oh;N4FT4FU8vQ8b=+~`JiKa*-l$1R-wo3<%eyx8q-F84^=mTvQOMD+{CwH`=FS4nwH`%99AaZP74K1e_I(Wn#AnryI12eJQ8=~s^!c;@l1g)EFfIvab|`bpn9
zj`efnlzuX%BQ1-UtzWazk3x=qz50{~(%nQtwZA?a+oOXg-1Gd@T^_A#Op(VA>DQ
zVg1}VrJs!HNXz17>(^rRqmZLtg+3)-&mt0Zb_`KAHlc$?zc}Ss&-a@vXJ7l{#qjOHjV{G#$zM$sk&-&C30^
zk@A@S+e8+|HJ#1)ApO`!N++T<*gEt
zeln&bEsJOL+gb_FZ5^FPKMFbe4eC?kZ6YF}^c%9V13GB*>!W<_X*!bilR;cqZC2KA
zgz^~uM#;jsrn4Czq#yezxd03li833E=^*BRNek
zY2l=A9mm4CaY{HD(~*|NGyAOjm(z}F`WLVD;a~S>3dqJTk-b&eX$3B_Ou6r~p8SKk
zfm)pR@ZUEz>lfYVTl5oWgwEnXf!8kv{fxrbFM60FVIW1{s-ArR{!Z*VEJkGv`HOBU
zqnArc7+6vsBX8SZ8L~Y&mtCO4en#Py(Z>`C11aXQ;_beaCVPo$b?tXi2ci$=dgr
zAKf|;L$VF_=pb&m)L7Jo81k$p9DQWrlCQI|XFV24-#U)RA~#NrMKY!%EsNKt-i*O@
z9CD4nE~?K@P+Gv}Cx*b{92Ah~(c6m{XC>L7&rgihQoen3i2nRUKWbmCZBYoQEHoFLjXmqylD>5u*OnWnYD>mod60_7U6(5jt~<4B
z+&0n4lulhXwp9m>PA!xVi)sYC3`jvN1KO;tQx7E=oqAQaKAp|@Af2Q;OeJ+9F4#6W
zsDrqTTL_o9Ye9_FX_zcb40Ja3taXyUbsX#D#wnd-43+_<=j_+x%4VDPRDvMu6t}T4
z9W*)#%7?`>0$%Q;AX=f#$~q+|!RS<>vQ_GA#s}#n-JucbM6?bYtk*%@t|^_8h_N~~
zk%b!>osB(fouqFa$2z%jN+%h^rObUoQGqL;Gt?%7wi4&?k+9KPlz?Uxxqg0PfG-t<
z&ZQ!pO7QzDx8(4VuqjvO#x4B1HppZN9kO^+ni|ujUPbTLb&ftytw4439vj=GgQfwu
zQa((|2vh@>L9DmhtbF=j)dkahCEqrq7ol$dV;&Y+MJ8
zWHHKz1xo@YnG9ly)n?^BUrBjPpHGs7ZmqK!A0!$3Xw-@5!8X{WgSbUjlGP&yp7|Qm
zLKa4MosB(f$)s-`$C9~mN-`N!tUh0sW4|&p*dgvlgibed>O5=snRuT+KSyrieSVn9
z5;|njB&jh?s?Yc8I>&uJwF1@W`)q8F4w?qsMftE|OrRRD3}TJjX5~IVKzU4`A0!JG
zZJo{dpa#r7Msy;2unmstAl4mJ10F^Uc~*U1%$1%?0Q9HX=>{x)^V!TAH#r!`z^VVX
z>Iw)f3)``#!s+uB`Yh=FbY40k76@%@LI;gxamt59Vge%=04v_76y8qjXi70q;DO^ecp{zeO|_3SzCI}
z{;Wd3c8$9a%Aj-_u(5qQXmskKd|0g@P&&yVmalDA)@g|H7@da6!ev5dGd@Ts_A#at
zv3xy`nu$C_=pgQfluo0{GwT#XIy{%@Z0uR{I;UrW!~IwiGhtpCu-
z6t7wvTd9Larv&B0qA!8cNe0mhZC37rjg-f9!6veBZP3|_57LQ!q;w)$hYhysAnrqy
zPA!Nb&#DV{k%d7-XJgM=C+S
zPJNUQi@O9$CmF=N!)9fjMktTbX_PDsK{}i9K{~OI5_}C%Qbg;p!I%!>KI9@eX-f;l
zSe@czVdT)+*t6D2`qpu*lN+aWk}+70mYf4WKT)s!V?CM9sKjctv9&sA#HyrxSe+$M
zV#y$895yS9)l7MeSS@5>@X^_f4-$)gbm~Mj5gY8%LEMZev04#h#p)po!-vksp0!xg
zw~k}6+&CqcjKO*``7%opzX)84P@kWmv|@aIqEb&34*&Uy5uObYX3Pfc02ffDPaiHiOW}iSPtRxiM70&8yG_B<@@}^#*EKT
z*w+{Irzp@LA4
zFfBx-J0AemgRh4ec{ho@E%*%c!C@Tl|44hvud=E8au$`)74;mP&R?Ic{xgNwXM#^n
z=$txlY3`i-IMnGchf%D8X%jlM^JoXTJQeHmGYVI>k|`1fQuIEel%FHGKmRWgyypbB
zx8&Ft?Ux8Dad_z+3-NC;T0ys8bJGfvEHPoA#Lh?&JR0QE3VQsE!dpQtQzUdK7DL%y
ze>se@^-P=4pE31vgbOz~v+iEN4NgqTJ6YyebBnB4HrK
zS9#A!_zQ2UV~ER27+BVVR7ZuMQFwI>GeyEcim&3HQRy$ZsfrOUCt+YY3sMzHKcn!f
z7-fot4#m7*e=o-LtJYs|Qx#)ePC}=g1)hG@`x%8-g?Jl3jsZFp|0=4Y(O+;=6(w9w
zLZ_Ssu8JljcoB^+Ecvk8YiaO#(L9
zql4J*sPyYXjMcA?EbJoD*_fTyPx{tzte+dF^pi1o!$Eq^(l2iGqmZNDs6HiLT%!Z2
zT-at}V@Gt*=r=_9+S7C->nDR~wKgm3S3>W98~tKrVQ&h6{;UtukA0NuM6@OwOz0rC
z+bR9xh_U)rl7)>WIvcao`bpn9j`efnlzuX%BQ1-^7hhfuZ|f*G`ccTyuSK5{O_4}Y
zxv=xZ#y0Dq(XWy6wWsMw)=vh}YHe2D*3wCN%(j*;vanr6XEQ!XKlah96VaM%uuliE
z_fF~8gBbFx_DT(qg%L<+W6xSY>08IKer}x7PsVhlW%080OBnqqmvo0Z#N8RaqUFHRQ5HSOH^ApO`!g-%3kvcXCn#GX8*
zUji}k%;R4zSr~zIHukLblfHEv>*vNP{bWo>S{5%`zY3!tg&h4_^(pbAJVZk2*J)!@
zI%xE3rhM&bI+FF1L9|+%mD^u8O{0A8?4nq?BRP0oZuH-5d+WM
z{u;@`2&A*IXRV*~t>aifH%{p%V>;5Zct*cbY>>b!`AMT6g&h65^eOQw6_HR5B6XiYZQsDqgQDg9~@L!M6o;CJH4
z!U&|Zv1hHH^sVDqKQ~V4Cu2I&vUo*^Cd;k9`d5M6@Ow9MM6{|CD}1h_U*Ok%bWm
zY4oSrY5k;cKAV1Bz>QP-$(W9`ES}M?vJ&pvIvS0B6w>-V&p%}UeCf6Q^qJr|YV*0$
zw>w|ucE8ZQ7V+jQ2MJ9TuL)6!h&6^b8(Xe}M)xwxhaVm%Q1>k|hzqjK%DN{hkI}uB
zER2UboAE)qvyUd7h*oHW%{qvABZA1@NMPD+iY$y=Ivab|x=Y_Wj@zvpr*xMw_^EVx
z0{v!jAGYkOyVl#rqNV8f_(F&$}HJhO57N2GL`{%xyXlI+0$oP?80a=Gsko%j#+
zHR~0H!|#-CLg%AzMi4q{2QE|Yxwq}ld#7~EVL5~^Xf!h^!VpqnTYWKr97`Hw0C@}z
z`a~W;@CkqYMSl96zYec`{JK*5b-6oBWXpKPDkpVVVa(c73+q4_qQk^1r}eNL!Ye1m
zqzFSuz1-W_I}c0U$k)nD2}77pT)wWuatN2NlSvVVkP2$s`Ck}g)1E6`JK%QYAio&a
zr(qPVyqMa)91s%-@{pdiu@yRKhV*jE*DjCbA)TDSmy?x;^mJ`^jPwuhfCGo+O#}2=tcca{@uvkx|Ox>Q*M4wI{*^c
z4KAg-?a|7lY3^NbQ$snS)3Vxw2uxyErJqrFlxJ>$
zWk?5sxX#9&bpw>XbsRT9H%>J`8Pk!L#WM|1tdJ#;d~=^Z$j#kpdF%umV6Uxi<>oLA
zu;*>60TMd3i)AJvpGjci4Y1G8D7*poGDX4+in^0}9<5Jc7{*?{`T?tf=L8s!OAdY(
z(?m2^b*H4}@AjKyXkWFuePQ6H7Kc`W*m@hA)Irl(DkvX5UrnGU;4+ANZ=01nOB3ZW
zou!#9+`{N=#s_s4_R*>nG4|SErw(F?=wdj*?`$Imp1HGhlZ9IdosB)~&LVy5IPNTN
zoa!txrXwwjXFAJ&Ok%W_$7Z(GoZlPjw@p*IIZS8iJq?dbpl6K{Y+en#O9aF8hyW>D09#50&qe6-dYcuqj0
zHQH02SLMn7>iDoxRm}r89HyR!SVTfsM8!I@p#|4-X^y`-KH_H;Uf07+lhC30fBIL)
zNBx4D+5ZUZN9gER;C(7%en#O{JjxUa9g6vPpvnL0xL8fsgWUE~k1=gRhjt#y=K8DS
zC4N@n>Wa6k**Bp>^Z&-Lj>r7UnVwR@LJ>MbmMIcC6pNv3qrV(R*?Oi;=+G{(vQ2(Q;mS5LMZ!Re-h0BB
z^UV`~=KsU*`ZoLP$+Vm%t`@?;YVkgg$>loI;%5}za+;YUp+m74eKO@Qhf%hLX%jlM
z3*0AL{fxquO)*8nK#Klu_Sf~UZ>L`^Q-7^24q>1;1?d@Gen#Q-*U1zK11b9JPcBzs
zy^Ypy^IUJ6{IsmwUwBg;U0hbez_J#kI(qz!!mFd3DG~-!^t>?CF5l%S&bz+7{(_sT
z=;3k_29~oRRng~X6kZj*Op!2<;;X!8^!p2Ms-us~N*Gwyf>g(VpHX;q^fN`mK#H&8
zo-ybzxT%T(E+=7NISW!1Lw-i#RWZmE2_1@m6)%_$`wMQWVu;I0=#;a-)2|UfqwuO2
zW{QLk#k{LRzhc^`pSWTx13iOPkB^&dY`qSe$Hz&^*Pf;$`SGy~V%LMs%8!p*D35u3
zoFWUm$aFU2gB~BVk1m~v-3T_=t%G>Q;9@wzuj?QNo_YU5FIm{Gq_eSS{rFh=)^Ys!
z*o{+>llID>J?K8=`Hd&<%m8dp2QOgrQfKH9o9jk-yr2{mq)UG
z*_fTy
zPx{tzte+dF^pi0iX<58%{YH&`6ms-y)~Cc9wnRcmA}uzyNe7L7^^~tYO-HhRGKhCl
zY*yB{rbtm1`M5zJ!}1>Zym?_
zxp7KA8Pk!L#mm-j%;-lUN53(BN;E|xAtVt|1ysS&N*N-uGNvs(j2P%gN3wo0h<8#D
zLx0FRcnSdToxu;R;nzv4j4W*H(9Vqy(vN*4bRt@l4OZwNUI0+~l_Q2ctMequ!U&|Z
zv1hHH^sVDqKQ~V4Cu2HP@v`+34OD`MQEUo1`la+K@rEstpyFeQvau~XX!L8MeC=sE
zlJ%28Y|OG*x&3uf9@GB1$-=m%vl$Zym?_xp7KA8Pk!L#mm;O#OOyMN57IqvdPfd$B2Z|FJ@zf4jTPNDIb314GFBD
z4C0Luo0Z#Nobs6VS56kjHJ#1)ApO`!rA|a^vcaSdVza2yuL3dTS+&1VaZ0uR<
zCw=QU*3XSo`pFplEFBduTfdmmk3x=qo%)n`!gEteli9>S0_E|PZaPgre#Jy3OV|fEjI111VPp>ZewFQX!H}54?hY=p!AbL
zTv%;Z)-OSMjD8hlVO-PMj1SU}ebnkiv?d#@*FkK5Q~D(lWA$qy3nP%u#-6o)(zlLd
z{oFXEpNzo|t4YsU`o)cY6ms{;t4ed{>Z&y7?1$r${|
zm-L*aU&81|AxFPneaZvrZaPr4zdjq=qk~4jF3N}B!Xi-m$sjJQHY@8lKzWRQgJfY`
z)7gv<(vN+N=tQ(88ywX^%>R^r!-%o^iE8P&1VDe9oz_qK=CkQnblo_mpNzq8c#&tb
zef7JveHAbAXwP^dmd-^d!AN9d6FO*Qic>!PCKiE`Nd|HKv{_lETFPT&swWG>m(FH<
zkWB2OStp{=*kFqeVw$I9YC?>asg*1YG&&o5)-p-oI*yx}8>eKFG58fP@?~Ut0y4Fy
zNi6!}d-|uxlSz^EBfXEoN*<`j4{gfR_u$A<3U*8_!EcG6P`%`zt
zd(`51Te`wDWeTAw+aKvQr|3uiIqDQ;>J$T^rx;VGphNU2D$OY<VKND7&D#1)t4OH(KlIA!jR&iOr%a^jWa?$Ty(r5CUX
zowc$;8@)#Q>d6VSLxTuEZnxT
zEQEow@cr0r`zu4<5Y1&rLekGDyyiNYB4HrK9BXdS)?BTsIT_Q|(FMn<<|tImnydHg
zWNNOPWg!fdr64ue=w}pOb3IIvFp#3}K@Fvt~K|EUFGnn
z#-R4QXyCtSf9c+nUpjOMmzk2wXl#TB%vR|PDj2h|LI=$?bCmL7EdvRB&6Gi`zSyjM
z&5TnXbImL#3$sU^&G?{eCi|$=iMUI#!K4mi^+jDXD-dI^ne}90!l|>dXMN3-zI7a5
zGu=2fEtD}>eWBu+Yi0@L!jbs5Eqx6Bb+4IZ2V65-z+wvN*fEuUX%1ye5xu}`X0xoy
zeRPPvX7-u-q!8*;&kpr9vy;8yn%SaSf{bbF=r>1FNVf#gkQMw&UNckv-eUUi0JzdM
zlQ6Jz6r}&Q`Wc1y-$ABG7)UY4k+<8{T&Joz8PnD=1jnimQ>d6V*X7sA)Z8%3LKrAZ
zL29ns&nUd+MwlXDAjKSOuGiLFkE%Ht)7CKx$ExNiRLq*|_3LD6Zj5Ci43woHHP`27
z6kcsPfVW7;}O;8fKbg>G+1Rt5G)SsCPTy$LA>$d~Mw=4Mq@fJ$1&i(Y7axwK6s7L4Qdh>{
zo4<|n5ORl*Ro67H9vsQ5Ox>#Pd)e3c<~5?~o(|DBt`B2=M&Z|o
zN~TB{NYQ^~mpuR@A$`=ve01JE`+lVX-jt_5-xiHxTa8tpkT87E;a;am#mOU-zN&&{ts_cSZJUIH$Nw)T6M5I&
z4Xen#PS*vJ$K11WlEl=LX59JltxsEnk)=w^D~#3dyR
zEUD9%L%P$A{_a%kXB1u;%}kLnkfOg!(K56g!m~!oi4EC(7~|xSO#%AzdBre4Ajeoa
zn@SHNoOKAMDTu_7Jq+L>n}Qg!=|~!~&v1uqa)Hl0noH5awrLY-YdmPnb2}BC^PpX?
z>lK5xbP_sfw=}9jo6xC5n(k5goRf#NvK$8O-99$qZ7jv~2m|Q(TbQg=chEMKj1gK%
zBS8<^vT`x=L*Wm`iZp0VBLE(=DTpzfj>MQ>jHCMT^*WCQ;b@KD<5v^qoLv|mFN9c%WyP(swLTWdMsokibQF#6K
zGeyEcir!J8O-}2IQ59qUf}1gZfXhi3Sk8h}g}4fX4c$VAH;(YC7-WisffW6n&CIef
zCN}C7Gd!H7H8g?$@zRWqt=B;w9oy1L%7+)H2-NbQ4B}NUo0XUUS}2cM{!5XC1r(jl
z_@L!K_R*yiu_|JN-8zV^zH0fe6EX12%YVIOVH3N~#-8=^pY*Ncc=^wbQ_Fuc2CsUN
zFSGo2>Iz!-rGN2*H~81NwqUE1TpOh5hv>R;#EJNao+^Cc)R<&PW-`wOLFqI(!HrEN
zre*CTZpp)bcd}7kQigzTLkc1=@nI+CXB6JnhnXT_AVu%6L$~+4jx0`Pl=+Kp2A&Zv
zDPdqq3o`J;{fxpZW0WZpIus{3qzARK-1qPK%VCrqW7>ocZEU=j9i%^pTiP71t_eS*
zaAn0h)e{LFip5a2!e0)fYzfmQbZ8e?*-Ag7aAjjmkK
zv~S`MTP8J#wfN;S6_{jo2m{qANY_aD8HHD1EmI^6q&UGrtQdW()h~ppntCobVPLrn
zQZ=1^M&VV{$P@_!DSA7~q!vpi)l0hk1vgdE#N{LmEN4NgqTA0XyegWRB4Hp!e=jkM
zCF;&!s;lq(<^BI%bpKCV312gM=+Lw0xC;bwTAFe=c|Fw_w3j%{^m0
zn@|%xJ2zFfI=m;cd#+9K{_g4kri*$Cspl$e+ifw*GhU6{bBw!ZEMs@rh+a{_Mlo6!
z0b{JQjM~^?9W={BgOm^7g&|POLo$d*rZy`t4~ff>r$g@!D_@_7T^K
z*z0A3mxn6I!ke)=8?)2PL(;d7^Mrj2|
zRr6gGMg@1g@7l~|BBvG5d#HOapU`?lMFd`Ha(RUGmke4Vy57Hir$=|EZ%beEq|%35
zCTig>MCf#(a4I3Q`gi(wAN1zPExf;{m@J_~c7hkRaG`Vf278|_O!y+N8A)52HlagX
zHLR?f4v{y9HHv;eqi|(AnIfS>F{>GPhEu!g?uMsIl4`lszIsP7Wb;>h@(;>}bYXJnCOu4>
z(4k%6ZZhm=6s~M9QzUdKj_W2u^8Q9%wG
hHwO+u#yF>H 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 z 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

XeF{SNSRQL}xh#K-6Kt&a|H(!YHX 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℞6ejHxo3e5Blb1h z+#-r(%}x~9Oa=CmTUoPpsLAOq&j3*FuV=9y!ias% zzHSjkHM?2&k##86-(}P6I=4n4aVD#HUN}+XaZv2**5n!h@#GR zijU|i$hC;RJYC#hl`RDucedFAk*Pqu;$H~k$5F#*_8uHTvv+_^*6dH;nU3{06(X9g zt}y+G-jLowLx5=Z1&FczXbD+C&DIEPrULur5v20BaCP?BqBi$2OHPye1XVRAT}e2lpwpIhS6*n96_@k!G>`fpPk=eG`oYT5YgPLUb3i|9Sfz4E4|2dR3`xa_4fP)PHufJ6Nolvk75bRy9t6w#iX&o^K5-*=np+zdh*co$+y~t zt&px-NJ*lQ*w8aCTK(@+fME-h*zl)cc8d%>=SD@$)goR^6k&%RirITm!o=(tQ(n0v zz$Savx^GO(o?|LRJnP|e(>$x1Mj-L5DG+00b_d7`de&w!8&fgc6F0JF4X^-~b`vGh z_wT@l5&NDs&LWC>);>O>reQ=wAQ9Q{DzI_S+A0v43dC)L5wl%T!)Uexju5l^fDPj` zF?-iKquH$|`_>QM=9iz7rrEwUl8R5vuFY#!|m;^){*1@@@~o1SA^0K*Lc z29YW&1RK|Efk0#`5T^}-X1_X#Rbw=}7)Q|T zdtk#jjb=Lm04JlzOofQgeoMie{IIm8-;ahhp?;hLSwYPf32deUdt)VQ_GQ#$0IdxG z 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 z zmo!ad`G%bfu>A7%(n;JNd7*%3Dd10fD#r3K)C2U(p+=zxET86Z`7HlRQ&ej7cUN5W z{2SCb%S#0)O949dNxRZ5Zi4sKWgC!;^di?G-?|Q+`4twiRp6)^{wgG`C;8iSXQ#Z? z_d09g%0vs9TY@_*r=Wz!yt|gC_n$$H5|7+1Y7}}9^Ya`oKjzyO!nLpBGWk8A#$&!pfU*>zFHS|z`sG?~l(PIa zjsSH5)F{+MmY>o(9?MNj(^&3K6H_Y7XTw~0{8}&ISqk`dkH=VUr7%o(rv&H$%YTb|`>r)-@7+lYbRzoaLg1avzJN06l?#^3xk{ZEt(llO&USR$n%1a=l=iB0y{g zSE073XSK8zc1g65nGp1>KZk^4z5+*x`BJD`5c5~Gju-PisClnu$kXfoeSq_F1-R`G zbK#g53zaN|%KDGRVqT^&Om^=C=t0aII$VCt=h1AInu~LW!1A?Fw}9o7w2sH}tJ|fqyltV@)PuP&%gqHmO94Omkr>PGU&Sl{`rA;W z&;ynqbhvz$hth18%JRi9ij~2+P~$AO5TGmt=Tk{;ug<0+_ z;8_azV;_vMe6_+b*?~}_&;yoFaJYPyD+=M-QE{34c2MIimkUsq0`$QtVEN0-m?LHR zLmYwS8Bn886Iq_9b-Y|IDo$g0Bu&bxEFS}NVU{ZdJWB!p{R1(U8!HTx-8un!z;azf z#pScSn&<1ZKKA^jOcZkYF{p8tdkRpN0<;SOSbOyn?NOldlO79c*}j=yNu4nmxL#us9~|9P+ZC-bB;Jl);lGgFk=+%sd%U@;m$QB4!J(vrpQKdwOr9@})^*45LV+bD_r5sJ8%RDL{XpgwDDjYADNl;0T?y8Pq7$#Ll{6P!P`W zka$XiG?xF^wm@qp!CaW-{sNw*fIpbQhjZWL`YH^QJp*bKdcblQhs$UAf2Ra$UPpx2uei!?Ng1N1>>O zxwBTJ=U<>kxk?Ok1FhqArh)a+!n`}p@Tp1r(m>`g9Ofay9!p`b=e-_#CU-sRAww^N z8igK&`BaC?5A!&h6H{^RrnpSL3DkI)hYL`a0`&2FJfJRA9}Pg5XS0Znd3IY?R5zX4 z$=4sRqczGTl+;L#(|RU53Tm{uiIF-}>v)lxS(Fy3(KN57GO{hqg(Eda2w*7$JT}oI zz~nx?Sek6IwNRtbgGfE;aQTt?o#xe4T$jTrhQ0n!mRV?kEhzvPDJz@SMjZN3RW2kYp_~sRg>Kj>J|iR zWxpUH!js>B{!vo=B}QkO_;&`y82~d^-^wv9UU(0PkUo-ZB2Kz8W2ItZqK)9QonA`;T@`ITP zJyJCYB{YJ)wLJa)Bh)AjiQTQe*73UA9e<}q@W%QDm|AiH(-V&1bRmYN5HsZVSOgzM zJ{!pm#2-XNtmICyX+X$%16r+Z+{8wMedHVfF zs8OhiEYH?D9?Kp6N@KaKP;0J+xiHJM0-mLSZ^GcCi^L-ohRJqJfF7{CgTv*sJY}l_ zEPvfcqHppGpvGCAD?nKa(2H&b%MYQ3vU~@QkPu^`ZUM`^wT{Pf?fNv9zofZ0HD?;b zT$tsB0-mLSe|kcU6M)`Pf3Zu7Od)W%7fd##vq}Kv@dV`aV!M zb+lz8Cf5?SVxx^bh80aESNE6mPcAy$=b9~Z=!iRHPo$PE*$DQVUVRTIAdHa)GK?tP=5zC3Oxw*yAGEh z>i;W*YaEOs)T5xrL%m9XvJ{}reV{H}hqDorI~cZNp$u~wOT0_%dDz4RMb2AaFAECyBRVqMP3ef9rwu{2` zzu840v#xuvI-E<}gNxTDtby4wu|FnJF) z@6Q5E)t)6xxu-pv3o$H(m_B1;5uAW})KrtLf*OS$M6jR3bl#~GZCRhEMlXgcDE0xojetevEA)y6xLwfuT@RXo2 z{;z4l>PYL3)U@6O<|wUQu-XU*EQN!YZ}K=Wx$n-9R-5cXs8Q%auwHYx{9rw@t^lr4 zFiN;gehAcfu*w7|O97fCpnQ4b)|IxqjX`&_d$18Wmo~*UWhW-L9el;QTWAmVQzbWC zBe)nx$k};NqckK&aH`hvB3McQle^nUT27=!@C=v>N3gRH!%~R(y($*LJr#z@?vMaI zh~WBP6qg^t)qfPgHRE(93K4u6YCMAF0+giy?ZH4zW;ALj%U9tDEDwOX1uP$_bv%}z z{8?M$U#n66!7Cl$5?(H^#FYu)F||T<=Y%CpXEukx=4-wS&GZ# zdqRz~+*5$E6rewh0?WIjhO%6WBS6hSjY2IM|6qfn=)S<@7N5qnP#uruZY$DQ{+y=Y z)Ycf7qnvRpR|SMl=;6=Vc@$2$5QomVUfYi>g9wxQF;AAN{ zKOI3hTa!oq21UJ})S1uHb%mULaEfE825Ow8!Q!2zct4H2M?&f**`aL2__54vN9bwaI9hfxKz+?3HuLKSg<(Uc6Cu6Ng`E zXhMym$4X0c<9|e>-cJUyn+38%G7#Ay$|I_!ciLNR=M?zyhmTGIF|%33iE$gnb+qk@ z05ZATLsb&KsdR;YY_bZ*mbkj0TeSeB*ON*J*!E0_$ zZgsey4UtS|DVaWCnDdfRTp~m~!aPiJky#I1N#{Jf)p#(L@ z5eA|xRG-^~$MC;DF^F(@(|6ntY1D0`RYYoQ?u5B8bz=lPO95ZT;G^SyFNHzh|Arcc z9?Y&C9WI~cL4|PrbAp7_E(yq_X@kmqd+ksBxBS1Sm@ZdYTV3SpTpQTK~WnF;47-)<3$8i42Rb?h&?b z=j6KX`(TYI#C(Z@r}yQj{So_0*!p9*N!B-iCG3)TkZdf}>AE`41g#F*>? zsL@sjx%9Hb<>yj)AzU}WDB&{sE1<@6X|4ceDL}VjpeA!9YADMcafBY*7HSk~VvjA- zIv&gYm!z?LEv;ozS$_U#=^3uaE)?)A1^jVW##p`v^#FYk)F||T<(>|g&+<<+`={dC zNpYF{_E6(2FBPCH1?a<9ctBmRd+#Xp*qJP1Yv55eJ!w_W-K~2!3esd0(jbl3DkeJ` zYP6+^K{`w8ctLvStF$2f@O=R?wu3oJITxflX*)}4`{S2;Z8y0E-Cb9B4{8*85TvIZ zE^Y78@HbA=u5C23*6Jr(8&%_eE{9BIXMb+5m_*Xl z;i~BhT(7c77zpL<^=TL6N7~v$6KiLt;le)N2zCZaXx{bE@^t?TYBYF>dAFn1@$&8l zYF_dM`FUR#h;MBHC7gW*#qw?f>Y>Y2L5)HW@~)r5<>y`3Lb%El7v2AY z8qd2H0+giyeeDwT?lnhnqm<(;0n1xCTt3SyXrYmc>;1ze`X>K2)Hus!0+giyJ(Yo)j6n@$ z`34+;qzUKTTtK??SEFkoR-Bvw&wQ;O`y~V|fzD=+qdy0NMm8!@>oY!U3}7-~nGv>!ZPco^!=W8sf; ztLaB`SC^dmUdgH1{payunKta+ZjIcMWTYZ9Js9pTMhQ)kv$ed*o&+_@b7DtqqjkI# znLq%Ohr1@UXiH7_MP2+9sSxH_3iDT7@14E&n7fOhXqHpyL3Tn;lx&S4!(yO6x!B=e6GC{yIe3OV7VTjY1E? zG|%Dk!?c3dNvUDF7e)z}$&ZH`4^wXe%2I%~VxT6|3pJGG6LEx$>IO9mHIe0Aw2sH} zsE^ZF-n&q1KJ4swhW-McrGW2uVT|QFP!G_@LXAQXSRUYT`7Gc0MFEyODlU_63pLL2 zU;)ZffWCEs2h??j?+-?2Si&NqGgR^>x8(FpuMY`Rcn{+YJZue2N;iPT-F5g}13XAe z)BXo)l%>P~AF6e{06#>~l1IB!X?c~Jt}71m13W}{V=27d*w^FDQRqQ{ zZ+5u+0MDWYNh+>W6qm_YK#d1@xBz7-K$rAEH`)O;l;vU^0qQ@UxV2HJi7YQbL8{}i zeAowREN@&;pfy!6H#;;~jS=uH1$+wzA5JclJ6>U!?2!r31D0DkTt3T#3gP;tqeS22 zzl9oSd4d3CDL}72-vjD;!DKdKa(BU&WiPaK(`5&Bq-O6CTj91k6K7fzrxY@QuCzZ& zXpr~P^7Q-9P`4n+zaGe~j|cg50+-yC+S2MSHD#y3TsX)Rg*%qQU6=Db?o6(~!Z6uh zP@~X;ARpmy`9Z#CegRy?ii_TVdH}aL9^@$kl%)W@tv9;T2dJSezlkGsr5B(^p(b{v zv0BILO25rXWBF5BAf>W=D9nXfo+{v33i!{?jj>!$VVLZ?{h5U*^nm3>4wujJzYF1d z2u2B)$=?k%&hj(?%2I%~_kp^8a55V)xgM|;>q>S3jXCMPcZsdUu2f=86c;jqu5=fh z7(26K?DD!E9QNwT(+Ofl^-DDnZ`QIfkIp60>z&goM*O@K4*(5pRbDZ+L92>6HH+zZ zPJ;#?(!YvPbqy*;t#5F{uNBn|TFq(Dicikz*2;c3_RR@gb?i%HASMroFwF{!drI^M^+KA30o;cg06hU}6!fsm^?9WE z4w0W`?F%95qKHhs3~DURj;~~hl>+gDvv)1Ju;kYo%8&r2OR`@&Ajy`oh%I|EHNh@z z7D{MjUe@v^`xMk@BTL3Fjz?ys*6|{9tXly3k!ep1rAFpJmBMH zZJ6BAFhw~<)CJS&s2aN}JvH&JBe530w|_{Rz9@;Mw^lX(FpG$S4fs@{`S)jpJT3o|Tl4nNtg3;nov`=|iJ zU0^*N_rXl)U?Ftz8ARybp%*6)aBloS{y?9k2690=W(t9P4{AJ+L)h;S@!OaE^4p~& zfi$^WP}zo#?=`<0FLIF{wj=i9A# z6nO7Kq{q+n?)T*@Ped43?8^<+FfPFn!8O_WP(3W;cH_5Tmxsbw{eIdkZfHrG%I_7h z9txuwPOT(Ht5^!DC6z?##~XvUVBhbY`N3>c$XP>mM&EyK%gv1i(~J@CEXDh+r|(*{ zqSA}!8>p}G#0$v7J!rCiOuv5#)#J}T)>pCt&kYPl38nu0pz7&KRc#Mi@Hep`J*dCO-mdoO*sL zlfAPP?>n&f<$vMHjeuU4@dvXdlPiNk8;kI;Six7WwkoOmh-hBk@OVn|#JTUcePHD$ z7O}Z+R1K^&C>cHbI9gp~+RyHQ_x|3p7nw7emrzMV_qdv%-+zPZM_nHI2%2JYmunq6 z9ro9tc5$muKd8NG3-H_u=ED7HiqOhZXnp(C*rfP#YiT|G{u|UN^k7xIm&4`9|0DV& zJ^nCCxG4TmWj267fJG_R4 zTJzT4%vP9X-qLdNvJ~)VoDyUCM$`lJp-`jH1D4-(xO|qco?U?D){2XM{|#!KW!^9_ zP?iF8+Q}YJ*TFt-g|6`li&)pt=fP9D)xEav?a6iZk#4+0@osvhYst;G(q9Vp`KX}5 zK2@um>@iTIj3oxUh1T(cUH48}u=mBjCuQwFZ!bUCHNqiF;c(zd9)~7(59%S<N z2f?1}aQVT$cUFO5AELNSz5~>FuxkY$PjsmbExA$3@=6>5>UU71P!m~xP3w3p zkEF$Ca+g{_?MxjY2EbgnOU)JVECu}53_d)Fo7{m4!(`heKo3~H*x~Y7?p6rbr+Z5D zO}-XtoaKcAl%)Xebs|{43pJGGF*pLt*F)U`mQU3>9?QGZQa_pHVbso4mNPIHW_hWA zXDQ&PoDgIAqZTp(nCwibQRo574ID0?<(2eFDy~allyI5+`B395*9lOT0(9N+V7Ux6 zl;xH<0?Ru>jY3V#<&}F#^E{ScrsZ-n%WVp^<^h-sv%E^cvlQ@$GWcjN_fr`3{vW7O z=mE?3J6t}?6Ke{v+)#1R`geD3ah&D#0+giyz4bT`sGA;MVIw9t4Yr7JVlP;K$-Q0N zTn?sUS9hqbdqrYhyQS4H8YR@u+u8@E)aDn^Q*GRnPN=c4s+r3Dx!@TPwFfsYF{1e zMa|@j6$U;3wJSG03Oz`#BOES2y^bk_YbuNqE_(h8YCOG)1t?1adH@48nE|MwEce0@ zI`PR+qfirBZmV@XmVbLajpb3)&eS34%UzhFFw3O^o~3}l@|YOQ51}5Q-wibiJz#l} z!{xKQ=8Xclj#OOq`-f2DEH@XRECuL?6&_I65m)bw&ai?-yfcIz#82o*FWb7$CD)yR zjwEletS&}p8jYeF=Bu=#$qs-TBXnq+{r z)Hl(Ry92Yl{Lole-9J<%;bMLh{n%t1LiN%y@(tr3nlTxg$zR|InfxJCuWI}o##Jw- zW%AK47f7x_upZ9jo{~!}C6~52(z_Hn(K+)o`P-KYINM5{nf%(O+}wC3SBiI*;=Q^n zM%G!Vp#;5*BM|fyRF9zXU(;pUNcNfBNUh_|U&sD8jk;Y6wdO#W3scuyz_S$aAD4UG z(B%GZB57~3tDt(&$F<@s%<{9e9UL~F=`j?8)G_037$$7={a2`Qruz$6mI8K90=xV% z|DvzS9ixarT*)nO#f!AoA||^FRIgFv*HNA212`xq^Jn95uCKrmLb(*GUzH~+FO;un z9WRtOJf9ZIONq!-y86RhIFy5h9hSmQ{Uc(bEK?Zt`!@;DgQZA6hszJ+H!l>xHMf+B zLKxqL8V}qy&)6!VprBG|?!CaW- z;R2qefS;U?vHX6C>o9La^`MV?DYO*%=Q+jZGkp`qATM#eBcS`D3sHSx9fFsboEmR-#K16q9DKhI>1@5o!S{DNT%=VHZ!M!BGIU&GV!8jL& zSo*>_^I4ifu}x*ET%DPGC#Z3jCW?2K!qWR)ypXzuz^W{PH@W33;tPT4b{7-v`>yVb zw(c{Db-ks?6%SFP5|<)_td)K#R^<2e&gPe$B<#Yk{bQp`Y_ypO6xWcJX0W(uYz^z@2=ZSk;G*wiQD)PZ{0J+IrF>Cp@p1nqs~lzVE zyxU9_?<~dp?VZW{ixh@PdeHtCCWs@MjbD$ibS7#M`u!`Y9*yIFr#j2~^G)z@UYp#x zS`oHmH`mMcW0UQaXgB=p-c3vM{&{npP_g})69j-$6C`QZVPIFbZ>wN?(JPpJZU8mPLFH46YQM{eB%Y zrY}L5i1Hfqo3*yd-T*a9T*>&u`7I)0|0eezt>eXf_eYgmf0Z_vvLTh*hA=lfG~Fx} zDp?AZ4;|o9X>y-5kcQLmpFs7Xj~hjALD9WpJ%`PY`(nz7RBQuan6R0AZ>aIO*9lmb z0``ynX#~xX_v*}T4|TAQ`|Q@Xhj&`;Ujv=;a2oqf z3bk-7%!S!sB@JRJ4QfRV@{-^rg<-NsL5)HWdfXU?%V&Nh#Uz#a-|BHQ!Td6)apuK6a{{mr40`hVCnA-5c55b<>gUlWSc?tGB#4h2xcs#LY*GPS4HOss{^y_E z;&|Fu2vC*+blg4|hUcJ$vivHJFfKd`H3~Ixva8ZM-Y|UpJ!veL6l%>uFc)UIr+{ZE z;ODiDvAl7;1lwfSK#f8VSnlL-`7GbSyQQ=({QWRWxJ>?bsBxAn1t?1a+QtX!I>QNU zgued-Tk%1K-?&6wy>WMPm}!YZ8l+}gg?|4KYP6*#R+O2$+& zZiTsUka|noSxVd6?;Q)$84AN>Pk`z{A9wPf!LI8Ths_VvG74cTwm;T#QxT}2pvD8$ zU%;{yus5`#IcUN9*mm`Cn6UBTFFE}jFEUz-nCvxBy+)1Sn;NzJ9{NL}JRK!8l*a^B z4^OOGM!S>9q-1hAt>g8#C3mKU@{@@L=$ie9(B&?g3>J1+3OncR6$|A!)Wc9Q3Tm{~ zL4SMK;qt?HL?K)q6qm{G1vMVVAp(@80G-~_1M2$Q|9(e*`+`MmV$6gunk*b^ziK%0 zUj&#!_6VwI$nH`DCR+_P+U~?5@_eo1g>2tD(n8jraz8c0o5CDrxC_~EVS=SF@$8-+ z6DIf78fm-9&V?F<9)zrk!{vu;5^cOvaSer0!e#PcU#T!m_F||W z^l>+a_5)KLHlOJu3t?-l*i3$FsBxwz3Rso`_P#x6j4S4il*xSZ8ECuJ9-3jM4q5Z%}=gep6>_W~~tl~D3Gm~Em zHO|sh@y=4bUrF90L#`V_?qee+cL!_{S&@CfW}Xc{*Ve5}tn1xW-J^;aOx%g=WUVww zw2}#~+LrG2)#x-EpZ$tfe9R&?5Zc{Li)8Qj*_wBx)ErDpmNsR3+gq>F+D0WhT2Es+Y`>r^Du;g!Y41gR0LaRgK?E>o+c~AB^Qa zTH0!|C#+Lyx*>d;WFkw+#1*?xKL~$O^;+l5?+2|4Is5JxCWM@s{6eVlelT6UvlQ=_ zkarp=9zzW!Xd;ddu)^fVv#ag{i9%@GJ%Vw4J?9Y;sF} zc4;vmY7}}f`!#d8e3m~RUjWzjFbbA0gBoYKR)De;pbZ(Q$&{mpvU~uJ!16v&qfkr6 zcZsj?H?9c!b9nZfU7f~qaiP{c2XkST=L&e10{+;YVk}>+FidtJR1f;N;h`1&lMb8D z^c9rpshy{(Vl(+-sBxwj3Rso`c5-v-P4##c9vw~I{V7ab$t^p_i#()7O!jW5UZcjJ zLUoqU;ff}6B}!;0`vq0cPOO^HVGh(fUWfUc7N*H_ZZAsNRJy)jF5TaaHA{sZmcq^r zJH|r!H0mJ>AA}lhbzKW%2I%Sz5_Z;32G?ITj2;$ z*Vb`sqfkr6KO0{zeuRQl$7A`hMrzAKz}v!lnA9S|gF9a&1?Q}0gmXA~)XT@GIA=afZ{A#hr8ky2mY#x7)&w|Uwn^`WF*}82L>w3$@Ro7CZ!b#;2{PY75 ze8(bXsaKj@bDFLBL`qFw>d6CgX;1JCvKIO!T8KQsS7EO^m+m%z8lq3|od`Yc3BJbG zc%x+F{u6v%oL&0_-`m%)pF&UYJ^ww3dy++rxQx3}eIvg+EX=&gT^*{Dur{sKk4^S? zs9w*BtWDdYgm${!f~rlDs>au*AB;-tbjMQlTZxv*{sz_O_Lum@v|6p>O#%}} zrcu|jP;0J%xiEDt1UyRt-;BXWv!<)Up!a_yK_7PjLD%8!3Wv>SdK_;Y)3zK-zLBt+ z{Cuc!rrQWumIAh43B@_#S;_G*p|fYnEluMq(t%pUWY2@@$KyEu=0Z)p;(=NbL5V#p z*-SsC>)(lX!_P|oxRhJ1DY6Jhn7BTM>OqS4p__)MB|=-?VW*Kj7}mpyz;}W1<-ma3 zZMXOO(7n!?AK6*dyHcIiS7#=_{%dY-JhGj|J4=bI$)XRNZjar?#dO%!R2d7w{|v{M_wgedwS6x$eIjY7}~~T6#|r{0NsaynoMuhP?k@|5m-JNY7}bXHRRp3j>qz{>(f}CI-&r}pDdBl zz-cKfPM?qDD;5kj~yrNO9jv%azCF}9%asC@r2w7L$OGz@ zKtC>~cADH$7V()peAz#D8POFUmYt1Y-^dpGCQy+Oxj;%8z+(p^~LgdDS)^l_vKv>LKP6p?c8A zeYGaIYxlXs=EuFP5Vj)}o5^>C8jpK_0n1XrzE?~mXfN_kbpP`uw@&H)6-U7QJyZ{K z(m?jQ*74{bMeE1pefO2a3eY_e=4O`%*Z2lY3s_1E8d3`)Sx3*mDGZZsn*crNV!U3q zxO}RApw5??1`8HR8kqchP~%h&5uhvu=s67usLAX@YiD_#?gl`&ueq(ZFTJg{ufR2r zPN9mu-kC7rw2Dzb53Vo+TeXn4=?^x+=Chga~2rQr`71s|TyA2ts@I|NWPGEo zxer{>)4nKr0w)8dcDbbXEp)sksZDQ)uHdR;CznH*-X!XV{rDYUnPk11UdMPt<#c%! z<`1ry`wzyyLPM?ga?}f6?@TYH?#xtkq5cO~oeX#UD$~DC~tg zI(dn_m-)c3mvB>dc24}JYyipjZFQ+l=}qfr_ZH-j>!mfNqx0f7<^IB6Y*QjHG43Ds z5^l?+c%8P1pAtg{OHvdx;veTXhAvXtre*G;?dy1)$wE?S>omDa5F1Y)zznj)@PimTCK zSCMA@3H#9`+SZ!cAAEHEaLEu51!c6IU$7)iWDI3`UyOG__eD z(I*8cw9VpgPjj?bim$HZi{|jmHq;89?;DeJ(c`!GUsQudh{>(1qDf`c%rc$cmnTd!lIwgr8XO%KuG6@ll&u&$qwf5J|BB3&u5-M4d0H0zeMP~@+AOM( z$g-5k_S=w_MISj|e&@KmurHfMwc?AV`1JU|9;-6T)C4-Rni?%O_@BVPBS*h2o2) z`1ckgI@wM>JLQLE{0!;8A7*3NECT7U#y;&w!2|AX7?odLP z%)}Ju%V*-=!oDmM>%|vK@%8cgLQG5;4ko5j`7K~#pT_GlJya7y1-!dkK3`%37QDJlhr)aDx6?7~GU28&@ z%)~9um(Rpw#L;G%;K7htXDPm3TU&^U>xO}er?-rWL6@X4QCb)s!67DE2s)O6ZdXE= z%*06N%V*+g;%Ku>v=Lt{#n-ey3Ndln^3&)A2pld?t zl9?FdeECegKpbtBiO%ASrTBX6_d-nczYa{`23KfBmNH_VIUtRRT??ZlIK)J`pkpcM ziV0mZ6N8*DpNZ+j(Po*b5MM0C*Q7Otm^f!Bn85E&ZJvpq7pF1NvM@S=LrnA(bSwqk z#?@&|^mV>`Cf*{BHp@h%_+lx(ZX;iOvC1(YSx=mLEtuGq%5TBkanwa=OtdMCj?5Di zy#*ahLHGM_X-u5yeECewB91o8M1S$cQhbdeU+GL7dkvUqPvxUb@Flb?t?Wr=S>m^M zZhVEy=`J9=`fS-hjiY9Tag#yfXfO#LL0AgzxvSDRI>`C*Ihsc7ZI+`U;)|vD>KpbI zZdQ+eY0Wymuq(1n%^EJQSc4%lY%0_5(F~vrQW#{#c5?vE*<0 z+x96IyLk(@Z@`6V?Yq9PKXO3rn;`yJiocz__5~M)Zg9T*w(V5dmt7W36kjaG*E1_a zT!x!<#|3H4dYK3=KqJ|vW=#=SEXCE4VONnIz*OhUZ`R3$ec5JB6<;jH*XO^aH0#a2 zY0dhTxZP~Crim+-;%Y$HRis(-oG-sw)rEc8W=$7gEXCKRpHrH(tWR3A+7xz0wkcXQ z;)DEx#Q)DQ$}g#t;=wGEBlz0xo^)S*E(5* zO=K5PiHZ?3?0&wMG`UK)lf5fey4zD!Ro~8cU#b~n&Df1k$jqK(hQ9n>x_4h|#(fb! z8O>4Fj9npy%rvGa6>-guOf{mX32PIp=Nh8=%nITzGKB`0@4{K}XYaIRKZ{~mAW~$W zvSO)3ils#A@#Se*k)`G*-#uP;enDS0+3Um?OYzku>?<77+*X$&D|{A8>+!|XrRUo3 zTi)1|OgR?Aw0uh?lCNH!S{N!BBwAJpRF(pDLR}gyYn?B@v#jD&OTRv3X<0A6ScqN* zSqj*`%hHH>-}&;1`JS?9v&1wPUo6Gf`X36d$6vc7k(`v>>eFYZF>yj+be4%0f{vx2 zJCo2k(j!w$jq~L*@e^nL=6X#V@x@Ynt^7XZE1dbCot4(Cn+m(K%_?QlerM(YRdWNf#lRFd@94&PD3XT$4N#NI@uN{ z`Fb;-6d-(ursvGXxT!`TUZD?GT+9&JbtymAv)CS%(ILG^ zhHr>zd+`BC;ZhxAko`vlZJKAOKSovmMp;Ne}aAPs#xMJk*Gvc_|uxZsZL*-oocbhH%xf zlLtd!gH?CbyLfJ70-cIJH*$&VlKu+w2pYDuOQK%FjgI4c)AZmTwm9z_bVlohdx(2( zv4gIE!F6@Lzp@&l<4_n+7b`ojI z8_tX0l-7m4*rr4twkQjGiS*00{g8v*IE10D$x9)0Wy^7-$~#DtuE8DCI;)_GPoH zR(!D(UkknrH7k-;_nwdRh{ifGEwcZIqBCqJg|_uH3^(42CiH58&8abz8n%3red&|U zt}v0?oR&u9iKxGs{Fp0^V=0YWw|J-3VfK-Y8I*~7x?xw?NAVLkV+a=V^;;6n0B>#5%Cyrxti(T=Sh zpR)zZwScT4C)(3xq0_OoWX}rIy(h3H_y2D-YgTPf{vx2TfHESiRR9i&qV9OzAO_wGcfBc#n+AGE1ijov%y5-lM?ai;I9+X zn3zDgH_Jo|LB~?i)qR@A#P%nuFQ19_g?(8j+K4Zf;_Eu{mCnTBXMu^tr)T0!tU6xN z`8&3|2=`{0C=+xn1>OJVr!mpMvFP0iDk#7 zF)@j7ZQBDXnb`LXFp>DAM4XAmJ<^zX zh_Yp~O!O3VECt>BbJLhu<$U=}9A4O$Wuj7iu@qnDkgs$mT2z9G#HVNCOw2zvjftrg z!Ob$!ThOr-bTyx(F|o|~@|oyX*q3FZzxZM)zD^}y=}hc!I+%z*Ga{2bFT4(TmaYyS zb26?D9)1kB7+21oLOAW!t?HMCkjD!1=x`GBeXHq9$I_Ri4&gyy#LujUub?fa<1M>_ z_U1&cI`*Xr5R=ESn3GxCb-$ve{Dz=8nKh)6M^+b-%KvCN+89)2>K(Zsf3QhEn3LI# z&Y;YkOyfY^7!>#}P}c|QAA!0vRTJMkk}AG8XaSS?h*G&?Y^F7RNWS+9yp#oMr$B8P zs0{;k*FfD#Rg-zYHGP?{JvR~Gj-)-i{Ziq#EhvU2^Hl8P#+h~e(VXtRZKJX2FJ=QK zlfe~n>~(2@-TSpo^snO8qD`YmwLm0y`~3!Lh`t*YUpYSgS4Rl60PVI$F^W5^$U!0T12cqVeSidU3W46%yX zs2A8MbE>%cqBd96Wd4Vz7pjWEO{UEHX~Rcz@Teqe2)ey*U@irpp4;?m?A)kY zhrrn8ncR)7C}7m*rgr*t6PfO<22nJ5X)c$m zuHu@)6Vy3Xp`x8FGkp7%TGQxg@WeMp$vEF~1oO@Y^CUL-E*w6j>#e*JhH%`C4l+0jt_@7Hg` zG?+}kP_0qxw;I-4zje5h?%XF|T3axbS>a13^exshrn$m&+5>iGmj_>_ucQ%!*YYf7 zW_qobrU#Q*bB-W2xjLxybu0QxfBn*mP48D!&A;JNeW30qhryp4`zB$y55@?C$xnb9 z|Kfaa0mV{4?F~>>oE@)mtX?hV7S*3e%pD6WGpJG9R1A2pxT1Qu&U~ibqKf*Ta-aQu zf8^p|4Ig!14k*{3Q#B+w+h0|a*|8gPv69Qt6O$}#pM^T7DpYiFcVyofE@Lupb;HpF zKAKZCkp%w>Y;Z1$jj8$}^}s-#rmD$YjHfcHrqCI(JlguH;UgNIwV0sOT!d{sC%G6t zXLAu}Ock1Ea`UfY%rojfteekc+j=!Ur>c&fF@74Rc_CxfRa(GgN_v8)rChEWHH9ZO zLbXCgM_Xn}$qu#VKmP_#&H0GNb~Wy7Fi&EmOh2R^7^t09HJS7As76&AIzyJ*TR;5r z7_!_`i-~3B3AXi|@Dx60dBPc!S$>xEglck-`wB-h%PI5bLQUzj{|(iO^w~q*voZdz z?zkb$iq~fcz|L$+?}PZW&SOn~=^iYldu;tK`s@+vliq&;HLcGcF-T%RrPfId51!#Agj-}WK7I3_sD zuhu|Xn#?=p$VGmy3FRW!lw5>LJv}Je=16X1)kH2s^G8=4P2nS&Ked>%!MP|lrt62) z0|T{2Rg+mO%Qrehmgic_bNPs7KrJSgH5Xx9&q*$Z&)HnW8B>MkncVJIG3FU{&3{0j zEv98RXrS)P&PXSRrNP-ERZXT#5Ad{#%h5X+dBJYSHmKCogQ9cG!AuJ-V=@mNfulBj zMDwQ>b2gYKu~DucQV$H&3RO*JC2pQqb*3|9d5HB>$wxFgYca8`Ji)e}6Q087EKfLN zs?a=>+lYJ4GwN2gLq1JV({rkZvop)n#Ng~0Rq6dG$AG6HT#hbhv#>ltr3G0~bgE@$ zDwi>tYYzuc)A)$Sb}i;?Fi&EmRzIZd2-LZ%n#?lbud1OlWVxsHvy_i$bk<^GS$TqO zJtsVc&sm;u##EtsCigk+UeBnj-4{GHr~BXhkGvG~t#GTh2+o$OYBC>m0Z&C-j;;x^ zuslJfEDVZHv&@un8I!p!51u;n5smFy%-LX`#70m3kg_9CD^;a^0Pt5;&>6B^Y5nx) zBN{ohm{?YxU|Y`#PvLWxC!8@=Xdca#moerUbyL2Xj~gz7n%kQm|Jeb1y>mHd-0JQm z9L+4Jnc^s@DKkaeP_4*JQF=z&>h1*K@Mel{D%kt%@?fSIB7-tZ8I%{lg_+_dl%;j3 z$vp`*ZKl}HVen^)`Ij;m9)@0u!Q@Yd8lNeK3n-QX>Szn9g@VFF+r;8x`Wiw_q3@@o z1JWb(&7)hR$&2GXlAu2XJ7N092vU}Ubn=^^?<)0aas!~I(f5(V;M4c;-~{@1R}3cK z6l$El2?C0xfGW12zBwu&g5MHUo%@8(wBxq~74zd>JxlGifc}T-b8n^D201>5mp<_e zgleh#+!M2NQ`k;pDp#6mAhvc5*_z(W*~*U2vR+wBw*<38NUzQ`It9POdgXR}*^BQK zo=2zWWWLzGgN`**w5QIgn!tV64m(qWvlCUN`={NhX=AI#aJlL#t|`L~R9brnMYkb{ zRCGF*F`2JA9xNP}&lE>+cJZo-1Afru1a`Y7=ko>Su1H z55{JyL3S1WrOr???pXQ-5W<$>9gQ2A*8Q80W^&j18LHp4I+MleeC?@zrVCl(=L1Y` zhSsugcDq9D)#QFQN59bd7HoC;bvw4TmPd^;+Kvu}!P%h!Yoa7KOG)l_ukE5x zrlC4RIY^&JO)8idBzyBTRVLK&?ZNZUD5n-eEyFrcj#3=%nrGOpwDu#!3 zsG+<3lAD1l@%1`zFV+y@#!R z6x%NcxL|$@H6F|w0n1Xrp8hhrNhvTX+w}sl>tHGhwq(5RCQlV>H<^c0j%e3S7P*_c zKGFRya^0ja%(!k+rR{LL>{@}%QeaPciMz?Z4nR)@V6xp45C`34jzi>klO_7S%<4|_ z8%CnOW`DY_M z*(*>`y9pJXS51$5Qx`c4A862yS9>OVq^&_$3Ad@J->72Kdlg+~XwcSftwGyWD|lmD zD|i3d586!qj%RhJ=U~PKZEl%R2kHJ?@;rW`eo3^tQ+xPZTQOiQB}=Ch;4gnP z{LP`k_lSxCo50BHLL0YJVV0Hn6Bf3Rxrm9lDIB@JdN z4L*8cR*e$rHvT@BT1kPL#4)z|*?p;qwv(*n8|mK@9{`?^8!T$pkFX*g_! z$+GaVwI{uTkEkLq#59HN!&nGQl^^4~#?_ot#k z@(dVBfw=xTFuQ+fA7gTR;RyY{IaHrn+nCT$Di#u03JGhTjM30Ls7VWyW95dSh#&d;2KfC1Zq6$rP5%Q z(%^d3U>ZeV->0V%Rf4c3wR=V~s zk;cmYrVO^iacVBGSqkhP&v2YR+e8m0V3+lGTgfPsT?N%cJnk*Jo~}dMAcxBDQw;)C z*TA;xQ}@Cu*c}fw&Tb2V$x>iG@-#id{cmzzooOpr?Ud7lZJ1m)n2P6=U8Enyy9kpz zLiZI!t}fEQ+Q==})yF?=xL|fIi&2r)M-y9!mi)O&Sj(PdwF z)d1KJuL>ULdndstcFSEfYgT8vMvU~aM$S$(a=scd+0&tV_{M)iR+nEus}^cnCzQ~p z?GsepHL2>jed+qa@_qTDguKuB54wSv+#Q?Z77WIo;TxC*oy#9;%`D{aW05|#PC9}= z4)@tM(ivDvXSn+b>I`4eYe%&oE^~1FemGITCRp9+x4*-1np!y96^4^lI3`~YYP_?S z2|kvBZ{1W3h12%twkXLD;RyM2H&j19c7N3aC~GKRF4YR&P zSQ!fUhOIEIodq^afn83pt26KaWpmf$R<&aMK>P#LDB@sg(a$0B>F*REx(s&RFnBvG zVi+6)HO_3gKx8QpCqE8mKhKAmt;G>=z6mvovt)cN{X9=~=C?n?ow6xAHM#BJo9f0o z8?Ve|RtUm!HHUJ^lYVj6V*?sX|C#DI`pMjN{ZY z(wuHEpUcC1Qga@LWso!xsz=hehv}CewLjhE+UEy!xPD2ny3>Q}!~N-=AU2(+_22I`ABWBj7w7Y7}S5c)RkRzc$=Ges96y%>BYbW~S&) zcFiHdCww9N=Fm>|3%a$K9D)n<8;8}M&WAtk9;4wee?9!AuDplAX*f>(g#?yD!Zi6ctH&ZKk(@mqp(t=r| zUk|MAbSKQX!Tl=O3dd=Pz-B41=RL@AI?Dm*ssQNs;}Q@D{b_v{MdZ_eP=Kg@6w&v( z7clunP~*%F7lR`8geMmNTi zyUA7hWytDIU0}vBdp2x^nH?jrSqki{r!ccyIRN`80Q$MKB*f!p(=JTM{(BuNpWQnB z?p}4LM_1eAmhp4;t}bt1hZ<*hg1}@cFy}r%!+H;X5Qcsq2kTm;_+?$?n(R|heTwZ` zX%C>Np>e88D|i$iPxl0qDee(8X5nv<#vB4$VTvaTc9w#@8DX!^+>e?Jpn(D~**~$Q zj3N$_w~IsM(>p`I5Ln&ms3@YxVG+Z^B)eXvtGq{4)IYpp(Uuj7Z(rU*oq0`b!O z?HAa;S+yS?im%T6N?NcjX}k*s&Ey)fNEqVn&T%`w@nUlJ{tM+i@vA$>2VsqOj=U)x z#RQn_b>KmFj&vW0Z|}Ix7T@Wv&h(GKxOr!I7{wwL#=Crd-{juXEB+3Kwa!+XIIDbH z>Iz=)n%pI!HMGS|cbe#f%&GW5^X(`tM!#PSH5$E=aV50#Ufu!MDxUl`OyY+-!Oy!a z640C6wjszgPs-lzf{2lutdZfVMrP|(dy{=V@iIU5b}wzfZ;0K4656!tpz83Xs&;R8 zEmhUM-A)Ik^_gGwOL^6u9$9JojJ<9)yE(Ivf15@6>{bN-;f^&`vX-S}?d$h>d%H#s zj^AOf2;k%*a1OR`$_m4|G`LxCVam;dX@ZZX;M;}q_4u3DqEmjcnP75ThnC&pwdltk z)2Ljm-|DOGbOy}05&pHyqAZcJsf~4T@0J-wNRr891K5iI7B|1CkKe; z{A`0Oqk9`gWb(T~jgRg%0+FRaTzwDb&J|d_YBnyx5$4YMP@_2Ye$`O`P(vN~X|3Q5 z>{lF^#_VnSEy3zen^r{H(HpkH`By8jSqkhf1iL!(E^0D>b_&2`TO=S3m_6Si@|i6T z5M2^Q^fA_>7}(#jE8p0_K35>J6o?ZiGQ^ew(T>x0{hYJw=kPdf@2;0-|IYC>E*>bC z|76qFR_tL{#@!+-W4?bc1Ld}exW@0FfQ{7&Y-s#$6c;AoPu8q0No!+Kpe#HA&1D1UuA&kndOm;S{cOeyOj7X z6^JYa;=;SoGv@8iqop$Y4vx?>rbA8c8SMdp6Z1B$;4ynvsJtrHLj%vLx=KC{~gh)#(jdQsQ8CjSJ~_?WXwAhHyQ z!|r5=#RAbL__5e|<^GMGm)|q0Ghh7}?hSeNMb9_ErB}EZFQ>X`Fx?<8x%p!HOUsCl z8i!-}HjWU(7ojG{u)nyZ?`vrVFNSw@NQ>e3bW=;NVeAPru6G;>Tj3b47lK#{LA~x^ zf__|P+iY@K1z@uE5)cP59PJSKF|^+&L{^Q5U598|DU(BpO#V@*@fa5UpWHnpDG*<~ z9lfI|YH07s;0VnARl-)2ncdzsYynEy2!?0m!}d#K_FjCe4egloL!@_%fvqsJ#R8k9 zz^+fQt1|{Qxp$nR08F+b0dc_Wz7CPkY-xa~QxwtK?H#i#pvIXk6^JYaV(;4+;!ode z!t-+}+c7p;-z!>5M7hqBn}LFQXJ{1rq4ho7>H0qOT*@eHBQ#!D>ZZbEFNT^NuX6+o z-M`WbUQf8CU0S^UI?DBg9bv}h-Fj>#!trV@WUv%6PPvuISn{3rgm-lRVY1VqMiB?` zy4E4`<25)yR0X>Z(S?f0zU$WkCqn}D7$7B!UFp*TWM7z{OvQ)l1?u3^V& z1&`SS_Dy4U8ouj>p77?kk)E&-JCrc9Z3H$;f&J%rW_A>6a!+_qw>2jF7St%>fY}xf zk84X)uW;+XPmIC{Mam;L62jD~nK+hK@AP$(F?GX9Q zF2*+j5$kzNBe7oHh&docCjTSUIJ4yfk)=S~V8Cn+8zN=4p>B^%c0i1OUBj zdKo*V=lkK?k{rDP{X9%5{n0DXr|pv#f;IT^85+FwYujMEhph*H`ML)>sN4=*sn58s$Yicm{r#*7aokqPej;N`$K7^XwpU(WB_NS%IxVi>3 zxT7;>Z*8pqY~l%BTj^@3Da^S3bO&sO<5VfISqkhEt2s`KmMDO86@bZ}3N?y2=ucNU zL_Ynq@Lf8j*9h2ki0UaKdcLSBaxAvj>n#vj3dE;xW{3v~M7yGG&X#EXt!Oc4^OlWY zSGi`fT_mksd{#QWGJ=4O$Z;IWWpTeHXP*DO*W z3)vG3?d;B2XvaO^C9iZPu(Gx~b0MsA*Whb)bxqKoZ&f;S7c-zzP*>fzgdh~z6U<082*!$8Bi)n5X~QUbST3_rbWGN7P0^*lnT8`|qDjOOg z7JsmCvEXM_UZbZ!it3k+&E3o8>HP%QE@(V{2=)9()kuB1g?Hsh@ zqlL_mYexsz3Nt%KV6zn1+Ys#P%W4xcdFC5mVg zED|DYn))DN=ZN*cP${@b)gJP;s%u*gku%nkRi=>nUjz&>#VGrQcPkk;dWi{o9vhZJA}obXy-p)D|n+%qaD*|971>e zbo~c2uCMO^TVXEi1U5^7J?}d1BWF1P-vm2^&kODl*6*N*d{S2);1Jc1A{rg+5Uxqt zA*>RJECpf*f=G$k5IZxQnA}mSbARxXxgFkYP@S3hakvld%;rtDsck|qsq=4q)RUWv z2d!^MT|hIv4URB4>;^SDIOs&Nzqm2Eb?dl#d^kIo?r|nxcw0g@_asz5eH0nao`S7# zsMZS)EQN>GLpfB_P_u@T{wf7vvIC$-5eE~+@eYw6s#5|)l~F`HDI$~K9%_6zD;g}f zO-KsFQP(oWtU$Dzxlh&-PbOE(!VNgQnVVC@yE%&Ne%R+}AokE*pUF0Z8f}&aV(N$5 zXI9n^hO+Ql=<}v&f#^&30woaV!HnxO55ZPA5XI6;meR_}*KjNMaR4q+0494r)F|R0 z5VIU2KM-I3%OU#YgGg$WDk785K#d2YR3Nexh<^=Xh@)XjSH!dHai7S&&B6u3j{NrL znCz{^@;^3hD!KVk`b(iXk}c4?Cu;V}7ARz*Kob9 z6}%yCpC)PHdY5kdNw{8s85ge0VJjT2=E4O_;bP_0%*7A~;BW-R=|v7_7K<#GuuXBvlQ5OT*b_8?*KGV0QCH!-A+YT3jwpQJ48OSnE=tt zwULhSI4pwMNl@d=mI*|b0`a#i8RAfw(vFbdh!N=^7O{>{ojE*GxQu<7TwA!bqrL9* z_>n@spx8L`>74y|!Ik;I%Isci_M#U%)2~R~G`k_+sIQ^F9N*vAql+(&YLLN&Y@5L*ayu%%U1`2@UyNa6%zM_O;$-9w;cYv*MC@Q3# zETx@oFXvD^jG8snxIcCMPS>}fMiB?0=;;voq4=_`L)0URXc8)+mq#QGsv1haQTjWgR@AhHyQ?Fk~~ z>;Fu4L;I+1ZcO%Gs8Pg0&Q5ZOd}gl-5Zw*CF4h%_$mH`-9D!7opos2^tR^zyIR3Zll|zXXY!8m zsa7scro)U&_iJD)oF-!=1}r58zYpXz8Rh_VQvfD=NCM&@O?GjJ{507!K-4;l=*Qog z4njol2ZkE&fD;5FOM!S2L8PJW{jI`#iZ^hCq3wC7$;{sQmNHwd6+C7?&7?7V9^K%S z4tN60IA)K4tuV6_1vX28eeVEfwwVLaNCBAarhii0du}vpv^vSTtvk#1WW17-}-JJph15md0AaWA>T`Y0MrGw4*_^9q+D| z3~@u-RDsP>V3!kY`u_JD8rlh{1jJQPqlkl??dK5r%)Uf7PbJou!LEz-fr`lF+dz#o zJ53<66o`{AVuOvhTagt|441l zFNd^hS#Y+6swUInJ8Ih4s!}djjhgb7O*TRXLPbAawig#I=MPNgr5|uqVT<)7!T$mq z{FY6z(OW;HSM>&Je^pJUD@B)zSJD}>Jk@$|o8fczEt@!F zZ1djNy%JiBIUCHH*r?MF=}n`7x=K}(X;&Yt zEu}MLxx4jK#G6risWS=wr|6V5*cNYl3v1zXmNlF)RcIcu_Tf#;T7!$2HU2xcd$S5d z|LLQTf7y=S@Y?CM{oswhFZAkuMO8H=;}+!Tr-m|BbOaQ0syZtmN>7H!*yx?m!PzoZ zP3EtqV7CRAt42*>myJ-ZP|+hSpFQ~ldcWFtV7Jm1>rDdQoegGJYz)>9DZ>JFh^i*@ z%T{2wKb;}VKU&LU_=w(JtHs2!vJ2aKPS_2fv+UxGsY3IJ!rTaEw+QU=U*zPj8MrO0 zBPQJV-V#SM%jw$pj!>hcWyyHCU-Q?GL9NLBng=)Tm9iGOnr`G`6b;|6c>#82mj|oW z=`vojl=1SCzL<$_RG%g{6l&W2n#m4>Ka&4Vw>)DQIw%H{-wSGd5U&wXECtlUKJ=1A zJWiA`FWbpxQ|)y-%c*PKDawcSMEQzsDX6UQKPhxtxKQ!MZjh}iC7p^lCqY9mt1U>y z)$VGj71eig`3m|j=D3MGwwO%+WkEzt?o1rb{qYG{ z3I}MRaKTczXmB0{$T`1Cozwjxs8OuLuFx;r@8{6?ae9vKoZ4K8qS-~!n0zVJc&L^N zJeC6Qg5Cisu~@HY3k--+4jZS;Oul&O{Uh)*HgJ%HEPO?!bZqesOXzZFo!JU4@_qKVjL~C z#p+1#zrY61C}Ly1en_)#v6Q19+fbF>TSt+g;;XFX3#^|~`kY4-Ehgx6MuBZTCo@X; zoSji{##Etsbie#h_A{eyNiBXlq(V*8B+SkjKmBS)aJF1klc}*hm2tW1Dy}I!L8bXR zD0-)5rZ<>=#ZR^iRw93-=A7**+aIsSsJA#{c;=dGWKd_*fV zEhd(gC)n0=!c+L1<%!S8@P5^_*tF2cog%PBlxdh2SmA$C@9=P;HuRaSy{o2MfMs+_ zriIR=%Cx{LO$%I}riEd<(2wSTV{<2}QLxJ9%-^*94Le)hi`|NjO1I!>W;x9kBcMim zddYYhmDn?Nw_aM@?&;j9^yu2OQR&lW!8iaTGAcENrSPa!C*7WWBRnecu?|6&nkp803Sp%sC7oKn1HCMc5_Bom;D4mf<&3auU2t}xs`UFPO9;x? zs#-2rjhfQi*a#U272RhM`owzvfabR^a8$GniWQUKe}N6|ZDOOjen{)?Ky9HaU3Xpw zTcvb{EPt{PM`e6Ov3!k&S4QEW|7Tl@PY#yffZA|uZsL>258Q;kE z0egSP)*7|GUhso>OX%)f^7XWT(;eMl?SoEeI&J^|82b|Vyr%U3P?spLrg+KJ7JJZ| z7-}*IvBw@`OEJV&wbxQ&Y#H^E_I27YN-#_?Oso?OVozg8Y*n?zQfg1EwRgtS|M&Tx z=egVazJC9FKJ9tVxzBm-_k5q{Ece{|-piB3gLsifiKH4Ow@yHmxZu4n;SX7DyX#57uC?4D1tFm}sM)#ojcDyo%;isA7PTO-@3Q~Q84 zQ%fte>+Qvu`876>lJM(V@AYx$pJe{SM<~Uk5+oR%qta#*UGU+n48}&$%jcw~1|vm$ zmM2nu=2ZqstLV7kj#rp#lN^S0QwwcKFshACJBTSe61z;qb@jKj)qxUNKFyz}M{=0& zO-(IZFw(Y_X)wmid@!=a<=8xzt;a2DnIa!Ln>;Nv)9Al)GSAbZsC39g%tvpKr$N!n z=cK0cM6o{?Q$5WyQ;rxxYj%2>ZL5$RCVUATIZtRqcv2hHb`V`K5^GGvdqWX_P_IG> zERXT$sh1p{O*S>PY&_Anl_^j0GS3rBT=3dw+7W+tN_5)l zg{3;}L%5k-&}k>o4*E;DmsqadLsIP?-yXnDJI>DOvg=SR*=g4eK?pY>ELK_l{YNOi@q6Y`hPB4Qzbdfpk_R@Av~## zT04j?7>V^JVqX*S2lX11!16KvJdKjW@N8;o*?6LDD^s50Wu7ONxEz~@_5bH`9<2W# zAx~{)8ed41lX;%nqtaFr@jYB0Pm@J2pOc!(6Gd#5MXIwrGo7M?_5TZOTbJZ8xSLvN zLwHgfy><}M5s3pPy5RILX{!e%uw3WQGblL>&!(o9jVIc+GUX{==6Pa?%dvSb`^0CS zr~4izPZi5cH1RBD5S6FOsI=Tfe1Gma#?vAJmCs2{<%uFL03+4wJTujzgZM>DFp_ra1bceDjRx7cywRpJH zMDb|3pukUD;yaWTw1Y7^oG2=FNS0KGC8>hi(u3N^K;>;`t4>O6r;3j=2RndrczDE%ajL(YD>+jA z3B@$kx{!XJ2a7DEuNW#t^^v$i98s+c=^X9Esjk*mNvf@C-kVfUuyeZX-W20hCl=B( zLl9}MKU}&9h%y7=>b`qH+F!_ZjiQoNQ9ZL4P~n4d)+g|3Pw6GTuXjeJ?Iyb5Aio-J z6}>!bY6ll1uoY9i^jUVpZaLtB!=7QT$E)=sk-x}>ba1sX*A8M>i^M?_U2xkcv^9Vd zSl+^)XGn7R@Up2XI_u!HZDrcQ<7K{sv&7}tJoN09@0E{Tj?N7o$1`0sCkiybecC1^ z49W`IZWUd53qRg&9}GXeu3R=}ZtWcBpNzb4$5BLCmC^R&E1?jT^6IFx(nJ@mC+ENi zW5}++Y80_zj#Pi+Nv;(g7koP4$3e+q?lra0hET3Hn(QD($VhB95q?MChk7GQ zV0kv$h1_JxVfHjNwQQ8rwv{R6@iI@jBIq(Bh(|Fi!GQ@gD(y7U1@mNd!>43LFQ1c| z$_Pa)+alFvJknm#alz~TK5!(5S=Q7-8^Va%SYQVcQjs`hBGxJBp->-02`vB1bG=A% z*xXz}-K&<35!$vgWh7qa8DWX@%|j5*?Dj!ee?0eKay}iMtHepLUsg^4*^8INu;3gE zr@2~ma!gHNN2J}R^$vAB!O6Vdkl}8j)b}(uM5VPR;`_FKGOrfBd`@aA%@i?9N2;Bk z*e21z_32Zjrde_bC{qh<2+eAv#SUWZiNsbD@m;!)eW;-XmK*$e+9iiTF*UVpG}E?~ zDb4XRPcutgj?Ht~UF5c=%k=YprmGM66G`}M@;e6uc1rAx3kc8O+^DqIMDX_v!?auU z@;Rxg{87YJL!{d58CxJaF8JM(Z1a%h5Pqf>+7SNKMj6Hv`Ga0XB$k`#f?xdY??v8n zxj#>(jzXrUmW@B!wld`}Ugr5@i3^^T&AM=*^8j;w^`P<&iX~>>nXy`lE8}JhI9ISCXjXhD{kYBCggg0?}Z+w%K zZ1PRRh&c_@ToY{hPA-xJ>An6+xzYTJ8x!JbA0JIoX@iL_So%K<(pu5W=cJ|vDMd^h zk?N;UFf1pD4&J}l=R2n4Fb9}gXhVWjZM4}zblFI3H_-)W`=EV z(FGIUqpfn3!1B8OJk^rJFmGy#&iJEkD^vdBWu8Bl;QIG#GNq{S-@d z^4nsy5}kZA+~X_0SN(h3Jum3wN77EblTU)fq?1dk-Rb8Y*vYrFbK?16iX}Vw*bqdz zlRw29lBtnq{-996PCk!fVJDxgs3cWX#}XBu{1MM&-^CrgbSKZzSiF;;E+y8Mv9OhC}Q_B{lv~6V?r13Hz zq%3hcHV@x1liR$w&gR`-*BbIClJIvSF4u9&Av-1RCkY78-@>SLfr)qyuaErA6}>!b zDt}@GwqmMRddA8|;{f*89%U=bC5IUriTp)2gg>=WWe3q^BeB{<7ySEe+NwkeEN|=2 zQ!6zSQ*gl&4>JB1h+aM?HI+Y#3DsSEyDDHu z_KOx5dPFgjU7ZZMPjXqE;!>Y+NwqgEPvrGH%Ja6kg2I<wLkxTjWpN_tN4q}QGQqMi7Z)CqVpB}uA-|MA;!N}6itblDb)C8wmTLlEgHX`f;s zHZ~BhZY_$1Q&N|rl2lQ>yfsmM{#e9>%f7=L`FojS3H~04)k^Sp81A(d=kIU4cbS?^ zPobSSf8B~yQboG4N4le((`9QZmgH|j2qMkjTE#$o@~BY2Dg7Oah5Yp>DoGX96 z&0XU*M~{Tg_?V8%Zpa+{wmQYM-*jVn@gtG96C2C7;PzK>zkU04Jnr=w#s_F8?zdiL zNK$3!v_Fucyq(i!TPeo<7T;LDF~pE|TT3wvn;QoFet}}4+XfVrqzY<&EkS+%a72X5 z4lzgi=2I*|UvI2dg1%#MSFbpIPx9`cg}u_(LOXH#<|7I5@e7~7uDf*5I zF{J6+tr&)H9}1&>m|`J)g9=Jg1$F)JN#6sk5s&(tr6k;!4?ddiqyCqFM^S&x%qZ$- z)Vz(Lc9PO#4Ug!Ay(QO3Wq|xM^41KQnl9&$!WDpzUcV z?w^H9g``TwTU(Hdteq3zU!oZIPvRcTav_McgVrbp;t|>I^Rvm_6bl`+NKr|usCMzF z7T+J|?L?Ji%hO> zbj#V}Zm7@}OR6o-{*G?Ai@F?UZlYMq4LgSz(r%bq48wtj!PV_SvCs{b3QAH1)w&r$ z{l-A$WtdqCzeiX`O6Z2A`j?d6nh!3$NN$u*sk9&G{Tq3a<@3*jkl~J?lj&%t@@nN? znAY+TQSvF?-Ix4 zI^=*0y6$AI)2nqMk-x}>TtBIe9y^Gu$w=%q5#K%Y4_C{BqOnD~t-#pwf>iMg`VYEQ*TH=|Dl@v7|=aI8X1F#nnm6n<4f)<$-@VK4m zIwrWuV%Ln-L zG)WFy4W_1+jVRi-G9@Zr=80m7^UVWM<7auI7V?&DMew@|ZQ{dAY%abUw@eU=IiV4$ z^IHDKZUvf)vdmo8fcAwa_?tEDh7SQMh&|aIQE8irXs7fIJWeKh`JB{LvMFM_EmE!b z^md7k3s$_H1a(UeyB($$+7PnU#(*6}j78#H6R{71;Q{KsD1qf6Z+U^_`g233rk0It z+O{$!J6`6=Rs@wRhv8QaQ5mU2g`pR0TUFqe~<%G|>g~{WA#* zPy)-B`16$EXRrWJjzsmFVG)xg?$^ir9~hR3GrnG>VQ3ru~yVHAxQPWNM)e;Yn>wwu2ZL zBC*9p7rf%1RG5SkSU%jJr%iHrs>amRvhhUQR;FPWFY{r?5*MtV*f3im+AtgOYa3=C z+2&Oqq{M%3a1!p)6N4UF8*v$Nnw`^SkEIx2 z+a#9glR^;b#Z4b?iKRgN#z5fxjuZ1 ze02FVbaD8v*ZhYkTEwG17zd)#9ur+K33^3-6a@ols5S7-Oi2KjClBXKc%jcw~@1u`)IUXbx*-|Rie}08-hr8+VRCe9Bm+6-2{q-owim{Nvf#6SdX1n z!Xw>jSE7~Ku}-^$l!Tr3(HRWJx#mCgU-769#=)p`z(f~R-Naz*5xsm)YHBc2#1%oL zdh?A8k|EK-e0T$M3nhmc)YL*75{zo2eATe0Rz_lliTExE21BTqp#+xq^5?0N9Ogh% zQ_B{Nv~6V?jPWubj4W|EHqT{OOnJhZ^zELOJ)*?B~pr#hu5T4XVyB$OqjKmHT@mypdZMC5UmcR3s zyCjF<+0@js@kHBJraZ;VJWnifIW`aPd*H3i*+VB?N}d*&X*?7nC-XcFMWur#x?r-8 zrvcH!?+GRGD-w!W%SWo~d;E(;2ftsr-p4>Cav0o^$X{ebcv2gcb`a4KiB%@L;C=su zN(D+_`T4)oa*gCLJe!)LGoEPM%9N*gndgZmF30BKdyTwhIeTd5Jb9XArtw^YoJ{az zoQ_JHO~m!ewT!1m(aYzgrt(A)OR`9HoX6iPI{5ya=c!F{7~D-Qv>`mHjZQm==!nEF z6J7A8e`KNqC9wR8x7;H+j2xz>mW?Ocwld`@UgmjX34WYM%h`SSOQqREYwQ4?TrgH* zB;0aclexZnObshhOivBEW%&J#QLV&Y)pZY+ni}rqoot&Lbj$EA+KKN~)$1TEsSd)& zt;MO~LOZ9+o<%Xfo{Mi8UL9gc&kVmWhGApFfcu{m3ulG~1tqD1dU;KP`uv872;Bc< zj`Y1uu>^e&#A+qzJFKS^eHZbk!zubsp`AE=jfzxKMY^#^x}%*F_dh9?qVM1kLz=$w zVi-Q{6b697)h(b{NMDnJl2k#>T7&f6#Tv04)$HG-B)Snae=@i7GT&Vj-3YpDij?v8 zr`__LSYT)WxSi1>ZJTi1DSn$!wg5MSjLx;tIv1Y6kuKs#ibYZBkcrsm_&dkHG zC9r&sKTo~nFn5}oqO*~LwyjJ@ig=kHDOlos^QO%n`dv=mom7sUE9{Bk|7p49@qd4C z^vV7PPM&#rA=MlHX~cJ~kN1Wbnd_6mZ_5x-x{rLz-yx%)=ErZJMAUa(*ijy!SlCe}DMU#X;)!Df;`b+dj^wVyh@eHP zyX>j70)FE!SqS!kDmE4QrcR0St&z_Md)?^`;5|**e6U@ZL)bMPukYdzLH_WbvH0<3 z6l?d%O@fRln~a24WKF%F=F8%E`Ra^?Bp)9dl9VBt2mYq(ToJO@t?bWfgA4riJ&B!|H(d*A5g!f zSQsZQ3Qtmnw^IzBkCJ<&vdi918=j^U@QQ;?`rsEjG8QGw+j}=WHEgLB(Y4rQM&pN9 zlvi=M;H9hMzI&26oCV(pqL}ub@9Uc$Z+-m=tB~sJhu&SvdvClL_VtgCOZ4>y+KT(H zRSA+*30ikm=}337W-oYI$pE-ac@e}>U*A1Ml=fg_gy?`IqWe2SAKp%}(1&dbQBsB2 zx{5#?sSv#vPn7B|dkn3lyoi22Iyh>Q^zV~yjrZ@v!yNi|C!EH2?T8?M=>PHKT`0Ex z-3=N2y9bH(?_P-7zePm<7JYg9+Dv_)&hEFz17REH0MunRqnHi^?Zk2lv@2uksZM;r zzeJ28!DCw}5Kr99jkY*&UQRfgBhvJ>mc+gXKJa}<+UqfWeQh-M`Ci+AEv zOQ0EVXk6XK6bl2OL*YrP@Ge+6g6G};x$IB5>_?KMzqgPRZ^b*Yf{(5QK0L%NdYA|# z@#`Xrm@p#MhcDwws9khi;M$q%kQ}bGO)az`>ms$$Z3l5Z6p1}1;&*u%YN6hR5?DUU zpJzaFxK=hbwQTDm+O{%X7sbo`x`-usQ-avSx@gR~vM#FTx=8+?mK%%zN%M$ck7MvI z*<1||O0oa$YIX}0qtjgKU;Y`)xZOq`ybrFE57G> z&9gQyrJ0>;?FfgYZiOwW!p>JDnZ1^k7z^zblZYc`?+Fp5nXM>^Xj?<%>NclX$ZU^7 zlvE)OjUuy4u!b@F&E;VP3{gztEM&INDx{b_9yjxfGuz0Ue#K(;OxlXaY_GzWRAFxh z*zuU%-T=7FmPHUp%r=FH(#$@^+iS%TeQ=r3!I*uWVj;5w3QrvK}kISglf zIsp%W`%c=+7jljWCbq-6%N{OCdKxHCD^HN~yX+qc1Azp-!-XGyU_Jp~2**qOQ)gJu zS6ZW3rOYxO9x6AXvj1++r-x&faKUGUWI^$^0d$#{DE?nTai>*C1;qilCt5rx_82JD z-HxEGcu>q$#wAt8SI;DaVypphnYD``j)G#x5K%fPX7e^zv7mTiW*8Lzp;#Ccg9=en zg?RSzafp5$kdx{zdp@nCd>TwTEP2V-guI`P=wzFXI48}LIZ57~d)9v!FaC6WowTk* zjcGwU{?7-~<^Nf7r7vn5EaZ##8jqKiBbOV&fBz(>8_hHyym|DvvaTi0kT(|uAL|iG z`-3_dl0QtpWn(CbxKJihUs@iOF0%RA1#dVsby{vn^zd#T=;&I4B5rR)s;5ljj9)1_ z_ZOB?eZPeO9?3hGiy@@WkQy&aL2`sPb&(kP5>?fO=TDG+WZCjbH zCE{g%Ex{7JO-P!DwZxp$Wi3$ww(~&+Xv@zM8O*z_{}`?*emGRz^A-Nj2cP19>=}-l zvAcgW`R$iVj9CY~j=8>itRya{nC^hJSj_h<#@~qG23YdTiDRvn?}f+r=*G(nxXD?( z7rycz?S+rg*7yTxE8Klqg$CnYae>CUq#Ea!EsNJkdnl`fP~OT*bJ&0vDJC0m{y9A( z{ie{pA+~gX+&+cv!9%2-A+|r$EJx~7C>D0gAq6X`g8iVJbKrHXVQkN2j$kjMm;`H| zF{vehUi9C?tU_wIn~2+N#fd(bx8r1R8UNM6iFT|=TXBvTDr`v=_Bg=K2M@5O0GK~L zq<0?0B;she+do8?Q}YhOyni z9KqI6OoFv;GCFMCs#YP@O}4|`x8g)k;oUQKlV=V}bdzVNra7)q*pe#jr2#u1w6mso z`bt(J;ylG9;;5U*{XmZ>P4B0Vhux$$iRcf8$klC1v5?tHg(#^)JZh;h42BN$VcT52 zed67}C<89@D#cPxYY7phowiGaXe#Z7h%TZsF}T(qw~R%+A#0srR1b8`*Ul7mvs(b*Q}EMQEocOwt0M+zm;;qpZIhE zU2ysSzTceiJ%VNY6>=h1=Xkz;1j}{}CoD#={D5oOXfD0$DuEOCQ;m`!sgiK(65^-L zX!`&%j|)>QB09E<63E-t_A*it+g-h(93wQjP1K;zj*upeF58d zrzBHLwr`H?Yx%3XCny$ry;d76sW!N$j9%ZDw$1B1GRFqhQcN{yrr#l7o+xDuTG1+` z`qNgp;a7YR?BTDe+1Mxl=o_n>qfecm_EWvWmQ-Oc0oeH<&zb_@GFBquizy}%M}uH> zh$v0}rV*melZdu3M6PZliiONJC`3sW;$e%&AS#2aW=V65*=fuX=lK+qIITb3v#%d0 zd;tFYJeY9VJ0(eun%bW>H>*YZ(*qr)T(I*);i$g@&-ZNU9`E_+5kSfIy&dg8y;NfVsYx3wsWy1h&-D5dv~6Dh<{WLR%M4LWHE8DK5i*KC zvX7_9W&5l`sy}^lWhrNN;z=c>_XM;0oEAFReg)OPVzWXQf)7Bw??F|6-pNb)# z@fhy8*pT*eh$`)Z6(dyd?49W43;ryWaE^L~Vqu?}q%b8_m?Hsmct@N%AIzjZ8>251 z8~FVxO`&^%H(5w*(wAo!@r(33{Jzo61^Y(%?Dn)~tB)ONEwc@+B~~9RMl1QpXf5*q zt(g+;S?Wq&e&T*8zCZc#Uh&u;KASk-lcY%Odz?#ooIl%k4;v$QL-X0IY0Yq6OKX`c zXw4vSl@!CdipM#s7*6>m;EKTc4Bp+C8P{UZtsKmsre)<^F4&UREtIPbxy!8KPn%q7 z%{V;3Et~Uky`K+0+cVzuFIw32k0mM6blhKywO4LGT!~pTAN(_6YA?X*@G)4mplR1q!Vc|IcEKE&k#tC>D0s7R4v2;`j zO4Gk%glKR#9}T+Ld3{RA>>P@P%(f{+NfqJx$VnH~6_d@k}J z0u+mxaqQkiS4%JQvFce5H0S4gYOCB?c;`c_z#~U=c{{9lG5RSRKb>9 zyOJQOlJLuS;-@y6x8_Wz`Rr7hFV>u8tvN39OR-(B88>08+4|E@Gp&7Tht9Y=Y~M18 z_ATq%x8$$4Z>nvFxw;mLgK=E6h|+8x8XF)7Co3aw!t5p)ZBNE>E zTKsez&0BL$p!w|4G+(Sa(`gw;T;>9bDUuQ^@A;Qn`_c~m=Urj@hIWd#?~}=F-}{o3 zZr@VYK3DhOOQ?x8#&!)OwryDaLc_Fk*Q=f8dbGiks@K2xieCRGyPkRdY8we$W(LJn zgY-&v2cqnSt0!57)O0gBZ;eg&r#bw&Hm92(cT7a@>a-Q_PrV9TQic6{z|IG=SyKRf z9QCKSeziXx79vX1zf*+hxFn+Kw8;K+0mZ`pG@uYARftzCB(vjA5nmXyYca=AS(##* z*%rJ&B_9m!Ae2bMzBpN``>2bLRI5xc#q33R9z(my4Kx#uR5#LAoY}bwTT+ER|4U)^ z*bu-;2Eb*Gq?kfH<0)K)+1OteqDr&-J#V+s-^(RYEpMn?-4YZF*&S4vk}AwC0dsf{ zoEkIw@$48z@uAF-;(aNm0Bi8(wl|75u?nf+y%%>Ii%--OqQ-1XGa<$A(5Z2X7btc~ z75ksR5Q>)y0o)b^#ovnrMKl@Q5F$#``@(IZ)9)xk*nK*Vj;al3QCvXeghp>N40q^^uHMt_g zoOlvOjY&Qc7H}yySBR^SE|qajHfGfSQ^O&*uK*8Y(QPW29(@an#l9VJJv#t zT1ho(*ZwqhZ8tfDlkPAVMsUul^Bu-tYMytT@L6}JB&8?Y*SK}dDd9Pag}rK#;*(VI z{pAxGw0@Me=+ZoCFT(7OnET@+{1z9LqVf~|&YENCh2Z#N=U6h98j z@RMUr0kDYyaG5HKNiRpk&pIKZG@H#4qH#$?bLdtQ^@R6u!K$QOAxf$cn*b5fco}P0 zG)`rX9j%385~tm-x?^kKJ#c+y6;cEH8yA*hwv)dAC$q=UOgOMFO5qbB7TZu5^==rK!_;K>?#qWm$pjy`V3kmv&Z>hEnv1%Axf$cfB9G-w$YRf z<}%)GEY)3hU0U&@O*lZx{;N`QBvo?W{Yc0;Aq4Q1 zF@o`rViIxWzw!`K+J6%xL@Ol`T|tZV-!zJaLrAqklvE*Z3yA0$XB{h)8?(nT$2dET zViKn@dwH!fTWb|k%=TVTirHK6w1_gh2hD`cel}5{#F?#8*pe#jOFk54M~46&U?n2H zgJKeK#Oz%mqBOIsM~EK$eWGU^Y=~UlJ`@X?tyPGUD#Q;y5Qrz!l=X~-!jsDm$LNZB zMn2d+q5S?aRDMg6RBxy#_dkuAjLV==(~rmh@Zm~FiK6*1V2+IZ??^e2WW;1WBp{J@LK}v{wjVKLg-04Mh+~KKvv^ zl=k7I2+?=r6F&U@2;qRe<5P--K5S5kk}AY1Km@ZBSi_jzgE=x=Pq8?&XAnRy+&#uB zq?o<&+)~VT;UN)ac3iR@bDFgs;jTlY!j@EFANQUx`^^^S+N)WKh-XktB954C4-uuA zT{A*-E$xQB-o_BQy3HsSGTWpOB~^$|y(>jk@15s}uWjCav-En#P za8bdrEGMx958>a#vEH;K{45S>k0qa-01qmx=zYpU;nw3zsmXJd(QLc z(M-tB^|Tf53C&7|q)Ntv3xtdvLjcDa0GBz8ViIxWuLU8Zw7<^B6Dt})pZ+e<6P7nb zxIU&>=&wl%QBsAt3Lv5<{FXJ0*|nJ?v#U@{;xuNDCjjXQ3$2T%nC&>b6tj=vK@@Gr zy2*C@qhO4gtgt0j*oVI(%nom6u06#7xXjVNI>uZaB1$v6MTF=w+6{fZq9Jm1%TO$2 zwnZUIst_M}o6H{Yr+Ccn${d;9hGKDME5e4YVii)%Zj0NA#Wx+!z#}lq?9(-g2zlmE zffA3|R)sC8!VUl%_kUSaTsw=EhLTjHmWH;p%E_+U2Y zJxPi-r@{87U8as=iloF2^dVvU(heQZcNlP3oJauHzDWd7cLV{HY+oPuZ#ZW^K(Wy4 z9ok??wZSL8Nv}Vd=uZz=_rUkTex*P4jVg~RAJxuhWKf_5I|r6T;_kj+MnJE5vA#$cU6e!q_*eE`=zmLR^s$ z|3*``qJ2!N;!@W4hzw*DYK z1c9Fp;UY1+aadU%N*&uIXUwcGNpkX!J#KLcx7;$V+;S^C1HXzOFFY8?2hVL{T|=&2 zXZW6eNusCgC20BZQO|Q%>(+zh+%}?I%N$3(c8aOaq8r3V>v>%Ec&m_#t;ediZI<_vJ6(Y*h zZiwhoT4b;N3&p}-+oKRARfzY$CJ^ftq91j4km@eGHLX}|$*AjpAzLvmTPFH0xSHdL z`6F+`n#;6OOt#KeB`#D3mirKDHtR3n5c)Q@~8IAPKlkIrf;wrrInX9lRRoJJz zBFz4GLv!ulEp}Yy3W`a@5wll@h|6r!XG@wAr&;!o>)=li|L z^Mxn8|0_n9pP%yCm#AoS(v|sc;k2T2l5AS)gM`;7taq|f_G(tL5z00!Kdq1- z6`qJE-Q;1n>VDa#-v`z6*{_b_Py1)Q3r5h%JpUF7&qc(}E<&t@LRNve?6p=Q6$(3^ zSSl2jz#~H%3Uk&=gu*_w6%U1l%Cn@(^T>I^^A)Tqp)ke(xXh>`h@(!nS%@ed3TMp> z5p9!1^eDOI@O2Nx!cbVG5G7TJ$G*r;R<@sb)0qAGkCJ1^eoQeLvc~Mg>)Pls+bX1( z9X`Gkvk&0$8fEqjnh6JsDYO-5wrq;tNsxFM>E?_O%dEn%Qv? zqW9KG`1<{Qg$^=1NU@OFa)l_VLd*anVs?WBvz5$|*$l#E@b$PhF`IX`8ohna& zw|<1TesFJu@titr-#hGxn_ddztL8l*&2l{ zslr|ru=BwUtSQVMYXDs4P>M;!5wqKdh|poY>d0eKQr<tT5V96r^CZ_r$l{ciE%QPW4^ zf4Js6v4Gc9e09k3Wy3#y%d)c*J?8}L2rkq7D?Mimg@W^2g_OIFJi^FHUqyD|IUSux zKL3rhD0J5s7N_A=WV3Q1sdBMVzqspO)|9UMAS*Gz?xI-AU5z24w7b@f5FL_4bf_V6 zb^B5*bk`(>D5*lc_$kgKi@8r_^T=1WYlY_vC?;`QM|h^vIzq2iNHJU9T#DJlE()2Q zN;4s|XV6x>BTQD-_w;-5KYG(UJIEQ$zb`V!IDCp?asU2r74vVWRY>`_ z`Y>ZN-E;20Fl6&ynhE{8KW)YR+p6SAs^oq7g!uRD5Wrdn0Pn{wf;jT;Dj}k@f5%3M z)=nbo+g`|_e;=S&=-)PlD5*l+lMr9cdXD^@(<0UJd?c;dK*#$#+3TRlIpaCB71teF$`xDVAs`*ZDrqKk#c{M1 zcSXClQ&Mf`(S72Iw^z1U*uns~%tl2JN3O_+h|;cjv^7L@G3|zkUgJg|UGW^nLRWMs zL`fCm?AaW|{>K`|>}R%T=rZq8EFR=R*szDKLW^zEv%yub6NfqL; zy=1nNHH_KIZ4=C8E}>YQ+1ppNkU7FCq?jF^P>R{t&JWvhG|hw&lBKOUv)u|?Qia|9 zxG=kM2w*|9v-HZZ?kv3)B1$tmAwo27bi&tDX_3sfP%LD&MrI@`L4?Sswj7hfR&3YXM!zE3x!j@EFANZIsyP(2c zdkZUZ{JNH65^)r>=Y@#U%&rz8YNOrI*Si@aSGO(2LS_dPqNED(-bcr9O8jP&ytQn7 zh3YTl&XQdvmz`|;OrXs!)d!NQ4}SZIgvo=fDRKHZD-rR(DJBs|VRB%IC>@&A-nNHM#@ z0i~GT3C~(-2b@MTVYvU9w&Kh#P}q_x>{lKVX7>pJ>}&vBW~(BIBW8cv-w>slor7nT z6wwdMCwx7`T_g@|^C=cGJERaLRfxX>L=0`uZXJ)=N0}qD_fSkmfW_>^1Rx=EsZ~fZ z`|tg%9qBdaI#D~eOSYq)w&Kh#RM?U#>~kIzW`hvGat6R<%8DS4n7uJXlxDUA&nPLg zcP^J;_O7k87rDBdC>AoiNFhq95C?k%;*m6E1J2P>-DUqoE8sUaq-{h++nZWVw!^S~ z_WNwfAuV=iYN>?vrM>mVe-OBF>$0`0@9^v!DKCk91pf~o`QhTl{kfI#B1!qfeXBNm zWhGwgEibY3rR`B^tBEcc^E;emT5huFYU>UDsHduHUlF@`OD_AMsrszd{C#{AwEfP$5)>N9r2yDev z7j41DRLcR}AKaX|8n0Gs7DF3CliFyogLvs^BsQApf?e=r4bFv_=?v-vD1qg({dtBY zhxgH%np!rRXxqw^rg)jBi6t(_=7FYv&J~)fKodUWi~n=IXRMbeZTVSJx^>@_mHUH3 zmmbH@EBG#ocb}B?=hnkf`2)V+Y$LtA7gL^qZaqHwJVP5~C@kVQ=qF2jqge|3a~(*; zl(0;-?2CTngq;=Tdkr(LmEXhm=c-ociA1b`sNSoNN-Irt!JI7^ie6K<61f3g8OQGV0yI%B=Q&85bvptCOe3bjl^aX@m@kqnNV*;2`uORc_vE^qnW8G zI`bZFTbX(LCy(IljVfiza1Dg^&(gsHT``2KYWaM+yz5BGN9@u zpj`G1=KAU}3B5ouy#&xNbPzDUA7ko%0dQ20zNhEjJxVPAwm((;g&Q6C%nps{ds&X4 zrTFw;cBbAlN2+t{xp!mLk|%M%x~ZMqW!5c%HTpuw%^{kR@Jjq8lP};Qt72$gvJEg- zH$bs)>MvJ#k}ACUnAQxQzm~~MWtY8(Ho$5)@r#GVD|W?!shW9C*9{|l6Q?m5e(Psm zU#wLdchqR+=%}SBmT(jY0GEC5_fpv-z)kqjQ6qOR<)}71C1upmh&rl+mg0`8P$nc* zCSLj%nb4CTV<&f+gDEDlMvnSvH$#(l)RHC8j5IX3f4HSIvCvVK3Qtmnw?zz|cT}HL zcG-t%Bkd^Pt-`Nn2?;kaG&@~o-Du^54^nCkvx z#kaX$Ie_OoHeqhStIb6se~}Ftj@8BjJBX<<5{FE5!SD8=twEH)@=xCKBFW)B?`tG2 z+i*&*|)1fbntzfjo9W!$zd&KYM~9` zPi;)HgP5Emak7anSaEOKYDNhxKe91%t&+oX%GA`d@kiTMrqfxx%=5<*=bH!qPR|N| z+kiiRg+LL^<##U6^-ftCC*Qhm-Li)=5(!X$;xGJgYL7ucXbLDfiuG4i+HIl>UKmF{ zJ4G*_lbXsWMSSTrQvHu-aIWaM;L2(rLz2Uy&D260!l&9;Xa^BpYie}iBLG(Fg7@~M zts$}Hf)o9D%ApF&6;?wn8=tgoWy)u~%=5_-mt*rl(4M3H@}Tkrp6QR9$zWt#7CSN5 zSC3is4-}IF;Ha5n5w8Ai_dA#Sm$!_zDt=}?)@IfTJJ}GKzO-Ho&xLWo_OBD40z=`p z#S^m7PHYHO>8L2Fj*4sEHYNq)QdT4Gzfer#KEK6Y-m+teDm`#tc3f#x;|!InTZdxd z;9adSB~_Sb-I|2y2k>`)ixy)2B1!5ZxFRP`@iXnAv+?4^;NKg_`l%vw#?NE@owy4( zk#AJui|!T@{ka+m5+C0UQE9D-E;vO_g)cpcUY<2IzQqV^#Z*7Q`Jmb)2V8Lf`ph+Z zwMj_iFR~%=tu|WhAbNi!wwmaIbufQJeKJa5`BHzLcFAGJFf~PI@lD%Srtuvw^YN_+ z2FwUP{3d1vDXz<-(q0o?Fn=R5(k*)VoYYiCC}Nz5ROfjP7Kn}u{;?igF(f(6ET$IP z5JuES8Kz13gI+}>mYe8;n%!t?k+=M3f1XMlM~x~|Q_IE(ZCjZ#5-;F8XooXh#Ra0iq(ILDG{t_CrTu@uyZwA-}ap@~%-RhtbKzD_Qcee)(o zrA;Q{`fpQm+#q`SoYYi~DPsDGR8RJ-wup`k>enSNt&&4DnObN=I93}Sb`Ya{BzBsJ z@A~XYTkR-;#4y2`4cT zn}%;nNvdP`y*F|Dc~3hhp5LTc>a)}DhZxfH%U;DWe9L7#Fu1zm5?2Kc3QAI&{|G9_ z=s@f}i1w5{TrRB|@oa-zo$oFoMBtY9% zXMj$w5<_%va}^RVwm_6WIDJwTC5eWu*JOY;p#;GtH8nsfCRBT?7)EWP#IrL0+gWP zQd7yJh>&DTB-Wbfg3WfMt!k9O@{itf zgXA!{o0?iS@@U)2l)QMECyymAsFcgRaAi4?xxRX=EEmi5OTnu@w0FP9gMLg%^zLQ1 zD%HD}X_l7APED+LUqd_b-rWp`N$-|aJJKtEXYW4Q&grs8Q7qNF@hb=&VbZ<(s>6$5 zSj8~7y5%SqE*mE)C`lDmJwfFbNLUo<-LvJ!#?*N4{+EOvL?*bxGbr(Zd(#aX`tVi0i*db&98} zN_1SX>lik;T5_0^O)az`SFNS;VS-Zv|gyvlX8CAb#{QOUzp$3Fn7 zFcJG>S&~;Kdbo2ViC;BROsH<+8-?w8X<`Nn;HOq{m@kmXUt~kbQyb_g{vhHg5}QoK zdx@|Df_ei=VEH9)d6MKX@R*vSGxBKL%9Ol#nJ14WF30A1@^;%x&gI%e@5w}k9p`IipiaVVmlnawJNC{j> zqzZFZ2j|aC6AV`wT`rUT|77@cYg~%qEbg8bXLygM(hPfk;tY2wbV(KZ8&{N{=l%2|J^?>E zH`#Az-n2%%v(I9#PdfW_ib+DBbl~gEB|E)Pay`4E1PiK|t>?_k+JQRD>$C9d# z_nDOr#rdmCD~Nj@#U$>iv!4;7N{8YOzk=#~+GHr6PO-4F_bN|W&^uGf5iee$da}}nf3UikfOuu2=Ee2fnR@wp62+Z)O8;Naj zuYQ9x$7Qdv2FBI#%&5QrF1-c&%Gsqp9E;R{OFO=;?@b-(P3=>{R7Lj552U*Pns#CJ zA1aAtp(LrDZoWD72e!zze}=7nF7r0Uq(_QH(*0H?)mPufU9aNP#!i1M?XyX=7LTMs zb&;g%qMI&DN77~n!eurnf;)<&fe=+XlJ4KPG^%-IkA1bDVqqjLP?(Y`%%9rXS7)(? zF?@+R!e!2-_75eso9*-rLePLA%AeZ?M z#U$>C;fW!tG{Z;#3aZJpNrsQ1Sjg}~g(<1Ryk=$+rtdN9i2;{ggLcw=Rc_?`^7?W>U)wD^cH;}C-}$vav$i+Ud(twdrUqNa)0m;{+B<~I3Ib;x7F*hRK!Y% zx_GFGN~=tC!BKL0Jh>-&dDhg$gBXEIx!IqmMRK@;G&MzMiwD}aGF?2x%lzVjCC)bwi-%QzkO$qi zI1cyb`9E3%xj)!#!B{@e|S@_oJ*>l z&!3LzK^y6^Gg+li!uTSJNvzRRPfLer(m_#M0?ihN2H!`eSQru&3Qtmnw`~lb4~WlX zZHeFC+iDXug=-*sFBTBY+ape%8oG0MeS8oP<4M_45>@7?uSaN%xy;8Dla04Ny!Bhw zhi6-bR3APL_u-1W>i4|$%|86?n_?#H!&7K0-iIrd4M~-anrYI9A7V`zMCuIy-oH}> zany$o3K6BJs+&95dF_rua@dAdpWHj zxaczfdQuFixraueXJLP6g}5`GWR8*e5XIuoxa$pb#uZi}<&3x1F6E4e8noZ!#~({G zp)(q2EAEVHZK0lswtNOvPW}|ihL`X^E?<&s zMC+a3+Cs`@hAE~4LWfbF$z`83bsrAlF#0_1q80C(5Az;3dIE+~8qs0&99oJ8L#;9` zsWN?Kj>D*)yunV6_tO@^8V#e5hiKBFuv-ZjUg_6|g@I77@FZ1uKU@^S^TX)P zevNs3ku_!o{TClb#X~lXdTQv~;dL>L=7VSOjsPDjz51d7JV=Tf3>6W4sN57D>_VB% zx80BtDm_RvR76Cmh>|?zKl4_UV|e&BvEKT~mQOD8X3_PQMgxuE{ja8;iiXG6C>0GK z@`kdH1{%?5IEj|x(a@lDOR99YO(orW@~!OT`2BSetWh-F9imA`!|5f^yc4anUM{iD zYE*cVD!kzfBX~Xo%%rD+UE2&m1e>* zekt0DJF-ccl2n;`{4X-b?-l}h;YYzw#Q&j~L>!IrABBk0u6%BXaMtYYd0%INfqMigm?>0$rvwR+Nzf7F1t3Zm^=N1J1w~B6}sZ+W#ZHAfy}XCdr(X^ z%+@~J>1kYceXEdi#YwmoSKJkEZXY&$(Y!>%Utd}$w{W34N!ux@wsQ;oOfMfi#+too z+&@@}h_9xYL>#%|kPuPY75herCMFT>YKUCjHWUk8Fst_-`Kp?KB5Pi@3IbhHF zUXt|n3wqV);5ks*AB=f%Z0r|QOJc;tpxA8}xc#|Kx#abwJyB_wiTHhzz{I#KdU@8= zt93B~TQSvmKLHC@aZd(u|i8Ex89NwuZ_JSW~#d|$x;;QPi!5J%3K6Cz4GAy!Z1I~Dx{db7`O3?5A*AlY{!bU z6=$|XVN0s8_xf{^+4*cS0>@?MQB1}{#OxU%qBOJDY+Z`k)`;0DC7A70h>|MA+s-Dl zJF+?Zk#XCbpoS%nm{V{z-XIJ0kTRjM65Wf~#j1lpyrB~{qpv?Q6G%1T7s zLNSRrVs=c3D9vnRNkkhMB3HK>#lo2FR)~@+#701r6=e5wTtQ}fnBp4?;kf4~)vjMS zsN5h)dQvS-zC%d&(CsIwJ9rDP*hoU zJpVv3NpWFNd>Ly|{Jq1gjxH4xuhfc&x6e!l#mNT1WsahlL>vW0 z5F$zk#U3RQjW$HCZfS~zLD8!aB~^%9Cm{L&=>M5M?Uf|$)8N8qlDopEAwT@|Qk-aJ zu!i}k)#|&<6pG2#7W!u&tB~rnXN@Z5pPl(cT(OB}1Z~CrGoX!^R2#qTl%#*=*cFh= zJW=G5De})TA)>T@9_C|a#Soopmqe~^BE>@g%vFezD#UBgh(q-L*-)zE`wFyzAqI4X zo3z0*14;ipggj=d)4vdBnrn_>j-%7T6#p;RY+)5ru6Zj{$~6y-FV%I1J{Kr)*9>aA zCDnG{bb7qqE_*L45pfsAB;v?5&xDB5uBj=B=s-i{>h_>m=$ZuzQBs9imVoFNWXnr+ z+<&4KbB$daUeZrjH2gR2imjMq!+uLK*|5T1vaD4|xnf`3zAHYpZMQ`!S3JsPdfXL5 z+D=Keot390UD3u$M0_5_B;v>w+l7eIuDEaWQiwJ&M6RxiVxcP*Dnv;Y;*?Y45PdIs zSJv(L{hzJm+AK< z^e1pV6kLS=asN;LpCz|4MQ!~1xDA3I862;dW-d6HEwWd2EW!cXs4J8GIK0QkE1*lu zm0r0N;%QPOx_c)g+Oz@H{KNBdrr+X{HXn43u${syA^A5@RHFiS3Pq4Vyq_~X*oZO% z&;%LhYDS{x5)nIvq9mKj>tpGV6PQSyX!Fk8)cg6u(r)~3uaCGjv2wfC7Gik6cF~oa zZYA<;E_```{Ymd{wWRB&I&d)OFov9U}ex|O&NEyY87k;aXr8aH*PaIa2J{$;dg z`=HpG?Tnt0Wfgb>b#`KiCLP!nCD2?Et=OiOSh1D0=q+2M3h(-pBX~Zj_ms*myEAR{ zC5Qf;cm>|!3+u3IV&1kAJvH?2@LK-<+=B1o9RMOddgAH zE>p@;Pva3f|Lc+beKewunm|i&N0loRk}4BdoJ1z{3i4i>SsHsxfWzVIJw4=&Wj*`4N%2UI>Z$<3&cvb{j z!$0tY@AoYpt2YI1hvd6@3l6iZi{QKZjPPJ9%B-umK}J_^N1|O_M09mglA8iEYB8Q* zGhrSK$Gcug^QJ~%)6 zioyAgB*L=&8v`Vny`vG|R8MwIeh51#k4frUoYcU80$A6TlD97&a&t&gMc^yHuaPZ@EU_b4W@M!q{b zM3eU2E+x=hPJ0|!E}>ZHyBdWjslxl)qzIn(-R@G^Wp|_vL>Xub7ys6)!Wlq%nK{Z+ z!)`xZ{*%9%bloF-%#E+|KWi)W$Ka-TNwt*RfD)vcTOStP{WH@(Tu0~rjxkH%)lrw@ zf6+TTR&&(FSK-(8QhJouK0#~m5!RjpjZxE2!T&m{1j{_c_3@;S#R(QZ2Q$a+v=7Ck zOTu3(|1MT5@q5NUEKw?O`Zuz`iT$4OlaJ)=@u;a)w@9jP366zZT<{omffUy#6ifY{ zaeRm&9WHwm!!Xe>xVl3q7RE}wf|680O`b?l8yP69Athw;*;S=vley^X2#ks)WogiX z2}0cSA5bp&1qc*8*VyA9$K%J#YV6}>&-q94zKYp(+4q^FTLvkn-Qw>qo(PM6OaC6L z;QMv>NZvJz*C}z?Qd_O=$&X*3X2QFRAwS`$+@N$ws&pK246X@+PaiMue2K?dig_*8dvu;#X^rYDnv;Y;$ue(#0G`v`}cII?y^&9 zCDp&hWlmh>*WN2EFFmLn|05Rv$O_hLcCzZYe?hUhd!E1F*jdRcq}=l(Zf6z0s=Sr2 z7LlEf@fXufNJjq$=`PfyZI@Kr-glI=ea{fU<*dYjx`bj9apa!i5K-DaYek5@y-ykz zA{uXqT;0YL3*FPK5G7TJYZ2nDG-VI?eEL4!^MNDVBFEktNPI&t>=i zH@t)!j!*rzOXgMnFF%iFCeUChKiC#V@HI*ldc;qEgZSl+uijE6* zf15llkX(Om$kaj`!jsxqWC!t+&<#kZR4FqNzh7O7JT3H=tNeK?a2#rtrlyvSC)&0$ zO^bbqcvPUd-Pj!GL%#Q5|kd8!w^ zd`@aAPZaSh`AD_K!$YI<;B7cz$;Yn>&+CfA|BvzS--*=Re zrwWw7a;ra2jpQ(Ln3|$9o@m?3l&5%^=ZPgQ$L6{0#dmq0epy7GCYfoxd`eCx_%Vb; zrOhU~U^O34jiQ&&NloR6A~qx=)o#yBtLV7kLcCG{RJ2JB3Mn;KZk+og=QM> znUa%vo)$%=Lnh)q6R$I#21PH=n#z+HfvuQon`fqcBOGwS!LPAx6_UfOghc)#8^V*? zsJ4TMj!3LA5$_NGg|@0t0?Rf2JoS>p$YE-V&Um72D^s50Wu7ONxE!13vRmHadAjR+ z^3-Cc@wy{9nc&9|5|vIi(FLErM4p;OFQ1c|$`eIIVWisbnQ0dtte;->F(5gNJEj)e z5T4XVw;e=uL}HJLF4z`JRH%2M1eR<4c?Kkhk;Bx~vhhUQR;E0~%REmkaXB{6WmmY} z^K|5$cniaXulcKs-6c@MtLJT)>#N6R)MgZut7^Tw6g+tw4Dpv!%UOlgb-*`YmAVeN z8&3f0MbY^*6Rx@+9~3C@OX*3v$d*(W*$*8g*8w|)0H(7N5nn(ti8#6rcsE3pz7E(h zLiE|K(y$QGI75W@OHwSn4w$SEB~^&465|2sd1={#FO!6}A;zD_`V>;B;v?14I!emW3I0ZLuJ1tqAO^TyJOQR7CNR?Axf$c z&p&`W9tW|8F}oXc44`c(CUF|G^ZsceUuhLm%$9vwirKgE(4U5Uo@T-Td+wEV$hRqM zNfmbg{=)3OA%Lq`iHI+ym_!^g`^6WAD9!Bt5u*RzlJNCbhRD_ZmSQ2Z?Fvy+g}5Fe z-bGUu@(W*P$PY_WGUVmbHy=z%RD8f!>@HFfA4|IIbKWK`+n5uR43P_Er1XP)c~rW{ z22QM##S-4HD0=yv)YL(qB39v%>NziRD6SM8++Ur`T$SXoXforW4H@LsMy(yh)E0^L zCgQsgKhRbUN?>_if1XCkVcBD9YS{*P+O{$syjK6O{Nyw z5T4XVuN}nH7KsBUy5Q9BX{!e%u>7O9JSaIVdrVC&8&9-tWy({$%=5$&e4B-qvrGKL z^K|wXO|B%PZSfXhj{#Wv7of3ZjO%u z$zjoC7DF4tliI-7UG2k{tH> z#wk{{Y&_Anl_^j0GS3rB@PPta&K~i1&(rI}>#2e5+|GJg59v*hI%tfV0m+Y zo>s|W(g&(qyQ-r_}@k9|5S)_WDXJ)SGxL`b9Rfx6?N)F?Wsf9L#C$+KA4k9`>)#$*A!%AJS zJ(j;v9}-(GSk9lP9ICKfVKvmU@kHBJraZ;VJWnifIX2H_M_=c8nucHNz;wNt#ytW# zndhk?Dy=oq1yB8lJXMPx-cBHi=ZPXFvPks=&rFl(VExqZV?c5kcT6p`Av~##7CVUO zh{RSCUGRr5X=^e{V0k5fo_5J$14 znLOSQ9}yh)mOQxk<~2C#f-_|MH@s?|$Xs7Nu9^>_m|T#LnpuknT-3}uFyk+sYpj;P zjyS$YKYi5mo~_!Kqf>TTuZqvdxbe3vr`HjWNx_Kmuj0qyv8&a0WbZz4{oJ7|bxC!l z{^tg~ABWY0t604k*J?MjCL3@K#bg7{Kc`2ZWcyo)ZDb1Dnkj5sC9&;j*j!yL#lp*q zP6aEef_;A15bP)TExPdL?|ObaA5C@H&m}2xZ819d29pW=bmEh7KOM##o4FswWHZBO z1GbFSN<15|#=E6lv-wDMP5fQQUr4`6IHXJ4D5_s-X7wpvD;}J{zzUo()({O89KRQh49MRp=5+ zg65l_iqm`*bENrFiX~`1B~~jz^ZmFp_F#YjdpO+#-YPHB#0_aDzCF>SEs|7Qbm7jV z`A2iD%P#cMzz^7ssAyRHOhazo1*cl1-xFd;)7)GP!%Z~C4T%nlg*5jnC`lF6=Q|P9 zL<1E*g0a7pgpXhZ>tD&oE|$blH()~@?pex!#cr6J8-i5O@$3kyvgbzOOe-TZ_EqL;QIv zaU7PbOieA@xJ}zursH;G*!l6yu<&5r4fMc zKB*#It*T*~8-PFko4rNCTW)uo_WICfJHoS=@}Q?@X_6{(7Hld@fm5Z4*rtr;Jz(b;kO;G4)08_+8RHXXt!wj=Z(Q(164>4CIIb7|U@z90@ zu-d4#gXp%ASZ^YpYk8lxYES~pfAi;QlpHRQO-(KTKhE9+zOJczACGbfeXpdgOUx-n zQ3OS(5VXV`6rofMrL-zF#vJsLxON*uy)lOxg3=mFl#)hi)X-48G3Pa=Y6wO1n)+Ys z*=y~6&bjyc{yzVHKFwZx-@Vs)_Ophw&pzj#s}2m^+9nPhZnF-|EwU0%(3V8QsA3`* zlQl;db8h@#EGVnjqtKN$AJD`n8FZ9-YN z%~FOI+TVDaX6dfJdQfXGC-?gV;y=Xv{cmwBv{7PxQb)yNevkKZ#e6gFX8X9Rf-ZL} z=VT}h$9%Vh5tkB1f9~O8etidJD}`bb8)cb*kNHg;ws_1J#jw5bW+dic;f+|n5HV$Q zA!f#WkAUS;z#dLu$tBsDB<9CKt;YO0tjZ+DLu0m>FS;KNT)2~q`8*QEfs1@=zKSMz z{#iJ1AA1XJRC9Ohzz}I`-FMAvg_{lKKJ+_{&)7KS8lAMYo72G#EIKOmLyBN8R;p-% z$7$_P-OH(kG`Bp9S~b_`w5#1jvpO(zYnwQ5xXn5+w@A#dPv2W_7&VLt#$?UW!#L)@ zIv$iY=}~AmgpX@uzS*}ns%V0Ix>Z7G>$o57S#x12gGdWP-}Np_(roTSzdtw!6Kmxf zoxio4)4`O9j!ylMBG`*vDw^PqPob-WT1fLKdz>DwQKHvwqFE_}Zfz6F!flo^w9qa) zG$&twhmSMAXWqTwsd#7ST7@JEPeXlck&5&@(=*^HpZn3CH5ZmAh_oQ|T`#cAlyV>X z{g9n6#HsL~I~QM_2KB0ZO59|o+X7Sg=2Jx&eRD7$Mn(X2c{x3&pS z;Wo#(hk1(o@z4xJKs&?dEhaPokq+KP2z)VvmaS+@O6Ju!~wq^A`3veO#k`)Zt=u z(X2c{x3&pS;WoB=7KIjfy6?#y-qgO)aGPFRQtZ zYm_;(n`l;^pj+F7r*NC)2`#kC4$aAnaJ@6XXVfvYE4neizJc~1R6lLCb1&;uZN7E3 ziiGoVkk!onXycj-OBO_0armx7?Ib$65B+}76CkULYm|Jno72H$iH=_VkX&RJmlyi9 zm7c%0Pc-(hE_zh-M`Vy0uNn3b$FZ&_Y}7teLXY--q#5#38a3amIDw zt%z>^@-;rAt%xb_*so45c#7z8E1G9eYcHph>!T3kE1EU284*kkjf!lbT|js5vR}BY zio5Hyhzajg?hifTrAx1@2Dp^fz&<-+uWAE5rb!k+%(YKB*xxEOy2sO|*5n>Md4iAlr(6=ky)XPrayT4?Cz6SJ! z>C3xVzMD;@Anj+7e)NPG+9W$6=Av&Whapa1RW=OQKpE((g_ucSzJTIVK%HFz`u0~) zZvSyOx48XB`U+TK;@&B|2U#_rB4^!<{;P%i58!>ua*Zdtzr+z{lS74XEmhG3t3N_V zqu0=LKe}7Pg-s3+X*K7&_J17dpo;s@{qLEmRdbEbxZ2I>;N&1WYV||Pi(af#k)F?a zAG&I&g)~3)7;24NqjRQq6U~|&pj+D{IfUD6azG2+Ut(R994FalXK{_>rl#@pn zq-yAs<@CM1A*5${!SQXZGoN(*Trig2@LQO;|5`o{|Mtj$pq0kcTsw5Gl;9b$HC(4} zZBx+%k39{;&E|fzUCV_v97I}E`mUQv;@#@P6r!KbmZ;oQhA{l z^HnrK_q)*5XEiT+6tyDyoHQ3}H_@zygKljT!-d zDy=Z|pFW!NMt`2xU%Vu6Y5Ygj+RG`8e+e;19$FY070E-7znUu#oq(Ihu@rhG^n~+J zp@ck_67rV}L&zVc$27?bh`I96BMw764|U^)Yz)I6GnoP8pfOrObWlHkf-m`qJF#{vX6# z23g->h#TajY#7c`40QhwVx~cc3MeiG)MyK8I|W5229w;>;$nYZ2VxHTR&Y9(D2UMa z>C3t3oB4ef`es2-*q=)TDVKuuk*z`BHF`{wtc941z7HLSIDIAAFl?(B=>0+vGwCZ8 zP+SVAqy_cE!=4E1&mVJ(^=D4Y<}#m_CqL-Za^fmY%Y|#v6S5uT$@gXGYV^7&eXm8? zu2Qodoqjq0+0T@E0qy5KfLe|1R!ar{ z^Ex4xki^1+D*`D>V|G@lhhq`CWYxy zetxx)Q+E@kZaU6-v%FbMa!u6Q*{lC%PBMM~8Q)B|W3hACgv0lLC2UM}9mrFhfAE$R915P)M9fJq#Z1##&4Z@PVF5ygFdbWTLS>q*3v z+4EPX!&eAIE(PKcf=D*&Qk&5-g00AoK^JYlwNpiU&Xb*&%{m}jjGZ1i;HatWfGySmZw;MaOtK!ec6PwaA;#0HbwG@T10JgbVh+gn zH?uq7*|@7qr|R?^tH$kG_lK^q16GQ4xfJW}KZG6719;z`2wu-}BJd7)wnG$mz%Q_$ zkPXqr(1;bpB#4;~SS1j-6o@l6561{6+f{=dc(_Rpg%;wM=$h~jzek@_@4$iwsz~3G{NEr;eegoFP-9%;(!n-uluee?}p3el~Nzt zAGiy(e6G>X8WsG{>tF{I9mV<~F4md{##2oMwx@DE! z0hfL5%x%>;2RswH!Wp_otjncX_x?@T0X=}>3cw_`&VtxG;Oh=i+yPI{iReEMNJyBn zHy~y@V68ypQXsAZh#Dg{nHnBW-v@^l;y03^YbN^)J^Buxp?fcgXK08;UW6iR~=1_F8#@?S(3-T_So3IGy4X@ z?w>x}YM|ZKIh|U0r)BIp{Pxe*NxWaP$^}WfdJV?NM?2F;OIOIQ&7>O7z>&9m27aIu ziruxbJ35-r?Q-#J8-EH8RGC6er z(6`p9NWUj>ACf~2_oMsvT-dV{M0(P|cioDPN)g}8eN6DbCe&KEM*IHS&FSFeAUfLg zLs|`bu|q}rUI$&wQTJAAANzl%2GjXx8Ka-P$I}A>3w@16t_bH|wJ0aP1UM z4z-jV=(!~N+c0Wmg`xlS(cHP%`ssIPIAi>B2iMxmDPt^!7|$58gZ~CTY$MO7?tQCV zQLPVwKSg)EvS*49aHlo4?J@;=!bzfDB9Kdoz$-VvrE--X(vKA4AM^{x*Tgr9d1&5XojuyE_N0Cs7=* z*|#>TNbhOlgiB8{aX;Gd;=(#0L|TdXu1ju&o6P1u^!<}Y)LOYlcb&AG)4>iXIy&`3 zS|NC`OGVn3qDwOB-a##-`BHnF9!we?0{!M%cffbBML}sUJ;$nX4%mmJ9(KTv zi>(84Dc0S2AUmK3@UlNCv}QRecn3V*A&NU-MNUMgD=cMx3dF_%;TW;k z1{?8klT1Pj@f*3|Sb3UH!(UAGY52-BeHwmhoJ+&9J)|7i13b@X2a|l-o_sM1UquBr2WsS z^+B2pbuHySCa5*2m2-{u`L&zV!NDRrs`Nw3y z7A$+y-Nfv{GG_@-6TxEDxL|qxRILkH9>A>_1jK2GQN%u2wsVN$ z!Ln^mM7t{@Q?@K|BJR>BUM6)^|bZeV9V7SdXAX?}-LDoeMIORfi!27KOzQmIQ#mtx)2zt{mifTRL2iM6sI z_6|7HA&NWTT)Y4#8=}^mB_vGQV-PbPuvZ{*DG)#JAC3{5OegVh+W&s=arwto9mpRI%Hc(zs!>;V$?0IO#lAhuOhM4lvDMfcqa7b~Wg3X^TC=wZI6Y3A?{ z-74y%X_607l&~aQMFlkBW%R3Mg~3TQ6W$iu?L_RtRH)n1Qks?67_9WIA-)5BkgQBBOKcoei7wc6t!9DhY z&01<9%?H}!G;xiRfOZqj8iUZSZ4!gwHXDOzq1UytE{egt^Ed{_Qw*l@moCZ+QY!}W z!%q{&;Nho&R1Z}{n|!S_w162jL7&}*YGY+tEw|!LSdNFNjhHHfod5xt;6e*c_b)j;`{mM0VC zr%qVlf9YU``>=}IJ09VO#pJeQLKAYr{55XT(_Y5nU;o#61w>ClC3-BLFeUOSQW_b+{iqx`yt| zWj}QsK@XBLZ~TKtP(pG^h1q3CXbPV=N(pQO{k$WWl9dlxog7M7p!X%~!pS6-XIW|a zpS!rgp^2Y1K3kL>%?#)xG^VTxV&+MsT;Opj@E!|1Je$$S@L-c14IS;ovEK9bhVwsF z!sf=eaVl1|hNk2~O-onf-zD(@UO{%IZwrv#pzl_OpQ_C1tef-v%p4w~&RRiuZ4O~c zoOJ*p=iGnlamf9tYVS)ue9P4sv^1DXH<~5(rH@y$LkneSjUPJ44n<3Ysd7VE;-UA_ zQ1b648o~catmna2Z1$~TM_aX-4kS)@~f@4ENZAZIpzV1fZxq1I}< zwP`n}1J~sC!%qE>uF1XFr6RqTXeM-ZaCZ}YV>S11jn;+QO*HEn22iz4ugQ5xCIY%9 z=MU%%bN56(!#s^M4F9Ej3-otk(0R1IMx!qRP@SH+ow}6XPZ9Ew{4#nW3-d_d$C?hX zh161!^*pm)2X!!Wc!>H)wKEk<;v?Vpu{bH{TI81}zO{yc@|98~Ftq zMlg2drGZ-{r!#aM%$cel0P@_a2gO>qi#U!pX`aI5_f8OMYziY zP~+C94?jvOdTn< zd4VOiTtCuJmOJ*ku;mU!4VK#rVw4AcKj}__$|Q?)K+JO0v;@d*xyR{|QsHUYkvutP zxi_w5C}GRh3oTp zg_vo%MuEtsK%BC2eS)~QK(vg#kj18?+7){a!*26*mBK63ztI6 z*?%)FD=HPh@9bTLln2%)!5rY%-sXM4pFfpGG$4KnU-r2h+GQ9MSn5G z(E`!_YU=wJ!E%eaaF&x_O-)sLtNq;$tD&XA%qFGQYAmtUZX(_CZQSLDQJn(~;2Q0@ zXgATU=S=9XN}`?<_knu8h`1TPMkCEJWS7-T+edO>>&m8 zO+tp(WdN_2Rc1YBj-ZEY>72NThO8D6%Tt^ZIqH$!*GL^ z2Giz7vc#THPs0dC*=6ieZFJJ3T5<=}+RN#jIRs)f8Z>@e57qGb`%>?a;rRWU?v`bb z-}Bpe-iVgTP~)QIN$3j4ZwF!Jb0(J(9FP6Zv)#=BxLg5H{6dT(_VN3!LllqSZ}BP{ zAo}c($hn|c5mEd?%#7bofykvmTni9yfhv7_+xwRgPbRsT3m3oqV5Xik3%%t|VLWtU z$t?}0ixk@!W{EBL*8gC+QzM!8XrFlx`iIQ>_rYp8o1e+lv2*4yy8oEna_`Witzx-n zp~hLROY@xj)1BWPXxeAYHizuS~6_F_$0Ws5Z zJpz$SfmjKMA0A{mvggb{ZRY(ol6k|HEB2Oa<2$*uPPLZnCB@cqEV1R*A^j9{XPz65 zxiP4Lhf0W19yI1g3M!M_MhCz@%P}U$FKF-+nc7c!(zYLI;8+0>O#C^H+G!gbTvnb0TW6 z#gP!BwkVkP1Z}~jgS`&WxF4niV%{@+S}yMyh}*;Po)!B?yr=v8xc3whT+Y~BifR7% zg-tULBiVZ%#ULPVh8ROUbtRo3TjlMWn>bW)51KO9dCAWy8i6HTd{^{pHgG(m! zRy{q>LJq@U)w^W%f~%jR+oF7+yQk`b=mEy-z6)q8rhqQ0DM{QvA#CPbQ3Gjdh%wTp z*^Aj@1tsm9>VTM;52a;C_9QXlIY($A)VTD%K6HhX#8BanOW|*wvFpuhIhi7i7`B2&beT~2r6vNQV=UZ;b3JOedu9`|Unb0^MHfz74Bp8FFs zdzk}pmI5$|lORT!EtuL93ZPFMsyMr+dQ`DU=l||j3J&{NQm`R^OQpsXZJXd>bJck_Fg$j>}|?^ftbl| zwZP<3U@rZhPBqj2$7DSSeSDR$8hw3h_Bc{U>nkqYX~nKs_{QIqd+0~0m;Ok9(!tr0 zffw0~&{dpQ8Z6o5$#&VtxS+YE;&!yi1NugfC-uvpKOrfdPkOn;~mh+GQ950)X?o&+3a z_I{7^wk$aHvS1tlw2>vx(*ZGN$E0#Gd)pH(+BS*KV=L$iGg~XLxfIx&5$tsE<(_KV zpLNM$65l|K`hsWnK!+&KY=K8~1N1suPxs7TpM%*tfykvmyz*NxTZIwI>_Mo(XZMB} z#i`8pcN4Sg9~&d#O^#KjHnMuEtsK-_{LQa1QBa_;TaQ>jV3@(<_U zC-zX6xkm@YeD)!_ua^A`5%_tW1vSn?j)JbR&o&8cE(P|a9%i=00oX(Vn8ctgh&{8@ z9ilk1mp<;8?b-qlN`%I2=Z?iz;QXszm4MQ|grQ1gr@oPY9a zcp@fws!ol#b)D%6PJZ=GVd701LS=FeO8z2A75ysNdJ#o~t)dNbC@M_WVsI4=9!rBi zEVX8}`z8xc2a0)IxO16Z_zhssS%A4{Oj>^6;g8~jsE2DzUL=Pw$yA7na7>HsS$^A1U3WDFU=shs9HWT6=ZtZP;+}JaM|3yz zIz$gaBOx+ncS6jJ$=L#tOM!UfSBS~8FhZF<0W~mt1jHy#Wp-mXv2ArgEG7qCnTy#Q zA9WG%{;rV-_zVk@Fte=!n@fTH;g`(pofz3hj{AtNV(9r0h*89z*;O2(IJ0YbL?fe! z4pl^^Y+s0(%(e+cE(PLlfcU>%!VbPF4>!p_Ps?<0z71NKIG&Dd!>TPZa1oC%$(OSX zL}Yw>Dr;2xeT*9H_cp{R8*0B3~JL>XW_WLhAb1NIW>q3q5!;_#ZY`+d6 zhf5)6gD=>A9}m~a*hT@E#HLvgd;9I<5XJ3xtVc8jdL5!SPhoNp8SM}=?bj&~xfF;O zea;Yf7l<}NUBkmo@-k?N<<#K8o!NFU$MYwJ&G8s&Fvoomvzy~B8gJjae3=f2nPUOn z2FremJEg^$<2tBulP`g;usOP9u3XAo)BokU9_j%6F_!TIaWBLuVsDNo9iq57x*l?f ze%&b&;CDkK%yBcsOmlP#L@otlPd7t+1giAfXEYC|?`J}bngiE9$>XSFLm{0rN=^=& zVl&h*vGpKEC#I3HpB#pMpS4<;h?!z{x>K0l6yH4PCjRG+k%>P5U13x7$UM1}dFElB z?HJicldDkxCNU0T6tOqORt{0z6eoH_XGIYWQbeXKA7Z8{dIchv0`bJp*c6)zL>n2e zv74D>d&qO$0wTDf#6`v`Cx*?j`~+dwBzho5C#U9kn#SA6Xx9NTb39U;%N*lzgBPdp zv!TXC#)Z%oHbIjwXjFZjMjycMkH=4iN|Watzaf z$oK$araAI1llvG{3dFZQVTg@TrIB$v4>!r1p(Pp_ds9b5#&5viCVQHee?-P7Sth2Y z*jf%l?_X0UVy4*iqFkoH5WO-i;v7F5=c3{Zh?!AQED*UAh^-&0DK3OMy)0^G6()Hb zG-+h0DVEm#E03T2sG<96{Ex(HzQtz6THiWeMS33_Pq-mf#r^0}Jud8HED-5A7~ged z70)qM&wc3qFUO+R$TfP}RJ%DH{1}VqXweVpbwXa8ts=emjxIH+do#6==I^ZLHm=b- z#Feb?3Oyb4JV&GP-DG3O$#(VNRu zxzoY?iH;KekiP5T#ZndN{Wb--P$Jnh1)EDXfY{FkFN8Eg1-@5G?-GyA4|;NWtHGBznuLHNAF`0RxB*%HnirI zLt?N6qrqP<_e-aEr0@rkz8~kiK5ZE*=03#VQJC{kuF-p$w42kx{E3co{gAxLixn!G zU|+f{rS7HFLYhyo$Eo5PWgzV)nw3B3);8fU+-CVhi%DU6CVAFYmOm~UOu6HaCFZYW z4e-~fhom>uFo-+=Y4WZ0D$@I8js}0V+>gG#$%XYli1h5d?>f>l*1~-#{~c+4hHI49 zw42kx{E3bZ{gAxLi=8T(V6!WrtBqPn^LJKrH`gcwX*bcV{6V+234h@>%O6@y3e%(f zwRv%Dr1@j3c|6xB18FzW zto%W@wh4dXHp?GcObXMZ{5Qn%#|3?B!|}%w^EZ1n@Yk$|q;F0z2qKe!wD{I06-}_i zk>IbM`_aq2xUl>|q!X*}x}XxXY~?-_zlU3&;Tq*N?dEhaf1;yHKO}GRVz-L)yE=3o zOx-)Fg)~pJ$LZx7{Q#GC6V1vWbZeXN7jCosp~a*yJ<5NZgTG}H`EaJn@y8PLciF+< zZ|J_x|B6Ty{z`mnv5F>`Rtf$JxnDZPBZWVRbYk^gr&z|yxsM5sISg~I;2PyM?dEha zf1;yWKO}GR;&>HJ&`uYx)V+#YNb@jzoLa6?2GVY#S^0x*Z4>^&ZI(Z@m=vZ*`EN7u z_vi%hSMB&?iTT^}An-R^4@r*~GYIQ{t-iHIMaq8%fxjm1mrn6W;SVBtt?zoiWvqky z5Pyea&YfJNyr$ip4(3mE^yr7=Osbq~CX85PWn>QNFcAMaqBsgTG?# zN8hUB!p1K|IT$(y`bt0Jxc=xUw1kEa&W z{IS(s&o#-fJ}vx5p`@&j~=0 zb`x~UJ9KNC@E&fnyradWFg<$we%UVk`27Mre$RjD)iv~YVX!e7WEDb24~$ctAHUyj z2xeJzDAD6~)DJ?fy}ZIC_J)}Kl6=V~WL~_yV0|4ByCh%b^jw$ZKi!k6T=lEXLBfmlhzrC>< z)#a($RmNJTS9DdZY)dEGq4b@KRogGyT6%nTVx&j2>p}iDo4&ugtUvh}3;a*UJQ^J{ zF+8S~y6QKe+enrnwK9YpiW*5}Cl%~b6c8-Z*P?kOe=T}bekQG)9F9uED)1u=*UhKi zOK%!XeJBrM|Fo^#ezoF!-Ay%#Ga*K8STIe#^^7B%0*qjo zHuPaH?i7fb-qtAaxD}yGy2+hldyrk!*HDLv>08g18Wh?D z)6#;EMlBu4UxYTntNXGKtL<7*qobI_V-TZ!=zi+G8)(M3P6xy?#^RH6SudF8GRE;x z+THAN%lBqKJLQnCB41EqLivhp1!yNXB>=8ezk` zA!gdJSs-#L5SPEo5HE)+-P%5hhnr*-w5S#B18@A?+R)Y59fON`RpE>=0W}z-8e(*6 zYK(Q{Kqk3|4u~0J-|Ae(sHaDgC4IkH6q))DqZmrq7%ehWE@h@`Vx~7^WE)NIISc~g z$00@$dt;P1L~&#MeSeLZti#%n8py*^4;aJmV`y5d#Ovw(Mi4W7tWDr?De(G*;8_o= z;lU<(CUmsNlD4&oPukANl(a21C^TuqxU?xpHeOn2llFizhN-q&6*W4FN%ZZ>AH;1Z z-~V67`kYC=gI*R^_>rOwPRM1wmImRAzW)z3E@@v2U19rm2tiy5LI0i4K{&wyI6?uK z#Qs?j`#h2F5XCLHiAOXjis+XS&W1}NX4YG0hByhT^mJIs!%gx)Xt9ns z;T?B6oceXZk8zKP4B6NYSvSj&Yx+(rFi+ALNtL%B8Og3=peK^EYok4OcReU)7gC@h zXR{E>*(0N4g7BCk>Z&=rm}CJmK!(tk5;aoJE}=qlHj9+Ac_iiRf@v>MJ2~L4ys_^> zdnjt{#CT$3h*5L8v<&qo`M;yY`mwaU58cAc{@llp^n|h|LMV~6JPVq_&etQBmm|>?gGUuv^%! zm8ik4qaa4P(xu(*1)5kk)d8`@at7V>%Wm02r?|xO^V*RxUa~7g3EQ?$$m3GT+x`WP z+E$EgBhK!|ARxXOVid7YEJr&;aqGT(jYCu&MYNA1GG)6$%(QRb#ySJVQ(h zMEk{(6}!N~y<9j8+r-ikY)}YO3_@aUla)`PDcdA|M{bEuOil54LQU~*Cl5U+HW4mUkWyzN#)1^@Fp zc>7Ou)ai$`iR#6A6-{t3?FCTxT52K9yV&D2acyC$S-S~3-Ts4aZIkW4aGTx!LkqnV zk#*7b-*zYzfBd&0^)daGbIZp4`8^mV_>i0D@_A*|a@fLePwolf3@nAO*z)NTm2=zv(->7{#Z*?s*t+!JPBpTpQftA`VyE9~n<;z(SI zBR%^p`FaSzRtmr*Hp+t7`}(I2QQX%j=0vn;N9XG=LCo~^Vu8q|KwKvR(Wad`9&VBs zLksZ>Uw7-7)Oq&Z(6=MEsWEOq4aT?%;{RogF*+b-j8o~xU3Oz!j2q0^j8OnxVPg!H znQ|#J-R7C7F+S9+Y7&bfMiF~s9N`efjqxLH*=9p@IW!U?Q+6)IOkGdGh~msXa2aQ%Y|QSbh)h{2#7t((1tOOMaXW%Y31oGQP-gpvbHo7W z_Yk8vGnrke17gh1qMKsbnf>b0T=TdTy23tNA+Wg=*cUz(Wp;lBU=ky;Aok4OE^hGrn?Om8BV?>)tiu(chuS++rm(=0q1Y`^!!r|fcSBd7QYkkl!@ zP=F@U1@ZrKiYIkI%qecCJ89XSq8oRLvpM(a&=q!yDq);UVf^GLqE4}+0x*d!vmo|P zQST7No#L3Bh~D*QmDh5dRjLIdmjdy{*&L zroSuc-_p)C^4L<}Y{MR^mihoSgzsAr|1V3m=zy4|dJoKHsr_+JI-8|VfUdBm#tRKx z3JuTB3e#YcTPXlK|7St$E%m8G6t~n1xLcbI(W0$g_`U=&Gkj|VB9{Vj9fC;A8jMh8 zuS5;Zo)7W=V)if{5M%b%id@Y8d10=^*blnG%+?BQE(P|9k4Kq(b0|+9h}$7X5qoB* zI7D$~&&`Rb1{w*GDH{hdli50f$fZD>`&byFU0H3(!|C_Qp@q;Q3A&Zl)TOKOU2vZ_ z`Q-x3x5AL`xQJZ?Vy9>hjUfXL+nzsH18#yE=okbsN=N3I?fdP#`tW7od;8}y;KB45 zdG<5(z0eglV7;)zrLc47%rHA9IZ*+a#K{n&h`j+{c8KBzoPT~ULZ6wV}lwh;ut-rRFD}Q7=z4FKP|8&0o=XbO9?_Ifa z*%q=v@aON_(ktA4qrY_jlmAZVhlRM?l8^A((`LFe$p3gPdJ(DT1>Th?3xji{&h6=7 zM+(!HRn8yIJ%9a^dln|{+QR=X$Ltr8DhN<6&$0KIn5LaA_2-tsB*0)RFeP^klAX|ZW9olN|p zr^C(`qSL!<9-YT(&=uymLtt|$uur<5a!#=HH?{O)&G{y=0AduePm9+&L~(i-;BjtV zSMPEo^g3qGg+@YT%Fck8d4}o~h+GQ97iKs&*hg^M-1ze5I8D94#Wh4SmVlfa)5#)q zdS&JI312q_K9>gdO1=B)dGV@m@ z?<0iG zCJj0u7ABKNiD7m^5+>B~?Q~uPhsYp&phgQ&gVBD6>g-0FibF7G?}h+`SKlw} zp37+Wjdv6s05vW!>Y*!av_4^kOJU@id)R0R2jD0LK=;S8AojWK5r-&lv?7ma&QB3H z`fVeo7e-qKG1F*ySIDhODg|Qq-3W*0umh>gKI*q7o3m_97EEiSb96cw4gmV(#D#oN zlRO8<)?{ec?Diafv}#4n6qxI2g`?;3-Ai+sV23lD2^RF)2~YTqoMo5QalEpX8}hUl zlC$hxF<~VgZv|~{`*UeGb`ZmM$`=y26cRqVi|sTH>UBB~v0jsGhWc#NxmNckP2y6B zG54E#2hUH|0w2)5xa_;*r_vMbk{7=GF+9I50ibNtf1Y2S&X0co92?5KoUlj7>;hB)At)ay(7Z0kI@Fk#1>b-z~j5A0pmc3SD74 z6$xxE1@_Jao8DuLkqlr}1whZ2t`t17aq##R8E_ zf!KHln6>+>%Ix#HPihjgAx3d(Jbn2+Q=$&IB_EXbmvHQC4meJ=W{Ibz!*iKnz0;ft z&d2e7tFZC(Oc5WiY!(-}D&snn_Qec14 z#CAH{0eA|7fVc%>4Dr+#`}vf%x0tc`&N0xO9Q}_tceOZo$b$3rr95lJnXoul z|3{n^7Uw?MaMGQb!hwWy5xp8cand@vTXKBca@uD(fRAN@mUWm@b>-VpgJVpC7G=q9y+y`{LrVf4V}6TZ2&CYhBqZ-&%x}FD;$@Pb&g+z z321ITeh{-zb`%%6bI))bKb%`DBpA4qVAx?g1;a=5SYN9wEv|5I;&E8(;WT{1d@7vR z2LjFlE^@iJp;sCT@5D?!5F^bqPEmm%) zh~o4oJ)*Uuhz?dnrmP%dCbQK7kxPNN3qhpFoP^C{WwzSyA|IV)7r9_s2i^$Y@KrdT zUN2<(Cl_#$C2yMKTBcFD6(Y$5VeBgX5Kr#_@74)u&^NIc%r# zLIRgULdi{Rr@3E-r}Jk4rt>QoS*J5XH?K{i1Y*>f1yg6xo4_@mws-T38?<_io8RsL zp!2&F0Lsn>fSmK2gWG;IKU4My#7wK#$b`9+3GaO)#rvvwQ~81~G(6S{O*MQa`|~!r zY|~0l)r)N|hZ+|iFRsnBg=w!96kH05=Ng&z{TzS>3_^HZ0Wr#`507q#D9+~g9?`PT zd14OHFhyj_21Cpws!kwsDG=8sh!h?_V$)H>4jN;Ul_gMg-=d76t_|pSi zWc8=CYRwWJ=WLzJ1fz~~CiwlocEWb$y(f-WwhNAz(|y*(LBn>c7ZSJ>5(Z3TJKX{G zI-O7ch3UM{Mb_!O;I~|#$g<^H5LtN_xcS8mdNDmcFD|x0WPT?AK-tj%kaK>!`n}n0 zbL`DF%7nR;2^UX=)o+8JsMXV`!8_|9#;tBoH|KY2JRPqCVyBz?w#sG9=40Jtw}Tqz zy=y~P*iKCXn@fRxreQlR|4adVpuR@Wze0>6_VLu{5XI@Y??1zZ&mGX~5M2h1NIa9R zkCpIl$*Ox*tXy2taM_U32GcAMxfF=6-T-FrS&Q99nY|G;FncY;D9(auwX5;+Z38#4 zY8?<`wqna%%pP-$V|K}>k-V@DbcLC15!hS`>;i(F4sOH9Haf|Dwx+nfNxTa&hIs0$ zbQPw#e#LR3pTVQf2Fvq7UtshK>rj&I8=A{%Lri_`y zeh_1TWgF(%Pt&%B-~-qiuP6NBIs zH$sde_RhP+A&S#`?`UWAPd|<<D<8N6F5Kk!ikI#*vA=zX z!>PZ0ss}fTB@m<5E0|h9SKdpv$6m$0?l}CE#+21@oXfdz#|iKF&d~jCc&1+4{q>=O zWhHxCC8ar)j8!EjVfW8t`0Taa9QsKXn%a)&tW(?E4=sWi8)~oZE}@}%ZTH0BTrsm4 z_uG*G_QV8q@pnbQER4i3iMR59hHDY{1yX z#E+{1P7fEk;jF1}==Y`U26M(Kp;Pd2DfphcmXp>W{Np#JIA|M%$K9AXMSm>)oL-!Z z$`|M%d|4>`)D;Q#BcUtIQkS6MQc!G1DAK{R7|8%ORsbe35MtEIKK+b#h~jMSWvqmhBSE=#3)X^$@uAiYVvJy>C_ahcL4}0-H;Ly<`eAd!hsIG6n&0E5s;b&+PA;D55yCJ%>3& zK@`#HipZ3WftZ=tdj%qw0*zZ5@MIxgJ zy2AGB6LPo|at2+)_PYxsIWoRbM(Fu>h`H>yheH&%U#UklDvIb@XhdXO3Nh1uc~{E) zMk)nj&DDsEGgo2CH8RGa20yEW7{#fPvEW^ejBRv4jM<+z%*AZ&A&%M0p~gkVr+Ew| z%xu2E=2BokcNH_cp9AnP1_ANi5Tl5FWOO@3ab|y@C-}wI%a%lJeTX8W-(Q88$!wuO zo*&TnxMi-y8{`);Kga@d0F&!WF{ zu1)>T9o2>xp$0}KLX0w^Hq4Vln&kdEAZEkuH^^nf1qV6Co_i<4*zbQal&}qpgdi@3 zpkJ?K8(xW#938J<5D?FW7)9)DxRFB?x8WWh(N}9(NWj;xHDv*OW80I2?=#HB`naOOWK;%*&{%{GHUDy}SG0&lf9P>EDC{AT|UjS$$Q`GB#7_&8W zJ2CsSAN!AT%>MC4WFC7$S2)L132ZI}_HG25?*C#W16V@=(DQ{Wcq&oE-e<=;L~&+c z80iq58AbF6G!i0Hb`Qi%W~&7vmjdyYi^1$;*Z@?Yy+^keP2v`aQJlI1-SfKjS^LD? zHhfT%+#JV_WF|ZyLhq+ht)M^pEYkdW1v1c8tSu6=Mrd!`<(+ZMp9%4+PL|}4Z4P(U(+J%V)ml= z!(TDKC0yj5-!IsphSitaz3Pl>y&9P?monkIFM`#dg{{=;53A)&;%reDc40IUh0cZ!WIU z!STmJp0hiEPudMzI$ebx@TMb-cy}GK7bny4W@ODC`Bo!zg?+1D49BGyE`2`xR?-0&qX1}q0Wp_vJ?Rj|eXGhNn)j*=ZFwQo-#_u} z;9JWfX8Km6K;%*&_MFEM&xI;o4?fMqP4Y2lQCskSrhS7+VMB5!?r(zhFMLR~$K|NO z9_K=g&Q9&Ix*W?S577a!SRbCqWsg(nyAEQHmtKj?J`cLW_GpsHaw(Jj<6NF>3M1QS zhOc`MYRlq5KGrvLh~oC>Dszaoiz1o?jj+e55Hs!3ED*UAh*boUm^}jAE3^BlB}}3e zVs>U{F0c`0k^^->jM)$S=VG?V&tn|aI8T4ISNzJI?OFsjmje6V$;|Aw4#15V1Yfuo zVid7ww!O4y`f{MkvTE|LO`adSai-Lae&N0RqG%jSh&p!Ug%cTww`)ok3h7 z4{99o`#@JXeRT-WTnf*7PGX*4ZBtkHmjW<}Rk9%Vu5hYD6nBLKJ)%j_>k!QXw@6?2 zL(FuAPJzg!K)mg21liBuu{D+1FHwWbegHA*vdZlDFX_ad(g87MH(VnZvkmmU31Rj@ zsB!Z+1G>V@b_r}Q1@`9?nc0aBz)lLlB(}Yj#-nz zY>&X^Qef9lU}gt809BsZL$e_E%+7L%;>^yWFEI$SbLa8I9HKuwv%NW(?G=bz3dFC@ zVuuw_C$! z3)Eob4IpL@pLOLBCizQf=Q?cUk5|oQII2|L~ zh_>?-fJuyp7)9)jyvQMn8~MB84pCVY(YlJrl=X+089sS+a=(R2ftW`SDSXyn8V;ZS zsDar$h*6vxKBJ%4@cFQZhi8V*)%|iYTk7YLfEwqlQ=u!&Y`(zeQeYoAo|#=TR{s)HsIrfUdC3ii8j@g^=l|Ga;Kg0D%Ia_m_UbQ;8z>HhaM# zirZ{0k7!|QG(MpbHoFUArp<~4B9{X3=Wz`2GN{t4zOg)<-cJTC*2VQM!1L4*zwLYb z*I`rKfErA36~ySo)D%fMj7g5s0WnkTw{mcf&C>OEbf$Rg*~r8Tpet;Op)yY{Wu9wc zp0{9R8%^%RuNXfNFNPRJ>`k$wLlif~v=WDC&nTkHp%JDy7hz2QAnd=hz4u<5GO`*m`PWR``eAry2!UdPY z#h6o>i?8NbE==-K41&3uAx05~dBJY%T@%Dg-+n zTds3$0p@wWNb2ymw9q2^SpH|&$G}0I9&ml#2AQC#NHJ19HO`>rfuU)(KH*5^&5tRw>+66Rv-5w+#q32}Ic5)m8prIL zAI1}NlfdRuVAmhd%noz_nlK264a6v7&+IIRD9-Hn^yLhRqPa68Q8Ypk(eEch%w)D% zAaW@XzdFvo?RX1PmJW`EO5F!}nD-S;@;=>ZB-(TzWP5bf3%PD|OnhMXA)`0`Vvqj+ z`lz*rJ;gs{kIRwqig{+&P~4l4?_tDV2jv*OR>SpRqQ6q9#KDi z0)v3~L5NYr-c9NqqPUy9Kg1!r8G0R}(Td2F9SAYgO=b&3E(PL?$07iCi)=t{?KdDd zff&W9%=U8=>(l+e7_;R+J^Oo5y6RaUQZ0bcKDkLtt|$upc{`ncd9+`0HJXNR#*(Vid9W*>@eH zIJ0MYM4vqrv2`;v;-oPhVkWbl0+CCBxE3JZ0#%yQj^W`Zc{sEXzoC>i1|2n}9cs6B z_y0e(c6W_v?^^=xKXH+fo#efrzdT4w+u#TKyY!T=C|xZ~RgKESKfZBAqP%sp+P7A! zNWbsRz#CHK+%Juh^43jOLJC4%w|!?Ycdg+MOz>AHYPGgo9Toh~>)^L;ijGG8aAB(1 zi%lw;VC%o3tDag&^OCnwYvCIG_^oymbo$m!=+-uQ>t?vkzI78V#!ip6GoE^`lYY2q zK&opZj`aU)|Mt%ZG)8jm-?o33D@MBMJ0^0nodY#4Ml$zryXx$=Gne9k4M%c}T)%!bBNJ|peKhD<&Y*hLI=cB*yhV}ndeOU!i|_` zU8r&9`7vXEut(<3rOf@?N;c2OGt@uk>IS7r%z_w2>{HkPhbV5IW%LyiK{N$=9ikHz zktsV8VrB~K6^L94!~+N-1y#2O6}_UD!z_>fFHH6L)-DxIFuW5PqJ#UTF;X%FE1^-L zu4}%9$nE0~Oz_bgsO9aCZuwO3Kd*x`gy<;J59uwtUMyD81Y6O@0(CE>7SjC0o2Zp= zjebQ+y9qkY5YVk{k|DxvHbbDrq%b|o5aU}r>Ak$~(z|%+IJ+%U%o?H%CxRIKB4j}k_o5!Imd=Blav-yEbvF@3NkpqSR zT&w_0ViLqCV();B4pH0zucdF=SO<(F+DH+ZvH=h?9Wd`IxpPLPKz#L3j*-^pa9+5H zcZN+e9oit4%Yx~a1wDs8{3dry+{ZeEnV`UeZTcL_u98s|40Yo_c1MABpY+r zK0!Umw12YXbm>(}gGcNpSE ze0%*Y82)^n8NeFoCy1H$D-=*%3aHgBsFyIp(#Od?oqUX2w(X>43SXf0uo)KDZ@m`lmR zb^G&K^jrs^QURF6s4R&6iT)vnD1MH3ZIDB>K@`z)>~i8n(E~B_L{TgdxfF<>jN-Fb ziXA7N>}X=D^fZ1SYcYvCpe+2D2Aw<*&+EMnKdo2OQfRZWt#dZ|);bkU@IyQNw1)eo zQ#?}q6e48--}UB~;XlpX#{?I&qt?PTIw5E`r-S`ebhPP*6rEn|P?5e@*9%>()Iyp^ z*yD6@jWV}(6V2+U(5-Far{Om1r)V)LOpktd^4~-!<-Px02c8NKMBwsK@<`+Zkyzwg z^Hns#s|&zWAA?G#c%<+IabYUdb%bSRDEBczVm{_p!ZphKs?q6Soj#Yz?F zxhdMRq3-3>LYlv@nya}+nOnPwX5|UGwM}>mw^^RhVuEID=eCvGE61C3bJrxUgP1*@ zH@{Wm`D7gsyK-Fmajtm2r_e>u$J1Gji{~VCh2wds1PhlEEVK9Jc)kxK+h{4=tvkjh z@m`iKW*^W0afssaJlG>TD2nJBXhb~MLd=Zk5`oC2Kui!sif4A5bh7W3a6Dsw+a$KN zNQrd)nvTZv0dK-jo7A)mQ}t|Y>!;1WwNXVAT=5e8w2u3wQ#?}q6e9gpukZTuOYo-I z+{XkDyl7*PYjob#ZcYdLsp#m`4=Fmm*rlQgZlrA!>fS*uqX8ozn zx6W441fM<)o|?H|I>jS}Cy2C=@Le~z_&d1|T|dmVKEO4~JKD|ZV4g%ruYO40afnL^ zecEb*$vx23!@B7G7FKgUbtTP(IzlunPtdJx!c(}-@`M(X!t_jX6wcT4d(OBLJe8~J zg{cxgnB}R$x0b3%_ZOZ6PeZw1I>jS}Cy2C=@Lm6S4zsD^K6L%iYJGrfly|h7)4@E6 zj#~YYyu*uiDw^QTZ=kD&T1fK@dz?nDQRdKYqFH%@Zfz5u!flo(w3rm8M~P{h6L|Nq z@=P3O42P22VmcJH_HtVI?h7&NBE*ix?%_r{AhrlO?cH39kbUWkIkHy=2!0XL`7A>T zFG5P?49}&U;kVs`cMt8zHd=(-fk8mr2r-J-FG7xVh}MEDj2u$D3JYeJR{BCqc0_wA zB2%_A#LPuVxj^JnAlC05hG?Jq`sEp#8^tmg*AQBwOP@48;s$x@t0c0KyP4m}T`%`W zZZL>O+o!&M(tXsJDL$Y(V%cBIuyA#q_%3gxBkREjblcQDn^Yn5IFQW5w&p1^aN}asfZhlb&vmsap^y@o`L|3Wp1CLC`iVZN<_zMd;SIdc(q0 zIs1q8sw&@Fp`r;Ev!aGnDfgos%7tAvL8SGy@A~DFaOUyc#{|zjVNXq5qveoxb2`|y zMMu4UNGB~XHmYcXcG}#b?se2cns2bjY33R&XtbMXR@a7ZZ4=iHw^`Rli?P!q*PeL0 z-M22C2;E((n|`E|k7kML_N|>N()!Y_o7%WvI>jS}D2TMc_FbR1)bw&6`u*+Mm|P#% zXgzco2YFZr6D2wd^+SqiFBYjt`_rF6S3b3n=2Pu)hH{NoG}=wjDN)d^Z9-JI%@Tzc zlfv|fs15Gq98hC(z@tyGS85Kp3$^xg^1_=SX3qf_iySaf2gGu~Xu8dsJqKJu-vE+` zvua!pD2A?Z4j3;1#-#+jr)Dj~t;|9f2|dy9Rq3Eku25m5Q`~{3yb|g8Nb0XXwnZUn7!DnBHd^C1iBijg*4A2DroR*uF<(!yNPD?YUtKB z@#=7!^=h=36sAXBedS^7)pg|6>EOky_-ASRonMen4WS19h1wK7luwSspQqXiQuH7N z<1w?s-hU-(?d9bC=R=J8l0M8)P1@}e>@Xb=^ZsM#?p${7zu_+?0IwEaA8MTU_k*sm z_t%PRaVf5~@eX`?`K(R>y!p8E{&t8_#NPY)exXGa_x^q!(RI-45Y<2>cycd(sMo7#z_@X3u*q+YA)p(ooTh3pi@VMZfz4s z4YyfGMT<#cdgQ1JZno#Ca!LW|V9=G}rNUn`5&pk%5m_qO6+ofkLHx5*^!Px~_=wFb zmE=hFL8US4@qNMlyhBF$m1ggcwEanO)lv$FE`fE1%2R+Wo{pd8xg+0AN zq?4lWx_S%pL_PO0LDz$*HFAwst=i4$;H)7!TJ%FYS$T1`iY7SiedubY7SjCqL#VZJ zjh3C-O*CuPfNpJ*tPyUrSpzM`PLHz2)M++r)Y#Q+pX#QEC-`WVsJu$fe>ixrb}&J` zC90eIrBggoh=NF$uDuF*v-|ZmK1!j)|iE#}>{a8mseAYcHpq z@+8El=WDE9aj|B>8+1S{R?nx~gW0p7eNG2w_}!q!<(zWp3TMF<2?Q=B5JqgpvHDl7 z0_d**=>57`5c^m?#UYBvYUQs?JrF$ry$;di4>38&f-@jy#_DW=$fZDR+7hu^r&gn| zWjk8GtM{$7D$@QkuOH}HC+|xW6;04b+fdYfHnouEe)c$>T%$FLb`#C&g3zsP;)3Be>w;)8c6#K3pQo)0 z)>{`G`aswPH$bhOU9bRRb{G8PLiK>9_w#TX5Ocww=#Ex)7d!(`@W9|tLya@|UC=m4Xv8IEI;s^ zUoj$T2Tfk{&sWb`9MT(p0_a(~N0!}l%6@Wox&&&R=Uf9_VbAFhvv4V9xneW+oN@=? zFaPAiH>spkj{o)tWc58pKn1|DYcO1QT8}hT%)Cub`#B-yr5g#Bzc9~Z1O^jvD2gE zwFN!C!_Ub!+T@kKmswU9yd1Uma!Ow3Ld@=hd!4H;c!&;&C9mOhTQIu|F8aZ_;EKr+ zgXck4*af@9zFdlZ|JamWa2`gsQG~zV%=m%04Pq3rcfrjZqPPo|dqm@+h$cZJT<}zg znJ(BZ5V;hHRe-pGK(xtg2oI;#5u^YIc)yE?394>{N z5u0HBbB;RD!3w}6%CjK$_B+KPircU8JBR22=yiyGxQpq4{l0*hX}?~9$fZDR+L$38 zFA%L6?&sn3`(e-$vtO`q5^wy$93S7#M^tmXg&LgmWr*3$@gt458%}rWfS5VHdM1}S z?!Z$p$e%4x<0gLubcM~)Cv)Xe<~nmDp6etBU?T-!5(Baz_U2gP5XH^G-z$>k=(K!t1cNL#6^W;+IIe0@h#TOIR z7jDELApZXt`xZDWr| z(zxgLH7?Z@nn`Hn7D6sDDU`w>^Wc+H=j@KwfDRC+Ru8{+WYKxzqfG^ zqlmpLN*$uOEAGQBEkKlpUWcfIBBJ-7K+JSSfk5O`AdcLXA(jY4J2HOaFrn`gY2bus zw&0no-N@KyYShM};>5IAC@hI+7f$@`|#uBKGch)gg+zV`qEhWI>G=_}A)=jJB)60}&l^u~lfR1qU%=ZGsT|8T{YEQYBoPLpm-a)mMx z8yO{Z?JxUp#{Re!2CirvHGHBP?nXviv6EA=vnlLca;3(C`Gxmj zWW2^n#!70lu4NLv_QtW(hhC)@kwtEq%ECu~2fI7d5&T20XD zc>{E7nVdI-%j|iBASgUX;L&aRBnl%%zO+C^x<8SB1n3DHu9r@6OJM{eUBU5Hdsq(I za~%`xcNZAx#5vkw)M`!#Ga@?5^dOxVd9hqYdhfiwv%i!|Nb^5d^8n7#MwV6+&B_RL zYnd<-F0+iF#8~s_OzMl9?U__5mhJ^9o3=`gN6$7cXdQ7G#k4UftT3e%r*tzhvBOfg zit76BC*tvPH{`286s_?`Ks$CgV#{^GLf)(YQ zqkz(CP6sn0ItJ@Oni{+~OhtOH^#bS`KqaJkjO}MU=V)HhYNA;gfo?4mM#5#55tJBf z9tB?Cn{40>lfbiSt5hX=P9ZMnzV*HcJQP-#G8cF(ao}A&0fASi$mmu$Zf|K`;Y({( zG{M7@L30(?OQ*P{&Cw7}0B5e)%s{JfugSigzHxV`u;~a&b zR&zR-KhZH+57I>9#i=UNbz^%6{dg)N&D+_2Dmh0tkZU#3to%W@mI;61GRq%I=)EV< zoZN+pBmOP{e|;Q(EHQsyp8)<=X_s^x7B{r~)%(&FD$?^glfYjs*Q0kVaANs`NHdzR zx-kvL8n})L-kxA%<~+*L?-(Wg=XEfDqN7j`QZ#w7NJY9XY45Brpc2yjpzWtU=jg_A zttRM{Kj_vn;V)cf`9lf46#|%(pIr?8uHvM^3~>Ch#QZ%q4*U(!F6o9J2ElgG51lXV zqauyp3E;1c>!nlNQuu>N^PjK!on>qk*CGBYz~6Yz(PXC8oDSwsbj;9$6ir^NRFR$^ zpp7`HK9x#HbK3S(#W|XRw3=vE{-9gSguif^8Znd{K?#XD@waE|6Rt>$zvf1+cq9;9gUVwH;YU3vSAMT z@(0~oCj5oVEPp7W=ii|@xl1qbXRmjfQI0>Bn7_4S5Px|WAQrgy_1w_%*UXnTC?=Z! z#)7|ku18OqQyt+CBK@%Xs{2~I3b_vPHxB$2agOFSRqk{!f1;z49;9gUVu^|-X!Qzo zwWku&ywqwg;~dRET1_-7f6%RE!e6+|@`n?j$9?@XkOE5P6zWR zI;!;`MUxk6RW!i{+ODJORa8Qn)3%=#oTC{?tBGdi54yEX_zRa={!l{CYeRE#S~>XJ zg6YCccKoq~`L7fBD=2sImq()TSLjQdsYvgyu)n_z+yOlm&DAY`5b1~2SG~b9)|Ttg z{5RId4CiQG(`rr!^Cvn=^&mx)7t2(n^`Ct%ql8LG^KQ1EKAfW&NUMovQ=lrJIbjUpnh&BsK_V_|nNL znxLl*!ckn09@*u@k_eH0U47MyEp2nTjtNS}*udc&O>SDv>0lB?N1Yy|kn-XR73sW( zHYurkEtQbwZEZjGoTF(-tBGbM5xTWZNDP-*5>aAOFpo$y`|)kN@A7TC_`jlSS*f9a zbZFts7T7am9xoyudH;;%a+2wiSWt?zRZu4R63KIUI%q_{>y_IK>A*D?Q>as#7&IE+ ze&mb$i5B$pB^UY=+oL7lncXV!+j;Oov2OvjVC9zAT#iRBd{{m%QU zZ7h@3T*m}|jI`0qIhtm*n$y9&ijGx!kmA~l^(va+TiTeU>MN*(G{1Wrat)lLEB_Zt zkcejG6}q)dcnz0XUQt4iN3$;Cb?jBl>s%fQ!P`BE%zIg;Z@HP%wng7FMiU+G+Tq>E zEh?c?s5>A=cUJT7>_pzN9tv(Gb@npJMcT^l&0kd|uL_&>K&}npCzr9sv^PH=-tO2A zy4I5d++n*GYOz({A7bYI@C*UVsepZTYax4jIZwlm?YEEv*jFJ&!RpR?!dW*(8^kVx z95*c&(PzIeM5jA0KATB$cAN@bVU8;WHm3r+5y4Ie6VbAomghSt0D8Z97Q}w%{XmB( zPH)Y74pE0FqL)W9Ibillh?&gJ6^NV)#7njmY8ZT9X2ZZ<1zF5GOmYEK5y|cvVLJIb zD(Vw*#i*D#3Kg?HA!mZmZV5YXDROXJHN?2%Lc`=N0cDc+YOB~Vx%K{B-kbSubeJ@T zF6Y87P#AV$mGHx<@N>eyj-R*A(qYmN~nc1 zr$fwiX0?FjRKVW78N*~dw9pGw|K7|9!S-(uqhNKI{BWjP_pUaG4U^XQOmb&!5Odlk_vCWg>?Mw(pUz;DoYR(S@VN`TD})hF zg^~ULW~a?XOP<^ALnDM)8e$Z&cUpIcDDJe~JfiX_qGJ@1DLxcprqfmlL{0_b*uO9w z9zqN$vy*&qjm;8VIvhSdU57(&Z4hHNpzC(ouh-i5CF0WgWTwt}wkaHtp9oC@rB z8<^Si9e|Y@TPE>=jh@H{$33$f>H3^S6leB>8t3aRr$u~y8#H1#41t)*?0SL7sX#ms z5Vs>IRc@1i`>+7_gG7o`HRm>?3fJE4U#+YC93_J40=uS9Vwvv-v$v!9}t^esD9{Fn^;^+&o!mEEt`yy;lH z9%`IlUxco(UkimaPKC5*H!^9R9DtDuz$9*f7)9*;`msY4_v?3y9HLcSBYxdm5t-th zAZGftNFZ`55Vr%wd!b7G`soeuYaJ)?DU5ef@NLB#4j8^4xuh4jq_fX`hPTl3^-?OT z2u`B^*EByPFRvz;Nd)kzJXPO)FzZwgZjT&BW@Cs^K6GUM*+o70<+UDC*n|7g^~>xY zd>wad;P-7V)Hn~`1zlkewiS9f6?)cfU=QBt09>R1OyX>aQN-SZJ32&h4<7Cj?HNV1 zbr4&Jk+}(CrU%;#L{0@_H-bpa?sG?&+1AK`+2#qUrn7PS{X5w*YhOBa8+S^- zf9PAsGuDT4_CJ4InEre-fwnJn2jDTf(3af=rMQy=E;t1J{ZV@LAGFNun2-L7n^{}w zr}Bi-tG7~rf6`jcukgB|)3Bd92??AE30>B+pWZ(yY|h+kV9pbqxG)Zz^J_|un8f!G zVGT0zgeJ`>sUS@cP9NGre9S26HL~ z_xKfFe|I38pyO#ia`5_#5Mu`2*#=&pbE1wXqYYwfh>z*&SaxU5q-V6`?(05Ke=qzC6JiY{%1rtGK`7Do)1cjJKZXH0-BxA%RmNVbePH(@3aSbNWDi zvM1DMGiNLBx3W1Vu?b>~q{w*sjV|n2`{EAmj~hr}-@l#1_I-UN>|4P}Zu@RV*YNrv zh?!pRBL;IS1~(>yX%-y;-8!BIAqRu{L5vx6=itUXi(UYf)#U18Z4etzDY^=m-I-}z zeuS|FVk~Wzwx`$3Z5Y62hW#`^U~?+4&sfWT`lMI~^c!dd#Lq*FA)Yk9k)P78b*SPl z_!sw30M&5lc4MlSqB6y05Hr~wEHF70n6rN>%v*CZb)62{306BqTCxt444^7ArtJ3K zsl54Wk|o%K)k=5)R&wR>Y`N}R%)f#wCSKvheM$rS7CZPCb@zm}#5vHWn;WF<16r-} zinRs5A0r)%fo6^U{?MH44b2L{|CU&skMKUJNlw+BQ+Mi@PIidk+{xn1|4*FHLtElW zyZK7L9{K`e!bq##g7h7d>r0|dm#Yl zw`0O^KI#uR?{ShF&h`q&6gP&LIao&tK28N+!w;AWuY+zSxgT;A`Q#snv57^N7H0ru zHI0HJv_Wht98Oo-vQLFo^vIViEdnuCrotck#c3TcusIdjClc&*u(XqnU6Xtsjez)Z zh*89TX)(Ydiqn6nM|1=9x@quSMMU3+gqX?fWP!-3Kzw*LnEf=eeY!+dgE}Gyn4A>3(Nl+@Uw) z-VWIJ*iqr}bUXKKif;vgoc8Uh_L<@xA!d4gh8WDL7+m=sjrYccFC83$PI-8|sL>f4 z9=&eO<(m(1O9in1(9vR-;c zp6U^u8%6Xn;sk53cWlVeY<@y%Z`wcUDjswt1 z0hq)gSrB_>f4xN!#hLy0c{dgQePqPfUtG-OfY~~TnITv$5IGfy`w>L?-Ml!mFIwjJ zMY}?bGi%RjZUz8d4fNtpP4ZmyO8R+|Px_6mn;u$$y4c?A^&H3A5Mf9so z`Z~7u1~(Uj?K#cb-WZtQbCUaqE|sy%S}P=QDkK!GVn023gbftCxS0s`$rRLQGv^>R zhrW-OWh*v6a!#|SvoG$@QrrcC5IYb6bYk7k+Sla2?VFALO?dqQh?!om6N5PwgAe-} zUa!1}xzq9V0CHriN!$rB?)71Gbs`;%JzU4rmD(USo}M3;%bC|c=c4y`sBz&-<#a-~tvkukc?IUCA4rm3tBOqq7 zyGmekDlk9zlBV_3scRZoZ^JI7_!VW$B%X#C11xK$BA}?I(KJpQ#3(-Vrd$+v@y2|1 zSj3oPp({*ry6#FUbc!wxX?`zLEdQXias`T_u&q42c zfyk*qynbb2-bT9j?%P8TqV&S*bg-Tzds@HUBF98zPYP>LQBMk==*blm zk8zUoq_E5Ns8q~}t0X6d?qrKEU8I969Sq*%IUU-QU7$U40+IVucypWXPtomeht;0S zvDO`(RyJ1r;agzHtW*hV$9#{<$wVX=SzVTV? z+-^GuCq7`V@o;vEz-c%ia5iv~8_xCEHOHiNh222USYqYfE*D5C6@0rhzSIBVwdkV< z*+?+SrXkOTuc|DgOLy7N6Fz>zQF$TMxEcO+kQipEnV{fQP~5kIr=KDRU>q7@hQ9@3 zG=Tl|GtVK4vw6BlRNKxvS60UdDk4+7C&bLzy+9yxDiAk*ir>z4aDqnTSI7b9hY+JU zbuD@-094b6e?}X`CibD%6p!n+Hom#g_$iB*qjRN;|X>;SbU(m_Fx5I5_@Ms z?3wN75XG6@#v>X8z0TLm&f^G02)+d|li4DH$f-b__6bAWS0LI6GR4hJawN3qENbUF z?8zlI_uxG)o+y86Yi+X)&#(=X?7y}`4yQuSh>w|^Z5@C!6o5&bm<6%--%N)n?!U7=qGu0?jErBw z8vOS?#7zIS7l@n+#Lqs$$XMQkov+Nkg&ao4s}Qq~j6(o`N5&Lw5M#F2pj^z}HQO=! z!~PLFPKB;8vz-JsrviH)f=%bYXvqL}Pylp)YZke`)6d1o=)#Hnh1QWl-(}w~JQ_N4UnY4px{M7Ydjr!QgXzpG zf5KJtKP@9Bm9bX!;V9(b!=Vtf`|wKX(j?E)1~DJrKQNaMzntlOxDV90(a{*X!agh& zf;bg|E?&+A)wi)Wo8W}ACNM@13c1dU*JAjC{&`v^o%1>&W33~}u~ z8t}Y+eXlzLelaI*bYT6OT!e~x63~SEF^PXsQ7`&XMZKf74Z=_TwUY+6No)r(YQ6gF z62W4Ut8@6vT$#&X8)rCw6+(@RyJ;Ez8X#nFDrB6yjLG}Hb%>fOB2&CMhrb33L{0_b^Y3FMOh990c7(@i$5#}mG8;IU1qkO15ls5XG7Oc)CNhe9wrl zU+l)@V2-JTn91y9fyk*q{C6ps-3gZgl-Xu_Rf6V^KCCs)tlcL)8vt~l^hoa1Bo9X4 z(4jW)EwyJ%@d>l=~}wgOl7Rjm79R?5C+h0;fVk z!#nJ!F;K7O^oROnZ>Y~^&Ub#(dqtK_@8~}1AN|$7xI>G)ecMFr`|ecOw~~|G_Vq^B z@cKCrGrc}T4CYh}Zb}Bzcp8NuRIgv}qw|U^(W&F9*X}x=PSggm@l?@Ijg4=5pZcJ4 zW^1T%fNG63lXw|oG*10^y2&Am(?5?Mm6J=bW1!a| z>ZgcIaXG|HX6Fh-P6gsKwG8oSfoNB>ui8+0AreZwqUGJbO}ol&U$PMz@$WZnh$Xvl zpC(ak?TX$EK{sp^B){m2n;_^l*>sYae4Etx+d}4aMdKNqxXnHM_=j!_*#{f(iQTXf zuPX$C#kYk}4;S-8zjD*^70}K@gZJvXS$j^(u!r{QnyuMfl*h5v27PO6?Svc+BU)cr zP_dgG+TcFDt-GjeS9f9PI$7L$nQnF+a%ryE`e&;1WEIpnPfmlb@ElMjj^k7uw`nmu zZlnXyUjfki0%ES%+RY(~$JTWo(f(0HO%)NXFHUAdGh?e-AaW`Y&j!RV3N1(Wa?U(% zZj%3lmhd$78sC51xS%5WAlEm+rc<~d^~Vp$!5?2hj9RB-{aWeEBwyABv9Uh=l3f0{ zg`TdHk<}JzoIkFFuCPC9#aK?o*#2*`KYrO+1EPZhFo^@RAogQD?GVNNv4I{)6GZnx zuS4`HViL3HyAU(|Q6~^N6^IMp!Yuk4xL0PMR!^A3qY$$*n{=pz&9o&PK)f78_pCm)gBz}b$MeLb9+#!lHJLg` zgbaZi$81OF3Nu?TusIdja~CnQ$2tIc3cw_OKaoj}BKFLF>JY`5?d=hL+dAUwna~Jk zr$WqRcD+F4R3Ih*@qVb%`TR46X_CtoEzxD40!t?cp`!jK)s=9?#1c;2&x-tFgl;4} zCZhcxG)itlBb}k_eom{rwFUH2fRbzIk~saXS-2}-u=#1ngYsVEtK^N7cbt0=p6B06 zw9p*Z9tbra_EEehu`|RdyBZHqkvjV*{|3-xA%u7RKf5qzJlyT#p+D5Pc$ls1yY)(g zkj<%(J)@fAp`8OTSOL)Ye<4N@`*^5vh%(~ABU-*gBp!BDMD+b%h?((_my*jPlnTUu z7ht5Fe*(KynJq;QBdr)>6sIzKHURJxva>dbjkMc(=3;jGU5?onQ9G7)W+>s2)=Xe? zDzHx>*y*6ImAdvmGy>u@#3*9V>@^NioY@^cqG8bMe0_`}qUT#7W-?nK5IGfyGv|ZZ z5fNqwDN!cT??0IRvp@~A{Ab4Oe&xBC?SU7E;>L@)P~+^_pmw;JEfm7qdG$L~&-9&@+27tL_;^bcrG|#pgoIWVT2kaw-tJ0pf@GmLt0+O>%RS z+#XsiT{?$7iHbUh4LqJJCNAUTKjyHZ5$&%OL;GA##)h@a)#*R6|E$AjjqXO9#8(ib zlto@NGW#s`^o!ccjv@D=k>k$K<>{Lz39s`pTXyUTUC!Nop)fp<+6tGP3YY)B?jD`r z)j?^iP)uTvEC%>DDD361#eKekp67$l1>3wc*-nRT@!8BIe!O0XnCbZT0+v$&TSj2% zXJE;3+*sLu9XSN(T!?YD?Wx7Agc3bL8^k87<>%%ix|14{?${e@oE@E^E6i~xfz7GF zp7t6KseK)Q<_f?hwj9f*L=pSRs@frn)B7wvY$ro%Y0C(+PeUV^eH3CQvn2wNQ-S!$ zt1b+7>~4v&<7yAy4K_))KO9;coP&;aTy@~i=>9)zQ1pD2)&}$`ZhHRv=&rS~P91l+Hi$WH7rIoMegE#xw4-Sj)HuhjK8m4)9ak!>a4M{KoH7KnBX-OSBR^7>Hty045es4xb z(o@E76t~D*v%;1=4=?JxHxoIyYpQi`)-9E%SrI+jLj7xln7ckdE0?eMK(gO)O}6*KJ9;Ogq{Qd%xouZ5My@KnYozV-`nxewh=ql z>9(U=qzx0;oC@qy33fVIh?WfC6*K~~PumT{NGy0}2RTG>X6KG`zP>Vw=t4zA-=~F` z$?PbB$f-b_^&&$&R3O@cu>J@Pgf*OuCA37B9|-ASLtsPIR{qZJGOo3wfLhc~`u^v@KFra-itk(0T(Nmf9M`qy5ZPEtjD zD(78X&rny)M-Hxd5n^^%eA-xSM#q0-oeJVogsHh!x=zgl3#3}_grviJ-bIk1K zZPc~rC;*c=O=AoY@{8(Jbh7zW&|sxc>w(li9ffkyC;A^|N5M3N4h`Cy@iQ zk3h^Gv->*3Zq^2|n7y<#7qgFyb`i2NFA^b#Kvy_ss{}Tu0=q52P6v;nCA+pkx0p@h z=PY~Dp4qb;qBygAdqk&25k07T&Zc-W#7t(Z1tO;cG4%|X-Ev5HVqT9Nm|YDqJF}l{ zZ6`~b1==9SY|~S7F?$U?`Y0>VyP?KK$PLgHX0}#fb1Jakf0~&scK|vo0FyW}3u4dg z@24oDIJ4i~<`CsY5q)#8o0va=n8|FNK;%>)9z+oNC-Len?Fj00`rki7a2D^Anq;Z& zoDyxiOELr%^=xi2?;x7Q0=r8YJ)4U?9dKNv2ZM&macF2K6ZaEO4f%7xyG9ypJ_wM0 z=VWZOL94tqU#-Dv_?32iR0rS_$RSJ~hL}A}UieqTWSBOHg~_Te>Xi6}>htM=N(qyz zp~i*D!O#^BlNI6vPQ?dvp5!n&+yVIWK(Wpw)uE}#hJZtgk$zv=ylBYQADQr zJcyaht`~@$3dAQX!EEEU;h6pX02cv2L5$+mHRqPU)v&j;L5$ghPs+vYPxNr5M93>p zSE37o))Zp;MzQ>Hm+qOz zuf=Y!uf?uO6_F_K`0nIO+p0+4hv1(A`gj}HOQWT{W4#`v7opSJ-cgUfF`}g=_>uMvsd_!@qVFQvewtBL0#KkW1f9|f-C8EJhRZCi zC^6PNb1$>UyGuh4!xt+`R5e8+cg9EQ?fSm7lZqx7XnAVO_0lPBDLg@>*!NWzT4u_* zjtQm|*^uEJy^>$6IUUTC=oqF4DVV%CN<|ZVeGYUDrV`S8rR`@j=jbK*T1_-7PtdJp z!c(}+@`MtTf_Wx+#h*0Q5Kr9?1y8lAnnH^^vpm)L(rOh=a6A7L)7$B}UOL4sg(rv< zg}&-E%gidSV}h&qvN6Cpdd0q0b2^wO(UEr%hY;!&c(Iv^^j$;R_oV6#R`ZFrpF%oL znv1lWXjYz}Tg!x}aGB)^CB~X(k~PP3KMU*kI|MwHscO2m&z)I_<-W93MS4Ht9^k1H z*Gs3krSJriqR>};)G{-G>zH8do;C(JN7Iy6b2^wO(J@{RQgnE6vWg~HRt8<8sDw0k zv;EBA9L*eBO*AV{(5+>{Q@G6Xgc6g2c_w*3#`nVd)!!}S--#8fnm+W$omrk%`O-QS z>3fj;8(fj9=6Y$g6rNZK=?YctW|>*f2k3h)d)OGT)$)3Cz=U-$Pokqh4^nh^u~0=5 z)X>H(Rc}TmqcD^;INC8YT;t9dTxXy(vrqFH%@ZY>j@!ey2xl$aFEGs#miz8BWt z`wil$UR6_Qac7pN^}ckKigbTw8}L-e_0lPBDLg@>uiW^mf9(cq@-C)2wEox?xn`WB zUnNTT&+A~GL`RVxr0DQsTNO?4N_Xfgq!QBnsO_f{=V<28YJyIAf^IDnp2B68CzO~J z%rnUYI&nV>>r-tJPlHu8eV~s!WBfFQ_|gF?n&6>*z*9NbOQ*P{@C1>f&{zGyGBcj* zm|*5Eux&EuXx`CkP6zWOIx6)bMTZyXs%V1eXj_-6&!7_0e6#JRnsYRBXf@HSJVCdX z2~XiN%M(gW3g(&Q)}t&>y$=9S4XU~(RnMJSp7JhXhokTHTEPS#CBf4wu9r@6OW_G3 z{gC;ppIK%KNDo=_dLe8pTC!?~JKy&Ao@upP{X<+oi|C9iqy#vK;1WuL8Ul4 zUgOw#wFz6)_yc0@pB>pKz5l#PX?l+}TyoH7rHw!2G5hMuWn0%A(~7Fsq(-R^>C1-f zRaQcCwJ#l}B8|VjNDF;Llk26?QUa2dP^(bY!krN|Q~7`ieo7)Y!&a-Lg#Ww_4oJ~a zr3Yykda+tXdT$?XRa5o3R6?4ocS5d?b2LS3H9@BV3Ef&I0U0i{0f`c0%_Ej(Y*|L9 zm#tC-be=@IoAm)`78|%XHh?B;Uz(?)2_CRSt>=1av=pLP3AGAU{nb)a#0N~UurB|1v2O;+6$T-;k8dYtM@$E!%+S=|#6HH_=g$KE-yU)O?2ap72ibmBagHWwttOh4DCpKQ zAu3#Ei9(42kc0u@crc6Sh!$MxtN@SIqpAW|Iq zs?#ks?YWK#uHC^#0q1Cr*J@4&6D2yz^dQBD7t2+obuaC>Q}t3RANlZRFl z%}Nw>Ync!gF0(|TguYtOx`?RF6j2qa{`BcF>gNz%e!3rsy^vc}LepGpi18l?+?!_G z;vS7(cID>OAhzpw)S2$P@<oH&(m+U_onc-yj?{Qn>tEh?cgIvHXVv5)v89HMx{SN6|^sIww6#YaNSjQI8f zkyC*!s0B0+5xEu29u>+apX$_<#vE zw?wYgRx6`~|GW+kK+(}h57Gqc#Q`ePK5z+il~W06UYbDSiQB zW&oB5L{0_bk0v}u?1h#axVcFVgcjnL=+f!ZzOm@oZ+Tv(E4PH{^KbBHuM`>H2zhw!WAIwnZAK(3B+w6xM{ zP6vm%=&09&G;4Zsy^1E-yEAmHq7u@))@sh{2hGhW;Xg&EVGiBW+kO(};W8WMC^6PN z3iHQ)=P=B066Ync~wSW`=p0K;%>)<`G2x zMzV)#Beof4?aZ8Ca^;+(HLg~3IyhoQ$6!53)2tVVsc3>bkAtoOR6?4MvHgta9Ib7% znrPODg>EgAhz*z7h((F9=2671|BWMdyp7mP^TQF_1Gz;Uv852B{?~~aZ4t5iXoFb9 zwxg?!*>CqR?d>Ags&Ntf$@cMxEthcMRKj7yc#c>P;88RJ;`<;*5&MWObco^+JO83w zh`J~uQ+y1>%!utH5IGfyXA(pku?o{h>>mk4?5~_;tYztYRG+uAvrc;^hYy}^neYhsbt+LhXDd9h_gJV~8H0VJ( zuk0`NXwN}K6KurZZEC&Me5>uJfQ}P@Laip~G;CjIW($_BlA3aletyUQN*{VtRcn-5(bUthtxT;y+V8ISw{5>}i_SpAuz zr${W65olgb)88VrT*L$R6^Ky-{8M1NIBfCoU)D2isnjf2u@x(FU>EOFDT5D(X!(zo25`M^w~3UH^nQo&syPwJm8;$L)?B zXlMm7N<(Crtom5J_rn&}L9JrLWP7@#m)(08T@Ve$d!Wm?@LnhkFKNaLKb#6bbz>Yq z=Q$|76pBfdL5v#Uhsker8PH;j`>~cDql6!22seBbapqtDvawjh{{k`7nUe)9rvi3g z0!zbWcVJSsxA$NhX926j9CYOJS4js|%JuI{7T3vRc8>=ztj_sp%+@*H78~mmU zY)%FCz|lNR{`gQmeUSp7?+-$Z(R*W+T*sK=5XI@e88<88KJ|y8*Li*GX2 z=dJMi&d{ynskxd;&tEsN)iHzQYX#RY)A6(dwK6Bc8FW1_yE8lE#tcO7K~Uqy(?sYB z`>9r7b1JZ}7{Pwp@V)}LKmnM<8CekfwZbHaC{F)NxWx&Gra`Ym^!K040e)V7g_y}~ zoj~MNAii}AnC%@o$2&_;*-WBK)^oh-ZFqHED2CbbG@Ls%$s5pjWY(1N^cT*Ll>X?K zo%WzBh1p%O6!$8@;L7*HT`w>>6_|sE(YFdtZp1_6_jl~rw?pIt)?t!mP?b4E>>j}NywIobgJ8X{ zmH0(V>Es+})73|FXiGGLw#e!u^mf48p)GMMv}q;3lGl$$c8}nEZX_yOD*D61)6Zq){{sjw?uq|46z z>A0l`lTO`YYphI#heKC*Dr_dOIThF~33fWT4=owM=3f~<5O07OMeLUrM><4t`WKeE zXy_b8^awO!8oUQ$CbIbuHQ}ZD!>SeZN0%0h=*nnz7p%ZNIB-FC^rzo8d+rzRueg$v+~I#9It}}& zP)OiZNa%k(`{|dr!se7geX<+WXESG6;7EE4VvMB7M`{E95>Fv7)0Mx!^Kf}IS zPIBAV4PC?Qogrp=y+{n^R1Ci1IvVfxqmd17TB}X+V)SH94L_8=KV96*?wkI&?FYVj z9%|e=cL(SS)81B4a4IN%9?Z1gzPMGiQxf*8e_FK4n3FAB#~9(QVzf2|c8Gk&x7Qmt8r z$IRxrT(E&2VwG*lL(!jx&t&e1&fm~q&Xwttjo7fTpE?N%oC*nDuVp_iTNpOyaHvnV z%V|y-G=rqB5Mv}oR^BH&`{EAW+uL_00H}R)e}a8aaFTm?yt9qiXNng<%=CJR7|f{{ zeC{B4-C*Ualj3cD9XkYK%pf_Ft*qAZbfz|l{oH&)7aOyWr!Kgu2;=EesBz<|5p;$9 zR4TAJ71-0SVLu(<0KBJ5Sd&;}*PoHSEI*#!a){#ezjl%fuVo9^Fo$R`G-5nm1~HS_ zGJ(jcK>T|knB7>brMFL$Wo><;v(u7hsJ?(!d*Ah25lF_Yas z0+UmL`Oww;{k6tMExADhFV)F4jyU1u=@)2X9k{C{Axzk7$P|q9YZNDQ*iflitAs zkyC+KOc41s^3S}{PCgp>I!S&7w8sxTB_(&_BMrLc7=Q4kJ31<8PsT z^|~6zFQU)0%e%iK>mfel<)^bL-d5p&#@lkOW)d|Jqu$F8e>Cz&*AMUbuJ|6nKHww^ zdU~!;_q!39`4jJ>9Z`D!Lqy3Gt7KwMCFiITdjAc?7(RP$Cm)U64>i=Zoqf}m*_vj4 zG;;MexyH;5#co;}{2H^Zzi!LFV-|{+a+3SkZ6da*!*ka#iCRu2YVWurc5e5HgA*Sx z4aYk;-@F=zbFzhV{C~sw7kj;!w0^T2%=CK`{Vw+?!N;lK`|)y~wD8f$f#|fF;__}R z(P+MkO+OFh<)X5W$G)Fnms7PRj3hbr?J00AGmh9SB&B;W3ysQHHXxOk#`InwacHE3AJiJQPe6XpF8|Jn69*ckaA{yRsyFv;>9{u}jg zF8^JAjALs%sBv-F61u|vs}yoL6>?7P$K-tQvW|>Tl@XJ87h*2|4RVO${#%LLj4(28 zhF*tgI5c8pTnjPNe{%&QrvhV$ILoimx@23U$$GuvB{ghMZ4et7`)|(0 z?C#!<=b^^g;nr_%&Z!dEoC@rpFJ)$LasZ}drH5F!8)7bITRTK?X74`Q`FgJ?q7uKN z?3iOkSuGGb6^N$+;zuurN5&`2lSwWM(d9=*I+zowyu_}F7Dd)Xb~F@Z`)K56D|y(c z50@ebMyer38PVCTgLG+<4`_p!5BvU|%ZCGwa*X}_0-Nc4cqVj(M@Ov?#HkQ;U?2A3 zi)hKS+b#;gB(~3j*w1cd4pH2PUv+eddPNbv@dcBE(eXUQ%+XON5IGfy<1WGI*b6O` z*;dGb*=-?aXZG{wb#$!y+|Os>-JxcGMk&d13o{Nlx+o3D$uX-VaQz2uo-t4a@(2_^O zSqgxzPiH~w{dI~%6!+JrBOIc$qlkXPN)#jEN4qG^SV659h@1+<5f@=3Bmqa6ZR&Au zhN|q$);+5u;S03aD`-VS?J>ekU3PHm3sn?Ox36Sq{K?3cw^z z%YxW5yUrnsGyCM>j@dt-iTJwVTMmCP`!mGMk&riDF3?aa5ceU7bP~ARr`%YXO&~`^ znM5Oq*_pi&061h;e!|T&nVm(K6SMD_{nXysaah!j$_m5FS51pmD*`)ufoAWGxmr!cYctlMg+c25b?AK33=7l2Y3Xi9@0-IBTy&J(!2eZ+V0j&K} zoMRHJAVv}U@pO_y6sNz`BkCSSGzl6pQ;mg~IiA`JL{0_bu=5#WBY|ko^=5H%lbjAM zIx={X%Da6FDrL7X`5sC3jtSnMTZTr7S~Sw%Z)zl;bfo8@Kg3NC^3ll2t}*}k|Mmg* zm{`k6=zSdY#puxO7SCXzop>Az?aUtZqmkvc>EH-x=b^!SbwhaNX_D9IT9lOP3Y|V0 z+3!8P=k;3jt+90}a)_<-EvU$~0$pFcGlwZ)*S6ONvDj+(C0A^Xqi1^MQq@?faWmuh zbxcDzwmOO9I2Fe&IF}vQ%>j50jevL-#9XoUgF_ULtF9o z0+CaJxH}*|4pll$HRI;=d>gcAZ1FVp8ZW!}qmh?$eG}XkS)X6$*XNi2$NKzO>B}Tb zv_Z@t1Aflsk8Qp68)rwX-=wQyw<;+WV>uOL59`7Hcoi)tSr z%x=Ff7qf5B!^0Bk)1byh`fFGRg(JOOU~?+4KR%n8y~F`X`E}IrEbAygi*8=4h~ms1 z;Sn{BB5JFMOz|ENGnwrp5IGfyM-W7c+0)TNnJq>R%pL(TJG0|vDzh!ML5$g#eo{N) zzfad6;FvuDY8mjgq&akgxr*NK!GCMo)@`gj0 zna81E`PWc*!4o?t3$Z%LZXr$f=VY`th=sxv^|?afru`i89iYaALPzKd53*sxGpEAy z;4_)$zh@|bJOx1C54H3~egOR-yWb&-hr-Wo9HPgd*CCn-jaaHog_s!%qXZ(S0`a}> z7-TnZ}Y;R}S9BmL|_N*UsF?)!&9kQ!px2r*qjRNod|Y1 zn1Pnn6t?>-0F&4)3u4b~u|pJRb|yXaD-&vI6w#99Ob(cx4>6P3$pVp6fq26iV74We z?i#aOJkE_-aB9rfJggyO`L`n`yv6eS>Rilzw~w=96x6r~8I2yp%uW^9oC@qWPG@FM zaRAQnh)>Ld*faZ`LlkGWr$_Y5^oXy2^~`>sgV`AZkyC-V3n0#fDxJP&b90k?7+S&; zOgcFn6?OXBjI~nYcdV6S3*ON5)it91RI9xtL%Upy;ux~A8W}7+y-4y`6KPd}hKYV66L~&+M z^N5~%Aj0hW_ua&_8e%51)dG=If%y5U46(@<;EJITqlW3PPdDj? z_SdyR%oR6%t%k>k&&%{swET)TiW=S+y27qlA$D>qc6RQ{uBg3VW8wXGB^FHLO^8v% z-W8WQL~&Ofl79M{1J_HVrM$RsZEM8E=wyozJy(UVlIUUTC=xBBsQ;2$n zUMx`21n1DcJyp-664LyT?Wc%y^m-w!CYqHe=+-jfDO_fGLWxPiJd=Fv9?R3NUxTM| zRZXGAomq%|d}*1A^c{hD;HiY`rBmEec!Ee#=&NqF%nar_CirT85n_OI^l~Dt=5#Pm zqGPfir0DSCR25Bd8g2Je_3>0fnrGR5Dmh25ve9ayS$TqPEfb!?WtJzDm=w%2$>CEh zPw(Fgo>r-9ddEI@W_hajr7KjV_bk&!hc=|^CUV7^&mxu7mHLh!AW%4fT|Zz328pV_S2qoG;?S*L8m-Hx0VS{;WEn; zN=ypondCWlTb|yb7c`UV0jiqbvCo|`etJ=$FYTkE2@ZH2Je6_1G+GKztb|&Hsy=O* z8N~^FwZ30-DPAj;6t@(f zAl9TpRnN7|G`oW8m|*|cix2~xqt_%+!hc=|^CUXj>OqPQFSb|F1V^lgt|BTS&6};} z63)@gq16PP@&w&lCOn19EKevgDVS%HjV4>3hJOy8hN)@_E$)o*(-h)M2dij;3*H1z zeYjpa#Vv&=h!lms>cJNOWUga^Ew2_K1~^Caj#hIzm?zOOR}WHjc(F=F6SVskx+B->`O6Ie3t&(#z?`SorgLx7i z)q0Sk!;7^lnqXJDCPCG!sDw1XWIeEgb2M{kHPNg*LARC(PvJ7l6G}`9=9%P#iI%6Y zCee%bANvUx;V#%ywV zE@p3_$EM{BYckY0W*06IJKQC;27%3~z+QPYGkd-RFcFP_cr?T)V$W=2hbYeMzw{)r zAlgz9@%3Sf$P~AMn8|Ejh1}>vsX#mi5Z{C<-QVlVD^~hGB_|xYM3-J}E+BixMJiX- zqVn^c#4FQ-C-zh0yHOLmToLSO)5O&;71^)NML#uu#tW=OH=sHrXZ;H?%9f6trUJ(# z6WSo=-;Q;;{JRvdS;okz9v@+I;qwe7JaU=|d7KJ)n>(_9$Dt*UoQY^;{R=UQ*!y>1 zhbZpf6Fs6sqlgYuMC4zHnf@&hh@1+9d-=Z8;4fUh0DI;#JS9FW;{t1v6*ox z{Hd%gv9J5I;?qi6(I+y^m=*t=q?Llk$#`*;a55KVzzhp3ApqW6zN%ydPOK;%>)zJDYp zu`AF*neB-jaGnV8UgV`5Tl4avz;BHII~k*xJm4oD5BF85xt)bVkWcg1tO;camW#N{~9fn*{yF& zc$>r~h*6x%Y}M@=GVg1H7_)yY&Bg5Z^q8|u#@9iOi;ywU6`npi32aUU_PoQH*`pnR z?h1hRud^Wb%zp0>#hJa_Bl>!5#MkTjbjbeju7;S&Y>7bRR3Pq35NQFm@fB{Y%&tZb z5%4+0?92`V01la#v_Xv7hu+D>>k-`xz0TL4{LeAF6k;Z`Wde~?fmnT*{nU6KDWm(n1ghQQ{C*K> zr1wX1;wEU`;!G!-qoQ6R*p1KK==&&~#P1JqFYvJsHPwx_WY`|QwLN^1(F6TTQ$zmL z_;Zm48+cW3l0R`0fy7tk)>M9tm2XQN)iBxelGHVcjS#bk$*IzhNxr8IVqr40HdmND zNRML60L+6L=akXV6%Lbf@d2megX0h7Fj+iG!{iJFU=k;0LF~h%pF#qA(wGCNoxaw-r{Ac!=zl}FZ`r|A;XBu@B`HRqI(%Iq%MAja&%w{tOjn788$ zsBz4`rz@b1NslXn85Hq`j127ehz^s9oi`nNKqByg&8#`uSyOj-dh>lZ4rno)C zOlC(3L{0_b>UIqATBy=>m9XP{L?`xL8v zVup5}ovOB>?TW_1vJw3D@g?;Cn&w~F?}?v#3rpkr4u;a=zjB)) zd({M2ki>t~`#@d=2AjwpzGgFSP#xX8RYGN{>LEw+>D9Y*q0D|C{m_L&_a07-+fieF zH#s#vEYi3eHRdMMsL5~n2Uk}Ff6_{f-my)!=)LSiJJ3DVRvfZd8pp;qY#q`%9jv2j zsp_FEYJ#swg6^8GB@A%w;pyO8D&yv@Yk~zN@?U99*HTW`?!f&W==z&U#|c(pBMv?= z+MD90)Ld3Z%uOclMz34X&56Dep>G}K|1b2FR?M5hO)FlWie&m^ZW#2ew1{eg=jK?6 z?#rNO5K`6oskd5iS3wJY!eVT7hu7NEn*>W6>rK6MWIa{nBd^*c3o8oPoV#h;hSJ1i z^bG#x`G+pdPc5T{`4g7V|9rFgg>>&erHR+*I1bOn;V0?;ba3lz+xJ71V`WKEcAir< z2DL}f|E$bVeO5M`?)c04gxo}LI~4-2x1f@H(xP$zq+WtKyG*h2;3Lp8w^ zB94c3O>mct5;pdU3Tx~WTX^S&1N}|J<~)hb>p*uw;u|`S!?SSsVL80~F&nx+Ju0D_ zq66vR7Aoe^cN68f7u_G~;de;Dp6DhGk?}L60 zqkd|Fa~^kreznyT3G{0*Ol+Vx9`6JFYnm`9zit?x#uOKMJd)t?K4a7Y3UN zL^$5uf$!{rHtKm|1fKlo5%y&HLQ-0tQKc2pK7o3rU(dEwVJTTl5mQ1XwBA|Bxr*)s z=!d;D-E}~>it75o?bgxndpRBF52d7@p?OCb>2Gxx`tI?{p6<3d5*=q_;NkF~+5>3y zFoSGjopI%)jGDJ)kycfgWuhw@$L>L8qd_Y>m2bw-p(^s z>kx9pE6BkSQ3vd59dLi7_1K1BWIz2x_K3f7orDY`dp+?1+iW^^M^7N$5pG7&F~XeU zRA2`d_MX0DdOjX)K{sD7P@02VZ&He{bzmIDyy~ESf2JcDV5;ACQ9x(RFCYhMV~m>d z0+3Sy*ndy^r6&r{o4H{ym5zmCqd&AoBc6sr{&S5=>3z?9@Sr+sTkP6O1kupUqet>u z(VRfThpX(0Dl{Pj}AE@;FAw3>X^F=e7Cu*t6)Ql>v zno;p;dg%c#@}D77=zd9>vw2xftL`&MWZu%j{5=n(!matKqi~a(U1d|#J*fj(QE$hd zN@Mv;=P1lVX?h;en%Q$H*ZWOgW^=%X&r&8*{{OVhHo@nFh75E+f$|U>p{SN4(e-lQ z(e|gL?;pC17(&xp{)9pFe>xaQx4-gopbzDEInYFEcX72(LG2RypC}AQP<{R}x`%Ej z#e(<%IzWAQiJ`(YcNhwDEd^S|nz*UHfu?k_FmowTLM-L2DYr|3<+hgNfhP6^DDwTu zQlK(c(=G)bru+TalGn(R*ixVr{j8@kN|s$^TZewCY%E+z_kX67n_fA99^o0vE9G*u zdW~Au1g+=+1OAg=kNru94@kFA%(tqu{mgD61;jzNpV`msp~%lHyQU|(j2EfL&~eUp zr##_*(pGOB?w^XM#EOYNJWnxpQK6oqkP=qdh?V78WxZ{y-NVZG@M^w!(gdCD;iB;2 zbWkwe4y7Hq=8<&!AftTop>}y|TXV=Q9O+k3)2Xy3_=5iDznWk)NxXPS2OFF4sw#0C zucUs2{LOtV-|#xY6S0cI=D{&ZKKE~xsDa)Ok!sa;S_q~qBZ zRJ+@{L2H{PB%f@9yghR$fb7p4xB(Y7xm%M_!XHH9*s9j z?f<#j(b4z|)h7!Q+fo`HjsGJg;W+}M@lh1|(GfiZ9UE)nM&niXK;~#HV;8M?$DSv2 zi8ZHiIy}~&jK*DKHSK6DAPd=&gJDtR473mW>1+F0Nj#Ee?tG+1X6BFRZqan|@|WCb z9Dr5_Q>&U_EKOScC!=vH=?F)t6pyy5vyH~f?V)U=@pOAAV>B*>L9K$P?1ULCpgcwB z?zVb-GzPI^qVG3qNWW`YN8|NY*)mkA&KQjs*u!(};n-*#L-QT~uwgXbOE=5$Xxxtq z?Pxsm7C##EskA2OPXF^?O|X`xJUbdMqc;Ip1h-LLdcP3l9&{UOI#~SzkH#ygoNR4x z`_D2O&!-oS@F@6%?m^ShxSW*pXtb#vja%q=w$V7r)(ytlG$HxqeaPF4NnsGB^7@ zPPc9-vTMZjP}1QxsQ>OO7ggK|0xg=-T}x#l*sC?Ip0v~VQ5O*3gcyZ5@|r3+8JO)* zv|y4$uT*N99mNnuVT!MWn6XXXy^LX%39PqvwAcPFq9_n}S5}W=S{ny#S%FFJ4Lt;w z7`k#fjvcg!=r-`qPH+$kP)Muv3!o-o-9NfF1L2t}dmbKT3Cp>kp9 zu^mE=OKPVk(IN{(@3?giMci?NvZHvtkA#mYo(nP4aeWw8AAz+U!Qw$P^XE**UCRng zasc%Fe;jut?X~dq@((Tk={!KT2CWm%BHeo5)Ir1B$>oc#T`IbEp;$?uSHcfzU$fa> z!8nQbt9kV9N)>B@>YMH4$PnvErr(k!m(x%2jfd6*vnbCl;bR}UV}~vrzHR>P{PR>3 zjG0Nsf*Qs=M4qJG`!Nc3t1bwN5W&&uq+Z`nhjfT+CE>zNlTkpxOuL>O>+HyFZ zx3r-Wd!88#r57#8q;?e%TAJ=XpfpW0QkrHaGkX*%kvVQK0@m;U52XD6ZH}8)#7!$+ zE<`fD0E&WlFAhikeB{VeCh;P~c;x>}NNA$FFVu=Az>yc~Y&D%cm3_9lmIBeA(NgC; z63&F4aL7ku>$!Yv2DH`QOmYv1i|Dy^J)ur5zwPQOnWY|ay~l%nn{2(;^>(5DHpI+O zAHbnLKtjF9!kLD;c9xepDxJKY3+Y66^rG9zwsa%f(P~BKqgP>Xt7(1Ea?RGYyYWJX zL-T&#Wj4WNPUwWTQTtDD;b|1*DN+&*Ykj!4o16_b{`X}LLkasVvH|r^g3r$Pa9uA&bzrTA z7{xkrusZKshb8X3J|4^4yd&#>>jo(nQ``??rUxUtOBWM3V)JO!)!*p@kpsd#Ax07E ztplf_>uQ?M8Xji`sDWkEZR*YVDHoehl5KXz@7OqM!PC$cVl&(B(wvse=@Q0)x>S%pl&wtWRgob z5xTBkUPAZmP$cuMIC=GdQ!5$}UCYQRkD;16H)Hd&-5D6DSK!o)xC_DSX6=Ug`(GS9T(BMdM31f#Yx=Nq!s&j3vo~#{GwJhiAso3 zy41lR(R$80c#JlPIk?@AN@skX)t`tKIt|n~2OkApVF%9;_Ba*x4sXuv^>6^TQ2_LQ z(#P1&C}Qv6LWd~s;IHV2Ao_={LWCSV3mW0zX%I6VTqzJa6^N6XVLrP8EtJ`w$dPO5 z`EiI*oXYHQ0H~%|XsZok%+{^W#q2)bjw7RXtbCN22{SuaU~?+4KW)m){>9t87`t=O z2#6no7)9)vo$nCEnSJO7$Lyof>wJBhBBJ|eA!agLB@j6kh#dg&e1T|(P98U>?;Fj? z66A$EbS@z-c<9v7(la!4WW+R&D0`8$nB>zrlwri&iG%9b(OQ+>e*iJclKR!YmxujY zrVV0#ZTK#iU;7fj5}&e+Qz30@z<%}bNL5w2ye*M8A ziu-lt_YTn#-i`H$u7^g9m@6P=`n6Udaw-rnB8c>3(-AF{*#nS6{Ot}gic^`j@8w}; z|9IGkK=`#d4}Y7B*&=VpHc>mCgsw2Nbpo4HfjzqkGwa{WGgJYX#8nWZh&{6t9ilk1 z4-n_#>uVp5Fk7gI==vSROlDUIL{0@_BZ5fGeleY?QD)ym4$Lls7{#f~+V}D>vkz&5 zSj=|$CKt0`k%eN%oaqre%AhOE>?(oHslYzHF*AD&S~7s$6o5$-WI^niJ>nZh6lb>F zBT7aQ&3}l=LCn4gF_YPPfyk*qtZc*(-{E~(nl9~JG=!Ve`!At|_$9jB&v@H(lK1KD zdpzkkKY1!DCrVIR-bBY^s>F}rD?Wa+SAWEJN%~y!wz4G z931`u#Ox0L_d#n6y+1@7#2nt^Yo#~-vmOxf;_&}LjhpH(fv&K_*9)7R3Y!;h!)%Ul z0NN=4`hId2#NOd2Iz(}Y-?qvjY7<5D-UH6ziy&q?yg?vxDiB}EV~C&89+h|aSZ;2T zBcLVbaB>CvuvPFZH=*a3QAx*OH*I1Pogrp-$yL%Fecw_W#9UJSWiFRYAZo-V`$CO# z$-C2p0Nsr=yye2{R8Ga-nyovNy=$gvOx%w~WTZ(5t zM5g#Kh?y>FCJ;Flh;0Dz6oF{R;QFa>$r?`Li(Y$vvnx50&u_|kb#Njv!>fZQu8*t^ zy3;|s&DB6V-MqM_7KwF`3xbtMTXiKa=pStsOx_K*CawH}8OJ@M$51D9MH?GBX}i6X zwwpa>c6+kG-aA@VP>}ckDEkgLD~ja*g=NlFeD0z?S?@$w&w%OVPEic2YvAY8Q^dSt z!i*U+a)+Y$l=V4)fjiEK89f6A6!Y#Hb}=AkR8%msq9YniCt^W7(fv&0U zuKspabxluq&%COIkHPt|y)ATnrF?l@|ISsU&RSG$nbFGRnwd<(`I2-5_no?a)qJdY zft(H!Z3{UWr2N4#e}%mYEx{AuAmdS&(Gkpw$k`G3NJLJJ$QcoNZ$!QU(%OC%q_zE! zD-Z?`Yug`ygSO|pjE>;*i2N!d-;2nnBJ$0MeBF`wJ&;-OfKq;@ByI0+TWI@qyK(RL zXnVisxc7f4lyXzaU$9-Ft!uk+3wpe?p!ZAXy}$HV>}Hg57iivQme;nRhM7y>lgwi@ za|@rD*UUA3Mdq%WS&z(Z#x1CATVR<>rOAyov#+nYs@9yp^t@-QuqY{>bi~hntMEC3 z9F~gsKbEX^fo5LsTu;q~eO!=*ar1wL$>s@J3SN_Bou%IcdrQzM7c*tUsTThVe-0iL zMoTbV%l?%~eg{c1w6X#D*;-ja^Rl(_Wrqk{kgb(hH8Wc)4{Bz&TG{<4(aJxm75U$^ zG8|Ru#HHXAk)m2TT1b4yRuZR`z2qXUmFMO-WI38N*LD@n)T z8tS%VaMK?_;HJ`px5B{%+#zcomS|LXsA}m2;~H=aD1`m~G#|H|@Qfyzo-`C%!W!PO zaBQt86b_Z{((>lQBfswp6h*m>;S|K+W)X$S)+aKF2zPHrwK`u-C^?I|xzxe8I|L2> z0BmG|X>mLmWQ}507~I?@Js6Bl9agZa}t32%Ch=lBAGnNADUPqiIOr)kw0*Gj}}tCe#t+ zwo0BaSNMXID`x1No+#V#Oiyv1>WQ4NsNM5=I`P%n@=c%5^35(i2ucyJUP)}2xXnaUf8dK#= zi?~x983uQ$p2kbLQc-G}o=CzAqoVh{+#s5nDP_W7#!I|vl`8}tSIo;0J(-NTE)(7n zk@FoH2CL4ctU2I7@`2jUV!1-(aK%ir(-UPop6MyhQ$3Lr7PWg`PsifJL=fG-+WS*I zNYm4Rh}+;u#HWYpPjynR#G0lj5dvAUq9xUgoX16P!Z{71wSpEKibVb*8KNhXG2CUs zJ0fy~Bg3GN-X5C4f#glKol$ay$l;0^I;SVfc0AKloTqvsCoF3Byq>lXsi)~qbVqTj zG$!~FLL%-oN8+6IOzLThlq(gbrs;`fM=@6Pa@9Ml53E}B|AM)wjo}}^c3f*p2!J{+C8tQ7hdGJ z8{|a8wWKk@j}Q`Z2RIV(38#|LqXsEgDoRb$6G`02qN2yEW`;_cFc>qtK`J)O72=L7 z=4FVUOvXr;3Gax=QI5pCN$(INz=7nIw4L#Cg~;KGnPjIY%62@{Q=F%IA}6%&c|F}c zn|f+>qVYj9X-xIh8F6PiG7L_dK|M{Aa;2iwG(C}o7e+;QRL#tlGI;;2$H0A~Bso+H8LyFRv>S<`iZE|E7e0(4EG(gJXbGMS{ynrOUFe>^d#Xnrigu%wo zH;A4_$Q9y_E9Pa0o=nDAmkIBP$nlO0gD*95j{*mhpH#_Hn#DTDWa^=h$PA?~x_g z;fk4LrzgsGJkwL0r+OkMENb`sxC@@0y_8R#)xnvE$%hd};{Q@`9R8OhzfbkUyKzO) zS}8wU;!@lDc!2&Ct9tL_-=|yP@l}@edgB$s{9T%lXXsD2K|cO{T3>ibo=tV7tWAow z1Q$uMj^G3&H8e+XHb|NBfO`l?`9t4#mU6PE=1$YUK750!<6Cja>|DIqQk;v2Z24QX zQYm;;b7bG3g&C+`qt$U}Zn6|D@M~sY<0!t!^zVQ<*`pJ(=f`9ZkIR+}$i73x4De#$ zcfO5@nmGu#*}sw^Iv&5^7UoZ7CSG@_2lPVqO9grVz1RuEJ}me0LMbHJ(lwMPCyptj zC9JQNKFAZiQ1%3W@h7tAaEUZ6HmqGN>i~Za){#b}3r$dWyfVrD5F-p`%4U@4bl`^}XaZ6Cnui?(BCUNdDmw%;R~36n3{X50t0 zZ68>sEXVe{Rx`0|Vl`LQnplpVCCjlbVS{$6R1^Yx4hx_7SUNNbIGoe{Ai=8}r+ZWL zf6M9am0}&izmb^J-2~E{t_7t0!Lp}Hxwz9Ec1Yam7K&E!Cr-Ds=BU$22C8qW)y3(^ zq0_ByGQGDrrwbCY7sq5TI+(4hY{`J^H|`;{xYIF*Z9J@*F{fku>U7sIGwpP9V@}7y zrE4fJ=5+nN(+Ooxm;Xp?bcKM5JKa!eM7khOx1(IZ@g;8I{3@?sy8*N#Xh&jB z_aaDHECBa@kn#u1UL)n=PWRb?ai?1%TE(9@-OHMzjv*PSeu!2Vrz3|Bv5PXjL*R?P zVsCnUDU@=LSY#RGjVzQIdB6vvldGkHxRHB{RDmN#{`D?glqeTQp3AFTmn3CI7C~i3 zew;-s82Nh5%r^1`n%Rw!o1Bq_5F;P;zI13Ra5y8scc&n&Y~&|2|F?`hMT&IZ@vXF)}$caxZ1ZjJzafWGUy2 zT<}H~%8dN?1)`Iipp%4=pSc4_!K9HNl8aJNv6CJ@|kY?l! zK*}Giw33vI8+onfxRGmOMy}Bu9m$e`>aX6;>SAPaXyhl9DMn`7VXm5+k%bT=U-hnZXgY9|f}f!8X+6$ZzN2`*^aX#5mQz}$oh5Ro^{BmI>>AOy zKSpfSjZ5sT`M>274N|NF-$?Q*bO*EKqO*TYLYBkQ8g$t~-qr9oC zvr|m!Co_jl(~fun-uYokfy$?Z!#wRM-@8f7YwN{PZC=Yhl&+yXnPQmFj_^J!l=KA*>@0Vmsd9nYu=?z1Ugb)3r}Vs51eN*ha2BoLvpZ^Lw$HAsncev8 zNawRch|hlVwsh!G=};KVo<@&=Va0a+RrL=UGg7@|4nSrpcxP|%n18NV3SI%F5n~W? z7WKw+kPz|*!LMb?Xp#o78UjVJ92VL@Y8WdPK&sCc2e|_Hkpz&=%wchaUNPE*#b&uG zO_pZ$nd(q&bx;y{LGn$~xYl~qAV)k&1qxIB6C4WFVuXugSQc=AN(65YIkp@O?(t)M8oqks)zY! z$Zc=(V-oMTk<~UJ`%6B1q7|rCG375xSJ#7a$Gg|4K6$L{U>rRu9C&A21FRxn^C``s zFwg_=;@dzRRQjS%INtgosrBK*H|Q7d+@z-00Y6er-kD&I zQd5tOOf94vXIry7X>w6@VSkF1#*}l!A@wPWKJ61q5k@9$4`2v#VM4GR*yvthT0TV6KRIedM*V(q#7e z_?LUhm%76I7dKefp?6`T2!3x%nbG|hnYDLMrn6M%50cz4w=WB|4f2hI{dOSh$)?8@ z@4ND4soJ}H%PHwnNKZX}7TT2$f%VneO;SXd8@?pp&T!tvvRDy~IUIc&XYFDvwR%yK zu6pr7eD6TSmhyjeqD{ko6@4)|d+-DC|l|S@rxJc3CKKlw;3WiAH4nb`%7hHI? zV}t{Q(GskW#66+*6IM4f)nDZGl(zSOYo_|T6zd2cL85p4pcACcRPO{y#5gY_>k%tW}TSn$#&lfyaWEBXdXY=S8vX^PfZ zMQcQNNH=|zd~0%QtVvem^i{ZM^0hMQlbOS&XKH3_`btKGzHToUI2$5!6}*4JtK3GCls$5Z zpt9*}4;HO3ef>~gV5zi1)}fi*%x|V?r%FX35Z@N|XNNk0qZITkHZVz%4u zQ~Gr0GD3*U?C~P+hdYSavRQAZf_s{8o}{P5b2PIiv*ujM#7}o2;cXnp7ll)r%>K%h z_-pW?+*u}DgV{orxle+*See%)m`j9-op5x+8W0itseEFno+CX{L!8MYL`I)|<65Zp&9N&+@*U|kQowt3PHn4ww z+R&`EoAjkAn>O5-7OB$)cC9*JWV^X@SST@VIG(Hu(*`QrPaB%FHrmaaHn1!v1pW*q9jh$v5*L6j zmy37+I$szq!9S36jia>UOx$WH4JVT1t^*p5-WqYIJ2DIwO_u7#sZy@Qn)dW9LQpGK zbkcttr05*U2!qRR=ha*-HXjL_^fF{C++-|vnHX)da*jVpUgEf6@ZCL>wNPZq_se-z zgQ6%_=W3W_w-rv=j%Qopah`64lM`z9aCUdhQ9Se2zS_U1)321!~`1DX%7nqmxAJPFT;XRpT`@016l5~S zyG-~)L{4%fe$VMH${Gs}BnQ)YHC3(=Z=Vj%Nyr^Hf3Pghh4_3YvX06*Sk$ z#Hk}`MHMtZ;?8j-en0e5DyUV;VJle@^&pb?!Oy7Z@~V=>QYH*mxTQhVwM4EETjaT4 z+VL_(K_;WlWx^jKvfhzl@YS7^RRazr->;JU%N2rzD`t|Nf+*YZOhIv;Du|r0$nHTw zKMdy(8}4M{xRJCXz!4@QZnGmXf1F4K6{K9LC^bz%B=I}2QPD*=H;76`NtrPC{3c$F zl`F&+SIo;01(}Q~E))I`ky9Os^KW-h)+BHs`EqS%x?CYhxMC*RDTuNi&lD8rse;G} zi|ig0H1|*{XrYsd6F}06Drj-Uo$p9|Kk5=HXpWS_KD8w3K_oGYjEerKDyiy?GGVa1 zUe(AI?lnl{FOne&G8qjn6aEm9{T(U47t$cAuLlQ`Z&1mD=V?2wa)lt_ikW1mAj)<; zQ&60z3L*!a3nB{&+Vy%WXo-`FBeIgC3aY{+N&e92VpkvxK4_tW=1Vzjf=i+vL^4ry zrmCb)CR<_f?DY+_x=y_soNzBg6l5|6xJ>v%L=JK!eh>LJ%IXgeBoEhi3UY-Y;fk4L zry$C9JX27drwSq`EV6r0(E3xUps`LS&c;eBs+I8(ca$T;;PCNO&^N~TDeFt}}MgD7aKTp_l&VqS(Q$YjiPnec~*Y;`2!*)+~z4W{Yx2k}cJN6ET~TjfZc=e&>#S}f(T!;TD7 z5J}vgqM~Q2N*bh07>vKJK@`+qt`J*XF)u?DWHOpuCj22H3yutf&-DH{2pmXWUE67v zD+CEw%p^MnQMTimg5o??5IK0s%M|p_x|MTz1wY~zuY18)}YbyQ|wc_{A$+O zt+Jf2uhN(F#ro1?o${z1-aH2hzDPf_p$;$aSGA+yd7lX#e|dj3T>s9O_veb#mKh?o z&~lBmfe#V{PhnI68sGMD3$AxaJnUw{^%Bkhtp(Skq*zC=D-v69-5;baxNZZI&Jzaf zNV)jYfNuu+qX9KoBa%O?tp@LaZRbS5g&se=Y%!>OJBDe1v z+^9LRMNw%NUt5tq{R^3yS`-~T)SV%dlJ4Y*JhkaEs8F^H`q`uMWGg>vl~@MdS;UId zHQ@nuE4jc2anW2~lDYnpl&yh^l(IF@UnDwLI+{9PGhwTYqp447CLYWy9ZjvOVUO^| z4iK`SwKjV*ReBQ!$4h;`R9>f6+0U3>&3ZONGq=>t$U4kykW76m%T}BEvv__v7H=Qm z_inK;Bdc3WRoWs6yW%;NGC-vaLSj;cgi4=cG5v5TmaaB*izjRrZ{nboW3gR*EvxGc zU6i`e8j1HO%#T!=@m=ME$*QmuJJEKP*(Scfp03W0jq$t6FCmtvKF-O36Aru)1J>;- zYX@{!`Mrxo7qPus|Iw8im`-+;CADq3y&jgZ!=6JwH?eABSNT%1D)c3>t9+|RD$~gL zu5zvd(t&BDVdGk4b+fBnXMK>=`Y_=kF0FndcNX)3F#jg6+MBRZH=AT~L)35H(pSR# z?XI}0-*4XTg*!z`{dB2t;BLIh>ZU%0*yinUN{VmZ)*EC=4f5MFsdj68W7l|?TPp)= zw0XOeN8?p&XkO+WtsKqEMRf*zGO~kY`Q~kd!IRYBZ6ol)U@~izt-{jTs)Ms67yi#e zv8Wj44koL@DlGf#S7HCAwJ~tr=52>Wc|QzQvqeeV$mCeY3vOU_t%=V)cNFC()kF{Y zDu5*Ty_EIw=00R$EzM9d{;Nd2C@bze{mnR%nsKgs0N+W9 z0eI0O2oP(0OCpZGlk^9VDD6Gd`Isu-`As7_mBP9Ce+_bq5$4JN9MfVb6YCD-6Kz=zp;qG(5OQ=n2yqxP#u~bZjR>@3-d*HxaJh zC#yoZns^v&$5r8KeA$84yEiRDt$6ax-c@xtnw8({#xg6y^616D3;5&;ojoo`E340d zKySx`C^aht4>Dy*YRY=?{=O+t{nDWDefRGAHK7HNu(&|P4IZ(#vLXH$IlN(HAin)P zQDqEq*!XXm9 zkH{2MB6z;VdG{b%ZJoZgD9y%yzO3UwkK;uA(@{#soodP_cG3@)ZsIK z^Up46WHM}3!>E`Px5KU$wNDq*5fPi<_n1g)*x zPp@Y{uBO^r_`k(pw0@x0PMvFL#$d*AI{AO!8bsjmf;{}TC?>@BZO#GUZk{z-HUGDs zHU1;TI)ZbM*t13nBoGUCBuM!K!iS`spRrESFtd{~oBZJp;oC`zX&~iK4tKCPPg)2U z(t3MolgZ%&$bQC*2Q4h?YmGO@u>ENM>kfBFzBO4VJ+LNOjZF#{O-@k(F%?f{4x9dm zX2zal2uq)14q;~OjxC2f1`l^9J6IB5l9Og)Cp((qi~2|-ls(d{I$a)V9+e>%KiRRe zwBR0TmXV9n;NcioAO2Iw+_#dHJ<^DjvPYU{S+v5jjyp9o`;lgnW_I&PGhBOwg;yPB z3-`QRdh--;l!ALuJv!F0qh7gV9jl4#QhsALQGTo=Pk#2!>JR^5-?MjC=V@m4&gv7I ziQZPy$Xl7M7)^V_AcH=T5oXZG-$h>gWoeaypr6!&|lHjH)xFMODeBVC|UOGFg z=5(p4UpCta+zg!1F~5$n2pH#bVk{!Y?lxHNSjSF^A$=N@@~VS%B{$5k!9ua{6y}yED}LvS zod#w9`~$^;QKHZGrs#nJB2Q4JyBXpvCr^X2Yt{K7k{jlBW}(Efj?KubbgTm%GduVcHM85`^V4k-d|qYnk^e3D`~_7l_-rRqG<<9(WGUEK z5*K_LH}ZSW&?b_BrJyyw)yydB zxH*L6FKu;4L|vmRmiQHqrLDSlI#q>CFKb~kbJ+alni-o%5Sq>-&SYk6pmH8D(#<1S z5+_8Znb#ZyaMh|9rZTxtws~uFkji zMM~K`;(e)6X=(In&CH%hOw-J6ZVIE^O+g5`DJ;w0@Z(isFjVS$Cz-2CfBQ6LCe1n@ znK;0Q|M_+kDYaF@AK*0dc9RhDr^PgL0C@19i%h283I-|j)XawX%?o@VM>8Y;;p%BY zYUU{s*NRjj%;I8_@wEWwO@sKaE*H#=a#tyrvlC64M>xRhI$2j@e?FD!O8^h^ACsF{4tRyEO3MMZ63Yg{{H^Kg`t<2nVt2m0?CFys zAsjgCiUvd?U3^otx)QrDCB`1A{YvaucnaU|QIC=Ldpd8zOajM9R6l=Ag9&rXbk~=} zN^C!m)IXIP(oHKM{qHHF&=}INaSB=8JpPZjK1ga0slB8RVQ?_3y2t-Lc-7v7TkK9G zlMmB=C6>Mt<{MmbRli?}?Yy*1{r0GRD!S{`Pa(Dv`}#=jRP^XS$skK=koUZiYPZI3 zWEEnaLNbXpT8Vwwqwy*>G)peaMpJNT!p26D<&XVS44$M0@7^1z(f^)IhfhzOWSC%G zEtFjBPq9!e9*4Qp$f_`L;)wMVr-IgQN=%$CPm9!v6P>g=e}?3Sxs$Y!_-ix=l2u{i zL|yyyumiL<+Rd6c5hG@wv3Q^+E=uA;#B|XEW}is9ru@Vc#BZKNjoHf^Go=9bTaB3v zyRFE?TPsq8_v212{BJD`U?O{tFtL4(#3GrH(E3OgbCIle;+6V*e}L7FHx=f0)WY%2 zq5)+6Mu<{K`CjSjsStJ3gt9SW1OLoP4StMJn2nKpPZTx92EGqbQ_UGAHD_FBD#wa} zIg3>j;r2+fD)c20qDFh9e*75H`4h8|)})b!jo+Ri;JXP?)2t7YS|1L(jsxmpR&^oj z4qml4!I`fonH=^$M9~St{1{g}6{6M&%hYc{VU1X)D8$siDJ8`h{HGgaNe%K{*HZ1) zc$I5B%zb;j^goF;3Q>JM8n0qQb2F6h0%jb|&6LN*{wqnAhp3qbPf~+dEAYZ#1ZzYq zlQL}ZrXQW9I@ncm;r}d@2vGybst}@x&WET#YsW%V2PZ==3}|0CR2_?h6vrDeR=Wz= zEW%U8p~nGADL+z@jOV9j^0OCjw$Z%o=chF^GyD0er)Fk9KYetpKM7>11KF1S2HD`6EeED;W5`3Au?e zPC0P8=oO1)3)RaNmd+|{-Bvqsceoh#ZX}R~`F+#1b-WzsHdnrFDH|^q1o~cL9$HH5 ztMsD4tZ3D0ekrN>Ij)q6^B{_j z;S3vhA*-8M)oDGD)Os-EN{*}*Sk=Xyh$USug$Q0@B-%Cp9o zY2V^Q+r_R|>D`oZlogLxa}2hm2K(3lBzIGWH~`rH$v_EBelVNM`$v?n<{}1fS+AqrqzRcjlX6BsIgd|2w{OjPLVV2!XeMLNbXs@}2cPqO|Y)xgw&;7EW+D;$o8JzO&FE zN@@_-NI>+P+Xayj=C`LHs2Cc{+T0$q0RtpAw+~!~Hu}qvYNO;-v7X#S#0to&5V0~g zw_iI#1jj_E75(P+85fjU5k7=o4E!G2q!lx^iqECgSa9=G#>J*ANljT_O-^raH>E*^ zxsA!H(67Yi_KqI0x3VEVpc}+594>l@Ar2cKCaarpyu|tzvL>vvN*F7SyY(uniMMQ@?L}BCpB+G|XjX{*uAU=P&8}+4pXTShfoIpkJCL%`Lz_y1$GW)oE1tA)f35$jk7Q}Oq;GS zODaEyvO!uzYN$Rtw#+-s@vk0Nd8od6Xv*>ZP^~i~NNPsd`Lgs-oy_Wqew|O&?-{C7 zJYw%XhWJK$u%L193D|H}r_SvJKHg z=b5t05IuOXItT84caSU}s{IY3qy}+KK*VSp%^KYe%VsGN276k;*z{>zvVP~V?4$J) z!}9l^LwV&OIza4@1U#=eshaoT(qtiIb~Pz>4y9SDbhC#vNb`Sd52=q7>j=I((C;Bt zgToQf5iA5({-B?~N;$thFcpBnd=&YdwYd!);oEl3T#)i7dq^zKH7ntw;yA4+2jR)# zCeCbQ#)B62BDKbz)|Ah5O-jBsS&#L8*Cea4N#UZ&x-#jLnZu^P9>$Ku_Kyfl_m5s@ zW^6Hl9~l{omfRK+3zx2;yx11f0Jx(bMG?xjkS2ukfZPfVC$^AUq!G7;^iR3KOD<>v zQ?>ngl{-d~vRxz*RJMz>4U1Mdjk1PjX73{P)XZ*nkp^j}@Usd!*cLu{iFBwFI7-2v zQ9U}1GUEVVxzi{UaES$t>m;;YEH7|QXV~A#EFKGN#GqV>oR@O}Pw(=K) zJ}pW2=1KSXzb$Ay)@(zg6wC%`3mQ)fiSL?A;ubXSmW%j;#%l>E@{v~Bfxn(5DK8^C36s+`J znin;*8<%NvE+Yiu^TJOrW^f)OHB)Oj@FWG-nwdFAGk46)oGY1lJroJ=D%gA!PH8gx zD?5Vrk&#|jU6;)30vTq(9tmc>GT+)yA!^A6VdAw9B-VhCXn@*|pGILPv@dRnkI=C| z4@izhz*zN*v4|L_@4#}WQ65kX=}i^Ns}80}ZkWH6gUf|ng>{@lcRdU1JLoAdyjdBZF6*g6}U53P-Mvo=*&7T;Bc zj-AE`8*k;tSTqV=iixpk6}%J!mOG7dinLV9pD#&9@HvkB?BFv*^Rk1_Uo|s3_^hm% z*}>=geFRGPtEnemB*AAsgOB`g!DlL}${#|_Jt9TJ$1Or)eN_?{d@hrVc?RO04?ONd;6KhMIfV@!~oa`gYRW!HWl1$ zUHEoeZvrWQGLv9&-qwYSivRJ_CX>V4`P#-z#>pvK;}~noXSyaO-=9XA<{HIm6wT00 zH{qk%waQwU%p5i!Xl86SL1;RgSh$yTKQ^lLlV#|in@zBA=^Dz5%_a&OMKLcB%4QQy zMRAaY&~jonag{XUW)lxVSc%%=*ry$>$s5_>}*VLKi&lEk%_Mg<9|JqB9vOJKPa9_ z5kmg7m}WLhF?>&BXuP4}%6!+D$%aN~W}9Xvj&|4&%i!&4l(8Fxkhnpx9k~P9nUwRb zy53jjtIQV?%!R_ltLl*~Az{H=Sj_F@MsEj>lx)S|!X;bB_al(w&ZLaU0FL)ZRAzj` zcRR8wJVLv-1KB{BUnyN(pG5tcl>0`OJ&7_fgacnYtpT9*Op2n_GbwF*h(%&+VSY)V z8J;3%QY5v9z0J40e}q@(O`>8=77f(A>Yf zIs=vfZX;Q~1TfOzNow#`7kK!-5^F?D0HRrJ_;R#V2S4lv(OAEiBp#LVeOj_AOrJPn z{q*U6tqr5Ow*w(^X1wTwcC)5W#E97g zMum$9YGVHMhhs6Q;C!!y2s@K9m||VnUBXcn3@~Og8dfbM@l^iTcv>S=7*uOvdNC$& z!o<(dA+e|^Bvdr-@6*~wGtVg7C{91l@flT~3@yAY+2@*~sLb&U8B zRd+(!7_otWKK#{%CHjFOr&UOI+j#lU>9D?1+V%N(*Q^d%9ZK0e+d z_2b8oes)qe($gtBhBRzEjI3@#)L83-q}GQQ{>cHgE~~nYg?e7KH^G^6BrAj{IzgE4 z+C_V=CLiNN)TPI{PT^xM@D_aQ+k(P|u})ElssB1kiifE223b;r{6~R|Up!EMJHa&` z<_;s7#2SUDaUP9Vv7x!=#7M<)G<_VJu<;Kh%R|&8gD0uM`^P`1(N_zil(G<2BdDu` z2P7B%&qA?@W0<>|tO_BD=zNGeMQg`GR0k(RE(~a2s3^zcAjPv5P`EQG&+QB-rTjce zGM=KIB0u{nYMSO{KSh-^Gy5s(B+blzirP~%F~zLBgtOjgnN$9ZK~m!X_7wHw|E)(A z;F+nnNYSULDj`e356JXSQJ=|0{3+^fVYCFVBGGpeOZmlLuFo~vCt+Ruyt;gsTY}zH zB(*}~`({Tq$oy;?uLjq1bvW_s@5f?b7s44*MdD3Ep(UIm(pu!_rh64`z+wa<&pO0m4maxfirmrKE)cNo%w-;zX z+OE}J&}#C6Kg`$as|h95?nJei66#TI1p*CvA3-HZ*b{}8D`7N6&yXrk37uZPP^N^P z1X-|f;rej;0VWMf*in&@(-O|{HH8vnE3w)FR%?o?t*q6^X$j~0YC=i1d1p#%53}0P zsM<#((3>zMrzM>4s|h95Zf3OuS#5Y!?E$SuPD{AZR})IAoy2MdG0cA_|tKXA6CE3MO^!`+#;9`MHO&q8b};DD-s^32;}hLQN~xCTJ^85g8> zzbl;%CAqV1kFy4W-bXSC^qkY&xwdZ)cUT|^I*jH9cORXJ^hioi2QXH`0{SK1l2JCO(BsFjw zN8r2x50L6u-=GvgO&M?>HDI6O%*be?;NWC_u-rGDIxd=2B}0~@LyUR(Ov(zfuH!T4lp z7;M|9298gqFqa^=J^tvHC#%AvTk@#!r`w3kSZ#Fxf7JNmgUcKMK+(H_y`+=nVfQ~2 z7<;ty>tsVs*OHp9mp|F-I?NxMh7#s>BdbD35=V^>_c$S4ox^aBJS-FEms_iI_}`EU z8{Z|Xn@7-Q>w%=!gI!PJ*t?Nc-5qZ-ui9noT}(1P_Vimw`hAmDIM$J_f@K$McfCp z@{h8ZTS>2-cn7jk`{r2fF#m5Y)C5~yLNaM9|I!Ux!TyRXuD<0LIHn)qEZI9{$2 z=*Y&;u2Bd^x%}+f>Xa1stdV9mNzH6q9uKpXw2NVW(cipZ%_o_}8ZB_#;L$)-!mqx; z$Yz{Lp_xQ^^r|Asa<3X?@FX>OS02~5NYngI?h%GSK^NcOjMdE=R zpG1Zf{QeRC$1|-6u&=W5LTaCzb3iu@!P-(WL1cs$=kpOo2#8{1o1-; zTepw#w}El{mpKa%qAvpvMu^I|4O~WnS+{|)W)w-yD8aF@+dy*~N|+l=R)vlvZUYB; zoRFTl4a`E|%E0;QK4{w_uA`~h9ay8nZD1YA#P^7;Ozbw$o2=h? z8+e!TEpZ#@DdX;QdAtsTHU1*XamMY#D;oC?B$KKtH}3q6O}8oI_TR^;G98EaLQGVb zO{?+>%8DCzs%cJA)7;%hC5?Ni0}$r+A(=!R8Fv+r2*MJ^?QE`usHZ~|Hh#a6bhO;K z(+r}d261^ngl3Oo+)eMV>|xQ^$D}Z~4OtZeK{BHCN!M1j`-pbWUS(>xh_(nZBqLI^ z{#CjaixhrhJKZ`asda4ABV!TmLe^}Lhvw7Bs?d={L~HRlAw3b%_Rq#ypT-$B24r;; z(Pml?B()x#as*BD?0~q_Kgz3iiD>tbOuA6H)0bR@l+$mzXPNdbqD@Au%Xa$hC@b#t ztp;0CgZ=Q~NvB`V0SI$TH<7L+5l2qHrbh%}38(K{5z(EL$cT0W$#SRfG>DQK#J+$C zryr`(ic`WcuknqV-9lp)CXn$LM0?3pBMi1;I~C$!Kgq=RMXXFL4px)(JLBN%u|Q|j z;hwUaitjrn=90DHJgCYo&<)?Cl1V>BJfTT3T^LQ-&kS;pU8OO2b8snE^S3QjHy$jR z;lTZ@jQfS$#k+;U4&d#A;JZCLwR<&oAU5Bn_U-|N4S$Ue=pX+bCUd_+!pbTEy4}1W zOcdH8_HE187#rfAG{?*&shMfyaGGfr16u`!-yxZppIe!j!Y?E1cPjiStxs1-DttqW zVi<4@7W)!zG2wHufPKOAkRi?j=taVXNA4Y2U1q-|_nc=`!txVhkt>FEB3tXlW zDp_D}3sP85D_C$Ul(s8WZ(CUUVxi@qYY)Q8zL`W)Gs!!L&?Ns_7a;wOcs#G#o1mgG zB$Fe&JSOe$Dx_l4b-OwBrEkPrA_iy2q~4Sj_oVp-TT+9)E?~zWwqIXI@DuTKB$J4v zm=te7cIFz?%d zUGN`Q-Ct4YM;r*3D*zccY#gCH63Eq_o8$Mf_tg9g}vyJL! zQGXAuA2s}JsgJy6Z0p_C`4t%Ma?4n3lYw#UtWMDsesy?UyITui?(5oS9M5vAE!w%g z)+WZkOCqN5o%2t8v9&pQ8j~mdbHBpN#B!gij(xmUC6^}4GoBP$4TVa<4zuMsP}<}+ zZFR7VFtF1Q24~S{+-a8K8rR$ZEI=G{gfj0`CeXpy#gWP!q}7c%N|+tRu}F9W#Y-A2 zmhYop?vJu;qqT>{M27j@c!lnVx$Q|NJ<%^EXw&(AuDFgIzm#y)E|o^k8n`KF=r7Hn z5L-%kWi9D$eB3NHr^db9`$J)^S#ow!(a#O~O?;s%x;0^Hppe zNBxj)<<@ajk(A_E97g!*AUI#wE%E^rJYQ0*8>7>8KYy}~Q>FwAw5tl(zabp9q+JmqG046fv67yiA$ z4;2bAHycJtaW|_oJ4$MH9JoL2XpOJu8V_@;Wnhim>{^c|?PgUK&^%ASpqsUkEO)bd zgD0uM``3OPxO)(c)9CgQ%FQ!S`hiQkh4~d-@svh~?NmvlYwsFqltN6Sovsi5d9uME zOKOlm*q0i$#wWYsfc*uMN$W=%-OZy(YxG(KNf!#^Xtr`_!p2QVmTR=X!IRYB?WFK% za2<(%TZ1EULrMI=m63?E=WOrzmoZ@T&#_qUDHdzPc#(6XDE87<*vH18?dgW2`e0EK z$5PluNgRtq2(L7O)pffL+GSUZkDH(VWO%~dVvT%L%H9O^ENiGDBqW#eGljF^99Xp% z_NsegF@09;CT*wvW%NeS+m71-K$u_cx%I0a`jgy!Tf!#D)a_59Wczc}2Hei9RnfLl z($EXV!eCf}*EMJkhbBCMzT8PldsmE36e|7-9AlR_*^Tu(`H zPb!$vBsHTwx+lYgHGYz7Jj@+IGKn<`6YF?1X@}|(9 z#|@=Mt?@@$g;?()nZz1t^c9aLtCqZ1n|X|!d>NTU>D8f~PcxJE}9WJwKjy+FnWp$@v`T;o`u z%S$JcSR;*|=h37!T3rFn-IND3VdG6C%QZUE;7Mxm&K?pOT<4%2QaQ}GQUQml5#V+&t82bTRqvY z^*_B;nI{7j&I;4nUY&DFbn| zt~Ssk@_O!}{_v-Yh}xp~{6K~HJjozRY7jRBL^%BgtWjYR`54K>_wTJtY!P{PvVP|x za)Z`KeDdGR3*H5_->*GXV;Pdk_Ms=W!*nDHc&VYhtI^l(=pW!&SosASv^5wNq3 zy9#B+jXT9OC#h-f%R(FK&qTgBNV%WoA^4Wgt5 zaR?y7aJMqrr*|(ewR=D;qMbulg+P#uXnUt?ry|=fcB)otli6L z)-g$~V`uCfi)fv8M~Zc123Zw4l89)}d7R!DhO=wyOq|0gI)*cB+?lLyBHDE8fuz=h z`~HunS)Ns$)Bn1XccHIICS9o9>0fXaQci!yW@Xy9__3bvRXU=bM_F;FpJ}iqHP}B7 zPCET=4gl6?GZ05ke}qTm^=yc4!#yQ?7=E#$sDn=bA<1&5Z#9UL8pHzt5l(+uEZT&5 zjc@G|PR`btmA!lUPqtGb4jw9*VbE-4VsUUVS-&$5)@%Jl9Ms**cimi*=1lHh-tf0d zCjBRF7E~an3y=1p%CdJauanGh;1nwp-#fbiyx+ffwx3Es4>ETz`mQ56*aKZ(O(@Cn0l;ur5;CF^%8{8p`>q3{zeioq=ox7b&C_j2lAodwb^+;dQ5 zfvwnBh26`3k{J%P`^%uX1$rXu_gmmqcR$Fsz+?+jc(SV0;a*mlqQZvaKJH!XK z&iZ>VD~R*GBuUKr!Q6u&qW3Ekdu)G`%rL*9m5J@K)syu*_t+M#kZL%+$9B7foiKN! zMjzNXxyR;SSI~93*p`{h`eiq4xo^7JGLr`jDRk@CTwninIRWFM^eO#MieixFJmg=7K z7}8GNn1$hI`T;}omn6$W@_Yj&seyWCJA!)R4{`O~!z-%q7Lpaz*AlChP~W7DE2-~d z+-%C!w>{;=)wj@)N@_?~Q>1yx;FD^T8=( zzQ*|+Zhd&UPpXJj8wxGq5@<))Y=y#_t-Me;rjc$ovsa`K{Qftu+M5s~t|OUtGd?8- zM*ybYgwJ*rQgf;`H>~7tn+iTYB@SGTV*FF$#*`KJxhgDCaL*H|nRnVY2)n`i_d5Vf zss%q0e@-%qIGR({dPHgGyA8K0Lv%6adPG-IB0X>t$#M^@F^G~H!~hWCJ%_M{i+@9T zMVy04CUM$qHCWbnYzWxW>oAW_PdrD&VG|zu`pL8nbd}} z-!9e!-hXlxQubS>eWZNNUQNu%#%c^By-c-mUT@;}w!g z#F72JMdZqU3FvOz?`&j@q+E~aJWAxqIFn?#{rVe3Ne$wnK>~3dgQ)h~LaK-P0h9u7 zgSw*iSlf=Oz3{+3RbrFnSjySt=cVhqvHvB>WDlK9W+3cpw0h1}NZI7Hb)5zf9}{zn z85?^IoJ28R1Lsm!+$IC8!;)Huf80VkyqO2Es{;_`w#z^q+2k;fC_Sb&j1bMcJ2A>X z|5emMo4il5+$MtzqNE0Ke?q(sqVPSu183R~z8|(uC5_y-k=MxS@%AzI8iadJ6}AYi z5lO9)uQnGw?1b{;mQ>eH7%iK;w*7gQZz zGaM((-ziC12*vN`_`)lr)J1JTF|HlIu`Zj&pCQ6x8gu}n>kwZ|-ocvs6J`EKlC(_h zok)d#i3)fB!V1$QsZimwJ468v^&yIS|18wDJ2R}c6g=oF$&sScFwcI#lv~fp@ z;4-%nuXCBJ9QrUfiDcSkrecGn>xn?7ZhKfeVgBYHqb}fi=#mb&R4LfR=NDamm>W$p zC3T|gWOto{|L~od|7w?U{xa52k$MU9-}Lz>yZkVBB+0bYr$y@Kct%4vd$L{E&2N4% zz+tY7WUA_f)$x0iiIK6xnw3Vz9k{*OEu)dxe88MQ(eaTn+}u-AbI)0S!^n6M@7}qQ z(d=7FkBnWTmR`9%F*4S6En)wJWckP#VNFYFO%FlSP|bP?4_GzwfE6-5-~eDvsAj!} zN~*aY_gPcTT1mk7(HwErj5K_b8os;!3e_wZQ%$39DXp6AqLyafmQc+uuBEVXTax9f z8D&jNYE5s7rlFe8mWZD?uX&eO?M--Ac!gxjYbK7yyYHo73j%1B_~I(0?!MoyUP)u; z;x1?!TRbh%kHaV{uCcKOTT+Al&jAwa9$-xYu#p20=GM$YJfZW4$noCusM6Z~5_c>^ zH7tqhx$i|mKovH&k}TKmc!Mda!F+8K7%CRi=%?1>cP$MZRq6*s{o>zkz3w;%o@ zCfL*i*u?<|bK8D~iw_g1VNS3RAib0grAnpfsPC!*_Z$9`>|589~ZcO_%no44Ys5P`?`%q zvv1z)9AXa#0KYGrfjH9aA3UP8W(yIb^C;Kb`m1leWS_}=hcs;<#eoTAL5v^shKofW4Fv!gf-2_`UAIA$Xxuy4y^ z(E-2L|Bvmce>!h_Qwuf0+h&tYdz&5b)28#cyW;9={(#?J^_6^W8{C9xS$xlcLhSI= za7v1MTC15+QZwV*>tlf6+k4ufja}nmZmkTg(c!6`JesthJ+MYLnwM#3-k3T_mU~&J z!IRYBZ6ol);5FLWX|%&xJ zWY(A>nfTJZBocG+(Mq!L>ktC36dW(r@WT++8`!mx@I&U~%Yh!bP(Z%$mvsnx#cL7C z@oA{T*TbYOw}U+SExkq-OM0BXLMgZ(r0fdZxB|O#^B3ZJu8%|U^oc%BN-&$1`KJVP zxH6wfFh?l!9%VM!yJ^at_dhmd%u&i*FHv%=GFMD6#|yKgI0*?ngDPXO{2~gBLiPyN z_GYo#VSZg+wKu`t6@P^QGg4)KuQCBrKJpx$$-ZtyH>A^RdJAxyb^(S$EWq4JN$~)) z1Xhy$2T5%N_g|YM*cu=08V_?PlT2cb0?efzO*&*BSOLu%4o%p&GRg7)Q*5{Gs!u-m-qDGe`nMCPN5UYjrAAKg3Q9Py5-TPG1=((##8l@1^=v9;y*JzDF zmee4>z7{oVjgN4Rhq;4ECb32u-Oi&)YxD=)9-V#TXmSos*w~X~xkl>@o}>nE3xO8~ z16ae|1lQsfHQJYC5~bIu4v+lTi?TKPQ*9-U_KWp_LQJE#QBqu^^#)l|gM7i7)TlLn zrfWRR9ZxceHPYzk9!*-K|HjSQX*7=JPYzAkSVyv4qYVa6QiJzV12y{Yr*R*h!z*g^ zX_85lUZadHVg7noJmsUetx!p$kKh*X`amJ3(fuhYuF?JmSyF@iH-U_=IcdmQ+ch5M zR?WZ~Y4j?OCauwd70}G;5~To5*!Vcfa*Yl!c#;~t%h!kuuG5P1q;i-aO&QRtpH|45 zSm+7Ig%8hseIa2G%*#5DT4>w{mdDHvo)4f2-fA;LwDPjU>x8I@I7vYVh__cr=ZU*QSpc6}FUQ9FY0|B5!<(qw90Yn=F=l znZ>$$E>Wv|d}wH)t0t^K&g}gLa8B z>l4f>nQ(R#YmnHW6%vE?%MaL3KWJMvXFFHMYUB5Bc-1b0_B@hFvw0WOrt=58;wcvk zYAU(dMRg6{#VEvFY$ZyH587t4p`>QR39Hh@tnvBUA;J0@$t2du#lBz0p-H<~j|ymt zl*d6knq;|)4L5j_8oV#+IcUefPjk{pxIgiV8a&FR-By=AI;(#2RVzW{)PV(d#fD$U<`( zdhYLim*eG~fnpI}y0hd_S*%C(PYOGO0PYn4X*H*0RUB3TkJ+P4Qf>N_IXt zXPPYyd}cyo$#)CNid%Y=sZvr?*t*$NHzbO6HK_o}7D3HWHq_aTocZR=N- z_lP!2BD$FpY3(aXmRozQL6p=W-ks<8nf6|M{9MT^YIY*YY|Y*mI?W#IDx@@fN_8d8 zt`zm-1d8#S0{ti}uG#ShTT+9)WM$Fp-#mbY@A^^n4#_0qNVA7}L}|^o^!A#4>ym`6 zOO!~>jwM;H*+~XbQiHfJAx@+yIb0y;1bRr{!u*d8tshCH{Lw5ZUpA6Y9@I;TFxQ6# zv&ItcR#&_gx7mffqRsw6GN}PK8kUxv&GvN_QZ{?6M!))D*JQN@BBfJb+i<^fsGCGKn~{*?&Evw9P(R)+1UsiRdg!q|HtsS#Gnb22oOj zc>Rh3@#~9|r3i$M+@FotA))(S+rA+qFTaH(4+(rc53OEM1`{z#Hm>zSV6vOg!tzxNpSg4TX`qZihJUg^W>$VN20>s zT4A@03Vo`&uEHUtQt;wMs+=%?)Z9oT(fOmheg0sVALh0qnR2Q4`J=Oat%k z1AP9;E+6NQNT#L6&mXl@Uw(ezw1@ct$yC+y^GEGJSMu?z1MlOHU6}CkAru`CeVyiL zlA5FKvI2ZOe*S2#Zz=8LTSYDHoowkt_Mai`O_Jq4KF6At)S8~1;|+ej*F?`wHLLOp zo*3pozQp;X$9zj^)oc>A zG$`59F0LhJ z7xeU~-Wr#%V~JAfcwha{5q;8nsnIhEix(E1j~<>u`|l7hZZ1P1%nYtwTX^+tgY2 zCAIDkuZh{_>)GBm3rQw{Mz(p@V@ca)EapNPe)1oRqirUTEVoU)fs@q0J-Lhoj{Ml< z?DmCkD=DJ4Z+zhVb7K)9n%y>7Ba&Jphp>_9D9_pLma*CG2fn3rH}Cw_b#vgE>6UbM z+uvG})LQ!H4+t=C>g;y>oVbUK<`q5UWRgk6*G^blX18y}X1AT+R8qna4=piL`%-S) z8wMCcNe$s%g7CE_Esb3u27mlcCVoI`a1A2<#1(M+=sHEF zw<;vex4aN3M&`DU!!>;72`&@Aze_UZO%uOI>8_*VH-v|tOUfG;&%D}YB7Tuf%X<{1 zyEahA{(?Glx1|M6gV^68nW{Qr136M3ckC~|tmN2(G0(~fE$2{f+_9U?!6Y>YJG&Z= z{dVloc+FR?nY3enj0s0ZGksk%VdL^7%N@I5?MiCx_CUM19}Ig|)a#V88?QLpwt$@lvQF%`Pw&=R?31OGL>?^YbIEDk*Bc>>doKptz!j z8(>Kd@YVqAoBoSy8t+eK0iCcqfV$c1^&U@Jqt{`2li_A_=n%jYHa<D#tx62H3RU}gmIPn*mv>uOsz<1xJVci~66V7PjZNyf5 z#k5%9dClN4Er1}64i$$Av!mFI1W}<1`vyWHH2#al{Gq1_@8LEB@!JuA6F(hgo%oro z7p$%YOnj>_JBpo1OuUc~|9wjQQ@9O7d_w~L9F%q9=dxaKXafCwWq#TjjaU4{u`oM| zi;-BHLZZzlSndU+YkV))c$nKc18cOmGs~k%`*q(6Xuj{T zh!i${MzY+oM;Sax4PM(XfQR_W8ZK1q#;bPG==LNlXq0vf^Zi`$ltzn-Drt0U%=?^1 zDa17T$}{PxI@TadYLHhD$R%}}Fh7-5h;=f_B-TiyXL&Sfjn2RvEDOzGhX&twCt0r1 z@di&)gLm@J5j=h1`Q>T!D$IW;iJxoP)W!RT7X6#FgYUDjIdlpd)n_9)BV%8H2xVY> zRomQ&5JB4QkEw6c)f`KeOItfpeCajZ^JIes%1N!Q_e_n7*mU~{&+j8_~D7m-Zr!`p7C2*UR>UGdb&eeRP=wmS^7 zN2e_cG25+5NpagvHRVWZ%Gu`!D#sfCxLuGF>)RxgSR>m#=Fy~W_crEJS!ha>$D90E zlI6CWX7D66cr%tn@YHrYO64%W4P^jnd^qy%9JgH|W++t+@72zB&1ySIx^`Z&bSbJj z5uv)lLGpbU8{P7)7k<};OInD~^~B)pyqrUX@87nG8k4$ndwYK#sgH4C{!NzBE?|`U zo$du6RkHMhm|0P`rGfKKjy>y#14GJ++j_bwQ&Lmri0@ay(!vd_*$N#tI{;yB_YB0* z-rkEIQQF!YM~HS!BKoOSbU=GACRuLpnFdi(gZT7!uy+_d&Kgd$(|JX&yqRRSW@nw` zG<&YApkv5u_M#6fY4*hbdCi_rF@CjoQ_6~Kw$)%uYOq%T>{3wh0DgVKkE5?iCJ{%P zJ;NhPYxaZBJ)*@YCTx8@B~r8hB3Z84PJ<|^K|KCjfp{}Txt;F)rFxhjN-6QN6s_A1 z!>m_sbIqNlU__$wAGPvIWt9;$<;QWZd_;8MY zL>na$jiE%^@KloJHk@k^B{hh*ek~AxI6k>Hc+Y}L8hH@&E7QnRsFbnuJ>MFU)Ee1= zja-59TpQdywl>(|TT1uzfT*Qm>6UbDaG|v%skJost5vGHKG!9b6CRCw%OSj?x9m+a zsr%XqL(@Cocg(M(gdackO1Sm7m=eN)OUm40v4ND-KyE4^d!RY@c-!t{_0o(Ekl;SZ#ZIk?@T%sG6}z z7+mX%iOd1wfnk1qI-&~$CewDlPfS!eS3!)*0ue1027`PhSuOljTlpZ-N@BGzSSC^7 z0IjfBMuk4m%UdJ3QPef%BYAuNd0gp-ehz;qQcbi4euvNB!R3d!El8$(E4~GOrmuC$ zgGs5n1-_rpKf&c={gGr^YJ3a)2`bKo#(SI^!`v+-Q&r2iz@K=hlC!^qd6|v)hmT1( z``;-#9s{dtZDRvfSBgtZ7ND>F55( zJOA1bh@PElR^b)nKyQ+1)s$_4-!!k1YF_@>tLD0+6RMd$L)wh1rq1w5YWOw;zQh*z z!@i}oYDPva4NSK5f3Bslach$0s;Rf8CAFrfe@@lhMrAtHT*WJ@W)jJiY9`()Ylp%8 zN4arvoU4$!p`QA7C5=tTw9lOBM2hi~qSYxYuCWG#Evdo&;WG(en|c6Ukul%RH0HNh zfpbyzAdf1o-L)cAZycGh<9JG?@E2=Fv@#dHH?(0677~iq3qq)dl!k4XCEP7m#o5_HvVf5axI(Z)!0RGF!VPLv1D1X<@Y~e z%Pe3m5ArPwWi1av%jn5U?7s8LAkxc^_sghC>m~hD1Fy1FJD=m?4?**wpzNLBT?HS2 zmH*Vhc*=@wUs2NXPd%NdA`f9&i;>F=h2PDp~I)Od+#%bsS~It=DX-kntPA8-U}qltvB2tN@@^$CLpTyCP;OBKaEn# ztyh=(cFr2G;sJhzVPs^<^D*CqCCOOv7o)O%%2YxC;@5;<^p|4R zrHeV~$YfHp;}fM03TF%KRk393@QrU?~#YA`lYYY}Ic17i#P+xUT7O zUwfNZ&_$S=Lo)4awnd;#=kIXE)zkbI!TqmR^0dR>Gf%@70fpGI*x{5E_p^~^L`ltv zjUQup;QdGK&?c_&Ft>IF)@WJm7LO+FW%J(6M)T_3-p6K%_%*CT z>t9APY5ho}`*<{IjgH3Dl#vAXjicGYp$QweAX%=_@di&)gSVT)qrr8|Zgm&O?52|V zCoOqi!CP=_PhSFfg~f8uvsl(k0B*5SeUL8YSPHu+iDPjH;m1nBaxc{Mu~8TQghiPD z$;=n~F^`32b^C<;bBQnXPuv!R6cPVP7E1ociF_@5ggZli_)BH>M=(Owfeo1Ps>Wj< zTR)BRVn6fYonVq_SyI#T$M4f`w@YKd_u0s5AK<$KudKG;ORSxEJ^;9x;SL_3_Xxvx z1?G%p_+Bx0@IL^B@3Wa(xL*}mlK$lX6hkhlA>T-m7g^PfxU+agFFt`}(u>`q)_`Gd z4*q|xLh63`zZc7N&X9`VZ-2}BR2tZIKw`H0BRwu2$EF%=Ne%WH3uJnDH*2;cG(YXU zIm|t*9$Vq%rgbS1;g^-pI2Bo!zbT4tTln^ZU*mK3vG6VXB+kvxONruma0;29U*AVWgfpayxM2h4 z?9EwY`fKCgwEaJy|InRZpX-LjQ1e~l}ix;YGfp^~E>$|o9q&6`5(=CC&< z#octK`GBP61GC@d&A}RPaE*t#dyt?g>|_%N$W2Tyyp2EwSHZ@0shtHe(97`)$+@PeS&v(hv$dE11MH#X)m;NE&P)> zUFn)m^a?l3IZPg#D@l0sd?W`yx$n#-e3@zC4Kg0j`%LIUc*5FEg_d4x7dl$E!F5Nk zUeDvNFm7S5!nh^9&i$fL>a})9ueF7VTY_e`JhoV*w#-<_w+~{1P+QXbQvANw-NbcM1B&H&qw5fhw%ST4N zfs)ifm{udr9fO6&*i%w)x0Sz@X`f;*NRj$~X8pR*t|x1H zz_arDfyg}uGdv|a#hRXMItAn*5yd~I&SwkpLht*c3rD9!f_G@dP;&9Z! zpqm46&*J-t5aX^;Ccm7PM`O)wY(+}^8Ova}(=6W+{A;)MtEAIVKyWc=`6~s}P^u+3 z8rP*@(5>s@n_nnfluw_@pD0UcRhCflO|VrY(3gTQZ-J^y`JSj%XnTL#Lffa?jeEaG z+xtDoz5h$0l>1b&+ZJqBXzSW;+=3o2E$IEydG9YpoI&1f&D+fK+7{F>bLo4Md5>mp z;WP7^xyG-^yh1bUk-5#d1+{GpEOV(ed6s7O^)*-he~f(zyjIiq{!P7UaCD1TeW@g+ zOCduvykAygtmNHSGimu|PM45d^=gN!9bBex8<&_Ja4Aqq{DIYaud^_;c$ z*=L`9?*H3|yViN%z1Mm6^Q^VcKIc8>eZ!s`_T2kkUS2gS^Cg>qSa$$jvf77+Qii`o z&RJCVO{gpXqj4R>QHnSGOOwK3?3QH?X48DnAB4R$Q;#=r-*6qGrRdO16@H;K^VhV) z@+vaxx@cyvI|j@jK%ZZR9%;}+-enEWBOknG3d8sJFUy=t-i#^(>D|%vF3(l;yCX-i zLfg+`h2DU_8U9lEo5-)od_#ZvUsi*Nn-WwPCiLOVdVd%@EEb3N&& z5K23CDJtvOuc&xg74rL0bN%)TTJ+K)VHmZh+3MhMYdCMwcde1(f6{fYuxrU=evST7 zi&>$^?hNg!OifIe*UcDC^Px;I1H#sx9oAOyvT%Qjpp&Yd3Rmta zEy;(f{I@i-ricmq?QkY<75rD|Z`I5c{Cx?3XW}ovUYdE8{?hXgbleY1V1J6j|F{I$ zhg9&a5?IN{;j-*kY&<1Uf!F;d@Iv^WzXTo%-}INj&EcE=66hMfS!oGu{e(-P0m$ON zQUbfFkojLxS!Q335|%(!cFQvVaFy#4*ufii34F;flx999Gp__8vhVXtOTM8YY^5pS z8~T6ii4=hAzc$Uy*%!k1X%t&eq4(+ktqqFiGs|IFE#YRRnftj}Mdn&E%Q$dFW)Qht z8RT9{F8`x6>cH*zKw2SXv++!PS{+dC4c1cT)8}>cGJjrIidU&)?XV-QV#jd1qSAbN z@pmq1THRAL>{XSlqungvI7MZO+bzWFrK$-Xlfs2Id$Q2J=VKg=RHG*Qgs zsPw2-ULg(a1>Pt_Tw2hTU@I8Q#-1~azur+ci31gHtg>Wdwc79B`}H2ol8ySK=|O4pVyqe*ZVWts90RL~{OD7^UzY2M(EBO*IxZF#U-8@yBUG()mLkxn^#|KWuepRBRY}RH=3WOcddfsJwT&p z#!fI;+%?!HdIu*c@t>>ywulMA`N?N+ldCYkn#$nV3b;`pVrjT+3Mp;aT!1aGITLQB zY>w2e9X5Ymna1W3{t=vkKsK9&0+_7;{&Ka&W?j8&6;$^Cjo935u()har>hknHeY{+ z2?3ig!cDSSB;eQzxYHwW;mKZ?P9zHbJ|LUemB2E3F!Jh;imv@AEP-q%-iZndv9Iu2 z;I+%~Uds>pJ`7sJ()zXTUX=Mg5lmJ1l%~#NUKu}7FVlUek|u`EGkzBH>p*30moLrjaiAz zUpd*%{Bmpo^8;LzO3Z1CpE8+08*Y-#egclIfa?^23p4+<4#@nOY%0zC&b$*9oQZuU zGrxhA`AyMAXa4@!f>t%d&a?ukSyZ)F(Vpc+?Up!NefJ~}i&{Hco%ddvR&$6sk5-cq z$ku9r(7{&dX#0VsRe!x}74(7|PpU|(_6CcqRck+%x*ChhRfn6@YOsJ~E8r%)e*mr* z%0bB-)Zd!KN@N$Y5vF8*YPpmS4oztOq4zTr@xE5!A>CR9#c<<;b5!W1TRSQ&qYF^} zBk!riiARO{2xO};Oa{tU20HsaONDPI%CJ=M8QeI~NQFfPi>tzdg^Q-VWhfvvBh?G>}c)AwEwb12Mp5C+y?Xg9z>Ha{tm8!76Ztc{POq?37>^zR`VibW&`5<@28*l0N?adK96e6cSXAzKxJeae2spL^ zt|oyaHrtP9-87rWV+$Y;hZ_g!!I;~0dU)3XFHTLIktU5m{! z^Z?LdaN|HDHm@>RTsB7&&mLuu(O6XOFt|xJ=LtBr0&d|u23&Y7e!d-!#Z%bCj>X}z zmA+~!JUuZ-g87dl`)9N990^)W_SZYb&i-oH0u6s+PjMO?z1CV_=o1!{&d={)LYr`{%In zWIz4fJ?8$$@V=g{9?-2-a2MP-4NmrV*R37B%HK@WYb>$n;iwJ*+1bBAC}AsKL-hi0=awvbdu z!i|G;*sP^nJ8a(aMjD&l%e`zadBn~BodTGx0Pb0Cu{jDo0Q7#iai9^KeGL|u&5wy^ zkFsqv7L_{!Zj#Mi0*v2P9It=SL$i52wvbwf!;OP{!ZbDqF7~pyc$8ZM`2v`&0PeonVzUfA0CX7KIMApDt}<9$Hg^)w9%YZwSZMtN zH_2uL0moLrEnEaPe|?AtqS^coTLAev+&D;w&3U@D!)B8OX>6Y0AHhusWanlR0nAna z*CN2?3UN;FS_Q{?fJSWYZ?L#*&L*BcY;IJdtjeu}n`E;v$1cVa!$M# z-qVWzI+BMA#kat%RPlFpYe(^;=A|j#mH79td=CQIinkV0*$Sx*78p|L`|0(r>H4n+ zXry>kgT+;R^?WaupURBl-@#2P-d4b|6>xXW_n#9_;Sef25s{Lr)1$sv7u}8bwF)=t z)+)FfZlx*|>eh}5GhRzm;Y;Ggqrx8}WaQ@hbfFBCtqk;$d6o+Apa;@r0o*vyNQH?8 zi>pEpKbHO)i^}zan^d7lz_Ar@zrAk2nYufKyVL#Gh>}!*&dYFQE-B*AO7wo+tHccmWYjBJD%(!)S_Q2=KqDpU z87!_68%QHhR(w5NvO?w7!c8jCUBIywaQ$Dy@nkA`Xg0@U3v8Cbt(47vy0ydR>Q~d) zJj_3WgAvGPvzGv7D}WcwHL0VrKRn1|2GDQd#(_p`zHP9$Y(7Igd)Ryw;RuV$4Tqa# zv!8%tE8rRtILgz^7qjq9u8MP&w#S4vywl2^`w!>vD%%u$p`j3q=6FNbFlgrCACL-f zw7LOt>D#cK0oVe0ec;B)b84o&ZtbYN^_4W0yU>Bo z!|b1}7=*3z03njC5c%<|mdX|A0icWE#(_pEe`&C|Dt|!wd$8P~v8dctaFZ$z7I16@ z+=&sm@aglzxUb3{j1ZxO;a60a@u&JFrF^fG$`qEcI=aS=#TEwD0&aXz4*S(~Ylr>o zDIxryEqpWEJK}}+GYFggVKP9rGQf*wTkMyj2Y?QN8wVP(-^*Ze*}vS6)r&~Kh zYma(#xv96e9#!AnRp$CA@g&PMN3Gu1H;tKICN#w!OS7TAR zOW`Jk7$@M^3b@u0xUdWk=DzfN0zwc@qDYqk-4<=?AiO_U*TE6@iDoJ|7;b!24*mb& zj@mG`ePy-xOKJ4~HPbufR}sjrgUK>Nwlc!=W?J;$t9Pw}L2%#`sZ!AKb(+eqL~)rY28T$W8ucf=Lm7D zZtc{;=P#rQaW7@1C-;s(AX|u8GFG-S)^}bqV^!H*Lruo~05=Xa5@MCX;tH{wB=TT+ z65$Ao$~_74 zYo``g%}CQ>3}vP#{~9BZt;1>=Dq9)q{O2tlw%;uSQ^D78<3J-F-ZEHR9qRhAJc4kj zg$Lm#byz3h*b2CY1kU%te+Ldhzx|C!Zarici4M4pva0^N>#{L?TO>cGy=5(Z0|wtz zTQyUB5Z?{`68$a945hzSGdJUvDR|`uymAGp_^cO82aQGL zPJ)|cbC-Z)E8td6H{imL`@U#|71mldGM$BAci~=?{CF_eTd;zS{GMUjEtgvmOl$SI z4o%-b05?v7qt#2gwWHN1Q_{40pYqV7Rc{2cwc@XY;rn^n3LS4wGjyozv3l1kXyE}G zX|>#7akc8?$Fi=WRH4ePfSc5+hJa%$;F=OR%KS@jw==&pwvbTm;a1A#!Me4>=7Z0q zv8gBzJ#4NWKHontm*2Yb+{v8r&qC4Fnup z0r&9~11`+`GY&%LpTee?a1urS%>V2*Wd0g9p3Jvzxmbg&gV-g(B*LFZR`*D44+KqIYI87!_=H~6u^Hs`251apYtDE_)1u$Cy zeEZWDo6n;MfIbB`4m4u(UW3JD^JqVoE*gu7AWWmH%@_*`6ubtj#gh!O4F+T(_XE1){|_D zKE@C_3L`q+f6CCIvTvXVfW8Vh4m8s06NAOo>QSl*Pu}#_SXAy3xJj*w1RPt@>L>z7 znSagAcIID#Er2`^ZXBe;W=q}LVe`?6X>6{iJoJpPedU6Pr z?S@F9WcGCreQWV=b?y1*du&04|AQM(M5kir>(-76SB_6pp@Q<)Gx7llWUDYh2Fg|j zdd>t(g;VveRdAdKXrw|ngT+F!2*u0fP47~%s<~>&l#a}dOfzl z=1RDgviX8;?XbDuxHL9PCwSSs3W01khY4V|0(kd$i_O-0*D7f40UEKnx547Fnek&; z+n)&moA1L-vN>G9u@!K=B5>jSbABDnKSgYc!(Mk zCiR*p;MfYd*^eRnxAnEN{|js(`#*vk2kB)0Ox@ba{`!xkvAKeB(KCX+2xPNaE`Zqz z;3@>z+z5EQ-n9x2_W+I9tZlHkY@X%E@>w5~{j1<6*<2>z*b2Dbj~a01Gn~=foqk^t zQIh$bxV5+!+6R}Qeey;?`_|$%XrpVOh2Db-8it)?i#tcPKYROY;L6cysN+1wz2*$Uv@qb)XD>s{0O z#{)ECb8myiWwVbT%i60<4ZIIG$>wGO$5z1gB5-szJ03lBZkAySYz~84DVvw+)()HR zs5CZTc-YJ4{s?5Vxl;hM6~Hq`S!{lDrIdvVK7|_x8nHRwU~$=O;m0x@;RuV$-2*qt z<}LxpR>0MZz?m84RPL^_Cn8F6MoHXSyf4}Zd!v1FMoHXSeEIO?t;O&4!am<(Q|#z4G})^OuQI`z|Ew{{d?Q`~;{WL`&Tk*W=@(BQ0A$75`6yJG; zQT$uDaiEdn6$Xo|ct<~$u?Ppn%ityzuOZ;r3b-Z&j_T(U^w4acgDuogA>24fhs{R1 zwZmq~h%`3K9`dsJ@#V~o&1Sv;W-EYi8fmfl40-_Q<8b3ZBR20aSX?&u_G2m1SX3?t zH_2uL0moLreN+ZEYomu|bN6LN@}J?xK{{-%(ybjfPb^Jivop;Np4@x@fowLL2w=7X z_z(hY);C@Cu2pcB2WZ4*OM}H_bNNUwmcM$6vMRR&Zj#Lc0moLr-9N&BGqcew?yj=W zA&N6I(B*_C?q`a_&_1{W?US>STxE+MbXZ-SoQ+Ni_t_?8pZYfYEZ*0u@2y*_;Gau* z^p&c<9!*h9o}YNhIU$sdvq@q z+yb{!CC=Bao%(ydBu$AQs2V(@uZ}>r5`{8YwldhKA2fqi*^e(_k}#VshZ_ePDe;2A z;wo{iAIqHxM_5$uCb&r@iUb^60auN{@r~hc-xuB(&g}Ay;i1)E!I>Y7#QVt`ysPo9 zRCafF85S{WUspXv?qd1^?`ySI>DDTE8*ZEgXSRG=w|3O3d4HN(=hJe-qgHnWveoJ$ zgs>GtekrlkI!y0c1qXS6Mr!S*DJ8t!*;VU(swfYZ4=!fHpw<$&NwvBQIJN@rA_7N8 z@=@ra*}NB9NU1?^D`oS)y0ydRLK4`2!**T&2x=ja&1NqF%vJzTyWe7S-9;w%SHO(} zjo6%Nu()ih2fSIN@c%d9dGppg*Q8!WC6BZhgg{QbKTVkg|B5HkcETLJgZJqBD@26MQt%D#jU@iMR< zHCb`KP5+zN0{wH~R!aZFy0t_9pLeFw{}jy$9{P(A$fkdmjF7F2aO2%(gerT0-n9y9 zdw@pt|6s7V^dIEMvgkZR|0{5l^v@G;Yz5qz5jax^w{Ulr?T;wlI-vVl&7&qA&`ci= zPSBlH&=PK?Le$W$9U%tXktW1pG*x+oc(bz%-W>ePWvpyvtUd0sgiz>#jJXeP9B3p& zZ-d1Z;u)H%JXns?Sm^tI;3kDwCg9i#xW#uGa7KtN=R$~Y*mw^9G$HW~@3a6bM+>dN zY~5Z3&%%ul%{e6BuUk7BY`;BCgV{7Qc*flhf$U;fEyH9h!(4lZ8K%nC)Vo%}zvu86 z<3J+~HW)0f21og^%tSaG6sE#WYOqegu@!J95jbM=7WB|;_Qnl( zvbkBnu@!LJZa3geM%U-=Dw~fe1eI8d9b(J)Cj##=OLc@krPjYZ{Z!cB@%L%^{Wa8C}z)b#0@%!p=lIkr&o zZ@`U%bl9ArTRW*;^_Da?Yx+lUAp+TK<_lo90{DkpEjF9zUDNMdd4NW2{&BO$;<8yn zla`0gcRMm6NbQAilWaB+aBKx!7XruE?3&z^ypBDP!>H^Hh~}nuaXH=Vk{|v=yz@m3 zr-c35c>9^Mpo-WJEwqLi-ChNMb>Oj7s^O<-5~8vz;H_z4{74^Xtz zq1k*LTd0T^;a19Ksc!95#7{S-v02|gfz5#ILgi2(L=L&Ew;es13usP+1G&a}M z%;Oos&!@`>%woP!0J9aq>L!cLa`XVuxp3n^BQ_s5SX?%{`LXoXSm^r`;3nBD5^!t< z+|C;fIJ5L=$lX;oizs0QM@t`>AClMdzAHqpuh@82KJ=+t^ffZ>s_FT#?-Xy})F*Qb zA;qSZrdPysa zRhF5JSEkZmiowt7;^piFemSf7<)!?%?w6>?MHN z3gAWkEjD-LB;QrA32q!{#OAvOi_7Lznm9ddjzKuEIRb8y&3*!ot$;f?0vFywd(<}s zP-R=Nk-GFhz|x#|qJqZZDCmr*W>MPXx+f!;&iqz7vhg@{C~fWfY=Lz!}_IZ zHIk-64?lAe$ku9r(7{&d$iL3gs#xz@1%u(nfks*#Xt20i)$n6ETw_tW#&DBb4Hj^0 z1>CLIBJ*Et$Bbw;pTrh2|53PckPe#zbZaN`*Y!oko6TVYn5_U_+RtM1 zx06Lk6>NnY2O6>Yfx+Uk`5w(M9%UyW95R12+$5XB1sq!e*E|9jX8vPeaYEC)9VMJU z^IP&x==bBpQ6w_oeq6W7=NwFHRS#RxYHzr43LLFAeHH<+Grv`zG_7V|=jR83Y^_EM z9c+b;1Fo^Ox>oO61((B(1C6w5Vz9Vc9p%STM`KaBYH*WUjT3Ne1>7Bdk@>UR+H6k6 z7T6pQHxANabC7QBWd4^|r?EMZW?)aY9f?3To0A1FTLHYRkHzNSCyJ1C{R3_sXvF46 z28+w)PMTpnSe`~WWd2yVNj7H)IJN?=WdttF{5#hXK>B=$O{H`GF}xEM91)Hpk@@!H zy6=9z*b2B~B5+~mH~EB6sqBB)RGRrG@=oacPs33pGT(k&w-w4rXMST{RP^~U+&BeJ z=I_+$=V;aTiZreM?d{d-*+k~A7CP7p9Zj#aw7O02n!Z1%(#&sVu((>?>Bn-A#-eih zaFbfC6L4$=TuCov{u{@#G@8v>*h1z{gIg(^_vzLSn_DkSW3!xQU{B_sgg|!YZxFz2 z1@OmLSZwaCcTM+y9>XJu1C28OOM}H_^AtapmkWaHStO>mc?tB5a=}h~wxRWAqVfGh%M5t8u5H_)SKP~%D zW6dqKt5^fx5q*rT$#ntPL%e`2JA{_J@2sf!$0|CcYz?Jqu_AhP4ur!-< zu!Zb@4sINz!{!6JwZrC*7pJjV%|C)10@-Xf5x{H(@VZMZHf!r$t02z@)AxTI!F#GyueE3r#WC)et*mZ zG}7x>gT>Wr!=+vvEMM_1nmp@(L(AGW~eWpFEH^JLxHVe^^)rm?x1=1I>8erh2jFdqPQ5x{H( z@W^f!n{T2AfX;y%2O6BCV2Auf-=pgQ{vil=S zSi$znF!9j&w!^r6u!)W5tB+_U$-kPBU+Wk8^%?i0pPA^Joq@i|ebEE!_|22ycwei1 zr*5r+o8ZPtbdDV7>ei0hb1q0zyH&C|e=)$^RNcRrbT?ObOI}7j7JA zr1lJh#Z~(OI;MCs?{dEvlX@g@({RjkPe&wHj^Pa zZ1(Mv#^wh!%X&sI7lCXx2MA!c0=UbC7MsO-*L3|JZX9UDW)FkKWwXeS<#3IKuHVB= zvN>45u@!KyUH~??AIgkqHowFc*jxiQ4$@(BmTv8^+2H&%HXrKdW%C*Yve_IafY}P* zy$G-rpvtz>YBUPKRFKTl!{Y(5INQZ@(Z)()HN&PikQ#tXe{wm=}8&B+3otpHxy z*<$mzgL%vVx)p95XvF3R28+w)R+{xa%1%Hy)X!+RNj7H)IJN?=If0|O{c`lsY<9sG zKz4*12kFd4O?7LB%@Jp(vDw-`g7u9hAI!RFmH=iefCrvyvH2`|0O&-xai9^KLkt#| z%@=9b_psSnV^O*GaFcA#6L4$=+^6RlaAr2D%H37=pGG1)v1G4{5)Z4d;f5;s0PT~r zQQ~3sLpvsCqfv;F9iFmJ{jhpJysuU7pOmA%H zs$MR{vK3;7oNb6z*;mj5s!xX-2O6n9++cB4fA>5umWwqOl{*)1QuSp5j;(FD^;R_ZtW;Bj7rr1==4SBdX-r9 z9~r%w2{*`K*~(zA>trc02|bW9kHC!sjg%N@u((QmL`NJ?R-B=+s9amPNhLN5IJN?A z#hKwP$f|w#wE>*xbT&68wEVRJ`D2)IvXer4$r?J-qu0aVi_4*3^6LcVHh`KhvyqEd z_H3%ZPT(QDuT>nTTdUwUxN&lvdb&`zc2rz&Mw*I~>FDBNt|kK6^|VunVk<;V?P#g^ zX?+18|;AnMFh#s2FW3h!)YXLV7 z(qXfjZtbvnJqhfuiK}RN?O}7_0d7s?)s)X4$O_<#I#_I$q6dHufg1-JvDwRDaoPNm zjvyW^M{6wf`)_cQY}OEPYz5r>Gr;E0SssXHa}%}zay{HQNQceWbZdvr#;2#T*~~wJ z8xY9O&3pmORsh!^z~;=ao!&Kl{_O!8v02YxaoL-hzB}*r%tjPi40sw+#C=^YtTn_16i!y}(xcHEcoc z7vNT^_HfhNX=4s314fL+*`mG0Oq;@ld#Z`ML z9cesRUY&2$o&h(hc7cFnE8y-aG~mMLsITX~D%%GkLa9ApC-6W$oBhGq0{b_>t(5(< zb!&(H*|{|K*LCoYxC#Q&@liSSx7V#5 z`ky~JjsBf<1n>;`&wUw$O@9{|AzK;YW2cxAs%!;%0O%sPai9_XPZ}&P{nz`k+@P`0 z@8`lz(%)Ucu@!KCv@_sL9URKtRkk6bgbFxyV1J#!Z-Fhu_t?Vt{ts?^e2x(Fb!$h6 zLrzK);`TzX5Cag%7NVDom931mb~IL%Jyq|Tem}qiG!i0fu((3}LI(;@Qf%5sl0xOy z!%Yg&Pr$Jia5tWu6ygc)uCk9JidP8vI)R(fLNCCs*6mf$9d4x>w9%~{4JMtKra@Kz zxVP7qahp@T0WwUsGRy~0GQ(8a1?YifnF%)zG}7QWg=&4=}dTA^w*9~q`gTVrh zt$^Fw7R%W~(L=MD#TG!;f*S|vWc2s7n1oO(`{VxePe^0)9XjB7vgk~&n47~|-u=@H`s1hR{1 zvW%CljCcF-mKX=?U8`V!570=A-;dQ;Tru|dV|k~#B!wDu99^f&e0WsylZNIThQ9v{(ZY$` zUj5KLVg9cZ_@Ns5ea9v-wVARY4c|r!t>J6By$W7{8>hyph~c`mqv6h@(=?n;hfa@% zry-E7VY$%6R%rU{7)!%I@0!k^JwPK3HyJFhhE4rgUaiWMLBknvlNv4)aBKx!j=&L{ zgU~~>*$-Q&h|Azs%I3+swZrB!lotLgdHv|n>0$Gyy<`Mt>9bk@vlYN2TU%_ti5>tt z2W}i_#O7Fo#bt9-8!whV8VlY31UJd%IswO4!0k91Y!;x0X7fO70c0Jxaga`KZm$w$ zzPQ zxqaX!+1xDP*b2C(k22uQ(q}~;(WA2OvPqjClGpMc4||RF_9`x~^y>sJ4f}TW_D%gd z0e;q>f9Shu`JO!$C9P?TPcq6flb+%)78r%U?FLZL^sWopRS;3n|wVZd}PaqnZ(#GQcXjx}5ktL3api zxX--WdHMPD`j9!#1567%cCp0`gh)HU8LGgg(~7jU0L(=v zAbuWh9PyAr^J;~NJ}`*f+&eiHQFo0<TwzEQA%hgHs5fv`ACzb2?D_3*lbGvPH`mUf2pR ziw?JWq3;*d090_g2XRygZy7`sEU&1dL$fB~b&NI_q$1k!l9Z;(ZGxMWu7N;gD-i!f z5Q*6f|F#RE1GbP~C&6`@ZNO7Z_+?S_{hzwEQwT#2OQZEMI%0bYVZ~o=Av6)dYz1(? z0;>=vpa+1Ch8qVO6~ZkB3q^_%n(xPQy2he%C%{dzSs>up3b^-M*n)?JaPf;Mgf46< zErgYSq7W+BcnZP(a)BvmqYGgSw!p%OuybX<$aRfw?Z~yNS(;qGwerf<7=i2(Xf2Ge z6-MSCX34dE7Y_|UzlNJ8*INb)MT*IFvmeVN2uD~{?m@Uox!MXiwgRppf%APGU)*)#s)bx+M9s=1abdiCw zm4Uu=sHMV&-(*-S_yleoXr#jH1`9=ssZc^kcaI7WARKDpF1Se*x(hhA0xqAx`D&pp zhfvvL5Gh#;bSo89sEhZt3RQJ$73}(z#~B}-qrxX>62`Vqi*ilURCu(&JMxhTWUJ6i z2Fg|j+M=nYLJz%by8qDwG*aOhgM}i+RH);}lBcn#+;6`y1xXe92{^U_Zp0x60knK?}2U&B9^gM@B*(r#aR6{?ET0D&pHd>9_utlxu`F^;r8txfG2i+ko3vd}J5zfjsWRhA{@#D9Pco2?A{(I%vcb;j@(Isx%KxN*eMLg@*Eh=Rpr8BRxh zKcc=G5qyJ()deCyHS#8_xlPu0vvK8ie8*)s>FNmf8h7tf^p(+&n{OEy|qVJobRY-CCHCVC*Z=D>{ujU*duuu!C! zWK-z??!nSWW1;I`aFdda6L4$=+>VCf^)K|$Y#xX$fUE;I4$@(B`;U=Q_C(+Hz%(|u zHua8R3If?|P8Psy1@Nf^*c8Ccde?OQ3vL`}#AcDfLXl!@_Vr__ud&eeFStoIX9zg9 z0`BR93^+5nulND^{4N_$J|~{0oP_qlShP<*HDLdQ?=5JfRqL(ypn^-n&Xt`ooS<7f zHSlDEG}SuLlEssEKWukvV3rWWR)`sXpdm(O7orE!YZlxz)gCceC{j$dayoE(uw1FJ z(D%Q?O{z9ez_Ar@+x~+ZXoen|%>%FnkhS5)K{_?Cd0V8eT?1X}r?FYxKZ2(a$gY8M z0nAnapG<&F4cwr2t%9rI#(_pP(7|A#NHI3=JJ`$Sej1C))qtC1bD4l+E8r$I0Gn&K zG9#MJW!M6ni{ZvWI&40nTRXYA*8yp4E~6ELCm$|AAe+tA0+_7;-d^8g^I*Me`ux)a zG-C7jtj0o-Vr+KsV|izb)Cqn52{*~+IswO4z?~m~Gc(Fv++Ae{A_{RzEZHZriKimZ zLHnQs+9zj}#8Z(I@{^wq?j7zk&$mxGW!tpbR(vhCp!oZ6D^+}kZtW$>ZrTdSZW+)7nws#`lMjHs8U!T?&Ocd5obY{SDy0xQ3Ufnb$e*cem z^yedxT@QIwN%$CotPFN*Ju_JPerUaG`hI8+&`612X_}ayArTh3O5Ebd^42EF3YD7& zH>pGo0moLrbtZ6p&qAF10N!~0sT z2D-Hh0=Si`wRK~Z5%$sl!aABE8cr-%yVJ_XldDf7kgZm}5W-dnIi;?p)=hfXD(DS2 z4m48hOoPQ$>tk9Mc(7zO7L}_7H>p+w0moLrJ(Z86|GICO5zXd%*dp##@Fv_iNGJCv z>ef!~SEB?7^Nn^FWAi}&2>y#eHk(ZZFk1oqV;zglL-ejyaDWGB#O5waHh=Dqr8SC& z&5Ey0?k|FyWV1lPu@!I^5ICAiMxcjg^KNW`&70v?%I0~xwZrCX`{)tS?qY2IAFXUW zBgi0-&1P!>%vJzT-q&Jt%?2q86)b}r2O6>Yyusq;W_Lf9I}nbrsN9WklWevXaBKx! z)d-xK(~suvDqDak#3`|4ucf>{Tl)7`=<_QZ_c&15b4G84{TBK9QL*Ufj2b>@U*_8v zTTr_y+&GEJ&qKd>AiB~*laaa1_fD-e!T;V*3+~<+@GxT8nimSKY=zbr_aV)#%X~dG z0Q&tExN*eMWxiJpB3JgCQxWYc;n6|)U*RT|FA|7s1!7HtNOiOnJ#-z-!4{Z(4sIN0 zlG$S2AuJ`sZ2y{R%)Ua4m9UgtW=}*co7pY`o2|gUuy&l;y)*z7{Bb|?5Jwy_dx=5h zGTR~*(KJK^vroWHGTU7svK5FkYuOOPCs{7#?kd|AQNo(iPqIAs_ntj_>Xg(9e{$U0>+vjN*?RPn!LpUXF0E+~R%LI|0O8HVs<8+R{ z4Rvehh;e`QG+MXP+QM_hSo0Z!usIzdfY}P*8*31!`lf@Y(E~uo!i@usju?Xt7MIYz zek`3d7L_{%Zj#Nx0*gttlHJ|tYW_$1@KH7U@p?W?1S{Bh zKKZA6{!91TazEX3L3+(VBdymH*a8is!rql#$-7>+cJ%tVTAE&G(@M&t*P#ex>orU$ zVJnopQQgw(r*%9w0R0YbnqJEc7FVx#X(i>s@;Jg_HW~>xsn>7;$5y}{5`i;E_|Dv& z*8hk?P@N-u^xLG(&_Zi)fNoE}e+xH0G^b`Ze=0;c8g!|eromcT^LWPn6av{AjFw@t zm0_Nou{5|r@0zav!HolrYNmt1;%acAAIp9k3tj(%o77;OfMYA*CROuazj$XYba;b} zyJ{-3?-QSh7FvggbbA#P!;KHm(V>@a?dY(qN}3Lr*Y@gAAAxKgCd*LS%1~!lwRHIQ z6B(EaK7$(v8tJgeU~zT$j21+moG3#$)WR^hNgZYgIJN>VOW=Ihk#Zb@?jJ=Yw;r6k zW3j3$#ou{+t6J5LHTZY2=)W<1hb!MMd+aCt>sx~d@=dbW;qO5F9YlZmm$+UdYu`?L zBW;(Kw58r~@}Ebsju`Elf3c!Hv_KTpe`N9l}&F ztF^^@8mF8_UQMf}kbZZyRui%8Y?vj4vlYUpR|n zYeO@L*vH*-5yg@G{|Fn-}_hb`3xUz2L?X zM}_c=LFDSTGn0mBUyVrRs=`f5w@x6k6^OfbXSooLS#1}>q1ZwpG=Lk&=@i0mtNev< z+23ij9%lv-D})yj$mVo|0A?$II}u>BOukd^n!f)QZX9S-2p1SEE}=7NLFOrhCK`*% zW#J~-+$`YO3b^P0u>}tcVbIMegqzq@S_m(#L?KLP<0%CD2H9_Ji;e|ib6nmJKO#VW+7_n^8b_y?Sg_lSEws}$6rW$|>>U$7Jg)rVAa&_A~ z71294Fgb*XK3{~Jlx~+mWGfJN{Dnd&SYa2!f!G4Gb>OdHcv`6=VhQsRY;*!p(ZubpHq3IMApNiVPN)(06Gy<|%~w8VlY30XNBJ z4FShiz&-t^EqGW6M_!LYIE+oDg)sGf6v8Ano0=P-(8VE$T0`a>)PzVRVXBR?UYyoF=xN)4$5nd zT?kDCFk1oKh5(yF=%;s0_rJl71C0vdG=s$@^b1-vd9duOvC#1qZj#Lc0moLrjr-je zJS>E_`=JmPv#GQYCM-iCJjTXT2y}~hKHWx(XNLx$jXok=g)PW+aoD-C>n6wR*3P-& z#9z|nTDsdy(Y6W(YRlDH7-1`nJn)+(*L?H{^B-=ST%!#ZSFTh2Sgz1mRIV%Bq+D$U z99sdm<=3qDT(K^PP}y3DL~w~I`_mD9oA`B*RIAWa3ryGl;l>A-oQ_)R4$gG6-_L16 zoJ9*o|8e=NYuxFmP=?D^hWpnqc6O@l^XLRQo`M@k98E`63?f&KH)*BiN7Pv(qWcfv zCKV|Xh-?Mo#RQQSsH5NE)Y8n}hb`c|9c~<_GaYr+t)2W{v@?y?z04qD$K~1xWaoDm z0nAnaPygA<@AYppYye#eHx4wKj%FDwE}=vI(uBsa3`ID?qH+V_CfV#R;MfYdnhef- zL={d)bNgUAdYMgZI!e1Sxf<_}zW?Jb8JklK`Y!!OeL0|(tPZxoL^Zf^CX&VQrG>{n zTdTe!O|_o1SoEjfBZy@S*GsrzE8P6B)8DEp$%=|$Qg4V>bkHNEM z5U~XOcL{^AIUOK?*$UwCJFH^(06hS73EVi)s2HXgEH0rB|Dg$uVYx+PQMqg2CfOV; z;MfYde}1$D4~wDS)hLE5+5At%@JBg{VJ92uU>_OuUHUsQu6Ezjip!5^ z4JHK4Wy|0un2R9T#>TTy#V33u)%$o~7r|m|fq~g!$I2F|qjYOW zsy{ZTNu_AX80K4yo-+~1PXEcm23uj{>#del`|Dk+pr!|CB-J*9#g(e2AIpM8k~S(g z6K+zf83K;2fa^fuh|PP@L$i4kw!mg@xbb{)jsmCa)()G`eV@kW`LyEmu(@lYoA|Q? zFk1oq=oX93chLht7s8DLjo6%Iu()i#|C1NX^%{%HT?seI<~#w%R>1wf*?==2l{V$> zDti#35L9Bxp41bMs{Fiw+Xvg&c=F$VRHXuKv}*IQ1u|X^J6Bc%WxBPa+ArUxsrDQ# zD?O^UM9hVrKg9@U+2jP%$1+j0+_7;9`&8Y z=2G+k(AVL{fkteOH&|RYzo$i~2TMPVMddDon`CpHfMYA*e*PA0wnPujW+Q9?WIecX zkPe$WUS|@hwZrDc8`Ic4(m#Uf2xRBx1_8`g0H02P%{8Bade>2K}n{S`;sLDxrPb=P1w^TtBxN#yK#dpt*#$tZ}+UM&u#n0L9WqA$)*^2KJ zQrQZr=WjHms_cDw*Yx|taN|HD#V;{fT*WJBo$67%Kx0w4MsSmg?-Foq1>Ed!P(Rz| zFe94HFR+FB`3PN4E!VLi$FG;d4YU*Kvn=(A;6}7j@P?Z!QmdD z5u3FQ7MIOZTBLf|{OnaGgs`aGD!55DYX~^D0|BXf{V-3vAvGw^BB*)U6#h zmw%bY=Bh2;5i~#`o6URy%vJ!uy1`=eyV+6}D)=039B9PmVuQtH^Bg~xkq8Gi?}eLW zvw?tPE8q@@z?qq$J$F~xc8C(r+4lM-@dIA<&_1Y*_Q}~uE=1?o`k8*%v~QiRnXA?( zXQP#`V4oFiJTstvZ0lLPuT>wfTdUw9xN$O_8tSiGJF2hwzckgi&>GW|w@neqR=tT3 z%T|b8{H3M(&RItFZ{fy)MygjBEUxN({8+{!98@oZn^e6(z_Ar@O(Jkc^>ewq%63GQ zr0V9et%2cVTaD08D^W-HqVNBK8y}#f#Md(;mF;80S)ZpVanpBRCB`9;twd`XEL$1u zabH+U^wqnj@Be`t2O24nGgw?Dw$U2alNI}DEcE?9aFa^36>w|?+}Qui;<2rZ)-`6U zm|cEsE40yLTaEF4^0BS4FGICaY&>Hb?U7^sZHK1>88$h|SXt7MIOBek}PKi^^r-CfV#R;MfYdC)R__H7_tD zn$35x1vVGJje~U9d|bD7a&ynxG&Z|^<7M+a1hU!eC4kuq;4SMcHXG_)tDvq2XvF3( z28+w)hqV6mD7*A|sS}lZ9d44%egclIfIBw=XXf<5++AgFMwH~7?tN^lL)a(h>r>fd zTl<9lGQNH!uYPPRa{*sF*J}UKMXsc)U^`q_ZTH)m-qjsK!OiWe`+kxp_&{2gh9tZ9 zWZa2Zw&nwbR<=UxZ)-_&^O+bOA2k3Koa{jyUF!blV~xm_ed||gh&G?kbPyty`vPuK z`N0B_tw6jm1~I%i`y_W)*~bwjR9-(^R8n52q%?eO7Aqdt{Aba;|+Cd zr}XY$qsQ$Y7XG3ottZ{rJS*vLE|3h9F|w60-uQ`CdQYPVfR2S52O5>$V1vcgV2~e6 zCyj-ke}S76V7P!|E8sr-*nl&ow|hED?{_wy1GE0Ms0s92Idr9JM`yb#zQz{Dw-#=E ze8~@hX6X)2RqXmOO^YFPMZjMby%EcC^18I1XD-qX4d} zMyxC{y0udlH>^&RqN*8q?30K^Q{A$dEQ4e#gS_}7lX>*}@8|)bL*d4OMrCoO!QzTA zlvcf-5^b%qs9bZnNd;yIIJN?A!G{K%DU0u>pe(*(<1Y*Q$D`(tS*+(1! z9Y6)O;Ks-5i1Pi@k?!{D_xu%UqGV`g@5#s~5y%#$T*l2-#(mN%OO)&NuIcxW;KqSQ zqMTu{xT4%k>tYXEMeoT4*dR6oe~uuy`Mlc zEyPIONd@=9jgQX};&R>Esg8HwPZMI~r{2M55y%!|wTzXmjCIxuGgg(|_>_!J1?%9( zfkr|sFj!n6YWT5~A{?q?2;8I)>jWHI0kyFfV%^$dbK9~s zHb11Lx@QC@BaqGJP65nT0DtnH#byn?YZdIC$it5VjoAFkU~$>(?8ovl!hy{xaFcBA z5^!tF*Y zf`;F~jZ@=P#GAUcqhX7RGz}ZkQs1NDAOx~C%-dH!?;tBQ)m?6B*g@}F1t)ocMj9Su zu(%qI|HzAF>l3CTzJi<7u!ewRE8qq$Lq)uV9-7Ukumv_BgIg(^H|y38o9o|6WAiIo zrhC{dKp>mVd;!c>0KZjXvHAOW9y5S$gBu4LvAM!vaoN1ok7Xjlp&}lJn`E%KV-C$o73;#dVBqUe#q#Nuy2{Suk)yO^kgK9-3P>k5i@}`72^!?{><3OX7IoDuuQ|2#P5PPs3q_L=6KHOx=v=wk{1>Cf^ z3^hd%ls{6-&Fap^+ z6v|N9%1{?9HA7X|A0Cszso)#9aiEb7ZyPMG4)=ZF)!|Wu!$de7Zc>LL0moLrHHyF) z9nRwJD%&1WXqJhUZnz}iWuhnZxW`WV*{!hvL&0z(0;gP zHc`W((vqFn>eyfbeXG%)qWO7y?l0z_^eIw}UZ*8~k($e0IK!G0m8ve(x2SYUQCSIl zXO)(pRl0t&T0&H2jyaBtlz(unNOf#LNQa@j!Yie!yXnau_1xSO-Ht%F{HWUnVK=-| zs(P7j>~Xi|=vEcoLZH}N)36&}DOLSUH}<&OkL3(<>ah&6b+or%Xysg_6kaJ+157ve zxZCUKHW%Frqi%19-SA4O8f?0;$K8feH;eTy)U##C`jACny}QIpvVJo{&*d(f^8(!}thTL7Dqu z!I6k%SNv##%ij>nR*Gub8wcU-WGfJx#~_;0KaV4*Y$pUFik;G@PjB*3`WHRNpHpA5gnnM2WU$Cg{Z3<)O5v4K zHJNr7mN0vqtZNoS&&{K3JwL-1^jrlu&Q4O#=X3{0&$@Oj&!VBGCb1oQ94N^4e?5;nn$|`HDr%9tV4UEIlUP|>Y6-2?|{Dl3GV+-!*3Oj zGDJj6Aybo`=WE8?kBzD_E^keaM=V>zav_MV5On;)xQ4wo0Q&xaxN*dhhV2X@SHnB# zT*Z%QZ;eRh{u#*wO=`GIAhH#R4==DG8Vwh41eJXifsz{Xa}y=wBK@|}nxFK;E2U~R zg%9;(kM%pB_A-x}=T)_?=Z3RY*%+SAc{O~@Uvz|4nQLC-Slw#OZ_0<1Qnk)RV~?X< zHG0LKEw@&ucU7h?5bBhus`1kAAC)l&ae|#C*(Yccj?P{h=Uz|ChuS<&&lvE*qi^!(lke;RBSaBKzK zhek^5dDT4mxzinU)7V@=%YF}=ry`Ke=1u|3RsgSm z-C}bey=xUz@c@n3+-R`4Y@X%EGP{&1#Kib4++<0?nURQ=Gs?&b}IG#rOp-aQJn1YXB3d%lYBn<DDTE8*Zg4KdoCkD%YHort%+jQsGg#I|A7%=hcy`V`PQMU*=jW zAEtM$f`dFjBb9f*s8jhj@TT99-7U2v4xr$1h-N) z|EpU&Y%V16{j0?JZ+h9Rg+Ml&`2v`&0G>9-VsqUCk|gx~mvG}iBQ|FmEH0aE{8)w{ z9BSrPxJfn}2spL^t_FeQnpre6Su?FTjLJ4gv}9h(_2T^O0P3r2Ca*AFGn-H2?PSfY zE!@{JLg9n$8JZ&a(Zlv(!XRJy-CS( zRrn$;a{0x{{9;AP3^IIhr1MU8X{7B!G}O0V5rrJ}8V#rL zGpZr?Dhv0bvftkyjgXFZSL^xt{8?$ab{S5g>5QbPY%ZYEk&l0jdJ-bp$<{>lWGi~M zolVtYc7C1SIomoi0FLuNx6kqq<_1T2Nw(&}F%!i@-}6Jb`E2$zH}N+Qe) z6QMjx1a>JAjtya$MBv>}8XaWyR@oqI#EGyM+&H-=5wI8f{qg&vq1lOW=F4e`(3?(j zFojbhAc!QwV~AuYLTh1~tuTG`EF^;L{7SuZy8jn$9BY&aZ4DYX5x%4o93PtM8jZ^R zeJ>9&nFwtK9$SGodZtMPKs1T)I>%7iSqQb1go<5EoZn)vU`P%I2HaF#vH`yHK~BT zsO%cF2?uAVLc15!QsG)UGtuNDh@?U(BH5`>C|t7@uA9A#RFIutq<2oA|9Y@Ssc@u0 zb<+hX%GPhmSh*hreu``P*!#U=02 z)$7|E-`SA6EDPTX{t37%u54xch23=6V5)Rq7q&t7Bkyckky%5S`5y-wDuG_L0v$|& zwoIcrgc_J=XG^pZRPc&$S@cQ~T~be8D&Ch)*60E~ci|bQNfBM3 zr(%^0^yJaC0KQbb{kd%3mPH{RGtff>Xz`=;Mx7B#;P$1Yqd^9HCE#8GxZfNUgIgZK ztr5aqmJ0V8Is+oO+(pCfZs4*faB~EATfWWo4YbpW%+-g4dX{B=t5QJMw{JV3Eb~j~ z?NgEYmgWckx2;x1Wcew+x`J$~S(_{;=~Ty%9g&53n&hwu!>TvPj# zi1wesbfU8}96`$3bVZood5hPT@7%;t>|;nTqKz-3u$4)A!?Sb}lR3};7>!OqTmm%8pp;_8?kI=2MBDo0{emK%xpP&GJv%=Fn%C@ zA8s6R#H=!iTxM^L5cP{Ax&sk$guW4OlG(umk*z@7I4z4ze)X>w1T`yA!yBw01?KDx8q6@z5VDp&+JK7b*2=~J{P4K`Qq$LRdq z#?~{Atq;ON^B!=MnhzJSYz6F&DF*C50@f_d_Tw-ryAPs;n%fuC=q$Tti9MO* zyAx<$7}eUvi;cP^J0&849f}YNuav5BrZ;b!SD;lh3-|^89)Esq0fEV@nw?Is z(Zz+49m1dbsTgRd^L%U(r7CzCZaf>DE9qsrb(qHH+V3w;<<{HgmeQ!{)Rn)7U)2KZ0Lxkr9}?yk-etwgPz6WQ)zE z=mDUw!;J%t*c@-LxNN@pf|t#H8Vh~@3*01|^8_4Q0r&G$2AnDS#@tmv$5C6?@> zm(LgTgMDeXpsRsP+^ghY-i-dAvXMF7?$4h$)A0gV+7;InUp1uqf{znA>o+#IocNmG zqJQ@63E#_{UpJiG|5#VFryQ%=s@ebIwU6jb>h7bYS%IfnE7Oc7p`8?ZTWwl1v%~+S z;|@MIySlu{j{gf@Q;bSRl!es)Ft-w3nf@dUy9m1?K=NqNt z)3T})U0Voe_cl`z#++|_f~BIJSF1%hwj$hs34A!d&H$LK*Ow|712>L1S{2`J5V@JP z7^jkar%#)DaYScmL@L)7ZgP@bClJ{R#1&73AD#Sg7#0O3-9^7oWVDvvhHIbJ^S?j!-(O5JnAv88ev7xuqq;V8R_V3#=>KlC=Ovpn6RPt7&hF0#3!Sy6V2cV?1;@aR=YY=ITy34T zwRHz4Yj368^q(bnq$_QbwZGTmFeYo?ypEyRSv!sF`+eJiS?-f=`nYD6m66mBwWCksTj0}S{V%owa;Bi~!te|b?+%MWRu+3V*ztyc4=V(VG9%vUveX*;+qvl7nTW#ngC}YeD?=PD-#yp@8MlNxpo{7?i>lTt+Oxc<-4eaFy}RgYrtW;*I@HdrZC^Ln6WqIo zo-_4*8^tifRYxFOIQ|fUg<~tMRC$~iJhJPL`|yq zTRP-F;bNrY-K8B#sJqL$4d&HT5B_wdqGUMjiT`a`AD)qXat#k(t5$(6kg*7EoD5xb zv-Z|SH&%CWitgVjX+@V$G)mE3i!esJvk}YIZXN+;?br%E9mjCd9c=()H2``()q^-H zy6py$E8jzOX+;oyT0J%m%dtD!3fsmXMk? zi^8I#9Aq_h;XU*f3hzwnOfxA3FU#D*KIs{5X0N7AF2Co(^4kXywUGbzVdN0<7r3sF z4LH26fz`UTQ+{pDRS38It|K->&SK^FAOhJEE+gnHAzR_+zDG@l)AMP1*D5&M12j4r zYGtsv`u#}nc(DB4+laRlZc@C}0*as{65QyUOIl2Dr(5*eu}K3b;>3gUy%GL$f&8L5!v5n*9y5S$hZ_ePvANP< zaoJo)mvlVUH3{J`H9i72$>uHr$5y~SI0|g`LJ!U6h1defPH^KO>x_Dz*VcNjYNlH| zY>u3imYaw9NAP(s$p>@chR@VFH`xl{wGUZrK8GFv`XpQj=tE5js9rAIZSc5^PA9HC zjGm+Ms9Yi3B%?J1AX@?0h5&APp0Q>)Ac*d4aDd z|MVjt5W5vpxA$V*4hg#*=<8NUJERZ(dVCaqDBY7EG~yEx`O4exE@wt`=B>jP1YH5w z6?8rcy5$2}Daron{si3x>38>a=8cj14f=itU#wA6s0_B$B`7pGUx5}H#syK=Gd*30 z+_&X3>Z?DtnDRtgqF*-An^-?z<|cYRq2NSkD|z%o8RgN@bY)xT?;^7sH-D@9cT=W! zqjJOGCi9mU9lT$*vftZizeLD+=%EQI#1?dE1J}`IRGr=Q$*i6c>gm?bjBuy9IFOiM z>4KD}0+;u6iE1K%*$UvdM_4n$kJ;3(T|C151x}W9+f)^ zZj#Xg0mxPW9!dbW{P?#;&`*~}(|~;s{v~wH$$vQiuOHA11hNl6t!4jgW&cx3ErJH= zU8|r!+&Dqe0jRUV;*#?z(dHqip~j+eb>Sw-X)EB^3b^VKxNzS4qz7@MvMbrRGo^ed zY7aWQ!oyH9hqR|_HFBZl8seHRv=q_~=t4^oOn7NTP3uKlbfJZ>vy7%`q)0{ASw_Qfuy*8Iu>@eZUu>`C>|UaWbv<;N}BRf57zteRnn0+-HaIn03v4fUTv4v_f10H?EXEVeb&0us^9=J2m&6k+bs{coY;fZ?_KDyx^k^2q^PsGnf zGp)v{x|0fygIlQ@`MR~EMt8bZ%wOQ`i5n>@TaAi?g#oiBnk)lmD+69yVyQ6(J&-md z;KqSQYMg7ZxN0n=cRX0yX)G$&8g5dJ83K;2fNLIs3sv~FF;w`0jVW+Zfqzvu^Y`EU z@iDJ8_zt$ZnQgR9)v*X2v>q?(?kbo9H$F_KI)>@ijvmX#r0MY<<`k^>Z9PszAiFwd z$&lH~kdM9J(j)W#sC)DHDvGUbGz=|4ZL@=H#Q{YH!5Ie-#b{Kb+oNb4(5RqsJaI-v ziHZ=6QR21$2af0w#TjSthyqRlk$_`FkKzoDiJ+o5-~@NAr&e`WS9kB1_ul*c@$vhS zTGh2`)l<(}Rb5>@Y}2&z|LD$Ljsgw+@qB>A^~XPwu{;WM7#&j~#{Dr%z;PMFp)4S$QLxDwUrbXu^0M7&3K`YsYLH*LX39K@xmWlhAy{Hdk4`*dGe?j zN}MD_;tUwFz0f2bG=cGwDLzli~0O%_mE5N%To~7_xoRBHiXxy4`K8<&))`OCOcL6k-%;=#zT`EUr(g zld;?ca~K)dL5%xkiGbr&z+F`rfYT%6A6!>u4~7YQWaM#gZ#J(k=>1$28}>Ib%JhB; z#Av4+_FFd#-E5DDzVy^q@`$*SxJVcgcf*j){!-~6r_#YY#snQy*$Yh5%0C@q6llnP z&j5?d{vTA5fMsKYMU@ppjI-Y=;5ZdYza`$YgSY9dM(vPooBfqw*hy=l~u63RN_h zIR6arxXv4rjOTcRN0l88G48z80+3SySWWpKGh^dN5)S9$MiJAh*C-wdVQt zPV~&Y@zI~F$VW1`nm1v3jE`m`hps;X(dqgGzK#uilsDRrkKR#fJ{nAHB?RG`Y#pyA+Z4zRfXd1HJcmS?gOFZBCd5aa&g%_s)PsrYB=Rr++( zL@!7LgCydvQ`i_ie+!!l?xGQQ%G}mD)JYz3wQU*NJD)`j6m_T=)L1cyY~_cP^QQV< ztN6B7MKu-SfgG$J^4=j?zV4v{x$epFbx(u-($l?&5#!`rO~lao3!>{}{WSJ>^n``J z^f|*+(0&e{j#!>g^Yhijy7qIw2Vo|-`q>n=Y*#02%^Y(jx!OBF0PuO}?e~+seYqKp z9|VY8Z~t~YZJjC$GRR&bW>3;d3Q&7(N$4beW9|pCgR6 zGkk8nA&u7kgHBv#ubDf*kj*LY-Y{TJB|_KKTEpkv;#>rTo&M#FS8 zFyTyixC|ZjUGy^ae9F^uuOBKHfAluhmA@s#g8uluBy_pG+&l34G=FT-nCOq`Fl76q zT)NDubotTCf-bA5V`K?86sL1eQx6z zgGiMf3Nh}HDuKwUKpb@`P8madc7S2_P~jXo#BZmuDoC;U%FSZ={-}R-B%6}DN z6lmzk8v`t^Blk_lauv)G7F9MJV%(9n0*+Gwch>L#oSvxm;<_rk3rtYJ5k-0zS?>xQ zsV^?yM5q|{n~+0v&V(54l$oG5;}?<7Xd>$qOa*6x+H`E11CFjY4(PX-UTn2?^bdwD z+Xr>hO-`koqc7rkos60cU?T&7&ff`$!wJd@5V>x6jT|IXW_c9R3=_LcePmB|Y zoC?H`F2n@&bTJ2rVfI1f!0f*vy3BSX1HmO>tP6eF0AONT1dMMYW z=f7aWj%y-Y@3&k>{h`abhB~^mqw61f`IduK&uyP}M(y`G31%pJZmS@5Gq(kopd=`^ zX0~dIzYMnl{`!Kp0nX5)scAhnYkd9`a`5>>5TjI}{{)Cp zpyANmEWqNrsCP1!VuMAM{oR547kAMt0mrF;`{^9LThnC?u0ZsbX2fID*_g^c44Vla z)4MerlB;>Vvg_K`PuQ^G*Pg~-#b0h}uBag;_F)z=Ykb%#jNrc#eW*8Ms_7+red2o0 zINdpMopNQG8&?yla+=r-W`dRV4X|ZDdL>tDx)@)pr5?-Fkh(;M~HLTPh@h<;xlV%)n+ z1R|#baS%ad>POH+AbIb2m^5d_h3(jPrLkpp?H2 z#3+@<`3+=8JO9siVJ~dw*I%CI{J~cQRPPTnf%Bh)E!+7^g;`F8*>BHe=XVSMTxkF( z|00M{#G&&q4iLG{Z>F#i=RZbosawwPZV;)mE)e6+Zxx7~3dBPRB71BkP1SktM3^+r zf2|14pU;Ww{618PCh73C!S6rhkL_fsv7Zi}H!>jPosTR+=*_YL)XkzsytB{yp)12) zAAJTp=04J|U)^E!$z}!fN6?B(drjEN1#T;}!lPDJ3%8sKx64oGR?48yoOY!NXzw2g zWBt71T!$7)RuE(DnU%gDXqNiu)SrK;d3&$an@`8`-mk=q&B&Xik<7?K3LXiOxl}0# zk&uxhdgzN8;Z(350IWBWeuRntR<3`li>r@n&o^23EYUV_-j>`tKsuFa9o(vTjn=WR=aAvRg0KF9ko1 zy#DBk*2{RKq^wq_*>PIu)z&MB0SdqheruWklzNlI+yzMK#Y!I4gLJ*YoEbuY_+3%m z!iA!~xwNpAw6MKtVN+>=-%PEbKc(KmQsuYddP+E!W_ORs6r_##mQ}j!{!~Y9k z`n5XE)*wCc)x5VWY?(0VLmxb&c_0&pLYMIU?2P}xMd38ik4(@x@NzmN&x#JDxT0r8 z`4LWfRum6(=3gl1oO+;=5XdGP2 zL9m>LMUGz7Bp*te;k1UzYt(0tWM1<#`OI>9LFab2A6Y%>!iZD zNQctv=@~B2;a^I3*ZKU<0Q3vV2ar2+>a5CPFAvGpuc)@WICR~+SV>*1qApfb7r7f= z)lUpxzZkzEwMNIX!-2>=|DVbJMIl4i`~2!cwv}X}pqljP>wG7DL}$cz=y>-fT8HGJ zq!*qgE6EmhWG+|J9l4w$hB{LI|6@nAkH`l<>L7fMTH}s9gwC-KGTBFQ>=elVW;FRB z+=a>bJsdx(M zl=`E{F8OhHhM@iU#L)i}egwVG(VBsP`KvG+WU`+Dl=kBndWL`>-{Gmj@#D+7JkgI6 z$WH6F*RRLMy$g9^qFM1T*S*e!J}mWareoCO>$wfxqR!j}uwlA8UqcNRpY|b^l*SIh@x2^rE2O8(rFYB=CeujP? z7E7hxs+r))J5}<_C4a2szmWW)lK)8Z110~Cu3C{kmnh0=cY#QFe!aSPdol6$YbRBGjUAMg>&intOn*I zKPf{eqTJli_s-4z_5e!h|F?VRdadQxLN}NfmUpA$`%yXl|F&ChHh*oZg#PEYo6BmA z4KUM;FOm@T{FRw*WSCda^1&IB$oUNexVdJ|(5dux>U~4g)jp}z@%fPcE#ElrT|e(@-ph3CuHgU z+%ConAL?_uL%o@)8+fse^D~`3n^UtcUZV-P;)a~bLrZ# zi;9Xm(sjZ_-6?t-fdpDLw7z{jcW5Xd7KZ67<7yJPR!UQ6f9BvjCMwjV&y5W=S4me= zm?STmj-ZgmVkSpd0e#5=nV5+tg6Hxl69T>{;8a#KI}$Y0l$xZWbjfwd1t$i!kII8D>Mm1Fsa4HC<4bkhV>HpDFV9QgSo-)^< zBC7ZkfbtQfomyxZ()CovyA{)3sn=82^RAVAH_4BX{DzW0Q}RWWZ}y&{Ryg`;y+~3% z`vm=^oyG}Ibme1r0t0VWWc*o>aju~s387c4X~KGU291ER^L8c+^oZjE_T27cq^&n+GX6ryy1zZBUHYH>a=P8$_mDIFU5MPv^AT|U<{-BKy+?ml zzlZc8LqVS${g6-qg(ZQq)7A`S8w*OA1!ZS~LjSWT!kVG}aO4b>GUN=D-E_N8GccjP zDQK4^X?OIFov8B}?=8}2hhG}D>iwpVdH<2JldZDlQg)k^?P-K_mW1mc zw`CufJsF1EiI8>Q2Sd(eA3rbJ_Yn-{2wmt;)P?AKEsp80z}1nTS#K}VtFiQsv-EBh zy)8wr+|sME^d^g5N73tM>FsCf-A{VN!w8zt>mVv_A*ZIW0h)qQF7ekAaKe&s(qTL1 zWQQk0PAVX4PWFME$=-f$gp-EpWSzU)PnY{w=yK3<8jfjN%6}|5s*Q2GKrPs^STS|H~g)>ZIhEdS(P;n#l3y+f?SkLcYhdQV$=uUmS1iQXvDyV25{ zZt0bi9t9o4B)>2U3Oa6th9ldc;RqEOj;(D*GGK-!Vdf+-Q}=Ml%$<-mGZP_avMbMu#>_af z&df-;-=fPA3$sv1Gjprx)oMHbG)wPROK+;^Rf}Gor8n8qdrb6lqE}_aaoiE4E~7E40buuV9Oj-3{gbrEDu))|m9*_Y3Z zk~N>2V6vp#zfYHgtUT&yvRXv%aBauG%F_F%rS~!V(ZFV@b6kr$rw?{7u{+nV9deP0 ziY{hkp~{lndt#PkPy|?u-uR+RovC3YNvU8-&v&ycJvcXdJH&Si$ z0+RFI1~{T8s@_3q#@_<6{s3pIaB>EYW&G`|vY(~wa4Fl=Dl4MvQs(?*DbsCfn;S}* zskin)?zJxC?SBd!ZkD*^7KmFmMnj70(U5|Q45{LPO_qesWt(x7>;kL0cZWgNQBr2L z)>Du);2804mGSm4_uv94+s7*7AHU+VtEEi0rF)Qb>TP4yJC4ezcib%X4ja%)u`%i$ z*Q4G+MS7PBddHIVZimgecSk)Cj)C(a>)xFTStF??i;VIi9LxCsw93wxvI$alvQ<_q zWp_)NZcE#|)~R=}Rc|7dQSZ1}>K(U0zGGuF=zqJ<9`tO*40_a(LEkOtFiXmhmsQ%BD%#T~cVAMC!r4ZL4p ztM6s5P6EaiT8@-|Eae8n{U^mS6bXjswJvz5 z(K0Ypiw(wboR%YP46@1xB$W4&a)Y5q0)`xP==mP43k*NsgT4X73N53bOSK%q&|;O( zPbhy{$_<7)PmJ@h5IPy}OQfaV63OfKO1*a_f2Wk+DEWz!uao@!lD}2*QzftUGTuh_wdbx0mcdgjNFbbQW|cBc!bsYCT$6xy!Oc(+i7&$hRSQV9TM z{Cb_wUWzohHRI=z$GX9PN9%g8Nu9&RFmBK6FNU9>LVbJYev%Sy&nP-fv*!R__Y~gA z+>p+Sd2cZ5(}uBZdFsdRPBUAY4-HG((!A*u*1NA+xA~hTm0+fhyq*6y~*v#Tgp2S zCw%VflfI=qK>Eq4^z;1#)?rI|kDyVP?j|ZpZZw(cazVhUAQ)mHSeN*mac3kbkBTK~-*iK0km ztx_OyDv-7&NLDaKHr?}{f@yxJfgar0Ts4n;{p$85 zH~w!u%O=u2d-Vxvo^7U+sd!eKh>n54vo%5^r$S?&f$UkQ;XeiA#-c$U`~+uepmP7|M}I%%1H!7`J5?kHZ^ z=;spd#_`M)9e?~x2|qxS>3%nKc=4n4q&}7L12z1-w_fDD^e>vM@_H%>?sM3W1@2h-=mw$es<34;#cLdRv$6xwcz{BV^`D%`T`bYiB za46R=T@&7{#*toYf1`7@+>poYsPEHjeSKV4o<={AwMN@wv*Eq||64d(x;JxF3y%0N zakTsYo+IUr9?XLqKT@$1(N6c^YiX>|^Kf-Y^rI!}fr*rpZznb}_w-0yUwI_%dCITb zb1F0IxN74R#>)fY60F`!y(@3QqRl&7@|Q^dB*~vE`6DHNy5tX%{7I7UFZp96zoX>; zA^EK&e~{$YyOrB5^>#&?@!CuIwvzvqCL=E2T=M@C{SPI7v*h2C{68fBpyc~YUhC0w zUXmX#<%c-=gCu{0l>Z8xrQS)BzfR-!uR&@ae5sV)909Z$|4ZccuE>5krXPG+D0%~= zS2@Y|k^Fv=?KD(Iy^1c0m8}r3T6XndkqmLouS}(Y_ zzxpPcmd4JTh&74-Epl`9ws7~4k$ZU>%KE*D+=8b$C);2csCb@*CD~#5%i~?4oYn4` zR=eijeqE&9OCs%_8ENv6j+q;2}U0oRP%11ar&&U_pqMf!X$yDeLcgyr#FqbGIEG92 z!ML}7f+%fZDSc!q;okm1qV)B#Xa<&EwUlsge-}}jYbnjJlnUP4?-ux&CE+^Tfy3>z z31PTh4O#d7V#t~7(Yifz9w zdBaI?Z~sJH?svD~wc(iVuDQ2=py>T_blBZjEIo5?e+SWf!_u2!>6v@`rK0zMr8mja zTMAl|@9odNktdM<>E3>yfGn1TtR4U4Nuq}e$=VOHCaW*xOg5uI1!S3f`#bA$eOQ%bN${#F0#YkH|Q5j(yx#HlIL%U8lHr@ zpf&DQsdtAy<{cwte<0Omlr6T(4wACXrEHE>#`<}0386Fd{?Cv#kFAh1*@d)B zw;nLUO>-V&QtnUF<(NH2z`EvfOX7$1TC^R%&eE&2^!kY2EYYj7^!Bs#_7c6RqSx2b z>tX5P#{IhA+aC~kf+g|9C2KgsUc4b>=0nJunKvP4vQHctWrlB>bC0FmAFs>7%t=74 znKAeFpV4;wvn{>;mLA`BXM1;v-u{-}wwB&-(YsFcHnH^9v-EJ|e%~{rW~j>GrWA_9^a|$_(xcJTUvVN-u|_s z*VED~w)D)s{qsfduOq@SzXHc}yM^xUXU17$IrZLtE+C5~A#3cf97ZF_fEi%7K-Oek z4>^FROa5kl>3KTpf|Qaw+LAmX*>SbmfjCIraM>Y-u|A~Tb=9I3%STdRT=b) zCF$25tMx?n3h9%({Bwd{m3qJEW8TA3cC=O2CS^*>cCgB(NZG|wR%(^qM91iNxlp24 zONT?&JRSg9ZzZ-0C(Cgx;~#33{VZkgNZCNEjQ68B@LrQL-Ilg#?(IJ(W!qWxy72|~ zy5HNc3fN>x*!2G3C^`DNFiI|ftb2DFWR1k!+xG>@IaZmuxBm-{W&B}QnYp+Bos{Xe zv`uqw{}U;zu1jxE~^^i3Zb8mk)L6W!1%)R|hrEH8< zRx7?Mkuu$uwrTF|uZ2E6FJRRxbZ>u)YproHGwt4fP0(SMq{BD<#O}O?446TG7i8Vx zn;~m(=HCAP0`3m0%-q}GUdqN>WrgnTpI&bP?{^$>kpVqCz|4|hKJ8~cpnoQP9?+8m z#HC&z$Qf^ml+{^fTT0pUQdVV^wdiBsR4FUB%H~U1HIC`~rBCD7Nw}ZTUzCrgz_RO zHyCOXFbszdy;G}of#Jq$*aw=2Yqbm>YPB4}P-B%3O(;J?$_<7u4~+BB0v&o*Q|kgl zH!XvQjM!ivI%+wB;pefy3yiH=j+8Hva)Y5d0YfG1X1wE&mU=nK>*J-~Aj$WX@~)EC zI7_`^$?M~#p2nH+H1<-jNXowimQwF^q!iPVZ<2g#osR$Kk>?Rh&l%`r-h3RBSRJE% z#9Q5y%Xv+a>AsgPr@rfZ`{U@ixwk(;>-4J8I>EjDGqq0Qz5S1+-FF4kph4EX{k-`{gemK~A_40Gdu;Im2sPFABBq`zE{tPSe|xhCzcc1f~Ca#PVh=HV*h^43d*nB z9_$NxhiN7r!fc!}nGH3nCQ9<&;#ED1rnS3lLwX~PF!I0U>uZ^AN3GRAbIBX$pA|E% z22`Tg!P}QK%waRin|)C)+LkvT7NK;4OC$2Hi zF^s85yE}FCA#!($m;$2y;jPDhePGW1%*Z(E6+h0vsoW8&@4;+KcQlNZ7jj1c{VRx3 z=%cSNPd5BBz~$brT0|wdYnFs-B8(C)Rn`D8{;`pX0+dq$`r+0N&~uvVn8FTTIU7;g zePD}V6MN?@Mj8Dot;c<(QRi(-aY`wDcVy^7`iPEV&O9EW3Q?I0zL@KU!2A3-P_1t8q z&Jv)U3edv|C=Dn4{DglO&E9ktIIJ1>mKod1-veTlqr@@W+0=2yY$=^$lihnT5u8fnoY-%DFC@_H zUQUIz>=rTiUW0lRWy&83F$z6&@9#vi#^t*AIYOL@Yg>a$m2Cn~e-Z`AeXtCV8l5A@CdXu4HTy}%eSN<4?(S9eo?08ehaoH*R8*1F&d7F-P z1wUw(aDwavbM}Z_B1~{9Oq{-1%w=!=Q@X1B`4FSfLzf*A;BsBorx31-U=-8rnGoYH zTPi>~6`-@bIY5H}xHTJ5*>13<=QGPg89Ix~NG>gEJF}R^obpzj&0RFU`V=|D=sOUj z9ZvMsBc_hytEcu$^Hon`D>aNyhB@0;JaO>w;#4SjW>bd(mEF$3px@_9fFAnljsTbI zt2-(DQ*pg~783kVfl!GX)J$A z{Y>r6FK0?`g6Eo63wTZieB~xFmR~?UKz|Bi6ne<=UI8wb<>L$C8fI{*vST2|SuUb5 zW|lb>pburiau3unEO$W;P&+}4LQRb2PtRalsE)((*ZZWgJem5L%JKx5vtzkfz;i0# zzwH`h`2+()`A0yELJwJfGr;AtoGFCsx6^}IUI8)AGEWxFGN%IcKnAM3IjCV+ehfLV zd=JDZ)I^qRO&y2jx&dh{AG2=(mgB!q-c7)BD&Vi(IL7jir-`$b|24!Y^pNG60GG@1 ztHgh*_iutx%ox`}jI-QBfO0B8Kk5ROk3$W^@*&89<$(~RP!n11V(K_7Z@zaL%NrKz z&CAv9jL}EHb1LAsV(|9bP-XL|2k3PWqtHW^+XuK@mairLQ(4~0;8JBhAjVndD{ziw zP6g;?rC|B{Q@K-y<)z30>VF|dp(e8Yn5pBi{B*xGmKRVzQ+qQE=Ij|`fPm*zz|YFW zSng$DC}00Rc@%oc@|^)Lm*xEn;d)$7*Iu6T6?v=)JUH<|s|2E8x<(z=$RKOoo5@Y!#)C2UVAx5ExEcXv^xh$_H z{!_hws==koj)NFyxl({~DnK9J2rO@l8iwVr$N_3+h*7ACEH53(w8U9%-6M_VeGB#G zCYZBhxk|uuD&SZ6F_up>FqD5J#3=NT<(2@K%kopie=5trpB%*U_YmVOR|`;11?a&9 zl((1e>r1BXDK1!j-^0dK_72$8EXG&g{&`fN?9jK6hrUgh((_36kHRtj;9SyW^H!TC0bPu~@;gC{(wG}1%CMF6j?#Z#96qOOqqp5Ek!b^m6Ln}=kjy|sa;9KOXYM#d9_2BZWEX1B1bGK|5S)> zTy`d;RO=wC7FiozZSER9O!LufY9#*I^Q&mk>0sm!`jHv3)9;Vt#M!}6FQyV+A9E_c z9kL!q(3{XDq$>L|#Cd&r35JjR~|%W{W8xYjqgRN302 zxW{pp%LOQ>0`xcrs=PN)!?64ka$xysh*78|6F$J}WHROJp_(^!9F|x0Nn^Q!`k6X1 z_k%f`<(z=$RKVX>6l1xgfua20k7O1c=;OB{=w>#5KfvZPJ$r`&*rviT;&~FpIMbB^ zmQw-y?b@zIZBy|ONQAg!V1meYh?~%O&mFLJmC-MnPIN#5ify0+dq$I&+N!G+29W!A4ZJD{N`@tgFx_S_9D9 zi~kQUmpi%PoDdj!?+6%qixZvz$pxViTDeg5;s{Sc%{z6?Nhvj}s3u+d^0!LpCnD(2 zF#4mPin^m0F9-Q6J^HKpHz1!G##PRuKm5%T{?18eN}cY+1LKh5TPSDMP~jJ(^sX4s z9!%8Ce#1$upI#C1O?7+dwt;fWbZL85*!BZcA)Ds;TmHC|PvCX5 zZf|6AdkbNQ?~r>#pkd~nLybPI{~<o6&EdE!n)t4c?7RMU0`68!MxEMc$K3UNAHMz;Gy?5CzZ8EyMXMvgWa#*)#@frfm zCwfk0jKBQ{O^iqKhZ5E=%FqYVv*kf!?hJEKp~gC!##Gsw9CtT9!wi?!IhEFrrPhg{ z*HOa|^dfQ~=syr0g3QBiVd$&u4W^DWkN>ny8gNd1+?0_K;U$QbvvLZ6KWofoJyRW`U}mtwbqRLX3&@$rF{!E zcH6~Y0p*>^EG$!ubssIyz93NuY2v_+byHlqMb zo$M-M&W_nxLI9^iz@tAo1km$e28Qze1n8lse%RdLay@ku`7jmNtnwhdABPzCRFeSZ zRDiZ;pvt=nHO$;{0dipZbcpM~@;;`H!}2|wncld2aPJWRslEC30Czkr6!4r1_=+E6 zEI);Mfc_A~DD;r!#sHVg^5KPW9b<5*vO^)pS#A-aoC?r8SAyj%Y8aL~AqS{`?a#f9 zLQRb2cc4gh9F_-mOJiA4G^Mh9EzH@myhOlrD&Rl+A;$6%28QwvOn@G;yj_6HW!Wo) zYeiWQ%gZ3fSzanYITfJ&HPFK6-J94Rt$$%w6B$lG>u@=Aw66b;#QLe1LtCJh-xami z<#Ol->I+SQ4Rv%`L*w(K{g@CFId33`$e9Om9U|v;Q^$#%cAKO{&ZXqL)X4b<%-NCC zDh}aP9P+?-vB>FSV9@>V1n6Ppv}Fx0H*%J5S^(Em1B1wU2x2^PRtiu~1?XQZ9H7DZ z>U1_jzfTWaZn)Gp@pWub>lf5db{21akh6A$vT;@qQ&ss{h>o+y5B=4-e7&%%>AE{* z78UCHv-?WdgC)dj=_#ku(=OE0HlJEFm#<@k#$2B7qsU12ziCXB9RM-TGryzFOF2%Z z^;?%?9`sSe5VUq5#*JwH8KOf_(&g)Grj8TMdv2UY-B%P(sl6Emb9OWr3wTZi{QKWJ zL87vQ3=HM(lK?%8<}CtTF3ZCT;reobxKx#W05Q&TMu2iEKzDV42GM*g8&O#WTk&Yt ztFJA{NgT~nbu?E)**NPMQ&stgLR<%DZDr~>&bqEN%~@3xl&Q{oYi~Es`K^AAG){$s z9ou5gx()RZXE#EOLJysFVSvkZRtvc?71!Pdmnz#CV%%9h1SqEhbZjez#2@{+Q-B?~Od88w3iak3n6rmO9|6y)fS>6IKbty zd_$K4EWh0^7!nI0##!c1D{we)DnPejp!A+AY8aNULk=uo1#ul%KE~8>Se~;{8q2R! zG^NH&2bi;29w6X374WBg9b@^my_f|+Z-N+w9s+aKGj*KEsoO9ua-J$F5IKwX;Qrf@lM{z< zDh}!SWh`=TLOn#zbr91crzXJVM$V3faP4kzsj}@M#v`XvfO0B8ulm9P8l1A0?GAT; z$Vq~`^#ZJh`pM4X`#ju=Le$)G} z5TnpTcbyjCa@}GcC>!q>$6@_JLZ-&C0Jt)QrcuocUv!BFR?rC5sf3pPWA3eb%hDE%HfY8aNUKn^Tl2yq=)t}t~RmLKnEdgETe-(6gQcKtGbO zOZzlt?k>d4<)-yuE}bQfaVm|y{Q))BlX_*kS{^j!cJ-h_jdeDS(en?zx!3WoHc9K8 zO6$i`>ydSJa6X&OMpX7G*wVpbT~_F~JTfVDuhw-hPpn(tR840>++t2{`2byeKw@pL ziI=2_kH~aFJ--O`;+G`l)av@lHQ(5t`|2;?q&{AgpUt8NYw$SNq@_5ML(b46PvQ5Re9(tvzie&y6i=+`1uw4PB(~c3#EaCA6JJg4 z!+&)B#}eynPZp?snXY|dN^SN?f!cfP+I>@M+Yi}I;*SxKwJAlk3f2$Mv4@88yJkyi z8lh+A&#*q>@<~sy@*XE~R`gnp)@WasaHv@ZRQ5ir3Vka7#$V%4bk-Raeeq{#4>c7rFOM4GG~LG(E5Cc9-N%W8wr%ufz@OW3*UVYsJLD(?mH#rWVbNcVy6*JL6>vHMXf~ zOqFd2F+St9Nb8(R>!(rcv{?CYTbrQQkpn?Kyyi|a4 zDnS2S>;MhUE2ps$l|2cz;pH*^;w%fwGC_txZ+scZKLUYkcl6ispmj zJ4Rpk;I8O4dGKx!Ry^6y0sBjq-T zEKvTWs4JlD*Me=;(q0S4AFr;{(Xuz zGbhanu(?csOyfHhTRjY8wA4b3GhIZ%gWGtN3fMQ^>RPmXs59RWFmS)$vU{i0p@e`}~&Xtq*BtNoC|> zShu}ZECg^W1ibzx1^UI*qM?6a(3ngA)rA`CXc|*xzi-Lijnkiz);X2dkEGU#pk~xC z1kFYc1U&)KA!x#n@j!1db(}!|?w2&`UZMe=N?m`Lv#IMQ;5ilWH@y)H^fg-qfxZf& z1ATmdf^L|8JHX~Ly=Nh8cfc?LeFDTd(>(+%rvmoN*U8V=RE{pIjxdNN)_Do$42K^B}sm-(=ed(d40VwRBZlFf67yCp8#$fOR_<`UtZn@~Sh_ESz`*L`$FPFIjct>;redF{!UloZV~ zplqCVpQ)<+$q=JGPTV`b$kcJ1_5KfO&f0z{0;o1*x&rg?&bzQ^zi_CeM@I8dbloVAGC(8X=ZbA@+(_0%9Y8mTkp)3_|`%>g?{wk^kxW7l@7%lcvYNyNKhR z5qH*#G}1S9x<&w`o2;c4YxBU(IlT zZ6A*l>NpkZdd&-{(>sbPdo$`GJgEsbTrP;btJIh*Cl0-jR=|58(o<(&-- zJd%#5l`S1t_NibQ1=uya}jbSRRWUSiT(MI^VujpbKvT;!81>7oZ-XKL;@iJ!E-GfXik1fI_&=Hn>#T z$q?f#PZyw^3ef2!}3vIr?EVi=H*nDC&Qc_ z%d-SLrviS}3o(|f4GiTEf#^Vwe4}E|0GrG7FUt#H`)h+Bo_~ZGXSzwiaw=dCA+Sl` zsCWV<;>2z8RT^=*LSb;K0T*0tEEFu93YIy~$B64~U?_h}h*9Fg@Lcny!R3j$Jg4>3+!ivZ2GhS$ajvO|$tUp}6^9xX z`u;_d?f=C$D*oz(-u=Q!ym$I0X`x&2&+Ga#6YHnmy1ovz{4uEIE&-FiQSr-cT)kD~ zi08vl%kVtVw5f(HxpOi!WY}DY9qrB{If2l`+1{ESebY zZ&chFH0I7QqYE{5mT63todhvH!z`87IhEF*d=@9bKB!>`+8jBY081b`ftYkz^tBg; zgZ-VyBR@-{u8C&&RO)VnIh(px0ne#`|LK|7JbtQyq5R_@MxlrEc>e&G%kqFixYl+Q zm#VU#A;wu=DL^?DpocL~<;_D4!}8O}f#ruGMxiDynd?j)XPMFZNgB&n()lWt<=tV< zW_h)M=TyMoI5Wob?;XV1%Ksi>6ne;VOMuH|`KK=m;JO_~370Ax4>8Vi5k2F8J6)6t z&@Y|_P&pSwFPMW9=l*O@W%q{J*oo7gy=acEs3xy%2vy^?HSL40uYwrudh8n&ZyJ4> zn-jiK@u*Ru-#<$*xsKncIE$;Q>?y_=wP&pe+>X&tLwS2b)pV?vsYu^HhZyZx`Zp?8 zv=c_8hY8=PSY%X`{~|=kcKjO^n|_oQ(2JH82%KtIw*$IZ;)GL)ljokI8Q1eS_55R{5ckv>OAI6KDq#qn zY*Ib-7|c-^1)l071aK+@bebOX)CdDZ`R724LJvK4c!10G)El1`z}3~@Qe~YX#y!i&K&jpdR;y*UKtY?cQIcuocU zJx|0~-pIgEeuo6;A^_Kbmdgbwrvh~K<6!w>)G#cc zfgD(_g18PW?`G;aEZ_FuG?o{AT%b2g|CHVYv78g|oC^4X3_iM>Jq`5$eG0@V^pNE- z0WO#20}J8G8CY>Iql8P9b$}R;oN58e zsQ|5d!~q(duU=eDw5jZ~oW#PVUhX^|K>cKA@zw`9>jo$rXN@vdm47kBXpc+c->7)? z?KGF{MKjj6JKLyYr0 zTw3Q;T3d=fSC{2k4U^MxlrE;K%@%%ku5-7ht*E;8JD%AjVm)6QG<5&>J3dfCkaL@)zo- z%C>Qm5Y76bhmq7zj%MCKBWFDiW#gc;hql8P9je{6>)#$Yj>Gb(H_})>l1|R4EWbiO8XnyYn=Ift74SV6 zd~`@C)C2TuAV#5wET0+Ra#>#RZUJ1o7+k7sTZnO%rwUL`1?b58!Sc$VxKoDZ&yfSv z_aR21CbIm5spGJ`$?It>7Z>WysW3+|6U6c~0ne#`pL1V~<=zGc-Tz2{9bffYHk#37uDL+b8{Mb39WFav=8ImBqthmkWsz~x5H*@bW^7$sb) z>>7yi$Y~OwoC?tQr#e6bcbBmd`u%sKNqUVUy#Of z|3ba-Va{fGiGb%+z}MUrWBI=;m<2$86=D>6$ns+WE|=veXx)(N{mWn!ET0Q8&hkX*}4euUNysVpA|b2iJX1w5w${?32LSnh0KD1S{G_sM}izMmJq z^zm_k&1HJ4Lf9UFVZx@$?tmC)x`<@R)<>#{m-aPyI>AW;%Ru*c#w`o0? zON*s3PNlJHxH0>6`X7VF+^*hIsIfV%%ptn^B*b`EGtxSz(t1Z~Jre!rG|6L?=dux% zJp;BVz$jR(6_C7$ol>8t|vDx%d8ZPS#}&NI3lO zU!w78&tZWV?}xSQ6j*aHti$W{XX^UH66^nuuhVa@Yj2%Wn>|7troGDF`W50}87Hwg zh&~TAsTE$yOwn=4zeiK(b^7tz^7V<9<3DLD{zfS)cG|XAzuCVGYNmb*o)310TZN__%Ru-w}f_|{RfM$#S ztTUidb(1-VQ<-xnPNEraYkEn*Jh;C$Xw04QPAk;d!Y`OFYD|^A05Lw}^^n#%mDamZ z>$D`yqlO{qYUF5qDE|_OF1HDv^E=GcaZaN%o=>ChK3XoMQuoK_(wl&~J_4Ro0YBtc zXS!C|d8h~I&q9ns4;L%92e@38w za%UuSsdNkVlP{HcvL$DIx{SFo&T2spJ$?mZw8tf>uhZXVD#BxluhWk(Ds=xd$#(p8 z`gwEG-2E=CSyJ7-0jyK-2JRjpEOII=o_#Zo6#I4h{|1e@J{(!7vAdQ^Y^kzaAjW-I zF0FGat+(EUk#ZVp81j!r4&>(`I^<7Cc%6Q0Q^y%8*UwI)ZZ@rfQmJeCOnMVgmlN=u z3izEEynRZf-+x9uKvxhQ=#kgy&kL}*Oz%<%+g=8nD%$~Koassd%c+1JJu%^R`nFHG zn*>*)HQ{yo1x7{r&p~v06nUNgc4!zs=EJIWNmb*o(|_=6nzweETfke}!nz&kRYCx# zLcrA%DA4WK=~o1ex%9u;RG_h$p9F#a2*f!3)zUhr()!x*2=rRiFa({89HQk^h%UDY zuhaK8b(}!I>zOp_GKG5c&Btz_*9dq{1^ht_J{ssxq8^~%57B`hd7b{60GrG7wY;iK z`^w7U2Ae7?hZtvixPawUz)n)+=UF_dM-l)1Q8d>1-9|^{L!+Ynw;(#5N`0OF9#c`q zQNru=qm7F4FHN*6@EDte*4`> z{MxV6-ybyQdUpXWx>CJ+foV*YoenYX-8yNVQ)&I#JjPL9)G!2XiyVS+Q;3e=;;+*W z|4$l0+ZMt+`vaGtaRQN3f!LKGMqa0{4;pg`dWF_YsRSKi8dGHlLW~nMQCjCzTL0G# zAgBa23_zTN~5k*q27#!xdmj-EZZjwcuocU2aU0b z<`4rz`2!Q6hilL70WO#2G0zoX`Rn(^rK;>Bh;f#u3Q$f3XkQm-u=e~H8&TN_u%+1x z_cY9Necj1Py!PZvN?LoK4rSx4<4jfM9|mz9oYlkBahx@7dYZGYq-9=e=)L`(kPm8th zv)cX(XMN5|ecW04yIaGlpX@BY?k8u>gtBqgL#C?o?}QlbvHd!|^5#6jeVdnSY-_z6 z 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

-cRi4I-G}|hVjti}l+TpCAtd3ak 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⪻|UUC)Lu8~{xIFh{jHp$W1 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

    @{t%aRw8ld=0)PY?sAb>0Nk651n*Rd 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 z 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⪙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 z {1gDRlc^Ld7+SMbmgW+>(ei?DG@wYLEnQ@i6G^PbSBAu5whKaf#{2~9FrzBW`Z z6MAnXblDbq1(@eV(6Qtx>Rj|ha=#{a%I;1iHzJxpPAM_0Q%VdG(-$aB(Va2Po}xR) zcX`ElM^uafD+Zwz zowY}=w~EJI6}uCZ`Cte%bj^~XSS5>8P{}v$gaiSvZLU2?Sj3uCb1Oy%avC(Minw#M z(`P)n9TpX?XoVxR!d>+mky~UGFbtEM@1mO4TV_J@wPQ%Y%-7!_PLtk<5g;@Idn5@2 zxE3samKw$3`dXo9NOYn`@64E|EZ_j4RU(0Fn){v~#19k6FnHt>k-cC!*CRE{tJ9HN2jF{A%8J;P@LvzMZOw&c!(DXZZ0HJh+K605S^|4Dr(M$sy z?HQqoX3aJtb!U*o+tK%2Q`8W(FoR|`KS?WQ2C1ksD6ASVumV& zn_@MNB}`2m%4QT*V3TGM01uK+xKtQ`G*J=;vwQQY`qC3MEzz5s{c2*yQgM{%6+1(4 zXC2+kgSEgS;eXi-f#7rwlvbWMY4V?#A*iTC-Lg$EfHpC)YHLa$8b1A38qrLazazJpNf( ze`=ue$@;tNd*Z!VYp2)fANzFJ=xach1thda|C6oajXv!zpEE;*)@xlIA*?fmgodzF z5r%Chy03jFAJK6UqIyF_Xo%h(Au{($SIfdNy4j4N_MeBsZWnB-X~SE@r7tX()Yy_) z4`;jqXw@1sWWConPMwd)arD|{NSZ-O=!IH5^c zw4~aeSVUoqicWx|ze|$-h$ayLPePv*^e8uhWX}hgkS;@1=__%T$Qnd)YNA`v^hm~6 z^3=p-TTtrlaWg?9;e-NRE;lE=o|#ohRqO60XF0Q~1u$a>K=CI&vpHpOT1*DGE`{~~ z{H7*U<(#gygu2EMb#0-ZIO-D2cTC>44JnL6$6K`HP8q@M^GVlyZR9_3Vc2|^04>cU zp*7#{ZzkFt^F%w#qW=9SJk&iA>Q+NdXsC|@YBxCYJ<$gbNEujPvSq?ZOeiA)Fu|x# z0)pBdK-mqf+dxunA43$|A92=Zy`wH-Qcu(d*6o6ao+v{xPgH~rPjoSM@Igmir&Q3Z z)9BCD0~ded&+$S1Ifm%ZT}qcx4KZTOc$m%aM$FK*$Quq~E=K!`*~(tcB0#S!2f+bE zLivb`L3pOyR$qF8rVM+g>SbH2f|7ci88T0&?8ZyciBklGlqIfQ44Th>`B!BXrw=_Nd(}^R8FK| zYzKh36nPbS(ejK*uCRa%p@8(FPXz6J?i^T-g8Wr4x=PUraP)siMUUv$Xc7U~7OqbU zdX$?$vSX`tNS7fRla{^10w=xb3E{j)GQN_%=!2>#^$X(mn&z2RXj<^Xy=bkwmz)

    Ro(gY2AA zS4y5f(=&d%pB*;eDWGM?L})hav{#8X$GqrbS=9YL>IXj-qMkO?gob)Epf2Y{_w1G8 zMQ1ilHc~YbH3Vp+`XnHzJq47V7hOSnD$98cQEcDfd7>t&Yw_BQjPq1M1d zFPfp47cIhu`2V>83F2OKtD6;F0-5nAUNj%ni)M&kbUTC+%NU;%I`|B)x`xjRWm*F^ zWKIasWV&*`R9DoY2n(SfaeRo)Z1;r`Hq0XkHbTR8W(l@}@OzZ1K+L8$s`MFSM$a5{ zdBJZWykZ^nW9PA{x5k?Kzsf;Jw*$3!$r-zPR5IEVwqvQLOdK(n5?B(KfV+xdb`JV* z#W^24_oT_2dGa&tB)G}1shnEL3#?$ga@DGG4u$&RxKPD}L;`w&z332(%}Y_O8k|}& z00T7f?7B)w;MlkXGF8g_Y}M-I6HYtZ1hzt2)4ZBBb5ELVf%VgVazrf|yEo_N+DPfA zZJyyh{S$BVvPj+4G2Yp_Tdt=Y8wVGL2}v$ zLTkhepZ4uTeOc5?eAI7^P`4UtLPLG$Q=xrGemp>oQBZr}o5e;<#y=jwSE-w_I$dkV zWI{VR#0Atyt9~y-vGy#&L3_532ROk8`f2I-h8MXI%=Wyr3f7vTeb^1n(<8W8bWv#t zaD(y|G>w=Y>(C?uu>YS=L2eva+_o2qD)brK?ZUQvn?l$wa?0Z<$jW^@fLXE0=vybU z-gxkRf)T?N!dT?S=8E=>SJm5JIcPdH<}8 zeM)F~nAsfly`s#WmYL8pufeb?_VIu!l~jt>K6`@4)E`a?nd&mUgogJF;7#^w4P{Y( z%}4#k2z9riCN$Jr0Cl<1-&MP7uO_GSoi^;t78Fgy=2V*tMV>lc-;uubgfWE8%`y7jW7#qiMIuUuWeftBuA0d&HS4HJfPwMm%37XD!AU2?+ z<(v~-BqGY^#uT5WGZ1KqSMG3GSb2_Sh9I{~D5 zP^KOYrJn%OcisYse2P}i4(m5m3i3Yv1W*h?`U#*|g7gzWu>>=o0Gj+8YlL@GL%NbF z9C9j(v>K5&W!9yAUpviD5Kr;_UQKaD8c7-0%(%$($UeqYU4_IKs8%B4y_5(L_5==$$I2{Y|7Vo zc;zVMlE1JzdgIlBa9n6^uqs7Y6CuI%C?uq=!nLOR(osp>Q3;h~fGYXkCn$sNc&WAG zb;?&tyFRUiMuRd|_Rs

    ? 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 z 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

  1. bpOhJa9(6STe1-BrEPA< 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
    YuLi&nf+|(v!pb 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
    as|8Tgzl3 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

    8N+<&)c_% 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ⅈ}>54EF6NPDbPRb4B@(y+x%0G`y;YmC;c-|TJMKR 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%0DygX0CX4+gz=<>9pk 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

    1#sivDfji`UJ*-GdPpBnl0Aq8|pSVfoTW) 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/SimulationCore2.exe.intermediate.manifest b/x64/Debug/SimulationCore2.exe.intermediate.manifest new file mode 100644 index 0000000..ecea6f7 --- /dev/null +++ b/x64/Debug/SimulationCore2.exe.intermediate.manifest @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/x64/Debug/SimulationCore2.exp b/x64/Debug/SimulationCore2.exp new file mode 100644 index 0000000000000000000000000000000000000000..5b592a4f332fb736c0a00ffb75641205b1a93471 GIT binary patch literal 154114 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%0DhVvQT#6gKBV~^X{ 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

    +ufK{I+1-fmN`50{Z)*dj#B$ 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 Y3{`rD$=xz#c0)Dt?7z9nOgzm01D1*)761SM literal 0 HcmV?d00001 diff --git a/x64/Debug/SimulationCore2.obj b/x64/Debug/SimulationCore2.obj new file mode 100644 index 0000000000000000000000000000000000000000..95af1f4572e5111d8dac985059223d0e667aedd8 GIT binary patch literal 3818 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�UE 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 z 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%0Ab1h7BWp$~! z{M+l$Uz+6(M`gVy+)tbG^R*asG#2sfS${&eT}&MY_ViZohR&?KHP%dOwYAZ$+O3SgE3_%s4+X1RH=0MKWk zMuCR2Tz`YbCA3>ImP<7jmAwFJoXtuB$5OyO`LG@EU|bDqOTAM5bu1#|$~_qPX#-dE zzGvYc3{>Ql^PO$);5{9tS5QLlX9q^nACibZ14QZCPMALJl@_LRXlY0YQ+qhF!?Z-0 zU@1&I{E!u<`nqZQ{o4efVVK@ASllpuLNj~}^(Ibu4nOA9ABj4=10*-7>s{}Ah z0bF^%mEOndrj^$;0ce=s>kJl`&?A$vtg2>0z~+Zg<7{pca4ZGfK?IKS^zY+rHaDUK zHrGOR*>v|>uW17(PiI`3M(AK#wUYDndib(A-72tI3hci3Mf3DT4M2HECm;^H{LEr+@zW_xJ^huJf`r!m_ywI6%I zm(6U#gAnTz>~OoM{58jL=YjY$s8PfrvuzC`m)U18Ph)lrJR)a@LX9(<@Cd|yQ^9Q2 z4|dLejuLQw1T~7&nE__$+RhB{+r??L{z1!4!lKd(j%-d7o>%z#6l(@JS~sn{LlS_7 zGeDKW;u1PE8Ovwin>>9VYMjl4XA~a5;LPQ9un*bLf;=hz2Nsci2(4v#?p~w^w?)rC zMU(M^zJdxBT=lspOM=T?Z{M;@27^FKtaD_e=DP7`T=FI;NU3!6qbjiNVDWN09Jeml9 zJ&NDg!}WWVkW`;Tb(6}S2w&6&&TxI8TUuVd-c#q5dx_T@zUlIgm%=Qq7ECu506TxijZ)|1{LkY|_ zg6c9GnE|$a&9+qAS+Gy-oJQ*hw0tJa0MEmb&1r7|%u)b*1lY^~BX!gC`_E9LK*JfJ zwZY;NdTuh7Lo^nZ-4|+{&He(8rGV={!47z^V4rvx(L>MIVX?yn``NF!vNw~3dw4+B z4crC$o2Fd9;Yt=||I32?I1IgqVfeo;*t-CwUmGZcz}pLUCt0vhfpfiJABPf>>ad_y z=a|D?uyeJ6GhEl7mzG!e(88HK?Yw*_6J)2>5Q!d3iQe7sB29$jzToa?W{08#oc*9iaXS0!vvh4|xZZtk z8m$-7@|iGPbK%J5besTYDS*4*VGY-1pEGO#eH&^NXgFNQ87wZLpO+?L84P!XMP>U! zjk7sXz_Ao?3o7h@2g6kzOc<4a8w+>1wsH5@Ioy`={#?bCF#y zMMWLAg(!iJmje&Zh=@$Hck9|t+`c>~EpD&V`kWBAGvUaN+f<>3rBL(u?N;3O)=ks% zPZEHJaa(GzxN$or8Os|hnK{JmMX2$(O%re|1>7znICJnfh|TGI7G8)`V#&-&eDGJ> z9Q-|X5Vxs=@E}SE!d+0KIT_zY^wkE=v~quaR`cX(sWE)np_nPXWhuSgx7^NB z<*z@G@dNQ{s8Ph>F5(n}$c@HQS`L#DjfY1Bqzr02AhQJ`OMy6KT(Cb|VKciHCE#2M zHHy=jmgeZ%PI~`yRvN8)nNCCw{`$g^&FNeL%u)a^9&4rd@w#dH{$~QvFugY$EH0t< zU!Vz%U|Ibs69P6rg&JqGQoykkaEB8(nk;e;u-W{*v5ERRs4koC^7)oFaPoB4nQ4Un zaK7$@d%ZgZzHCmH2yB)D`-a=1d3ve_pu9E-h{HU+&meMX?U9P;hy4w+UqFpByHp^u z6o^a5fY~Qup=W^mQ9_cBQ~(DX{k@*x@;l z@~az}T=*Jl6miIGkwN4#+b9*$9q@>p9R)Sc>}r9?QXt-VE13QHV>@TRMG4HVfEvZ= z%m6Rw+RhBHtt5@sD`=aLu)tjdM>eNb0+^)$UQ}ky0Bv;B%4?PYG@Jo`HdtIjt2-rP z`Ffej(@&tr+1w=HSPHnN49+?D`)xn+r2Gvm+>J@>;O{DKOL;xeWPD>1JNTOd=M5*q z`Tueq(H(|f7Z}!j9dU8&;BUcFbZI^d>5^HqX@%AYe}C=E@9W|E6G}*`Z=t$LTS3Z;;m_w>O0nAbW?@55oWq&y=0CWV@D9~`Y78xuqp#ze!9Hp_SY!j$)HVXtC zO96M&EnxG!y=^wzqXdv`p+-T*H;%~D|Z9v)@3jRrvLO9JAM*$D=b%k1y8lqVzl zVo!;+$}WW(XSRhvWGN6A4Fj_$y=ODq0wpkeFjSY>$P7?h*LG%rGfqyU^+eN&$P6&= zT{m0X2w;{1cn<<>W`MD<0MKDjqd>zM;3R{^CA6}GCNzSjnZ}~B2SSarStQ_C3b?^H z+W`+w5>EB0SIR$;MHxXQmdu@au?733cet|mEQ^GbgxJB~4|{O^hTpLGpAP<>hN1U3 z4FA^!y8tNtU4Sy^lD%N-gTD@Nt{3bRP(rL)1g$#99PWZ$R~tCP^_P><@~RGP%aRAj z>$@{S_HZqc=&_XO&AZ8tp7P6K1jHktI@x6o{#F}AZg!10Jq^*38j;E#05zUqodhCF zfw(6@q=|6CV(yM+b`(m$c_Y*)PG^68zOL;I*ZZ?+v@W9kNI+|3h}4B6o6}MO%u)bf zF~l0KE8k|=0Qv#cD9~`YPB2(pLOUd583A|L{@egH&Snn*$5Oy88EgkU7_N605=P}K z77W!MuCar^ow+UL;VcPuyq|MBgvc0F>7kY7}v}fPH8XxdD8v zeHx;DG$MMw2-J8C`wK*t0*0r4xQGR?Ht?Oy$ zlQ1H-zR4hLPKO9!mICmB4GieYq{VkoI>_4>gbTYiV~Q3E--eM zhsd5|ysqtpY(<;2kd@MwDj{UWaAb#UoUp=DSebT%6|&uR)5^=~%>kWCbDECpOHfg?7D!9ufn9ZF!c7u0B8IRl_b*LK((*E)^O!;^ck zrBZreuHmK%V3q>-ya5)Qi(mnu^Pxt8hHMTqSX?%rDN1CskH(_1J)p+foF?E{3b;Af z8*t_`g#*}J`TM|2FaYfBPKo<*(B?O|zPFA=!Wf|KQ7{JP@>l6{alTWIzrk5g#XYyu z>-=5GN0)5hUVR6hC{TPKfHxiA@hE||vY?roMoSM}+llYYmTB?5rd=YZd%=-CT4oA` zEQP`W{SAf6|NeC*0YE>8nik&&3>G)O8)hX+rHd@3 zi@#iFx~TjsbkoY~1~m#a9AEnxEH3}!X)~6<|E?N~%H}|g^Is|8SPHn#1dhI8S}B)s zCI+v)iWt1aqRfeboB{GEn2h&z6vpY=${P+f+Bqi*-E?gy3XdF<7KO)7Oze3f9NAG= zA{}KZ9qoIq6@_nJk!~q(In*f7Fbb0m7B>n_ld+6}JB)&%P~%ZpD&SZOxR3fKN1-*l zP<{(|ibsJj>|&3VAI39P@k0Jq_mbr&(^rK@(ty!l>_&mVCp`H$jG`6unFt-fB`8rl z%6koJlols`_vzYB{MNKci(ehug(hU~xo~91Z>3PgQYf0$$BN(nx@qO@kpMJ|-wK1p zjo&!hz$IW=G>-{E{N_WA$8WWOV=3VB2^@`vadm7qhoS^F`$2Wtl;@|NXIVv_Ds}Hs zX+(a}R>0fOPpb<*HjPz+l%*iO;u;|RI#-Y?{}ZTbPnEjIU~mcSm4x9oI0Jn*Lygn7 zNkFj_P)n}{s19>&`c6Oz^tFKM(iho)db+lgjGddOari842NM$Dt(PSM%$8}Z0A?wG z_b0&S(CaQ(0O(k#QJ`Tmb}(36E{{#d(ne!Z*=A7VZ068~EZ^_SQoxPw4K}ycvf12# z5Fl)D-}JBK_eeLG^b|N$o&RGiQA6y zKMOT25w;($F}R7)FbTt^f0+TyO5a0`CqiQZ#Zo{WAAow{1rEAiB4?lk`tF13(ifSP z2J70+tn|iV8o&FU=&NblmoO_eha;QCrUICy04~4WWG?;w&GVA0%G(Sz3N)ORUNBf( zE;k&Th~*Ku1DjKz#@TEk;8+T{pL!w0SNszuV=zR{=T|U9hPZ>G4ZElBrv>;U$9W4V zB%JX4Gub)SuQx)b&-^=dPT$W*389(*HOhdQ@&;H|kxbvaX4(FQ9iuiv z152Ud`^!MXzuN?<@_&Vzmg&C1;6|rU5{Ad&46(T%YCJYY0*a-8>J)%_XSSW`ub>3_ zWiFW+{Ll?rCLuecd#D|2Y9@nCb5rEH0NP zBx9NTEE57YpN1M|vy*^hDd1`oIGT3%{mV{94<)c!8>-8uYzDvoGqj2%;~fX55jmdr zxUpn>5PobLO9d%QL0Z}aNUzszD*sBTX~{UwU~mcCGYP}q8iUI21~pD!4*|teK)rb> zK%MxEos7*<0(}QTb?J*FV~(!vBx6aFG!8GLZEnJ}`|{J00A@4TTL7~Z!1W2R*$j?> z1%M8P8U-3AjiJWb>@VP03b;Yt!RGiaVOlAFBuW4|2x=6h znHftht4K0#KQN8Rwi>*>87zPwI~j)vQkH`By-R@fyFbj#xC&}oGHx>%Tml!+HZe9J z?tn9l7Nxt5LcPelpI z(*|lv^6YC_MUrP>8Y`(?1fO{Y)%t! zECt+CUBTvCzqmu>d42^$q`$j?-0}nuJ8u&U=j1=SfgHX^4zJleTh5jL=VopS3~YoN zWx!06%kXA!g%HW~l?~IPbQx{BV_8-XKX#_i6dG6x4Ud(AhD&st%0CZkTBa{I7~JS= zq^)HPLq=mz*}pb%_v5jdEudHmsQdubxX0~GABqy_>j%}PFOunJ>Do@F-@RWNhbL+L z(Z@OG!jaA5Tmj5d0C(?VW%{xi3>!e-h8hJLX8JgT#pQD0p^2kzFx+9$=?gW^W~G2* zDc}}dh!79`Im~qB_eBXHdqRzZG|AZBvWg_*nfs;@>1*)zn*H}iZr!GFi6CVuNcRem zE=65TyNjTvCFAJ^gG=Ca+MCCcafrsCve!b5)3;PWu@q3FJA=M$kJ`z&0VUA42C7S6 zBpKh(wVh<#d7m^6H`CTQVcNYBj%*fJ3SgE3c-aM3GPc)EE3a(=&@dUd?X9u6TnU~mb%APK|z^)et-b~V&EeVYUnO9A!! zc>whcEP^GXPi0d&8GL|W!K&5tzic3zO{d@~{}2{6Y#>jIwR4R*4f!iBrdO5vQGWo66r-%^gikp5X?An>?+PFgyci7<-RGjVDje&T^7ZQb5h^ z1W-pm%pnPqNBIY#1o|34b?J-DWWPTYhSPoyNY+o|aO?qzGubRSvRTX%z$^vu&IH(O zAcyLv>G|hSqd>!%>}Z3<<#N|#ER8i5`uz*2aW)GC97_Rr%{gH6pei?k3;7i!aFM%# zeCa_R6yCEeYTQ7cNYH7Tyz=u?)B-5wto))EAbO95~^r|1Y zbvs54ga(#EL$9+z!>g!^HTyZJX_-FBU~r>TP8a7 z{(zn7ZBYV!&7r#VMKXO?UE5i+&##}x;irufGkxLx48mrysQ_jvfEyBElj##-0ia`` zMuCQze!9Wpa@jQ*ODl~5C-e2wmGr#<%m+I2=jW7T_>?HPaG~Y!*udFiQbE z@eC^&b9K|o+d37~R^(Q+Fd63?EH0OIlCeAqcZ5Y{AA%ZZvy*^hDd2wXfDoUx#!kkQ zPy(CBLUq}c4dkAdRU{dQ@0Lbn7rMrXCF6(Rx-(;`AY~~?I|N7{L0!y@Q=q0L<4p#G zOW-$joe;xthQ^?>?V!f#>mi_63aA%LK%b{U;RKR5klR*Mmy$P-&nBEe{xq3#f$slf zQN#9b278sgMzFn`WZJPdkR20RxIJj0YzHlz8f)Qb(}J~uT#t{izYjjb&bMroUkfE9 z&mZ3~+?3>5g*StJQzUtc>ZK*mF?3NC3*4RXV~@e!5+{}tr+TL&PFLtQmER3&TJoG| zFu2LX*CjCwp2k4WpN1Mwp8f)grGOfI8bEEj+n&kRpal9pgX+>3naN(%wVj#l@49Im z?xgWYXRrLSzFz-@|q_A4QH}V28+w(?RyEAQ7qp~VnQ&JEr%Ls zbEJS{Dc}wxaJ0u8{gpdJ`tvKv8^}TIo__xotwg`^9XWv{zh|J1-sYc(5~6f;U>upo zoqO?i)3u!_UARkHlt$7846-cB%%Z!58S{zPI3a?i5Yf236{ShA0MKzzqv;ez=?sI# zjZ&RtENwLwm2D0+9;Jx_j-`MrI~7s-`%XLOH=+cPYoSI#I&4-<5Mg)i*?h=J3awu$mZWWYb-9CEA~jlvVNk;`PES4Y)%t!ECpQ4 z5S+O;csiTY{T1*+oDxe{>)$`X!@LK!cCVwZ3rwy`Goi--@qrkPg7&DQM?ouXpu8iX z))==uUE7IUr=2uc?rGC}y0}S*+Zz+yQ7}`eVJXz?bFvjT1q&qDXsA)3VcgmqENkI!jV0K=1ON-N@pjwGo4j_u5Oz4zlwY6 z03ClP?J4vR-n?Y+xY1ZjR~iX;X22y@j{Bg-qfsdUSqi|PPdX~6dT(l%C?2zt=yk`( z+3bsc{|GLfAw}D<#$=br&+4sOOI_s{tqx+eCk%9q^0c|~{<$Nm>rE&|)t{58{t2R1 zxoPppN$EfQ+VNN--DN4=&Ef8TYSDa-X~w1b$$~_hPtwh(?6FYeG%uBQSxUR(vca#@ zPOa67nO02FFZo^h3CG?YcrDP!K`&k4Mqx<>qOgEPY=C5P=<7ka+w7!_383=twkp$| z_jjzJHqF7nVErb2KNG5xixc)GpVdG9LpSR?zcG{L>dJ4W9oTcMBn0wcDY{sIG0R=% zu`69x^4>jx?E3C6`4t5a1zpNyW)24s?MJ!C}9$N4XOio{7&2H3s7wcuFju7 za?p8Eu`O_h}nSaZ< zUl^vpLXGFoYH63Hv|GaMcKzE#L-{YkI2e!|-M8#F@6~TAZ#-0ot_lB8?dm>67ct!z zH8j)RL(}sUO(T2o7P_`Gn-1CDQfP74wadIj_J15Fw3yvpm9W54SUBZ)Yc`z&3#7#V zL5=n?T-W*Gm1ggSUcN4M+sf~2x_!z&Yp0VuIs4`gG7>rKF^4V=>n7j`)9)p}b`B;LafIEP|(Oi=``R|r`sxz?| z!)|E(hc_n{C1whpOYz9bE$&-h+?OW4ihD*kb zr4Ulknxd8IW&n(Y5i)BK)F|TcYx%7WA~#^0>0(I`)s7-MNF!3&22kTMD-eh*1>&`> z7~;zh1ss`ht+*B8`iMnr#gm^hGe1CC_9TTZ|Mo|N!E`@tbdZ$xpuEvgqg|F~CuCX) z0Oen-4V)l7_E%bvHqzCXQ1bJG+z%6^0{F6rR0Cmvr7+N^B{MJwmYgMDlu4hJw-jm= zaTuh#3?es3eM3Z-L=laEN31_LK#d2fu|Q-g5SJXs5bFy>6QrZrgYplDBX>-hAYG6t z-`bM*1ewhboSd`19)GKoOKYiAk$H{&@@UJvND6-e@RQ(c%%6^C7IYLBqlCnL6>5|d zXG*+R*LJ4FZwW{8I6IRrT7wWqo?Oxij_mj~6>?Y#IZqu+NS&V+3!n=AhYcu5VL{J87b=@?u0(_iXj zd1lf5l;JAV3dTA-O|>iKHH2DYc>Ws6Jqa4NKl(joOImo|&m>av930uvyyPXTtNvEeOwY7U@&p z1({=i4@T7q_aP#Wp}vmDWNody3aHVJIs>M+uI&t%+0;bxfaylprwK{AKOET+DUnXI zlui$AVLDCEryL>ORNfk>QJ`T&9y3_nhW6bP{kZ1>9Fh8E_^d z9oSs?r@+e&2F&0+_3v&6dkC7+CN$edyNAVNX47VZ|M3>(wy7tR>{j_}eqr$*C5rx+ zFQ|HZ&QIGH7ZVo#3FSLj(7%ezT~qkm(i2HH-Lmcsf~&588@ zJa$T-4KrEsKGZ1Ua19)95V=`VMVDqlR=9|U!Xpx+AJlka^bm+F1>#%HY=|Z|nz0AE z{|S!V+{nx%N-5moZ)M-sjjk4Dmzh^y%)e7~CQNm#vf7dIj)5BOxifI{b!}(hZrPj` zsBh`QIAO57eKQkoN2#|^z)~n!aHJU%nWsiay zk57LA$5OyGA#lXzgG24ipMVlT-U>AeGJnGIU|r+1?^9VqzlZx8SEK7|ZAirS`M89B z54VDzz{07$eMvAzjqcBa>p*xHI&y0s>9j% zY1~se0NKs-)D7;;f0KIJ9VoJ0;CP2UT{=X1s8?Tj^Q`*jy1gXB-M7ayeYNJcX~Ct(NLc8hJV4tk?<%MckyI9R1PMaHRZqV1ZHcI@Bo8a40u6SlnoTP8W;`So&!! zDtkH9cmO8~IF=^e+Lf)TwO~!{ zvNivdRCufL`nT;$7F4$@`?l7yZ+BfbYRz^!C#3h@3f?1zwa_Uep7E~Q{=uxzB zn93c--!YYgI+QHV>`A8lkNR~ednsG}Z%KJ(KUOO;K8u65Zz1gEnLI9FKa)?alpK`V zGLT*<&uk(wcMM$k-| z;Bx_2E6+U0)fQ()lW4(?7iT7rO6;>bkW~Ih^ZO-Sk9RhU@n%JF-k8c;Jlb7VqDD^6 zdXHY?DY_glk;&nK34Kg`4_7KFr<2=^AH3Lx{GdHmTsogV7$6E1S9%36maD0hl|*F; z5lC8x^2!e7tE%2On0bAGYco0dn*wq^zk#56^lB0H=L0TO6qi!k{vTBD6&4GuBq{s$ z=ZXi}OWE353)a@z^}SKwZbw=)oQSGxiPQD%@TMQU$!XE>hTu&ibp45CYx5VZl{Yyp z8eSN@NogULdk2=37VmIcl&fh$k1EEnLIbX9OB3$RG{RwRI*aql$2`U_75C*BRG`2+ z&S&?eUeoiHxE-^>9EZ}vBD$eqIMnC_;%r*F>DtarcS?2IOm_!eEGNt^g>YnVT4qw8 z_^Bf-WiqKp-7}Zx-wa^b0JXxr_ z2jy*l+uCIO-k%}a+|CvFECv4T1Ho+s$g3~}`sbiV(T^Caw+^2eWG=e z1Mf=~a?5p}cUlC$S=yL41azpyzt(;;JnBurwc5Y(E`u7S!xCGMD0i>3Ua(JC3YKBU9OyP~%Lm7N{%*>bgcI4T9~~ zJhoN-^Kjt|jmAksV@Y2&@D{LeheiWyX!L+b9nABzf90JHHA;swG@9tz&d{j0HZ6)j z{1S3y4UI2=(hgshaKchJS<%pNqWmXefw(;sbTMUUyh zL+7_}R8demVnXo8{j=USIo7T6i)R3D!V)9**p||8*LvOX*rUJ+mgmpUrIpfzMLlpS!o4NXoxN15w_2P^0L>oF8bA zxfGvKBeK7*G&#Q+YMklD0+ppeeY}B5gJ4P;#Ng=n6*XLYdsQcC4Y`#Yqw5E>sefof zwpUFna>{vY)fnFNu&A$n)AN;}MyYUy#dmOQW-ar><3KbiD6Q>|=Ut=pe|AldoEzx7rpi`~%`*i;= zREMqc4{})Hu_f1S(5`s&;o0>|zF|{LUI~;;1o4 z(I0Y4%3q8I1D2hm=%l%{4XnJQVdc!Fbi1y(RPB!nI{ugGMwHhju#8Mo`4igE3}AiQ z7>tA?wNPBx7r*v8n8FP~$n!L%^~Wu;qmqZI4{a9n);zjS|3? zLydw>-iBPNjRLaGXxn*38rgr+)p~kP=fj^p+IkComID9Xg7|1#(VhDO^zT89q7O&g zhEFvzm+Bj8L^cRs37N`X12xWce}T$UpzcploeVWYsf^tye;B;QhSE$*#iXIM;S#p; zeqiBV+T!uLa_Tb%Zgp@6>qhAQYN%0qoUKU*T|0=X*_s@^Tyy8np=W*{M%5ZRIdEi$ zbBJ)nQaIYSo0*Z6{~`K?IKCNlF*4@EQ=fwk7B`L`(P4$oFbm5-xI+N1h8hpxNCC%E zz;zG71?zD$wx!S4;Ub7ybUjY~;D^ty`GcQxtLbwHl{xfc4xf(B-YB8dyFqoMBVY2} zd{Jl>`JU#~kJAG4F`WQ_4EvEqPr{EKmT}T^meTXfJxmhAb(_i`05$D$0K=&s>jfZ2RfMO}2KB@;$Roy}&_*%BYU%{`KXRF9#29H{hKlWOh)AMh?ivAMq zvn@M%z6wg9eG1eR+J{S6A ze=23Vse{V@7HS&vj~Wav^RKN=z;HL5f%$T%apq?WD3${1>szqX4IL2X9JKm5Zq@|V*wN{syb z;m0O_uJn_o^z)BA^s}FCQ~8%eO(XvhgTW=gM-qm;GzOKe2Q^N9rGR27pn3+NKEE&| z!jQj+UyP8?_YgmP&&fH}w+5`AYMCj&B}!oZaHuZp4aiD9DOUc@y0)_dKl^?f^*7P+ zimZC{X|uW8?e)%#-6nsD^pmCZ^QN771;&Te%D)2^06Ge46lk~tKWebJA*hv%YIdXi%ixVN zkys2bGOhdg7c2?xI6jvgRP%k|w9qtzkq+Pf+6Ddo4OBOL!B=9I^wo52JTJ^DI;=Kd ziD~stTI5RT$S4?iEl0tPA?6YIvV&G7Jg^iV{>i2E&YW%lT&n@l=d)0wh{HQgn;1lH zyxykc9YOSSAMThzRG<;5YzAsPRGS1MOM%!85Fdl9O1=E#X5Ks(QF@hyjKjnz?YlUL z(o^g}Wlp4GNjcqOQ(g639h&qj9^6Vzl~l~hp?;K9yq3p8%_tyo$(s`=PV8JV>ZeVJ zZQmwECFOORlq|0NiOP%X)Onx&m6TQ0q2;O0EkBo3)M>J~P7{7{ar-90o8_;~WYh9F zxFN3mL0%{q7Z=eqK%|e}&@QJu^CEqVgx1c?Ec(6&PvQIVw@Oqd^Kkg^3gvHkh)WBL z=*sISsL`nCZ|$@okHIO#+u9(Q0Zbl^H%D*oB~*_vkE(xSHzsOB;mgh=zHf|gD`6=? znp2DO=vi1+(%>o90OWl>(8aK&(#? ziP@)Mp-1S0D1q6#pe8fBV!dXzuQqU)Jv_hP*K&Vu&)S2f}uf_4(^4-cN%0(gV+~%uh2mbKSG1b-pkPW zVGxCxW7(C;{4~W5)z>JY>WB(Piq4wRD(WA+h9FGCw)Rp5!{$i^@J}w zR9l4ymcqjWe=!d`830FW0LnWc0dW|rUIvjHsslnq&s0Q`=cCC?4np-7)Oe`)Hevh_ z9Z7-s=bsF*7hLISdkmY?_ru{OEmV!^@FxgWVWvG@@lbd=UVC!R{564XT z=}TQ4y=&=hifHDFKzbXNvT1?e3}t@i1xLIvlMUSLgm(4JyY(LK7NWcXYI2mP->##) zSQ|J|o?uR^+yS|YGEJh~4Q@=7Z-y^B%6UQ|OQG0bKzS!5AP%EE+#qtJ ze13>%3C&j46j6P*iSpM_<54aUh%5!-?gWtnGz%7**@sX9vy-4EGkZD!R8m4*s|_4x zTT(oezZyA(dMM21MEh|7eA&!45ZEjQ_QhM6*|*2((Ec>ZE{cW(z|^ z*TJue^#pjt__-BooY}?#k)=SK_Xk5fNFWANT``+0|0H;E#!q8C)ouDfkDmhXC(2V40jG?^guU>jN1)h^HUv6`AP-?w9<-mr_eKUJLwtQ4Ys0zfT!< z2H@%pJ5htD--m-5jhCLGzrRffcvo%UWY{N!J2}HT(n+Xf*h6q*;`zp%GE&Umsi}mI zrG)RV-#C1i8vwV%2xH`NAM{cDl~=TKEw{Lb6*!s1d27XK;Cj3qFf15@7P#4F6)BIOBE9xUat zQtl_^TcmuIlm|=sQYrV7au+FICFOIZe5qBY3~36?Iz#r+Jy2dg)F|INL*BeqXGryg zu*>!#$#c|7a)z8rk&<`}gBz0}55ku{2elFUSql9tf8h){#Q^B70VwYhs8PgWhCFN# zxf${ron8u}b!FT!gJ@Tch<+a&YCJ=V1R_g;*b)#QhAX{>FBp#una{$_5V;Mxz>nGO?IG53!A|8H$ z$G~bQ%fsiii=cXbeak~tX8|;X0nwkr%nf9|o_Wli3x|c7o&xd7E_^i^JkaCDMqFbG zy+YFa=54(o7iKP^X2PelbPO8J6bI5%BiSOjN|{bNU!C4iFmyM4Eb$M$w*C_Ky}MXk zWLfls&QEzO@NPhx1%B{8M=|iajp|g*{24rt8A&^8sw}cF^ANpRkr_D%M;U_-<+c8X z5kapA$c=mQ3zyLgdhwr38-n%SDl%u21%2(YJ-(i@SP_BlOq zD(~?cX4;{j>9fd@+Q6AF_tooeYBpZu|HR6 z0NeH4rM%yurp>gI4I+1@{fWXRh^E7@LG%bbVlzGkYJ8^cArM&##3KnJr^N-dS)zOw zsC_Ei&{!x>V*j7IeV4Q@ss* zL%|{{&Tl{wrt4g;Jt(N1Q{9T5*TgSePA~A->DwKn@Etv!Uc4|I9kXe@r4!91T)!_I zTnxQG)u9PxN&e_n^!*2OG+9Dl?Jd>!6TU@tl4JY~aUC#fo!!w#61<_IFTC~^&R7a( zTdOIo#r!eGh*Et|;CIHq8?o+b{;B8WzrXlrDgLJh{`s)1PbEF$!yn5Vja>e@^{v!* z^Q)YLyrH|!B{MqLD=IH85><})@U5LKbihaKpAO;*GTUi_A_sXy;sScP1-+~fAFP-6 z=9ddhtaR<#{BjsVyj)RSv}I*kW#-rX!mR(kQJJ4vP!iOtyMdleQ^H@6 zCf@9@G+U4smez097?vSI8%v?BXH`5b9gTlCEI(4f62l&ZWu*9LDgJAb|KI~#^x+bn zT31)5^*)66ew>NETY$@o{L}`howA7qhqKJf< z)^N1RG~HG6ricAl?h?9@5ot)Hy;efb?GxnOC$xL8(j`-d-9#Y<`(V;}u;0=xI@tTY z9uD?5vC8paFZ6Dq`s?#4p&lZI6KeL(8@BT-u#qb1tx5iEeA7I?+5k-zcuRwY(k~do zX|FH5g9pVUM#DQ}BMnQNb<%)cpP`gDy9af2An+J1s+;*W zK<90HC8YCVvEK{!9J~Vm&4_)0nhlnN_Jj5UynGtDEKz-%G?vfH`JoQ~<@0jx#&@llmcmTE0D9&)+Obl(xTqp? z0Mx^onT|#Dr!)QGCB@;i&0~cq?oF>|TEk6&zIejO#5Gc8Mv#{tKYyOg zF#Ha)8tosvSeUt(UL@LwQ+=Vm?st4}J7Xk~NDOx_Df_91P4312k=%+*+X2Dl0(S27 zq_xahH=wN!VOtNa<+iRUy5vp1?}3BLO%+KTXHogT#F1`z=*_0(5B7jiyy#TbU-Sn( z<7Eu%6?732Ze{MJ_LH|VeJDIw((GPV{j`aVJ>-ntjVTDvgwF%?&p+ zFPK)`wZ^Nt75*Y>dB;+2rBqs3yxMBT?#hQWT9Ugm8zc{GLO%(V-jyEQNDpb`GP{vT zSE@`aZdcB$xs{+Ry}6a%(#qf8SY6?z@#@M_4w~{8UPak4YGHdW(OzxT!kM%X(kfS* zF9Qw75t9jQQns)(QonAvkt*=AG&^B2xb651`PGrKIlP^!By%_nbI}es?9aXHFTHDI z_b$TWW2P0C!$vi?5^y+#TNxs)%>CNpkh;=c@1)+CpVpNH)clSzTk(*mcE+%jraIb9 zafiC=z0@bBEw@9L)Z7+2r1+wo+hQqgefw2Px2oo)b?YwzvBPfhWjr^cq>}R+s-q%P|4eX{O-FnEh z<#wyI=C*=v&6RGkl(uGlZc!M?ssWcFJ)*HrObhRHR9z5Ey-P|)EeNOH!dlhW(D}Ks zvzhDkQW|r2Q9pOcT&47erS#_ORaS2z%w2BUa+zyhb6Wv(OQbE9($)ZKi;quD*COm4 z*Arv1$X;5^Fu{JpjEfF)(rCD!K<|)-r2>tmK>KWE8V#42wp!%At3rL@(D z+DfOPSq~%;kE8#r` zOzhnqOw6VF|AC1ko=;=qX~MljCUR)0;^~#8pquw;8WZhITP_pKQ4MVcOyo&hETyfE z)K)qZ`Imr+$Nn1=2RxU?#0!MG26P064mt}29ZNy??D8}wTAH?8CeEq3t$+z$G?;ak z($=ZeRyq@zi@^kcOB0r!jGWY0G8eqMF+Zm}nzyv6Qxs zqPEhR*xVIN>__$gLr&yAlg7j%!o5Q#iUb`?L3ih}G$!^kZMjVJthud#i4tjxrL=W0 zwUy4qkELLu3Dy4(O#C@3jfwXN_YRrpBOLrVxrOy|!LM|j9GndVr*=gps8&mz3@0?^CKYtO~AZRMyV!@Fy$xh$+nJ!2sE?)D>p z+%)n3IL!FY&~QX9IM=EOPPx>K{^XkvKl#k8l6kSt%wDDPe>*dKZ3vr|&tY$Lbk-Y= zihC2VAvd?nnODLSSoz|T@)hMv=qbmwf1OdjpzPb+UmxRZ+2@bo4;~6LpF=jh_WwzyRqWiJl`o zlHN>s5Ht=jBG356Lz$WF3jJQspD-N-zVOz(qNGK|hJ_XT&TBpHyKu|uxmTZPZvSiZ&`Zq3OW04UHX~q+i>)r@0|=S{l4-`Pt?^ z;7;~Mqi2xX)ED(%kiq&?l_ueb85$D_|6`usqf+)?s^o{ZDR z+fR@8foU?Kl5`^_=WwL5UxJYB;dmqMKl4s1SoO|D3Y_Vi$Y?nkSYM_^=*ZV5px?? zl<;{{G)kO|Skjn2)WZQ^LN7yc&~J-*w^Nr|?b-p9j(i-=9d3 zonflLyX(Z*>cq}}Es$5Lzz?-A8s&Ex)g-@YGPOMw0b51z-KznDY+58C`)!kzkXubl z<7aOJwOG~!L!=~RFNMffAs$K)i{9d{p%>0d$PN}ol(3hm280#MDluLdMKWvU3W=>k zdiIqNYn+j?EEc`)iqmE(KCVzvY+f;9A!RAAQ}l*fDeYLXPT@`b)1z8x}t1@2EaXhyRDA10(P*Adm@tcHS->m)w^YsR!>j9L;19_6^wR`Km%` zVXL%Ed6^;=ec`M~oo`V@BehF5isVQQP)KYQQjQ=I-JqGTSm<5*+}ZciS8ps#8>skl zLRT!uFOfI>`NK5$xiSe@BVwimL)7B03|E}M!QwBb9!-1RS@fSC)3JFMj_T)BQCGd1 z{&LqMj;rb$wZ8HH8de@6J*;=r)RNB#tEbwq$`Ikyx7(0G${}0jaN#@-YvhHq!aC8S zh=%pNY!u019ioufDx^ILQZ%f0-os%vF#kV&&Ma&IkHD zkNEV_!P5MOyZN&?gXt=_G~ahiZc{pW8TF;D!n=}7rJYxy4L*g0cG{ovj6bi#pAko% zd8gC3=HjgNwe=kK|6g8wO@4{@*WVKUBL33FSC9YW#h35BHkq>*SLEN!rM0&xm&--D zcrMDNv_GwqG6bKQ39ie#=x15}@pXBf_vjAg4OY+v5dHGb!{pMK?2aRs|Iz({ddjql zT5mR$P{lK*qRx9ca2Evb%)q@fa32rcM~qwaI*+A~EEn@V*d+YY(q<@kencm@z|Q?% z$$dUcyui+VB9)03*txkpTn&1b$=0mHCHOBtFm$vk0PvG$8OOZ z!^W_3As@J`oXQ2Y-tp4*1V&%XpMy!nf2(YuOfI+$;V7t=)FrdhQ7V&J`I}!mjg`-& zGLx0do?}+{E<_Q3m6aQ)tFm$zk0Pv$XSe9pvN5b&$p@ENN;~SRtaRg1gq1DWEqa@> zF|0J<1DBOwM^Ztp_dT1UcRozMl1&0D!%&{g%3)HM%*w7(naoOCsZ3_&*Yg?5XPK<@ zpT(^3R?}P^;CJorrmo7$<2;J6azDF8Z!#Oh%6L9-SsB9xwcaRcyZ&VEl5cSenFLmT z;%fJY+#ChHFLlYR%$CYzRwhYhGAm=GGLx0EXPK21V1@r`u5_oa{Es-;n@15=daz5s z|HsC#vIQTwtTg9>TCb6`?F*A1$R>f6-Y8Gbl`c}3%u0z=CbRP8N&IRltL;Lm%w%P& zXP6b&nkhF)N{+ zI`3B=psvcwvpkBh@(8>1UIQD$%0xbJS-GAIYQ0Knd+)j2g??9yOad!+qCAjGMSa_r7|;DK6#Q^SxXEQ@mF(Y@i~^2&&X9)-eK>j%*ta@nas*fQklt0-4o2pFJOiLDl7X? zSN=yF^yg6|SIXI?^_PudWoJHcS?S0HwO%`EI};}V8k+=G6o29_?q>8!VdWC3OlD<} zR3@{suT*BT^27{gg|F3%_^YgZezs-hS8|n=HS89>Rcs6^@AHAn%Bx&Z>%Ay#`@rM} zut{L07s``!rIXYpD`>+o9`LhdR#r-7GApl2WhN_kJA( zsP)=P+oNIfL)j#- zau~{!S?MWt$+@zrR3@{s?ihZxl>N$wQkluh`HwOyjll~4RaUN{uFA?SJc_VV!*0JmtE{{^(6aIgxys5Cc8lH{Yz!+e@`20Bqg+tyJs@qr;`1Q=zBf*X@oVN4a+*wB zZC{bPWL6%O%4AkmaDJCu>BIxl?|ZW`tTf{T zmzCe-%)D04%=wNZCz3I&{KN+?E1z*et@ja|qIUvJ{v0+5tPDhXGAq5LE}4~% zQkl%k-zV^^rK~HTNo6K0n?J;?v;!;rS6R7%x+*Jo@hHN|cy{Uj3LC@9m3-i`GJ*@} z{))8y;&|?oU&khal}}Ng%*uSJOJ-%7R3@`hBbCXyGD0ddS!p<(S!oYe_^-0kj=Cx< z-FOsXWeaxc{t6qzN)tYCS^0G^70~?^HgtalCSS=Wft6t>PiEyXsY_;MSE)>9rL9yZ zv-0a8hLU|9^vwgz3V&?2h`-9p-PBcCd7MWPR_Ramz6PGK=)Uq?Rwd- zwBVxzR({IZue>jH$*jzl%4Ak1No6uCW27=OSKgb(taJe@{8w4&PFaC9^U@DwA0`Tq=`U`Il5?vU1iGW@Qhs!he;OkB+dc zd_%6XvVz^B_aPg@%A0)PvNDGY==Ue2Z5d4dU^WS?^gwwsD{ZANnU!A;=K)jhBrKE4 zWLD-#WhN^}-ovc)0xSGiSs6-QRY8~VD59X@?9y|t*%(%ijbzl@)y8vhp?;)Orh~Z9ka&@oW-UIRNF!tZXNB$*eS&%4Al)?a!~4vg3bSDl=K> zHknx|2P^znSs6uLHCJkR6v>sV*)4jPu`#R+=L46O!CX-59VKnwJ(RoTKWCG`%9|)p zW@U!dC9`siR3@`>sZ=KC%3!I?WTo{aX5~Pz!he;OM$}bV*_1~SR+_O}^cu1;to+iC z4qR4NaY3#3F&p}v2TcAvHVLd8i}GYv_K~_|Rys>%GAj+FGMSZC6$~YN$G`qgW~BnG z@Ly%+M(V1pOy*I9m7CcudPO#dm8UGnv85?EP*@?=(Ck-B77 z9+b*tR&J2WWLD0V%FJ9@bqBL@7+B%I%F1TcRax1dM-f&!u}k+?*ceut@qx?AZwFIB zt+$p9?SpYanV0L|_>TW!u1KVdYD9i{Ag(7*>|>fy>G~E~xdMleQgkk(l2(TqNfIW|NRB zU!puYS6-L8WL6%P%4Al?OJy=E7fEF%EB$U}R)&EU{;RBXqOQuyEM7*xE#tiOSw8+%hf6C%2KIIX60F_OlIXysZ3_&Dyht5W%rwy zm2|<${)-oVO{Bg@?=)pN?kH5zh+$r zEz7zNnj@8&to-ORE2F>)|5a9oQdec=5*|fZ8O|=*ceuDedn_BHrLYq6>0mB{SR{G@f(GwE~xchleX6%L`TK^L^cVmRH8hYm7!9X%*r8Bnas+LQkl$3 zPAW55sj6XCZUig*S6O-HK+8%Uxys7(>=wP5Yz!;Y`M_o6b}p#(#!K5aF!`=*5?E=0 z@?=)N@5_BsJ{R|nR3@|Xv{WXua=TP!vU2YA%*uGM!he;Oa_XwNawLx;xpFYOMXwJV z!^&=a;Igtc7u0%Nu&Fy}5JsV2bEqJPj)&;+09fDa*ppk+gNf+z&lOb*8j?SVnwjc7 zhVgg*4jM^c1AO8vxTEOtE0x@t{%NO1(g{zzMR8sA6t?t_8c!6Dze)HEM#F<%=x8+t z)Mvclfu`ueK)Q{gFB4-_9Buf)IjUM9ucuE_I)3Xf`5{JgFc`ivIg2QzCyGxYHt9j% zvleenPv;&;lBCBMvF|><=uJBQhmS9+;jXnaD`6&&;*MV1#``zuN}%<*ICo7Cj4 zqXmfn(VYLsYZ3o|b6tamR8sV=E8!>PjNvEbl+*L4`QJCC^tlu&<}Xpx`vd$`YTtW6 zI`*VT|g{RTgPA$W$*ku<&;-p@Z2 z?Jkd58DSo?(rUY_PU&CK$mbv=*PEjy^u6fp6{!>j8N5WkpK$Kbk7#xBnX!~n1>A%4p=cF@saF4s5gi3s zt=4Ox*lM6&yc&U0Fe9U2==VWUl(O!Gw0e<6Y7-rKoQzoJdVWcu)oss+5wAMgk0u&CrAX&khH>1V zpKGQ_*(%Zjg0#7LO+Wv4AB5l0YSr(JuCij?%7U<*Du`F9CI(^#M#C@8O@kX3YpJ4Q ztEis4GROfDYt4?XSdYh0bE9HK&Xjn)xz^8>p;1VzT~U-GR!`c8#Yztm3X4_p8dCiF zY!U0QK&&GJv9cQy>$Lrt*r-^?q0~{EpSu!8DG5GKPplZ;&ku-pkBD{cX|bHq^yoU& zgo_^W!B|zSe-{{Ll33eopxA1l+FXG^DVUehH8htQC`y@2NUX0}q&Be>>9waPBOMq; z>KFD$QHEH%=p5MU9R58TVr_!1My&O{p#nO2<-UWPBG$#IlwSNWe|uuR?9>?Xs*`y% z(Lg7(kW;dj)nFV~tlbqUTSa=`kpm*uZ?<#A`Y48qi52Zjym4IX=W5U>B-Tq%lp@wa(mpKK zR#CA^UIUsD>!?7im4R5<4T-gWAD(|ytSeC(O7OQ)l#<{^tQg+U-xuv35o_O5VmYG{ zm^Q@Z4E@xRBi17^Vv<;UX`t9@poU(CKq;8bqG0@7N!DCKV(nm&+Qd?%O;eCQxHl8( zAoUBkq9{YG+2`Qh*zB)ND~dj zDp#Oo%X`UOf@_WnMaou@uDb+CA4gk4>gVr=8y0KhK&-D?5SCK~@y5vsAdWR4{6c@Y zaj_0iRBRR15JpAMyy6@Zu^zsSE7k@AH+p78`x0;EUJ&bYHsNjX0u-f)^}o_SELM8* zTlmZ>c@1brtThCa|Is#hJh`BQe&mS3)^A+fIn(j7p$81yXXRI1_{Ene~2*=t#hBg9mA#*lM7jy$FF)FlR@>___+}Qnre;pCD~yUenM2wgl0hKVm%r|#m=nAnG&yzYyDggGzy(r zJEAB>tbgy$6Q36rD?jQtbj>Px4JjJ2PGrKF^SbIOTN4T<$`j2{(i4N4ug`MFC3 zNVZrpJU!ny+C3uHuaAr6j7s3YgH6uR?{6|z73*)iMI>OwI!Xh@Rs+>yBm$*io=4Zv zTpmKvKN0Io7O71vMVd=N`tK-GzpxLAGQ?V`b6~4;IQV>sb;G}S-bSoH;%GjfS-*sv zBG!dYud4bcfmlZ#8zWwIa_AsKJl|hx!inRTjm0>wSZfq1TSYqQJRm*Byr!Q&6mIy; z+9VL`2n)h;svzDWwu2QzLHx;YPw-7Hzwjg6xLC(4Dz=KM38N|^_4Ul!u9GX)2QXAj ztjL)XuZC;=+*mXUiS;}brHJ)NX&)AA`>0qYuK~@7b$TGy8G%^Y4T<%~T_qdBH-nd> zG?d^AP?VD3W*dy*{rse8_lQ_~4~*rEN}vY?(wtc_n2PmKjF@z0ov49gtARS{90W?i zw2p%DbAR^WNvF&ubY^X9k=n#kq~niCMmhy!J4pS4kD?5*PSH8A)j8ZT0une1U5!`| z#1X{0H{2Alc5-@E)i({q`tngR;#DV$Xrh5mnu=JL?xH%eOXGA!%2tv7FdRsyqb;_< zli`NN+B6XBix!0CR6z_(0&#=^;TH~s8yD*gMa5Q84Q5pIgNB^%a%R1(y(`xBJ0tI- z+hDXW@s@L~pIeGXA+gRwQHogam-bLSZ4)dog0Xi-H=!h#Q4!OYY&u$ z#M)7SWS?0vyr2JJCuYLw9ue!f0kND>2|Pi8G-AbID%Qyu(UE{npII6xwi>7z!w@J1 zb6OOPpF09Y|3s{3SfnOn7KG(gL3}`L2P=kxn2OPGX1yJ5T&#-~6r=Zf_(fg2So za;C)V!L@#Fdo&7(wH=C5#QIxz<{+{S?h+NNd^FXX;_m2^;I(hfsW;!g^=A1Zw*=UU8igmRjWvfUhoDQUi zo7eR7ec^`1+B^{JPz%CxsvwR}0`Y4%2|aCt*T9X7b*-XetEe`d7UY14wa~^D>pd7M zwhczklz3yg*3XSbqmWq7LQ#rX50&=eGwZfdu}WS;ibkx<0g3o%4e=~iOx7=3)Kzt2m&Rs_l&vCNeF~7? zi?-MX-v&1<))s+SpS2(?rwZZ|VmmmqDu@aL!Y>ry#>HBysMsp1qZk$aumTN z73)u1Bk!YURC zKYC`}9;G3%wi6)PXI2bPpMUDYOgP;mVy!tSmNP1WeJV`2iZd~oiuE>(=t#h(PkRj% zTMg7hCm~P@=7cC1KUaaGe}q~C5O3GQrzKSWW6Si9&P*yHBul*Qxz^8hL8FjZb0|s?>)OuDL1Y`eb5yL7E!Av{SnJ8>f3yv5K=;)^ z2R((8+>ltuWBjOCN2AnHo1Z&NfMkmm!~6MtqunE7UA})TXH)_&P#}#2Fqn$<>rN2~ zSh4ofK(W<8{W%zcQZSF9YiKTaq3EB8^$CmACYB=IDg|kuC{n+$Gm0|ATCQ_ot8?hZ zbMU<%JE{b*4PJ#Kh;Ehe zWvfX4GYCizF|X<8d&3QjwN)V2lPn0!se)K_Kmv&Gw~)}&Hh2}>xL5}$Dz=KM{QD)=ivVRrR?*tTTJZh*zEbuaB7yiMtTWo{J!3~Qw7l?I+1z|Z=5N9TV*x!Kg3wy$ii*=-;Vyme7 zGpZs|U$?;v8@XcrW;5h{^vsH!De)F@t)F`hjY4953PmYmy-nJO#kxmStdiG&X2jY) z5Nnq}tn7xwx+lhuo>{w~G$huX0LebHVt7CQS)Q42x<|x1cAr?zs03avn4Brj#9%7c zaTw8&fK8uK8Ys3JsHsOGPzq*X6pWwSA4UH}tjAfTHn9|Gw-lsbw37sPw!uqKlp)qi zoda8)!>30=0=J{95o;}uAl9qlrik@ar&m?|CV^O+?Hwatb#fXhNY)+}E8$?VcEC99 znYBidvQ?ye2-5F1MfR7|Hh3l6uvj+<#9CrOSWXqh*ZU@bxD}&e8(a%FF4pmiimjr$ zdq9u_a%SCm0|B%j7KEiQ3)JO;xOkc45ngT z*@kII66-__6k83{uZJU03g$s{4bA0N6#WyiK5UWN#8RZwDdm!o_KG6)3*AtZA=W86 z2evwgfAJiAZ%rxB+lcjJ96_w_z)cbB(@w9d`qqJ1PbiBKuR8gnmzfTWwY7-#9E{_N zb-E&Dt4Oc^H;|T_*YxvcaKmD49f=}sv~ix}HM>K8_#C_}7s zbq;KG4%Z$E2^7%Ph;>&SL9E-tO%ZETr&m>dX&~0e{$-|vTS%nKE~=AZq@du;if@(r zWiPd2>RhodP^4@X=|}y5^cJ+mHn;|ESgfUiSRb+=ET;|;RqgktG=!TdW4#?S48qJJXR0T!uEEJgYl$v6q=r_Fip z4pP7H28uGoxuN>HR*~)^NWW}`>@TNn@N&3ev9<}s`sXeNgymF0T$lvH$7t9FUjsKT z*0qX?t)ja9pdbfCtjGL90IgW}61Y*ZB4LHR(3;Ty$0h)#d;1(9kuzn!2%>(tQg+U?-K1E5$mFzOt|awOlfO)N$FuN0*JiX!z3 zTcRjKtPN<}iSM(L)j90QbMU=Y9?#o|^*tOxtgpjO5$mH)ud4dCfmjFb7$aVFavsSz z5Nlfz>lqlw6>Bp^%2tt99ss0!o7eR7J>Z7L+BOjD5f+5yR6+boGLC^*(O5!H+u--$ z#>HBysMsp1HTwrSAYz@hmd3GSy#YhTw!z4m67L+Y^>b&SQAn&up(sVHWzs%;X03>d zRr0!;jS=gxK&&GJv9cQy>w6`V4dHF@ODGK`_#-GvNpQ0b#_)c=GTJ>N)-K&+IinId zYG)HJ`aUaTRk8NKh)H5?uYqE#f!eHiT4uM`ng$X6cXz+ z6s3r@M%stPdRSDfk}ZH{#5#&#@;`d(rjlIHLErCV@a|XSx?}w4nYArSLkYfNLxFmx zB)AbPhWGRDqOH?CBG!wxjpd9=;60MDkpKo$v5v)vjs)zPwU-8ptp@7W-UyU}IXDW& z&+VQymylTdS)?|x6zN_mNI&?Sd2*2Yg;!9NA=Yx816!TL;(Z~3T68sHy#hxN>qxjM zVm;dFRaM_E5bN(cnU)UT)8Dbrxb6~4;*oNoedmsO<62ONd-og>Y z`ZC-Uu|DARs;bWiV*U44G2&Gxzinft!*_%8BG!{Jjw{w-ij=J)y?ieq-OaqFpWhyC zSgiR#tQ8i7%$M6$#? zgKPcV$!HW3Ykw4_h_#2b51&~FM#U=GQq9JQbt3uvkIt-9$ORomxFNB=RWI2P-UiP? zX(+*`p(rK6&6$;7iS9659_=0xYlqIUoKXoZ-`eC1eV>&FQ?YK35uNju73(Ms6k83{ zK4l1$g8BA0o?&P%AEGE_E+Mi0(8(aRiKR#jDM+uv*bY*^FdRi0Vy)CUu+=$Sx(6h% zE4rF9>()4eST}>4BG&cmB&hrpu&Vma0e029KsyDLAQZ#);#XJ%MptvDPS3 zwuuFBWkFa@Rjdt@KF~bQL$B2dorq`tK&&$Yv9cQy z>(&@QdS-2j(olle|H89NNpK@p4DaXPL|dnOM6Bm@h~|4<`NR?0T!uEEJZq(794YCb&)RqnR#-M`h^!zlp)qB zItR8ohlM>Mfoss!i1lI|L9A!PO%dy1POqx^%>%Liym^dx)yZG9Dg|QQT*TTKSoGH%4U@F!{Ya{by&qHp*ap|(2x5I6Zi-m%ae7tNw-3a6aJv}ss*_4ul>)KiIh*wSSB&F|b%7#f zt4J^08Ax|Buj%KzzzvJFeIVBTEeOl0f@qoqV#)UsdfEop!HtV`v7%zDs6O5)$N>>+ zi{-9Zuf$NXZ7_1C#5ClW*rh0tK@Yx8za^Qfmjy@Vr4fZ z*1GQ`8^YV*Cr}zn@VilzlHlgdisAkIh0*R2v9@g+%NdoxP+E1(`3i%nSi4|E=X_3`QlriVQ4N(P?R#4kXTo@F-UD!YX>>AK8$f( zv94C6Y!&IN-GTIK^O}DCBDi6(b_m3Js|8^>Rk7YcOJlHND2Q$bgkRVKZd|Nu6%|`W zwJW2d?{9Oyi&)S7z!mG;Yd}%-%!>9U-V+v0j7`9SK;m)@z{HYM`#$4uMiIy`o_JT(_*bgv7e9MQRgEk@ibLx^Ok~e1-dXUqrs(y<=tlzeZ5wAMAj@HjW zCtHYE|N2Vi5*_$PYXh;e8xrfe7(Xi3<523T&CeYuK(e>N7~apfk9LoUbyka5&Zq>2)2eIE ztQbti`q~!}30SeV*Fdq=Kz-O1fl@FKyVs2j6?^bDp;m>s%Z`tTW-Jh;^dVtE#?ZAl5$3W5laYn%n8{nYE*c zbpXb3&#c`QDO*K4VrwAX*1V>l?*KO}){cQ#_pu->rwU>`Esep7p&;H^C84Kn@LafY zvG!C{Y!%geU4k4CvF^Uu73(D!Dz*(q&Xjn^ajl;lfJUJ+YXLlu3u9R#DZ-XC3X(+*OM^Q?Gn=>nh_wys7-6LXc*)*0j zDuM54)iq+pU@F!Q7|}UjS+VxgK(W<8?YtENrC>h&jAs~{%Nr<4nM+8lpEWT^ZDJ|X zBT|r_kFg!3e&IwEWr($0=fGCyFl&U2BC9fexBi3g8ggWM&zRwznmEDk7H^unTGwWZU#u9uDic%8Xh!w;8`4^+zBVs+d zB$hKOfswT88nI$973(<|(UE`^>mUsjTMg8hjtG>3`BxN-pW8BPE+Mh*VUgOzQlv|o zB_o~x2~+1F^$U-qC_}76bPjBF4s*7E1TIEbBi1u<1hJj~H$|-bIlZdtI|pL@qG619 z)k$kR9Tsb6P8`2%-N!PQU>iJ4k+M~!Z3OA-Xp3#|OK`(t?Hq`8g#}?bRS>t)A|9Ms z6~qMwgkLxlZd|M*6%|`Wbw!6D2Slvv7r0{WC~%`ex_B|h!umWSYP@mA^|JbQ5q<=8mJ|kBTx$FT67J~bH0mMUz+ENb>31?6g{(|eTjD;*ZR3hXcQ7_ zEs9dadXBUYi}lK=SS4Ek&4{&EAlC9gtn7+dYvfntT4DU?nRVT}u>@a*qLc(TV#V-& z{@G~vh**!SkL8R?U_Gt6Mgka2#d-!tbR=NKI!gn^Rs%Jv6oFDOJ4V6yxy`fY5)$h! z7O71vMS4OC(m6|*ItQs=n2w?hvCh>wu+=#{-5L@&7hR25Pr(tyIuLG(Sod;zRn>P1 z#QN#F81br;iGLa5StngYtUtUXa|yP=3lu3^McP7;zKpim2G4>U7HgM4tRGqsmQw|> zRT7Bd283TY1#Vodixm}HMRoBeK@NymyT0g(wVl9?iWNCi;;mZ@vHrj&ybb;sMJZx^ zN!q(&^(u+Vs9YtptJ!>gmi&%fMIhG!fn3=Q$@L_>LR7AYpfq$o+C!jZZ-g-nO)8MAawZ`dHRljv0 z*Ij>(5wA+=V5h@!-CE>Yj&a;`>uN>HR*|025=h&b*Yxwv;fCe9bs*OrEeOl0f|#=2 zaO!}Vvq(Zu8{rvn<8ocAsMsp1S6c)*AabpG&XwyK7%H|AM$VLYhj1etvMY zdql45*T%9&MexUOCSb*x7)<5b6eBw4EGyS~4Ha7r)fUYWDh2cA8$83%TxO#vWiBDP zzHO1()Ka7;r64^CV>?Lw!l5Y2kZS|_!Z+S)C988dwi!gw8eNTC8{!CZUH3ZADn+gz zqEdQQ)prf#TKPkacvZ@sbjp*}hn3P*lGG+`b}cacaiJo&$x1ZW+C!EdUi$o5^o~c z`nj9XC?wabQIsOrQ>A@Kt~CjAmCOb>$aPjV^IgpE{Q|x0yp?-Z%v;lkEd5`zS4FoC zf76dHx13M)9i*OqfPGDGs;B>J+E>h`A7J0mn*LX8Gmo3qdOtl+!_;{nkiky^)_I?k z3y$l&h2-)-Iu|_2?f9lh9V(07;A_hpRL>ogqZ`x1bouzEwCEi`#TBQ|t*AvQb-Y|U z(yxzA;C2jDBkeT;@Pal zbi5sSNPd7{InAmQ9~2K7KyT)+pTlmh1((Er*Pcg-{jUB0xW~Md-?g7FmC3(rKTRq# ze%HQ>%&1t+4yE7f2O9Hit|S~LuyZj;dSItW{l)@&IXA2GP9~#)9YL-Jb^y5=*uA-( z8`#QgY+y$^fjygwC9qsdF>D|mIj|@}V83||qd9>cVgk#JOklg)z_O=-olwG5R7L|k zgNHPMy^jxy2MwXXR>IBQ#3mM49wipoGto39u>GVmIj}oRWkz6on!vKdfnC&yXLGF+ z*rrTahGM_Mi>%yOVCQnPI&T^o4eXQTYG7|CR|5-v+`v9qX#+dT3G8?(mcVi;1@;hr zfvUM2Sd<{JyGfxF*pVi%+{gsBmklg?8rbI>G8MQ)cNP2FYb&7NYfSjnAC49u-9|5 zI`14Z8raLp)xe%it_JoHZs!K}t*dQdE1keTOT`jcE~UV3A{{xfC_!M?Ka0_Vz*bk% z>zLSbI}_Uq8(a1?wktO5LTrpDHbSfM93Iug_Ax%7Z*tSP6y6#fY1+oV=U_HnpO3bwFy2XpMN}-Qz@;?6P#w|^P@I4oq{Jao8Ki_) zrX{v{T?6@ULiH2^WRitPn1k|Kf0#`c_B2_R{=wW%i6+YrQ)$K~Syu8v5#!QY@H~!k zi`c}Hg$Ify%TzQ?NtSA^f{=shvYrp!bqW$vV6 zNf|DsVgF@^wL=sqpbkmX7S$642{8NK-%}VJm)R~hab|ESCRFr!6q7ikY~rw|iF4O_ zPMqn{#Mz8r(^*pIZ2uIP|`Lc5IXOLf4{WSeWXmDITxAlK^qHpa{1dh<1xFr+cMw0z` z=$6EGXqa+KV%&Z-IE~gYVYI6HhF1@p)v`e;U4!MP{4aKWk9hfIOTKik?{S8r@Bd;0 z=-jKYcU5X=!hA=9Elqs?+7DO1^4l(q;VRiQmfIQm`Qa#<-*Yw=l9G2S=yp#@X~l-u zE2@{Y9(N5zcUB9*S84ItOMk_;UlP7HQG9;kZ{FNx-TEA_$k{6L7J~d`bT#)FGq|W2h|1uPp+35GiZc7$sx)Q~Gl=}c{&3^W&QOSK72>f3k<`|jH@j7H zdpT!BRK#qgZn2QgX;jcd66D*LctAzUgU~x>-s-TP6R)pFsZ2=;PcQ_w!>=l(f`U z{obgx@2+*XT7WiJ6w8yJB>?Oe1?U&BPtIEF<|=fy3Vlm~{sHfzts)oV2>JaY+;D!! z6*5Zt@6L-JMe!W`h=Fd@hD1O?n=VT-82i(ri%h>nFMgpC_ulk z4T>_}CR?k}*(&s11^Vj8kpl=RJ^va<5aru&Hzvx5Ooxalk6aofT^El z5a0U-N%5H8wqUW)^#zW=>;$+QWA=R0A;Ro$OVXHam^zPbFqX?~Glk7oVQ)#W1I_#S z@A;~n-u)#xuYwy!95DNZMHFTB3ObP|$NDCWNQmh7Vd2J^EmeqY72*|Z!0aB6B4^#@ zZfg`dtA}0gnsN=6yT4?w9a-*5(wDn8r9;MY_c~vO`?;6dr0wpm(^109-ALWJ+bcgm zcM^&=vfTAb7>%9>8Z37oERN-et|sf3xyzm0wJ2Mydu;pTM|OADUioLM{Qt2U{6CF8 zq2=yg6eTZrjl;{`GZvst7X>&p3E&}7fPP^Q6lE-TT@*T7g*6wr_5#TgI1gjFqU^4)*(&VXufn3- z+W_!$JrWQHq8wlmS(X*iW~qoieu&c;qI?H#T$DW(B3p&{<(Ei`Q|{)@hS?)=1ZEG0 z8(uu(%yuyyBFr{>D~;LX-%n$9>13UU&E;MSo2|m$m0-Ke-96|8#J9o?BMz8dx5yxh zGP{gUT_%xXLj2AK|#JZSKyVLkd$^b6_4 zp3HhHjO8k3&yq{aQsh-RC(0uPi zG&Z3*+;sJGec^^D8V^lp(;*U?GhR1DL_^awm56ulV3ys`4AObCHTl2NowuK#giZ*} zO>o1AgU}pp5k*5&OM8{%Wa(oN(fI{#JTyZTB3p&{^=G><+uoyf%yy~IOp~1;cJS*G zfzsSfs2@!Ch2?(cT-+`y@fJ=*80WL$q;ta9rok*;u}jdS7JsF8aRT2u-*o!J{VdcJ=RKDFs94@(;Zo|DlaBljElTjtNwBl7wo!#&J(sYXH)Oc+9Q-mdy^}|wmCsnQr*Fu# zSi$dI%%WEdy{mr)k8IwM8N>%gj7u-N8;){)*~H$A;eldr#mF9xiiScE`i=zVg~6ty7jnfZsvQZV2|qr z2A4JcQ0knB{M?=>O54UBN#pYyS3JC*ZxQV-OUnrJ4nd38VoQte6_?V!079;yCv5Uy z`u@Nyerqc6@_iIdp0Cu{s(N?&luob~%vIx*4Nfn9J8Xy{ z{-#&VbfRl|6>Wcnc>cI6vc)eu0OPpJd5t1vt4Lq?7)UoWuj%Jo!gW9HTD@e<1?J5d z-(s+o>dS4KgyBW(AaQPe3T}J>AFrU;DyZ%ZN>e}-v^tku&_Rn1=RdT1ooMwb>@lNSos7~@e&2wil>9ayO~>$l{^V%)h*nRYA4?fk zz$n@&8LeV4)oLq@m~^Xcq6Uhs25QVl2$X_(2V2n4Twau2Y4W#XLR#I!BDIO7NLSLv zAqnYe7~4VW7mh$thE}KO9N6j{=6nbRv_n^;)h0NCR{u!cBDWB&eu_%z#qZ}>t$r~# zM!f1|dpjN0s?PDY*sgfGB4w*c+X&L(<~9BNDR5n_()%{SN7GkW5SCK~@eFN5g9SrD zv@sz3LKC=gvCdFbY!%fN%Yqybv7TMyigk``aLu_MH?&Et$e9vvGS~XK+hnurJ_f7` zMJZxEQ`(2c+AJzo$!oln`IhE_K&*=cv9cQyYZHtg73*5v>pJ&`KG8j|e0Zefjqt4s zJ+WeVKmSCudqk{Hyco+FjZDV{CS1jt7)-@_3PyA!U@xv`X`t9@pq9LkKq;7QqhS18 zo2@u`X6rY?Z&amIgT>Vtw;kSFD=|+^AR) z$r5kvZ4m3%Y{K8td>=(AVx2AR!(wd}6{}=RH5((=Wr0{%1Y%`3B-X(gKPuL~C=H#B zdJ2%_vynNoVt7B_INCiT*2Z&UIinJIk+w)i0vJri`s4&joA_PbWf~~98mMmXB2WtE zGIR~iWhjbLb_pS|e)OC{Y7c&k*Yhoda8)!>LOkf#=ZGi1iU1 z;mmq3+!V21>-6G#=~k@8*=9P?UGTXt8{+xQs`t`+V;pxEyjqd6Riw|p1Ei(qHT}E? zH!Rl1fmpAzAS|aU)<0<<6Ra2t;@Mjy^z_ckBXHwlU8|_rDypp+Rk0d5AY$EhtSi=2 zF;r|DjP@m7U#|6Yz0oMN4c-AoDPnCU?ZaX%jfz$B8qkbbR|jHU8;F(NkXRqNnW>11 z^){4-61)mUDG6@GisAkIanbG(u^#tqEN4^#r_M9sD$c}UDpn68I_E2UX06vivDHA0 zdK-aKFt6XlGYrk;SrnzrB_!5eEK-|Tiu4WI%$a4yMS23pc98mo3KV6CwE_KbAl@J) zt8;kzEl41Tu12gI#>-SFkA8uhBGwO3DZQ%dy+Ev=&WsVSIw`f&VX=C0W*vudT(LG& zq-+&w3qg9ic}+h*2yR%cULe*FEeOl0g1F};!>I$Jg#qCgHjLx>$HiKzsMsp1ix&ks zAY#4wDp#yeW2l%|5y=woHm>z^J z%5F%k8~(%dkBaqcl!g-geH5i6xDhLc_wx@&yGO+O@KdpzQ3*7rZKsg{22-&P!ibIp ztXSJ?pxA1l-gpCnQZSvPVEkN*tht25T4|Bm#8RZ^(Pl0Q>0>?<>L8`hr=loBtX*^t zY;_Jzc@Dle1YM0-kHQhotcSo&5$ldlud4bcfmr|bWQ=&#$y3jp>99`ZD2)A|25kwcpZ_o1uvnV}V%^z-u$(H01Cl_TWI*_Zqu|EH+EY=nRaA8g zgB%dC{(8A9)}{hCx(!Colz3kkA=Z^_!rS1tQIsOqC#8K@tnH&>mAtNIW5n8weEvr_ zm`Ve&vKtcXQ5Zie*4`)$iFF47lD!Sa@P7WU8+ejV_lQ{kdOVghDuD-S+i4_#!BnjO z#fXjstXO+#pxA1lwp@TfDVUK_F!cEh6s0UYA+f$|k=n#kq-|1=HjEv&qoGOSfW+i}_fzfa`cpBWe zSO+L7wu)*CMpZ=W>)S_zE_KCvJcf#$S&=g(UT?1Tb7g20IIyZ zuK~@7wS6GgE`eCt4T*Ky^-OG3tm9DXsLjt^iK3JQH)mE1@8<_ZyGO)2;E`C)s00qB zZKn|{22-*AeI3J066+uh6k83{1+O4b3g%^W4b5c+ic;nh66)lR6u91+;?zO#JU)j(yOYzSs>OA9*z;OI$2M9 z(?G18J0#W`jN^)Rm?CAXNJ|9iiRLx^{E=|OXVzwcSeIB3mQw{$lLVr~fba|T*Yf=1 zVjZcd*ea@X=Lb0;XVy6vx?+74L&e03oGJ0fajl=LL8FjZFF{d?SO-b_uvoi9#VUDS z&BlneI}^^F*H!l<7j)1A2gwbIwZ4ky9~J9Ll!g-gZ4{*>xDhLc_w)BfyGO)&-}G3{ zs06;FZKn|{22-&fi4l{;I!Xh@Rs;3QTm(wNY!(IM=Ss5X5)$j>7O71vMS5Hc(g&|$ zLLH=j;Z_u7h_zDZz*gtbfald^FXXSJ{Tijbux+e zrh!}A%g4%Gf^Be(B4w*ck9`S9A4gk4>gVr=8y0KxK&;&?2+OI0*eMCbu?B=+ z=npq8*71spt)iOyVvqwO)-BI>#o9pNMz_JpnG$bhCB(X%O?Vr;07WTc{janSi*?(m zSS7C^MI+W;fmq7}v9cQyYk!O%6>AwvLt^bJK(e>N7~apX8^e=yx<|yi?*3TLs07B( zFga74iNRE?_hUpy0(KibQ3J(R1GV`J2$X_3I||0n9gCurg(oD|H!V_|Sc>#_+8~={ z#YOu2)so=$zO`TY3Pl-WouYGKt8+N|c}U<9bTwkV8%Gf9EpSuBda2W^s=h@a)~oJ| z5wAMwW2eL0U`*C8>w$6HGwXCk%2ts+GzUlm!hql2j0Dz=JhQ$|&+Mr1^+V@J4RJsLyB&a7x(;+1hNeLfkDLTA>F zC`u9Q-&gX)-R}(1d9Zs_tdcE&X2e<%h;=|9R(3;Ty&L04#ae?>M{R!Y5&@DeRt)dw z`$fA)#M#@Twi>A6vk@o-^E|qS=JF7V{)t$( zvPf-WDbmTbK{jG_k^Vc1)GzFVq71Rl)j6=$IXo~664)@B=WWFLBaR@}FX5($b)nO% zs=j3)*2VY4h*zDg{I8h~ixqF|_+?`;jw{v$ij=J){qtEMJ;uDIpFb3C_{`ce5bGNj zgymF0T#y9f&&wtB^w!OfaN}ZKtf<&3sxui?u^N#Pv3`D*E7k`vR7|XBU*gqpEqy;3 zjY48Q4@D_rJyP0-&#XH~#VXkXXhy7q0e!)jkhFDkV9N6j{);|pi9EGk%tOw! zLt^bHK(f!Q7~aqSa4|FCbdQMjhdW|9qY}9M0h2SunHWsPIvFE660qr0uYqE#fhv6x zfl@H1MZx&FBT)2D#QLg5Y7dE)eUb6Jx}yPP*Ia@R^lA8Bf=&+hZK}%-T$mvQ?y0X8`FR z7b5%1>6&#d+^|@4fmkoFAS|Z};#s=r2v!UQF%_d>8+<$5xL8XS6%t2%uyhl{5lGl);5$mWxtd)US*$s*H zc8nht>sXXJYV&jF36N~DVt7A)K(u>AtOwi{%NdnGC%T?7n@bF)VqH5jA^|Jb_8KU* z8mQABL!cDQOmq#+Wh#pPiCEiPq&Be>>2*_+kscgH>KArLQHEH%=p5MU9PW7(5~x34 zC4ddj8XQ5a|AU(%*7;7as`^a=u`awdM!f3e4chMqI@v_TIvV4+V(qR-*(%as9|6+C z&1?GkzHq~0-6Rm}D;9+1R6!h{1mf58B=ocmUIRBS)}D%rt)e=GQPE>HIp0OBxszP6 z-h-iH+hDXW@y2qkpBs%vA+er?q7<9gqveIqY`+Du4jx`F_?=$_?G@w<;&<;=xatUrojO zF_jHI-_3-yt^? z-Y(nP@J?~U+nkE^OS2N*iP8~YnziArl0qlEE1dB1cqY8VYIl^Nk3X~N46tuU)kxt}Mr z*a`3Y6Zz%S!~3DsZ!Ek|aRBC-cdHZ>}h!W-^Xk$jfVHj69}UT?}vO)tmbhk zyiegM_X?X>czK{$c<(^dl<;0DmC4~fMJhAGTWP|}4u`jLDo<#c6W)(7NP2jmllqN? z_ZDte=Zzwx;jJcD!#kW@{zp+dn%lYIJ*|rk?+hor{i#^O%cazD3+c$=MG3;|Nud*7 zen}HvZfC+7}&G`t6stKr>= zTn%qKZs&%#YD*j5Sx$J*p<)Rymr{6_4?;%{FG>*J*QC%1Z>bYrZfC+f(T0~j4X=L> zv+;Q}yfr+k3GWqrKp$I^@E(Js+?i}*;pKs1;oTQaQ^LEYR3?YFp;TsscZvxwI~?Bm zck_f+JK>#lFe6P5@0C)&vG5+l&FZ{;$Y^*EAr}_}b>7b8YIu)1h}wD3f_=Ee{wTxp zXCEWJi*08wzszRr!cI0J<~j*+0u@U_a499kngjWzuv*I#p6R!UCZGg2Yps(%&ts7E{Fx;6 z8_SZOv&hx_IgDKXM?uZ^rFPyB=FH|#LzE4WGX33x?+!5SoJdj&dII`x zTiEOu0Vnm?D>GTX&IhQ22cgb5XW9>wI( zESo>G|`#)Nd?*CUCPlZ!{UrpXL&`LN9<}Y9NOJq4_tWM!e-=CWvz&@0f4G!}9d3uULlh^V z4*Am`)%=*DVEx(4mf0>gf6A$)$sZoY{1|R6=#2qd4 zO9t;>9lMK!9Q4Zu-00rGA(n~svgfw5d>>lHRzg}p1m4xYy5=QkW~nf(QB7;(Vt zx+@H#D6<1o5lzL2VD@&nab_Fj_5EA23h~BU!0Z>tfLZr(w@XmuEFQF^$S)bp;u<{v z@iFaYp8uHrO9qwFx;*{S-k<)PM)q?bunE0CY3`uX`DPy-#a*2I{I)1{(9-iiP?WaR z=`R_4I}j5OEu5iWGWh0l6AJtNd|gUDx!zq$v~Uu}OIqrhDfw)b{MI*v{9#cHe*PE~ zB`tNaUov>z0<^he*5V|9e;mydb^!W?)hNnX>q-?mTZKOGCP04_UCml|500S7Tj7TD zJFdv{OoxafFC7&lU00Uz*QF`4E5>pa*#A`CoTK4}amJY)XgWlg?Q~fhvnN-l zG20Adxy*J~*lZPcUxMwfb?+WxnOy)kj5uJng+&x)_Ty{Q5M7E9!R!dQab|leM79cX z%74J@`T=0pUF*I?k+XW(weC%>!CE(8yP364RxN%VqP>5_5VoQQZXZ4|cV}$RA;=<)v906y4xEo`(o9Pf?c9#p&nEhX6+B`nw zn+kM>488$1NMW;8*aL3}GkZTe0r4Gh!-xZBJ6c3hW=~B;bcjLZ7ka~uGdn~fvQ>yr z)PmU-hk;plx%;g@7dfkkUG6^N8Z3A3qD}a-EF`>5#G9Rr1XXKX*BswB_z& z%+KV(TQ~x%FT)M98dun4(;<=v-A1P6!3Mfi#3v473Of>Gxp^>5NoK1gA6662gH8qj z?LQL`2YIlmMHJ10v8jk&0&`H<({ST?Fj671RfrE=??U8{LX>!yAQbuYFbeTYbcG-7 z-TU0&(cYzWuYn{wmhXUAiC%;wgk~7rjfLg_(;*U?8_r7$&5d+@nH-vRd`l%H(NQ{Y zwkH3tbLZ{nasNy9de5ML7;zAqQ5I1&G%ZpQ4K;}9`E_vPp{Z1eY!%`r1d%Rnyd@*# z(ca879ZwJ&Jlgvi)W;v~{XO5!^7CJ@;h8yMY{Mbj1QkY24NNoo{L_BiBTPVCO>d)> zjJxmrtL&|a56(#o*?PKgO%7QV#&XqEqkOPcKK{No9J0d=0DAsy0^%TKuUbUWkX@0A z=*NO4kze={Zaie;6(U=OcmhErX7>m&yIsI+N4OhfR``!IdldzGwny8NIreH(&%1S_ z)0llI#_U9e%~oOGUlnHd;(*z+GnpM>5k;Bpmx^d}gUBzmf*WUcib7h;zr_)jna|*EjM+J+Lu8rRW_TL26X*guIcLwuSZ>ZvSJ-S7_Mz8=ncc?#@N>H+ zAP#c2jYSk?cJow3pX_6Eb_v`#vojPTTZQ=GSQnz40ed~k0x z?!zXs&Xn?FYV#e=!s&v3i{Rwg?+@%Cuhcc+m9R)Xv^S4x0)7{c5b*JEHx}^Wrb8s) zyA4YV_?vXanH=yfF_s(fS;{6`Wpi+)%ch_Ix|g!z=RSoSMjQmZi$xR-_@SwYZp4T< z<&T9M5BOY#$W|dfGX_#R0zC|~`{M}A?g=-HGrs(nnhp_Wmz|l$?9G>^G5gA1Op?p& z0)@?1VQ;uP%Dwekmxs*C?DjoTAEGWU7g@5C0;oP3EZ+?F+HSRBS0GIE*E;aVEFZ5;- zzXCJt=O0C7^p`pCW;fPiKZ!UE;f|PL5=PD(O zS5LcwC)A23R9C%1V?^$1aG`7FYaRxR>PGE4EegsOL>qvS&D~i(YLg@p< z`IU&L(r9;CXY4O?j65y2&giY4L+K(KD>(f!2L{tG3A~6Clyh_2-i}&Lljk=Y*{YOp z8cmC&&Xs=OUe9gL!_Y^fC}l38F9{rMk=pe~kKqnb zj)nd;Y&6V5KP%XQJesfrvA@hQ-su(kWscv5#E92j=#O;OD#Y`b1hlXMky&`3+ zNVgHBoy=?c`8IIfFA2E6%<;3uU@6s?yDAC8E7)D&JUJU~d^K;dnZEl)Rzdw|RFDF) zV4S#v`yGMvFjV*^2tDi{DOchR;95V|4~;_K5!e$&Dc=$3AnoaDE$f##B(47+W7h&_ z)%5*G)6Gan6RuLxL&zhNh9S2`4@N{$48nM&g!0ZiGL-359ubNVB9HzN$}(9XYYN^xnn+`TI=ky_rBk~zU#Zsx%-@Z4n9i1nPY9F)rLr`>?*Cw zn>iNaB*xe3J#w04<+nb+Qny&7JnSFchuKs7=AKqxI6js#qJU56+qBjyIuosKF6UbD zrQ;GIimed!)de6*!2C~6OsuiIAZIj*V{x>4n?Y(4OOW3 zeRf`y14^vVZ*Plr2~MM8VnxmrXYRqdRxlHl9I;M9QHog4Q1xB0#@@`K^16nN{`FlE zKTnHKEAllZI>K>xm2|0tuGg-#`{1pfj>DF-9{>pT7=IaaV8Wnvp|Ln({qY!$)FhT5{U3dM zPD1*0PY#`hG|bIKQ30`bmoc!FF`Rb}Byc90YO$VxEr@j}+!V3yZMAaV%yGxjdN}^_ zP8%~EKCsHwwKaRHu|!uQ$^|J~LHhF9K)MWd32B&J1lJX-^=6J+4G0rc5$ippbWAM} zr)v;l?gY4Tu~rBwwt}iBqmq1AV(r}77VDM@uK(*hxlIP^zV!HAe1^{-Ae%}{JVB^Pw%Jmn|oqC{is;Z zhytGoJTNy+CEJ&aZO|@7TU<+csA8v|Rud`Y?Z|3-USS;|OlX; z1#shHtrk>l1=Y1@MmeCwTC=S!*3-~c?8u6oDb5_kd&8hFDmh2i-BFYx*3DIYSFEu& zbEv$oVWY*`F%oOnNUZESVqLHshr$=@Oq4naJ_$uB39gT<=swII=QsDn`s@+0oDm7! za*EEG+J)#$#JVYZw2oIstRsaewnEe=qd}B_S=o(8=#1rA6s3&C5$lZxsYxtB`Y)|k zX|dW!Pek7q(lB=@iVBEztc-!JjG--$f!2S}REsr(Er|8+U3pX~V*MC9RV(Ms9Q_ZE z1zvR0+YE=rn&DHjuxvW|vBf%0kg^q|V^0UtQTj9K{e*B`v088D=wm>bmzCTOn$XkswOIZ0CasgVI7{am4!dVH&APEI~Sr zmPxc&ZKRLy#G$j0hPk^?R6wlLWDIO&3}>DO35-BfE!HY*L9Bz|riit>)yjD@$1R8I z;rOS)Z=Rrs!(vrGQYowNs>TwX2G0Jn0VJ^)--tk#=3ZZIHBOhv52 zlR%uTL4>&~xN))07F28nRX0XeTLWg4SPyP(i#1SieX*i`ac0eq5Nkaf_cZuj6s3rD zk*e>CHTGr>l`Vj##aa=GwK5VbyN+0^(7!L%z9@B$M!PE@g-?UgeV8rwn|oqC`H)!7 zhyWt-N6s1f&j#&3GNKIl1((O`^ zZtNosbH8oR;0uU#zKnsbjG^viNMJFVYO&747Q{LmZi-kZSgo8lb9^^27I@LgDZ_Q( zS*-GAj$Y`;KC&(nq-+K0RtjlL{h9QBLb$G2tv7RgWk8si3WzndmJuCU1;i6w6!ml( zJP&SMtaXBlt)LozQj`NqtdDGAi?teE#ZH5fGsT&{yf+Mbp^|fC?TVrlv2LpByJC&K znM37u4I3@i!I4<2BC)dTh;`m}9135o(^2Xq_*E!MNpO8+MfYL$NWZx!)+Z`sIU^Dn zOba?%tmsU{+7vxn$15Y&6+#qSA?knCAWFcz)R{-tut}B$gn3f|f~= zkRF4+Eu>-YKok`a>q;2|TN%R^JccmS0!_78*LPAwp*;E(Zi-mn!%o%8c{4}uz*yi# zCx2Gy;jmcwN&=k*PeDJnSXT*Bwt{rj2|#+1{!Ds5AzW9i)|)xX4G0rc0dZ9lh)pzz zFt@%Vk3TNf)q;wxpnCiGCixu66*$4dQo>(^-5X%{n zz!yjAoT*)i&P1$7p+`#sMy&Nh6k8!`=i@+>fNAf834=`vjl~h`r~NfjlURcEpcJGJ zZ_5F-kcPS2P*gyyYh?^noR;RT!RR6 zL*T~6TGU#uvyv55J20x+8svZy>v=6~u{Kk1{nKF7FV57rhgd&jTaTO%608O=6=U@wBy%lbXSTD6&IdA6pqE9UFqLXdR zaQMiI!G>i$(T{y(Z6iq83euJeX^H+!dOzXTpr7uFie6A>y_w?^1H!~qK+GMYV`_nT z6ul9MFgFKoT&x`h6l!v%tm7lGPK?CLt|QhtZ8)&LSf`-WQd<~Yf})fJ*GE=#A7&5pn|oq? zG#ASmk-#Rj^rR(#&P1&Lwq}?~V(ltKu@$0L4g*mFW+|FFV|f%sDPwWOT4Ru!#1f=q zXz3{l=@CBCFjs-10%GkhV_+*|Xu)F$GZ{41V*PU~sDSb|_yKN;Sl_@-)yjD@$6ouz z0xvq5Ppdv^III&Kcj@^Q=*JdoxgcdLNKYCHq{r&dr1ulTb&sspn>qF{AWTdJM6V&-Q+RI}T#HJMSkFUIidc_Q z^$FI$Ga|9F>xlKwEqVODSU*Flli;tTC?&zQSkZl$z1wf@iM7eT zv78YJ%%lY!Edg{UVjYYglf+snM6ng3wmTd|37D)8CJdSs8jB;=Rr_e9Cb0x*lN6-) zZNUMxkcPP%QB**zgJleCWeg__fds11REu>Wws2(a12;viovl{Rn>i+x>*4sP!Tk=_ zfoHMGn>jw%T#Y3<4XzTTYz67U!9e;5>Jn0VKOtOKtk#=3t~MY{Ohv4()6!EkV+e?0 z8bp{I2sbX)YC*+TP<3EbwKd2ACDvIR*<#($3VH9J2BUs)<}=T!5~Or9-3;g&cYVNdIQ`Pv7T?Wa^B4G zQO{W5MJMmks!ya7zB8V_vvxy2_K|g*AZ05^OBB+L^k>rh2{!}%&S|jqW{&?E5GJMq z;>08nbI}`4gJ;2wi*>x9Vk@Z5IV8#fCDx+#gsONY<>fzg%5pfmiXB^GZwlanck0H#g-;~F##kv+-5bIZPQ^dN$YUR9{WA{B` zfft>OqLs8rtny}#@#x1E>kL84R*)Wh5ReYlpGog0gzFwztv7S*Y(SWp3W(om=_v+c zU2{b}eP>+@H!jxMf{Lx6T3#9DfD-G;e^Wn3toNd;m{^fB#hGh)FFl_Pl^n62iJ}y- z4p#NuBWvu<94fDC*l4lVMPgkMiIrVPtZO$>+2B6<|SUwDhE>6&vZD=-WaX<|d=4fLQ0t7}&}fst$kzhM=hyYd>s3tmSZ1#M;hk<-D2W zs&28si%$Nj(8J-=V0kIV+Z%J7Y_Tp9q-+K0BLjf+e$>Tj@JzU_Sgkj6TxLL+m(}aN}aF6I5&kRU1ZCTLWg4SYP~u24lq9&V;M*>%L)5B>W`)@~?u#M)K?DSTu__hI&@3`fFh z?uqr#U1B*S5~%O3bEbA7Iuo(ZM30sP%xUlnA&RXKHKrek5-=zFV8Y-~6#W;mb}>jz zVhPeiQ;`1Bl*eu%4RfEOsDM~k${5(n80Phb1m>Wr7VFK}f>>+erik?{tJQ>t(&#lh z@9q=}yy#>qt)xW3jov@X0VUR*ekFiLtOqN&zF3hn#hGrrHw<<_B}c4V zpeRMGe>CA3c&EV?^i%34zqXWLMpqWssJw>JVqG1HwLTInyN+0IM*qH8$D`CzTNs?F zfD{%hx(~Da`^`PE-nC;aXG8**^wK#)KWAmEBGxqb+3k_0}Sc3F3S|rm)RvYO6A8DBDfuaIpT`OZ?D`QyS8)E&lh{vtP`YpB~ z)=%K3h;@n8YC=P+NUU9Vhy`AB(%B4$kF2fKch-y0k1f^)LCRK;4pm48>CdG16T)@H z+A0$3b_RrrsepKxmh+++LqPntVLwn$r@`OCjf=I29$&{lX=W>^p36l!pu{?P4TaK( z^$v6uI}HYt#hLNEm!8jsN{(1ZpeRMG2dVn*k+r`sR+TL^Y_wR{lFxti6S)R*5sq58 zj#$54&!O>x z)-~VTV*Pm?^4>qPB4>&-Z}Z+Tcomf#u`WhYidbi=`mR_jeX**%h7`3}i#QS-bNW3i zxgu6}9kK3*{(Z6TfKo@STPPrfkF4mPo^SRyN5X3EiS@vav78YJ+(j#eTCC_y#5x^4 zS`skn(^ZIKD@2Vf2T=m%7#~a+9EhU-BGzpTQj=JMbmJ7H-~Xi&+*%D@g`xst?Ji?r zD`S|mHzY6%O|@93Vhduu8g7bMPqSK0XxJhW>+9Rb0xvqL+*1dhkF500YZhw<^kW}c z%LOT0LHhSzK>BL~vcH1n>Uy}YShtA8`jP=*Vk#isrsce7#t;y<7wbhRwbT{{BNULrVnz31c3;1_C)V5A$8ts_(34gQ zwOG-ah_(I?PXb1)l|mF-A?oR#AWFbIjHb?5ZbQ+35$jlkl*3s`iQG|;-qt-CX>T8C znA-(K1;jd7#=us_@aLY8z}nwM0(jWY=h#|Gf(ZTxH$|*ZS*<2CY#E8QQ@dE;MJFHb zu7|^7rS})GSkFN}wpgnKDO*80NFhBye`c8N1=khpmXTQ78xSU@0%AlGh#!Ab)YED3 z=Wydl1=W*1q8w0SUHGLf)?3h3>@*lTQ=GYo_lChasN{(C1Qex+wXdr09$5$b zVpVw!Rcf(z*$UFxy94R1sEgC!DR5n}W+SnVF(6D#1;k&poEIHg z1w@4g5$4L^#>F~bP_Y$M%^6iKQeTd&Z9cQb`rTUOy?>G_NLbB1 zu~uYbIU^D{W@k+o{hpPvidd(hM@s@GeI^P~Y=x*3yMZVHbA%5j3@T9cU&OkVL2439 zkk-+frk+-8q+kA|65KiseiKCn#5zsJz*fdEYgb6%W;E4eoro=n^)k3AVy(7XO=#FE z5^H{oSl~q`8=2v-Sm`!>7Hb>yV;@;(2vW9!^w(X0^oJjj{S|Z?{25$VtXoB5U1~s> zm39mlBX_pF>l>d1P@$F^8=3a&3!)Gy9-;Jsnc z29+GKW>AzO*7_ef2Ht6Kl`mG6Er6!QTEUUvnCELM$wfG7;W}cSi2i-Co`X_LZDDYN z0#aD4{7J;to_=#rtT(ob<%~$+M_MV=5#izWq)lfYaa)v9**05v+up zBG$*ORudXpM`CST8VkJWu(kHbQ=62+_+fl1QlCBHGjt_2b5SpdEXZ6G;|d^4MxrsXU^fh zVK5q%9I;lRC`GKjRDJizI@}kl%4Z=wjIuo(>M2|^F))hh&TOn%W9YBc2Vk@YM8C5M(UyiK%zh{f}i?5LP z{*e_qQ=D1Od&A&4RC2^R4@D_roucZyVy*VYs`47pv{?3P~AZ05^f9MFL zUww}3ub>mF58%3D-8vHM(*}fzsel-e1Y$CJ!)fr9aN}YvBD}cHN>)%E$*Ab}teo%a z$U5gOTdaF2xV~6Xzc|x|_tN`;P{|SN`pW5=8J4+!V1sWVM>m&^8k57MWP!MJI!3i8c~zTOMp!b_)8j#o9)Y zvK6F#6w-42nPIjYTvx1ZBe8B~K$w^ch*fP9Kz#a%qMlBJ-+>z!YezxFR!}|AKFR?l z){Wn=#X1RH#ZH5fGsT(Fyf+L^K_y45Lr|0=)}E@qdt@Eyi&f<{RH?-}o+H6A&(};O zSH#M$Bi465R@va520w>VC&A~TC?&!5X)wAEvsd`dJ+Xe;B$hKG)_u0tbk#0IXCl^a z=rQTY+Es{RD?}Bw15pCzmydXa&R9N0QOa1H)8K^$sYxtBdMB+D>uJSCIstuKNW)}?b2@UNdu`d2M7I@Lg zxm)VM^J#EEr5ko^^O8vHg~SFG(Lu|947|rnc=Wl`4w9v*5lBRE!J^@l&v5wS4j8JpBZL%fa{8N zn@Fr18xSU@0^)jFCyvA_AXdGtsHfB5*Wkv*I$lt*6;yY(igG}SwfhUUSg%4?vD08M zS)4hA_lCi7sN{%sAc|7N+D+AWkF4kUVpZ7!RYI)#U1l40TS^%9YsbFfjau|eM}#HV3f^K9d+iu^6npL1{ivGq+Og}@&g9pQ zovC&fcqM~mJ`&ok0=dPk}KjnUhetI>N7$q2nY$rXCH zCRgZf!u4!=TTM3f)>-uaU90KkQlj^z=g^SpMG5GAToqdMj<@LLdYaz3hFcxYr|Df}=w(mn9p0Ryv8zw--rTFEcW2(9=}*zy6k9=- zO^jadC`RvhPjl52dS6pJlj)tWb{0@?ou-!^ruX_yctHFr6FoU^icZq${r)M2_jzOV zzQEP;nFq*F=j=W~uF!isxkB&NT+deT5fcr)D=m8WqhdubmlC}PtA4a52^i)(ObjS@|n}g2)!4QEA$R0SLhwU z^=x|2yT;JF%A)r;DpvGzDbd?PHDr2G0($>^61`dU&bR30dYax`IaceSRM9j5o~3=gQn zqBnekk*3porrO^ay$5i$d}bFiLT@>_Lhm-@3cby^o=xxcs|~%YEqX7fVnr{P61}f2 zL_?+*C7^eaDzxaWv*_h|n%;UtFMC4o^G!J#{e5~b=3X_uXYxjE4fjj*9*C`=icO4O z?kGlYH&jibw^Z#+ruWy!`9r=aK<`>jFFQ={Z^b;IO2Sc_*>6H0@(&?DU-LMD)T`*T7ByG+<{EsQiuRJl;Ys)|LdO=qFgF541=cHy z=rS3u5t9|RDSAzKnEe6YB9~V117UkDz3fyS z^P%6yVlLsGQY102UC0SidGa56$!IqEvKKE(1U6fNeaS}dJJ?5S0AWxK*F_w?gT1do zWTGsHTBIV{Od|?&#c<;*8KnY|tw3B=gq(QuF_jZ4vdgeVfeM2~a9y17x7**K8+eiZ z`@rXY34%pg}2trm}WS?N{Eto=XgISjsK=|SNWT& zJuyILPoUI78wU5FC~d0iL#ax=U7pYzzirn{bsv8fOAeXp#?XR$G}TEVzDL{FDa=&Y zRf5k}g1^yv1pjaO9%}{v8x$o?b@UeAmZ3e@J!1fxToEjv{F4AMM9m?DdG15c47zl;T4W|p>kOff~O@9(xE%LO)Dfj#w~ zT^&VU!C#u`k~1Mb53Y+iQsj{ak%_V(nnBCs$#XLc-dEfQ{aLe#neM72{%j@woBxIQ zW1YbsQJ8JOxA)}fuGpRKUNZnqx(L9-k^tU;o-Kf3t`)?4Im6QO+Xw)HZX|%$iDG= z8luJbb8ryZN8rXIJ6<5N6^Qrzj>yjB)dhFDn}i~3_At}k7~X^F?o?^!PItxW(_K&1 zpulwZ%YD>&7<|tr?d>1@sfqRNp3Z1hyc`O1O=Qva@dBiSoJ+VnLV5<)2^D zB=81)Te_waCZWG})NaGnL%#TlRODs=-dvfbZLi|o>$(<1xN-F{@}3T(Cl`>3DY z$mY=qh@XM$B90=vtwH2Rwtp(3(>0Fxq)=1zA_)2F)uszHJ2?w-4-^DvmnCT+Ugfbr=(_!(P>>eq1HsK)c4PB-xK zpzHtA^5F9|X?buS`mzsuizLWwCCG=Zar2;$20-usNkAOs!Bz&5p9g28BKjPW!(s1# zaN~JUClJ{R#D{*eA>wR2GXqp)uSYKwUkcagx0+V&vXoA=i|Aj_=bb&t9=(JfHd#|e zlRZhaDJpAf{+P`yf|~E)Hb%{I-N2(Jd^e4nD}G9&<|6cEQ?o+G%~t3CkM_93Y<~@a zexH3c_x-`l&LW|L268=}MYp3(ld9S4{r@ULgVM9Li z^XNWBJWhSpvy8t^7r1VcRr?#eZt@dtCWCW@d}cMdI8^5|%gNIV?iq&-!E~SR&tA>2t1SPm`QZ2oivnAClRX;$gTYJ=3 zw#=?-kGa-Ti_ew2Ia^}qQhopCo0XHARE9Mx>0qdDW8x2g8t+7z6s{s_)oo1d$;Fr+ z-|tG-D+aTO?Aw@L<1e}TVoV)x)S_SF^EPY+^Vq~L#&Acmi!tL-HRWQ=$!cfv#h3%s z&H@)>R;xkP*04i~TYuVjJfNXGpnT0*;fUM@a&eYGmoJzj`X1eKY7H;Ihnf65MY9P% zPGkQMrPhHc4DLWt+G*?%>Yw6-?!)XkeseXojMi5Odb}B%TI5`DC|wUxOO>??(V5&* z+7Ue_ozK?O;Q8_fTT$;3-_ilrfcfe{9-%Xqw@{Qa7U!1I5`&b(X7 zTS&v)$tWstV!Kwxz*fdEwH_x4UC~s}?QOBOw1N)SE#dle`zB07nEB-aMJj(s<;!8! zI`E6%hy@;r5tbF3;qWb`QurYHv8VF}LCRK;e)SEIUamhg%$^I^zNNJ0tt-x6B$vDv z8Vn|+@^LrT>yTO)cF-8YTsye&3A~7YTY@WGWChe<1|=z=?kN4~R{M_9mH6r#yQ35- zSDabEd&6L!`hHygH2vn2md;+O47ZtqqLe#IFH!X?Dr+~X9Q_g9HZ6X)mY#~C->8Z6gBm*PGpSh?`6%~T5Tgp*$UEq6wtO>6>EtvR+ZQIDE(WF(nzdrBC)dTi1jS=?~Anx zrIy;lV1NQr__rG9KFn_IH}}N){!6i(k@UEoE~n_j6*?2K=J5sHl7JCwS0Re65cT(G zAWFbYmhblRP4rD7L9Gv@OgxTQA2mo#VhPer3es(Sq+zZ(iVBFeyNrRYjA1VxLzsC3 zUjnsQmqgzVpGf$2*mA0f^;WADUyU$gtzHoeyy#>gT{VitDpwSNwLQt_4RDXOL<$x0F<2Tr1 zy+C~%^~H*uDb7^!Uiy6!Dmh~9jiMB>c2f0Sv9|EVs`9#qjTURiNUU8Wv9jxkbqT(A z`eL0YUren8pCMmR%_#vL>WiCKZg{D(*OHd{$cpa6>=}M@PprGX7|R)vKySKqq{WKP zM67MmW0F`ag($W{)Syp5lz{nEzKU97c@;(fMXXH>Qj=JMbS_ zAlAV$2DUPWNgqQ3ozYZ_bxUmF$hryKlq2g8ckmHGwc@pOBi6@Why`AB@*`dIh{THT z$6?tV^ka*)N|3S@q@R8Sq~r8whS@XWx?*h_iS-c!!o*ZST$%);g9Z`iwuBoOYqg+a zE2s`)RP+E#&UYo&)>CbW!?~8T)Odg7JWc?mRDG9E{itfYg^L}$rtXC|J<%~$+vyXJn z&;u+PtBCbX^k_-I99c&SQEY{%*&l!?0n@_=L(k_fG#2N`I?Nz7i6ux6PC>ftb`G6| zG|bIMQ30`zl`*iDF?{qsByc{OYO$V%Er@kE+!V3)v06=N$V6gowj>sK(aAKr;uMKB z!-*4?{dt=jOLVn)oFHW@NP8%xub?g=4YPG{U9n~&v2J8Qn3xKP4oM)+(ICRyX>j9W z9WSWZ3aXi_q8w0Sy|~sEYkLLP7b|k6IJ5p%i1kl4?rHFsC`u7)Ue$NSx}`5xmDe?F zv{)<1=Rf++T1hU#Q47}*>uKoU7wZs|I%4gufD}Fr=1(HFHusx*VtwnmSk8z9uBNLz z`gn!TM67i)JP8=FP86cp3Q@nl2ciT_4VpS*IR`~46OSX-xdy38EJ6Cys$`^F`AF&h zR1_5u>ogeyTN%UdJccl{;uapa7VA^kf>y zWcew$ak0)8RBQ#+ns=fcP-6Y~T3f7R&{b@K2{}`o8Nz$RU?3_vN7lVjlp@x)s=h1M zHojO@UPFpntb-%5Rz+fE*AeSe(^WROi@|eH>LmE}C`w6iePl)Vbbp=S+!O2ePsegb zB(URqny%V~=uE`A1$wlOS4OOJg($W{)B$gUC;_wTCLWk%QPb)UkQRv%38s?5fQ30{emoc!FF11Oi)>-Js7V9EG%2trBdJ{;`)}I+>N5FN(x^X1d`wa*a zQvq>m5{Nb$M3@WU#>HAEsMrdszKn_F7lguVjcHnEN4UlFVm$^Edg{UVjY1VEeRO0t`MTw3Q@Pd0ip!VESw^~hTD2c?nVPP!rqLYj05>+JD5>A}3Z0%GvmgqEil^|s+NOw_4UqD@)1}}!| zinSyX>)!^1iK&3#>trzyqcw;yR}D8V*42WFt)QCzT9gAytoMw!#hO)ceX$~EiZg#s zfmqkFaZiIkMp24b>r{PLtQ~!^s=S62wOGeSVjUNWm0d@y)#%?B>p+w`N29$Jkiw_I z=swJD>Noeq`pRRmoDm6}N!Q@CSkak?b#drPz=*Y8h+->5{qPEi5-^vesWX<*C`y@l z9I@VIkeb92r2l(88EH!&X_)(GGJ`K5*0nMQwlapUJccl{1WmPAAHx>JIu~w=SZl3T z6B;&&#CrIGSl~q`?agrbG?-s9Nn-7Xe(WP_gCJ!qNH2dGNL%aA46`lZx?z4SxP*JscJ*1{;>$jDBpfwh^Rk1?ihF0_o}c zGsEl&a9y!BkHk9LfG{x?u^yTPqLl^_=9bOE4J%Yb zzUd7mxan;dRcLNt3u{)>N9z02xSoDkKvyD3-Jiyu+@E&C3w%4*aK4?(zCZ29^9ZB9 zKW#N{&>djZFRhC`g{|NfHnIEDxTDzpX|qu^<^Hq@YG?BOX(QCm0{5qNSA(Kw(2_$b zSf5|U1F9w*n%)!7Wu)oPg4kc}Z;alyTrHp3aE_t31(gWBKU1mD`vJKQz1R0O^vy9Ebu>>@qsUt(3v-=vkLhk}{h2Gn_o~_;m6^7o~7QMGqv7(ntiQbb`L#7uc zpm&fewCLr#WVL#^o~E}_MS_T8Pw0K8j-zpgPj5@^RnyyqH|Q*oHS93Gn_xg=EqcE=i;&c^sYRUFlu_2@kVV8_e=E7!dCDIn;5;^QHer-h6I^v*ehk*3powc6hpy~lC2e5NlMq4zLyh2Eaz3ccHKJ)7R& z_A~U(x9I(tiWR+FO7wm?8V#9Vlz`qhRG~#LzaUqum+NVIN2*8=QS1r5TRqG4Uh30( zJ@=~Vy_z>_Yq(#c_jqgtW7x##<&I+X_D9tedUsSilj&`)b{3#_tQr(Op^+S>_uyxE zK;tcXPd%NHrqeq>?Qe|UZMj-LQ%pwaEhSgz{e9Gan%+;yb?D9ZGW0I8=v}|Brk6{J z-g{L;rWYlkcbY1+=;iw$HN9L<(>qQ@f{0>I=-vBij>gqKy@zwJn%)7tK_@SY-VWFb zy0eMV%N@n&&7f)uz4arxpOjnwUZP_a@kmlC}rR70j0C7^eRDzxaW zu;}G_n%;>j5=0bxLT}Y#j>cr4-YvLSO>Z;appzFx@9Gh}75vO5MlW|1qxVHrO`-Pz zwKG}0lhw`w^iETQq9-(x!}NxWctF!EdcQf9k*3p|SNj{IcQ#kcXKKg@y*H36^j=7= z&|A&*Y5-i{8N&yyyHNAP>ppzFx?_Jmm7O;uY%N@n&y%tqd=sjKSOs02`+F5|!*=kVqghq0h z-bbF`0nH#BwVCy0{1mmBs`)M)UKKpTOy&j5|FYN=<;2(l!&|u%g#lA)^d+on3_ui=3i>CrGfKP)b3k| zrIJ2A26{geijsbO?mtECB!kbao(R73Bz$l4qJn#&rw&C0mZRnia<+o}hsS}u22J&H z)P>kuT0tu%XTbHBqx`3+9iSVi^+59!wasS6VlLqww@6|hd$Q2qSa7h{rWOfowgS71 zU`M}Kr00X85fDEG*F_xt{PLgMH6jybLG(9WYeN>q5RKG`=>AW*@r9~7fyh=M-tZVA z`~Ar(%hjVcKE@Vsz6ICC8UM}kL%M+%*~f3w@FHW7<5cP97XnSgUFBUt52jw_Vtrg64QG9GPv=`t`vxD1!6ftr1|4bUNCVVwecK^ ztjWXt_IwWS!EeuRlV|y4*MZ5=d-6PUW&vj}REASMx z%T$8`)7`pbsq--SjZNBfHujcY3|fK~W;>zO0vrZv{VMIuPNutWc^!zd%I?j1irU;8 zWBDPo$>(%EGMet>cT2aTKWjEIXLcnLf3_0;SLY%Ar}`Me?BOU%p6 z!;%0tU=hgz80Nl0QGw~MRG_mJ=&cm=2lbK^NSKK&i1K>4jfrx!Zs3V>&l_Svm&s*1 zU0O{RWe4ltVWHac?j%-(f z%~oI+5p4UUdF4?ivdiJRh@;5n4I)3X-#(m%=v?%O$c}^?k1W6RiKjcZ0`a)Hi0mJu z5Lx@7kzb(5nmx>P_Y&{Hboab8bEmrkPf?qq8WfoB9y*db4}*Kzq)m4v2);h-{T)Sh zO+r-TdGL~M;N`)aQ_}LF_Mx<>UxvQyJSdkSvy~t>+~?*&r3MfNxdg;f9z1Ul`FYSP z718&I9P(f_+;|>T2t>95ahL;=mX_({WxJHJ#CyO--eYo2}0OdtGXN9Lo5C_;a`} z;)t3q29ZzA-4CWAnuZ=hO%2>QHG>5rTY>o09Q9bC%db<972-(Koe686U* zE7X=hihloqPjqQ)#gy%PgiYD5*g^n0!F2-=r)=Hf5;2dm36va*GxS~gY5xoJ^as)c z^eFnWDXWrru$6c`c#lij#Tq~ujDhPSjwn0ZAo3||mx^c`jVR1*4mVC&wLoMm5H}`> z6xnJgvWG{JJ@7w8R>fa2WX= zkL-AX$W|a8;XqVJfDYVKm~ErcI!A!$%tlo{heID`M{6?d%KV6o?D85MF6cRE$H$(1 zHjIIW*+YR>rMy1YV3PVBJM~P({i|o}zcJd^3=$y33mZC2^vNHrWTY)`qmK)g*58=TB@k+QZ;wZA` z7({+#SKgC`=yLRk$es%~9@*Ifk*z>1aUd#n^yKDYwi|kJ6I?x`ao$zxWXhM-x`Wa1 zH#R&>OI8J*3dom!_^E)IulcEf>)Q6gkRcvAKC?5K^dFa#YOHYc5$&es-|3A z{E?T3(ryh{sdg5)xHw-8irx>VvbcW8Z9JekJfM8dD&dIS)#Tz!KHWab5wxEQI0Q>n z?z&N!?S)e7dt?}NMN!%+lspv>-G|wKj-i23-kV2|sCmXb6|nu4v3W+8dN!Las;;bE zh|c5=_y^IWwc2A&i5Ah|`TH?jk#g=H znT)i^M;hjSJetE%U|p(C#=us_aM27*^b62bPxN!JwX}l1Yu^gjoiIdN`aN_64zL@6f~HJK$wWs3-cd=k^tXl&v6r;}#$-(VrP+|5a-?Gy_C0!-}2? zc&EW&LMk6OC<()Sy=W8W?u8ql%~uL2wgPHj1|=z=CX8_d?Hk~aQL7RD4e&_0;>>=$ zHw?;9$+-c(Gm27ffLH5F_SG$#Kx0n@RA~(*;;Ddoem{Y~vKN@&`>6em&F^ivT0ZkH zeUX;=y*ZU2!uiY^D&;?#rdQ#cHf5H6>g&`k&HP?3a|h4wZ!O7Z_sUSYAW6uTfxq3 zVpB196q|}S@OSC7SD9knAZ;pMu38qDidU;aQNpPdtbg$)9?(OCL(^LUr0KWubX5Br zqxUbylFxiXM(F*XT%mU*xkB$^u4f;<=WlN4U2D;MD-|nxxs>P~uNv~<8zrE3v?{dd z9dFUg^)$WphFZq?Z&-odOPw4-R7p~{hPmR*9Mz%VT@kxC`RvUZjnas zGPN`LHlF*`&I0tV)%3DMGfe$AH}HTKS@iDDUxy2*x0Bl67`=ZFp>Fb-Pss?qKaeZ* zzDcgo`xMu+>3y@*(A!|q`xF%`dbyP7y;3z~dQk#;&rpRHz0)juxt^xC!O+W|(EIlF z9F1pudUxYqHNBm9gKl$E^seLYo3%j;E{xI39mVMVj9aA9`-0k;Oz-__X90SPw#Af0 zx95|?^p;>ibr!vM^S9{&^j@X*H%2ek4f2@^sx9;mB3J0`L9Wo-j=Qtz{be&lZxKJ~ zn*Mll{*a0ly{n4D1pdS6q87QM4Adbysaw?svPh+D>tfT4B-qMI|Fm zpPZMe{f*H(ldIA18^{Q~Q^*y1&n1`th^66N&!%^az|dP_(fdyeO)r;H!|hZT znnLdgwKJLCgVfFf^mf$rvcvQa40%8+EqeR&7x)77c2WBqqxWC_I-k#cPDbcmL$1*K z4!J__vs}-nx96sY-cpO+ZKznOmrIG>t5rj$7bT!~j4HI~t+VLmdYay@hFy0B5iWctDVX8KB#sUptrlGmmQ{e zbS)2Pl|^q23!nhKr>gyp(c7D=<)Ja5w>y;xy;*XF-u0Z4Hoe0(G4!^v=3^oq4zy$>4Vhk)fZnrJp+)a%i(am$ z>8&*MvM2P8o5<1l(x-P%?p4#f18>k*4@GYgwt`k{V)SxHF?zr5&s9_CeM#+1ruQMW zvjDw=HNEUGy$@f@1F9z+wV7?2@eS}lkZ<1r&)e1w@bg)fM2A@)#2q@fq10Mo3WIA= zl(ML!Z-753p*QCS_$$wft&mV$iQckhbn!U4O$vDvmTivylGdfFXu!NK#g+!nH^AR} z4OU7%Va3=Z3bU`EDCssS{|5LI4L-AaBKY=B!iRaly(#nrd{%+gsA@sZR*-*R1LR!< zxw@BUD+RiOR!TO7>#s)nH^6_zLY3uk``T!5W-R6s-U}y7%wso&-ip5LrKynuo2|g^ zNwA}(d3t}e1`q~E!*vlymmSufp%IxV3!=a1dUW#LMH_2G^n4l?U&0lz5;K)n8H zM0Ox6i6r3dFq$BF)NURb=hE zq>htlMa$FrHRAnv5AKrMN1Exoqzc~vui~%hDrM z3N?A4Uv^~Y3T(Cl`=`s@$X>1igu%IRUBppj7aBxZB2c zxvk*FBRgLpvK5F26GZ<0*awld=en~|WX&Gtj?klc59Yc-(oD~FobsdV3futSUNykc zDtWp)W4^dElPe)k!{>$vF%jmb^%Q6@yH76BBxKZh*i4lvsYq#IfXR zdp409;LFjUHJe0N93}pXqWHgZDdOMM#}H{)c498p(oA9@H1N=1xph*`2*fR;> zEs`nb|*nE6Pb|glXh*m2~ty zEP7){B+8Bkk%_V(`h#xfNS-Ek)ri7eC%AD@t`vxD1>zGIBPqu8gec|I?nG<>=aFz5 zi)?q@z>Dmv6VoEwH+39e?#WQ>$gUFDYz6j)i`>XQibg;@2d;}aitLL9kssL?=z4#0 zWDnPf!rXyy^!KK zAhVSq|9PRC2lt~95YL3`B98LlIfKa0gVl8DKN-(rVm5pwIKN0)mH^9Ho(;oeP&zk)-jkvdT>)km{nzBu? zg#Z-6bpsHm?1SB+^stvAuA<~fz60`*%hD*Dg1&4ul}J3;N<1Do&!y~W4Im5-h3g`Y zC>v`K`INnWX&Rz`x=9j+xu4<2DJvC-Yz1O7f=FU`9`mq{?Ehg4k-ZPDi!&bC@w$O0 zhOR_(a%9`4j-w~~vLo9@V6zq2hn?$2b^|71ApT9w$0=t5TNy-tWM^EG7TLSeBOwZN zx4?}@wxd8~D-a(#2a&yZ4?AaX!4_~%hTB+VN9YD#WM4lzEwZaGP8&yC^kql3tH5R} zuzx?>jqF$5MKodX0bCbxl(WwmM1EwCPen8lJtDG~!Hq|@yFg?s5D#}Csw2Sqoe5@` z{gX}X2oQZmR+Zo6&kD0I<0FX-`*499;9od0{Ra4Vc&-Vvuj$#xYK%#0D0XNm9iXd) zK`*#&_~KH^>INR+A0L%Qc*~2@2!AOyNtH`9*-A8a`2g#xVwc z*;1+$*lY#%gJ-#s-B$w$gWVGlM^ZZ5Ao3%7U@D@Icje57l-`0HkL+N9$W|b3>_AlN zxRINO*~#d|QwJZ;g9ndDz5)Ii)$oXfh6Qeb=Sx4)4e(8V=v~Bb?$LM99nV=(;4*J- zwZF0JfUUV&KEuaI`Z#tsp%Q%4&S!q2QvRdk;Qzo2rI@}!@`CSs>l@&^+SdW8SX~F? zQfhdIYRK0CQG)A$lcYDZ*kNvfSNT)d-P!|OVP=?WW3C<2>;3o>n3^zKj-CDu@M~!t z`UZHe{B$V~W>Q#1Jgd7d*^`Tl?att9ack+*oEzZ(VAAx(#cz3oo=Z#p(uXd?R`3p+ z*u_QeD0Xr20aQ)7xQM(;yX$g{YFXgoVzn9+-JY+qxPI_x9?)+*pnOet;fUOFa`7df z9?Q!Sq<2KNoLWN*J;c`9U1%)!)i_*%`2eNX_sB5FqbP0BU2cF!_hI&Szqy)c%nk7E z4v)<WRJ|ww6}VckObx z{zNY~z_+tnIXA%HJy;LNzaZAd49B_w{_UMOIqbQ8oFHW@NM9cbr1zsPAq}%L;o6UY zuX!uF0sany!Gu&+pyr>gLuz3-Ok<$$UvT5I`FH`vRzU5;pdG z2gY(n(qj(Y(xGyOUNOj6MXYPL^CV!zI#-BdD@1*95{MEo3(?dW%iSpYFJhfxkeb92 zq|H;19^fMlb9_te(nc~cqyf+LkMkPnAr=ciCtOHej z_sH797puza8a7(2)#URZ9b`w6i*V4nA`1X#!E$8%uA|BZ^CbjX@eWFz1Yd%plmyo= zLPGapcDmo(6KnRsSk8z9_NF^Ov{=!Zh_xSjOggfz5Te)$QG1;Lq6AEd4<-zL@4$mj z8H;lk{QUtMsYxtBI*aa}NJ4rm`nHgUxoc2VK&&fe3~Xf#=Nu0S9E_&=$eP0z#M%RH zideH&D&yXqIR07iC#UJ*@R3!04=sCbThWP`8dnKYwt{rUaX@+(>f$W;X1K0c zn?_>2#egs|6|s&=0#T_!gt;8txL8*UDz<{E2cwdFS7M!CYK!%kZIJi=krg>poOy@$ zhQVv7%L4L;wDfbw`vsV%<^!DSTu_ z_hGiaJx9W7?um6|zgW(Q1YSN>=S=NFbS7fG89iDOFzHh-M6ng3CLIf+1kABMm@ueB z(SH$ZZ-dk%mLTn(g7k-WD#5MO;P+8fK&)$J3~Xf#%a4Hs?m$y5)@j&+SZm;>h;^jZ zYC=OM66>1%V}Tc)oJ}{3L`T*P&+=heNAzPKSsMf?TS3}RA^oi_vcG~(gTICAiZv67 z^*aN?#8g21L-$j}K-`Yra2h-fZd|NI9p#!KSwU5Ebd&>1tXl-OSO+M$zF3hn#hD#> zFFk)5l^n4KC`u9Q+O0VT-f8fbzF1XW*RauI9UqBxVkA~}9kEVB|Gro+MyaK?FgQ&C zDJ)iWPtRxYn|oq?x=$=;L;}a1r0J?%h|WZ;-?s52V8mJ?M6ng3J~|3S37ALF)EUd| zDEcpAz1|=-i6uyv(d{Jq$Z8|)<0GZ(2Pi5a)>0V*TNy(e9z&SgRAw|6Y?qLZd(IDBN4H`1Srer&O}5u|Jd=~+ht>4Ew)!|Z-=U9mQc z#F{f8OiTsD)M_153&c-bDeCDo_zSpkv33+xYz5V-VNnh!v0ku=E!G+6Ds~zSCW|u{ z^Ip1t5|tdWR--6Ito>Ad_sH7D7puya8a5ECzJTy?DSc>x3kc7u{f%8fxS6ZvGnbIT z2~s{Ykz7PLpE;9U{-e}7lI!s;3i<*<+1usZfZa?hi<(7m|uk}C68}ut^ zER1Jw!B#MrO>C{7JBqFKUxunFYyH(~XYvn;`l+1-*801vLD6$i$)OaiKjjD>P!S#V zG`)9h#z@nDCw95o-x$3|akYGAKQcn^LF5X(yOGO(#8PXnXVZJ+n}*&Q7QKC_SkcR+ z)bNu44Vhk)fZmr>p+#@0MK9OW^p;Zq6us;Ty@LGa;I_BTfF zIIc#|zak^_o=&dNdl; zi(am$>8+#yD0AjOT=p|)}-ixpmT*oFxFLxB9_XJc;p|`Kv znN08YYG(m@2dhERTYAW0dha`o2UKd&J03ZbPH(l^-x$67aJ779TQWlLF60WmrR4G- zvGi99s%O(X<26I?T#Mc-saVm=rPQ!aHDr2G0($4ELW|z+7QI|g(_2LWkPETo3B5NQ z%F)=;r}s?mRnuF|8#MhXdiTXva4?$~z1&fZ-j1l6LT|C!nN083oAQTzQGniRH7L3e zOAgbUAH)M{W6`@mI!ULuliJ@Hy?-|+EcAR7GD7bU9^!6>` zk58w!v)bPnz3VonZt|JcWQ5)y$rXCvBA5S&rKh=`P45RU8G094^e&@fMK709!>d$7 zrWYlk_e@o2(L30pm+NVI$58+jz3d6S?+oN3w46}?>6dx;#TcV`T!JK?C!-2Gy28eC8E?VsTDHva^Fm)3~tYb;)(!@W50BubsH z{c}*1^0i<81pkVJ-khJ{uiq{99a@$IR@2QW(OMJoCM??>{Ut3k&Y%JFoiS`_;QSN( z&IjVVH0Bw5M6~{iNg(NWss2y!KQZ{s*K5HyI0@fWbZp@ZbC;s1z97T3pgUFBUJBOwrx(+>JLH7!{@yON*M79F)@qUPG$a9qY4!Vm`WKABl z{MPc(CY80>YTkq2X&oue^zXD57tvp3aY<$Io8DdAD~Z0Ys&<9?@oLgf@Lya{0SbfX z**FWndi{uc`Mg*qfjiZ`ic$-07%WCn+EgdMNxdndH|Hn#TkIT54!ur0$e!w?us`~< zrV_JAyF!A`R)W8GUj)C@$3V|#ZNh_0n(AUd!T)6^4bbF@V0rbB1c3LTXA5AMn}(tS zbKOdT&Q_pbx<8-~LsLE19jH+A%&{L_H^1YG+)6j_6nRHiJtqI^XNewDY_5BGBMzCZ z$W;QHt-xMh;VN=E8bOiQ!F3Twikxf^nJCL#cg?|RiY(WN!dy4FaYe2ch-?L7XM#v+ zek?SgBRdFNz}Z)cgHE8L-_FJ(+g>;DBHMq*w8*|rce^AXMOOaHa)HJg~}u0i6@R^nfoL;O4W80h|I6eUl0-cRt0 z4M3AF0Wz{e$1tn0>iNyeo91iz@0T=yg^(8K)zeFU0nQC49KDLx3Uo8oa%?x-7h zqI`6_SkO08@f~$wnkYX+(%7Ob5!h@6_ItftQQn6}KzzGOI%gV*rn^}Nk%_V(`iAba zNuDMS(ul%bZ@6($mI_3+0&!1*NYh=5zgPo0vg;do3pjs;+gM~@(+#}H4(ps2+1*pe zaV7e)Bilw`vlZBv?(0VO5Dg#<_D?_@MYf+o+5&L7V{bse5KXlxM_~)1JRWXiqAb@9JWhIYPx&5Z<+*t&=N2Q zm~w&5R$za#mn+IA(FlkiQc0IG-92IunJ5dQ%2Y(hXhdP|Ft~A1RtQA403*!gk zU*Nikqv>v_LF7lac`BmW=n>Q1bhz=z4i<=P1>$!-5!q$GBeM2%Hy=gT>|xICZst9h z?j}n!ce-mzha~zwyE5U+?6Imrf$8r3pQ-aOc#BQi+1jqvP9N#W24`$QNJjr=55PjKsP$fZTD?zT=)6Ijd1`r0#6A(vvaEL+V=RxOGM2mjn z;2;kkh8xd=YJtdBAb#G%hRFB56lc!j=3(|U^g{8aaOp=?s3(q`-zIwENO`7+CHldS zHZ`we3)C!u+ZZ*s>joY*%eGFVrW@T8luXTG=*y;Nq>P)b&i_5^afjKq8bBDdOh6n_ z^M3}BPtCks8lq=^Fw`u78>eQhKx8Wr4qH}crig~7SFEY5ZQ3Q@v7-c`$^1g&e)6W?Y=bNI+p}my%iWfozvac7b37iUZTdw|=BS5z7k%HA zYlc$uI9+q|i}~*4%&k(h8`Z4M9QX)db2-1oh?Z;Wxc%;r^+tTZp}kZ)=z#62CG2l! z{8pK~+Mjt6mbR%M?)^?>gZoiVPkhPn=lt4o=N0^J!TP%HOkb-36$c zlhp0cb^EBggQ(%r0MlC)45PiwIwNeA*$M4SGeaIy=pXL2XAuRdWzAm{zLwYhO8;|b z`^xU-WLxgO(*4rF`%+wG5V;Yn6wHWCjZ+<=*uuyo-H3TmMkON{bKZ?$8(}V zRvMgd^)ZV3I9>Yai5;ynL%DF66y6AEtp-%)2OL6CpbK;Zsy1R)DAd= zt_IbVQ7I!iOE>s-J1RjndN15yeb##d?M{A%!X7kEby8V-eib|2`S*L}{9%&@jif6z z14fFLFX_hGkN%3=aPX+YJtPpn6OnFk(3 zjtr{&wIwG=X|VDEE>OubTWjaJfpBf61C;DOYuZAFxv;%VhMSl4U&k-(E?d z%@jS4O05PA&JP$$XqeM#z^WZk4NiO14j4+}4!H6ix-xHUBsd3aY+bqEov1Ozp}Nv0 z`T}Z~Omx*g5gpY&(c_qoaYDxpyMSl~>PSuWOw+SZbhG51L3B8tM#|Uw*h>FBbpM9H zqDRx{9<1rEt~9mZqPZj~IaFvlq?&FT=YZ;OZzsCxFtF*~<}gsbD-HuZOVeQhb9Q*| zY}%6fpT2NahSvN~+y8C;e|8!-owRTw%&hTbn85B}vox522|?w?<1+cRQA}rg&P6h2 zTFCaUvfZ96P4_QRAX-k?h(_1)x^;wrsBkorNKUQYme%MyWu#Mp>L2g0*x8I3$o2f>DvP!+b+{Yaqzl7Afp{I&W zYo6&TaMxVWU4`s*)F};=9lk^&djXCp5A3B{Z4D%frht5PM5&d%>o8#tN3_?#FU@?T zCh-9@layvUD{MTiln$f+qG*?@J=sO59!0wdFXd01CA!O=Tjels0l1AyAK`NC(82)C{H+SWx`pq1Dz=Ak3LU-bQp|+>jJ&}Ts`59 zHdy=#?={+!fTgX*66RXMjh`Yf5^!tKquDNb1Pxy@2s@f}0+_7;K6iU7nlGXSfIbb^1sX+j8-vA<=Iyj6A)04sEMe|M zxbbMN5O8b-+zk6EFETK>)Wc|(P$X4KLp@pr`@^dFEXHL-{P4CZu>jI4wc)P*k z=S(gcOLL7S%x(CLDT?Pzy?|pY;D$!vRDLYuwqf=ebV0ctTZ-BF~mx`h5~yca$C-gLQ3hLTs~p8XbKpI0Bh-XzLMX`(19Y14*5QAtYc7*Ayn(bz+XM3(x^ zjHQJZl(Lj8G0BoGY0>|jbI-lcz4y8InbGIdoacGo=ic)@-*fJ{=RV8(ZslNx`?IuZ z0u9|!M`5wuu?#+OV7Z0511v$hfHtG<*v;TjGPw7SrG&WUON1raTt|D9XWpYt6QsrF z`X?Ork zUix_yw#yfReYn6G3Tf#tvPpX7htSwB9mZN-c|)FUd1VqPaeL*DCQc>_s3YAg4cTy% zZ1@NDmEl3Eom3qpPjdhby)s&1vAuGg8_Rd0S3dK2r7?p;$>5p;I9$MVf@j%`fpnkn z&Pe<7hv-V*$8r%SL@L zt)o4W|7bHl|H-p0x2=Ny-EQjwBsv1PH+7`D4S&=f;}s<{bJ$Uu+fI_IA^$mmhHhJ? zu-I<<5Eyn~S^X&zBJv+?M)O~528WWt-F&2QTh$W<)djfLgg>~}v~t`?>@`RYrq1mg z2OjA{AIO2!PM!wwNt>}A$&zPV9%-$fEVE~%kAWWt3(Ge!3#vqK&qkwUqi?ULdE`E7 zL7{U8ZJIzsk2F!;*#?n?|3DP;V8TCjWgG0&SwjDw9`vil{0?AL16#SbYt+doZ zo^7%Dqk8blW^*ps=3w(5X@O!hp8=y}z^wqVn%@Qg#OB+vY;I9lY&ILXv0Nju1nB`D zHhVERlnm~H!->tE)I!GQH?&6}H_~P-o3F~VEjH&i@@0!5Fqj-{j-Zb8Y|)1&kaG01^&Y^2g$y|8G zEV6u@g8c=lTd7+!Ph@ez&+a%L62@C}hIGmc^86tAIBmu{;-4D~8QcbE3lK*^yESf+=r|k7UCw7e+%X8EnrSN&Q8Fk7S28WWt zy?Q8x_%(3FFsv@Gq&*7p9<*tKv=T-OdA7yo8^`%V{4La6{@UaH6^#jctR}wbX?b z&Nvv7UEZQgwkaWduQIBi*OA#EwNN8iT}y%6!8pxk^&Ag>`of>ypNJ#k+HeDSZp`Sb z2(Ar7UsF)nOA^^v>e|0s;*g~28_|7ytf+mBp3YfAJ+(n$^%T9@(hIM)yzmR%a;ZTr z@R#qw`%@>vs+4bBckBZL`p4DSpBT`EQ)j@Z@P&A@K>)pQUxqfpfOqIL@x>}_%Wk_0 zKB033-%sJELF!R)l6iHZV;?XHatK{m@7QMv^;=c677FDd)Cveu?3fCTuw{0lbS7Q{ zKXeveGwQFd8TH3&Mkk54@SYI{f?5Repd=_r&ZJEr<$mgpa#9g(Mn};c z28WWtH4MQCuXe+>K`M{ButyQyvuR#Bu6pK_w+{xt1&M}qo}3!$%2q-0VA?dTv)u3< zTw|0`tzWwPsevz<9Rp*;;f9B)Bi#+fY$-~%^z=hCHw=@igJeJ2G=YY0*s8GDZg>bB z|RAv>A27d?_+Z- zJTK_5peuExv$>D~qh!G4bu>2XOVvR#%K@dV4*G zgP(ez`hOHfWbOpNPNff|UvHMD1<8@LY0_o+^#Xae<<}Mf#O>Eb;Bg0+8Pt(J*w!(1 zD4DujYAWi2)SCC$o*?-SZJIzszn-A5*nW&86FxrgzbrXX_$>6rspwzYT zU4$jsTuFPBx|Y$V3DRQoVR^R2=C_CY*qjP6>#*Qr>PTmED+5N!fSUneRn<0>s)J<8 z0W@TDqrzgdS<{W>{dbTMV)HH9jIvqI;7~HS*#|3dVw8M^ZG+S%>cUD>G)f*yIqJp> zM5_*tR&bg71Nfo_7y#AC$s&C$oZ* zSs7Pdu@a=ZO4UKKg9B*jvPKGv?Xqj#SpFco$YtfU8Fkri28WWtZB8g~!et8t`A<2> z&k_$5i4v*{Jf{V2xRuV6Zn#di3X+3pGj`;hBhR+n@GLxd>vqE}5XX*@v%8F=Rn0H> z8$dX(qGU_|sHQ9pQtwj>8scx!rU^83!y^id?S{X>K@Kbf(5S=ZvP~EVi=- zxUrlqu>|Q>v>A0)JqCx8!99DBaMp$_;jA~FS5tl0F*v=$A2GcfZu)o`x#q<5Z_rv=FeY11^?^3F~2Y|A_S0HS*+^@qTAgl{wINY7{unE;eb!2BwjclIu2 zdxGRn+BAWN-nm#|vAy#hM70CUW7HjGwEJl@>Yc_64kd%D4d8HopcazNU2iLpJ807c zX|cINo^7$2mFZ)%rQ3qrs3V^gt6?Z;1J!4x$QD35gRZG7I13Nyn6a6KV`n*O6iv$yzIz z(sw5^&}AP{pVDRTNDV=932nx@>^^z6<+8qj#ytS$K{z^S>OvjqE^E)Mpk!8_`B$+5 z@6Slp@cxVgXy~%;3XAQsW8GLvLYFP}xGaysp=5Bi035J6@J;l$WV0vjQ4Z})o3U)3 zB+s_k%&g;Ma~Oo9gUu~(aL}olIiCTeWWc@mYiur{76kM$+BAWNY*tlRY&L&B#EIo% zi3NV2oHnBapcjKf$>84Jr@)B;&;+>&QjIi<%mGkV3kQJpwA+Ry)M^b1SMpy>A4qRK zBToyGb7|8g!Ae(S<=K|Et^y$L*#80|(c!He>PV0M{!9o;Cgl0OijW}n@9S(&kocb6v$s_(*$X;`GGv! zV)IaV6w%G*3lND8HgBhnbT$hZFiHm8caO$qzEm9~J34@dY#ywz*lf0NW7)MBDIhj? z&}Nj)F$@kRgDd$*ffKQxiKv294T%#dGGl+$!H(oV7BvQ`8%VL8{FlI5B%^Bh)MbCX z5Ad0I1Ft=`koN)Rz=`rcz#wq)@#0guh+a6g7(Rvj0P{g$k8rggH$m;*SIPTuGofxC z-v=nhPlQFA@zWsnsW{1)n6f$!f?`hH2N*<1;b*j{wNNMzk*Y${DDDG5OSlhk6TN~_ zg4;`B8w>oWgiH!4o}Yh=j)}+kuYv9D7q1mB8m+G;3e3Elv9Wlu;4IqCN-Veqk7Xyu zlgvuY6*Ad?Iuomf8r6k2a7B@!Z7&=h_V*-hLwg~U{Xr+bJkxl2;yySu2B<>Z7ci93 zbeedJVHj-hs0H7X4if)?PlmuIeCuL)UYqam)vH8xMm3F^2~;;EB&zJh)8pWL`2KA; z#IIWJ+YKYQh+ct#cWh=rFy_#{S`c!8=h>q5!8e)~()g)da7SEF7ZORq-d zgzwE29Ry!)mO1r@Ob-($)bM3P%uO-q08U0>ki+OuGP+B2bOsY=DqS`cPrxTJx&#xg zSr#u{$G)u`!f& zp=4bj{N`ijE==x55MheH=LVXH4%$8rS8+0x=~41eRWBd$7y%UUQNS2cGRBj1j0PV` zn5P8y5kBCP3ZrBU>q5!8-rA}0p__HQ*Q_4#s-SN$Ya**c$*S^oRfbuoD_yo(JK>WG z&6>fwP_nM?er-Y%`%eYnROvNi5IhdyZVZB2_)6q-oRTx|xSb|up0|uh=G9Yy}8;X(*-TRB?KZDe-l`fmq=MSm`sdHEtO4c#xwg_3nG`B}uu!fSo8a?|y8 ztUzi=&4%;g-E(~UD0L@oXB|CW9D`?&`oVEg5$4meUMt*jcog<+rJd|r+iL?p)j;R^ zjsq<{>Gvn_LX7>;A#lBr?MEr?|H&6Zk1Abu2+fGsCDQK_)`gOFbkJ4pR5ya~fRIFfKC|TDzx-Q+r^Y{DA zIwf8e^bH$(gN=fF4s4@323eSJl; z`3Oj#;>O!Wdg?Tq{|2ED2@uM@zYeG7nNzbV`_|UG(24D~&qwUnKtqhNU>y*{LcwK_na@K{Cb!F?ibhF0n^_g{4yejA$%-YGSP_nA0%YA0usdU+9 zy#@xyP$E2E@uISTeqM4DL=QYbTrXPHZ?EnPh4c3KINJpl z#@GSCfwK(g*SZ0F!w){rdMRBtXLrZz5}egwT_~Be>bfpH6t4NlXV$6ls)SittO_No zdiZ;vS(B75+pG`3;1~*pS@l>KO4fC%u1j}u>aSrG3Jod>h1GPPD-=}d=ybK)?V~Fz z-ULBcLpA{=n=o>lkFJZAE}O0eKxBnd{oqrhbO3L&+t$(yvuZWMlqXKx@;<52a+nJB9C>UWL-PHX+oEgRlFN?yfB35 zXc~?qxX22>W#G6Nc>G^J8XCnz6Ex&AG?WZ2AD}5!1`VexT{aCRKv0D=^kQ8oS=V=8 z$IlyP_nK+H*01Y0siJy zKhr8*#N|z2*clzk+2|kN4LC{sqCZJ>!TIePibRD5|*>wE|M8@b6mDYULg_3o> z_oYUc9tBMyQMl`XnenQGSqoVeN>+8buF5d0z0zfybxOQ0Vb&7Xg_3ps@`cB&p1=6a zS`OUCFeuC_VO1zu)nr|jVb(CE%QkCZye?tZ3f6^^bseGW(!Dj|XP;Ra@v4Mb>sS>^ zR<+=BjX}e#yOl26thqS3z;|TEUW(tux=^yN_PQ=(%vSGbPf991>gOf5^u_Z^VIDW{ z=VaBy?}UVJyi0x$(46z$6V%k4_p)l?`}*$lZxrV@)aS`8ykvayad2NAZ{FiS)fV4| zyXJZLRqyxVk9IV?*;=;4=er&dKrws@-)&_+Q8J%9H~D<`snTWpZYOv(MwbZ5a@K{C zbxqNA={`wy?gKuVR5k1%sS;%DW?d***Uh>v-K;I!eP+#$S0&8KfbV>ws|+AnRUKWGF+P7+x@@zW z#_JM3uEDxcvaaG!H3|(M54oJir?HI4N>uw6-gusBl&ov8uFIgVNpA;rbQN>y*Db}ja<+qh zoSe-1!N9RT54}lh=OK{Sdb)jTk-F031C|LqY+Ff%z z6t7CSI)_!EWL4jP;xp?*rOP(!^mtvutk$dxCF>fe>oQ#3{xYAd+kvZbswuw*IDr*- z$M#Nt&)eoB<}QfX7#|2?+A~;`40iR$K4KOrT{bbz;&lmP@>my2)^(Mx%OK{YONp34 z;rsw;1HVqaX~}^V@HOitu$$cTI=zFB-#{IcQNHX+T^ZA|C!=)#&d25@5bG7Pna>uY zWD9Tm$j9bjrORgXSFA`XDwcY&E|je6P+gZkdd5N4b&sAq<5h_u>CdWAva0#(d}hs5 zx@@x=$LkV7GL&_pWL;k?*- zVO=O$*I-?j5&KOp@g;@#zJUBMZi0=0+CpUnqxnx4Q*)?z^?PXUb4$dz#-$x9Su>{{ zp)1g7Zwi^o9Zmfpq${L-B2$5qsknTNkM{OTmreT~h_e`7g7z7#3nlCNWwoYDH>>AX zpIHyYs}j*Pn^mD?Rg-m9Ml~@^>9Wl_Enb%}YYyu|$-0ivbs6EXIiJD-ZhdLtkl6US zEX4YF9y)l+(GDIuNc)~~N`2+y?`jx3F|HE)6|+q!*`{+p)Ldooce2uD^H()qm*8(c z>q5!8Hh!S#(!-+N7N1$g5Sta6wUAYzWK|<|Rfbs?D_yo(XT|FhW-Vb|C|OsAu1h!T z>dij0K7-h-(5ww@PEsFzXhj%QkCtye?tZ3f6^^b)Bs1GNS$0uD;w^_^HaB zWA)T#G+!v1S1NZ-5$8H`=k$7@AoGs8x*DDQA0dsqGw4VN>vg0jH~EOURDvxU4SlGeJoscHg3w<_%78Bn zrmH6)8St9-@Qoi<{TQ_%p!d_J2{e2iX^z5T6SoBdm7HW^IbUK4(r3|T^mU{f3=SoO zYXRVZ&Ca*!Y@S7X1hNHfnjq!NU2M`J@@$LEOE>!1%yC=r-UOS?EC!5{0Z)8aWAh$r zK|p8FrU^7;v$Mitv-v8NEeUQv4Qk_s>UP3FoT-Dt7cCh`&a@QL`EHh&36&ya8^`-3X)6VQd%b z^L@mne!En?T-uP$M9F6EE7N?C=>P=ZuQ&`%^&2(w4nQPd%UPfREAKGimTtfgQ|~6= zAU&0iE=MB0KQG;wtwG7wGzV*72%L|t$!U2-u%9}EdLw5+RympW$R6{z-#Y+lD$9!W zvVW*@GykZ{2m#m#_UM`(Fy1|>H^_aSdL(=Elw)$(6qIbrz)~VX!O4S1Qi!Y#nTQ%_e6lh=qzuI38aQJD9yn!F*WxkY^S2guEehlAFK180Se%Lff zZpDL>N^z`(qdfx}R>9vw)qO`st%H7Epnk9gMkXF^vJRi1S%RLa+A$w~6$p4J>e&Tf z^Q^TSe_Z49G!_IsR6)=KZw<9R9wRN$Pjx53i-7M$$n5NtBk)!-J00Zc!^%!)e-s%4 zJlKap8gOK%7Y8F_=3rNYpgqSEN{**~%e3rtJvFwCx`K{YGCLij0IMOvfZv6|;sCsV zP!w>G{(+9hXQw>21|?fFdnt^LAn`1=*0R%s)SJvsMYIcyZ@GUzM>9VAZ1M*b1M3O^1KRn=MAi2r2(+W4PF{9D*Wd0UQn@y6VA zU>o21nS2k__nCJD;%hexRSR=aUr)*-@h>1%a!@yO^kEI^;j1H&BgY7g9>*B@>?$P1 zGpPHs8&I+v3g6TQ^;~Lf8#RrNR&r3EsQ{};V!+3`0XKF44$^h$X#Aia%GRJ{Yu)7cnCo)GsQ4$`uT70StF<$?*X7D+hHU?Kuba7zT}!LAOQFL81pXO7sV9 z=Ab!?IxE8uv^xDnI$DZL>~Q9;nOC(|-hq{QZA&v}8Fl*Zenf)Nhc#$&S4BL-G59|y zZybZ>N$T@`>@!-YPh>MuvY9UsCWT0-lV;V8R4KAs{krjFu;dDi~%@+ z`V|0!bPw7iN7!}x90rY&L01RRa9=cW)H|R6zFz_x`)9-@_;HZ940XFJ2Fh4sLB<`S(d%?$YBpU^JkpMGDouz^4CcxmJ3Ws%kLEeD+!4^80?1Q$C zs7V#}mm|SGb!}=5?Ul6$x4uK0=0ytYYD%#@TSTP#`MMhK`y%oc7?qA>aT#@_Uz;js zpQ2=+wp^rTh!dphAbFGnXm~Yc-+K~^9ei!vSUwnmgwR*zl+b4MYRY^DhmyhF_lg21 z7I;&zE&M(ObpeC|MdnxK++2c-JMrVs*THuA6tE8;b?6VFIHWhUPGAVh7!e8NB0L_s zD$|;d`l|^u+t+gRVP*UC-<71PYuTJUk6h_=;A_1Q7fo={Y`>7{LdkRud0EjFq{dQX zyF?mDNBu?_+5T_^Sb3QNkAmdmh`59UaFG7>GBhK;L|Veupk!<2ETnAzGPWkC31>Y< zy~zc`J+v38Eu1CN)mlp{+b<}KxCWvGLM`|H4jz$)T+@IL`*!2!6218|W3{Sq`IzSP^q z)}Ul-9$r9$|5a?Qm3mK7Z?e?8pY|d(l5_A6*IHVG|D|OS*YMaX#X`sZ)KrjLk9s5r zg{9tBHU%Y{vhMlF;NN^Pk|NDmOM4MB!ofdN0aUJFfQ{n--c0=pfI)f~?Kw-mat4i( zLDvV+IQXBT$KkT@NB**U!XNSDG%(PQ!tN5@daFK?6D0oZF3-}^!B=>2Qt5xGw-!)8 z(RvG1+@(G;$Msm!Vh@3VLU$#{b*`fiYh2#|DaJjn?=5u>ldtp9de6At$(}&Tp1A8- zZCpP|jcuc5($Pwe>vI%f6-+#?cfg2ujO!c+;2?bz9gQE?yV)9)Y|T6KX=NN1HN;DkTuPK1a6%4T8e=&(?9`!57^ek9P*1HFFAtb73mmNU*|AjlnnTqC$%7%C{+i^(X?qsa~LFNC@eN{XS%VRD6s_T z`m`AhlGY3kC4*b{gcc;mLqPYRtty9-mZ( zA8>K=5v=46qNAk?;b?d<$$O1>eO|N=tH8*9H9|bk*B?NVa~M03`g|X8MHdeFY$i%J zGv_hQ2j@Bf1<7V~)Nhn=)nMx)30QfD0iWmwy!Lz~!2}$n-=L$*kx1_~;$CbGO15S| zF*)rPY)wuRR}Dr`Z{#d+QeWC5d-R#vSzxr#T3Q9hO|M8x)dd|u3o( zIw^a@g+qTf1tpvEz&tB)1gR&fsWjt$+KZSG78pGhK;;SsxCnBe7hpRLApHI@?U5tw zYs5ntG)e~j&7;Ks-j2w>cX_Z6`wS8r)LGi{pac*8x8*@V{m61sT`iyoMTUX@VDXX? z5`W^8o>~*v6W7yKi_~fqldY60f0h$}cqFSY{`!dV6Q5@;Xepn`5`C?}i(f&i6os#^ zRMBKg?5pH8%3q%s*DHaH73V?21U}Ls^Neu?`(#1ckcwzC59*Q3nOotYdVEDMhPu7v8z#db zk$a*rEQSg=$WU^S-8xqr8KnFoSYpU0n66a%?5M92uTK<2V^|+b)|Ui*+jqbdsNkmK z&P6vNanem9!_>s%k?G)%4&)jCbTE)SAZUd9zjV4er--C;t$cv2%8L;;<@ya0uVk|r zodIQL4kV-Ns8ch)s%mN?TZ@vdJ@#Q@m%0d2EgX=7Wc>>4npp$@q(j!cAR#M8I&v{FE?*?Lo=*bbE+W(ok%zO$oiIHHwq1-^K^?=EU8&6rGk5i`Omp@Rabd_f~Q z$Xy3Drx#!o4PcNyn)aMi!W;&Tl0mPXL;RPYjr{BR4F^uqE&tscZ_h(O!PSPO}dxN?dU`K6ckfJ$BazAG z@sf#JbpM0b3MQAehjQc>+BBc{Oduy5T%|w&jMA^L=i35z@88 z^u1l#bd`t~vZW~5();gImIkSn)Pmw=8Eu+CLpStSSZp^mcVoFuVhPfNXfx`DB@7NF zgZt-REfwk0eg9{CT)YYMfG5L*(|rl6LdmLT>Z*)uAET5m+ty3tb&08d1?xh|x{gO( zL89%2=pPv*&1jFfKb|&C?ya$Upfk1=fv8{mI3FH7cFzqjLsE7G$!pY+K33N;V3Z8_ z`g^n>nIcsO$+5I)0u6(tt-@jxhjpz3%PA5|kUo|+qd~HX!J%Yu>+jZr#7LwML81hb z%vVUMV4qv;xc2cpE~{bvgJQCvR*i9W?V|u3cl(*bab|Hgl8%ZL4`&G1hPIA zQmf&IL1KR{sw`=(Em41@L#6G*;TFF>eN%J+v$?)Hg}xu-52St(O+|Fn7#CxN#>x!v zu6Ao{fCrG0tjx^=ryEQ_jsd=}6%ybY;2ALU(2XRJ?6{W#<+vbKMlB6PUZO*l8Q_Bz zP8DyAa}nfw2hJWgPWb(HIutX&Yp?|<*@B<%qyb)?n#xIY_h}q=LGowXti%9+SGKVR zc%69>2k=1p{;8M&KAO7I2Y42PN6FxG5WG3S(-KCIZ0Ud=4)8x8mADk)jO+3^T$@{p z@PGmSF>OW%cs&M+l7UVyB9@D>MWPt;x;X@9;PFXi_<=Uf-9Sf6XT#BO=;394cSbTY-aHt+HhDzjcubIp`(7IjO)?) z3b67K4~jKUI02vS034)GrlZS|NblU&n5{v{)_hz@PTP?qohI_t7q~B+1q;B{v`6+- zcs=?tt)*~{dVA;lha;}xXxs@Ck#`#GMm>^)!ix_%Yzj&?AFT@M_l3gZoQiYP7gl}_IWeSvrz z%utRTaVK@8C+ha>N|fx%>C?2taJf_+B)d6)hAW-!3X2_c2VhchV9AhJg7jZ$q#&A{ z^B5dT2KVDs1x{37Z(!RX^$K+%C{imH{i?(~-_Ih}o8u$#VhKF@_)55r&S#7$8Dl5F zs0OgHj&7=S*(Ch}Gn^-Lpf2bfewU&b>q5!8KA%G4ZqZqKbUj6T6kQL|W^8obEYB8c zPF?dl07J=|fjEm?AiOK$J$?XE( zHg1H~Ml3<98bPw6Rjsc_LAp5p6yZ>ry2Nx=hmIOm>pv&siJq!;ma)EGL#Jx3g~QeQ z`jGn~4(A!XV6KzoTd6}=`CY)=qGWD!Zr2=tt_>wf=ENCdtgpYnSK?H`z&O{##ODZx z4ULf_4QG%pqeC&}_ZYSSC0lUqBpPeesi`c#$I>2!@U^sQhOl#e-BGp?4p8gs;2vq1 zeWUweX;?HB1-ZLU66S?f#Y6^=lEJ?`QA*_ycp84yL2pKns!=3yqaoC7)!swub4| zkXWp|%;EnJOfQb`|MUba{ME(q*-Sr5roV84HcaPIOT&;tI^@YW#xOlw;Z#w>IQzPB zHn(xY^Ivo*W|+=l3sABJ%WtJ&y0sC72Kfx$f2Tc)_2sl_#=3KuJ}TQ-!}R-E5eM*a znEgP^aOg(e>CMREXIAcN`8j+Dz{3$MQbTsqgKf!cSc;p(fAO|-(;z4 z(m0uVv{uO_Yzj&?Q?{^(&K2)xk_Ha zpiwgDrU*Jnbi_u!RdQqe5U&67Iohms2py{YthMD>Qe(_oVwJpgnp!2lfhYM_$$RkQ zAaRd6OT#k(5B|4R@`cn7rVDG8oR2?cA0&#jg+07~N_&*FZ=g*(X&bBLZt`pqh-w{k z#vQ&uJo#?tkgHA|>4|zByAmb4@~WG)#IPP0|6(1pk~U4C;X0;?!eYnV3ou(chW|L~ zj@B{P(PlI`Z(?vL8Qi-!QJif)8ex^RH&gR+I%-VnuhJpUq;4)E3hmZ{ZMBG4IU~Y0 zC%7+WJ1uNY9csn7s!q1DVJO+K9iuhY|7{>x=a9t5f_Km%k0C~N@|eP@Ji$26cH^8) zU28al^sRI#raCES3sABJCxZnL=pCr3Ttu{@Jqq-bY151!XLXVx+Xx4!MMU28hyysS z-2nB0H}Ae&AIa2%ekX%R$>2whiX`2!)Q+HEOPeP2usX?6xD?@x>wB0Jy||8)xPtT{ zv>6=$yBR1-2Kvs8Do(^@qLxj-ydc#Ch4Uue%1L7B4!(K%C_Kq?5wj3Kg!|uoj+PFu zqeGQX&u5D+jPy*4iWB(*bJ%9lQDfNdKN5j@qTL*}AJeH?Yironof?T69u7SM=dhhb z9csft4cm-^`PLgqc1Nollskgd`8Jdw*(%NuW7z&UMdDOZ#5kA0bnZx?pVdQ-G@L>D zeL55~Y-_LuDA|G=uBTyJL`~(ey_NRF{6w2(>^q0;1+tAbZ0~|6maR&bhsTbhnBlSK z2w`5h_RnJQC>i|Xg2=Efqjm)Sb=owchr@QP!lejjTvx{78X$26>C0#{I&AAPP?QX` z4gw7lCt!;NRte@1NaFFxqT=tv@uFhG>T+JK86>3pY{q~3}IL5}n^zDeT z(bT7BQPGgiM9F5JaGf?BS~~y*$>S?9%2-rvfZQcwNBM{We^TfK{B8;{@bK0k%#cuVPWrpL#2!191I=_9E4|^SR#>wU)v)YEdy_qO{b$LiQKT z=iW(V{b9=9aG>O{DJa>LJFkfhln1G)G^2?2B4&h(ip~n4as>~U{&4_L(*OqP6KK!5 zsA$cgQ8MU_BZ>c=hk}j1S?d%0Fi3pJ=V-Im8+54hvsR(#!kD$hqM~S=T2u_ell+T{ zr|@HVe@>mH;W-%({9V8bqIg|U;lO>MJl2Jhb$vXXf?!9sq{7UcpWyLG=3Gig zV=`wqh+S~hea>Dd@6Mi}2Ij}(BkXYsngW%DU=PU3$p!=9U5Rr^vzdTY0g=z(fGX-4=nqg@M1Vd-otr>| z^b|T8pDBB>6)4$?X2Ob2*g8=RphTuTT^K+If@EXbi=-H5rrejQ+-iRT@;SFe9KwmH zwz9KmapVn&=cq@rH_Vj%*%Xv)%7CF-Y>V3o*J)sald@VncoxA8;xw&5Ugv1+SwT@gNUmklW!UW@R2A#nq0MS($Q%giQU z5*rCGiOmPiL|hSV!b@UVF)xXoGS(LsXF=8DVLi-p1xzYRCbicPEfOLxiM3JsY%i~e zq9sP3$aG^^A4=9&J~(_yY+oJp2=Zg5yYKLLB;Bo{qcQ1@UlKz`!L#!morrQoy(ISK z%@H;^nJj}kKw3xr@k?TzsZ%qbsKhsstwqV!?iobvGNd{VNI`N}ZM4>Jm+_L=vkJ0u z2tz)?1Ni~!-h>>aC(+UP6gY$JLCN-#85tqc}Z;9HcHlG zjGxEC9z8$p-h7lV9`bMX(jDf$VrCO1v)Sh=Ed-1TuY=NMyY?q2Ks>HRT_W$zXI&^+ z*UtWNzi|J`cf`eboeK{QC*A0yp?5qqjLpJeAwxsS(0T$iHJ=(Zv{kxn8vcUmzd{<8 zur8FWYx|X&E*y1g?tbZ8$J|Y?y1aaixVDFn6C8bmSf${Xc#Kz|^@YH}aEALz%mwk7 z1wSQ>86{)R)iE3V)K|J}ezswa;{O605hg2G7fRN(vY)7NzCM`V$4`Dlk{(a$IvyXN zfIs022lGbqnoYmutQhV44KO;XY$Eu*5^=S*z{lHh@wN!w*0C)p*_Qo%HD4RNeXDfY zye)--qe9*`u`ZOX>n>fF9uB*&^O<#dyeeVVR#t_QRh_7-GR&&uHEY+HN|;s7x=^yN zH~VN5>Si71HS3;uRl=;DtO_No>ZYqQ%*s`|Y;Tfa z6h1M5A(ae-BV;glPD;e95@uzw zDwM41vCB0E4YQ^zUA9?|LA??~p)ji+>q5!8a&=us&fdG3G7P>w7iJihmGx7T>+sac zr7+vCfMR#lfddC1n_+sdiSL*@+oa}Fn=)foq~9C%oIg^)u@hcglQV^iyb!*4L%nn( zz=i2)a><_YhZiMY33u}fr!EA0chrW(8*bpgqQqUs2}|G@FY=~Ngl#yr1OyBK+*|1hp99i=e8bW4$UOs3Ch5C42SCUSc%9`O zrO%F{hoLm8Fp3(pK9sEQ*UMnxR}ECa`l0H9Hc-Dtza3=9zi@n#`NbYVaswTuZ)*r2 z=ht7(;e}rbk{6_&c64Gb{JtF)VUt%;Q=#IK)=_`F@as;UnqRe{7JfNwElRew3RnyN zWk`oQAO*?&`_WpzUB<$1p@OU&!jQK>5#oaUD0Oc_4$?E|X#BT>v}SuyvOO&>1$*H4 z@36J@?I3NaH~F<1O=&OkwHnTaUxwDwx=YY;Xv8}-T!P#K*N3J?)>SX=LpsUc@Y+{< zHU%Y{GNh*#_&COc)Q!|snlYI6B4&gOzeWn6@&yAN9tSX~0SwXy_99&8w}a#{Xp{{4 zQJIK_D85#I^uUz}lzFhth zmO_esd1wWk4v7=R_JsFqLl$5Xom|#MPsUlS3cog_(Z@0=@5H2>3U{IJbg>6WJDCD7XaR^0BQa%E+?Bue1GbsyIo=a3y`uk$#>EYg3 z3G?DaW*Q|k{YqCYJdEYe9Hq;4dxv;kA}7vZT_{;sC!wn`ym1I*;{W6oYtkV5c$OW1 zts{nd=nQ$78GfaYnYmEkc}7vl%xp%BlF`oT;$vol(q%K#I$oDxW)AB@$-0{Ay7bk_ zJ^g%UZGcj#LbHll6-riBdZEv(XOu46tn1@-3A5(2E|jdRr>;w1w5IB>je1r*Epg7D zZ6G4VYlF?S?IX4AGkeEfo%FeSP#!ySfteE@YEYvdIHF`{>P6x@>xn zkJlyWUBbFhvaVeh#9jGbvYKe-sfM)1?odORw;mwF2tB3J1?RR)vyPP0>{uW(`-mY_kT%>k?*dVqGX% zS3O;qZq{v=`^>5muL@`F!eA?_LdmLLIA3GXFzX(r%Qou~sL*046lRsPE|je699@@g z)_fS$?n`-X;#CQ=cCspztm@NFKC|9dx@@yP9assocC#*&tZTTg%Sd%Ot7sf*YcDl0 z^z)K6=)6)W2P%IZZ~e+>s*AfQ_oO(#znK$$$KTX@E}a1~`Azqhu$F6HI{L72bzy=| z)V&x}ZFb_#vUJ9d#(3t=XT_N%^31y9;H!$W68m5u&zucsDhqW7FTc#^;9*c<#>A3v za0dLe9er~VNGAQS^L!5eLg}&{oQT&Y; zcc25>0hxVP(XZxqhbJ^M@3;{DVs`_eJCMm``7JYm_ROizK}==d@g)3}OX?X|O)j6h z69lb+mQURcn^b}q(I!0FlE|F3sVbZnB&zJdnzy@}3d*@{;W#s3e7Zq2Q8Fy7eZ_o+V}$^N*7GuX!%`8s7hp0tr${>Z@!v z7_AnZP``Vgbo-wIs$zqI?uWuI0(9YaB+djHq#vTA@e9j(Yz0cT;@l2oMIUTUbc%&# z7wSzeEZfmuWJQ)at2sCwh89KwEPIa78i_UK5c!34eR@QELGcpgo~TSLT1@@$ihotP zvNBvwHe>@(vH`cBLqm=s+)J$_?rF3a!98J|e8#Y&f~A;eSPw((DKmf$>og4(JpW63 z&P8NnhKiD*Zfs9n@B9I|o&%hz0THCWz=PIkD3VX79fNA<>9ki>Tkq3pgqGf=!N=Jq zQ-fl35OgOWxy_o2V;F`xJTXUK`%C+BwJ7W*ugXI>z+p{^V*3&M=#EaJ-crgG^w1_Q znJ{ZKrDM3Aome71Pb>tP*&|W23#Q|&WN(m=cW!D1JBfS6ImtZwQ2b0~`P{uQJqnR{jcJ*Ct!OH4V(yu69QHki`pF8giNKegxD)%E1^odv zL%&Bq6vL;=4?t0n%E#lDD}rPjI$CjJs_X34NKD;eVzLSg9`7xn7LAPel5L2`9Pi-` z2@bQIFw6?tQJ58CGt;~vHH!MGY+^c50ae3;f!+(%Wd!IE4xmB03LTA4Os&}plss6T zOOqAvd?&3CiD?n;3+KS4qNivtGQd@0!Y~1kPS6@ziRqng5noU+1-VP1(v%s1`r*XX zf;uC2go&v=8-S7x*nSomP(+am5cYnn(>rsRQ+7PSZs)F-^q}DKXVoZM}(!NK}dG$8S&>jy^LniP0J+ zCft`xyQ0Ehe8CL&=QQX-m$fCK<*8 z<#(ma_S~KEx^HccrgYg{=fvw0Tn}YkC|Or4U6;Z29+)}cB92*1C#n%I7_EZermq1vrzSky zTza98n;Dl@f|~-yi<0q9Y3<`?xYA{F(--+XP`Ba>Ec^a+( zo8;)CsklkgaCa3U29+lO*Ap*qk%_~cwjadfk!gD}9j$oU zzQWn7F>TMeAmTlq4L^r6GBO+1B+Z^_dm__|lIeZpbZ}*m_;_=~ydbp{4^FD=w0)fd zs$9=N(=MR>sdE!(knT)JjcOxyduRL+5E`xn}aOn++H#z2BO zbGg>YnzrlYMSMZQ7vv7PMEas=G4;dK_BiUynzm=N0VvskmS{i`MK(YN2hw7mvD zq-lGQYU`c039Xv8PooCKIQ)zB^@JF$;k1qWa*h`E5~cDGrHDex6x&zfv>hZq`y9={ zp3QMxipL}4`guB9@wlGs?9~|8B^{;HU|j%N?Yu?}dAPKM`ZqGJTaadRxTtcxn7xFO zz4UcU^3tBqBIX6DZFsQK$dM1anq&P|{}`UW~0Kd$Gq6)4$?`ofA< z$_g>A8wmr@YcQ@4r#;8G?tlYYe{wlU{kTcF)qWl1)bk<^;ZgJkl*MusStUe}JBNC- zM)*QD1tpu3--1TCsNHa43Q~PFF!24Uv==cWya9cP0;n9p02{>t{CgvsEXVqG+H;Qe zB@7xRgMK(i1FhG#2c7F9>&c6}WQDbD39CZMs&aHyM!j{o(q-G-K3EJVKGZfgK7zoW;$Er}Ws@}RP!>qHFF59fJ@w$Xrn^+f0*7b998uQgZ#W8PP z>G^Gg3jFZepj=S3!WNX7SK(>Y)|;8b2v+I&UTQ_du}DkLiF==y#g*>~+@oHhqHL6Y zC0^9E#=upt9Q^n)oj+7RKl`BVm*pQgATRn|-QMTJlc8|0(1%-@SCq`_ea*CRF?@K7 z(q;SbJt%}@bO|4pvo4gZ>ttP*QNRAW5KNy`HUpC$ybwC644-i>I%x9l1DR86>zPg; zrLcS?rOPH`MdwP8v72?FWL*tF7hY2v-wxXAiCo3Q z=Pyw_7{6cRc{HLMbmCqjwupx(sK@}L=)Ma`hIeZd9~A?YE}M$gP$gFw7d2QHO4gOF z>(V_uChaq8c)TiMRu-#5$*P_{#b?%?N*A0hY8LDTUf8c5uSxQ;Iv!=wW5@zMFDwM3MxUtWyX-XHIZJ5J-v<5RDRK5B$n6Rz>Y>-ST|Os3P= zq>Ycpu5ei@#$$rU_G}tTHm&zbJ{r$fy5MYs#_dpX$LJC?=CLl6tn23!HC+aci{Q34 z&}dMQm3Z$-IX#QZNQ+_LNy}kp`e^AC4^_~T&rne^)DAjSV@hqTbivsME#E->TOlpI zSQkpx_2~&dTIRw%e4wR3kBqFu(@!8R+4$~I;%-4v@*z6byR<0LkhV^N`$YXp%NKze zaB9c%@Z6jD+-udje?E>q@wwCa+&nzDr8u`MG!!A+LLBG`pW^G6bbBn(0D5vdWbzq4 zhr9>HatukrA^n*oluXjgjWm)BhdiKk!P$mGu8P+s;&dqMLdm*1>bmsdx8QW2S^q+@ zT%lP7tO_No`uzWVW|b&iaJFIAL-D$VSz}liO4fC)u1hy-1EeQ+<#9&5D&eh(tO_No zs;a9pytQ5Fg0l^?J~=0rLSfbn)`gOFJ#f56p^;VkLJEfA13&aC%TX1q`gzG*IW)-t4l&tD5U6o5-J$feCSPSymWvm`uA; z!p%xW@ivZrM|F5PU?H1^l1=M; ztmZL;#vG*!&NgW59Is2zxP*0~WL;a1(RAr%b!_1?>jxSQwRiR{6H|nYkvwACC zaJFIA%*t;r8C2KXae9Td>+$ib#3a0vRiR{6 z6LeLES%Z`=INLC585I376biF;vo4gZtFEp~_tw~EKC`ZfS0&8K05a&R21r)*%uyPH zhFO8qWt;Uk6zvt7RfBb*WL<4_UB+0h@@VC1i_akE!}1@-eC2D4r>KoJi{OmmSwN1) z^Hq(*i^qoW`c4r%gi$4P>MXcoRg~!VKssZ7mCPyKfm!ElvZjg8RVA%s=@YKXV){@r zef#S9T=k98WxJ|Rye<)e^;j25)-@Y+;bgnwM8GQ7&W6h_nrqUOmHg>JO1<>ZuUzOX zIR)41V$t(1eclgNRi`|JXW~jJEA=!T4Oc-kVZSJ``#wSMxjuTYgO1&$-1V@6iHS}@ zZ$ma2C7b-n5k7h+D_u6d$#`9Y-o~s8CF^Pdx{%&sC-~_76)4i9Fe@3%iPGEq{BR$I?UgQ@!p~s|6QfH| z*qU{rWL>|cG+jnyz6ud!P)A?;bP)_#d=!1!|KQ1)<%!z&rty|B%m|5h-^RNj#js=E z6kdSGBR7Tbr=u0$6u#Ekt8r8K`I90J;CrpBVeueHf%;NDJl=pboA+APP2u*;5K3m~ z!^41~AhGSOh94bpw-X#7p#JhlQQTTxwDajddJ z+!W3f2B6pArf?P7i`-3hzLmV;P32bmrtnda?c5`x2P}I$Q5xhuJwtZa$I)e^O-nzz6yV_G`SV5E=nxBo95aQTokpTZJdp>6DPuUQ6lGsHW`J9yGP@8 zBibGk;P%A5ZQ=M0bbJ(TcY@=PO>Ul=&Umv1@>#Wv3Zl_R79}o+zNVIp&MY6^X8VEV ziN65=hGkKr1wk3r4d=QS?m{5hB#RQSFF?iFq~Lkl-gYM{KA4nMq2qh^Aczfcy!_=e zvExUfJN$>;4dL#lfdu!<0_~v8sk5m->oi-iK=1O%3Pzv)njP;8k6ExzsW3bW*kvf$ zWmjbS!s8sJ%MOnw@w!BKjA30US=XhkK7KhTB?xTiEJ=RHu&G9kKFH+E}Psf zu!M=xCCHt@x=^yNyFnMm*sA(Ia`Q3jv_(Qzau# zTuBG&@fkp4_hghAZ9Q$&zG)>WoWr_MvaW8rE+Z~eFfa}3 zs62ZeMmd#dWmKN6hg~kuPFRF9PcaO8vph@U@kn|0_bYg`;__@Qo)_uWD9`E~6LA1n zJ&(eAOT?8{p502C&8kP0XT{7AN@l28ZSY2r=oAGKq*_p4m32xPY#I z87VS>2I*yVG`>8W&sLyhE3U3ZR!qd!M5idv3aB^vj@$s+i_|sF^6Yf2rFbA${j9(( z4Wyl*-EspccMgVJS_ zyAak*6_Q)dx=^yNomB<7jqCczeG#M1Aooim$|Sem;UT$aO~H5-cFKWz zg|;K*qwwqhi#1D7xRcF7$z~l1W+_!h20Ng1*%aOyuS>+|Zq|j8b-i$qrpt)S8zFWK z>Zn3{1Sp{j?Io(vo`YSk&?Y~N6G$-(d$U3tfyb@+CrI|BqZLQs}8_?1C3atiPfs(CwFN3Vu@{F`XRA_5(UpNOYpq0>Gq_lBXX!mL@tqSck z7>@3w@;5BfJOe$*?La+>>r=`hS!@bQHf7I&Q^MgPDzt+&FhTO4r_rd08DWLCL;+Ne z5J8+fAP(ST)UN;-r0=0UXN6XeL8D~Q9T9Yp=!cE$3he^w$y1@-i62shcD!o)UoN2i z^b~5uVQE%qKS7lM6O*dYzJz_1boBgIJKN{Yb6~yb@n%?|HDoSOG8bq5t2xlfZ^tTK zwqrKKGAu@y$Zw5V7fRN(dcUU2$Zz*d0)w3u+Jis^)LpmX+&SucoV{O%ZIH>cC!iG7 z*~4(GDDl^WSe;EDfZN+?yZ$)b?pTi1+0}IXOxoT%7W4&)vu=Ru4Df~3S!Vg%ld)== z03Bi&!t;hgHC-@!^;T4wooGtxrjd#)>UJD$KMCCyB|iND)n(A}RkVFC954T}F?M_c zG{t{t$u_beJ24m}xLaN@tCl(STq?(sq&jno_k!8JLww=T0WU)NOC&Mf<*q5!8mhC--XxLQ~+B?g!@j!qv?In*Q%FK%4`(#)# z97LasilMqVH+2ZfupIjyyjYZ20)J!6v3by~J9GYp7ojR5w>=w-QpW!tAGwQ^E}PuD z;&lmf^H>*3)^!!=!Wet7hL7B1ffke8rQ>O285hh7>xAS!MV||DU#4wQj@<{_%7J>i z>I0446qdpAuR;p**({W7)*b)&C@fIAYzq6u>k<_9VqGX%*D<;-BVB!m2J4k9m17ei zRZ%%MmCCV)VVBFXKj+E3Z=#S@rP-%5`Cd8 z0IABcuCVXSZ{rX4dGmN!#d^FMmSYo{3zW>obAM_MH0IygN|)`JWv~#9(IxWR4AzB` zb+yxV8TqZ+7%6T6#t3|wUki>ibysv44ln4;>LgwLscVa*srv?!`(GtnrS=ncR7ocfm1WjpmB zyhi1(F@#g+ur8FWYZ&N4?jFm4_RgZ}Bp|?;ypqk}-Y&E;=KZ^>h4X%jJ{R-;k>cFc zaU{c{>Yq{Q+7IAwY*E!2x^?HjtayV3xy5WSN;Y`RZ$5JSDP1_fJyGU8>8g5sv45JggzJKzDwJpsG1Mk%7J=Obuct`Q@9ycY%yjD z3Kz0jDA}ysojwZdD_u5)W8-y+_*}xeP_nL-ziPUSq%#W*jucgQLBi3Bsuy8b%twiN z_v3tl+1o6trsHvI$_SFz)6t5HstcUG8b#H#DiH^8tuiu8IzX#c{=N_Kn6-+!q*B5R zp=5@h`2`pX5+&HoG%rX!PkmLksOqbLD(^ASwXm2Ik)i>;$N@A+x2B`@CJJt5T6je2-6%I@D8dr^BW>K|!s3*Uj^smpGX;>wD zycrf%TbT=#%tg-~ngflZs;$yxJLWT3PR8gG`K_FFp=4d#f7Emt`R%1^!C+@mwHT;? z`-#_tMb#qMhKVNm7D-W5JpkK9iR|fER88)N+X>pf>}uS;Y6BKk1L=5A+CBr0m$yt| zQPoOxO+{6I>M}c#N8Oc8!|s|=v)5=lgSx9rT{NKM)oFX@5a@3FVRY;AtbH*56_(`{ zZZCh9xP4?NFaWP&?Iy7_1D?!cgX(f6I6d6Rz1uYm_fHfo<&Sglds@{%sFzr0$t z58+?lD_#IKL#U#2F z!W&=PK*^5ZSx$}@s*E7JN$IkKY#n?egUq3egN${Rhq|VKF8oeDtZ&IQBhWgHq(Ez` zPp0&~y*O8|C9Y7*Znz6&Jin2ShbCy)$B`2WF2!*xoRO~YsKNrg1vmk=Z6C|TF7 zpvzCg*>FD`##{eN(9lCIdTkmy#X}P`U`0YN@qlD#-+b?*VW`q&)9?*^QXvia6>6vp zCF{Bgbm3rl{7xJ%tabY|>zyn`cgWuJP@K7?mjoW-w z^i{fSDt^GLmRz8F2L^r#Eb2nZx<-I5e?&Bc>;MswSBZ$|pjO*IFBFaurf*#wkq!m4k4bmc2uHeI#ibqTuiSQkpx)lb)@N5NpVFt*LYYabPw zmCveBvZ_D6_L((S>9Wl_H(r-8s~77+$-1WNx^%NP~p)>Z&fp;`S|6-rjsKv!kV z>5nU2wprujbqTYEvM!XYYvERnLL<0u8f0g0mAUovk{8i=r7+={!HvJb+@}=2_xaYJ zd=tc>5fw0@!1YgYSt8M&*5EfE2jBfW10oy$DF{cn9jzS6id{8H;6nc!@{{0X1L=n{Sz!@5wiu6nvIo$u5Z zxWfx;S!5*4JK_uBrhNP_e7mWv&h#MN4%g+}^XnDy009xCl!*)wB?G*9i;s-`N|#N> z-{6u8$(X^qP_nMtx-Q+Ux=NMp<9p*(LEm83Y*vMmRTXdcnRTMlWt)`~uS@uN4(me6 zx?1VF3?J`-(1(e|sHL+KbGEm@iVJTL;FnxPCz@25qaA&XL3EPYsMer1b;H2W7%u^S zpstwBLCNL}{?bR?4yDVcE)lOwP&c1-p=4eEe4*(wsQcfQ4(jMeY4`FL;+kF_^rQIG z!|9#{x4=T( zoo$*yBvi;_3EPH}ZL6u9ToT2@J>R5f!O^UY}V*;#EQ4 z5FYDT6-rjsQdeb|wM6N%%{nMvmoRG+>q5!8-rwXgYxN$VS@YvC_?|MK=(R&=u&>bm>1n+FOI~V*(d!hiKZ#RG?%kzWY?8 z!k~S)(q+@W9vl**OVGZXb)jTkV{~1*S-0)>nRR`#+?Qg+@4B-J7Dx{7TBiRo}`fxsPW`KGo4KyVmwJJglQ)N$2nE zzkU3j15S)_mEbRnZ9>U5tzNI$Wbk*1(q;3v8JLaHCHSkyx=^yNt8`tuSwnaE%o-Q3 zN|=RTl8<45l2z^c#AnucrOP(!@OWLqtj4ShCF{CF*QJ|v*Iz!f76G?03<|SySQScE zb*!$+@YYjGmu*(JcwNG*)~pL9>ss`&MxhbyV=wjP&O^UaxpOS^q+-};-bOU9RPH=P zoa@M)(=o6z@2IP*(aApyt~|QSj7|^%6_Vc``o)++$%H)qkw%C?eq*J}CjT37ON=f- zeje*W$+}M0b?IiM|L~c0Tf8a}Q~9h4C9C>iozJZ9N|$X`{dir%tX`}OCF{CU*JT97 z2|ZjH^z1D%gZdUVKVK4UmtCtU(HCwL6?W{hykkBZUevJ*UK3d8%d0>9=416tyntO% zZQq|QMah%yRb0i$HVz1Ex(s(zkY5YS@UG=WaIaY-$4&8AFYv59;8cP7rn z(p_Q+(w%5?IZ$wRUe$Ja2iE2ljz@4~7#vCl_tt7+v&XGEo1JKnK(?h#6QspvJ$bgp z=EPrpY}R#Kuy(x7=0paJk^$EOz{-)2PzwTjH*K0gLpDb#EH;}DL4Z;inrxmcvB2{e zv>9b{27^P%;I8?Q*qk;_XLAhg5y)$3(*$X;*;$@#vDxw$ADcfxq&O_7LLKR`Ihz5a zWWaBKps~4jEW#$B@6x6TG-UHcg~evGz>Q@zbq832^l;jYvN?yrp=5B!0yy`iy6vK9 z9u!}S{=+7*K<5ylALvM&ehU~Dq)tVF_5rmcK89ya%V0@gLoVmXE_Ad!3rP%8xtde- zmRYG=Zft`W1mJ!*e2JULFGA<-W2ogVC@h`X;uo5#cFZsAm=BGLdUk1BmN_$j5B!=% z;_eGDmG@Aoya%T8i|S?oj6`$lOy<0XvTJz$g*HuhS#kCI%^{GsWw)xF_xTQAT)hfj zcEr`Q)R7)n#q2ti?7BfKwYa)jst%GPY10H6#?=~y#g41iZY)PjEJ3<1ZARm2K7&Ka z;FhmY;DoO}y@`Ca7KP=jEbwkt@{#M?(Dky(2Uo>1tP1=Ecg&;nr91ADt%Kw=+BB`S z+%Zs|Z4L7afAqPdsq)cmW{})WnnwmVkh zeGIG<%%nM!x}#w}nKq;DSi;~?GPu?N4%qx{6vC2heoK3li#E}w3DRP7u{_&ib3a_u zbC<4Pqn{A}(AbF|-XvpSo3X9F=!w~ikHn&1*q2eM)Z=lU6 zn=2R`N(T4id*WGye?Ms<=SdOdzhNKn`(M;mGznViYoIv0kK^oY_+@DLLIrTyzx1he z*-m+GklaR_u`VlxT>beFATR!}l4>)+K}cD_^{B+qgH4PDkw zVX!4a#NT&}P(Sn;0BQ26sjXPPpo6Y#XHJQ5Tl0C?6g9G0s)u-e5Ltm!C*p z&+gaM`od z@(xrJ{@XkPHs(Co_YRnVDXyxvh;<4f)RjG<4f< z3XAQw+HNdcuT^f_K$}sw?PhQ&8QhO0!fiLL7E})fzI(zSM~QYD_8O$dQ0Jy2v*Clp zmGpu1NOyS}#3yaWdgTA)*_KB}eB<*->U*b0KEH-pP)p1Vs6ObrFi1A~um5QtnNKY! zbRMBi6KLp>D-{;oBM-t5b415Q5=)Rimo}pwslnh-GPqs<4%ocQU~{tMCrAqZO_0|7 z-cz1!v3c~@J~n@V`x*`l>QF~|d}lFWlnnTpWg44;e`0fOESuR1i_PYBZY&c+Hb;Bd ztjFL`GPqg*PA!V`Yh~G6eOy$P`r-Lt@4c&rtO_NonzvL_Wn2P0LFuw>od=_wcz5d( zS9Kb*E|je6G}IL&J{+kh!DX~Z+%KZd*dUoL&$fbOH(XY8C&4{1031PbK6RuANe%-> z$$)QvTMLquR2?L1Ie>;k?k9!CChm4OmbXTzB)E_^qeHGWgG0&Sw!Ni!&badU{Mo*h z^9w66VZskQ>8seYP$#T^Nwt|GapjD2U3SL;aNH+!hRl`k$@7Eco3t70xCi9fmgCOe z>~q{O7;6s4T|^z}j%&}{pk!`VzNtB`fm9tNvmHP~$DO9I*pB-P#)1P&*>L5!*J(5A zxI6}jlEF0vaKPr&tMy@UGwsnZ7)hJ4Y+fMGw%Gjb3m=;ox-H0{j&wHj88Au)e9Ide zn`?$3Yy$cYZJIzsHn%A(Hk+ToJrxI=qo_N;5~PRGW|Yld3=SoO+pcR?VEXlFE(T?Z3L~p$0W|Lme|mo+j)-SP?tR}X zBA*yaea%H-UviLrrM`cJh9q5FLUf&>m&k>t-h-*9i&0oTMK3hU{Cwa5KBJ9e zw--E7I2-O6;C%y_R&W#E1*x7nbE`NIeOl_-&wO!o2_!f2ojdo7doummO(@w-XS}Xu zD^gw^>N$BK{0*hgj+GrSCS&yR9R$`lG}O2JwNo;-KLK!Hq}3mUw8^}cq&*0XAbAjN zngN_Ss{yuRnu64pfg$H`O>LmOk1!1`Lb_+18X9Ec8ZM&bz%Q`eOFijht$=Z(WS%ks zcc}a-sXRztN}DFu38N%|V-y;jz?ol$1nOw2OEf`x?*KG0I@-oCJd_NtU~vdf47X+2 zI7q!teE_SFk<@_c*b5>WrV#p_zmC0@PykjH0a!?4`^f#;Bb>%8wyibHVw1|IV2r8< z&Y?f-H2Wa}xX<<|Q? z^*Ov7WI9Jan?fDw{+`H$qGUpkeO0BeAa$`+9VE|p01b0%p~7Oj`;*U|Sawt9pxpX1 zZAQI4gTbL>aJMf~;DobZ7J2A7M;^+;S3*|uV@9vT`%>VB+vz;%hEcLrkQ_#vv2N%j z&$irf$OfMq${~q3+_0Ypx$cJ9Y$-~%bj~Zv(jfIgm?26W86tGUK?;lQhLLV8*Gnux zdI)Vs-7ts2p=5A-U)FM`z8pAcy^o81kPl+grbyGptO_NonysrcmIH??UAC=r;&q7> zJ)d=Q3>YN? zzHy-zBqD!8!V8ijf11%82FYfH#U}1HH=?2--CHupE~s&$b+w^O4VS!y)B4M)!d$ z5rpoz66OXabMxkln&Vbe3j$h3nqnblnn0Z z5S&P|U67j~)ls8J&8SqsR=tewN5Z-+D|z5jwcT|T9Owyu@G_VvNw>e{aPWuysQ>p+ zM2bo9>jL^f4#-F4X+iQH+BE61{8}K-w*1-)E`quTb_Z^ z`Sq{9Y)_Eq4GWK8Vd)D4(pMCbZ@%d=2bMM}Jeb;xbz4kuCJNE)6 z1Z=K=8fUXsz_Ao?o1Zk`f?2X1qf(iz7=j2TilVcm&a0jisd8?vGJQO~=$6;KoeDT) zSHfW(vK}E5XL*=#LUyQb?S$;yMVcn}?@t=g`rrxKNC!E(OFqOxZ|jfZTDfMY4(I)>nakTv1HDzhVoa6@M89y{~v z2lRvI_I{`Fdr2hzKsQ|gJl|<)0o~EWMRk&baq@I))r{w5n3`Xv=RPeeyzAUnH?1u#ni zJmPUHyUx+3Rr*v9&@j7xF<4yUF7jjfyNoG7LHHGFJiD3+IF`LiTRQ=5IX@|&2U6|#1avd)1ETw&65))caQ4DuRzTlH4*-1)Y7}S~&^-(mH=r+2 z?e}20Qe#osUQpu!Z7JYb3b+h`qhO>?c##8BoZj#M!kx_k-r3MU!OkWUrhmI5Oq*Hw zb~E4L3q9Qy>t-tbF4U;g&UBlqTRYJiMc3&3)9ocHtsX|s!$9_QYa;}(6asdB)QZjl z+O$gV;Q<;(XQ;vAMyI_W%ll_brl{;3sPX8u6>uyC+)a<5c(p+f&1MT6A%&Vk&CBMd zZefV*r_7}V>GzK?gi~xV8;+Ra+09Hn3%wp-5zGBmTT%tQ-efVR z4%wmFf=cfTHOhoD0qW@1&IG8On-sEo3%wzm1&DUYx(X{Sg_R~#tdQNVol@yRP@_P@ zkPR_d+>lk#O5{nO)*6e-?hQ2_vN8e3Qo!|}j0rI2Oy*j%IUGlr0R5pxK{{-9)2$sg z+s#R0^J^--9uIcFKsKAb1Taeh{O-dRn@hV&im3GaP@_OYHV-veTsANFV;PF!2#d;I z4>itaZvn?rz_kp)1ry+2?yE9mF@$dd9P&)CUPp?5ouJpBXZR)n<^Fg0LPzUk-AtwD zLyeN)MC&o#+KHB`PKwsKHQs1lh=J^Al?x#(g^;EXSmnbBaTpD?_ztM?e4H+* zSPH5K?+Z5Gchbc|6SK&f)cMVm&ZMZuHrL+J8^bxDt1=Dw6MDJjh&dhkR-L{L-H&cV z^NYuE7qAK{-G(mCa~rw^A@b+tgS1QqG05|{(+u&IrT98yVl*#{M%%Zc4>$H)x{u6n zFUZYVVvnWRDPouDgmgarK(s+*v48=4uT;_!-Y9;`;@HuP4y%H^l%%-JDD z7({MEUxktEOsy8&ECu(-d%=?!KTaE`=RZAI!`slm8Z<6}pVLaE17@T7wlkB0l>G#1 zJZ0w#JeC4))r1h9>>s!@?H@1(u}Uw?>vd61uB?V*)Eiama#7FcNi?b}n*}um}b9QJ?T^?>Vwp_aJ$!{yj*QH{MrPvxv zws^k!>%dvNf{Vd67YQ`{@0BDP>g0zO+?rf2&{ztz-|k7GVUV%q(lF_*yp#tt)QT;Z zVyn`&6)A;hH1m|g;C(w&gAFQQyLfY2uwe7kH-inA_LAHA76k4MRkP z(SLR!Mu*QC#&ynm&LbhOis*8mzuqmNwQ`%h70@{`E&-DiUnY%9;%y&e%jNCz{I&w# z3dI&nv2~bj%T9;3bOqAyR^9xjg6UE$rdW!pd3Pnbb(*o|y7dt60QgV7{JXutt!842 zrPw;(wq?6@F(=M5{Rg*NiY=C6YlLmfc5BoN zNp9Vc-&EjM8!^RFOf|DjMfS@N8C$Mf#rbUo(P}HUSc%@^?)`+H|wR|5c@SjWn1}pULLDVi@VvbOs5!`^M@l5*%1^g4JBrcy6EL z6UpVl$MNSzuYE2lgC3zZdYc*4RiesLqPq1?E2@-1MWgq!o*Nx*?73OgF2B7Xi^{|v zOR+bG?5%o({H8OT?~k=N?4ROjPAT1~TL?8_!_E}aPIQ`X?rhlq@7W}Z%4nI^6k!nA zuwRIg>L)nW{fRepVt)SDl{tKv=N$7#`AOs-~!7GO@z{Ri)mEG?-7H>B)pjQ&X{+KEmaJnu?{Q zQd03`VwENnx6ePB_I)}jQ%2JYu49vUCQ&X?U@1{}p)%iOI?~v4b7BAd_JYYYKwMHoaT(=`~$o=n38 zH%q}iY9x3PTxFLU_Ss zx-Xba;X%L^0s z1TA*}J!jkWB+!zbo&@x?Yu@qYu*|zM> z1UVKvYq#C4+}*Up2q?C0j{Zq2p!0B|I9?Juo*6B^7gVJZ=&tYHq*3?U}Y&-KOU5nrso-3E>%tP+oHiKP1}ksmSXFF zY)hp|THATm7)Qvf?V%>*)#`)7UXi>yY*G>@*V7&(mRD0Tj(sv$Do9xh(l-YJX@6}~ zWv+ypm{+Y02$!t7J`l|{2zoyq)OcRy1Qkm`bpWICPVZlM;yb^eRh-(qIm|EOefohR zgTYPr3H*u4$4DMl{XrwD)D2c2mAL{(h}8v96Jm9|)hiOKiU*QnwT^Zau~_}yiV@qf z>ME?T6jmDDj94v1ThxHJp(e&^m;vF&YN!vywHgHd{Uy|RtjYuxOF=bgfE6oy3g3Ev z5(PUO>v^6}=q09Dim77TRAi-@U~IXb&Y+!6o^nBh(-iJ4wpfa-M{fezJzBb{bSi&h zQi*PEayctbccc{DfZxI>PSyU->Byg7IDbRY`3wB1+=A95O6ADAuIXj)zu&!etA5O; z!+l85$T->9a>*E$-xdu{WQ-JBEXCH@ zWQ%t$FWo^{wR;g#8gn5UF{jyoII%n6-Xtnk(e`eeRE!mPECt@o8RB)3}RHx;D&WHH53Onq~Gl3SMg6~_{*y!Z^?HJZ0#nDQTQKfM7_I{XiVjIEue9+ zxW-akyQ@5j#-_%WOXHLW{{xLn#THAkwV!P(LgSi^aSDo4|NIi}0O`4+)Gu^wCYhaG zKi`!^%fGZ+$`kQ`mgNGKr9d5cO%g2ybUo95{(FCZTQoS;m|C&LQf%#H+ltWg$p+9; zZf6FaC;!Z}G~z5vEet41e}vEIHD{?ZXa~;cH!9Vxp`rPSEP5)HuH#GFX{K#!yY1W3 zHpgxI25nELjzJ3d2|nmf-|}Nlc)v~RZ0hd~$OU6HN$%P55ZcsjGa&1QB$h(bs;iO$ za*eU&=IO5aZPDNqkS$`1rPvx`+p_cQwlPU=y-XXeZMwzJ8Q`)PNio&fHWk^rO*FP# zx6aCMD{!k&Y_Swu)B0Hy+HO5FI?1hdv}M|+Tg76ErI>1Gn~JzK+t_m5s>*LGaI2Zv zVkx#hywY+jGJVEV38p2wemH$hvfAy^SE1c(D!|btnt$Ll=@FP?V`J+n`P2}4DO&2j zRqYGvrH)v`|Ne%5|3@>ZUg|sid(v8-!aPZX-;=LLtqnFiG>uhKXfC5I+%`i~B6P77 zx+eFv=!%49e`CuHO+kKJL1INZXd}R=Ycs+?qsNxNW-CMoh63Qw#bexpjuI z<+^ojep`WCZN(N#vDL%2WoJ@mABrwzTydCjTuduaW{cC!f8wa)P0Dn&BI(y~zU89o zjFIpYpPNP{(Rc-I?Y2o{skp{cT)VY*5{-pb+LlXW-Tbx!8gpWcrP$iVwq<8W^F+5E zrmfvJ-Rdf)Sc<8q{+Hy|VaAs0R=fPR0=LS<7E7_!!L}92juh1aitLWj>^OHdb~)*- zKm3>Mm`$zSF%q)lvynPt?jqcqwsza3v6r~UQe3<2iX<9W8(S`o_4C^bXzVSvSc(EejZ`-16pif%iDc=YZpX5E$)m{GLz%tKZXn8`vGOCjszOOgV! z$k=iNvwwbDL13nfEtX>Ii;IIRZ;i_dtM|&=#2=%i6sLC~N@zL8{X%_OQ}+fwGY?L2 zKKsrT;Pgk(i!)z9US!UAo}}ZdR7d)k$vr8F+zUn|k(;Ic?>5PuAr7+?hgbDVBKI0& z%O!UiZRqmY3do%$wpfa-A!Lj9Ei@?qLnIdPVMG z%^sFS>s;F41+H56u@A>M_C2h{;w(#X_Vk`atV(UCZK}*)J2B|QdsuH65H8%TUj4hX?Tz*@@#I6-vEXCHN7h1L=S=pDT;fOiW zD@~M{jZ)=baK$_2E3SAq^x?AbGU+7KZ$VzfFUwDjBfToMXv?t$m8qR(vtAATqou6x z(YYOczP6h6V(2f>=ae!{me5B9BevAJv8Z;$ZM9o#QU}vO%vDwD+b?1A3^sWxOf^a! z1T&Xo=!Y@fdC)I~nVBcEnKAhM3FzJE^V+#1c;HWHIR1}^`+;;ueHw>ZrB0_a_FUzh zT;;0T!x4>1>xnb^i?A&aZx$5Nk$S9{M31@MbHjfw;m=jSeM@td_4m!yRPRB@HTCN+ zqW^LuYU|VAc-OyWU9PJBzBTpt1z%Ra$(KWOl{5JYY_4(=Ut`8o$n{cf0r)_= zo=nf>Z#tIPzOezl>6sy~*`AcG^dG$mgqNLSEIX-}sTKY0c@2x%D~`|2Ufp5DiaN7b z)E%+npIlY?Ieh+IhurK{9Y%atXUTUBmkeLA^_m%cnN__7&&*?z=#MYF$?FSoME_Q97;P0w9}p3AomUszC3pFEyjd-(YW z7SJyNR&_eNqWZ=zxti3PjmNT+7YHzl@iKo@!eLih4qWifs7OYlis8l)7%b}D_1o}nTCPcMHR zpH!+sj(H_Nd(B#x%IYqa%WA(UV=l|UNzwX%lUY1intGR#8&B~;Ri{#Vv}h#M^nEO5 zTUjyUyLDAP%0_%&XZH8?8@@OEyRArq=GUU#_r&9x4)`(?e91}B{OsUMB5_Uo5#JZh z{$9T1Bxrt2@FgXI^xQS*NlCDPlb})|fB8ZvD^!|lo52tMm9G>31UaR_@82GYqd5dW z-3qF^+BINSRBA`77ZsE6l@>2nB$ew5I#&o+I~s<@IqIE1*t)&iHKT7BDN8A$7oCfB zWg^<*i46tSUhOJAy2ZTF;yHuCE#nyZ+EXCTun~J=-UtD*z~m&q$~w#Nr3c^b%Io7)HD3& ziD8(6!LV1D05wiu8v(^qKvi`IeeY}z>ASMJEtQKG_!I0E+ESi%)S&T993^S`aQ@_= z`Sb^rrB!t+>rk5#tBuMu#t}lWJ=BB{tX>;hj)dS>vo&=?P|xT7RE%SXpsjezQoNmX zHoWbxZPN2$P?JLNi^1TApo-2tVjm{IA3aCp0P!H&3ABBJmMJ0cN4DCu!j@9L-$L0+^jGi7lZ#HFXL+ykv z9GO2>TkVn2ovkrd=2#pdB!@sv2uUNWS0p5}$h!Ybr3Dcc3&{drwId#L1Ft{OkfzEAW7&>VTDtjE%cu2|x6iWg1;TZrmeHA;v)q+;?%>6h5 zePf^|(085HD?;DRbWY%>ub~h6ff&cm=mCP1r6AoeK>Ba3AXS--P?PAp(O_`tyPJrO z(Kii)5eAig0BW4RVFHS!fExRMpl^Y-2MCtFSNIcTbQxuE7Y$lxaQYbj1WR98kn!|H zlS=JvwNsfUI6@c-p(cc3%}-(QB4OAtC@BmN;-rn=+`*SC$RFOoJ%VxUFpLzBS&GLG zoeqz0(l)97K}`z7T7$t2!@fQYdua^xepIOOFpL#YECo~p0wv4eH!DLjg5_@!e}Yi- zmgR4^$Sz~YaFAYFpCsI~K;CefEO7+m_^B4T6o-K;UF?A1`? z^vw`ZECtl10jLM9eLzqwM)4=e&|Xvo_RyeBvDkq>L9r;;#R4btblrn4CF4h}F5^?) zs!qK|Y^hsx=VQUIS{-2-Qkng5ggEU6)s0g#LR!`7GCtQYakg_F2LVOJSx<7k>Yym>#T6)B87}MuCR!-@Myk zaf8;%kEMmiLhs*%8V_5wfMY4(p3WhcDpuH8e-n6ohHQ2+SX?&$BAz{wy#d2v#q0w$&gNnP z$5O!c48d{o*Gnm0{OR`>u?HZWc(F&@+(C1yx)XaJ(QElibM-RYvjvqd2wb364RTj5 zD9s(Tq^h8j&uBVZTM^p->A_U`5U5e7i^jAjK*1E!S+||;5`^e~I^mzCdtCml%z7dW zw7kU^!0JV^eiqhiJ5Ec53YJ1ex04TaKnxF8{QjO5f9L@HCclXWl^d+9^Pp;>QBnRw zjYn*`z+|cOzf+L^-$wEuM?wBWbs26(1DGk@MYneI|N10yU%%0ta|Ia4=CxJ;v()+D z(a!&G!u*FC1#0EL!QxWd&X45=3>V}-)Hs{#1sqGA{{+s?ykHWHZh zZ$>qrPKAooFJ2p*5(%xmyQ!C2`!#z0#Db?erVmYwIn=X|_B%9e>OgBxq%wPGBlP>W zP@{}ErE9HT-ks1*ATa)U(TsA_Q!XCEKz8W12s?tSX6c=sPWJh(1MD`O-Ty4M^3~<82lAetj1@MLwEH>Xo4*-1)Y7}V5W_yFhW%D{emMb+D`uz^5 zaW;zu97_S$Jp>obf!n@ECJ$j@GMN_wdk#EDch&i_Kx7WA{sKL}XJLBE94MAKus?>? zQER4+sB{`?lnf_os}q**aRkO6wX-QBJyDwyTfUnKF)W3c_N7+TuF)F{x9&9(-M%jUD!c-j1)#-g$p zLXET8M!>NYaA$_#f;lj3IWqZX7ABKr4wOVTM8AK|Ez|2*(Dn0hLqz>##lVHJLok$% zREZu~r87{Y1o$>azeLw=voRWfWm35ArBp=1c{WB5#}@FmLJLcw<+yBgjZ~T58iY#s zfEvXeZj5d*sNBG1@}O#f?{1H|(C;%2fo8ZTj*w#Aphl58bD@oH z?aYO?eUr$&gfi1Jn}7P0LD+L4CxBTB;1%txxiAww0Q5mXl<~#l&ihy6Rz(PmhZ~mN#S~r^3fBni5SQZSD7%vQW!bnI4fLNXwxcv0n{kaFkC|n z7B^ho{8)C>SX8zS)Ofgh2{@JlZo;uh{%bzAlmB8IA*arP8U^XFd4z85B!9dAC9(M! zrJ{$;)gQUZ-&+8)6u>{Wwb-169sv3b)F{x9%|i_qm(BhBSbAzKD%%ZeoXv6p$5O!M zLU6%Ca8t0QDUWPvym|l266F0#7H;0RvGV?1G|+kf3XVX)(?L&qq@qEt-VV8~3v%sd zJCUl?t({2Sb$L>xn)LBTsuTm+c|SnNU@2s@JI0FCPTI6e*Yf}kBUNFrxRJV>W`rke zURo?!qq0vxjYn#jfMY4(9y;293r@hU;=c5L3=Bbp5=DH;g05fCqbx^Ib{9rl}Cmc;%ul(im@=X@w0n`?0+#X*+h;G0Jo2kG|_&;w~w z0W}IVWPf{u#by6sKbE647L`2+YMlMC0*i<{uxhBbv=MI0DG!P@^CnHs92( z9X8*+B#F(NuJE#X0|v5ld7=PjDS)pz(qi*OZCa&|@c<3keAQra+1yN7?ul&e`zDva zh8kycvVdbL;66G6Y(9k^n$1Z#0-NKY=4JC5-P&REri+urNQE|Ih(T9!{+@MjKlGtqM_h9LJ?o6L0fLRLQj}NohoQ56%`T*1@(2&jM28+vP z)umoGPt#ab_5`SLHme03O96Lu2rj6zDekK>|1OlM6GcIt)t3h%mjpiNW-7DT*Sa{e zZ+r$V)6>w>Igz3ZXvO@0V|s7R!Yhi-PM7rL%MU%HmmjVSY+dHF)s`mLmwH*a`;3ZmXoM2$2emE8_%JarZeM3w^auR|DObAcFSPtAPfLp2L?V$G{` z4TYwFQYG~mzS4oXS2tAYJE2D1DjL(40wFiyUYxI^ak1_d%-_B`8htKIipC(CP4GQ9 zS3c^07|VpD7z5fNSt|ar6n`6%zXGMDf$~|6c&gIxL5(^vbdZkA=?0q{mo*nfvAtIl zNtYWiEUIK5sPW(|7qBb^Y|n#HC67T5&2}psq4?|xH40Xz{V4#zS+`|g7)Lwp3ob|^ z`atbW)lv1Lemsq_Y>sOMHcNs1cx%q71@m;IZ_)r%x*yai;xO&kp05$P^gc?pMAH6R zjBBF4n?|IvMNs3+t`~?b1!8@IC~2^_;0$vAy?2rO@34sEK2^@*s?4T$*(rUa?IAQy z-;2hca!BP5r_ueW9#E zB8D+^t$BwXvjezA*kLK`tUQndSZDyej7~_or=TVU@L+?;4d7oia|F?hcOp~cJdH?Y z{|{Zx%k05G#(&ke(DPmLeXO=7k~ z=tu3`h#z-hESuRvfz482-`R?peHJ|#z=axsN}mZeia4Aa9~(q2v#-)L7G}?hBHB7f zVy&{9pvIXk7Kkhb;;NPmv7tZ=X2neIt}@SJ6yn$3PZU;VzL{gsijioX9*)M&te`s# ze18tJq8A$I*qx=vR_V?`Pw%X_9;TSOy>$m?R=Nh4C(wov1-D-nn+1>(U3 zk)Q3VN}Vb&gZTYcjrgr);Z`-e0N#j#n_7Y|bvWkgrYb!PYSg*Nn*J^Q9aKPx(!HED zef-%;G1-eM24W&>`rR1I(9j+O+LNlKc+FD0K4yPY%+EGZ>S`z|z4>i+JL*8Vrr&I^ zxzQO@7R9#t?Z||mjA03z%8rK`4^bNd%TmCO+7E^6QuNSlcgGP@=@h6@u)1*d2LMj~ zeRT&X`CE5OBKiX=Ad>utM*Ud&mYe)-1vX28{qeq>{J*`WBmD?E0r5nrQN&^4+RY$x z>CJ_RCShC?^^-Lsm2C$#&TOebWGN8a5JXwiPZyj)_HTX@*}tBJoBeI7G9_rN*Yt&G zoSuuuPW7@cjZZ}b9l(3^*eYEa^z>G*nQv$e8UQQa5H?i$bEruHJkKC<1Nd-vgXpU_B2%LRBVuX{gc=WESAob< zAYRh~QzM5Sn%U!UghV?OY80oQ8W#WnPmKn;gTrj2u1U;(PZdCz-8t&Vo3Fc5qfB74 z6xg%&W@f*5U59ogIsx$zs8Ph>)Yy84M&vTvBSds7#x=1%NF!3&5~y)zdkI9A0x?4n zsl=~+jos1AF2@mYehM{;Q!`t~IQE?G;4u5j|7kzmedrXL{KD*OuSGKCQjBHiY;S?h zQegKiVP=P+Cx`YB4M3&$@gNSFeas+oncY1^)G~@_$*U4;m7NDQ&TP3rWGN6|--{uB z{b~^Wpx)fU-Bo57Mj?KQE_3yzWmRSd8tZycnibptMcUQ9&-fwrHKzXjviF&-cU zvJ?Ub?updwrfsTB4r0|mUJi293aYFq9Ci)($B|V>sBM?0ZY68(ctzHqLFF!Sj=v%0Y#faVoO(ObYgTWYsDLt~$9%=%8ds)3A^zDC25`ASJ?%7wN6P)A4vr?#`KjK$4>wG;uK49 z>WZddx`Vc1iN2c*2A96^T|D$n z$6#3LCP9tUw_HH66j0+bpzlib(Dd~PaPdla7Ssg#jATv8p^wI(vOS^3>02+LSPH0a0jSm*l$qzd z@h6z)UAg$ujmOmECy?tZRS;{t_8HxlSH&IpCgmV%OE)ZM*EXa0P(iL37Tn>Q%S}y{ zn295#`IAr+;-suzkvQE$X8cb-pF>qL7N<@a$4>JtLJ3Quq_hd*w5ztMGCM&{iqlww z!Hv^5Cwnl=ep+%xWnYFGj}yIPCAcn6Qb0Y`7@%%Lk08y1o%414Nw_27IBo54SV8SH z@`8CE8Ss9p)lp@#I0Em7Lrvg4WA%#gzDH>i@4r*cjPd^dQ{uCkABEx~OL1|2Be*yP zZ81M4KuzMknZe-lKGcVyi^ia`$3u8%SVc0=qP}!|d zu={cPN(2;30kx?Jpx#H1fC!a&8%Ln;C8!DX-D~xV(DzU_iN5JnGh_6ffpKj5S_)E@ zg7lOC=|0+~$~1$TMBn`egG*lvK*t32xe-f?E z4ce3IDs@S$ZCBIQROheTNp&7ZUUQY098`(@tj;Ra6i0~Dj!+ZgwC-{C&6DQ8lNoA)HEm=q;0B9In<;$Z7>+zI8El|48Im{y?J?#n-(!-P9!={(jOkCOikD{J(_5TkDNZdegi}wTEjgt!4?#_0y2M~`ncl^R;Y^Kz z&i|ptnJyPlECp1%0MyPJ6!tya1-J-e`mZVMSpt3E;7iYf@Z(WQ^!<-lFSi&^z&LiI z4iKa)1?gSegTB7nrpjCdHHp6O3J zemp$b_wZTLGSX`YlJ~q0kEKFRgY0JwLi-;aAznK|O^DaJhr%dF;`KY3@Ym(($9lMW z9OKyWnkdw;6l$i{2Q`DVP1^rJO^VkBgTakg8y|*!GzQxLK#j+1vVdYKpwa=Tm6Jju zWdFmTAYQm$&b(iI81Y_60cPGO2E0FGb)@|dj==jpP!o8+$?6s1eJGjm^PZzsDwd;% zVjP?I>Ea?waq+-<;Ju!&}F7qfQzeicc=;UwY7Rh=6$t~`VQI>Qk8iX zY7%|z38ln{ECtj#0jNVYC@gY&2e_ENU7#k=_s9KVvPbAE zI5dgAKWXWSMgDn=W79WZkg^n{PZxl`3T;zm20~4u@9#r22A95DeHaeb7*w_e)Hr>M z1r$pG)ieOL{=SfiVAg-bpG2$ll?RjSD)mmR?F*)@snQ*&Enhq2YH85E}o?@P&qpZB^xpDQtr&3mo5$WmOq?H};o zL)%oDv!EvN{)xfh@;-{z%^2?~jX`DqoWSnKd0#J}SPH0he*@Hf^ssj`FY_nh-JGTJ zMns>b^5Q6GsdvWu4vh50S?XQ~24|@}O=$j@v()Nf96DpA-@;R=(%4vsn6Y~CS!z}4 z@(KJ(x860KCYf4LGiv^-|NhugXlp5HzpM<4yP@-im{QKjOU=Uk6#FGB@bP zD%}UF%YOVNV<+e?K?uydG`h4*3c(|^puug=yEHc5ExwyG+(L1crMSBGk5=*osm_Bp z&<(}od8kp`;kz`BFsR&M?3xEv4~*P^w119#u1Qi4>gL^ z`QynS#>s4O^84rglgRB!E43%59>73$em4`qECuj{EhdFjrjItQ(mkO@frk0L++cAj z{f1T{50)a0MP=(ljk8%I;8+T{KQ@ESkM3edG@I|>2yDIzH44&UbAoQ|u=&t_No=ML=t1{PP2)kMk*@bj%vY_@+@`ra#)2aMZT6aN99f)?ipGvoZnl}(>-P#F6 zX5XYhyh01BCzakABhH(0(N=tADZak_oAFg;#-Rr?<_@S)pkW{y7%Xlej`3q@tFfr; z!BFFYC>3xl1zZaP7d#Cg)UqHNKaWNiq%-w)*R7q1@6#eF;$PFU>52G9 z%8htVNM$LczQ56m_+<1z#K%L80u3YH)L?NV-ouaOWQ~RX{sC${;#~zCO99s=1Q!H* z>zxSp78WDyVB?37iYlfRf&QiVUemu&w^r%5p+>#(z4hu|-6e>DS*af`Ns7U>v|1tt zo|U=_Mzd>RnfS_5eC@a)n%(sK7aD|0Z|}h!uGEzVl^czp4oF7zVwI$a%1(zG4@ob9 z$x>iW`W0(SfAr7{_r?+OrUz7);mA((INjPw@Duk+BDb}6Bf1m)b(EXny#+8!0sQlN zE5YAJ4*-1$Y7}Ug;71!QE~QV?8t$2FmuoC4dp^`So8{0DSm^gTpvKu8Cg4~KxH<%m*!*H7GosmCgd?yy8)_7!!{$S}wUe9E_DEv0 znif9~o82*x&E`k}%u)b%U2Czqk2bB+%{)LuHt#oBTsBMnSQgx2X8K!D<7|!M;W)##ty=oj4W_4%}*S0`UD-YpeUuXGLd!ZT}^ z5hJ{Fnjh?(iqK1kvW^}@rGLMjUCJBEkI^K+X-|wV$(H}(M|vM`C`Vx+JCqZJEtbMo z#m|Nct1>e% zgcC|^VL6nC?@AY(w9Tc8;}!qYiDkqLU#NCxo2-L34h!s zB$%!2bn%&`_`GSg@tN-bp$Ce<8&IP_!+;!bu($!)*^lKajYVZIff^6U3<1Ydz@1Cr zs8Y2-56xx^906ogs8NtkrP?%tNr`B`MPf9(7f$a32C4gB9;AyKYHgDFZ zRr+eEQJ^84>kSr{&2MOZ^qn9m=J`7E57Etu$<@ zOfPMk?*Dm!hN1l2U~xnF8!hf0EZb=;D*M+hOhG)9%LN=u0k{4~11<>V+uT=WW?={? zl&0<<*M#c+m*f`*WPK2j+tEV@WPt9k(pN#v8<10UYiDkqMRxoF`FnRS33V`#9gte_ znWgyr_YcNrmHBWebA=-C4%8^nFd!!zEN(ys`?1`J;RuV$_JtY`$a(?CQovnA;Nq7s zTJZoX(*ol-QHfr{*gAw;rnj(g-}c#-HdDBS!FwltBZHUi#LF4aW3bdX_e`v3Fp!;7TO@2OC2Z4ISUELFn^x&^s8OI{PHiw) z+?*=)W7%6{QQ2Lf#&e3_CyMt5krZ$ZLvX<)|6&l*>0=fn?6C4h5_&%G`QReSi}+sC z|CnyA()UA+dgZ%Fa-HrH#K2r68CaAQgR`4S3_KS}_Qhy+APU7-mg4JP-$mz-%KS1= zyj1BGP@}lRizJsBRBkjD(k=y=;XySTV`7?*fEo`;vA|?0Fb6EhhU852&LhqZw{{Y|`A$jX7HK!47fBY~%mmrIHWR=s1#r!`R)XJ;9soK9Y7}Ug;EfCx zm(nq`Rq;%=QjLXvpBHMJ%@P5}QotQZ;HX^GLl4d7Zv#x+S3`}0bl9xXtsOQ$+%bvG zWwf91crX+L*=)8Hz$^vu&EHsTo~BK!^a&oIA)9jz7MIQQ{8%>JB#~9wpP`QjK$?>se?YFGjhbhUExKMvFc(Y8#AlY`bImg2GyVQ6dLVPgK#c+o1JcM~ zaRaiBwmu##r5X#>f2i?*^b&9^1>AuIj_W^qXf}Vlj@<&t)lj1#o%F8JtsOQ$+%AdD zWBncs#Xxp?_ZGk`1@O&FEjCZnrm6mWfQD?&HCS9WU!|>!hs_Pwn)Ln&YMjk-0mo9n zef4=z|ItIU`8bZi=7Ui4vU#&^?XWpKmBeN}zXxqFkj>@*0nAbWA4Gt|`d@Csz7c8^ zXvpS`28+w)2->xH*nAYj1@#|loXueZj-`Mb{h0wL^`HAv{l^eau?XvbJ-7Y`y-Iw& z!un6WO#LUlHcQNKx!EH1{~G2-hx8L1A*2hSMwxOZ$TZ#B3F)(B$6s!8X)ldEFpwS6 zk-{2FVXf>_!y46pZJO%82WS}5sRoN1()qM?@`QBB)n!eG%{G+fSlpSQmU~~{f8P4$YcS>QotQZ z;NlleHuXbPeqj+g%cUt0y=bx!Ez@(+(s}N~Tr}Z5l)h-f%Xi{Mlfi-A8+~@oMU$d} z;Gzl7O#7k-bp^*tQT zDW&T|)lj2U>xH^Bcpvd3-P&0fD$MTDePiXhCJr~!7$yj3V<3B`P9}7GZIPvL{@nY# zE{N$C+O$eH^#Bdmg_{i)Hz&TNZ)AO<|d3noDxfYKEikMi%b^a>SY@}~I zelOll{5Df_hPcU6+&pNJ6@!P+1IcnX)F{v}2EWzU`vf-zH~F!2)L2yZSg7$B%o1=c z1>ETOa5k|$dT2KP*p=M^$hA zRm^r978Dm#E5n@5g&=x(CT zsBB?^d%US)yDY_S53(zvHQ zIo^J$LhR4@M}P3PiqpILhS)6_qKSWqUKpZL!Kx;^SV_Kem(aI%a|ZV{+5f)&LZ##NDb!T-{V^GFs?qHZJUXho|e%TUUKSeRUdLMq5(P z)#WmH3{{r1Zo0KociNdvraRvh`R17jJ76H2sPzJvr2xKsp2>TaS-P`igG#>-H3~GW z;)fb6E}M<~ScYOatfbdNjkCE$z_Ao?^WQb#%%nV$yQ|E>7=<{sS5lgkIi8fYuaj4F zcG9UU#iAZs>R9~N#JIQ`YShJ|F`NI|y4B2r8r>SPD7v%2{_;uvrAj~S9qL$Wz3OrL zhfoYb3ytEMusu91v5LAQ1?qSZf1yYAO%_v^`sEsZ6oO$9EX3CvT6rI6n39Yeax z%tH^P?(0yabcGqw++cAtqJtkxKaGX{J{xL0Be?1@IFSKR=jb z{8X6}v}u(-+5hR=_k=c zv-u#7z~)_0T{i!uy@Q!pSL@aeo9FzQ#AZvs2m4_lo6Qmd%u)akn{BbVv50*J&|0Vt z(9vgFo2!!z9+%PS#I+~7<1r)(-6*JWMq3I%mICnGYFe(A(Xk=ubdAy>=%_!E2>PEN zP<;)^%=tEApQYHpi0m8FAMIoas(~6MC``9j28&D18lufZ&HxMta;}0JC#S7|V=3U~ zyludlIe!RuSD6DaiZkbvwq}2((PtwI&vveiRt~el;)CwJ=n@(IiS&7NXY<_Dg`3-G ziVTYB!H845Bc^(h3$zFoteUc80ne9#Xr|{&Kix^CFNPXr*{MFq>()*>>`$otyQgLp z98U;-+mXGu=S!(D&Qcif`j%l_W#*y>=F2RoQJ`Tu>}IgI>G0qdFP1(U3%#EfYCIis z0*gQlrbwH%+u3^`md|k&hBjl#ct!cm>2LSEA!}xe(QW*F9-5bWK7|0GI&wO4p zSqfACyk>>5T$`r9Pk8HaNkORIhZ+SM2H`}5#SKD7KbE^N9AQz}+o8sTFhIbu6mVb8!mjFU^w4ac zj3ZR0c2J`ri^goQcU8@FYlqE(Uz6AzM+xRhqYt-ZZfrJ(31F52_&@?|X453}0MKzz z9iXGTSi7qA>op#i(Z+r}9W)-5JrZi1(UAg>r2wpag?3d-=-8m#oC>qqp7Ym?L?4?)jjAe*4EVxOhhZ$S2q>A~8xN?!{#N>G??9~&$#IoIysIkLyDFi^SU*1)shfACa5vSB zF4EGf(HhP4JlRusQt2j8qwG3WXMMfUK|2kW{*sgiqbOrNY4A7(veRI)FwIh!t~=8( ztui-i(<FIDP@^t7vA9gPc52pXKPSavPnsZ}SnQ60>{!eYcUg+N z{a-Zhs?4f7;-E@@12qaXj76!z;>Kd?S}&F{7>=;0>}^ovv6v;`SPHmhFBotp7M-}e z${deTg3XG34LaCO%_FZk7UdL+ozYUqVmsZB-p^XV-bP(48vPybrZ(|qt<;md@hhG> z()~ax)l|4T;uTK?dtQh~`*VD@|to3GFRVS+Tn3vh%ie+z09sZ+=v(5;;;AMsNXxt~(bc{1xP z3}o}VTmZ8az|TBu5{cf=t4*tP#sf6W@|z46m(uh6SmyoBgdodbhZ<+IR=}|oaK!|U zN>L?xXf_Ao2yB)^b=iE*zWaK*Ztbvn)XF3_A7ABVvpxp0*<3GxSqk8bp0U{c=r5Ti zDqREB0Xlj+0;=yT?Pu_~j2_^}a|4D1qkW*p8QmfPSqi|no~EtrXnU{UTBCFb+WE&M zf>zRe@}%4Me@ckW1;PTdgPQ^*#s2YR-)v={M-N1D8q_F3VY(F>EG{{H{aDV`SXA~j zsBv-%1sqEOH|42ljWLzAkjGG&Iv9%Z5>?^ii5+ECcdAMs=}+rrKKp}vq(5XKf5_Np z!7z$L?w}>S7orVpUANEFpw9ydedwBEF};kDZuvU4`Ud?j_4XS+r;x1bt|WsWx+8_g zuo`%iDE=#ey8`-6*cQ<-yLMm`XB&+m5s4kbyD9mPNovT|rle)uqNkskngO{kC zFpy1Di2!CPfcs3hCiPdpOE#$V5~xw2;iNvoU~$>J(U0X;3%iUGxFpT16xxV-NHhIOHVg3Qm?a@-l;*Z~qi)*1qT`U^?FmHxm2rexyLJQsX zt+4BhzOK;??^xa13FClolfu~ddv6#!V<0<>ZG*BDx1yibeA9!X2-ks>!e5&Xzx9H%UK(R0<%=|sS=kTmf~@f$D*r|$_z(0 z)PVj_qqxHz?^1)xjmbcobcl%uRSS)ZuKz%d2PP*lSqjX4kD^-rxPe{L41bOzAYBAC ziqzThKA~GXX@1vNN#xF5?oF*;7|2fZt^$~)0Dk=uE6oqlrs?;|JwU@WuP|6#N;~_p zeDbSF^94}jY?cW)mI7{10!Q`cUi8pxR^kY34u$Hnd5pc|y+F5i*gWaWBsRy>6!uKi z#u&(EvzGv7DS)q@G-tit`@VJa-{CIA~kU{;28fUb(0Awiu z7fqp6d>1-4i{o(`r9)7QFOmrQd6u$4>KYtwZ7 z18Nj#m`e){7B`m`(G>Jx*;Qjv*`1)qb7`c2V=3S+eaL__Y4qXGNTc~IgrzWzMpOq^ zfV+}c6pxBw6j`c$51_FQhtgeD`c|k>FP(5)q+2^vyYpvB;aEl!%|pR17|0ICSn-&p zczo?719x(K*MmfGg#bk^zdUDh2c>5Zh;yP$3y|gQow!kpaEyXQOey_ z=2(p4&I`ToolRbGIC!E_ICey19gcrj8!tCPje1!$dIE2Kp9r?TOVC1hof~$Y_{B*Bw;)2&hi{JX_y} zx=RoVv-REhQBov+q=JJv<=JGuSt}Hnt?vx+n5B5!?EdJoq%yao8#$`dgP=xnhg;vT z4JtP#7v({9fJUXVdq9l`W|qKYDKM|S51X~sKe0=i;jeH6q)VVikvawIS>4)6^9f6m z$em8*!&9&>$3S+PR|{a40=RmjmF7oi(<$p09-P`-THRWC>??h_%Ml} zSN(u~|G}Nc%f&uRv41AnH(TF#&;ta$3N=blm~OipEG{`&KbF24i^^UEHBL^gfMY4( zUK$^*F{ZTc&SR*|&KQdD5>?@z#e1=L)%V;Zy@JJm-TKZ9`aGM^C$jY&i!E>Q_=%9g zqohd}aC>0f%sCj>iym9w^XQC`CflKCrYGCpx)c3A8PsTqoYJ*%1-l!Vu(!TnE=tO! zgQ+%qlKV*vWKXvB5-ye!uGBqNE)CG8>HUmQqd>!4`p{r;bLn|1Y91_mYAh<-1Zq5& zwg@)V~Y;=L9}n8Gm`jdeK2>8|wr1JtOOPB<>pt(~cT z+Ivaic#Eo#hl1TPkR6T!N*3J5At@gBA7?zK=O31fkM#Tl)F{v}9Hj<}8;%qGSjJ#D z)VQlxjLlIn@{VHn7cbg_`hQpmh>tRYinwtizGy$NcRgD}$P7%Xn2Cw}0?@)(9g zr0<6sk90Eu$5Ozp8-qPVZ}iY?o{uB2c?Q%dNN3)()~y{jcb=cb=F0cI9(?~bb7Qkv zB7j*6;NuCfSrVT|4*;D8H3~Fjv(R91+3f4ba<0Zg_dlV=*=#A`SPHl)qrv8G=%Lx% z5k~-72Wk|g!{#?%NrE_R&YPFS<}51Fp4=RdfowM02w;{1c)haNyi}W3=`yHMpdp*D z87wZF?fqC9Xe=uG@0aXfoXxfZj-`O>M&PK3EJ6>>=36)dn=e9*f^^s%t6Mv44tO_- z%~4cgJ#2QyKsKAD0+^)$o_eRnW=5N)`#&C_A)EaS7MIPP{8(Q9LgtCe&VU+cGbi9! z3b+)3BQ}Skhi0=JM_}`EsCn5uQMY#3Jn)?)HZNT0W%G|^?o970fLRLQv#TsNYtREg z-+&qg8nU^k!Q!&HoGPj(vR7#=^nQM*aW=~Y97_TB$|wWQtdRR~ca_-#qYzYL$=UbP zo>Lbu)9aU|=(UoCXPd(hEztk*zf+$X^m{g;Uz?y`&)DC$4+;A9_x4N8!VZ}&#(SO= z^lb0%S&pY98gY*8h88-qnX}s?4R@G}S+-QJ`Uty=JhuIrd|Z>`dJ8y~0xd3JKuxQ2m1%XLEpnV=3TLAviPluI27@{~M#kW-Mp4`>0R{^hmcwkKk2d z;bTd|=M2Ck;P;~QPqnUC+m4>&&6($T>2*MLi|)KA_#?#MK4C9(SbxG1!ul1|ykUJ+ zw|2rh<*lT!9zlzYC#>Zd$PVi;VUDFR_g;k+*5kEly8h__8isYe!QzJX6)MplEI)i~ z!nzD%k{WBp=L$?#Tj}r2syZ0Grc+sptWq_d<;V4cYwT zb&bVk^8!DXoW`QES*UR~rwcfi0&d)`V6!25Xg2>@Y(l;PY80fy=7+kq!{#fmX%F1L zlX`*{C(rD<9Ru09IYR)m6u{pNx7a*eo2I}2^Z*Une9B;P**w^f<|wCDY;Jwqi{)tyhnYSFYMjma0*{Q)erAwhkL+AVZj%K<`kZ9(XU%@L$iFPhg=J(ho&G0H5 z0qHkTqez{a__}WG%;HC8YB$`P_#3S~o>_by2C{iwE`V7I;P(fciJ~&4+O$d^DCUL-Cs&# zvxZhr51ad9Ae+tg0+^)$zGaZb=7t3_^;P;Os8OIHn_UbRm(5fCSSDgP)IY z$5Ozp7#N*GrZ9HlF;wP63>7PkyykH zSZz!NXBmwO+{@%SzDz!4BVKbg0bO-UjMM|E^bn{~ru8d-4_nc$Ab5-Dxw=D;73P({ z9bQPviY2se1zB;_>hE|M^CHoP7|TwK0(z|=?uU>R?ytC+5+gMOJ*$c9&uUC=yazRk zIDEhC!3L3=8)t-w%A$yF#)wFdtD(lzqfj8S6o_*NFvPS#G|ADLM^KslFiZ6Pmkt1eFS}(H)KKm$FZ_eOWRjIW<#asM|&$tB*)SCuc(=b;9 zg{~6PsIPhY%(MHHQ=g4R#i@%sA4`&cw3lJ2)N6DYPJpLzG^dpA-A#e&p8#1gM(@|w z9h?bplDRDBuK!1wv$~^xUl~caLot>;0cI2iwTY!<*TNfk0=$8q)s#0M3XQgCcrqT@d+?XAhHyQ2LR%(07+z)C>E=QHT&iDyT93}J{IBr( zRG)cKCBPt+H|*Ocr;hryBg3$>r&>b8QbKd*bzDfa@wdSgNksC52%5__#THS;;N z_?yf!$)>v4m(V}~RS^0kn5je}tZM!*b}CO}IK3P`gd^~CcVMSYuBt(<-VV8~3v%sd zn^+>b==n|E+==Be=6ac13wG5fS`cjxL`3mG1=0 z)?_-UN}VTrEqmFz9G~fB>ljaqlS~ULQPXK4EL*Jbe^se^o<2o(pBdDYZl9&<&TfaN zS!U5O0pt-P)vz(o?64YE2hAWVE9TQtRq9^ZHC0wD=5K2%mXeTa$STb-wq{ks%T15v z+v+ifFE&v%>|4rtsAtfHIGV%N@Jy)DtTZzS!_)hFb#rG1{bsI1xie@pUGKx@jdB)) z$PD_v1H-Uq&~iypmXe}Fufhxx<1^3&SRaEL#Tr(_p9~sz23?zgrn^R?vZp|e&!Ad? z$5P;Z+Yj&%njoP$j#3Q)+El|$$Mbwj|H9(GRKtL(3Kn`6z)U4_LRZ6wFr1F%SR8?$ ziolM)8X~z==3?F4iDfG~0r0PE?esYk#S()^ESq8^JC^H(ES5sn3s-_HG5$lAi2&AR zP?KW0yFuf|a;82}anMv^JXFJ>P~)-OBJfxWye1YrQw5Lb{`CGv3`1a@D#(wGR?MOh zZ74dwnkr#>0-eL?ipS?O8|lV4eNL6KY(CWlPohxe3x14;Dqlb;gfHg&ifbBVGN)MO zJ5{MO-{M_<(QUoy7GYIt#8w`MmxrddFW?>KZyS8~LhC2@X*V_pM5u75%cF z`I743da{8!$VyNL_lY+DJejA=Qjk zs%G4gtJ#>(=yN8Md-7{rQ%|-LQX5s&XNOhlg?5}VI@ce?(HyQ@_d$*3kEvTQP4Dm0 z&7EA&nk#Q^-MWY_bLzTxe}Njs8rH2t z4H`Gsm(e#qG?OqMa(x`sc&--;JeC6Q01KYU^|QFY%AAT}h*&q*d8@#ou-EE<7{pg+ zEFxQpSg&frdp4X{cBQyhrCwQP<)fTf&c$bXg&yx|F~zi?RGL8pAv0MCGV@|jpR4RX zv#2SjXYm_BdREghO(Y&6vO<^lrKp7~^!%V11g*$)RF(Q|sXkv>%HP&hEGHp3%_`+I zTf++7fSy>cO3gJr3aHrR>oK&5Ky~HbmG7*&n;X;ptG0I1KZm0^ob-=EjV6*wdRS7K zVY<1K^f_}8%uV`%FNSG`K_uyq#z=P37fV*Ll&o5EIg(zC*VD%7`Q2mKi73`E>5nsL z+@#+`-{_>b(M-p9Ncu@o<4NC4;IR~VhX?QwrC_n;mu;*nMbAjHvw*%3Jr37 z7R;w?OE`52z*Vr&(*R~FkshlW2d6H-9&N|+dmJH_OQA;jF|kCRsmx2dxf9F5=Bk++ z%eS5n*~1_b%f1-Nj%A6E#Zt&hU4~eS@nf`cdVjG8YZ%L`4H`F=Z4=OZbrh3=ST2DY zk7Y}N$5P;3acKz86tKIvKV84WFhs1UfKl-}znV&cs;1D>pEb|sg_~xbCn@YQ7tn{_ zdh*4$;BQ^#YNIVrK76U(PFEzqLja_smPI#GRG>FIksk%x%#F@ z**1Eh%rQ}1=AI7DNj^Kmo*MIUG>6OFn@|&`1}v$}eY&|bH7YO zs0pz|o~g|Hy15g}@lPeia`V$+EHQ}0as)=QV_7O>u@tiQya=%r<6X6J`u#2s)-aZL z7&LAyuT4PnTN@M0)llQH%n3Y}0`HcdAv{y&p5*>2^9Y6^V)K=`mJ}+h%z2W+E^`5W znDV~(a+#}2ZTvL2qtJ`rNtSB<8IDGug`=i)G-6AgqKcDnSfUUAE($If7cJ%s#>MGD zkMOBcab`?4AD_3d=+N0kBYvhbS2SuR{Y%e4mT=7@S+)mDmAaOCA1 zu=TbPB~+7gs(C$%M^4>X#+!wbT&3zt6y_>t^LC1~E|t|?DwoxE?ZJO-RGfO@eU!&e z^w!l*B}C*0bgGe4rQ}orbt0sx?jHu1x`zP{`aOhx3ZGP}UZyK++;!!J zLD$h!;cR;9+i;f72OFif!*Io^{_@@LADHhd3aK=*$%P;BXT|Arf;Qvj^GSg`?_(xT z&M(tPqYYn;Ym}NwV-aI>_vMVMrYitMMMW=41Uet2B3)UrBiCM)nnM^~qgzvS<$n&@ zAzO_qip6$M;AvE`bI|nO{p_)Nb3IY1TZ0cN0og!#@Zsr!RrzoLe^^s7jD##6tP1!_X+2ux=-1Y=@C(6iv?LjC!VCzXy()5Fq% zL8Np{$4GYR=uI)@Q#_V3H@`n0b5o4psEyP6p`k{xhNa^)gT^f#S0|v^O`}oSBB=4w zQ7-UU3cQX4kD{t0syLECwwzhbk!}-2c2WyO7V%Ph-9-?2I!6e&Qbl`lMp^Etqt_)!Vnm+A5vRxHSn=7je z>F(R%%mMv=xkc)g9~I^fnnOjanEs}Ne$u8m)110#eOKr`@p;DRJ@lRyJYffrdZh$I z&tSonQM|7Fs6Gu%nP8UkU(t^R+;t^`i2@%s;T z8Ov)XdKnRe`pM6hB}Tk8Kgw^iW*=F~mdG-)WpDA)^m-~w$(9g87!<`HQjkR|(A zn`|Xp_^JOn-{+j?-uvA94nDtM&$)M=bDr<>J?A{zd*A!!`CGM{VSEfezk`{TFLtJl z*!AR;8Z!%D#FasN3{hzZZI)!vzU>(Dxd}FYH91yIM^hMz_k%TqJN0IQGsF@P#mA8q z9#XGeU`KKO-inO=dj=Q$`Y$qGJvp;yb0XK_OX-gW3$*w&PvZtLmyd1C#I>+ zK1*-rxQXR^SG1{Uv?Cb4$(GE_5_G_Aa7S*v-*{q{99L@ zr=Lm=bQt{9dkpirhoM|Cm|OrcnRg8Wic0}Cz=B%TIi!!HzL1^EceZb)h;L8MUz10@ z7I7Bk*`AER7~H8hv&o(fK9<<=+p^iv@ykgQoiIV)+nB%nO0ku6{Fl^i3T{?W$2U6r zEQ#ZvI}&v6bvBUKJUybE6xz)z&>YQgk(CIY0&50$>dky-h$RMkC0hxBR*QJ^i(K1%}hEN;RCONI*2$)yfxZ3y%%STnd&Z(5xpmKf*`aiBv& zpy%+YO^cnPKsU8OSw(>^clKElpf4N_puH66O0HyGKOzLWXexKx;7+|k9jt0uVxXhh zO6d9tA<#D`1L)+UKu5szELKsV95yxwSQ4O}EYOK(3Zu1j%p^dkhd_H;ptw_SN}VB= z80ZIw#emKZf$naBHWmfC32NeZ68m4EliURHL?6V|57ajtjH43zp zzuaem)`dWG7AWq}p41s)iGdon61sjw2y`0@bWBm8-`oz@vx)*8b~p$c{j;+{M{jRxxU)z5F3z4<3qdvqrtktdH2gRSTisE#_q zOCT;~wej6S{B+;1^g*Wuu(<-D^S>0t;nRIbI7DQO{MV;TCG~|U=y7(4XbSAQ2X3Da z7eq6QEQp2+L@otlKZ3}s-A!+>2M?P@4i_qD8$!>43Ve5_bTnHx*+bFDJZuo;ln_t; z9ZBZcWagFYVR9myq3b(r89j^W5Uk0@O|V}_#EzUljG_HPAz1bTdwz4f_1u@(f0{Ct zGr-#Kkgv3MgXf;L3-vCx>L%H!tqC|o2-dVWv2~@bhP}CPBh-|eQ~737emWK4nijLD zmc0+v66X((TFlTk*}HH>Y?#a>h<-5YgM!xPFs<(GhCiTTE}Ss(#G{5i89jg4-Fmk3hM~Xc{kOOR;8&Av>A=cV-D7+R z4TI^7uZz`&WgJF?@ky{0Wqg8kiA(9yk2PRi8b3uFr|ti8?yqw0Vv_O60*_09cR0bLJPJCEL1QI^>{NZtK)np&i ze&LY7KYzG`)b#w}7RdJeVWN}W`2%>e=MQ^wFHE*OI%EBnJb$nmfPm)39t{h5>mn3- z3kggQ>QUJH=MU3qX4-@mP4F+`poSh6C^`{t#cK~Ui&boqE&YR9RxxsiYd2>|024 zE8E8b27PQ5Tgi3aQ7}D=RkV+@oqd+1k9%?xCb(e(4mCZ0xEfdUs%b#E1Y$hA-TA}u z5v|zy!xuDFq$lA^H!*My`^fo2N7#vGU?U;q$(KtB@pJnEX=_H1n(W6Ai=97w>M)Rv zSnBml!!QBHFw*5ACi8B-fZ|d>eb5J>j!;l^9B$7a{=;|T=MO7G$G>qSVg`5WO*7fE z!N(Fi{(drB2%e=!R_Oa1<6hsG=g&v!iXP6Ql~YsSj+`R}TyTYlsRB9iVPtP(_0tvH zVfrctp)uK;C8y`uyKj5Q9dfM6+GqX+;+ zcX>H={1b-oW zMUZnT$mj11w}Ff=xXA=6r!I{6~uX=Z%4bV{HlyYe4b8iCoAEG2DbF9dX!=v zgcmL(8*T}CI}Anhs#O4UDS$U2z^>^twQ2f(1jIPd@Ozdc9Tu__%dS1sv6L$oI^Tns z%&+AFj!OY|>3_iHB0JDjxyUxzM%YHdjallci^9B3GezZ4V;`5+dHORyB6*(RPB(_ju`{Vfoa zu~;hLxD;?d^m5?r%H{;tHQA$Kf(XT;$$qk8KT++&>s%V9$yu?7aN6@25k7=d!EP$# zQPk%v=_+(TB8&784!q0H`{KJ%c27-T+@sHX|4w84H2aaO9p7}; zKO`Ka_Ddb4WXl8dCcC9pw~^sKa$Qod-XQ8?-q;0;7Q5ty5m|u0qeFw65z2*qE`|NN z9C1cp{ouZt?A=hA$3c8EL@zenccb2SX#CiCh$7fdQiWMjH2+mJCbtj7WN=gnJT3*^ zoBIGBT!ZL4x)4S)^#}z0Ho%0)0A{kIa0PxY zw(X>U8vwy&vPWoj&zGCgaF;&gTu3>m?7@imavfNTrg^21#ifunZEuhzjlYY<6R^Gt zv6wG24vp{2Wn5C6RBml^f1^ zdg7m-KS>FO=x45$Hsp7jUpL|pSPOZcG2C~Z>L~gP!PztH0aWz6PM6@GK4N%aN{wS& z4H_bblOaqbEbxDYV3QP`ZK66Okb1%CYx1zHgT}GAg7Xf674YTgzM=r&WxxL(gZL$r}0ML6O#({>j$^8zCA7u-8^5?xvd^R~+ zv6$R}5R*YxCE&Oea8s)sI6Iq^v98IM!h{Vl-6z}G+3j;>3^evM>;t$`H{}Gi8ESp zv|BeCBfqS}SM#cA(EA2roO*Y%gO*J8Wv%WFM&m{o3zE`n!}Ny{8H_H6rD&8?izB!c zM{Keu1|w;_pEhnXy;87-Cp#k?8b3@%U6YRH2VDV~+!qj&aZ)4jxD5H&VnLkI_unIH zqv&&4^F|i)&<0dlA{q;}2Ldbm!G44ihikYvqy(y;uRmCE%6J>JBuznQ` zMFVb-c$7===m)#HQQTw?)}~En-xQ$X6w}9H@#AgMs8lRJ{lOFv7L#j*m<+ce0**@o zmkYt!DP{)in(VzWL4*=T@hPUpPBHAU*c5XF=T$hxRP*2I2Q;~$=f9~4M0GPND&i^j+exSB@)VrtkS_FDr0?WUN2vsL>2PK%o&=x@FpWvPOL zbtpnJ^#~80V&2A@M}7ISu7FJD8Hh!Ei8!P4O|9Lv)IK!j$W4(3y=y*yp$PXM;MC6#{_Wzm*Rl=J49xLKUcY_YdOR?&~QfB)nW0&l4RlhH9*z;P+ywhzI%;5dfWO}0O*6bTM`!_)$NPvZmn&Oq7Nx9MMUN@u8O z+LoySlW7kz-dAs${_HPd#&gO87Z-ENjg&ztPMHitQKw9mesd}P-fjDcQwD3(CUYFb zIMC23cQ`D*Q_9k@tgl#1ZViY@r%V@cTne~J|90SWIqp=O7FF~ zRNB;G@qKU`rA$gZjDa~M#uX5gKA0`wxD;?3hTxnJda*h^D-0`1ALxlsX5Km7OE@{M zxq*hyLeP786~BLN{iggrbj|;LyRMblWd+>jH#eNhYb_Hj#$rs9=oMX>nauML+jQXV zTHABrsTUM;;5oxnNjn0Dq7G~nj<^(#e%LnRz^$}t`hHFd&@hQ=9Twk#-%xs`II!t= z9vR@k|AUxx;CuncrGPt(!0`hRJ0kWp=9Yhc1-JsO6rci zRfXPP2(e9fWVE*Dj(3I?bH_4@?i31MTqzW|1Mz0*F_+Tgf&YrQ;|6F@-)Q{{F%C3z z#{!4NcgN6lELDodG1;47E!Caw)xT~X&dY6Hhu`-zf1~%3Tjg83_w)AJ1pQ!2owm0c zrtuG=@3bm%wJhd;yV0I8n{1$3)_G^nUe7*|v5>~*^iPvEp-~BOZ(nKN<005`&oRvW zNr-dfVF`Vrj?a#%6rK*&3EQ#%GM~hvN*O1 z#b$CDh)JjNlim!LO96X#r33r?4VE{Tqc5+3Q=jJ|Wt_yi!!5}7qeoiG#^&hX$b({~ z^zkm9vZ3c1PG|J_a(v*M_Jx2MbyR`A5Wp2^A6!{eZ^{X$eW-yYc~EQvLQL_o9Z+d} zY^E4ZrW|6N-m>wL_;~MnjgPN>40}e0!Y)1@9$G9u$`~Y}>n8D0fGrmvH^E>u$t#3% zE`{=)w{(;r$#7-M(LJk5l>iYrJ(avnyo0Uo3L~#3HP`HN^eNzeSgw0MrP_ZVzB z_MToQ?77VECS-9bWF6Jnd3KnCG6I^^U6Z*GV!Q*PXP3%KuofYsFe;CJ{PtNB&t>u+rJ%i7W}J2KPzI89&v z5_pH;&S9L|<-yHV@^C(w_K@dqaOwK|HgEp>Rr2?XQSuPbA$a1ty-U7D4ZgaUu4qV} z!bSbu)+rx$qtmo*vRi-)Y4HZQPj>XoXqUjEk{WT0~+zbQxVEZsStiHhNQ9kVODI0VN=w4l#~6{G!b_ z4v`;T?TaEhS`pFb_Yjkj)n6cTDG*yKkjFa?qE*>M+sC)`RF&R;%!cUw$KP;gQ$C8F zQ^{j9eZh+i+NqW$etz(qWi7NU`{)#CtubF6(K$iXLa6qRQWyNs{#_LPe@ z)RCQjW;d7uVwe{bgx1`j+4dzWfMc+?TqaE49zU z&e7U7^xWa?$Ww}i-ZnJCVAL*LNH$#D)xl77Y#Ss_ekfwWS)AajwDL})G zz=aNrA9QzO^@S%!qFBCcl^ig+_aP=DZis;6Qox}W5SCY$XXdo%NWPEclRWP$yg^8}DIId%B z_NI)*g2wX9bh57sA$t>ia43NSs3Rh0Fq&OS?IpI>!! z8aH8r5no4>ZWylSRnwSsI>a`Uu8-FCl5Tw(?9vw&ztS2sCF%bBN&?*t_R|R{?}fOO zxSq6;i))iz01W_r4q_Z=m~dD5O7=yxZgK);9SymWp$I? z0#*oWEa^r!()(KY=XyHir-pIyH4PCI7q~+&oFMx)TUg?_c#@hSr@i`R)M?M+3S2x6 zG0ufIQjXW!p3{z@F+JUB$1*71RmDfj{b49NQZ@=NTnaCrb#T0xY)5U{WY$Rm8anMj zhsAf=J13`NdHM?pAd`C(V$x~z1ssP4)~}Njj}Uoz@UKtsi4D26yON zI%MBEjU{&48q^FqZDW|!rF^M2U^0Jw&fwd0+6Sm&;Y5GK_-+~v(w+8yC#4c~Jq$&i zwpe)KQh3>+JmR#0+O)|WnF2I)+9Zd?cUo0CmO!zX+#jDY1xcs12skbU-1ssF&N=NF zR;Tx$!b;L<^3~)H`Nq&`GiY4kuj65uG_7RcI*lcE+CkI|Iqf8vRHq%G4VX*~#5SGQ zRcm{h_WgijPTP_}B{S`#7G@{vwB^DJm%_`%8#rD}_CaV66DD&f#5mBHGGRmT={+9(>VQk=Fe3`Lz*N+@x@N2TyG zZ+*v$$^P<*FhS41LW~0qowkF+;yY~>)?|sH`Zky&EG9PrV$x~l0**@o*EIy^oOT$i zo9qFwl5|=f?FD!rkZ%c{HjFXROO$M;Rgis~X)LkRK3@+``|V@yy*h0vuBZW%`2=E| z3(slKXl>7FqmL=(w6Cy?N)R;+hN4cZ6kfO#UNQvOt^TXEY5M)f6riEgE_PUar=66J z0qO!b;L<^!OxwWh`{q`*Z?94#S;#)17Qv zhq1&C+l88-EPL`Wu69(Z?oq2;MV7eY87(dPcuy&B0qK7ec~i(AE0nBokN12<8_s&W zi#NgY52Io5Ij#@}??Lp#AaZa#h0NH^;0)EW;ouIAFF2}LIQ&4vAaYm^jt_?|w<$ah z2BTq7Ot zUp`#f9;;ejh8%u)F}A;>;Va5^ci3`l?*)TVwg*WExRegO9XPgsyjY>Eeoq{4GCxC% zcOYbY4~NZXyVk>Y6O21-cfc$L(i?+gY)hTo;H*wucK?E(PqIc3^wOJJHzw5?28GKEycK7~4}X z)PQjI#3b8e1T2>V_P`MA5ZH^1{^zn8lN|zU#67VXIV$AQ zA7@VOvO7UDa+uu%nwg!T=^ti~oHyG}96Wif%TEu>=PXOkw`{r9$`6YGUM~(-PB7F~mRwT3O*Ed$T3y$L(eLKq4!E{x~ZcG32 zf%P%`3O*C`hfy65_SGg#W>1KIgzmr(KG6S5=m}@LI4M&V8=mfm+}}H>Sa{w=1D{Pe z7>d2RVeVVve|K^=LEO!yxcm4Lip>~^u~0*1T?H|YJNzN{xek>dm>ac$YI{Xxa+MI1 zQ8`&)aw#xpt?tGQ|L`VvNf~az6_CCIF^*I>0z&TNTHBKAJ_fk-z+&Vc$*Wkq<&M4* z;|v&z=KNFv%%uQsPk`MkG4|A^>Gw}kfQB1^a~u|*(qK1dl%dc^4!(^|8sYHTvb`*{xDk6z}JTx*#K_i*ivLfWw;F{#Wols5vSEOyTSS7>fF@K`7!@%>ksj-|6=F}V#PCjB>Cz;P+y?*AXMq2={xHoS!^WJ43gI7lxWrfF?2 z8_udJ#^&HdQrSEXhN5gX3Sce;@UMSH*xXK=HkmC_fQD=ia#(yeKR-AX%Nq+_HoOQi z$>w|k$EAQfmcUVL-T)1a&8u+*HZOtLCYwiVZI8_@{#%UAZs|S9z)+OUW&zBl0G|Fw zgv}3Mle93IW{7d1A)6aIEIymlXdq9?laVk-SWNCBh)FgV3pg$X+{HqcVZU$@-z+4L80l!DsG|&LhQ4r%mLpEP@ zSbR1Ir(@Yov6x&ph)FhE1ss}&nTmkraTK_k-ujpQKh zufF_;--p`<&r5GGy6W;Zds)pr(=~OqWmkLQ*SvVuMawGlz_0jz%I^!fqZ&%z;tC#W zff)Bt*?9Yk*Xz#Eh4#~`V57-Bc`|ChV$n2%MsXWWJ^I3oTkf9&Tha7fE?lGb53;RSA?bzrW1AOs1{3wt5TI)R`~h3eKEk^}V%~ zO_PJsCUbeCDtOL3uDX~r@7>=~w-(H}H2E)VMV(nLOmQhpef|?W^R?47Pd8Km^!#56 z;?SA>93tPDn}vujfL(`Z)=Mr;9)y^5W`#iHQXuvwh%}cChlVnHCa%EjK#1|6(*fwG zQ?+Azse;Gs8oi4#dmK$J5|lGw#`WX-7o{I=MynLqTng+lE120~4!~?E0rA5S;%W(yq0mL{?W%ia+l-W;T zU^Ym>WA^@>_Jh6yK@Z7<@5=5F_TzAvam?NbThW;9F0i>2*gFyILQvrVoTvay<_L&! z#38d29U`CEYiZCIUpJo29dn4*P(&v8>pbpglG!SO$fZCmEC;hMLPME-5?5gMA&7CD z%4}}{;L#wj3Ldiu?^BG~CK_U;A1hCa^To@auh(br#G%cZ#X=vP;CW%vVJ0qGkM<4C=| z)eNm|$#th-7gQA^cLVK4{FP;=z)+OeK?0ad0ley4%4$8`+(nx3kn4-14Y#7|57@L*pJva)6qHK;3z+4L8<*gAmx6!8Q^Pd!;A)5mn7N5=A z_fBPV!P71qo`aZVbBuuFQotQS;Ar%|4jLMpSKwwc$EARK>MIA%4bopcMZGfFkGM##f6`9D z9)m{aL1-ig>BO4Ldj-TW+u+dj24f2@PqWHu?vk#lt1bT&j8|QH3bypUekB}F8$8av zjl9erZ?{|dnB`zj1@Cs+@$31&!mYn~J%1xA#jV9&&p)txBGlyd_x<*iP>cQsLmliz zUVrZbu0edtrTFxVFOVVo_!#K@xVSa%AH1Hwx5MYcPw+iUQxH-iim$nWd5YjOxo2^! zjo0(f7UWzC^6f10QBc*~z5rK9nKK~9Q$}}KJ07Qd*Zow%rnftm{C1}V=e($;pG5eJ zCIXw@J-!|g+hP6osO?zzdkBpJn@fQ`>~l(@UGEdrZMfxRWc4qsbI-~Uwr zCetScameg74w27nZBaxkFkoOIvIJt1*;awbr9iy=6L$WSM{D%+FGY8IfP6&1kIscm zokR7PqJwX@;9qDeFI`b~{Cs+Cz=E)UZt5Mv&715=kr6C%;vw@{DdpJn)42s5A|JyQ z{COY5RDTBR3RaUHp$cB6%-^nQwxZ0I(9iqglN%}p_Am6s@-UK2wyOd# znNBH)LuQY6hRv?pZ(JlY zW$tEwn<>4xd3ygFP>_F!?ntKCV}TCz{bwG0y9Z%BVdSM~YDZYDxa zcL0a0LblPWT=#~3|IUILj8?Pm8C)SY8X)?ykvxDKqbfE!+yPwwe-(?4S9X->NI8J( z32V{#C>Qd%6!PDBKYkWtvh5Uv$*fG9rH1QkcX~QheuV7P2C8W~bDG>O5R)-dAuzcV zm^%?n8rM#ThBACCuE6ji5PgPY2RPenZA-2@fcvRSF>`DR5 zr2xKSF$J|Az%@VvK<|YZ2O4hcmN+avrN7g}m4fAH#X|2tfS6>nn}Fj|z_rkK%2N;E z)@BqyeC|6D zHtqZipmzR^0}a`H-(m6DTrV9TMgWN^h{(!4J>&eDJf&N`AZELw$G!(84PKe7L16fCBD4je8S${lFi=$qJxpT66_4 z2UiI6MNO(B>fhJLMHL3nP&1x8!0oRTZp7qiK*hj7xFY zqBm(Wh=Eu`L72?1_i%^exWkX&svIgmq{enFj_PjML|okrF&S4w1SXdPa|eP+W8P`d z&@4R$S77)ch;gJ|mTsrDy)6B4^J3(_O7n3_mbTo@tVDUO6Tn;w;LDm_BADzW&;ZbT zAjW})S^Aa3;#2zHbSy_I7L)4-G0Em|0mr3)`{a$d(_N|tY{O(%-Nij5yhPRCr0OEB zYBH}uBbll;+3*Eqeh~d$R8#-mtj(CrbymNv6~Gx<+w!-Mj?HL3PVrwQ3`PAn zLMY-=D0=4gi2r_=DtwsC7Z8j2udBo2`|swhQ?c9xbI68zh)MsA5pY}zxGe}Av3U$M zl+Av)LXh=>7zgQP!)99BWAlqmi?R7J&BrNhzI7*a6J>LP0OnEvpS>``=2U0^=tPKd zpkX$==dk!}9-EG3f5l>QdqYgJIa$DQDd3u41DoqWL)rXuigWpLh;fh}n+vtJ$L7R} zVrMOL73-Km@j>Wm=9L$tpKVNfXVEbf;c?vIoBcbBcnrz z=vLTuh(5f{1xGW)WN^$Dh+GQ9(-t7rra(iPoq#Jan}?Xr>@Kcj169FecH3+*W)JJ^ znEj?_?0|A3*ordSD6qK{*pJL-W*eZ{NP+yxt=xGaUIa0YIAk{K5c$kD(M&JCu8kua z35$e?zW)I+$?SZA$fZDB4-kLZ%R1j>-tKI{WOsz2MCRe++U#N|MV^vdeG4mPR&tT@ z0JJx!zlmz<%olJ4YGzw~Z%(&qa;g9|*&9^BbLN1JiaGNpnq-B#&M@PGa(~#0IFU>}7W57gd@j9Tb4ctd)W|bY_i165!hS` z>}y|QX6vEZNKy9`lz?~!#5m%R*&jM6BA?ktS^|i#cZnk!pomQFP>4xpTLmJQ0`bci z!E9$}D6?g_0?zgj<2aSshCMW7KAFU9kb=kTedXE@{{iTdupei@jEj&PU@IE4%LO)< z0((b-T?lq|08UT%T~EeWcv{@Fr$PBWNM65JB@G#{D6W z+s3xpx2lSbA-C5*d4pmx^cqdm@L0-T{~%b4Mo~$*d>TZhxM<1T__ohvvkJmw)=j}3 z?)49HsQftU)ds33Z)B1%`aJ|O8A+uAlS_eFO)!b!OQ4|)55*N29t6>6ICk2f)7q9? zciJChijjL2&D1s>VrM8n-yl73<6gM{=28HUZ=}%IGn{$Q0MMr(#({?G@!!{1EIy@w zc1*=GM6sCM2@sQPRtPvQ1>B0~<4$)=gH73n$!-W!gqNs_WG0pdN5#K%zT|q=$h2_r z_v?Z=sHXmV2v?wGs@3<_1u_3!p|w5#^<7Un^9R^BXmU>R-|jFJ&5KH*h)bd9jpri% zTT`1hncpU$qcNbN|MqfNeE%Joj%7N`Asg<1nDk#a0mr3)+m*mkHVlP^vUvioz~8GRm4M??z6?Wdx&w69-E(yliD7e50n;T^N0?q zY)*!uD4W#+m`ee?8v%A>%V2Gqe*X?)9B9bq9S)1n<{PviNb&6YiiLjv4q}qc8Ue?p zfSdG;1Lua7d4}kr-@oHRmPnCdC2g-i0UDWlX#9iO-h0gRFx%h(=?%K69w+wUmz{ZL z*S-GI<@nIQc?Vtwd_;e+2jY6y8z}yv0iX>K<3PhyUE#3!l=ex-a*|>(xuYQ_ z*&HI^xD;^TJ{5Pm%hwIrhRLo6Q-qhO`kQ=hsb`JM`&^_f18l~*Bmc)yP5n0wSD@t< zs~?+Py`lCZt?l`*SG!{VtDr?yivME)oj9%4dN;&4&@dambXa^gk50#Ogkmwd8i+|Y#|Sts z1>DCo!RE%$P&P|(1(1JTgV=5>Ha|cWs_n6PcS$ieZ(k>s&Ff((%H{+C%%uR{fdIQ@ zz(8%9-v6BfG-PvY zq9HX^yvC(??fu8%8$**_TS1u2|3-6%;<&?QKre^NkE>={AlPL9h>q>0r^6-&zB?c$ zgKN6LuIgd2JBD zTngZk4K5of{-FV&4?v6q4O8`7hsCGV1gXQu0L4Q4ABagdXA3wk1>Bd9#+~l+bv?F0 z-~WfHf0VE9k7SL^TU?|p1H4ZO9zr$s-yOIDEjL*GwuahswYKNKJ^w7`zmsTDl`{4I z3x=ZpYZQvO6pH3P67k>9Be-_}x)fqD|84KE`2PEt76>U=ZiP8y!+3~E|IHV0Tne}@ z1dg)d1ZXImhvEt#`#_9?^s-?qt?jY7^!H+HZj;`F#aA&mQ8t?eFqZ=O{D&iK-Ukf; zy$xaw4K$EARKcLvxjgNCxX2Ce||*DDd*ZN=sy zRH51)o42hj#^zURr1oGe3`N;&5x`su;I0JNEdy$`X_GlP1!&0Tc!$Mj^Q3evtF92w zn%qwilWevMI4%X;n1>uVH>}KLb(4JBE`!G3Ed!FD{O@NQ+$X)k zVy6K-v+HR9rPr#o?brhn`mj8x!u6|7(9O789SX-dVKqJM`X{z8cyW=m#n7x^nDt7ek zvA9#LADhBfl-ZIF@{tLZ0(<6kW_AiR8Nip9a_52geTZ?yA+wt~L_V{b5Yhf|MAyP1 zAu_qkAtsqE6^L94#14SCkwA2r*OM)n>~1iWo_X1qH)Td5AG`%n%B;GCdznl=Z)^V^ zs;M&<;0n|{XZ5{t(|+=QIND?`C#!9 z?8Oeivrq!!$05cMhs^%`qayN|T`NSiWgO8UMPzbEK}<5+O(1e95WkrQX19TcGMmK} zaIOn6j#HVPvavGzKbYG856A2=Fyok=3|rBd?Jlsn6xh2F>_X7l z0XRhgm`p9iIO34mTOA^w+5e-(mH7IlEO*QyT1yd`+@BY6N0ZD}2}CXh;)Ht`;-xSZ z`Q(2NTQJ$jVaPHTnfh@8knIbl$N+RTlrmR9DLDYepZlXjfS{e46*a`U_w#1@Ns?DeCn@|Ao*1(0LH!K*ObYdxyoRbpLcL=PMSI8v-%O zX03qZQo#LnXWZ#-RnUcPm~3a5N+f04dVIxstdaSai@#qIyohS*zbA18S{}0c-jX2Z zzcE_d^I!jOi}|k;EwWPl*BgeSc`-;R;!-I3U`oV)8Ex8R)=U8!`mc|};`?vXIR zsFPSSx#e*Zig!n;+3CCxy)) z&y^myY^W2!Tngap?ufAYJTw4wCd4?p7XTngY`1lWx& z=V{aQ{x^tmpdp*n9TuO>PU%=SQ7rWSH;73##|Sts1>9Y?IdE=RS$H47&_Hq@nh)gWvN&e4P`q zP(7=g>?l~VndZe1{pMlo`2+X|(M#whUG$1_`ZwhV(M#I9A4Ff!!l3h|bccS~zB2jK z+!fp_GmBN2=*pUUGnHW4Usq&_el(GPn){W>#Aa~Lx*RbTVvWFlMk^%xT}IrgH`ARa zOZ;<-w?M5o)VhUgk6Sg|sW%NyjU`q)8EWNFs|wXdTQ%IFpQ3hZEV0`5Q2T5h23ZrT z9ck5Yr`|L=HI`WI=bO22k3+3CRO@QhaHrnPcWNxL+Own<`9bs{q`4K|m=&DzDOj%) zTS?a6qE!&F&ML}!v$M|<*=N>|JW&^JRQ(A_k+n1J&8R=AY7&QFRY-E3$8=)(}>K*OY4=CJrlH|M)lEGH@!lRE-p zGU-|b9G3#Fb)p03lCC4Gn`{PF2r97@Cf(@p2hm4_aj_#~G6r|*O)J^A*}@XX#l6%F zIqm7wqfVQFD{yfa#5fn;NO`5!_MEo=XT_X0mDXh`PU`_f(UEew@WQ3=(tMNSh2DRn zP1E;Z26GSMKtreXbXa_+ZJv(h0hq%`IR#?UX)6UBmjZ6L5S(+`Kvp-|T3AUs&HW(y zgwSadXw^qf!yWpW<_*KQHY#@WQ3=GWdGOi^<*s4Mf*C zh;g8y)0!O?-)WyONyXAzv6$TM5R*>pCg8Xfa0@0laL#GJoD8S^z(rzRJG#;RAbLaS zw4)i5F}OoN)lBxS(^z7sT|>=~({6)Fb(+xz==m3jaW1?}8>qECr)~RDF{dq{WnGHX zHin^Srd0_qTnaCbjd#4z=N~5t6ZHHa#5mBoAts zVU^SbW!YbEbG4&7&Y|zAQ4KT1Rb+`P)}BH?i0(ZU##=((Caxd;Ao|;@deWl$fAoh! zFo9+Ic35yN3G({5nIuNGiO-%G4U|W5g+Q4GvCTjkskOa8>9@F8pltRkhr z)M=haxfEY4DntThEp6Il{yc$u5C<9tO3q>N1LbB~%ccbF446Zp+yyZiD8mIDmjZ5& z5S$B?lUdzlkAoFIQ1Dae6bY>d9mLzj9k5O0e^a)JEfh`kf=3RMuis+O`BsUqIQe}%^0W25(nWhs8v9% zlwyqcs?^6*tQzjrn+Z;hC05%TYD@p*)+$1^-K`q#)SJmpjU`rV54ESE)-6;EtQzjn zF4(ED#A*xcxo-uiRfTHr@)p||+@US7Q)7wMCXrfXn^;4doh|Dl-URFY#a5E_(J(!W zRh0DxXP+gq&#dprO_-qOxM7M#!i34Z z2{8^dblOG^i|@3Bw5(0RG79D}QeF%(>9oZHj!OZzehAJvt%}u6b{AMlI?Zhp>q4jf zhcOw0JN2f8>|3X?#75v~9I%li554Xy~*P9Twkd-P5rwJemoC)8;`;I&Hat<5IvK z6M}P28_nt_dpWEmo#wWQBSNQ5`w&jUoqDs9>|3X?#7^r-%}}Oo2b1cw&9niNDTmmm z)4o57`)A=qfBt6H8^xTq34=;z+B6u7I;~_QJ3MkJy!0L&aoR9#+GI|L7zY|U?E#0y zciN4#tWCjEp;$~V12O5eQUS-MfV+E?1LvIf`jK#26Boi#ba-^z#0jC()@Dp}Aj5a+ zO*z@OPGgCkHjtVjr(FP(>a@Yy0Db=xVw?*v)2g(#muV%h7jxRB@23*A>oo6iaM>k@WQ3=^3GL`7n3d3rcLIr!?*`=prO-x zJ1oA_j!nn%2+U!4ya!^^X;lJ_O959Ef^$wgmDNr51XxKr4co+q&|z=B3y0xOy{RVK z)?qBM!+yUK4%@hitA*Rd8ds4euDHul$!#L<26dZAUSH5Z>h))E1+OIs2s~2oVeczw@!HZBXh2HnCAm0anE>i&O zC;*dLb!dwFFVZ)ES35+$`-g>y?txv0Xa+1I0`7vCjDT8!$fZEs0}yKkq6>n7Y=O?d zVaN}Hz<&6P@1F(}f1=)*;K^s1sd+W^OIvSbj~DJ3M2*xGW(`5{Y#kTo-Vs!s@WOJ09+t-X<+5W0!HHG$Fn%Z~aoAg7c_K)=a z%=Yv^-RQWE@A2^HJ@&v-_EINH;?{Q%76N) ztV8faJF;SeO>C8F)}+f)d)eLAJdut3!WC(xdD^xCBXs){d%Jt&cKJ_bC%z(0Kd)Mm zrb%nMYK6C*7NZ)(e>cGzoKu#}{mDNy=CtY)UO1{|G-u~ zF8z*BW4eiF{{mlEdnP)p>8eu#xTsmyTx?kC zfP>SbV;}KXLI;=pFGUTP;>i;(j09*bYT8lP?GWfk&BM$y?&FWs zZN=RD6dkxytoST&)RbpFpzUPY&U4GI*@&Y+!z4<}Vz=S+$Axvx1*VQ3#g@D`+?9x)-BoG9C4%(9>bfrQ7h5C5@7o zif%2}ZX2ehq(NYEDKK{Da)+{W!I6F z=*&=L{5|*8V*Gr@?EYQwv|5?WSx_ESILZl&02-HWhRG4A++5ttY9&ZBS^twNl#RQrf!poCt-{Zp~d#%v(pa z-IVQC2^BmpaVbsh9BnGrt#@2oez%rUhyS))rP3Cc($))SN4gbD^ZH*>)4V(=r$6wF zX-nGN7V^Be(hQ)I_Poc>PtSzitW`e~cn&^(KB)$G{|xI{Th`8_WmgeXtyGidtKF&X zSW>M^o7T7agvV}LuLqlUuUW7=Pjhc2DcM~tk0Q}s>}z!W4|lO+ShfC+5h%=56ceXY zLA%%n6lOLR+^Z3c$4)*nEY7FD#5cCXopb&CI3VI&=>6@+_Pe2Qt8Iis$Zc$IaIN?u z^d0?0Lnx&cWX8dHen-9!~*UgM>xtxn11Hv6Z} zFP2>Uw~dzkOPl@J4tepJ#W=arwc>NqN`LuVPGURcVbNBiUAcuqAbr*=wB3m9${-pf z+zvStZ6xO2CtNFjS9WZ>73<#E4*C8wB7{Y|^7_lgy3&livy1kW7_wc7?U474HWKSf zt82yY%CNRuv0aJnkUts{=}Igf@8+XaKOQL-8*L=>qK2aRcpl|aqWM&-J;sY>9s%jV zE>&e0tHML3mjEW{@sb<1J^(Lva4F0}1Locd)Q%mtczlTtTm1dne>QAgIHacjghBKn z)Ce|FKaow-fW@W{qQ^)0W+6Y7iumX>z(7U;!OjWQWpyI&*l1R5*Z0h0c!oG~;+Wia1t}BCLmFpmw#O_DKu> z`(AM2{~>s#I4w}Tn$zm|oPKs)_mYy<^Ej19e#de&0nVc9f0h8xRI>FMLLyjn(Hz@E;1$tQkFj4Z4GYJXW=t z+M_=-a8(mL$iqfGjzh>|Bi-cxLK|y_Hk$3oAN_Kagd58xCZO^ ze1Ez_JoUHj)bUkQez;Z>%gPgM>pkHqde8ENJ0_3rnQSk#Gq?5lZ^6@aHBF(#jai-= z!n;#dG{K@z5l<7i9xdm&u<-=3DIcji!ZOpybxbhedGIu!ubT4BRPcYH4dzK~wCEox zIzq8kMdAtLLw+&cAp$*|LlIkV-$V#DTK+MqYB<<_mkY>+g~Hi(BsfTkA5)YJ}KWCwql>%(`dyf z0{y9!U3%ve`Lp{n2jKgk7(Wny4l#~6d@Ib=4w1hI*(pTyR0DU+A({Y-`0PFpG3B#+ zfmjBF`c`R8yKHZ^Vlq`0X?0CuotmKwN^7=%le&O>p4o~x z?XIq+)aDasj-RG{Rd~0XiY6$0fHPJ@+0_)MsBSp=rm4YTklDnM(^1; z#T}DJ_e^%n=TH8)3Ri$d> zsv+oDt3_3*gR;}V#0+4DGTMe})(Bny|4&j-`D+6zH%2jB_?U^2rX#u114Jkufa^Z6P* zLoM`JG9#AHm5RvZvJjK`JVYRJDG(n#7WvG9Q^-z)Ma}0omJwYhGoK52MNB-Ozx)z$ zTCJ{a%6DgH+qkF+?^da3g3aC|WA*uNT#ruFxv+5xkw$^AYSq(-%v!Evg01J^Y7k%1 zysOom4USW>FR5Zak*ni~f=nh$Kv6d(B70sMlO)P7i!nWR%IE~)3af&;} zcF$z@f5_(ZwA;Ybd^O#apUsU~o|?nEjVhYpe9Kb<*Q4VFE-X(FX(1O@ZJ7;bTDT5< zKl>?Mwel6syIRfJV4lQANqbIV)GH6gQWZ@w*skzaTFYZ>I~DYIvRtXv#Io`P+j>uU zir%w4;f~3pdnS7kR!DPOZ~7cO^;gqP`D$*=LgW_~@PE{Hjfy7t_8r7i71yJwlncuf z#8}nYmYE@3#{@S#37+csipG5^VBFbYp2Wr&{Ub$3C{9q(1Si@R-UzxwmIv8(rt%ey z+*(a6D^IYk_k^eDJDfr(No+7rVxwIDNYN3B{Cy>;nBZu; z!YidaWO;~f2VYF0kwdEqI^_wr^`7t)y=QsC9g|1*Xdazz^KOU9;AxPWZp!!PrU?yo zWk`6pRz(wB_8NG?casWv))bx~(n2DvI@vNaoa@m3VJ3JQ!B;fyXfajeEmr`vT2PVV>uvDX%=HS;6y93-PONHo%M`!m zg?hK{6X30suV|G(1)6j=m^ZOesehzs3B_(InqUvR0<54rWO=c*T*X&3l4v!tth~Xt z-V@%U_bhL?WAf-8ZA@EcGhrR_Q@4TbI-66}5J`T%` zd__ZvRujug6m07~Au4*$5`{Y^kM0psHO_120RH4V|4ipb=Cu+mZP{IE+y8)@4XjN#@?b|hN0^zwdg`*{@M zr4$e=H6Un2;1IFVU9vV3l_O@kRxrWkZ;-9}d<)krKvSZdjl`>N*MO)iCp#1y?H!_1aqeBD3+Y~c&_w?dlo1N0 zDPPCnEU#n2yTes9L6_IT>kzI-&uMaDM-7OyehI6-`3RVt%ymrg(8IWz%2zbqXfiL1;Cxth~au-V^x7G z|J5klx8Mq3$3cvP)m``JcPPFpmPS|^TZEG*&_?J9^#W+w|oE(PN51X03Z z&h3^cI~d=_Hca*=m?Fr;nH`J^*$JqqoAV7(F|!^j+7~U_%{dMGyog(q9QR05)NxaB z1sWzojMETHlP&_vWY1JBFHLTsMMJvxcEGt$7>bK;i>1k?Fc@{=RN;q9;iqFi$ImTL z=QR2BW#`AYA;voprpZMPoA1ZTIPD6t?Gwj#1yk;cxkd7t^3l6UW9oLX>tL~xHLHmwxS$22y89|cEf);O?o;2 zl?s5~ADx0YOp{F+1Ub-OM#dnh>|8Zz+Pj`(8l(( zW_g=!nCwEB(llvLYnDRx3{>Pap^Di9Q8Cj86*Wz$;+ut%dQOq;5sf;Nbk<-unGGSP zJ8dn&VzS?9NP14YfEFF;PTL8SD4h2EGV3dCB1NX(vx7*b|W34^OPCAc&l zX56glu&XL~%yyz>M>?}#;@k!OI1Of8I(!Z9N7JEMU~?(3@9M+MZtnm*rm-!S~Mx<>mwDB$@PPnWOlJYSSE(G7uRlcz- ze-2&o9)9ajc=35En&WKY75@I*gvs_sOPVcqg z1sJ)Ni_xh@Mt#%1ggw6}+ELGMr>&aI77*hRs-Ay*qI!O1qy>5@f&0d6<&0vU{{tr^ z@cdAiah{(6TT#!q2(4TSt@rQCwC>^nT&w_0<}8SD#G&UmaEN@**M*4QzbWSVPKwCn z${;2^-zpHf6o~B!A~E~%JSJb6eFInI3X^#eVjQP3TMGb<6aZ6H!ON+aA1uaf1I}u| zY=?M14u`EMv&#iGmje6X|1h)f-KehZtN>_yO+g$oJJTWZnf+IY=qlKCzHXe$Lzet^ICB;nUJBaCi9U)E7`?*!Y^Xm`Oi}|$` zM?UcDUNGZWycD*gel6)LPp(rbq+QsXNn3rr`n9hDFqxhyh(o`AM@)uzi@K|{MwwHD#mu$_Nv=?3a z(x&=LB4u=|K3IqTUAp=}jC9{W!_d@kpW+Jn_%_6Jzs;YZv^}B;% zjf5G;(#fzD^;@}+!ljV%Y>r9!uLH270-*PYryvgf*2N+6{q`h|ae!#qcx zb0I68&}h_8l|llSLPB;Q_S2m(uiY65^Vv&bKCL^A;qm0Gl;g>=akp{**0tZRKf?9T zcjy{n|F($ruf+E6_t|asuV;9UxiiG1*SkrFxs(of*&ANJ1GY7v#^Vb4bT!2Ed>U>v zpH5T-FQ2}?r1~I|r+*3#?11P_*ma0Tz#<_sxeFmCnXM9tTnfZj_5!o*aJs9^{=&z!7Uwq*<2cL4 z+kDzWI%fA=CETdV{{E!s63M*BqCJ=7)17KHC7({YyO;}R(IN^Dd>48=Qi$f$1a8RW z>d{`&eEK&UjryrtNZ?XPc&Up0bSTVgKJ5bY*?$-9PBWjmT9RIZ=#do5r*^J?zC)Kj zw<>%Ac+ypZ=ecZK24&f&zyiplV|+r-^#Dk42 zSj&uowbguEiVR{nmpslDGc8=W=Y(*^62UnN)-spDnun9t%;g*MR|@EH>C7b)bzRM`c<2y} zyp|ZI^;j&FJ8EQ_%sOeIJZ@l6QnK_)`m~@B)UpBk1kt*vC%|TR16XB0I*MHqIeO(+ z|4yPfF9aLKjQsK#sQH156hE8n?rOwjwzDU+vBQJ1@o$jTrKi!Vg}SyjYG{`JzCetc z%nuO#nEy9DSiSV${E>#dDQE3FilyWAv}}{WKl~b-j&`lGJ35ft5gjNxww{Cbqd7Z> zl7OFCt{4jUg>5BycU+PC$v+T1lE>R0HSG+Pjg$rLRKXhx3%6-!{h=^-pX2`B zt8HgxD17Qs>4!V$s}tB<3hWIDb|JVOnhanRlz{kRh;hW>(&7?_$fuvzv=R+{;)uE` zB9rR`G0E(3fykvmJa-o`J3V%UdTV%uIzIIXb^af#R~Ld8Mn{wK-bdK~*(qF%PD{!@ zYBgnPQF?1J7rZjfb@&Lh_iK#}{~l;Bw-eec8vbwS@u&0C2qA$>A>qvK?5CecMZ5Fv z!|2W%T%>mALRf|~&x9CvX4$xVeh>3$`YqZ&-=V8$6)6rq9{{v}M*%?Y5CACJzhyXL zMLvBAG3oU&(qS&8!am~rdeDh) zdey9cqo)4yE>-k>N`c6wK?!k5J!OyJkQ_?o^OB{$Ejy_(?%$>V^zUpcEg*C zF}r@)j}u_VG208aqT~5gfz74BzGX*db{hv^9R)z|4}6fj5=R^|TjCJ;%#OOtG5hLO z+%bn}1}uWvyC5b*aJoR`QXu}i1DM?z=cmf-R=5JQ8$*oa)IH4s0HCXZ9k@}G?TWV3 z2A)^-#4=^z8BZ&fIYHVo_!e4eDJZZ9{Bi{caA(TTIw1|fkqgE z*-w|jymsdVn9m*!^J(4rpPoRP%#RQ~l45(Bon8NYhc3L+_3w`>qW$}5I{Nnx7sdOB z^Hn>M4+V;(*Jn$Ixs(oE`e?J`cPcK>w_SA9U4EpJulym1jr*osozEZDge>|b|dit8MJcSDL_O`$j(vJQ5Le0qC_ zh$`ZUE(z&9rwF}^1tOOMaX*5{UoU;)Qv1#BLNJ#kyDj05==S4&n(RIi>U6U;85MO? zc^i_MK@d7=TK<_E?gzq6uQk8e_%nM|2r7`x%%d?p3TB~asaU#*qi^4t!F22 zF$BEYJmzP94xBq=m=*@+vK(CH6!N2eaP3a1)W-=Lweu9+I&U@)jIIFnawZrI7 zoQ8Ie;li~O-P?Vv=iPQRm%ZJdF(aE=BO4YqGFgq7j7d2(m%ZJr|E*q4T^ouT+O-ox z)x*H4PqRpu0<L*z4i4Xsjz+1_zPQ(+OzPK1~Y!BT<9r9eD$Ylisq1=jg? zfIOPjP4-Y&@dikIcKq-tKI7uy_nDYtXREkziXsNek3pLH?+tYaef|$I&W8H0R+^yw zwJLc2dwFaz{|%bt*y;c?E)EZet*HOXg&Z!0oP)Pwa^5>%Go!NtpwItP5QqMo=@9w; zdzTia;=ik4*CA>IYw+JJh)Mrd2t+Og;)9jQjC=0n$Wmq};tFv#7GgTHtA=UEPE`eu z*|X}4F}rctkEdY9^`io|qRdtbY%T@%Ph0*!Vb=m@)%5*`oJ{4`L^tC-UKNq?hzXbR z9twHYpqNBbVM63lqAoMtc7-DEy!wSup5r}*8imSpkkrp>l3zt0lUM(>zI&~`&pG$r z{`2|NT4&$A*ZJ=6TKjp<-Itjiam?-+MRW@+g4ye# zW;5GGAhHyQy#euy;o+9C<8-u)BnxiGM3)9p8(7zW}$4Wwx&^-C9lC z3hl-Zq5o;DJ^wzosy;joSMcHSP@{}!>o`_Z)f)5%P7gc+k+?s#8aR~5qlrr=@7+z*hmvvK{OzW=x9Y`Qinjz z_F}^ z;%k>_>)`q819v0f?_%Lv2j;KIJCIQq0iPga;sa#VhbegCV&7{0E#j{qlzx*~wh4cg z3Ko-mQ47TU^}x7%{u(*iv9s#ZNJ|(3Tj7?_TgYH3WbC;E`|BB$l_f{#rvbRcQ%*qlg;4zuwQ|uS$W)QXt;EJzB!KfTJzpWRKIfuV`FpOZaq{wuBwE zK#bXA$L3?Uo3F9PL6tI_6}SDXARUSPG$B60N{|hKnui} z{qd%J%zjI=Z;6oZ(Ry@*t#Hg%3v8AGdw4N3`_~Y4?aHarYE9x(s8Ph8*+z#b&g?lJ z(Ic?yd_4{pF#=x;HJjOy0+FRa{9s!!`@^g-v!CM%%zgkhic|MVcaw_Qr>0x*O=r=JP4CB{#z>0nlWyti7kB7m8CSm#2Z!tT{2i#@Q!Mf? zio5B4y-Dp3HQVboQel=-;l?Dqej0*U+tV@HJm`ELsIdyk1J8YclH1ePS|HY*?iroW zneWk@U7Y#d#gTqtzDBR>sU{0-mI8ZMf}IJTL`ep48ww##Z-E*`?Aud~Llmd~XpiWO zD58TDkxA_ZHJjOK0+FRa9NmE-779eW)*Ej_X>25vcr%Q5``#HOyM4)zNb@gkB>A2u z(bm?Bronnr5>12Yg^i-*gsbop1kPB@B=2;EX_k;2c^e83XW=&YF!+aFw^)z;#Kce7 zPt+NL>;Tdo@Y=Gxs$2%^+%$M2a(i2!ZL;da-v(awcS!*O4}P1>_tx0@0ax(UGN@5c zX{`=SSlVaD~0Ltrc12TT{ou@uL>vo$;JR0p8D0-*Ut z4#YmT_Hl^fvGqI6!6n-NxG)m!jgy!h^wsY}&5o^^0+FRa+zk+C!IXAW6S=ra-U=(k zuj_SjU}KA-+T<|KZ-RGj5BuXKT)`i+pyu{Rx!lVnZ_xrVe>{C%K7SPW+HV*bsr{j_ z752w$sVqyWZ1?u;k2g`010qlWCh?~Y>&WXe-XHflL~(yyO*41#$Hh@ZGhq?_xF2e^ zKk5V`OM!TM5qi-KxYtM@rJkVko1o@q_WKJo(tBxv7_(_;j5hbFCE`vodI}mC%vkd}~r9dnr zh!nH8p@cF!7FWPI5^5Bu_8}7nD6^+)ff%!YUXzd6VdEUL$H9zawk2$ZnO!2VSqki% z+A_0k9Dt?9F*_e>6tQQv$svj}`(K)4OUyo36=_9R!6KNw1Zp<3jRKLSKwO?+h=XBD z`|~HbZYKFih%SAwbR;tJnvy#H+hjZ@*Nb?9?Cun zYG1IrhzSLW^Mlw|&p))_6?%8AphdEB`l0wv|3;#P;$br&)Oc9$*=@?f zuExU+WX_H$^Rz%L9)28=Hy&scR@m|U$@=zIsLQN*6v(GF3Z*=aOI7iLe4B5JLOOlo5-S2Ua1W`W33AYRoP%$^)!_DIj{ zL7QN!jy=q%4uNDA!NTQRdIH~_{od-Eol z-NPY@Gkc0hwD#PHuS*q?N$m+Wo7qBv$WkC~4~UP#l=flYvt#J{|L~8cOZ%|vkx~1w zR1IfL9L!=9ec164>owN;O*X31NNV_`MjdL(I)W>)Mzk9PEok}UiI`iEoFNr zci2d;;rTrM?XuodRGL}0TN*h5-!llrw%0eo?bqjxdXC}Q7P zEp>?E^d9ID-3Pl4(I{91vsXaPX10q!WGN6A1TGA|r7x=bmrmC3Zlp=N{bAxv+tu#4 zv9_y#Z$|I`rMYgg)g;XgaM;LEWBEgM+<~})^#W%q#4J@2jcq0HOTg(|3_QxZ* zLhYtOjn+>6u@7!gPeE~o7Kr)do?-d?F@;tTQv2`DiqyUnY=!+%E|p~|mEE-k`{PNJ zWB@;FK$yh$IU>mWqsAeM`=hl-bVd}>6j($b|B) z?6--H&~04BT4{k8v$tK6kJ%@$cFewadZZz|uG@}ol2#?KSqki8f}II&M@eo7H7EpT zN7)U-NGy0}Z*+*_%y##P4viw}s)$Ug1Zp<3g9Rc>fjDAgXM(u#H0ylZ5ay0XLwJRS ztQPEG!VMu4%!_1x-tIC!m1CE&h_)qpd$N7dmx@r~;8ZIUH=e(r{Q-?z=Wof6{rPA* zo}b;ochr{i3a-G`Gf<;(s4eFhfn$=jS|H}%ITz>iZwp$$Nz3`Wcf`Lb*b29tY9WuM zkXQCElQ$0~*}sJfz$E^;o~sf??EU+oLlpP#wY2aNL_?y8o`gkobkm_``*);3WGN7* z{=*P=5s3B?&;TxOlIOq*@r#bmKAiskR5}=eezQHeAI~$?6_aoUSB!%it(dxECY83G z*m+tY=88^(^0}gh)+JK$0WjmbjICiS?20i`PnJ^8r~c-8c6I>1^81hO0>^fi1*Jl7G^(xeCW~T{6mI871pJ28YC6w9gaRp|pq2^}x*Irt&le9pL*((O- zV|EW;kEdY9)#Kl+9p32zo29_suz{Jq(gAo^x0p@h4X9DXp4lpgD9-GRYRBvjQAEQO zkx31Jn$7G?fyh!I_92KAvx~0{cg%Bf1!iA_8pWwG`$SJ=cCr?TF zP_vn>6NoGY;@^LC#*lb88Kd(~U{ZHUO6*SWb~$!>k3&XX&E3V@lO{3Q?ovjdKE}Qs zuvO#^=b>P-FA9<;$uVw-r-GIAKI`fet^4ep;QebbX3S?1n-jDzShai=X2UgC^QYPX zufr9>36Fyq4HpAift947VR1D4{0k-u}8 zZ0-Owpb!wh4mFC{hsoCtQ9Mje^N60Ph=j>dMPyP{P_x6NK_Ideh@bq126#$jd$Qbb zPj=tL_T+W|z=K9REf8b&uJiISdmAmqqyc_-LZlvV>1Lpt`7ROIECu$?1UnNBi7ql>xEg?dE>W^PFdL4B4|S;YJ-6OUv=bn)Lqdp$jJjO zKJKZo=@R~c#@Ewu)x~BjRg2CBpY1I+%JoA!0o|(=s?zUXke?}g8Kscr z`|W)y`HFtiK(mQuJ=+_$HBHX;4yW0(y^&&U^=QxIhI9CA?_R`QCV1l*8pWov&IfJu z;L|YZjB+8B)Z$i-#X?dm=!#NHd}@)ZCipLVu{K@6`7$UeEV2}U?xLG*tnsG|RI0KFWVK0Pwd-mb%@N!*%q zoGs%MMra#5r%qw1A9m;G8g|{G>4P1%co%j+3|qG-w#)t4dtsijw^_il6tHKn!3c3X zO6aU+9Iob-)3obasJTaor^=P+GqgZ#gxH~PKB6zZNQlmK9|SXQgxC_c!W`2M6Ta%l zQeZ#)KOQ0WaR5HNiaT*2UH~my*15Si2vsM#Y#p+ICQ z5I6qh!eAWi=`exu*CgN6K`k^)oQsS)O#H(+OyYMt(!2* z3mudp3dJPOhZ?Pbf82MJ!xr~r*BG`fqu2@+n@RmMi0hs0OnOxsU|9;-0|+ejkzG+( z+1|;6-8u(Yok-o1Qlfvt4aq&RX7cM9`G_7wYc-j+90@ayW{@u!+t6k5?BfeJO99bn%Tn!iVfPe(Ei-Sqki{ zzhgfYH~@nbfJvMSHHz5J6~1za;`DFp5zRa#(wJ3O=CjC3^T$r9fmU5I_1B z%nrlWnlgJHuE6XWP@_1tJ#_{EZBMm)Q#yYQ_qHQV^s6t0Y8BmCv^@9GuU@0Vg@D2N^66Uo!ubhwSJjWtu_s~N( z>rA2>)EG&T_Oz9&U)-S=oa@@tXWhf~>j40%0{|dzfAO5I3ruPz)a>>&SSrj?D*V-d z;q_0?9%B zvlQ5!2zDlzjgkzYqXICAHn|W-jyuiVW%qXfC`ZGa<%A}rvn$7M=fyq)} z-ng=}9(%flV6}bpAhuzW=fhNX6R~^2H}OQ@B(KAKUo-Km!kOfY2Qp_m`zVIBM0;3^ z%sxWjZ@B~35))ueGiAT6+z*yD_TT6S2rse75&IVB=U5{oKg_Y1XdA&<4Qq)@U`-)l zmK4Id+O9ah&9&lid+mJe>CNTQV^7B)K%AJM4XkS@|8uS&H;G@M#zHxK?CAhDK<|cF z7rn*VP4YE0K%pJ&#jt-Or1)b`cZ?VrZH-)$*U0_4m1YvRLyh5!9D7=g99p#te9^wS zirS-b!pEK#Rpe`qt!YUrWBIxJ+vaHd*4NKr7E&*=$Ul~UHk>~Wx7jh$7+6YUxMDdq zhVZecn>je~c9`ko;JjBFhSSZ$>AYz;6$*#GUk)|9vDOGamV)oYuh11PI-BdFB)^U; zbcN4Cjr+$Q<<$u&>nUC)Xn|N)IOX_!+&@jrNa6nL{cL6B#Fui|3e!4SV6zn1I}q$l z@EA%mfHn%iBnomM_EU?S9ilk>dw4`AM-e?;DULR&N1$diJ53<66o@02f!X%eVP;$4 z3d}ZN&L6~?wa1>m*Dc&AyYWp;vNP_jT_P4_GF5*HrtBy2se1e4^10x!Go1_i;eI-m zeWNemFZB|O{NZ1Qn}+=~T}WUlBwYC=`{|#3!__$-=985$pQ}2{FXJ17q>rG+NQxYL zI_FreU)-UW(^6VO>;?eP`YrE+`hCVCfBho^C0% zHpxqIC-sk?d5<_ovB!@+U4Wf+O#ABhi8PO0VJl4gY(c?NQ2hNl(|!v|a`X7C$scxuNtrT3$7?_BZJO|9mbdH-@$J{O#cZF#sLh5KpvJa{JGFEx!t{_uHuD1RLG zQ@xPDQb;(H9vNnW<$H&#Qx5aV9x$J)I_JYONIDa0jHJlS`*v5qxI@R`fd=Z=9{{v| zZ=Qkr)v?H5zt4wA{Y>fusM%g`kP5Su3J?4YUcV31RrUHrKaU-oYaS~r*_ZaRG?`?7 zEf5=S_N2*C?rn+xoa*|5YM5~=+4is%_R|u9%~D{``jq{2umiA6r?4im)XqO6ds)6c zZQ~Hd>EFpCTHYnn!f%8{w5O|}W;5F;5LpVuRs@mS)8?nMTa?*fPva|u$||U_P?2L# z`vX8dHKMn)K#bW%N91F+KdsfJm+cs>$2G7OW_E?ZW+|{w|Ad)c)>&P9v;r`RLvkUG z9DDkLLltLtF)cU+)fm`z{$APJ#qFn1v)OGDm@Eb6lOI#JF2|mpk9n9XDm@$pdO z6x+GdpPjUZC0Zax@!(WGiVyIWc@Ab=Wj@ZDE3FgkECu`8kC@_X9e@Y@TxrTC=SqDX zqBy-XdpUY{jUqZ)5z+ZkP_yZ67KkhbVlRTo2O+$+ryhH{kTkz6+2>Sp8lAt)BJYaq z1m62L$#QIgYsYC z*`eL*@Y_#(n&1ES(8}>q3hnIlt}rsa(=W$TlU|F7lE&Lgoi@?=F;HXiHZgSUY1-X~ z_w|1`8NgPs$bp`IUt0IO?KmmNo|Z?9JZz2Jo7czyHDVHdpvLgowVfP$dJuAG)jIj2 zJLD>weeCH$hvsWDpPuL<^v2zpZ5`cK_F@)NU$DqOy4{O?|vs5G~SPF`2LXipn+|`CWou8)w==X!6Mgzo; zou4^GaW;E+L=VHR>k!|X$?E)7IM3w^a{SPp9-hvVujU#meW)hb|jpEej zRlB;1ouCC`9s8t1@-chu369w>N^DdJvwvao6=t?XV6zn19SL?On2wU{+W9Diq3Bhp zQN*6vQ4Ud@*|oGh7GGCH5nZB)OzJ$S*&*0PAhHyQSH8~>|JlVl-|n34!o^Lp7*@jl zG=Bqx{v}@ASC2h?J5um_p4-s(dojg{7Q{DjXGHvG=jUL?Y#Iep$^a#rlDE#rG-#3a6in$Lf)J4A8+9qAF(z^+47 z3yWwOqoHQ|uS_7a6o}6)LdzJ2shGBm^ZXp`j9haxnXhl@Dz>i{h_#Fn2jye-#$z3` z^*cpchMT{+H$=+?HcNs1_d;g&7L??cF$*(2#KJ>R^D#TnA&N8m8?B7R*WIFsPW3a& zWAn@?D+D4-fp|6`ezRk^WqijxndI^iU2f_?^?5OpxzWyvmPY18cG@7n)*L)5=FG=SSAOpqaJE@>!=inECu4!2DFZDD51=j z;0nwpq2^|G)%M!#*B-<7rUEf$`|h8Q*_&ulFR}PA%(zzm2yBI!trFNQ1@`g<%f z`~g-hUGi)qc^@+Blc5KW=8TEESVX??oU!kv?2P%l`m0E1^Cl5Mjn-aULJz@0<43-R85u>QItf!g&h7B+h^uMeO}G)gg-e ztFK2?6-Bg}A~LDp?W8no1~pP3vJ{A!chC~{Kw)LJqsQ4M2To=7>ut3qe1{umw}g|s zc4K*LLhdD%XW)mJ!%P68P z6_H8(-IGHzyCu{JM3w?^e}YJhz`e`4gfhD$uF%J{hZ@DH%%(dkv#XEf;@Qlu-zOil zC)46zm^}h!9J3F?R+!nz0-L44zV0n%b_)k!hytMZ3!z34`u`r?Rx;9x z5{k&AHiw$c>@z4w6)WHCdw|;;48SPJbX0$V< z!Yrl2E9om*)Sg~Bfh(t8pM@*5r-z`%DkL-7?m)?1@by|CHfBGvS3YNUr@aAbPiwZ0 zMDKpE6>d+n1vX28y*I(m1ka-+1NifJagIr>g&IZd+tY0hQJnrKdpJb>qKNK?MM7j! zw?oZtPjv#3r9iy(O@`QBAlkLwb6lL}->_o4A3LMv-M$an>#?WHNb|>@E=QrnXDFm^ zOvp`O(7h*DYSdL_6^UCfb_G-$9Q(t!&5y zN5MKb4c@C8%QH`tyg}!p{dXZ2BUFrjjd{2A+|2Epd!x-w6FfWh$*Ni z<40GQ*6lFk`s(#Pn1*m{)r;d;isL?bogG){0K9=hK>Qrke6iKt zA&SS=`5sY06wv@hWKw;gX2({8Kx8Qpy8_}1?JP(3U6pOQxJeelipCZ{7Pkin(y^x_ zIKK%dM&{>Z{QP{xCg$fS%Dw3KS+qdRA202h&mWf@?EJAg%s79vfUU4UmPln;N@b6D zjs4NkRs-S#o$;E)TTt`)<1vRQ?vJl&$3P;a8g?C`;joCdJ_u^IKNA#M(X8pWxRzBZv1OKO1_v;FtT$Lub?9y4La)#F{vgTlu z!WEc33Tkd+H(yxU3V{ECu%XmzmiP4!}Jq z1jLh|MiF~vf8I?I#hLBt5xv%iE9MZT6p=|C05zN0W`W33ApTIt5QoE*_UBhJPbN7m zM3?Q)Gsy~M)MrLRFy%@N#FQ&GV(_M=9DBM=#QIbeN=`%}?V}22dHh6=nOT=v$nbG$%q|YHq!#J z$XHdPeu%$|vWQmw65$8IjPt__n4pE*T*2P*l!T7x#Jv~;^cmnp;xJM$73+#DnCOj?;2{6)Rm>w zb>$0O*P#x;a0OrzgP`VfM}-*1@^7aGqdd-fV*@aXA%=~O#FPHuh~fvwT>}6lC~Ly*_T^##T=qT6_H8p z2Q{17E&`FIK>YSOFgq&3?Bz<7NnE%IX3GGeo_b5mKe-~t?2H|?9`P=uj-Kd9J$?=% z_4q~W;bOK_V6zn1`x5L-@DfTgfY(t7vG6R^Xe@YUr#M8dW6XB*h|Z59s!~KIbr#fY zX3GR3OMy84S%%m_AlfdZBNwOhF<`~grGv}rEtmxzTrMr+jEO-k+?qv}BcZ|NMHJGZ ztIke;=R~HzI=E2tDZ?5?$BDgl#bOe>K#fwS&1e0w+I%+Tnf1=yKA)4np@qIUc^1sL zV0|iU)>|$NvJ?g@<}ia-H~=FR06l+&8b$1#{ES1?I_Bg79?|wuL^~)VlPZFm?c@r9 z$WkCaHXF@n^daGnsTx-Z#*3gvaVoPLHdkhk)B>^QbMbchn0j7a zY2|YI-^PQ&uJ{>OsMz;VqZLzEyt1)}jO+DUAm)lL9rL+jJZ)2mE3SkY=ZdRfE8Kjl zrJgLMp3ltUdiHPtj#L09aZnD#-W44kqSi526nI1{|K*A~ME^Zdg2SXfgPQG%kphvW zK->xt?}RBGAEt3}`h6r=QCH{$)}J_g&3Zm@b~yb{W5$_mfzAy%xhI`C+ux=w*+1;A zdANeRUV@t2U2Oyk-CqmD+;we-eC}FJyBOlGxBrQda~y1i-8DwIU@2S_Jjw1FkCNPS ziWC4n-^+p6yX#_ysCCR;13aPwqKKX=b?%x8HQQY^0+FRa?EeJDk&akf=m=e?D-Al| za}(3BhyK=v@R`orV$ANcO+IEH+QTt>4$Qc)%fMEc*~tQ%rNEx?I5S(~0Q6A+Cebqo zV$W>CA!;3CwyQ_f@K?mw8~ikEO`d7kG=a!cAhrNR15?@%+U3tH_%>+w4CuUmLa^Z&#C?d<^cQ2^xM9EiPt_jQO` z$NYP_N7TF_>fha%143j{YoKPgoS6cVr9j*r5TAl6_AkE|@C+9>$(gXC9i1I>uA+=M zakeY`sZDJs^)CIsG}PR#I9P5&-=7Ihvcs-;zFj_7jNa9`Vr_Gz;?rR(?26e^PnJ^8 z!)CB6UO-9i#D*#WIzI$z6tQ>3!wymFm@EFK?Gy=){!v726%m~u0yWzebpny4K%Dj% zI_iM%y=fxGNVx-vJ{BlJ`84G$MjTV_8Fb5 zn#7|}bH{8M0B~a*tp#Gt&S<0ci0^-_pdB8m$Irh;>Tv*Ug_&I;uvrT1eF--0f1o4- z_@@i^ooHphK#d~y%uaELTF02};}M-7MKm2236V)ng_<3+O#+dnKpg*&J#lv7`W^)J zZ~C7HF}sj^nrF!-`5&D(6K%Q=@)0uXKFD{-m{@LS)tmfc#yycc%(8cQEb9(-)aDas zuZ)K8(&vU> zuCWAI>;0|uK3Udr;;cQw^KL3p8{9$vuX_6%bXPwhyEdxNwXjKi05!MkFOVBY=g;9e z?vgF?x&8{;Y7*D)05gv0ez;?}yDAZ0SqiUx?`2+B{!d-s*(2UD2V&o--f)QGu5Y3p z7eQ1DyAIL9U0rweCe-Xk)kPq(6o}8?gGTkgeYvnQ`!%jG5PS?ZH?uSM)eYaLwLq*< zUELxdv%Hrj^%wv%t{xY_R+!mRfz482|8qAp+t~rwR{@yBZaENpW-oMz;>^xSIz)@3 zU;kgSk7M>7sM*Yx2}G6x@f<+>c6B)HJC%?nliYZIaqzL!a!j$7KH zK;OjTuRnB~+b(_Y4BpzBO8?Wjx|0iOXv6519z$w{Rj2vX8dXiupApoiM{>RlO3ER@ zY=mruvX0--jkC_=4@_`jGp=UaY;`2~&)eWbg2hIIen{s-dv%GbCMcySr|k8VLY5D( z_gTSL3(`%RP0;Bf!LY4qa!7DE%^nhr6l1GLn|ND!qS*+Q3T55ZQd`F#nBcG9L3F*%)-dUJ<<@M1PKkzXO%tNSX_jcDm^7-#oc+0cBlY0vI-;6vci}e1sObc2 zQiZ5epIV|Soqt*kqKY_Q1|@|kHbMqMS(`02<@|vOKKu>Usj%64lfW&V4JJx#ROyFw z2(?!St7?LOHv>_XltPxL+xv{X|4L ztm#0Nciry_T+J(|QS}q3@$R>keNUz?REpl88C|7^S8n{LTb}v%(jw{P`0a*LdAp$+ zcEUYwxpZeNr8~<^!9a1W-qR#|K%GaM30qgRD5}`Fup<58jl=br*S{PF<}Lg(#aX#9 z{Im@-fGOchsM&pNg@9rypnkstYqB(-{!I%Z!*TaZyMA-&9I@cgU%PQyV*92Z__3@j zhw+Byjz93#+IMaLxmi2@`K-U%qI6oEF#z|sVN)3^P?V!M;gE|1{2*K}m^zHWJPH=X%6@ z1AkzGkAK0{5}U1&1pj#(9Q|UWNk61U@6~mxnxJGOY^|Uaviz{UPeB_1C?pZKtkDnK zf_P7f{&1R&enC*CMyP9Gvy5~>y4GI@~f-&3R1Fb1mvNlCLP7G@G-*VJ9{w z>xa}acy*epCivqo*s7rvvb>$W&rH6eUPZHsW#tLBHBER5r&*qmVuA-EYv{>-4V~V^ z8hVa92jF}y5S#AbN;8Yx`#zVnmT@Q3eF)6B>Hapb6&`$gceT3{ETx}sJCUdRr4GPy zzlQ#3lWXV^4iR^A;ZbNc?Fh*Nq_HIO_QFkm4ShA#?4hVqAhHyQLk*9QX%3uB@)lUs z6>=$CF^Rn_(sF;;J`E^{)5nStrz_O8)U?^zHcp#-YNM(qIJ^zww1M+w(p*yF6e`WQ zebx>CLo_vW9{T;fpKw)>pey=$783mDZE&25jbi6Bewxww)GAd? zFr_Vc>dpBwC@DO#5h@kR`jBO241Yks1GCz;L7Qzd3I6jom?yC@T|cDO>D8I4n&4tP zv!6yOWcfsUpE|yxo?EjCI^_wrHBER5r&*qmLgN$`{JMNE!PUHSin%1z`25ix*tF6e z9|K**Rx13I6joI8Mbz7yXc0r&mi=HNn?*DOEx#WO=EzT+UZCa%wg~r*R6~nkI1? zPP1`}6q82v=o}J0nt(VALGnw<4;K?6wHI1)m+|_K(2J<8~X6uL4I=xz_Dm}NPr3Gc5NhxIcT6>=czM`I6 zvx#Np3AQy&cnYUko{(bFs2=h3Gv8-!Q+jK}Qvt13_>bAD2gXT%YRtQReVK#h-MSZ${1{GnlKhlvy36dq)|O;dK*{S zh1n8Xn33&iYMZu5`EHi8={|L`s?;yEL}-oSd>ND!qSy%83T5qND=?csFhRjLAga!0 zt0%#K-UbsTHkRmz6ewP8RMiBt?Bbz;QpoZL)^ZbHQ759=1f3EE+nOdsh0`oiNHJ+t zkBE9|^>W%{?aegN_k#nfy4%mH#?`!XnvYxrH9ES>Gdf$=em__X#MT#`X-<}VK5{k| z>U`Ae3xMEXH(kF4LkZ7Es%5ZeDTDpfH_?0~1mF!60^;YOMiKk@NYWvS&qo&1{+FF0 z#SslqMD+eR)a?1lNP);wAhschyn%J)$9OX@F?1zwZ{d5~iO!#M+S&A5@kNFMm41P? z!B@vVaa-MjcreLtS;QVav@fh!a9kl`jGAxzf&v~J$cw#ghh0P|73R3YSI}9!T(EK6 zSpHsAh1qF6ujkDRT!gDyQc-Kh5Mmm#C|FrLv9|ui+RvLV9b>US_z~l5pDq!Lgr^QB z3{q-MjVsL>m2N7Nq8Cz8_e$?Am+Z&i8=OsP>H2o*bLoo0xq_@pCCc~)TnSpR`_yt( zO)zTXAp|pB%K0)VDQ%ODP^nPX@hi|8tM~(Y{_!=g2HR}aBydY-gWIOq7^5FjQ}=3( zs`UKBE|^AA3RynD-e($L(F8@aiDhk@u&rs*Hp6MQZ6d|k>QURA@?YDDt+1Wg617e9 z8@`(*s?n!5s7lW-xGB=U5$B^_7#3q2Hlq}%v~T3I4zScTaUK&Kwj4yQ<13nOXf|hq zi4q%yTMLV{Z{*b?RZY-Y)~u95mRs5Tl<*bJP&AuZR-#~A(}bvSnk5P;v~R>HiKzD9 zTB4fJh>Fro7&WTIze~{QlD~h2Mz@gClFxpEMn}4Bcv2?$3i6&!>6P3d6Z53(E1|Mi zyRt>e@%X%w^4nK$$1ldc0-IixxY?G2ts`tX=%?Fqq_+=_r!vGvrE)=yf!VQ+t@5e8 zRW-q@|Dpwyb3WQOVqqN%mD-KZT0;oPTh*M$1Q#sB)kwag`H^OGHrTOZW3qlo@$A)U zs+!<3yOgP+6tY}u?=zFHXiBBo#IiaTwlz&08&0#1MG9@luq|?InY4g);#iT1ojzc) z?E`~WR55ngDk5`GyZz?28#{F;empRV{wF*u6c5ef*s3MB$)`4|YJ&6r0l5vFkM=rP zSaPA#?u^gc)zaC_c}x&|333azp)2Z(N${Vy!Q_gKV*QZXfLBXYrSI*of~_J-Ap#sV=#*U8)-)kEoMy>I3hmA?W+L~?6}Hth6S-u2u-c}8bg>J# zX_P{ipZEfn>-dT~NX;hblqlHNG$AUSW{Ea&2VF$`%g6A4-6z~=GuO#@-+hC%^Mi>2% z;=`+@s+wRIJ0U2c6taAiy-zt`QHP`11f3EE+nOdsh0`oiNTK}!t``wiyWA30Xo(uB zwkf#yZd?KCdVFfNsr^#CN4tcZNhxHx(%z?muc-6TY+_l7f^AI`qQYsGD5TH^0ox*?4xy$; zfzA!j1WnCUbvNt&0$20OY1X|MYIF{(vu>2dtov~-5Sw++q475Nth)u)_n38CGj3PE zKWv3(-IHlTS38&9+#o4a+On&8*6jgwQ2=!QWe&uC*8QME6rXipiT;3rltu#Dv)IB0o-FbC;&VE5Iuv+)!| zFv){~gnUGl>$^R4&@cVec@oW()phJ@8}WrcwOOOc1nrrt+H@1=qm2{FBM}dkIuxJv zjZYBc#hk|k(>}&k31875qQ;#Kj(D+ArXNy6_iDMSCOFovEK4bcEDy5x>CIO(3TQU5 ztPu~}nkEq+PO}k@6x!QTgB_J!>lifq?Vqqb?Uhwo;In(R}@sA__S-#}C~=cAny z7Pf1EN*#*NI@MA$o%7Ihj*mdpOunK)M6)>?OqAHD*AJwHT-I**+09=xI_GxHrC4^dYq~FQ z5qa`?D{O^bGh6D-QtEwkH9xy~6ea7aVy7zrlQ$OYJg1c}Y6P&RaSEYPK^Cr#aY;fNoHY)T(>Jq)$TU8SrY1homw$yW@}SJ$)`-h^u)V+W)NL4|0b# z$|AHsLoO;13+)GK)Xp8+Ct@jyK(c0BXlGz69NJ4HZdgj(bQ;Q`?E&;r0QCLj9Eg2r z8;2+!+HYdbmJ88_CguR4y#{J_Xg3N(mI86?kT68~eli!Q?^nQzrAyB(zkyB@!1t3g z{GiRbVid06iYuVzbVYE4JL9027Kpi`15M3xyW#_^!MNhx|A-z1PykzDSFDhFvXpw> zdkHt;*WFP7i+IP_ej~9SY80_|#pVuC+!eh&qKl%4E`vq5Vj$FPS2PJkmIASPFowC3 zZQU?eM5^=!U3_Y>swQ}cn?P;4kn?5ITvGZ1sI))ev)=wLT5K8TF~P6~T$S?`tpPNf zv%!6V*r?PGY0&a&m8!Jvuq*A}ltPvdwfCv!E1JY>HnFUI0c>lU^abHG+ZQ0k*y>SV zu-#Jb3ntsXV0@%6xWV@Y!=XmqsjFj@MPJZU3&aBO4jQF%2jB=i)I-a&W?Wyeah0?@ z_l>-D;$4>F-R&>thUNh*M4@@yd%X!Yir5F>O%72!09Rv?mJ89Piipm~ftnqF%>t37 zK)hxUw~@QuSp_`IJ;EDRCV3x=$aAL5R9hDv=Ke&dkywvTBhN55Q=@@KJdO`L%+2!n4(%uC;iIhXtQi;DTfkPhZ!OqIzHCZT z;^xQ;IkY{1#s8IHF^RXKMiKkap5YM1L%Sp|qAOq#ee1l~Yhty+kC;4a- zQ&UawvR!dEu`T+ZoV8p?SqVUqmJoCrv9PUa60zYl8?i_+wt5t?U(jn(wdwn8#4cLF zeUwJ*>$sX%PJQgNP;*Bt$|7PXXn|P7o=Nkn+B=F$oVp9E-7IPm3D1> z*8AQ-pjL7o6I}f|uB!NoX0w{j+2F7h8zc2Y>NdSPMpZhuz^-|#DTOQ_Ywt6euV`|k z*~GGjEo^I=gl#y@hAmQzt)5Aq^o;%fYVRhzT-%_gsipJHEKf^(YQ3uT9-`%GHs{Nv zxuoy}l{y8V^(xEE3eIDKQ(gm4O?*XDBhBV)Fi&EmV0+i5i@aK>stLBYyAI9P@{aaC z#q>E@F41gaS$TqOO%tBNX_hCXm^7+ql3PD*dFt{5cE$23ndPa{r&g#+ z5bNhXd$4#3MOG_Rcc=%?*o zTAp*SdOJk%94(%hy;`g)Jy*9o2ZfYEmT$24>B3jkb89xS ztZ@q4nkI1?PP1`}6q82vs6F#Z3p8q%-wU3q)HJ=y#5c1%4fd&(s?zhlFThg;=gXwI zr0@ilcI$oC8!R&;IgbhYyky%TUs1oW*_;jLNo-8h52YUyS$fBnQ)^U5ja)MBmWY!b9!(r`1dcW-u$EX1C`Gfyh!IUVRqYGY3v4c^fQhd%l;gn8Xwq3vX{| zd!9|NZjfu6)V0*K+1WNu*ZI^Hs+! zc^+4Vd_|LF68z_FaGZ*b68(@`r&qhEYJxxQQnZ*-$nvZgV7ZL1Xynvvf==TUwlz)S zG@NGR6e-45&m@ngZ|ZYJd+vA7qIagqbhDbK(Bhj}o(kw4M*gD=>ofy>Z^FjY z3eJ~7N#Ti&M6-^w%oOpvko11zv*4-Nz8P7f#+?o3NoRnV`%(-<{PuY~c2^ zKD>u`8qE3V@eB(aPf#feebxz;Q({#R~eqXaW8_bi~sM8NAI=ou1stNvU z7u2&Ug)ARr@3VxjsOQjZVp(~DZA}xN!fBQ#q?k0SNAZNXo!iuW$MTJ<-l9b|z1$Fd z_el8l`==;16YT$J5Bk}jjqTD8@JgH>k?)KUW3`!KSw@R|YJsZs-phwzbRFl*prkO$ zM#w-YYirA434dUMZ=V69U2L{ewdiaxqhh06KcqPFYK5vMm~FQX$|!{_KRX+iEBT80 z7|kY@l~LH%G+{KHW*J3_Nuzqyh22)i8wr(mBjMH(4D`?|-rDZPZTlsWqya;8r$9?@e$%dNjkr_5)C90_d}z`81+wCg-8= zXFr9j*?dLgg=TX$IBLa4gMLV@+N(=crS-AhIjE-;vi!HTyn?T&$JcCPS)&%VHBF*6 zoMxjIDRgQU+oGub@&%6Cel}`nfk#~oKA^0c#2rwhF`yf^D2u4QR13tS_AHt{HP%X)H1cmO|rAaP(4E1^aa`=~v}A&N)s$$1e?f<;Uo z$3e}G+Q9;mr9kWvfoP-lI4(}VKLjiD%EMbUd&@9i9Wd%8AX z_m$4&AJ76Zcg&~JH@7<~v5Lc7{&ARb?l>K`!tSV+y0VnIo_rF|<|~@nXg0B|{Q+!in)CJJvp;r`%4+aD}j$n8l3 z@B>`UE2mNHEvV7frTqcQqCdD_3&aBOI2!D82jE6LrA2>W&A0$O4YtAoI7Yn7QoQ@# z3EUre06QuGlW3mwDX&3Bm`1mN>fvjeb3AhHyQdojeI=NGn-+Wz3T zW#|vqu!xLenW?rey4>u=_c4j%aJ%qwlZHDU>iDIx=^736&KJjr9qMNK)M=`k;Jya3 zM{hNAz6?rAXtNQr70Pqq_7KQe@r#ZBT+0b737L%=^{SmI_ zacDO{%^lh(i_m^p3&cWu2+as`hxS33aU-;?85i1pU@IKjlO=9gO5FT>EQhuSu&V+v ziHsk3+@iG=!7*ytc%4VD^7JV)i zcU#cYrJgLMo`a6zCR~G(^;Ee#Q3!}LP@{;wE8cgA;;uN%BPxv|>Y<2CsvFd7SIiWM zECu3QM`M`lQi68LEvcAP=?hAIYKf|J?%mr|b$W}L^U*<o4a# zCOG6_J2deXEy6ULv%!6V*r?JEY0&cOU{&c{61y=_NhxGGu=g3sS2S_gY+_ma0@&6x z=?lVXwl6>m9nHzMs4w{T3GNH7vVFl>Ty+idH6o9qjEIYjXQ{1odA^aU|Q zWs1n8_Jx`qfOP_qr9eEIAqMJya|7owLB9uawS=!|rKZ`O z4GwLw(WD>Jpykzds?zt8?9RgqN+HX8+xryk3d@Bg_)pPkXv4PLO^SMxZukAj*zv{4qJy@M8rh4xq)rE`b&RBXT@kgORO+KXRf zDB)qQUgCzO#7*lXIJ7;0dr%07Cqa!O_I>MchbSJ}ZSo>YDI)s)ZK&Cy-5?NI3dD<3 zVTg8^TmLH6jecK=g$r%_+f7yU4Su{dR;Es-cfQ!|>~C5Y_|#HWP0->^GDPp%ay~j` zl!c90sI+PCvo5(GG1{B+(D$0}!&N0;(ON>YIU5|YVxw9=q^{MgBULrQ!FG3JFr|>? zk@h|{d__}B%_f#LVqsg;q%#hu*@#67or}u0C}R6Q#t}QtM(oT;#NML;XcCh)5wR$X zh`mG$#3FX-qxm9sJswsfVyzh$u{*(5IAWJbIIxs(s633r!2@XW5&P99Blb;)C?2tw z^A&FO zx|FEF)x2`*V@E-a_EAwBORr@Ti=ajk`#v_|5XB>Q0Uku=LUb)GVkvPM)a*XCNg%Qmh%E@BeQ8W# z+KBDSCQNbun6GF`tJ$0lj$N@aMn9y!)2lVAnxN3`>5QZlvfSFq|iA*Y>Q%d)q@>VKCfdtdr)*Qkvsc2X$5`8*Wi3yC@Ws=#ZlVqpz=PZLxjou*JKL>3F{BvE2vb z4%_Q5GGXXDo`ss-cQgxFmI8Lcf&98gP=XT5_SU!p+gn17vu#hy-NDsvr|=fknuOd6lz>YxJeLycCzH@)XRtdYl4VVU9}#HcNrMYCmo!S2_UODFBmbn**_LCcPb^IK3x%L_0(gz4jE7 z17_zy&1SZXKx8Qpk0*%IaWA?_n+gBI@B3`SB#P4Z^vdwjUlq!)eW9 zxJu4xcf(fLX{EvlOJU@oZtS!-P?Gz$3l)G#oDDS^X5MM{Iz(}&Jw|(}b_=chpeUj( z6_H8({Uld3+i7J2k)=SqZC^BpA=u(lX8Yj^&EYhtQJn22)zg@o3BJ2A?B!eerY1QC z_l|g3#_*PE74)|=<7xV$%$v5(!ci-zCC zd%1ox7g$I$J6pfFL)YQiDe5n2W z%((V+B5Z~I)LUS)6xiSH&3?Mf0qCFrOrli|#J)ZCbco{g8!SISf5#}Imu5O5u0;hUOdDej%CJ#|#8Ioi_~x94-g zqcdFxvM27R?P^~{eGB%`mJD*zkYMykouX_i%_$@K3FQuQYzfD z3%ouKwzWN7jVn}WDAZVmCRMlKUi881v^^cC1!C7HVOgp%TQy8C%&<{@6!I5tf=BH817NcyOt~GPz_X6CRGVFo86HD zlcm7?U#HFmtB#>tXM!tWkAFmxCl(#p2F<@=Dm$j^Bpv(bCRvlU+m}i10c$$@nExnS zOT5WqY-IMab;UrP$v?zqOv3KZYbJkwjs76)!ja+F9|p_Gi(ok)&L8Yv`ijV2I)5=R zle_`e6z9$s=eC=~xdGM^zrb1yC;!gd)^srJLi#1S#JaQ|wS7+gdOB^l`5HoQg3r-T zHIx@=t2GJRKg0v${Ggy<)o5DpXM)9SfOhz-i-tb}7Y$*Na~NG0*#>Mk;Z7PUGQs$W zk$tR@J@XoQQjM6zbf__WlNOWJRTt4HL{%G&99p$%U-Y6}MJMh}n?bAgrlLAm8ErK1 z=4yC&P^Ebkg78CXiwpni&ozF!A5o7rgsk)=TVepfKN3-2zv zNn3kd0cT67QJn22HT=18V3kfWRgq0=ir=c*f)k)auw9H$bpZqS^%3Ql(6Cc^& z+tV(tesPEX50AxBzaOs%*KfiD%x5aiB7b`tgj-V_n$)>av%Nl3D$G(Uylxk2?=1*l zCK!R6)|2NBLq|ehk2Q~PYV!H!IFG%XV3%NAi>4NC9kA`{uFKA&Rs4>I1HM+y}d^!S+`~CUrX0Y@+G}B1?g|U}rRsg8SJC+VT8ypM^PWl{X!bH!hTvIuvrT1`t8|ICpiGU z6#%_IoD1>9`Lqhtxzz3sRlH4|cr#W`Ng__N7lfYytFt;O^t9sI{X|8lK znuAh&q&5zdI0$N-V%ud61`6&m+G>GVm-Xq*`6#Z#y9c0n*Jx$t!M|aO*9mr(g1!HC zOz{sx)yFRWP2y&hk0SP6*4qwIoZfC8(InV)PA^qNCbcKjYztqEW5t5i=BTU*Q9dx5b)`&ZmMJ^`_*0 z3I!ia!FOSjJFUNXF1qSsZT*u%!5i-3`;N{><%u5q!!Y9-`!TQ;W~oR}uoM)_J8<_i z*a2v(08F9<)Tozz_j8;>6le2I+8>suDn(I5a}bvxY6jHo?x$EFvJ{Ai5k!i{t58Ct zagc_%Nt_Ecic_CgO&X-kcGm*2j{Tn-@-e&d4p)x~m~qUmLOg_-EfLr(1@^dYnAx@t z!1E|XJ%~v>4mFC{GrQU$iZeUHBYN>7+iYar(N__fR4=I6%ytooECu4qtr_A_nBw&x z_jd^{ZjvowCEDNd*Mo`@dtAwTT-;F}5GnZa9Vqxd3)g{#I?5>#|J|bQFp29o;lITf zs{hW?0x|!kuFvPcQ)ydU;;;s0oc~(ER@i@~LJmtI=k4}P&M6MS$I1xxe^B%Jud728 z_uo6T_biBh9~kl9HL!@5F$`+9|H=d+OM$p6L8O*(&h1ROwv1l5LYy51HHuSP#s~nY zCs*&F1!By8b8S9m17DAB(RwVtjiH2@Ef?4<1@@34X7<+$)V24Z5D-s-8b$0|#!`nU z&g}J*9kchruJd(D5z+hEP_vn>5Qr=V;(~Sz@ic*GTgFGslS#f8qRUMkDDxhX%=0HB z^P4PUt)Zw8zZrIGHBHvrjUPh)lMnASoKbyPgDWsH3Tl)Q_2HZWN?~6u5cAKRsVvyDa0FT?#dd*faZ_LlkFr6zytDzcU(kov&|%MKF66 z)NE!43q+Oz@$sz~;(-Fu?nZnvo?x2f2P|B`+ix$lMn+u(Y{mC6iNMxH=J%oZQf5tL z3+k^2a0P$e0X15C_1AySQ@SqI0x^FjN96O@#k37B>{P*wV`o>`3j3>C$Y3dC+}DQ5 z=;Q$Wq)m~|56IDWy}w#GL~(z8Mcd$l=!5=|mM}@%rb&&1n(Z%YU-oko$F$oqRo7M(c5_*28^Aa*V)cDX@oLlkHBM2~3uD56(yVRF#N%!ZoH>@0kL_euZMU1HE5eV1xEwe;M^EvZX+76e>_JbMMo<_k|xIN7l*enJ1w1EAzn*&gx z08Ap41F>&U8!uBtar*c7h!*zciaA89wS}A13aHu4)(J$G0`a#k7~+jErE9&TxHvr@ zh7}DZUb69S-{F)MyM4)%P>9EGS|BFhL!rbwC=`1cqBSiLlPxaNpFXBVVlv?h^Gm7E z+{|}O%w&;w2XF{)Et|wZyTcsa0i-+Nm&|Feu3tkYc&3jw4PLu0wJm*Nq@~Lev~bnH z_pz%r0r%F}8jUN&)|D1i^u@zTHnvWX`Fp4<$! z!m(8^j$~qijdh4FgI$N{a#%#Gy%1`4 zY&8f(mICqa%^BkE0@3!mdvbA;+!ABS&IRGa+fOsW!{^NNm4{c)LgYvg~Z z(c0;(;Sxm zLh#2Ns8Ph;AKN%YaerLo5iLK1E9MZLuZT?QOsLuZXcUMn1!60LNX#CM@KR$?HH}cOBz>hzPCbPvlQ5;7cjHSPFL67tg&Mf z*FcRT_RPNQ5XG6@!6O<6yN+4Jr=68-598U)HVH(Q0`ZxRotW7Qlu%|5^*Hy-fm4}n z;VRZj3&fZmJ~$t<=ZiZD9Ns^K_SHKD5&|E zJ>MaUGrN>_)1?*d9Yxet5t&p8)NE#(1tLp>9 zf*BXgWv~?vf`a|zfe1-qc>UiT1fv{)77BoVztIvG8Tx$lI>#Z32f?yY4$+=bL^EI! z1IfKmvxA^eAhHyQy$K>QyJ{5sQJMV`S73Gt)ZENIdWtgpgcgV~yERQra?j;=^!4Zu zGmhEwU@OdQk-%mtuMJ#LhVodu9t9qByg+(?bC9^`es_4gS3wm>e)W z7iu=M#R8F~K>YnrFxzf)nAy#61!jNGfm37lBmk(VmT38>0x@Rm2Igb-L)r|NdbEhv zV_X)qB?6nJz&?^-XM%ToscTR5%pRKqv1fLMLlkGW!Xp|EyUy3YcxHdd!)zCU$WkEQ zw}Byc5{S0rn#sjY@*!BUbZN)+PfxCkc3c~;yYl-J~{>Jx|gY?WqM~jpUB1d^~

;TgybZ8e?S#dSZcP9F< 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/PumpsMain.obj b/x64/Debug/PumpsMain.obj new file mode 100644 index 0000000000000000000000000000000000000000..3b0e77edaf7ae60cf03d8348639a4c6878ef646c GIT binary patch literal 35506 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 UnXvZq5G(I$-rTmlxxbD6Kf>|{P5=M^ literal 0 HcmV?d00001 diff --git a/x64/Debug/ROP_MainCalculation.obj b/x64/Debug/ROP_MainCalculation.obj new file mode 100644 index 0000000000000000000000000000000000000000..01bc7eaf006bd5d049067f64492adc2e90fc8ff7 GIT binary patch literal 26142 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 HuNVIfRz99c literal 0 HcmV?d00001 diff --git a/x64/Debug/ROP_StartUp.obj b/x64/Debug/ROP_StartUp.obj new file mode 100644 index 0000000000000000000000000000000000000000..7f79c47241c75ec8faeaca028e08c87f52d09856 GIT binary patch literal 2300 zcmbVN&2QX96o1Zco3ia8Ewrjo52I+QiWK%EiBhuaVUtZ$2bw0?-K;nmZM?R3^F2IYA9~)c40Ixzwxxm^EBA%8y4F%x$^PzAE7Y2p3oN2Xsoop?X0(4UVU!vVV zkzE=UDvZqLgsBI5Yz6Q(ve(Z6+{8VJ&<)B^F6XwBc9&4TjCTE0hC(^lJ#D9<-CQCb z+L^*Kf-Nid{|=e;m*PQY1ag7Ujbkgsfp#|$Lo13$c;)#*yp#?}#C#rMjYJafs=E8f zn!4{~nYx$Gs)yfes69-le?n4spQP2@7wHfFR6j{)57Su^9?oS$<-R>+mrAb)IGg7QDc6ZdKo8^ITv~Ja#OYnq(F3 zc5TNJtm5dtZyT)51=G7-$2R1aJ`+99v%L=E3CA(ku!N6iV&jGJV(xaX$Yy)CW76w* zu~3|D79?fBcxax92@KbS{DNb*2p!9N+~FP0^73j*?VjVX{F2G?4|U;{Y{Vnlc(*>w zyWH$KR_P=qERTu6+$BWw=83_UQM_HiT5GYqERdFNY_hzuZW)`U7Vmi`Mh)NmK&tRi ze#xX01na`mNpH3~Bt=7(UvYStsWHd)Hpjx->j>Rt^O#p(TeJb zRo+b$Nqf2g2ptBbgGx`<;wr91xF>5-3UOM&F^%J09M@jMDI{5c^_gmYbs28Jm65er zacUicB?|Z)#|0etJCXDZ=PBaOEc!u60FKc07Wqd+=Om(!;D+SnUORO5ivTlT7>Wxh5+*itSXc+JFmT9&1o)cg-lt%5g!9AZlqbwmt9chH+ zn&u!?7r#n(fW|#-Po+_<&kcwojF*J|mg_W4+wYzVy>x%>!OY^_+9=Clnl>Wjv`}_J zWRw5vLM~B`BkC)SM~^e1kp6ZL;Of<*U%pm8TX_AQFN!-eOW%C@cjuM=PymBU_SwxCq}yTn1EZN1^O~#ARe9lCJ{SaSl1ErjSEMdZaL7%u#(1 zn3VLTc#7q(lEB6aB}A`a;S^v{(elo zH>FTVCN4=M$FFktzV1wWrWESWN$T&+)XGAe(~+~sZXvFdK27a3rBJ6%Qh$%8tRr@u llNqCLv9Fq-S*=%^75ZOe>oYbRy6~adTyXV{HLLp;{0om)Y}jaJF`u;znu=1VM$wQ)Q%r!rD%wmY9njC+QkFacetPg_b(&-L^iiA|!UO4dsIP}~LNFY?fAyQRUz4goiDM*z{QVu}JKo+9G*TqUVxJA>E`L`J8XeFm^PdB31_ESky~BE)E!nd71uRX*5(dVx?R&y0}ov0 z__l4>9macQ{K2tCws0rpeM3jis+Dj-4|w9;c1V@3OSTHQ&^8`x#;)Kb(dEUm8U>XlrJ`?iK!!;$L+EOg4vY2<;o>gWpbwN{6yD9F+mO&(@y z(lqQVli^}^9K~V_m{(U`G*pMXyzQ}u;rfcnYM!qdT&6t9^At+gFYKYw0#tR+W2-^J!ganfgDK zQF|r>m>f7HVN|PByEm}q;e1fLL?c+mHiNB&?cF!93jyo3P+nMGD%MMtrRHL#Ua2k= zO6BG1JiG}nkFP{>2mVPomW;m&P^}kc%k#}fp$f0SSU`$269bMwCHW^(XcOYL3*ZU% zmk4{|#`hG9ND)G0_dQK-E57MrN#;%&ZI#(A-4$4z~R_k+zXmQkMi0-;&HZ{ZT9#CB=&n*=e=WC}}0uQWj!+?UGvJ*zu_`en~ zurmfH`&OS{rr+O9Tz?oG<+Qp>FfpvzJ}rIR0ilie&-ez@^h>7{>BXou~lCwsde zpiZ2Ql~e9xbT!ij6^F~%Cjx8-bA%sO)1w}ifFfSOH1{~1?_mkJhgc~0pob-bok98p zcpdu?JKe_+31-C5UW8HoVcp^#PZ;SF;Ilp^4!ksItzrVL7R?@ph#~+(9fR)<(ijuy z*nk>hJ03A|0_%6W^QHFLRVZ-p&z>w?#48CV*jbg$r>_g8Z$&V0uex(i^l_feF jYfY=$43AI1f3aDlE3QU&T0?PMXf{ih($QxXSBJj=A%H(Y literal 0 HcmV?d00001 diff --git a/x64/Debug/RTTorqueLimit.obj b/x64/Debug/RTTorqueLimit.obj new file mode 100644 index 0000000000000000000000000000000000000000..f622f009973b4740dee36aa94565c1f209c83faf GIT binary patch literal 2635 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/RTable_OffMode.obj b/x64/Debug/RTable_OffMode.obj new file mode 100644 index 0000000000000000000000000000000000000000..cb59ea12f8a044ec485ade7be54666583c8c7b99 GIT binary patch literal 6415 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/RTable_Solver.obj b/x64/Debug/RTable_Solver.obj new file mode 100644 index 0000000000000000000000000000000000000000..cfb378a96ec1cc65dc0f05145b87bc4688168299 GIT binary patch literal 6580 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/RTable_Traction_Motor.obj b/x64/Debug/RTable_Traction_Motor.obj new file mode 100644 index 0000000000000000000000000000000000000000..87a7551315c10fbbb2ea97cd6c585db658df29c5 GIT binary patch literal 15781 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 L+UDYhu4eUr7bEn} literal 0 HcmV?d00001 diff --git a/x64/Debug/RTable_VARIABLES.obj b/x64/Debug/RTable_VARIABLES.obj new file mode 100644 index 0000000000000000000000000000000000000000..0e83b1252d5421f22b3bb6fdd652024625ae1231 GIT binary patch literal 3571 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/SimulationCore2.exe b/x64/Debug/SimulationCore2.exe new file mode 100644 index 0000000000000000000000000000000000000000..b6b7beaba475e02d23e743c98a0ad6b5f4482271 GIT binary patch literal 6295552 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CElevatorConnectionEnum.obj b/x64/Debug/CElevatorConnectionEnum.obj new file mode 100644 index 0000000000000000000000000000000000000000..c127e2af59fc2b0fd3ffeb9132df17bad4353f87 GIT binary patch literal 27481 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 yXunH*^7zUqK>&5wh(<+AxhmQnfIbn z$uVJ%Cnjg6dV-Qm)PEz<#V(>7)=G|w%1zxv_Ix~Aj2c=*mpX{neS~Pw$0YA=R8Dd_ z?X&fI!{D#FrE15>Ne-tySFiUO@B`30b%)f2YpFL`C`gVh=W81}F44riz1|(M-pQtZ zSudZ66^|qgHx}f?`%$B%*S2o57xU4WsYSF1y}+$R8o zsm!i?oI1Fgak|Szo{7p;HYz_4w~RdHc~AL|7lBB|Qq~T#A9rPqRTz#Qgbn9K+AxBR zFhHawHUuG>oLkh#PY8x!iKHMvp;6YR(PxR3jx8$gvV;qop~QCJp6063C93lAGu&D@ zeiju|)j@~p;P^9A#(IlYIB&p8*9F83^>g6BGwY!B3RerqUpLhB&^A2E`O||lcptpe z#5=ZVMo_`P%Fkb9M{v(|?aG~#3vNy>zsi$5E4-ACy`8JQH&QTL&N?X6SZ9|`}Ql32HbO6pk`3+`aaNsxE=p*V<^@8H^*=acP3rt)IedJ zl+}Rb8VCpS*@y8=D}={`p3!hHnVv~Si^*)pmCYx%hG%#5hllwYA9iV}#F1z*n|Eb1 z85lrC%gm(5qxocXGL@nFoT zCSymx>dK~b$y6e*x>C_XAsJH-XY*<_mrEsMB94NZpUGsBnJG0}XShWjPvi@TLfz`v z+GoGt-lq=DBvWy2ZtZjQ?TR=A*(i22-gclAOUJ3#lS)qVkk#HyHkF;qs=ea*JaBj> zl~Q~CakckoG@ltrVm$f7c)%Cb-gGuTlS&L!^Q8775y(#+YfrqYa3t1uzXLC@NwrtJ zB_^Y>N7UZfbRzc1z+`qN6NgvXDinnXK@|q#96@n9pNO(NJ~_o)D5|~tQ(2j*EvaPY zku7pcr}ELXx(9hJgh!LHe72B1TvW%Cg_&qd4HjqO$!wVO6xMhsxqPya2#>qMp=>q< zgCJmEzkM5ieY>`83r{99VRyDrJcz|0va>(Eqn`@-SlhIQUBT&SJ{R`q5_vJ3!B`@L z6_YKX=b3b&{i-^=%R$H$wa6dV8L#KB;(C}y#Cir4v>)X@{W?^YxHPXeJ{a(8Wr#kDr_)43Trc6~_$_4T zQGf3G;tFb^NOSlingDugO*hl()%?cW-c96F#_29vwYs{kY2og6vaY@#fsOk;!`is! z3%Lhv|V~Qg^k88zt=0XO`8w^yOD(SH%*8OJ&tI2(;9hv5xR|ejDfcc z*F(4-yuLh+ES<+3ytSr#kVhv(9Jx$->{KOj8Miji=xE{n6zP>TFUK^1I zd~FshFOLAaGnR)4@G=;aSTl|B)#m)6>x-{-!i@NqPW#4Xq@BGiEA#v4rkbU`Vma~Ut|rf6R2$n(E(S#cRR@VmfMxIUx@D_ucX4(?AUo@1s?Ts;C2?IbGky@vl- zr6JTnp_h#s`Hk;mdrqEnb(0E{WqHO-jIp^(AAPL4r828>vAWQx^ewX zZyy9^ofq}?G;j&m@AS5-@s)5-BZH`Uf4Q5Q?5eMlCJ$8+8PhO0HZtV(yY@vKWWqkO zhx+=qMG#%}zSEbJ;MEp8EmCr$A_t-mha3$CPQ7j9$!Hsa7-5zqmn3i4Vhx=++geMdP)f(H+!wy_x5ihS9~+w)M-`jBPF2AUlsCN zU5N#s^Jm;ojQL(&#Q?%GvAn+j`Sb=W(V8_^{_?c)b6D`ll~CVI|9zW|aJzt(vcdd=j$Ve;P8 zk(K^sqN^tA#3Gb^+zcfBtmDH^x8&!aKlq>0LIWTSIH_<{E$9oZ;=Z5{9IR#HeuHu@`&wEd@!Y-C+w^t(z& zHaY+#^$zLCM(eO*r9V|iHVOgBeh=!%Mkj$}%%^l@qZfc=4iM~Fql z%WsgiCfaNwez$SP6`Y2MohcAMZ$2S-2T|T7&;&|Vpjni>Vih`pQreyd>Jhv%C^ran z7Uf2P`0m*x&@(8xZ-wSj@@i7(b(Gj416@KX{h^_wZWE~{;_n7h&uOBoKr*VeNPv`X zHqlNK1xz$yqMV6NnCP^L&YB3}iR^ZYxd0pax1zjRAl^yvd~}Nar$oGCm(sOBJcFJ1 z<7*%lNJ=?(Jm;MvI}-5@L`oe%yh=K$-$Xl2DM!GuD0I?9F92}_igzY6gI0((~I z2_W{T;54Xung%9yDtw;C^HNXjfk`1%^d)DO_fl0(6s>jWw90t`oJZ?8KLO{0$*Db~ z6WLVwlum_Cm2{mDb8NUe6#=UXK(%LhJnBy665QQgr^Ag`Ob(Bt_C$}zhq0S-1Js`8 ziCIzjJ;7&qRkGKdCX zBAiFrOi@@d2_1pH2hN1f;mi{K0~}s6B0qxj9ysng&J9vkNG0rP;tVx$KHtPS3eI$$ zXMUfYsN;MK93Fc$p6@sLdAW&mrHQka9q1&5yPG)iCeCBvEW(NfQuqWa{!dxu`~Z;e znJVX5z)~IOmn;-y+!t>&ajt-Kq0WlmRD2t;s#NDUptX*3A2`p{adv_8n#rj>@3pcY zg-?8&$<2KU5^KKZ^cS}ptQKL#>#s^7ShU@hw$)gA|G6yF)?3V_cayZ_zL6qhAy>r3 zhZsRVwZO4ZVOb%x-aYpWdH30IJ8#4P^mbX|9JKhjwj8rIo$pv)=hyg57#Tj~3mpn* zk-#9nLiAB2G!*c9f+3^b^nHT|GZ+kdMtmWE^VbiSjt=g_nT6NeTIvZdEgL)Fqlm}1 z#~-PN;Gp^t(XI>8(cDe-I}3;7)qEo%cRQ`Y;o){FW7?>HTx+MLjRr!8+9`R0%Thx= z29d|clwg)3!O)o36B3iQqrSPdzPX)nTp2l_iOi;xMT(#^zbi7P ix%^|p^;1yW-?sV=`s7%Q6n>j^o3e=@DHIUuVHAv%isGL%N{Pk6iR0FWq-kR(DzM598I3P|vbKw9&5g>BmzyYZj#LofIN)@yzhaP(1z5R=~Hck0^^3Hto z=FNL=-n<#lC~xh7AK$qm|26=y4}40w>Y5v1s{X*Q$^pD8_{`l{F~}^Z6t&)NCM!M{ zU~m^esSn`&KyDB_N-#8?vK7gdLMedD2&?@7d(kG*1Nh}3pHHpD<&wz1gL0jehfF@z z>Xu`B0Q8tXlv8X~c30JK{O1T}P%cKo5TsmNk|QaAJvi4sbn5FsUjhes{`vE*hT{nc z!CXTg&3CbM?)q|RT~D&o`9!j`xglcjW+L$oQt8~)MCsh^#GAjD-c2Mo6G>uj&LsWL zb&Md!?EDv{^VhC=a9z#6^5wr#`0RhJu+>Z9MT*f){4V4A7l0c^2!)(@+_p~P8aU!o zr93BAG^4Fcu4b79%T~w4wTW?YhH^+O6m@k~axJ@PwvCikKLt|Xqr<2RzJ*`<`{BlJ zDmf^duBwkN9AHN*8&}O_5o2PU6)dBr>8i~Ny5u;T%o>)>q*hDUWY4I>?6zrYW|LX5 zfd|==YCGr^8_SGkQ-@PoHr>{Ag_>j8Om?!C@kjvqjI!gbKsFRemvya9^J8h#(ygY& z(q8i98f{%?>3M~v&q%hJ({Mg^1GCRzX~R<5x|-V#3QJ=kFnTf85oKFoRn8vH;BKh1 zw3otlNj}Ze@`@^-&eg59si0QB<+xrKI_2aP^1xlORf+nQdXu;)$kHct%a7DST{BM~ z^w+OxO9nfFadpHwO|~t^YPf7kbJ~*5DsEfRERo_Q7HKLiTXR%#sUTJ@OUD5fgxT@b zA^c@04;>Qgnkkkn$32NF??vZ?F)cW5~f?XLP@ewg-$j$f&Vy-DPg&7phPL+i7PQ`KTEbmTs58mPB?51YgH zuvuB0t`ru^(|^k-+N1vrI%@GK_2?FsFB97FQ258|3|pvvlxze<>qtb$$bJt2JPmM` zVx7YJe&q4L&XYe7$g@BXRiS>G<0And@!4?BEZ~JzCIA!{!eKk9SvA>Ri(+*$91zr$ zqeS7juzmNqi@sP?ei)!|T-c7r3H(z6zw2Y}IIh!QU{VpzGsN`29^%IlJfo-$sja(s zj^swPhHRORrH`-}8~dooRt-hz)z!lD-00C`bj#DBvQVArp~aT(VmhmaUQ;xu)unoV zcIMdBT(L631WXS;Tr!*uLCRKu7yr*>g+X}GvqDAeBuOQ>eq51380pr?{PBi^Nm_d~?H7V*Bvb)lU*06zstfLU~vyd8k!0TN&X5&1p< zUj;~j3&`+!bTJ_$z-L(bV>bdMz;#5vjT-?Hyj?~2BZbDbIP1&S|>O$BCqgIAES$fQPX~=fE~+0$U$NoX)p^H#3f21LWN{ z1u|9QkjFgd!EFIVoo@y5p64!ON%4!*OHq?N?0h+RvEhU1;>2_GiilI^`+=S-JV!5xFowSD>sZBidA!+kQ+JDW?_a1bR138N-T5kX$y<_a P2WqvlAvM)$$x-1?8i>kE literal 0 HcmV?d00001 diff --git a/x64/Debug/CElevatorEnumVariables.obj b/x64/Debug/CElevatorEnumVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..7dc10b574e394c4ada8a5c9857489b0b3092a4ee GIT binary patch literal 19035 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CEquipmentsConstants.obj b/x64/Debug/CEquipmentsConstants.obj new file mode 100644 index 0000000000000000000000000000000000000000..0090850c7b930dba02ac7d2fde38665684193e1a GIT binary patch literal 2709 zcmcIm&u<%55T32w1`J3^Aqe$QJt7ws2x~iuQets%vT?dDjh)191kxgBy}Nd{+1=;v zuG1V4REkt7Kt#l;5<=>se*ogb0f8cV$b|zZICDTM5)w28sYo1{*6pC6l-c&?%On?~EmHwgBR@E|b^qVK9&hXrsO zdGDP9I2|p3@)yJ#=8w`F2!XRv43R3x-xYcL*EM<9N-}vTo|F&v6|^42a1@oxJm{yz|RFaw+c`xp(gF?d`?!G5eGfkm4Z-iH=qW(K@eS+z%FAqlyOfXY_7K~BiqdlOJO1~iG8XC zy-V2CG8fWV#5I-*Dy61s8!V-*8`?&;##@e#Uc)y`ESYdoURI|S`0K8rl3lMgNQ*?4 zTDEwYsd3A6HpatkY`Ch;7BH`#vS?~9_juiBtESgdEmrnhy2%yFlai-Uny%>?%BrMP zIJa;>8DVBhoW#G(%;cm}GaW_dp8pmWK#-kfdwL2yS9@ey6{)uN+7YFl?ym?X;6*&GhXdWY2qi#4gajPB7NG=CRnZ&*ywE}CI|xBA zA{N9)V`IUHL1=mFPMu)BUrmy52x$bj+6UAROfA=qda!96Wcc)q<@yj5*aa;2)W^ BIe`EG literal 0 HcmV?d00001 diff --git a/x64/Debug/CError.obj b/x64/Debug/CError.obj new file mode 100644 index 0000000000000000000000000000000000000000..9b225930ae1bd755c2c645b0d0ee8d1e235cb1d7 GIT binary patch literal 18373 zcmds<4Qy0bcE`^!L+m`8tW97cyJR~76TTdOjz4h7u0JptCk7kaP`4fGkC_2a7<;Ul zabl@R>nvf53zn=d(X!gAqE#xfRU)ws>LL|YB%27dp(<_D;&!_&>9P`OQA4t{rCMv# z|GD?RJM-Q=k6#F^DxUo2{oc9foO{o?_ucn3p2#-~>FwXU8h*T)=xLHmMLIf}R?M4M zii!F>L=&}A7{ta;Rf83g=ckHhkRQ((Rsl`V`Bt_U_Z3^yZ9Rzo~!h)hXd{XMb>d=U{O9Z-U4641RhgIJ2~o<(3%6 zKW_~CMuL_&I;W3_gdCHb&lpYs;Ry5T_MC8LWSaJ6N7XSsCjuL{1$GS0nu$Ij!JU4P zgS+-12e%sYWcKlPkA~&1eBS7`#qq!#T1Rbx-J=fr|1l|Ec#wm;^B@OTh3laO=8e0( zfSKOejq8f;;IzD^m{~evt3zGS+%x~D?z8{7`|Q62*P7XVaIf6&*LVJ5Vc7}RmqZ9F=bSyE} zmPkfxLX-7@(00D33$?W;lZj+SV)zAWTk^$HIH4=_vw{M;^$>r0sADW0jc@GP_DJi@y*)m7D72dczkQ23?DqTx_@G(wdf@z^j2=C2$}#1jV+ z{z`Ed*R+2k9`{#vMf{a74JF5#Vu&ZXAGd)if8}T*G7*n9WwPO~L?Vzji)cqAqwr$5 zx}gfUrNjP8aW6SM6h7#$439*^2b+cy6Jrs0m3yhQC__^s zJQ+(xLwnmoeThUI2ED-QKt(P7s<+nGhK6HfpJll#XIpzuPgl>t==gvn zT0_fA26eF=mQYveqf}UW6&@;5>14&u_TJu>XWM1H7ocvh_Z`Td!}^z4YnFSZ%gN%cK9hRokd;N*tUw; z0#312=fw6?xU+PUo7e&{QcGrRh(4-y8QXOch1o}DY=?z3Pi(dIBDSqgvDM_n_Tk;c z#`$%QE#NY?e|LRiTl%P}@SW_Nk=^jlpO_gihP zQ*42p*#65YHl8DzZ1Yw2ywR{=Y`uM5-EQZO|F*>EICs=Fh*%n(VyVlCi^*JjNECKkCIetPMNGSDzCfU(DppAB)AeHE(=w=a40+Iy29k@hv)s zG>EYnsCJ64At%0qyNRzUZ+vd&kwVA#7M({L#P|%v~(ex;ov|D&yUcdRz0<+p>7Qd_rf<^OVtqDGjBW1fbUl#V95dV9)#-W=ah(t2dBcu8akjgw)8znKg?pmq zrP;Sr;>6iT8)#YSN)*V&c16vDg)8Xp>!AfbY=Vc?`8>$9E8*3p}JZBfn&+*CU$s{KdQg--WgQ)Lumv)aRyGNDX3YT^dDZ3(NSM1Ub_XQ#^|AsB+ z<)_%X$;;m>yMI!4KXz&NSIX{hmEGUDw0l?C{Ycrp=hE)HvU^L}y{+u{dkf}*9Ein- zPkgmREZ>3N2$+2c8! zX#cpfPdV80eJ(HA@&5+&_Cbbq3U$+OWBWR`L)hBKhnc_ZUpz2Vt#cow;wfYcvz2?1DBsbKh<^ZnHBJZPsV*+wD%~6`0y=RQqN-&3(IFx6N+QW@ql(?T*^)PTK6ueY@QSo81+g zow;wfyJNE}ofOFyWWZ6R5%$Mj*8bk zz3IewD_$rO<;u4wCWhlt4kfp2M?5i-KtDh z?`$WV;9Q2bc?|D*!@Km)Jl)`BzV*wzg`VZ)>Gm`~w7xk|N_V|~FMVaV@mI*)*XH?* z`5mmq3|RR5zgm#wjal57#X-ev+n*(mWHFBsUfAa=f+U|%Jc#XUS$rmoajhqoL4014 zNX+kN@wF_znZB_EEKnqdYBDUf>`S-9I!DPvh-()7senaAGW#h_AJZQN|_7=x8M3RK$HT z>QFM8tIw~(d-}FJcu9tB!qkhS@qtJzHJ;`{cG0b&*S7}aTGlL zx$a?$sXz@s^YKlE&r{Hi1FXa*=eOkYZME;Qf{@Q!unRX7`SfahO9~G73Jdzbn_sWi zrCz|LUY*c;*sOQOLUD+to|QUY>!hI$g!wQ0Xem0bSWlY^oCI-5&3lEa@K;Q@?NE!OUoo4^FEK5O z@e;#a9QEa~uMLXnF;m_7B*`abt?N}%utj9shCKuxoq`6qz%X%_6 zPRGJ|V?A3?a9Aw!@ZpiSxLpK&AGB7;KG4KBOHvPyaQLa77uy;niF0f*kZn*LMk{jb(bV!GTc^!`}Wdmvfw zKY*maF7z8748Y&lHJt`Yy*EKpZ|TEke-wjc=_-&cje^z*FL7P^k}iE0R3=I<>(Z;b zbiH9_yc{GwH-Mz)BcLaR?QvcDZC&~^&<0U@QC$r;P57fCIxkwIr5K*vIMR*^x+AwVZWHmk^>5eU#>ki``l6o3G!hOAMMK`S6Yk|0~H z$e`OG1dsKOBD4ic2nw<}MFyRM(lQ}?O%eP-=@IEqkwHg6Ul6k6ir@lvy7-+MQjVdze4bUbb`@SNy542IpZYwgV8bR<#ETTF^1|>i|c8e&b z$e^>J^+I+|kwL!z@$peapDHq_1qoOuWbKL!Is#fNWYdZaDnwFbY{iNUY6i(1Y*&Ol zgJiA_DZ;n{;ScqmRby^1c`R&G z1b-lT%p6jL9DvlZr3g6y$z$-QBIE$4U3sjQDMAiFIB-#KND*=XlE?lDMd%~w@C@P+ z*D{iL{77on)U9by)1;=Onoepuqv?XCE1GU-;#)UaTcJ8PddRP-N>j6@eoZ5qCN<4! zI;Dxvzp{=?n&vd!(8TGHdL^3tni@3)HT7#6*EFSRR?}%sJOit?Xu789mL~2#skd6w zMoo>Hx-|`I8rO7G(@9OIHC@njMbkA+d=8K;D8%qmZP8SvsaaFErV&k(nvQBhmvgES zB1DRKB;qkVWPGflYOH(|OTq!FN>_u}%8M^anB)gZ+cFRzA6_vFN-Ec-RUkg1ycE#X zs7v`;kB>nwHEY@qlAePgZljkvHFfLKJ`f-0Uh!x|Qb?B$f_P@|Qbf}TNP3QgcrNkM zxTdr&odn5@9MUwUOJ4!;eC4I1nvUzzSrE@~UOJ)aq%Qpf5YLHTI;H6~kZjdyPzhEq zy{_quEB(0LHY>%l+9XMP9(6_eM)KLrp3Wfu9}kqRNe94m4m zW8Mu}M#8>V!bwKLR|=n4Bn^=KHQJle;ksT&domKdgrsStG$R>Je|`Z;L+|hpFpPjQi_+<12||O8z>ESY`{x;u zYUuC}G^pP`$kKchwabNjIs3;Nc!YaBYjnA(m;FNxJodewd3@%2z6eWh9WNXSGMXd# zWsc-=s9LR_$&vh4jwG2QIi4fo^QzVJyE&3;keo!|B4eV>A3<`)BKajGmo1WIP`_@G ztbt_SBH02-3DTAE%=hT!7D)#rL5rjxl88le0Fo&!$^J16akldC&tc>)FTzSLqL;IN z8bh4LJl9apvqNV21|+s`kX73SHFiO*T@bJf>g)pXSkOtB{SoXx~5Evpqjud*qtM`8|Ar)o0~yc`Tfg#$f(Z3Aum?`ggK z|7d%Mk|}#)v%aQf>s;%Xz?=*9_spD&Gv8)&E;qk2XDj92;_r<)h}Bop97+~y3Oie{ z9b9NOVql=Rucx!4ue+t~`GG33>{eTMYplDq*4==0x6Zm-Z{2OM?lxL?w_>+rlwXMs HrK0qIx7LC3 literal 0 HcmV?d00001 diff --git a/x64/Debug/CFillMouseHoleLedNotification.obj b/x64/Debug/CFillMouseHoleLedNotification.obj new file mode 100644 index 0000000000000000000000000000000000000000..dde667bf16bed9e5f57c0c146bcd418e60ad1638 GIT binary patch literal 6698 zcmcgweQaA-6+e!hCAb~^TDz?)+f&Iz%Yx&yUAtx*IB{NUcTSwfZq!l_$FW~pcQ1bC z`MC>Xh@dQEshh5<_@f{pAtb~=LP8+MfN7+wP)0SXmZ1&A5MP^U)rxK1kb+cc{La14 z&mVDdJ)8g6PhIblkJTQ5)TGLc1+3~w|8G?^6GGCMsHI>)1J1_+-w4+a~{ttNTJC~ zp3vmH=gV)0N}jekPaBhSy=}5^rkU-8re6w8U%n*Zj23wG?0;kMfyM^Ea+T0ZcG7P< zc^!%$%E{@Uyew>fa~7f`JT9#Tqz7MGG4)5t(42~qAY@=8%bDg`7Sn1dG^4iu`~#%W z&*+0ECl%qt$J&G_213&o$86?@Lig9wLsOsn~lnt#@1`Cz!6t4^O0 z1@+mvsgtPA>2eZkcIELat4iwl9hoB9?TK)QSv z`10SJP-9!{4*D62?b|nT(;|S(!Au$vS_a$Q4 zv7(-`vPLdwnA(=a`1WmyUS4k!!ChHh?=y-8EoA6gM9cIWR(3R-7Ro+jsG-w zU7)vGTIiiy`01i>&eHTvgPWCIhKU)UQygOZHYI3`<+HkGDnUI}C}h*hs9`Fpd|tQh z78J9X%Vl$i6r-kMyE3Gi1$e1!@o(w$?eKLfJ;kh^;p~=9f9KAmUnDQ3AI~h=N=lDq zs3WXrN4UL8N6yfVLx$2J7M`xrqOL0)(TvjZc*@LmWzimU6f0Lj=@>IIMP2Kv1WD;Y zAP~(OYFDPBa5UYy!;h78MClOA-$*L`n9`9xtfe388ZnBw46Mpr!4gGqs?e2T53Iwc zmg4fv$RTE-sC4Yr4cP^f5F_SeC z9H)fJP05?tf|eKxCgO&nqe2X@bDM7~ew{nFZcU72bBT~qu=Zmli0JGc+rEtoW_ro6 zCW5iUDKnpl<~37{l2}^HrOd2RNK}uV!V*Jkbf=#XFlrD)9>QWw^Q6hpZZW0>iN{|2 zAF=<*+siBkcZDO7zUaP~8j42Lh}zp9jfZ!IgWd6Pv_CnPPcEuJ8))^)VaHfKXrkyU zo@2Zo4>#~f87w%>O-jn+2J=i8l7^i^rq=1A}TTR@+R`M&2_U zryDuBWa}0W&f=v@8o!ZO9J+^V!n){K z+$~FPBLBN};2K_ciQj1_9&eo1a^f|O6N)i2WV!`< zysqF7B=i-VXHnM2>*+R|2cFl-(RUB&|y1Yu2;^N z>$&anlXdlG>*{%I#{%G2;=kO^^ZPh|yPa2$ru1UU(vtOul856)zSqq1*T;=@9?^9D z3sm;4dvJG8BpQ4q=_dzv;$07vodM>vb2-nkx7{F@*L|p$?WEvIa zan2fRP%^eqpEvu#cy9wMX1b0n939h>nQS4yz;ray+uz-%#x^QmwBn29(4aL8?-5;p zYm)U%ykDxhZ=$-1yc;=kv__+^`oj!5m*d_j!mtV~Nw07;azy8#9D!hKr z>CTDn=r4|6pU1RZa*=Lyyn652yAQ!Gf7yFzH=g_+56w8-X@~nK5T7B}AKxcrYl?y=f zZNCSSR{rd8{{WI!{_Suc%o7=10s@U3bBw%n5(qzVU$c>y=7G3v%jmj|ytEDp2R-ee(++ypLC-q~KzQI5 z{<1G_;Q{XeZmdAkXSaw1_q1E=*OHfGg*o2yxxH>u@RX&P+`_VpjyvcDAhzNXJ1Ez1 z;l8bMzldo;ZkGa;dx2^bYjbkp9qcF3$MN5be}&<5)wdm{`bJW;%*A(-Z78oKTL*_H zd5Uzq1gt0kRo_^$_ih*8S<1DoTJh^nhCQslzZ9`?wL9fyPrCrK2!jwwzqRd;<($ z_ftT<~cBY30KiM3x;paD$H-e@af(F(;>C+@-Ah-!;VwAp(Y$6J?dnbtW@nssS_DT(dGULD(w-K-NHj$=EiTPL<` zr;7lwppdC1i&UneRj@xQ*ie~3niy=A0Fix>Fvc{Y38wJ}1qsnX#oBF%{xPZi&b{x$ zUs>D&;>hpb-#zEtbI(2Zy!Wo(O*~?w-+le}@h5i>?IB6_LUOL4VXhvx5Iv<3y>hK& z-iAsg$GAO_oS20;+(RBy(F(F?p67d$}q$ zdSpvf#l|4FRvQnYVgj6#h+)=*<2qaxy09}34s?!bf+ab(rEi`AV`K@nH>@`nGR7H2cXUTog zv#_Rkil|rJx|n?fD+|pN63)S=dF}<$IyJ~ni^nAw!!DjQA@^fq6Fi0DqAAjNH!kQd!8BP~pJS+MvH*#H;7Eiwk4rj)~Ie2fT zS{m$n(n7`-kyu_y+e_D8NWZn`plR-Jec4~`bnHg~orPAq<%xpgC$)uCMWWt{*q$X2wp*$ALrD7B5WZs^cI80w^xULn0(3|v^ zrY1VSiA#mNGlgWjWAqMnD3inEW=1s_dwNu7W;&ZnCv&PZ9n0raadk42Q)Ag|S{op* z=4NMRQZrL(rmW*Gbu5|7!(Fx8(cNXg$KIt5&Zg1{ZgzJ$y7opLf@~CjC_x)dm*Ue2 z>hz{l6FhOXb0(9{Ol8zg@zm>^oK2_I&Ok!#d?=Qi=}Tcgxk)@W^J?dGCNY~%_LQZo@xCSN#+ln~L`KfR}i z^11kiVU0LLhhn*GB#=$!M7o6H$r)r!CLbwHqI|tMHo4b9h#b|3rk3O1LVc8m%if6l z!P}=@H<%LVkk{uM2^+{9^;7-hn}%I~1MHM(fk08)#e0 zIL4_>4HUrG7a&aHNsy@UaR+XjS0Uru=f*4XG2{+MD<>p8I$zrzaId1))-$NPTZsJ1 z7~M=;TFos&r7_R_bR!hH4Re(WbUih<-UHvq0$!JU%t7Fm6`@Nh_IPM--eB;iX4i8_c>gj$940S%&ArmMep}-kl36?K@6#AMPl|GinUA+QCr(^K=*n&3meTgOzEIcz=ki z85hDX=mV6qj5d1v{VyKV81{W!4jx}4UVA1Bt~P;)dWh!vKI}z3h#GjlvLEL)Q)$0D zp~txn`}1DZT{ZgE8t)e9@p!kQ=JDW%7*A}b(PrXjF%!qqClEg?X`Y|Y*P!MN>2;|8 zg&Kb!=M@BeJL;{dKaHBV^EaWsgc|=Bg?$yeI_=j0#B5Ix@I1GfR8g9R9z*trvEFV= zWuo!I9Chd&%`P8{D%JIEyxz%Ish|t$tT*beg_oKu6!m%N^IXv6{TO#1*OJzDR=yo> ztz;nOD_Q0nq)OWqkseZexU2i_D8^*c-PHY-T(i{WZ|gu4oz>dh5J&C>WIC5RYowYG1yG%Gie64dy= z75q{ii3OiSpyxSbzNfY@0P%f^`$bR;rT#2nzMk7G?ayn>lOI-QOtQu%C^>44AW9~g0mcB(e4^;$^~89rv=$mahquc9q< zI}a|Xz89?Bsx$?WulMTRE@SIjYZGPN+VskwH@(qNT>6#8YH9i_|4ZTf;Y#e++5lZ_ zSZg>5d)miL*j^{KK5F`P;}fNN>*VM~%bNA16?Xh|?X~a!=>_F6?~eOUbj=S0e){M~ zr*Y$KxTUD|7wv=hFYtHL&A6;IjB=|$PoUg}tC_xIpdT9OG?47^3yo)`UmCpM7`(SM z)J%Ug(BBO7PXqDoE$uY{@wisHN<+=G9SHAs@LUGE&p=_IyC7|*aRc#Ni9eQF=@}qt z`6mXtXrN8FE2Pv1bcg5>GI(DAlF|4cko4erL;9j2y&Crs-%3{6flAtI2aR z*76iFFp$GQ{RRpe2(E}oT14EzMy#7rVwVlX`vi`?g<1^6`(!EI4#cZv!QWCHsX$W7 zapLv0h)77Z%aA&NI3q0lze7X4hLk;EUle-WK(7O_FAD9#%z0dez6`{c6>-wU_7t3> znCDOslSSc^C|;p*Vhc>jW;7(~Ctosd3<8$*CD0519K3%4*8<(t(7I zKtBg(T;p(LL8v%qM0^B;_wSxEj;g7$Si*a&IFTyOTovaV;2bKm{9SO4m2sW}hv#nk z^KzA)cdIyCSY0D2?5^V6U&Z-K73V2%)?kMPQusWo4n)o5yb8$wDNW8>3^kIYHz09N zl5GSrpt1HK>nMQjo~ilJid7BIw0CRn8lehR~zVePW$@ z{7JLczVI@-*V^{2x67k-c6AgT4LhSwK57W@*#Zu4up_VhlC^>)>_1zz5PP{=#% z4+pBhJg{_RV4vH6z~`$i^@i4$jUMn*)axG#L`@eQRPG|$WiC3ZhcUl#usc4te>m*f zNNd35+DK*8JrWpmZ=~fO35FloNXZ+jOAYZDKpZPWf>nx!!lOQKSS;G^@@6+VU86Yd x@%o3I0e=X`J!R)RRp}VT5CLa&)a?w6y2=AzItt=m+GHQR)3K@KU@V`ce*;S+ literal 0 HcmV?d00001 diff --git a/x64/Debug/CFillupHeadPermission.obj b/x64/Debug/CFillupHeadPermission.obj new file mode 100644 index 0000000000000000000000000000000000000000..ce64ee5a7b5290f5dab6f68aa26267b5e1bd45f9 GIT binary patch literal 5444 zcmcgwZ)_Y#6@TYD$L=|)?b3u&g1Smw2$i|B9XEdrsCPcEy+>@Hb9c5k}-jI0Vo-~-|df)7aiQBeg{#VM824^Raasqg_LkSYZ^K$=t{NQLry zvwM3!`(g)>c-ooy&3kX&ym>P_v$N{6?ewST-pqfwi|A2uC{)&#$}Z+2&_a~<5xu<6 zVeUsEQQvGx)#fS-Jt>Dv^uivZ(|)40`yI|f6bf|>hb%Q$&egPt+F@&Nkm$Re4iAtb z6p4hE8ufa?f3Tz8j!}gABB4^FUJvu3w-;kzx(`X{sg{;6pVtHv*~>`k7JC%zqEOk& zQSpzVJ6?CD3y<(8J8DBR!6AwUzBC)mN12pRWtJszuKHVp{p)jdd2lW}j>G zCDiZ9X7$I*+_ZXTX+>CH;pwA~ztVZ>56r(Rw{sn33U*W=aS38zJNyR%z9?V-%Z;oF^E@@ZuI zmSCYXe8oyJC&Qel9nOX5=bqdMiZ)ewcB5-Wp1rhQ>0Oc4OY7ym8;`mYb>jti`Ks{p zir~TdMO0~{6N1+^3szf?i)uZfD`%FJ6(=OC-(G`|!~5UQ*R?I?#eA);t?`<98|g*7 zJ15E44M?$}%#>xG#hSD;GpYDQCZ!iDMy{-z#h7Vn1DU0xgP9S2r!uio-7qR8Ma!vE znpMzk8%iN_?kp{~9O#Bkx<+rcwb9KzockzVENjN$D7PAOb84RgVi!s4YGny(m!6i%p8_(IMq4(S+=HIKK_ zmcj*7tr*%+JvdSrfj|@+SfgrP;e5XTSRZzYIVmh&?YUh3oD|M4YWZ_Rb7rNe!m3lV z%R&UF>>-ssC@)%wIppfx0&}4#g-;o#6RBQ9FP`gl=5fKw6(mfPW@je!yk*+vd|8^& z?Mlv&Qss)On;DK%M&_ZEEZx>JGqFtCGz~OJ0rn4uj^OD(apXv5PA_H@(=MOJ3J}pb zRX93Gww2#CteIG9F=v%BiIQfC*-YiNV$RY{J5ygd_FWd#{E0q7n5aqUu*7)%^2?g0 zF|mFD1)V~E(oJ7`$l)Q6jmF2vr>7J-Ix;0EC*rA8JTaLql(J0)bdVnCn)MoQ1uc~5 z=KgOXWw!L6#ZEK^{tU{?_t3vQ6CIz9rsZri2ZbN&u-2Ro(7x^mJkdxpJ|m}}nv&^} z27Wp*B}Cc(K;dqddE`#)AH(?0Y#BSp{sa=o|LgZK_SE!nDwd27?=bjTm}*YD4sxe4 z9B+tF(>1`0qeNc|GfMA;*_-t=^-X*?f6P zjFVMPbGC_=TwH7S9k(7q*@eX8aVQc&uTlAY&Zy+dTDIBY_sO(b8nJYI&DFY%CdY=y z6S0$7_UCxO@t(g|T%%MQ&&?X6R=R?kUp2*=VPDYySkT}4Bi|I((^&fxV}tuCredx8 z+kFp_Z)&rgP1fScnCB96CW!eG(#KS7K36fyI8TNS>GOHBXq(0%seug{ODwIRs?9_t zoa==qlEQXe>s}?*_Yn^2bSTkn^dy{`u452KLMM3 z+X;yCkgqlY`UY}-s{`~c&nffP9!zj&XoGJoE^V)1u!)PXb|| zf!Ih(Z`I>n268;T;qm@n=V4{>;_9HAE((%?J0%|QN-hf0 zH6R{k2mQuHLAnma%4DJ}}qJ3wfJKJK_ENIkeS!&&eSyC_Is0dit+*+oHd zw()%UMBE*87mQcnCoB>la?K2Y%5n?`M9otFfnkv3EO& zN9ahM)xc7mJfgjyBu~maE!*?aGamXL5L@vPZ`~XhA8z9HKM!D%-^c$R#Dx{LI2|fgMIh=dOdj!Z2qf(+c+KQ;3ZhD`}{CC>}8$v5pZ5>;0!u$fye%2 z=Z$j3)>KplA*!4H?_e?!G5*8TNSpud;F}6M{C6kNpcFwr%}e-zDZZG_>SZ4^rnxaC$Q(X8IVjt#e{HIIHnk16!n^fK5G#(qR~ TvL4e-6_&&cxdm-FXKVCt^QcYU literal 0 HcmV?d00001 diff --git a/x64/Debug/CFillupHeadPermissionVariables.obj b/x64/Debug/CFillupHeadPermissionVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..d79d3fd14d7b4703094a88c929d748f1920d4005 GIT binary patch literal 9172 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 literal 0 HcmV?d00001 diff --git a/x64/Debug/CFlowKellyDisconnectEnum.obj b/x64/Debug/CFlowKellyDisconnectEnum.obj new file mode 100644 index 0000000000000000000000000000000000000000..405a7e9bc6d19df0d9ff7cd8678996a241453357 GIT binary patch literal 3777 zcmcgvU1%It6h4#PHg%haR9b(FT*?X&>i(pmZ5AIknQXdilWd#Wq*bQf%+Abirk$T< zX0}a1G#HUq4OAbbk0J;@_+k+Rl_L6(7ax4*sb16lwwHism z=K{F90E#^Tqk$Z%gd+5hrffxWrBDjsON2l40(=+9J%#l=%nC;f9~i1qVV{WR@m&M@H+YEKEAhb{ilH2hYiluTFE2c}cKFBf-+J9gdpP@S&uRi4hV0v%juCEI~&wPZ*QbyRXx_y=G&5`h2! literal 0 HcmV?d00001 diff --git a/x64/Debug/CFlowKellyDisconnectEnumVariables.obj b/x64/Debug/CFlowKellyDisconnectEnumVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..884408c18224c7459f0041bb70c1049bc05e3ff5 GIT binary patch literal 2275 zcmcgt&2Jl35TC8xrkEaDK@sBg6d6&Zu(p#ZC5D5OwT(@axXmUmNQ>O{?%LVr?LKQi zl9UTbk&psJiVz3>01ljc;edotIix}e^~Qw@NJv3KqD?Erp$BGmH;$b|inuV^eLHXF z_h#qgy*K7Z=i!Hse>SQk0M9{8a$s!)2~VFTdL@9L&c(tr_+gO0C7V_|>}J(i3h)#a zUm@`}ate{sB&j);hPKZzj` z0mZvq+x+uZZJTFVZ7ZFv?S7}Bb~l~=5vjJhm#%I8lm6hZ+9&DkZaPcC-EuZoZsT78 zYFqbeTYv0D?6y^U@B5vd9di2-z7Noun;=~xrBc+cd*U|6=xa^2KCh{^6LLMUg{uh9 z8rL?aCbcrvNK>j@tY5P@zf-n-L%1$3s<@%k)ID2obIX@S`!1w>+kB-S=&Sb%e+CUXR;Gvh#|!zwbSocG28?y{)JVZ_Ovu%_-KLmX&J|pA1isdj7n4BR|)jR~O8HKBP+<|SDi?&T$ zH&$8BSh0-NVq1i+iB{v8A4Dp2$}gJaL9pUkI_b@Jm!t?}xf@)>nHuA^yE+!vwCm{( zt72Y#ZQeFK;fqednzkS6oT))*+Crl|X%z~k=h?ocH5F}12#yO>WDAq>1U`l7i3zQ3 zyIM{7!8^DcqU_vorY6Dnj8oI9De8*u^|VIM@}g?0hUMap5x%zU+QA*w?z%eu^7P%+ zna%^|3{J=+z+>EUcx^3R&j zk>Fo5t&Se@0BcYjwL5qme8ETAkQjBO@hrzQPg3>pEI21(r2583+PJ$Qv+?76uOtd0}b`CgNk-;|= zttERBe4c0}>>!67lj@O@s5cO5m=2nc1Prx<{gbdMi8|=;sst1D9P%NyJZyEazf$i@ zNz`G98>UzK)9CL5-In}HNk`8ez+k7P))ZroTYh8M@<89E_L!2W^A6Ks&!tMFr29Ay j$4)goeMdoSaY<<@bOEb$<6=wmq1CE8de@rOeGC2tnhFkO literal 0 HcmV?d00001 diff --git a/x64/Debug/CFlowPipeDisconnectEnum.obj b/x64/Debug/CFlowPipeDisconnectEnum.obj new file mode 100644 index 0000000000000000000000000000000000000000..c974b674b9beb4a5d481cadcb3e4e26f8f808af1 GIT binary patch literal 3744 zcmcgvO>7%Q6n-1Kq_{aG6)gpdG^z|LQt?k3C5^?wiR09UBu--|EI`{DPGZprWT0UQFi#2j_i@i0}7@GS`de?(m3Q&=%bEX5SH(yT>` zE)`&TA3&}L;N=4@1yw>0`p09IA~}-J1#lDLm%RX=d3;Y}I}Pb{Y_**)iuA?(EjdDI zNTg$p?R*!JZ=+2g@+p=oJLgqj!*>X7Y|#gieuz1iBnMmor_k58(5N|b081EOZlCLK zi4*Zd;8QOqK8^gH&t1N|lv~rIEO#Xw&8>egV()r5{1cYk<=f%h<&E&Wf95_8N7utq zBCbzF-Oe?PAja&<54kIMZgaS%rqBNPUlg8t(h3`$6kekk-N*M^od0PM1`t9fCC*yr zIh+GqTqx$J#iCYk>XM_GM#i+%L2-3>NSvTGBxWXc^TMpwP$x87HVp%1vPQEWGb`s{ zrRVSfYK5QSx87d3_Y{2v$QzETAD?@LO_~b7i$ccD>sN+AoJWlNQ)U#ZlH zii|9NMmOC^ozOL7<%BzvHA||qNsOy4PHVDd+Gf>Z3!2@ObXIhlie`!wCoxN|G%U?l z#f6MmGEE%?iU^ZKv6J{DM^Byi&dg7j>y2`kE;tGY`1OLzS z39~q7T`;Ne{q(W-%jNVVNPJaMt5Q>UFf*l&X;u6;*rtArwUM!pdMvfBD4n_*_=l)> z=&5h#r!+NJn&_a#lD81;^L4$fXm(?p>cZ5-%-D3cc#K7Gd5ri|hTagQl?(9yq`5wz z7`mlPK8l5f-q}7F_Sv8dAEmS%(#giYTLS=nFtQgtJEen-o?AUYr->Ojbm+maUkjh) zpMU*&^3qu0o2!ox;;C%c4c{rRKYVciHPlHb%`lwCFC7)buolp+2ee-T+MR%Q59g6~ z`T=<4p$Ir30DO?P>Y)fcMntxwcB}|R;I@Yjz}`@OzAcx2uW6DDjp7F?L zfzP9hj$_+J=>Xv-^Jq%}S`E;L0U|G5Spy|KiMQl;t zXi-Yo`aGa)zL#*%1iG1!?XBYRkRbOvByiYbK(zVZLe__boA{;pwU?_wlPuhPi{Y^m zqCvk8Hs4^-G}KHy+cn?t1-S2n+a literal 0 HcmV?d00001 diff --git a/x64/Debug/CFlowPipeDisconnectEnumVariables.obj b/x64/Debug/CFlowPipeDisconnectEnumVariables.obj new file mode 100644 index 0000000000000000000000000000000000000000..752219d561b46a4fc93dd943a5f87fa0b6bf5191 GIT binary patch literal 2266 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