コード例 #1
0
ファイル: compute-functions.py プロジェクト: cticenhour/moose
                        vel=vel,
                        scalars=['rho'],
                        transformation='cylindrical',
                        coordinate_names=('x', 'phi', 'y'))
f_t, e_t = mms.evaluate('div(vel*rho*cp*temp) - div(k * grad(temp))',
                        temp,
                        variable='temp',
                        vel=vel,
                        scalars=['rho', 'cp', 'k'],
                        transformation='cylindrical',
                        coordinate_names=('x', 'phi', 'y'))

rho = sympy.Symbol('rho')

e_rhou = e_u * rho
e_rhov = e_v * rho

mms.print_hit(e_u, 'exact_u')
mms.print_hit(e_rhou, 'exact_rhou', rho='${rho}')
mms.print_hit(f_u, 'forcing_u', mu='${mu}', rho='${rho}')

mms.print_hit(e_v, 'exact_v')
mms.print_hit(e_rhov, 'exact_rhov', rho='${rho}')
mms.print_hit(f_v, 'forcing_v', mu='${mu}', rho='${rho}')

mms.print_hit(e_p, 'exact_p')
mms.print_hit(f_p, 'forcing_p', rho='${rho}')

mms.print_hit(e_t, 'exact_t')
mms.print_hit(f_t, 'forcing_t', k='${k}', rho='${rho}', cp='${cp}')
コード例 #2
0
#!/usr/bin/env python3

import mms

f, e = mms.evaluate('div(vel*u) - div(diff*grad(u)) + u', 'sin(x)*cos(y)', variable='u',
                    vel='a*(e_i + 2*e_j)', scalars=['a', 'diff'])

mms.print_hit(e, 'exact')
mms.print_hit(f, 'forcing', a='${a}', diff='${diff}')
コード例 #3
0
    v,
    variable='v',
    vel=vel,
    p=p,
    scalars=['mu', 'rho'],
    transformation='cylindrical',
    coordinate_names=('x', 'phi', 'y'))
f_p, e_p = mms.evaluate('div(vel*rho)',
                        p,
                        variable='p',
                        vel=vel,
                        scalars=['rho'],
                        transformation='cylindrical',
                        coordinate_names=('x', 'phi', 'y'))

rho = sympy.Symbol('rho')

e_rhou = e_u * rho
e_rhov = e_v * rho

mms.print_hit(e_u, 'exact_u')
mms.print_hit(e_rhou, 'exact_rhou', rho='${rho}')
mms.print_hit(f_u, 'forcing_u', mu='${mu}', rho='${rho}')

mms.print_hit(e_v, 'exact_v')
mms.print_hit(e_rhov, 'exact_rhov', rho='${rho}')
mms.print_hit(f_v, 'forcing_v', mu='${mu}', rho='${rho}')

mms.print_hit(e_p, 'exact_p')
mms.print_hit(f_p, 'forcing_p', rho='${rho}')
コード例 #4
0
u = 'cos(pi/2 * x)'
vel = u + '* e_i'
p = 'sin(x)'

# Select porosity model
porosity = '0.8'
porosity = '1 - 0.5 * 1 / (1 + exp(-30*(x-1)))'

# Requires smooth_porosity = true in FVKernels
f_u, e_u = mms.evaluate(
    'div(vel*rho*u/porosity) - div(mu*porosity*grad(u/porosity)) + porosity*grad(p).dot(e_i)',
    u,
    variable='u',
    vel=vel,
    p=p,
    porosity=porosity,
    scalars=['mu', 'rho'])
f_p, e_p = mms.evaluate('div(vel*rho)',
                        p,
                        variable='p',
                        vel=vel,
                        scalars=['rho'])

rho = sympy.Symbol('rho')

mms.print_hit(e_u, 'exact_u')
mms.print_hit(f_u, 'forcing_u', mu='${mu}', rho='${rho}')

