Exemplo n.º 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')
Exemplo n.º 2
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')
Exemplo n.º 3
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]')
Exemplo n.º 4
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)')
Exemplo n.º 5
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)')
Exemplo n.º 6
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')
Exemplo n.º 7
0
    def __init__(self, methodName='runTest'):
        super(TestContinuity, self).__init__(methodName)
        exact_soln = 'sin(pi*x) * sin(pi*y) * sin(pi*z)'
        f, exact = mms.evaluate('-div(grad(T)) + T', exact_soln, variable='T')
        x, y, z = sympy.symbols('x y z')
        u = eval(
            str(exact).replace('R.x', 'x').replace('R.y',
                                                   'y').replace('R.z', 'z'))
        du_dx = sympy.diff(u, x)
        lm = du_dx
        self.function_args = [
            'Functions/forcing_function/value="' + mms.fparser(f) + '"',
            'Functions/exact_soln_primal/value="' + mms.fparser(exact) + '"',
            'Functions/exact_soln_lambda/value="' + mms.fparser(lm) + '"'
        ]
        self.gold_values = {
            'p1p0_hex-u_0.1': 1.9305390060119176,
            'p1p0_hex-lm_0.1': 1.0272242755193284,
            'p1p0_hex_non-u_0.1': 2.0694003778178534,
            'p1p0_hex_non-lm_0.1': 1.0719372819043176,
            'p1p1_hex-u_0.1': 1.90978686865625,
            'p1p1_hex-lm_0.1': 3.0413581999654924,
            'p1p1_hex_non-u_0.1': 1.9421386178496052,
            'p1p1_hex_non-lm_0.1': 2.001745263935625,
            'p1p1dual_hex-u_0.1': 1.8956170085743176,
            'p1p1dual_hex-lm_0.1': 1.4802316459242533,
            'p1p1dual_hex_non-u_0.1': 1.9009463364413586,
            'p1p1dual_hex_non-lm_0.1': 1.4766123810566583,
            'p2p0_hex-u_0.1': 3.044201176042964,
            'p2p0_hex-lm_0.1': 1.019296943618726,
            'p2p0_hex_non-u_0.1': 2.9750765225049074,
            'p2p0_hex_non-lm_0.1': 1.019447305041749,
            'p2p1_hex-u_0.1': 2.9717861674588906,
            'p2p1_hex-lm_0.1': 2.032637929038658,
            'p2p1_hex_non-u_0.1': 2.9413624940907344,
            'p2p1_hex_non-lm_0.1': 2.0321190357379546,
            'p2p2_hex-u_0.1': 2.939071712671479,
            'p2p2_hex-lm_0.1': 3.0514171179331036,
            'p2p2_hex_non-u_0.1': 2.90086020890949,
            'p2p2_hex_non-lm_0.1': 2.130510552719881
        }

        self.tolerance = 1e-3
