コード例 #1
0
 def test_finite_line_source_image_part(self, rel_tol=1.0e-6):
     """ Tests the value of the image part of the FLS solution.
     """
     from pygfunction.boreholes import Borehole
     from pygfunction.heat_transfer import finite_line_source
     # Evaluate the double integral
     reference = dblquad(
         fls_double,
         self.D1,
         self.D1 + self.H1,
         lambda x: self.D2,
         lambda x: self.D2 + self.H2,
         args=(self.t, self.dis, self.alpha, False, True))[0] / self.H2
     # Evaluate using heat_transfer.finite_line_source
     borehole1 = Borehole(self.H1, self.D1, 0.05, 0., 0.)
     borehole2 = Borehole(self.H2, self.D2, 0.05, self.dis, 0.)
     calculated = finite_line_source(self.t,
                                     self.alpha,
                                     borehole1,
                                     borehole2,
                                     reaSource=False,
                                     imgSource=True)
     self.assertAlmostEqual(calculated,
                            reference,
                            delta=np.abs(rel_tol * reference),
                            msg='Incorrect value of the image part of the '
                            'finite line source solution.')
コード例 #2
0
    def test_two_unequal_boreholes_four_segments(self, rel_tol=1.0e-6):
        """ Tests the value of the thermal response factor matrix for two
            boreholes of unequal lengths with and without similarities.
        """
        from pygfunction.heat_transfer import thermal_response_factors
        from pygfunction.gfunction import _borehole_segments
        from pygfunction.boreholes import Borehole

        borehole1 = Borehole(self.H, self.D, self.r_b, 0., 0.)
        borehole2 = Borehole(self.H * 1.432, self.D, self.r_b, self.B, 0.)
        boreField = [borehole1, borehole2]
        boreSegments = _borehole_segments(boreField, nSegments=4)
        time = np.array([33554478]) * 3600.

        # Calculation of thermal response factor matrix using similarities
        h = thermal_response_factors(boreSegments,
                                     time,
                                     self.alpha,
                                     use_similarities=True)
        # Calculation of thermal response factor matrix without similarities
        h_none = thermal_response_factors(boreSegments,
                                          time,
                                          self.alpha,
                                          use_similarities=False)

        self.assertTrue(np.allclose(h, h_none, rtol=rel_tol, atol=1e-10),
                        msg='Incorrect values of the thermal response factors '
                        'two unequal boreholes (4 segments).')
コード例 #3
0
 def test_finite_line_source_no_part(self, rel_tol=1.0e-6):
     """ Tests the value of the FLS solution when considering no source.
     """
     from pygfunction.boreholes import Borehole
     from pygfunction.heat_transfer import finite_line_source
     # Evaluate using heat_transfer.finite_line_source
     borehole1 = Borehole(self.H1, self.D1, 0.05, 0., 0.)
     borehole2 = Borehole(self.H2, self.D2, 0.05, self.dis, 0.)
     calculated = finite_line_source(self.t, self.alpha,
                                     borehole1, borehole2,
                                     reaSource=False, imgSource=False)
     self.assertEqual(calculated, 0.,
                            msg='Incorrect value of no part of the '
                                'finite line source solution.')
コード例 #4
0
ファイル: pipes_test.py プロジェクト: giecli/pygfunction
    def test_fluid_heat_transfer_rate_series(self):
        """ Tests the value of the fluid heat transfer rate for a borehole with
            multiple U-tubes in series.
        """
        from pygfunction.pipes import MultipleUTube
        from pygfunction.boreholes import Borehole

        # Reference solution (Cimmino, 2016)
        nPipes = [2, 3, 4]      # Number of U-tubes
        # Fluid mass flow rate [kg/s]
        m_flow = 0.3
        T_b = 1.0               # Borehole wall temperature [degC]
        # Outlet fluid temperature [degC]
        Tf_out = np.array([1.6215, 1.2051, 1.1065])
        # Inlet fluid temperature [degC]
        Tf_in = np.array([5.0, 5.0, 5.0])
        # Total heat transfer rate [W]
        Qf_ref = m_flow*self.cp*(Tf_out - Tf_in)
        borehole = Borehole(self.H, 0., self.r_b, 0., 0.)

        # Calculate using pipes.MultipleUTube()
        Qf = np.zeros_like(Qf_ref)
        for i in range(len(nPipes)):
            pos = self._pipePositions(nPipes[i])
            UTube = MultipleUTube(pos, 0., self.r_out, borehole,
                                  self.k_s, self.k_g, self.Rfp, nPipes[i],
                                  config='series', J=0)
            # Obtain fluid heat extraction rate
            Qf[i] = UTube.get_fluid_heat_extraction_rate(Tf_in[i], T_b,
                                                         m_flow, self.cp)
        self.assertTrue(np.allclose(Qf, Qf_ref, rtol=1e-4, atol=1e-10),
                        msg='Incorrect value of fluid heat extraction rate '
                            'for U-tubes in series.')