mms.print_hit(e_p, 'exact_p')
mms.print_hit(f_p, 'forcing_p', rho='${rho}')
コード例 #5
0
                                         u,
                                         variable='u',
                                         vel=vel,
                                         scalars=['mu', 'rho'])
flux_p_left, _ = mms.evaluate('(vel*rho).dot(-e_i)',
                              p,
                              variable='p',
                              vel=vel,
                              scalars=['rho'])
flux_p_right, _ = mms.evaluate('(vel*rho).dot(e_i)',
                               p,
                               variable='p',
                               vel=vel,
                               scalars=['rho'])

mms.print_hit(e_u, 'exact_u')
mms.print_hit(f_u, 'forcing_u', mu='${mu}', rho='${rho}')
mms.print_hit(flux_u_left, 'flux_u_left', mu='${mu}', rho='${rho}')
mms.print_hit(flux_u_right, 'flux_u_right', mu='${mu}', rho='${rho}')
mms.print_hit(flux_u_diffusion_left,
              'flux_u_diffusion_left',
              mu='${mu}',
              rho='${rho}')
mms.print_hit(flux_u_diffusion_right,
              'flux_u_diffusion_right',
              mu='${mu}',
              rho='${rho}')

mms.print_hit(e_p, 'exact_p')
mms.print_hit(f_p, 'forcing_p', rho='${rho}')
mms.print_hit(flux_p_left, 'flux_p_left', rho='${rho}')
コード例 #6
0
    'div(vel*rho*v/porosity) - div(mu*porosity*grad(v/porosity)) + porosity*grad(p).dot(e_j) + (darcy + forch)*rho*v/porosity',
    v,
    variable='v',
    vel=vel,
    p=p,
    porosity=porosity,
    scalars=['mu', 'rho', 'darcy', 'forch'])
f_p, e_p = mms.evaluate('div(vel*rho)',
                        p,
                        variable='p',
                        vel=vel,
                        scalars=['rho'])

rho = sympy.Symbol('rho')

mms.print_hit(e_u, 'exact_u')
mms.print_hit(f_u,
              'forcing_u',
              mu='${mu}',
              rho='${rho}',
              darcy='${darcy}',
              forch='${forch}')

mms.print_hit(e_v, 'exact_v')
mms.print_hit(f_v,
              'forcing_v',
              mu='${mu}',
              rho='${rho}',
              darcy='${darcy}',
              forch='${forch}')
コード例 #7
0
ファイル: mms_exact.py プロジェクト: LiuPengPeter/moose-1
#!/usr/bin/env python
#* This file is part of the MOOSE framework
#* https://www.mooseframework.org
#*
#* All rights reserved, see COPYRIGHT for full restrictions
#* https://github.com/idaholab/moose/blob/master/COPYRIGHT
#*
#* Licensed under LGPL 2.1, please see LICENSE for details
#* https://www.gnu.org/licenses/lgpl-2.1.html

import mms
fs, ss = mms.evaluate('-div(grad(u))', 'sin(2*pi*x)*sin(2*pi*y)')
mms.print_fparser(fs)

mms.print_hit(fs, 'force')
mms.print_hit(ss, 'exact')

ft, st = mms.evaluate('diff(u,t) - div(grad(u))', 't**3*x*y')
mms.print_fparser(ft)

mms.print_hit(ft, 'force')
mms.print_hit(st, 'exact')
コード例 #8
0
                          u=u,
                          vel=vel,
                          e=e,
                          p=p,
                          scalars=['eps'])
_, e_p = mms.evaluate('p',
                      p,
                      variable='p',
                      rho=rho,
                      rho_et=rho_et,
                      rho_ud=rho_ud,
                      ud=ud,
                      u=u,
                      vel=vel,
                      e=e,
                      p=p,
                      scalars=['eps'])

mms.print_hit(e_rho, 'exact_rho')
mms.print_hit(f_rho, 'forcing_rho', eps='${eps}')

mms.print_hit(e_rho_ud, 'exact_rho_ud', eps='${eps}')
mms.print_hit(f_rho_ud, 'forcing_rho_ud', eps='${eps}')

