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}')
#!/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}')
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}')
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}')
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}')
'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}')
#!/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')
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}')
#!/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')
#!/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')
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')
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')
#!/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')
#!/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