コード例 #5
0
ファイル: pipes_test.py プロジェクト: giecli/pygfunction
    def test_inlet_fluid_temperature_parallel(self):
        """ Tests the value of the inlet fluid temperature for a borehole with
            multiple U-tubes in parallel.
        """
        from pygfunction.pipes import MultipleUTube
        from pygfunction.boreholes import Borehole

        # Reference solution (Cimmino, 2016)
        nPipes = [2, 3, 4]      # Number of U-tubes
        # Fluid mass flow rate [kg/s]
        m_flow = np.array([0.2*n for n in nPipes])
        T_b = 1.0               # Borehole wall temperature [degC]
        # Outlet fluid temperature [degC]
        Tf_out = np.array([2.0860, 2.2279, 2.4627])
        # Inlet fluid temperature [degC]
        Tf_in_ref = np.array([5.0, 5.0, 5.0])
        # Total heat transfer rate [W]
        Qf = m_flow*self.cp*(Tf_out - Tf_in_ref)
        borehole = Borehole(self.H, 0., self.r_b, 0., 0.)

        # Calculate using pipes.MultipleUTube()
        Tf_in = np.zeros_like(Tf_in_ref)
        for i in range(len(nPipes)):
            pos = self._pipePositions(nPipes[i])
            UTube = MultipleUTube(pos, 0., self.r_out, borehole,
                                  self.k_s, self.k_g, self.Rfp, nPipes[i], J=0)
            # Obtain inlet fluid temperature
            Tf_in[i] = UTube.get_inlet_temperature(Qf[i], T_b,
                                                   m_flow[i], self.cp)
        self.assertTrue(np.allclose(Tf_in, Tf_in_ref, rtol=1e-4, atol=1e-10),
                        msg='Incorrect value of inlet fluid temperatures for '
                            'U-tubes in parallel.')
コード例 #6
0
ファイル: pipes_test.py プロジェクト: giecli/pygfunction
    def test_outlet_fluid_temperature_series(self):
        """ Tests the value of the outlet fluid temperature for a borehole with
            multiple U-tubes in series.
        """
        from pygfunction.pipes import MultipleUTube
        from pygfunction.boreholes import Borehole

        # Reference solution (Cimmino, 2016)
        nPipes = [2, 3, 4]      # Number of U-tubes
        # Fluid mass flow rate [kg/s]
        m_flow = 0.3
        T_b = 1.0               # Borehole wall temperature [degC]
        Tf_in = 5.0             # Inlet fluid temperature [degC]
        borehole = Borehole(self.H, 0., self.r_b, 0., 0.)

        Tf_out_ref = np.array([1.6215, 1.2051, 1.1065])
        # Calculate using pipes.MultipleUTube()
        Tf_out = np.zeros_like(Tf_out_ref)
        for i in range(len(nPipes)):
            pos = self._pipePositions(nPipes[i])
            UTube = MultipleUTube(pos, 0., self.r_out, borehole,
                                  self.k_s, self.k_g, self.Rfp, nPipes[i],
                                  config='series', J=0)
            # Obtain outlet fluid temperature
            Tf_out[i] = UTube.get_outlet_temperature(Tf_in, T_b,
                                                     m_flow, self.cp)
        self.assertTrue(np.allclose(Tf_out, Tf_out_ref, rtol=1e-4, atol=1e-10),
                        msg='Incorrect value of outlet fluid temperatures for '
                            'U-tubes in series.')