mms.print_hit(e_rho_et, 'exact_rho_et')
mms.print_hit(f_rho_et, 'forcing_rho_et', eps='${eps}')

mms.print_hit(e_T, 'exact_T', eps='${eps}')
mms.print_hit(e_eps_p, 'exact_eps_p', eps='${eps}')
mms.print_hit(e_p, 'exact_p', eps='${eps}')
コード例 #9
0
ファイル: compute-functions.py プロジェクト: yfzhang910/moose
#!/usr/bin/env python3

import mms
f_rho, e_rho = mms.evaluate('div(u*rho) - div(grad(rho))',
                            '1.1*sin(1.1*x)',
                            variable='rho',
                            u='1.1*cos(1.1*x) * e_i')
f_vel, e_vel = mms.evaluate('div(u*vel*rho) - div(grad(vel))',
                            '1.1*cos(1.1*x)',
                            variable='vel',
                            u='1.1*cos(1.1*x) * e_i',
                            rho='1.1*sin(1.1*x)')

mms.print_hit(f_rho, 'forcing_rho')
mms.print_hit(e_rho, 'exact_rho')
mms.print_hit(f_vel, 'forcing_vel')
mms.print_hit(e_vel, 'exact_vel')
コード例 #10
0
#!/usr/bin/env python3

import mms

f, e = mms.evaluate('-div(grad(u))',
                    '1.1*sin(0.9*x)*cos(1.2*y)',
                    variable='u',
                    transformation='cylindrical',
                    coordinate_names=('x', 'phi', 'y'))

mms.print_hit(e, 'exact')
mms.print_hit(f, 'forcing')
コード例 #11
0
e = 'rho_et / rho - 0.5 * vel.dot(vel)'
# 0.4 = gamma - 1
p = '0.4 * e * rho'
rho_ht = 'rho_et + p'
ht = 'rho_ht / rho'
gamma = 1.4
R = 8.3145
molar_mass = 29.0e-3
R_specific = R / molar_mass
cp = gamma * R_specific / (gamma - 1.)
cv = cp / gamma
T = 'e / ' + str(cv)

f_rho, e_rho = mms.evaluate('div(mass_flux)', rho, variable='rho', rho_u=rho_u, mass_flux=mass_flux)
f_rho_u, e_rho_u = mms.evaluate('div(mass_flux * u) + grad(p).dot(e_i)', rho_u, variable='rho_u', rho=rho, rho_u=rho_u, mass_flux=mass_flux, u=u, rho_et=rho_et, vel=vel, e=e, p=p)
f_rho_et, e_rho_et = mms.evaluate('div(mass_flux * ht)', rho_et, variable='rho_et', rho_et=rho_et, rho=rho, rho_u=rho_u, mass_flux=mass_flux, u=u, vel=vel, e=e, p=p, rho_ht=rho_ht, ht=ht)
_, e_T = mms.evaluate('T', T, variable='T', rho=rho, rho_et=rho_et, rho_u=rho_u, u=u, vel=vel, e=e, T=T)
_, e_p = mms.evaluate('p', p, variable='p', rho=rho, rho_et=rho_et, rho_u=rho_u, u=u, vel=vel, e=e, p=p)

mms.print_hit(e_rho, 'exact_rho')
mms.print_hit(f_rho, 'forcing_rho')

mms.print_hit(e_rho_u, 'exact_rho_u')
mms.print_hit(f_rho_u, 'forcing_rho_u')

mms.print_hit(e_rho_et, 'exact_rho_et')
mms.print_hit(f_rho_et, 'forcing_rho_et')

mms.print_hit(e_T, 'exact_T')
mms.print_hit(e_p, 'exact_p')
コード例 #12
0
gamma = 1.4
R = 8.3145
molar_mass = 29.0e-3
R_specific = R / molar_mass
cp = gamma * R_specific / (gamma - 1.)
cv = cp / gamma
T = 'e / ' + str(cv)
eps_p = 'eps * p'

