Example #1
0
            def adjoin_GaNi(a, b):
                print('Gani')
                a.dct()

                #    print(a.val)
                a.grad_transpose()

                #   print(a.val)
                a.idct()

                adjoin = Chebyshev_element(name='adjoin',
                                           N=N,
                                           shape=(),
                                           multype='scal')
                adjoin.val = np.multiply(a.val, b.val)
                adjoin.dct()
                #     print(adjoin.val)

                adjoin.idct()
                #    print('ab')

                #   print(adjoin.val)
                adjoin.integrate()
                #scalar = np.sum(adjoin.val)
                return adjoin.integral  #scalar  # #
Example #2
0
 def adjoin_GaNi_Tran(
     a,
     b,
 ):
     #  print('Gani')
     #  print(a.val)
     a.Fourier = True
     a.idct_trans()
     #  print(a.val)
     #     iFa=a.idct()
     #    print(iFa.val)
     a.Fourier = True
     a.grad_transpose()
     #      print(a.val)
     #       print(a.val)
     a.Fourier = False
     a.dct_trans()
     #   print(a.val)
     # b.idct()
     # plt.show()
     a.Fourier = False
     adjoin = Chebyshev_element(name='adjoin',
                                N=N,
                                shape=(),
                                multype='scal')
     adjoin.val = np.multiply(a.val, b.val)
     #    print('ab')
     #   print(adjoin.val)
     adjoin.integrate()
     # scalar = np.sum(adjoin.val)
     return adjoin.integral  # scalar  # #
Example #3
0
            def collocation(a, b, mat):
                a.dct()
                a.idct()
                a.val = np.multiply(mat.val, a.val)
                a.dct()
                a.idct()

                original = Chebyshev_element(name='original',
                                             N=N,
                                             shape=(),
                                             multype='scal')
                original.val = np.multiply(a.val, b.val)
                original.integrate()
                return original.integral
Example #4
0
            def tester(a, b):
                a.dct()
                #  print(a.val)
                a.idct()
                adjoin = Chebyshev_element(name='test',
                                           N=N,
                                           shape=(),
                                           multype='scal')
                adjoin.val = np.multiply(a.val, b.val)
                adjoin.dct()
                # print(adjoin.val)

                adjoin.idct()
                #    print('ab')

                #   print(adjoin.val)
                adjoin.integrate()
                #scalar = np.sum(adjoin.val)
                return adjoin.integral  #scalar  # #
Example #5
0
            def coll(a, b):
                #  print('coll a dct')
                #   print(a.val)
                a.dct()
                #  print(a.val)
                a.div()
                #    print(a.val)
                #a.idct()

                both_side = Chebyshev_element(name='both_side',
                                              N=N,
                                              shape=(2, ),
                                              multype='scal')
                both_side.val = np.multiply(a.val, b.val)
                #   print('ab')
                #   print(both_side.val)
                both_side.integrate()
                #scalar = np.sum(both_side.val)
                return both_side.integral  # scalar  #
Example #6
0
 def test_integral(self):
     print('\nChecking integral')
     solution = [0, 0.8, 8.3317]
     for dim, Ni in itertools.product([2, 3], [100, 155]):
         N = np.array(dim * [
             Ni,
         ], dtype=np.int)
         dN = tuple(np.array(N * 2 - 1, dtype=np.int))
         x0 = Chebyshev_element(name='x', N=N, shape=())
         x0.set_nodal_coord()
         integrant = lambda x: (x[0]**4) + (x[1]**3) if x.__len__(
         ) == 2 else (x[0]**4) + (x[1]**3) + np.cos(x[2])
         x0.val = integrant(x0.coord)
         x0.integrate()
         self.assertTrue(np.isclose(x0.integral,
                                    solution[dim - 1],
                                    rtol=1e-05,
                                    atol=1e-08,
                                    equal_nan=False),
                         msg="Integral does not work correctly")
Example #7
0
            def GaNi(a, b):

                b.dct()

                b.grad()
                # print(b.val)
                b.idct()

                both_side = Chebyshev_element(name='both_side',
                                              N=N,
                                              shape=(2, ),
                                              multype='scal')
                both_side.val = np.multiply(a.val, b.val)
                # both_side.dct()
                # print(both_side.val)
                # both_side.idct()
                #   print('ab')
                #   print(both_side.val)
                both_side.integrate()
                #scalar = np.sum(both_side.val)
                return both_side.integral  # scalar  #
Example #8
0
    def test_integral_w_projection(self):
        print('\nChecking integral with projection')
        solution = [0, 0.8, 8.3317]
        for dim, Ni in itertools.product([2, 3], [100, 155]):
            N = np.array(dim * [
                Ni,
            ], dtype=np.int)
            dN = tuple(np.array(N * 2 - 1, dtype=np.int))

            integrant = lambda x: (x[0]**4) + (x[1]**3) if x.__len__(
            ) == 2 else (x[0]**4) + (x[1]**3) + np.cos(x[2])
            u = Chebyshev_element(name='u', N=N, shape=(), multype='scal')
            u.set_nodal_coord()
            u.val = integrant(u.coord)

            u.integrate()
            i_1 = u.integral
            u.dct()
            u.enlarge()
            u.idct()
            u.integrate()
            i_2 = u.integral
            u.dct()
            u.shrink()
            u.idct()
            i_3 = u.integral

            self.assertTrue(np.isclose(i_1,
                                       i_2,
                                       rtol=1e-05,
                                       atol=1e-08,
                                       equal_nan=False),
                            msg="Integral does not work correctly")
            self.assertTrue(np.isclose(i_1,
                                       i_3,
                                       rtol=1e-05,
                                       atol=1e-08,
                                       equal_nan=False),
                            msg="Integral does not work correctly")