Пример #1
0
    def testBasic(self):
        f, s = mms.evaluate('div(grad(u))', 'x**3')
        fs = mms.fparser(f)
        self.assertEqual(fs, '6*x')

        ss = mms.fparser(s)
        self.assertEqual(ss, 'x^3')
Пример #2
0
    def testEvaluateVectorFunction(self):
        f, e = mms.evaluate('div(u.outer(u))', 'cos(x*t)*e_i')

        s = mms.fparser(f)
        self.assertEqual(s, '[-2*t*sin(x*t)*cos(x*t), 0, 0]')

        s = mms.fparser(e)
        self.assertEqual(s, '[cos(x*t), 0, 0]')
Пример #3
0
    def testEvaluateWithVectorFunction(self):
        f, _ = mms.evaluate('div(h*u)', 'cos(x*t)', vectorfunctions=['h'])
        s = mms.fparser(f)

        self.assertEqual(s, '-t*h_x(R.x, R.y, R.z, t)*sin(x*t) + ' \
                            'cos(x*t)*Derivative(h_x(R.x, R.y, R.z, t), R.x) + ' \
                            'cos(x*t)*Derivative(h_y(R.x, R.y, R.z, t), R.y) + ' \
                            'cos(x*t)*Derivative(h_z(R.x, R.y, R.z, t), R.z)')
Пример #4
0
    def testCylindricalEvaluate(self):
        f, _ = mms.evaluate('div(u)',
                            'r*phi*z*(e_i+e_j+e_k)',
                            transformation='cylindrical',
                            coordinate_names=('r', 'phi', 'z'))
        s = mms.fparser(f)

        self.assertEqual(s, 'phi*r + 2*phi*z + z')
Пример #5
0
    def testEvaluate(self):
        f, _ = mms.evaluate('diff(h, t) + div(u*h) + div(grad(r*h))',
                            'cos(x*y*t)',
                            variable='h',
                            scalars=['r'],
                            vectors=['u'])

        s = mms.fparser(f)
        self.assertEqual(s, '-x^2*r*t^2*cos(x*y*t) - x*y*sin(x*y*t) - x*t*u_y*sin(x*y*t) - ' \
                            'y^2*r*t^2*cos(x*y*t) - y*t*u_x*sin(x*y*t)')

        s = mms.moosefunction(f)
        self.assertEqual(s, '-std::pow(p(0), 2)*_r*std::pow(t, 2)*std::cos(p(0)*p(1)*t) - ' \
                            'p(0)*p(1)*std::sin(p(0)*p(1)*t) - p(0)*t*_u(1)*std::sin(p(0)*p(1)*t) ' \
                            '- std::pow(p(1), 2)*_r*std::pow(t, 2)*std::cos(p(0)*p(1)*t) - ' \
                            'p(1)*t*_u(0)*std::sin(p(0)*p(1)*t)')
Пример #6
0
    def testEvaluateWithKwargs(self):
        f, _ = mms.evaluate('div(h*u)', 'cos(x*t)*e_i', scalars=['k'], h='k*x*x')
        s = mms.fparser(f)

        self.assertEqual(s, '-x^2*k*t*sin(x*t) + 2*x*k*cos(x*t)')
Пример #7
0
    def testEvaluateWithScalarFunction(self):
        f, _ = mms.evaluate('diff(h*u, t)', 'cos(x*t)', functions=['h'])
        s = mms.fparser(f)

        self.assertEqual(s, '-x*h(R.x, R.y, R.z, t)*sin(x*t) + ' \
                            'cos(x*t)*Derivative(h(R.x, R.y, R.z, t), t)')