コード例 #7
0
ファイル: pipes_test.py プロジェクト: giecli/pygfunction
    def test_fluid_heat_transfer_rate(self):
        """ Tests the value of the fluid heat transfer rate for a single U-tube
            borehole.
        """
        from pygfunction.pipes import SingleUTube
        from pygfunction.boreholes import Borehole

        # Reference solution (Cimmino, 2016)
        # Fluid mass flow rate [kg/s]
        m_flow = np.array([0.2, 0.3])
        T_b = 1.0               # Borehole wall temperature [degC]
        # Outlet fluid temperature [degC]
        Tf_out = np.array([2.2161, 2.8394])
        # Inlet fluid temperature [degC]
        Tf_in = np.array([5.0, 5.0])
        # Total heat transfer rate [W]
        Qf_ref = m_flow*self.cp*(Tf_out - Tf_in)
        borehole = Borehole(self.H, 0., self.r_b, 0., 0.)

        # Calculate using pipes.SingleUTube()
        Qf = np.zeros_like(Qf_ref)
        for i in range(len(m_flow)):
            pos = [(-self.D_s, 0.), (self.D_s, 0.)]
            UTube = SingleUTube(pos, 0., self.r_out, borehole,
                                self.k_s, self.k_g, self.Rfp, J=0)
            # Obtain fluid heat transfer rate
            Qf[i] = UTube.get_fluid_heat_extraction_rate(Tf_in[i], T_b,
                                                        m_flow[i], self.cp)
        self.assertTrue(np.allclose(Qf, Qf_ref, rtol=1e-4, atol=1e-10),
                        msg='Incorrect value of fluid heat extraction rate.')
コード例 #8
0
ファイル: pipes_test.py プロジェクト: giecli/pygfunction
    def test_outlet_fluid_temperature(self):
        """ Tests the value of the outlet fluid temperature for a single U-tube
            borehole.
        """
        from pygfunction.pipes import SingleUTube
        from pygfunction.boreholes import Borehole

        # Reference solution (Cimmino, 2016)
        # Fluid mass flow rate [kg/s]
        m_flow = np.array([0.2, 0.3])
        T_b = 1.0               # Borehole wall temperature [degC]
        Tf_in = 5.0             # Inlet fluid temperature [degC]
        borehole = Borehole(self.H, 0., self.r_b, 0., 0.)

        Tf_out_ref = np.array([2.2161, 2.8394])
        # Calculate using pipes.SingleUTube()
        Tf_out = np.zeros_like(Tf_out_ref)
        for i in range(len(m_flow)):
            pos = [(-self.D_s, 0.), (self.D_s, 0.)]
            UTube = SingleUTube(pos, 0., self.r_out, borehole,
                                self.k_s, self.k_g, self.Rfp, J=0)
            # Obtain outlet fluid temperature
            Tf_out[i] = UTube.get_outlet_temperature(Tf_in, T_b,
                                                     m_flow[i], self.cp)
        self.assertTrue(np.allclose(Tf_out, Tf_out_ref, rtol=1e-4, atol=1e-10),
                        msg='Incorrect value of outlet fluid temperatures.')
コード例 #9
0
ファイル: pipes_test.py プロジェクト: j-c-cook/pygfunction
    def test_fluid_heat_transfer_rate(self):
        """ Tests the value of the fluid heat transfer rates for a borehole
            with multiple independent U-tubes.
        """
        from pygfunction.pipes import IndependentMultipleUTube
        from pygfunction.boreholes import Borehole

        borehole = Borehole(self.H, 0., self.r_b, 0., 0.)

        # Calculate using pipes.IndependentMultipleUTube()
        pos = self._pipePositions(self.nPipes)
        UTube = IndependentMultipleUTube(pos,
                                         1e-30,
                                         self.r_out,
                                         borehole,
                                         self.k_s,
                                         self.k_g,
                                         self.Rfp,
                                         self.nPipes,
                                         J=0)
        # Obtain outlet fluid temperature
        Qf = UTube.get_fluid_heat_extraction_rate(self.Tf_in_ref, self.T_b,
                                                  self.m_flow, self.cp)
        self.assertTrue(np.allclose(Qf, self.Qf_ref, rtol=1e-4, atol=1e-10),
                        msg='Incorrect value of fluid heat extraction rates '
                        'for independent U-tubes.')