Exemplo n.º 8
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)')
Exemplo n.º 9
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)')
Exemplo n.º 10
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)')
Exemplo n.º 11
0
    def __init__(self, methodName='runTest'):
        super(TestGapConductance, self).__init__(methodName)

        exact_soln = 'x**4 + 2*y**4 +x*y**3'
        f, exact = mms.evaluate('-div(grad(T)) + T', exact_soln, variable='T')

        x, y = sympy.symbols('x y')

        u = eval(str(exact).replace('R.x', 'x').replace('R.y', 'y'))

        u_secondary = u.subs(x, 1)
        u_primary = u.subs(x, 2)
        lm = u_secondary - u_primary

        du_dx = sympy.diff(u, x)

        # flux = n * -grad_u = nx * -du_dx
        # n_secondary = 1
        # n_primary = -1
        flux_secondary = -du_dx.subs(x, 1)

        flux_primary = -1 * -du_dx.subs(x, 2)

        mms_secondary = flux_secondary - lm
        mms_primary = flux_primary + lm

        self.function_args = [
            "Functions/forcing_function/value=\'" + mms.fparser(f) + "\'",
            "Functions/exact_soln_primal/value=\'" + mms.fparser(exact) + "\'",
            "Functions/exact_soln_lambda/value=\'" + mms.fparser(lm) + "\'",
            "Functions/mms_secondary/value=\'" + mms.fparser(mms_secondary) +
            "\'",
            "Functions/mms_primary/value=\'" + mms.fparser(mms_primary) + "\'"
        ]

        self.gold_values = {
            'p2p2-2-to-2-u_same': 2.9822564691564524,
            'p2p2-2-to-2-lm_same': 3.001026070690089,
            'p2p2-3-to-2-u_coarse_primary': 2.9830362913692774,
            'p2p2-3-to-2-lm_coarse_primary': 2.9165033066603714,
            'p2p2-3-to-2-u_coarse_secondary': 2.974976328637989,
            'p2p2-3-to-2-lm_coarse_secondary': 3.210239428561721,
            'p2p2-4-to-2-u_coarse_primary': 2.982552524913371,
            'p2p2-4-to-2-lm_coarse_primary': 2.9082806315999687,
            'p2p2-4-to-2-u_coarse_secondary': 2.967163866045459,
            'p2p2-4-to-2-lm_coarse_secondary': 3.2244149963833273,
            'p2p2-5-to-2-u_coarse_primary': 2.9823936432051203,
            'p2p2-5-to-2-lm_coarse_primary': 2.9052727051947764,
            'p2p2-5-to-2-u_coarse_secondary': 2.964889659684415,
            'p2p2-5-to-2-lm_coarse_secondary': 3.2290095723998236,
            'p2p1-2-to-2-u_same': 2.9823879971978347,
            'p2p1-2-to-2-lm_same': 2.027908692116612,
            'p2p1-3-to-2-u_coarse_primary': 2.9830517599713926,
            'p2p1-3-to-2-lm_coarse_primary': 2.289722443118018,
            'p2p1-3-to-2-u_coarse_secondary': 2.9748053887963235,
            'p2p1-3-to-2-lm_coarse_secondary': 2.039540390360873,
            'p2p1-4-to-2-u_coarse_primary': 2.982541009917219,
            'p2p1-4-to-2-lm_coarse_primary': 2.4516029901427503,
            'p2p1-4-to-2-u_coarse_secondary': 2.9666727450503494,
            'p2p1-4-to-2-lm_coarse_secondary': 2.043610660107857,
            'p2p1-5-to-2-u_coarse_primary': 2.982377963288517,
            'p2p1-5-to-2-lm_coarse_primary': 2.75101171627186,
            'p2p1-5-to-2-u_coarse_secondary': 2.9643261771297698,
            'p2p1-5-to-2-lm_coarse_secondary': 2.0449872997477305,
            'p2p0-2-to-2-u_same': 2.865934548905254,
            'p2p0-2-to-2-lm_same': 0.9544384151198305,
            'p2p0-3-to-2-u_coarse_primary': 2.9513681749051264,
            'p2p0-3-to-2-lm_coarse_primary': 0.9871747739768003,
            'p2p0-3-to-2-u_coarse_secondary': 2.62873082898225,
            'p2p0-3-to-2-lm_coarse_secondary': 0.9551048423731033,
            'p2p0-4-to-2-u_coarse_primary': 2.9719537374138345,
            'p2p0-4-to-2-lm_coarse_primary': 1.0154487382629993,
            'p2p0-4-to-2-u_coarse_secondary': 2.5504738003975547,
            'p2p0-4-to-2-lm_coarse_secondary': 0.9542477401583049,
            'p2p0-5-to-2-u_coarse_primary': 2.9778820927330556,
            'p2p0-5-to-2-lm_coarse_primary': 1.0198046269451437,
            'p2p0-5-to-2-u_coarse_secondary': 2.5332102827019036,
            'p2p0-5-to-2-lm_coarse_secondary': 0.9543603794667151,
            'p1p1-2-to-2-u_same': 1.9859815251171462,
            'p1p1-2-to-2-lm_same': 2.011595941881354,
            'p1p1-3-to-2-u_coarse_primary': 1.9885251789927607,
            'p1p1-3-to-2-lm_coarse_primary': 2.0158955961283245,
            'p1p1-3-to-2-u_coarse_secondary': 1.9792698106931648,
            'p1p1-3-to-2-lm_coarse_secondary': 1.9981271512915104,
            'p1p1-4-to-2-u_coarse_primary': 1.9885475293380597,
            'p1p1-4-to-2-lm_coarse_primary': 1.9977186875839374,
            'p1p1-4-to-2-u_coarse_secondary': 1.9580169542840375,
            'p1p1-4-to-2-lm_coarse_secondary': 1.9403777939060056,
            'p1p1-5-to-2-u_coarse_primary': 1.988512993102887,
            'p1p1-5-to-2-lm_coarse_primary': 2.0006441170884512,
            'p1p1-5-to-2-u_coarse_secondary': 1.9388833409209203,
            'p1p1-5-to-2-lm_coarse_secondary': 1.8767785071182106,
            'p1p0-2-to-2-u_same': 1.9860344770137297,
            'p1p0-2-to-2-lm_same': 1.516294286226134,
            'p1p0-3-to-2-u_coarse_primary': 1.9883909312827506,
            'p1p0-3-to-2-lm_coarse_primary': 1.7057016469391288,
            'p1p0-3-to-2-u_coarse_secondary': 1.979352405490139,
            'p1p0-3-to-2-lm_coarse_secondary': 1.1510942533114046,
            'p1p0-4-to-2-u_coarse_primary': 1.9884810274602154,
            'p1p0-4-to-2-lm_coarse_primary': 1.8106476095984056,
            'p1p0-4-to-2-u_coarse_secondary': 1.95784294017922,
            'p1p0-4-to-2-lm_coarse_secondary': 1.0201644481503622,
            'p1p0-5-to-2-u_coarse_primary': 1.9884579467005514,
            'p1p0-5-to-2-lm_coarse_primary': 1.8694171519114244,
            'p1p0-5-to-2-u_coarse_secondary': 1.937763546002798,
            'p1p0-5-to-2-lm_coarse_secondary': 0.9892939793245561
        }

        self.tolerance = 1e-3
