Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
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)
Пример #6
0
    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)  
Пример #7
0
    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()
Пример #8
0
 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')
Пример #9
0
    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)