def setUp(self): # Create a test config file containing the test database adripy.create_cfg_file(TEST_CONFIG_FILENAME, [TEST_DATABASE_PATH, TEST_NEW_DATABASE_PATH]) # Create a DrillTool object representing a stabilizer self.pdc_bit = adripy.DrillTool(TEST_PDC_FILE) # Create a DrillTool object representing a motor self.motor = adripy.DrillTool(TEST_MOTOR_FILE) # Create a DrillTool object representing a stabilizer self.stabilizer = adripy.DrillTool(TEST_STABILIZER_FILE) # Create a DrillTool object representing an mwd self.mwd = adripy.DrillTool(TEST_MWD_FILE) # Create a DrillTool object representing a stabilizer self.upper_stabilizer = adripy.DrillTool(TEST_STABILIZER_FILE) # Create a DrillTool object representing a collar self.collar = adripy.DrillTool(TEST_COLLAR_FILE) # Create a DrillTool object representing a drill pipe self.drill_pipe = adripy.DrillTool(TEST_DRILLPIPE_FILE) # Create a DrillTool object representing EUS self.eus = adripy.DrillTool(TEST_EUS_FILE) # Create a DrillTool object representing a top drive self.top_drive = adripy.DrillTool(TEST_TOP_DRIVE_FILE)
def setUp(self): # Create a test config file containing the test database adripy.create_cfg_file(TEST_CONFIG_FILENAME, [TEST_DATABASE_PATH]) # Create a DrillTool object from a stabilizer property file filename = os.path.join(f'<{TEST_DATABASE_NAME}>', 'stabilizers.tbl', self.TEST_STABILZIER_NAME + '.sta') self.stabilizer = adripy.DrillTool(filename) # Create an identical DrillTool object that will be modified later self.stabilizer_to_modify = adripy.DrillTool( os.path.join(f'<{TEST_DATABASE_NAME}>', 'stabilizers.tbl', self.TEST_STABILZIER_NAME + '.sta')) self.stabilizer_to_modify.rename(self.NEW_STABILIZER_NAME)
def test_get_parameter_value_bit_length(self): """Tests that DrillTool.get_parameter_value() returns the correct bit length. """ pdc_bit = adripy.DrillTool(TEST_PDC_FILE) expected_value = 1.5 actual_value = pdc_bit.get_parameter_value('Bit_Length') self.assertEqual(actual_value, expected_value)
def setUpClass(cls): try: adripy.add_cdb_to_cfg(TEST_DATABASE_NAME, TEST_DATABASE_PATH, os.environ['ADRILL_USER_CFG']) except ValueError: pass # Create DrillString object string = adripy.DrillString(TEST_STRING_NAME, hole_file=TEST_EXISTING_HOLE_FILE, event_file=TEST_EVENT_FILE) # Create DrillTools objects pdc_bit = adripy.DrillTool(TEST_PDC_FILE) stabilizer = adripy.DrillTool(TEST_STABILIZER_FILE) drill_pipe = adripy.DrillTool(TEST_DRILLPIPE_FILE) eus = adripy.DrillTool(TEST_EUS_FILE) top_drive = adripy.DrillTool(TEST_TOP_DRIVE_FILE) # Add DrillTools to string string.add_tool(pdc_bit) string.add_tool(stabilizer) string.add_tool(drill_pipe, joints=TEST_NUMBER_OF_DRILLPIPES, group_name='Upper_DP_Group') string.add_tool(eus, joints=TEST_NUMBER_OF_EUSPIPES, group_name='equivalent_pipe', equivalent=True) string.add_tool(top_drive) # Write the string file string_file = string.write_to_file(TEST_WORKING_DIRECTORY) # Create DrillSolverSettings object solver_settings = adripy.DrillSolverSettings('baseline_settings') # Write the solver settings file solver_settings_file = solver_settings.write_to_file( TEST_SOLVER_SETTINGS_NAME, directory=TEST_WORKING_DIRECTORY) # Build model adripy.build(string_file, solver_settings_file, TEST_WORKING_DIRECTORY)
def create_existing_drillsim(directory): # Create a test config file containing the test database adripy.create_cfg_file(TEST_CONFIG_FILENAME, [TEST_DATABASE_PATH, TEST_NEW_DATABASE_PATH]) # Create a DrillTool object representing a stabilizer pdc_bit = adripy.DrillTool(TEST_PDC_FILE) # Create a DrillTool object representing a motor motor = adripy.DrillTool(TEST_MOTOR_FILE) # Create a DrillTool object representing a stabilizer stabilizer = adripy.DrillTool(TEST_STABILIZER_FILE) # Create a DrillTool object representing a drill pipe drill_pipe = adripy.DrillTool(TEST_DRILLPIPE_FILE) # Create a DrillTool object representing EUS eus = adripy.DrillTool(TEST_EUS_FILE) # Create a DrillTool object representing a top drive top_drive = adripy.DrillTool(TEST_TOP_DRIVE_FILE) # Create a DrillString object drill_string = adripy.DrillString(TEST_STRING_NAME, TEST_EXISTING_HOLE_FILE, TEST_EVENT_FILE) # Add the DrillTool objects to the DrillString object drill_string.add_tool(pdc_bit, measure='yes') drill_string.add_tool(motor, measure='yes') drill_string.add_tool(stabilizer, measure='yes') drill_string.add_tool(drill_pipe, joints=20, group_name='Upper_DP_Group') drill_string.add_tool(eus, joints=20, group_name='equivalent_pipe', equivalent=True) drill_string.add_tool(top_drive) # Create an event object event = adripy.DrillEvent(TEST_EVENT_NAME, 2000, 3) event.add_simulation_step(10) event.add_simulation_step(100) event.add_ramp('FLOW_RATE', 0, 15, 500) event.add_ramp('ROTARY_RPM', 15, 15, 60) event.add_ramp('WOB', 30, 15, 50000) event.add_ramp('ROP', 30, 15, 100) # Create a solver settings object solver_settings = adripy.DrillSolverSettings(TEST_SOLVER_SETTINGS_NAME) if os.path.exists(directory): shutil.rmtree(directory, ignore_errors=True) drill_sim = adripy.DrillSim(drill_string, event, solver_settings, directory, TEST_ANALYSIS_NAME)
def test_get_tool_2(self): """Tests that DrillString.get_tool() returns the correct value. """ # Create a DrillString object drill_string = adripy.DrillString(TEST_STRING_NAME, TEST_EXISTING_HOLE_FILE, TEST_EVENT_FILE) # Define a new stabilizer object different_stabilizer = adripy.DrillTool(TEST_STABILIZER_FILE) # Add the DrillTool objects to the DrillString object drill_string.add_tool(self.pdc_bit, measure='yes') drill_string.add_tool(self.stabilizer, measure='yes') drill_string.add_tool(different_stabilizer, measure='no') drill_string.add_tool(self.drill_pipe, joints=20, group_name='Upper_DP_Group') drill_string.add_tool(self.eus, joints=20, group_name='equivalent_pipe', equivalent=True) drill_string.add_tool(self.top_drive) got_tool = drill_string.get_tool('stabilizer', index=1) self.assertEqual(got_tool, different_stabilizer)
def setUp(self): # Create a test config file containing the test database adripy.create_cfg_file(TEST_CONFIG_FILENAME, [TEST_DATABASE_PATH, TEST_NEW_DATABASE_PATH]) # Create a DrillTool object representing a stabilizer self.pdc_bit = adripy.DrillTool(TEST_PDC_FILE) # Create a DrillTool object representing a stabilizer self.stabilizer = adripy.DrillTool(TEST_STABILIZER_FILE) # Create a DrillTool object representing a drill pipe self.drill_pipe = adripy.DrillTool(TEST_DRILLPIPE_FILE) # Create a DrillTool object representing EUS self.eus = adripy.DrillTool(TEST_EUS_FILE) # Create a DrillTool object representing a top drive self.top_drive = adripy.DrillTool(TEST_TOP_DRIVE_FILE) # Create a DrillString object self.drill_string = adripy.DrillString(TEST_STRING_NAME, TEST_EXISTING_HOLE_FILE, TEST_EVENT_FILE) # Add the DrillTool objects to the DrillString object self.drill_string.add_tool(self.pdc_bit, measure='yes') self.drill_string.add_tool(self.stabilizer, measure='yes') self.drill_string.add_tool(self.drill_pipe, joints=20, group_name='Upper_DP_Group') self.drill_string.add_tool(self.eus, joints=20, group_name='equivalent_pipe', equivalent=True) self.drill_string.add_tool(self.top_drive) # Create an event object self.event = adripy.DrillEvent(TEST_EVENT_NAME, 2000, 3) self.event.add_simulation_step(10) self.event.add_simulation_step(100) self.event.add_ramp('FLOW_RATE', 0, 15, 500) self.event.add_ramp('ROTARY_RPM', 15, 15, 60) self.event.add_ramp('WOB', 30, 15, 50000) self.event.add_ramp('ROP', 30, 15, 100) # Create a solver settings object self.solver_settings = adripy.DrillSolverSettings( TEST_SOLVER_SETTINGS_NAME) # If the "existing" drill sims don't exit, create them for directory in [ TEST_EXISTING_DRILLSIM_DIRECTORY, TEST_EXISTING_UNBUILT_DRILLSIM_DIRECTORY ]: if not os.path.exists(directory): create_existing_drillsim(directory) drill_sim = DrillSim.read_from_directory( TEST_EXISTING_DRILLSIM_DIRECTORY) if drill_sim.built is False: drill_sim.build()
def test_check_extension(self): """Tests that DrillTool throws an error if you give it a string file. """ with self.assertRaises(adripy.tool.DrillToolError): _bad_tool = adripy.DrillTool('dummy.str')
def setUp(self): # Create a test config file containing the test database adripy.create_cfg_file(TEST_CONFIG_FILENAME, [TEST_DATABASE_PATH]) self.agitator = adripy.DrillTool(TEST_EXISTING_AGITATOR_FILE)