From a098ca9c3799c50d639990d2c6e23ae65ac5dd66 Mon Sep 17 00:00:00 2001 From: Thomas Gibson <gibsonthomas1120@hotmail.com> Date: Thu, 13 May 2021 15:14:53 -0500 Subject: [PATCH] Fully convert over test_surface_divergence_theorem --- test/test_grudge.py | 55 ++++++++++----------------------------------- 1 file changed, 12 insertions(+), 43 deletions(-) diff --git a/test/test_grudge.py b/test/test_grudge.py index cde2f9f8..9ab956ee 100644 --- a/test/test_grudge.py +++ b/test/test_grudge.py @@ -547,13 +547,6 @@ def test_surface_divergence_theorem(actx_factory, mesh_name, visualize=False): # {{{ convergene def f(x): - return flat_obj_array( - sym.sin(3*x[1]) + sym.cos(3*x[0]) + 1.0, - sym.sin(2*x[0]) + sym.cos(x[1]), - 3.0 * sym.cos(x[0] / 2) + sym.cos(x[1]), - )[:ambient_dim] - - def fn(x): return flat_obj_array( actx.np.sin(3*x[1]) + actx.np.cos(3*x[0]) + 1.0, actx.np.sin(2*x[0]) + actx.np.cos(x[1]), @@ -609,68 +602,44 @@ def test_surface_divergence_theorem(actx_factory, mesh_name, visualize=False): dim = dcoll.dim # variables - sym_f = f(sym.nodes(ambient_dim, dd=dd)) - sym_f_quad = f(sym.nodes(ambient_dim, dd=dq)) - - f_num = fn(thaw(actx, op.nodes(dcoll, dd=dd))) - f_quad_num = fn(thaw(actx, op.nodes(dcoll, dd=dq))) - - sym_kappa = sym.summed_curvature(ambient_dim, dim=dim, dd=dq) - sym_normal = sym.surface_normal(ambient_dim, dim=dim, dd=dq).as_vector() + f_num = f(thaw(actx, op.nodes(dcoll, dd=dd))) + f_quad_num = f(thaw(actx, op.nodes(dcoll, dd=dq))) from grudge.geometry import surface_normal, summed_curvature kappa = summed_curvature(actx, dcoll, dim=dim, dd=dq) normal = surface_normal(actx, dcoll, dim=dim, dd=dq).as_vector(dtype=object) - - sym_face_normal = sym.normal(df, ambient_dim, dim=dim - 1) - sym_face_f = sym.project(dd, df)(sym_f) - face_normal = thaw(actx, op.normal(dcoll, df)) face_f = op.project(dcoll, dd, df, f_num) # operators - sym_stiff = sum( - sym.StiffnessOperator(d)(f) for d, f in enumerate(sym_f) - ) - stiff = op.mass(dcoll, sum(op.local_d_dx(dcoll, i, f_num_i) for i, f_num_i in enumerate(f_num))) - - sym_stiff_t = sum( - sym.StiffnessTOperator(d)(f) for d, f in enumerate(sym_f) - ) - stiff_t = sum(op.weak_local_d_dx(dcoll, i, f_num_i) for i, f_num_i in enumerate(f_num)) - - sym_k = sym.MassOperator(dq, dd)(sym_kappa * sym_f_quad.dot(sym_normal)) - sym_flux = sym.FaceMassOperator()(sym_face_f.dot(sym_face_normal)) + kterm = op.mass(dcoll, dq, kappa * f_quad_num.dot(normal)) + flux = op.face_mass(dcoll, face_f.dot(face_normal)) # sum everything up - sym_op_global = sym.NodalSum(dd)( - sym_stiff - (sym_stiff_t + sym_k)) - sym_op_local = sym.ElementwiseSumOperator(dd)( - sym_stiff - (sym_stiff_t + sym_k + sym_flux)) - - # evaluate - op_global = bind(discr, sym_op_global)(actx) - op_local = bind(discr, sym_op_local)(actx) + op_global = op.nodal_sum(dcoll, dd, stiff - (stiff_t + kterm)) + op_local = op.elementwise_sum(dcoll, dd, stiff - (stiff_t + kterm + flux)) err_global = abs(op_global) - err_local = bind(discr, sym.norm(np.inf, sym.var("x")))(actx, x=op_local) + err_local = bind(dcoll, sym.norm(np.inf, sym.var("x")))(actx, x=op_local) logger.info("errors: global %.5e local %.5e", err_global, err_local) # compute max element size - h_max = bind(discr, sym.h_max_from_volume( - discr.ambient_dim, dim=discr.dim, dd=dd))(actx) + ones_volm = volume.zeros(actx) + 1 + sum_mass_weights = op.elementwise_sum(dcoll, op.mass(dcoll, dd, ones_volm)) + h_max = op.nodal_max(dcoll, dd, sum_mass_weights) ** (1/dcoll.dim) + eoc_global.add_data_point(h_max, err_global) eoc_local.add_data_point(h_max, err_local) if visualize: from grudge.shortcuts import make_visualizer - vis = make_visualizer(discr, vis_order=builder.order) + vis = make_visualizer(dcoll, vis_order=builder.order) filename = f"surface_divergence_theorem_{mesh_name}_{i:04d}.vtu" vis.write_vtk_file(filename, [ -- GitLab