f_rho, e_rho = mms.evaluate('div(mass_flux)', rho, variable='rho', eps=eps, rho_ud=rho_ud, mass_flux=mass_flux)
f_rho_ud, e_rho_ud = mms.evaluate('div(mass_flux * u) + eps*grad(p).dot(e_i)', rho_ud, variable='rho_ud', eps=eps, rho=rho, rho_ud=rho_ud, mass_flux=mass_flux, ud=ud, u=u, rho_et=rho_et, vel=vel, e=e, p=p)
f_rho_et, e_rho_et = mms.evaluate('div(mass_flux * ht)', rho_et, variable='rho_et', eps=eps, rho_et=rho_et, rho=rho, rho_ud=rho_ud, mass_flux=mass_flux, ud=ud, u=u, vel=vel, e=e, p=p, rho_ht=rho_ht, ht=ht)
_, e_T = mms.evaluate('T', T, variable='T', eps=eps, rho=rho, rho_et=rho_et, rho_ud=rho_ud, ud=ud, u=u, vel=vel, e=e, T=T)
_, e_eps_p = mms.evaluate('eps_p', eps_p, variable='eps_p', eps=eps, rho=rho, rho_et=rho_et, rho_ud=rho_ud, ud=ud, u=u, vel=vel, e=e, p=p)
_, e_p = mms.evaluate('p', p, variable='p', eps=eps, rho=rho, rho_et=rho_et, rho_ud=rho_ud, ud=ud, u=u, vel=vel, e=e, p=p)
_, e_ud = mms.evaluate('ud', ud, variable='ud', eps=eps, rho_ud=rho_ud, rho=rho)

mms.print_hit(e_rho, 'exact_rho')
mms.print_hit(f_rho, 'forcing_rho')

mms.print_hit(e_rho_ud, 'exact_rho_ud')
mms.print_hit(f_rho_ud, 'forcing_rho_ud')

mms.print_hit(e_rho_et, 'exact_rho_et')
mms.print_hit(f_rho_et, 'forcing_rho_et')

mms.print_hit(e_T, 'exact_T')
mms.print_hit(e_eps_p, 'exact_eps_p')
mms.print_hit(e_p, 'exact_p')
mms.print_hit(e_ud, 'exact_sup_vel_x')
コード例 #13
0
ファイル: mms_exact.py プロジェクト: jwpeterson/moose
#!/usr/bin/env python
import mms
fs,ss = mms.evaluate('-div(grad(u))', 'sin(2*pi*x)*sin(2*pi*y)')
mms.print_fparser(fs)

mms.print_hit(fs, 'force')
mms.print_hit(ss, 'exact')

ft,st = mms.evaluate('diff(u,t) - div(grad(u))', 't**3*x*y')
mms.print_fparser(ft)

mms.print_hit(ft, 'force')
mms.print_hit(st, 'exact')
コード例 #14
0
#!/usr/bin/env python3

# MooseDocs:start:spatial
import mms
fs, ss = mms.evaluate(('rho * cp * diff(u,t) - div(k*grad(u)) - '
                      'shortwave*sin(0.5*x*pi)*exp(kappa*y)*sin(1/(hours*3600)*pi*t)'),
                      't*sin(pi*x)*sin(5*pi*y)',
                      scalars=['rho', 'cp', 'k', 'kappa', 'shortwave', 'hours'])
mms.print_hit(fs, 'mms_force')
mms.print_hit(ss, 'mms_exact')
# MooseDocs:end:spatial

# MooseDocs:start:temporal
import mms
fs, ss = mms.evaluate(('rho * cp * diff(u,t) - div(k*grad(u)) - '
                      'shortwave*sin(0.5*x*pi)*exp(kappa*y)*sin(1/(hours*3600)*pi*t)'),
                      'x*y*exp(-1/32400*t)',
                      scalars=['rho', 'cp', 'k', 'kappa', 'shortwave', 'hours'])
mms.print_hit(fs, 'mms_force')
mms.print_hit(ss, 'mms_exact')
# MooseDocs:end:temporal