예제 #1
0
 def test_temp_drilling(self):
     t = ptd.temp(trajectory, 1)
     self.assertIsInstance(t.tdsi, list)
     self.assertIsInstance(t.tds, list)
     self.assertIsInstance(t.ta, list)
     self.assertIsInstance(t.tcsg, list)
     self.assertIsInstance(t.tsr, list)
     self.assertIsInstance(t.tfm, list)
예제 #2
0
    def test_temp_behavior(self):
        t = 2

        # For Drilling
        st = ptd.temp(t, log=True).behavior()
        self.assertEqual(len(st.tbot), len(st.tout))
        self.assertIsInstance(st.finaltime, type(t))
        self.assertIsInstance(st.tbot, list)
        self.assertIsInstance(st.tout, list)

        # For Production
        st = ptp.temp(t, log=True).behavior()
        self.assertIsInstance(st.finaltime, type(t))
        self.assertIsInstance(st.tout, list)

        # For Injection
        st = pti.temp(t, log=True).behavior()
        self.assertIsInstance(st.finaltime, type(t))
        self.assertIsInstance(st.tbot, list)
예제 #3
0
def plot():
    time = request.args.get("time")
    depth = request.args.get("depth")
    wd = request.args.get("wd")
    well_profile = request.args.get("well_profile")
    kop = request.args.get("kop")
    eob = request.args.get("eob")
    build_angle = request.args.get("build_angle")
    kop2 = request.args.get("kop2")
    eob2 = request.args.get("eob2")
    sod = request.args.get("sod")
    eod = request.args.get("eod")
    plot_type = request.args.get("plot_type")
    plot_md = request.args.get("plot_md")
    deltat = request.args.get("deltat")
    dt_tdsi = request.args.get("dt_tdsi")
    dt_ta = request.args.get("dt_ta")
    dt_tr = request.args.get("dt_tr")
    dt_tcsg = request.args.get("dt_tcsg")
    dt_tfm = request.args.get("dt_tfm")
    dt_tsr = request.args.get("dt_tsr")

    # TUBULAR
    n_casings = request.args.get("n_casings")
    dro = request.args.get("dro")
    dri = request.args.get("dri")
    ddo = request.args.get("ddo")
    ddi = request.args.get("ddi")

    # OPERATIONAL PARAMETERS
    tin = request.args.get("tin")
    q = request.args.get("q")
    rpm = request.args.get("rpm")
    t = request.args.get("t")
    tbit = request.args.get("tbit")
    wob = request.args.get("wob")
    rop = request.args.get("rop")
    an = request.args.get("an")

    # DENSITIES
    rhol = request.args.get("rhol")
    rhod = request.args.get("rhod")
    rhoc = request.args.get("rhoc")
    rhor = request.args.get("rhor")
    rhofm = request.args.get("rhofm")
    rhow = request.args.get("rhow")
    rhocem = request.args.get("rhocem")

    wtg = request.args.get("wtg")
    gt = request.args.get("gt")

    if time is None:
        time = 5
        depth = 3000
        wd = 150
        well_profile = "V"
        kop = 600
        eob = 1500
        build_angle = 40
        kop2 = 1800
        eob2 = 2300
        sod = 2000
        eod = 2600
        plot_type = 1
        plot_md = 1
        deltat = 1
        dt_tdsi = True
        dt_ta = False
        dt_tr = False
        dt_tcsg = False
        dt_tfm = True
        dt_tsr = False
        n_casings = 0

        # TUBULAR
        casings_list = []
        dro = 21
        dri = 17.716
        ddo = 4.5
        ddi = 4

        # OPERATIONAL PARAMETERS
        tin = 20
        q = 794.933
        rpm = 100
        t = 2
        tbit = 1.35
        wob = 22.41
        rop = 14.4
        an = 3100

        # DENSITIES
        rhol = 1.198
        rhod = 7.6
        rhoc = 7.8
        rhor = 7.8
        rhofm = 2.245
        rhow = 1.029
        rhocem = 2.7

        wtg = -0.005
        gt = 0.0238

    else:
        time = float(time)
        depth = float(depth)
        wd = float(wd)
        well_profile = str(well_profile)
        kop = float(kop)
        eob = float(eob)
        build_angle = int(build_angle)
        kop2 = float(kop2)
        eob2 = float(eob2)
        sod = float(sod)
        eod = float(eod)
        plot_type = int(plot_type)
        plot_md = float(plot_md)
        deltat = float(deltat)
        dt_tdsi = bool(dt_tdsi)
        dt_ta = bool(dt_ta)
        dt_tr = bool(dt_tr)
        dt_tcsg = bool(dt_tcsg)
        dt_tfm = bool(dt_tfm)
        dt_tsr = bool(dt_tsr)
        n_casings = int(n_casings)

        # TUBULAR
        casings_list = []
        for i in range(1, n_casings+1):
            csg_dict = {"od": float(request.args.get("od" + str(i))), "id": float(request.args.get("id" + str(i))),
                        "depth": float(request.args.get("depth" + str(i)))}
            casings_list.append(csg_dict)
        dro = float(dro)
        dri = float(dri)
        ddo = float(ddo)
        ddi = float(ddi)

        # OPERATIONAL PARAMETERS
        tin = float(tin)
        q = float(q)
        rpm = float(rpm)
        t = float(t)
        tbit = float(tbit)
        wob = float(wob)
        rop = float(rop)
        an = float(an)

        # DENSITIES
        rhol = float(rhol)
        rhod = float(rhod)
        rhoc = float(rhoc)
        rhor = float(rhor)
        rhofm = float(rhofm)
        rhow = float(rhow)
        rhocem = float(rhocem)

        wtg = float(wtg)
        gt = float(gt)

    inputs = {'time':time, 'depth':depth, 'wd':wd, 'well_profile':well_profile, 'kop':kop, 'eob':eob,
              'build_angle':build_angle, 'kop2':kop2, 'eob2':eob2, 'sod':sod, 'eod':eod, 'plot_type':plot_type,
              'plot_md':plot_md, 'deltat':deltat, 'n_casings':n_casings}

    # Others parameters: the ones which should be used for the attribute 'change_inputs'
    others = {'wd':wd, 'tin':tin, 'q':q, 'rpm':rpm, 't':t, 'tbit':tbit, 'wob':wob, 'rop':rop, 'an':an, 'rhol':rhol,
              'rhod':rhod, 'rhoc':rhoc, 'rhor':rhor, 'rhofm':rhofm, 'rhow':rhow, 'rhocem':rhocem, 'dro':dro, 'dri':dri,
              'ddo':ddo, 'ddi':ddi, 'wtg':wtg, 'gt':gt}

    inputs.update(others)  # Merge 'others' into the 'inputs' dictionary

    error_raised = error_messages(inputs)  # Checking process for warning messages depending on the inputs

    if error_raised == 0:
        if plot_type != 5:
            temp = ptd.temp(time, mdt=depth, casings=casings_list, profile=well_profile, change_input=others,
                            build_angle=build_angle, kop=kop, eob=eob, kop2=kop2, eob2=eob2, sod=sod, eod=eod)

        if plot_type == 1:
            fig1 = create_figure1(temp)
        if plot_type == 2:
            fig1 = create_figure2(temp, plot_md)
        if plot_type == 3:
            fig1 = create_figure3(temp)
        if plot_type == 4:
            fig1 = create_figure4(temp.stab())
        if plot_type == 5:
            temps = ptd.temps(time, deltat, mdt=depth, profile=well_profile, change_input=others, build_angle=build_angle,
                              kop=kop, eob=eob, kop2=kop2, eob2=eob2, sod=sod, eod=eod)
            fig1 = create_figure5(temps, tdsi=dt_tdsi, ta=dt_ta, tr=dt_tr, tcsg=dt_tcsg, tfm=dt_tfm, tsr=dt_tsr)

        wellpath = get(depth, profile=well_profile, build_angle=build_angle, kop=kop, eob=eob, kop2=kop2,
                                       eob2=eob2, sod=sod, eod=eod)
        fig2 = plot_wellpath(wellpath)

        p = row(fig2, fig1)

    else:
        p = figure(sizing_mode='stretch_both')

    return p, inputs