Exemplo n.º 12
0
    def __init__(self, methodName='runTest'):
        super(TestContinuity, self).__init__(methodName)

        exact_soln = 'sin(pi*x/2) + cos(pi*y/2) + cos(pi*x/2)*sin(pi*y/2)'
        f, exact = mms.evaluate('-div(grad(T)) + T', exact_soln, variable='T')

        x,y = sympy.symbols('x y')

        u = eval(str(exact).replace('R.x','x').replace('R.y','y'))

        du_dx = sympy.diff(u, x)

        # lambda = normals_secondary * diff_secondary * grad_u_secondary
        lm = 1 * 1 * du_dx

        self.function_args = [
            'Functions/forcing_function/value="' + mms.fparser(f) + '"',
            'Functions/exact_soln_primal/value="' + mms.fparser(exact) + '"',
            'Functions/exact_soln_lambda/value="' + mms.fparser(lm) + '"']

        # self.gold_values = {}
        self.gold_values = {
            'p2p2-2-to-2-u_same_0' : 2.998634817909304,
            'p2p2-2-to-2-lm_same_0' : 3.1044084969914914,
            'p2p2-2-to-2-u_same_0.1' : 2.9921663752381713,
            'p2p2-2-to-2-lm_same_0.1' : 3.0013385403667137,
            'p2p2-5-to-2-u_coarse_primary_0' : 2.9997890026770926,
            'p2p2-5-to-2-lm_coarse_primary_0' : 2.0108573719845966,
            'p2p2-5-to-2-u_coarse_secondary_0' : 2.9950460951663347,
            'p2p2-5-to-2-lm_coarse_secondary_0' : 2.5166142835950485,
            'p2p2-5-to-2-u_coarse_primary_0.1' : 2.9939611035980707,
            'p2p2-5-to-2-lm_coarse_primary_0.1' : 1.9917147987299368,
            'p2p2-5-to-2-u_coarse_secondary_0.1' : 2.984744760123336,
            'p2p2-5-to-2-lm_coarse_secondary_0.1' : 2.5199014186060733,
            'p2p1-2-to-2-u_same_0' : 2.999509642372042,
            'p2p1-2-to-2-lm_same_0' : 2.0029054061613767,
            'p2p1-2-to-2-u_same_0.1' : 2.9927517172776374,
            'p2p1-2-to-2-lm_same_0.1' : 2.0028862537146783,
            'p2p1-5-to-2-u_coarse_primary_0' : 2.999609849486302,
            'p2p1-5-to-2-lm_coarse_primary_0' : 1.9829370834328883,
            'p2p1-5-to-2-u_coarse_secondary_0' : 2.999287138706176,
            'p2p1-5-to-2-lm_coarse_secondary_0' : 2.0033149322329113,
            'p2p1-5-to-2-u_coarse_primary_0.1' : 2.993889703627252,
            'p2p1-5-to-2-lm_coarse_primary_0.1' : 1.9883973118675258,
            'p2p1-5-to-2-u_coarse_secondary_0.1' : 2.9883615175154254,
            'p2p1-5-to-2-lm_coarse_secondary_0.1' : 2.003296665788549,
            'p2p0-2-to-2-u_same_0' : 3.0040747968605213,
            'p2p0-2-to-2-lm_same_0' : 1.0084238164344301,
            'p2p0-2-to-2-u_same_0.1' : 2.9738396134277854,
            'p2p0-2-to-2-lm_same_0.1' : 1.006655545137675,
            'p2p0-5-to-2-u_coarse_primary_0' : 2.999005720972765,
            'p2p0-5-to-2-lm_coarse_primary_0' : 1.006063662172058,
            'p2p0-5-to-2-u_coarse_secondary_0' : 2.725783281979175,
            'p2p0-5-to-2-lm_coarse_secondary_0' : 1.00795578413039,
            'p2p0-5-to-2-u_coarse_primary_0.1' : 2.990919278609015,
            'p2p0-5-to-2-lm_coarse_primary_0.1' : 1.0027757510416793,
            'p2p0-5-to-2-u_coarse_secondary_0.1' : 2.7410956848417696,
            'p2p0-5-to-2-lm_coarse_secondary_0.1' : 1.0068819161885127,
            'p1p1-2-to-2-u_same_0' : 1.9976222558440346,
            'p1p1-2-to-2-lm_same_0' : 2.011332498808176,
            'p1p1-2-to-2-u_same_0.4' : 2.192010143004469,
            'p1p1-2-to-2-lm_same_0.4' : 1.9847827143779497,
            'p1p1-5-to-2-u_coarse_primary_0' : 1.9992491291760002,
            'p1p1-5-to-2-lm_coarse_primary_0' : 0.9986030842919351,
            'p1p1-5-to-2-u_coarse_secondary_0' : 1.999544699253089,
            'p1p1-5-to-2-lm_coarse_secondary_0' : 1.971155450737158,
            'p1p1-5-to-2-u_coarse_primary_0.4' : 2.1095731087882266,
            'p1p1-5-to-2-lm_coarse_primary_0.4' : 0.9807155521591079,
            'p1p1-5-to-2-u_coarse_secondary_0.4' : 2.188809611484894,
            'p1p1-5-to-2-lm_coarse_secondary_0.4' : 1.8873233690453122,
            'p1p0-2-to-2-u_same_0' : 1.997711692307121,
            'p1p0-2-to-2-lm_same_0' : 1.001565938454369,
            'p1p0-2-to-2-u_same_0.4' : 2.1916263122904245,
            'p1p0-2-to-2-lm_same_0.4' : 1.0033834748271102,
            'p1p0-5-to-2-u_coarse_primary_0' : 2.0034278183745324,
            'p1p0-5-to-2-lm_coarse_primary_0' : 1.0440256530245198,
            'p1p0-5-to-2-u_coarse_secondary_0' : 2.001068175514392,
            'p1p0-5-to-2-lm_coarse_secondary_0' : 1.0116336217198654,
            'p1p0-5-to-2-u_coarse_primary_0.4' : 2.109020679157957,
            'p1p0-5-to-2-lm_coarse_primary_0.4' : 0.9979231357062565,
            'p1p0-5-to-2-u_coarse_secondary_0.4' : 2.1903147362107327,
            'p1p0-5-to-2-lm_coarse_secondary_0.4' : 1.0053519515138674
        }

        self.tolerance = 1e-3