From 1cd708ff68470c2ed1d98c64f6f79c48e38f200a Mon Sep 17 00:00:00 2001 From: Daniel Schwen Date: Fri, 16 Sep 2022 17:57:31 -0600 Subject: [PATCH] Add tests (#3385) --- tests/Makefile.am | 7 ++++ tests/mesh/mesh_smoother.C | 70 +++++++++++++++++++++++++++++++++ tests/meshes/smooth2d_in.e | Bin 0 -> 7556 bytes tests/meshes/smooth2d_move.e | Bin 0 -> 7556 bytes tests/meshes/smooth2d_nomove.e | Bin 0 -> 7556 bytes tests/meshes/smooth3d_in.e | Bin 0 -> 23512 bytes tests/meshes/smooth3d_move.e | Bin 0 -> 23512 bytes tests/meshes/smooth3d_nomove.e | Bin 0 -> 23512 bytes 8 files changed, 77 insertions(+) create mode 100644 tests/mesh/mesh_smoother.C create mode 100644 tests/meshes/smooth2d_in.e create mode 100644 tests/meshes/smooth2d_move.e create mode 100644 tests/meshes/smooth2d_nomove.e create mode 100644 tests/meshes/smooth3d_in.e create mode 100644 tests/meshes/smooth3d_move.e create mode 100644 tests/meshes/smooth3d_nomove.e diff --git a/tests/Makefile.am b/tests/Makefile.am index 976ce2f24b4..1920b9c1b7a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -68,6 +68,7 @@ unit_tests_sources = \ mesh/mesh_function_dfem.C \ mesh/mesh_generation_test.C \ mesh/mesh_input.C \ + mesh/mesh_smoother.C \ mesh/mesh_stitch.C \ mesh/mesh_triangulation.C \ mesh/mixed_dim_mesh_test.C \ @@ -144,6 +145,12 @@ data = meshes/1_quad.bxt.gz \ meshes/good_32bit_elem_integers.e \ meshes/mesh_assign_test_mesh.xda \ meshes/shark_tooth_tri6.xda.gz \ + meshes/smooth2d_in.e \ + meshes/smooth2d_move.e \ + meshes/smooth2d_nomove.e \ + meshes/smooth3d_in.e \ + meshes/smooth3d_move.e \ + meshes/smooth3d_nomove.e \ meshes/tetgen_one_tet10.ele \ meshes/tetgen_one_tet10.node diff --git a/tests/mesh/mesh_smoother.C b/tests/mesh/mesh_smoother.C new file mode 100644 index 00000000000..987dce2b2af --- /dev/null +++ b/tests/mesh/mesh_smoother.C @@ -0,0 +1,70 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "test_comm.h" +#include "libmesh_cppunit.h" + +using namespace libMesh; + +class SmoothMeshTest : public CppUnit::TestCase +{ +public: + LIBMESH_CPPUNIT_TEST_SUITE(SmoothMeshTest); + + CPPUNIT_TEST(laplace_smooth_2d_fixed_boundary_nodes); + CPPUNIT_TEST(laplace_smooth_2d_movable_boundary_nodes); + CPPUNIT_TEST(laplace_smooth_3d_fixed_boundary_nodes); + CPPUNIT_TEST(laplace_smooth_3d_movable_boundary_nodes); + + CPPUNIT_TEST_SUITE_END(); + +private: + void test(const std::string in_file, const std::string gold_file, bool move_nodes) + { + // load input mesh + ReplicatedMesh in_mesh(*TestCommWorld); + ExodusII_IO exii(in_mesh); + if (in_mesh.processor_id() == 0) + exii.read(in_file); + MeshCommunication().broadcast(in_mesh); + in_mesh.prepare_for_use(); + + // load gold file + ReplicatedMesh gold_mesh(*TestCommWorld); + ExodusII_IO exii(gold_mesh); + if (gold_mesh.processor_id() == 0) + exii.read(gold_file); + MeshCommunication().broadcast(gold_mesh); + gold_mesh.prepare_for_use(); + + // run mesh smoother for 100 iterations + LaplaceMeshSmoother lms(static_cast(in_mesh), move_nodes); + lms.smooth(100); + + // compare node positions + for (const auto & node : in_mesh.node_ref_range()) + { + Point a = node; + Point b = gold_mesh.node_ref(node->id()); + CPPUNIT_ASSERT((a-b).norm() < 1e-6); + } + } + +public: + void setUp() {} + + void tearDown() {} + + void laplace_smooth_2d_fixed_boundary_nodes() { LOG_UNIT_TEST; test("meshes/smooth2d_in.e", "smooth2d_nomove.e", false); } + void laplace_smooth_2d_movable_boundary_nodes() { LOG_UNIT_TEST; test("meshes/smooth2d_in.e", "smooth2d_move.e", true); } + void laplace_smooth_3d_fixed_boundary_nodes() { LOG_UNIT_TEST; test("meshes/smooth3d_in.e", "smooth3d_nomove.e", false); } + void laplace_smooth_3d_movable_boundary_nodes() { LOG_UNIT_TEST; test("meshes/smooth3d_in.e", "smooth3d_move.e", true); } +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(CopyNodesAndElementsTest); diff --git a/tests/meshes/smooth2d_in.e b/tests/meshes/smooth2d_in.e new file mode 100644 index 0000000000000000000000000000000000000000..34bc1c855f8e8fe63e1312de2d9ebf5d735f39c8 GIT binary patch literal 7556 zcmeI0U2GiH8HU$!Z0~NI#K!p}ae|#ck`O|G5C|lUlbAq&KmrK~`CG5OV|&T&>}Gcy zJ8e~QkqgwTRB*vXDwRrzsgM~BNi_e>H=VhvX=*}fW(Q~^yZ1kM+nhJgas|dl5W4Op` zSKEfpmh+i&ex;f(1srP;O?_{qcd2cg!e2IAC}l%cL8e^F2VrKsRLSXHzr>ny?@b~p zQp5Rz<~=@8bByEdI&u3p6-PE4W4Y`+$wW(-4+{*YjhaXo{px5YA8c`6S1~)0FH$F} zql^l0Bpju$jnN~`T&xu7s0PPJOKw1}-7IWtl_0COl^67p@(2GNO8a&%bYSBeu78rU zPO5*oQYy2?)|a_O&vkXqJv8s{*XQK(C$ygmsyAIP74?iixL!vrlP{`Gs(WoYuNT#<{ORt`uJ?WQYaJ@7I=IvL9Om0L>E@rtJIQy| z#(jC>r|sMRl8!U)OfR*={IVuww+%0z@kGZ#Y38lAKl4`K|3Z9n$1C*Leb@HqzNhHl zxlG5>+~(OLZ_bPA zuWjiCeY8i{pL{=j$JoaGT#R>?OKT0uTaCWZxc7zDQ7y+e#QQ7a^@zU1XYBj7&arX1 zFUIYN$B8~`$Gt2k>As_9=-bVl*tmSLGH$1^t!CVArrXAysqabpx_RI{#=S+@Ry*zm znKtfBeZNcJxV~=8S(go}mT@=7``y1(Ykh4V7RAS+&zin`rQYak_qKS7zKn0*DXf;#vEz=iLI{cHaU4Qw^v-Zy){NPvr z_}Nv@+H0xT_x^Kyk!S6vE}yk7=S}(Q^VDCz{(AM}e=+W)I{0FKzvF*J{3g0pEEg+8 zx8UV*mAFmxh+eT;tPyL)I=gV@<6+^6KCxTu5qm|yctq?IkBY~{e(|_?LOdxBh^NHU;-EMro)OQA z!{Uf|P8=1y&pt1XixYzP{8Qqz$cO=v6@y|(aGD&00uN2L zA%S;Xkj?5FO}1g@p~*JlJT%!xorfk{-g#(pyx=_afH))Y(BvoxJTy6q0uN2LK;Zd; zZ1zl{$#&LxXtGtDhbCLqd1$hQ&O?)9%z0>XoO2$U9OKSIlViepXtJGmUX$86qFKy! zx zlWnW>&}6&Yd1$iT<2*Fk?sXoTY}=fNCdYlwLz82>^U!3w-+9*Ge9K8bGLeI8b3LxX zxQxa54~QM&LGh5-DRzm6g(v#NZm~z~75(B7u}?fI9uxb;JbR;*fYo zJSz^1BjP!6R2&n}i{s*iI4Mqv(;_1VL{TCZQX(zp32K$+ zhZ^O%p*DG5s7am^YSEq*YLHsAdb7H+`ms8pHdc!@!q(o_n6;ek{Ba+%f$^AY=8-w# z9PW+WWMchUTjpXmuy(8qbDk5-74yJzL4In5I$(}x!))t{^_mUbAJ=7FSyR@N`(+(j zL)MSAhJ5a&fnl*L(55mgb2F>y|eiwQwrGBB6a1MAFlzeDs3 K>YBOpMfqO@EId{K literal 0 HcmV?d00001 diff --git a/tests/meshes/smooth2d_move.e b/tests/meshes/smooth2d_move.e new file mode 100644 index 0000000000000000000000000000000000000000..02fc648508fdd2cbaf792f6d5b0651cc0a588cfa GIT binary patch literal 7556 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 literal 0 HcmV?d00001 diff --git a/tests/meshes/smooth3d_in.e b/tests/meshes/smooth3d_in.e new file mode 100644 index 0000000000000000000000000000000000000000..cbce34ecd2be9d1b72becabbd41311c7f8cb98c9 GIT binary patch literal 23512 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 j2Qx4n{QMnZB;bdHHytf`>nL)GtBr>*~XLu3y@B zs*m${FCPw<0EWEp>o?vbkV|xQ9r4G2%RIb2SR?~RMf=Wf-jlJXqr-U`Yw9@%dIS~K z)hVSZ5A+(3JpQA+ocb7EzI>S0d>9>XP+ol;XMc|XoKpxGp!`4eRxJM`y%1o1Sw2qD zc?0<%4JBnPl$KflL0OwWC~Nx%W$n~uWi7SHW_w@F24T7tj{r$XrgPf=P1&l}E z&0>$Rk8}a|siCKrH^#9jpcUhISyXJ-24-^&n##kksfV{Z`axbn-h42;*egap9)S~` zy?k4!%PRS}&hYYK-@%v8F!Y3=iLBKe!wm1s03I(R!PCU{yat+E%zRd*R%2^`KGxQAA4~PoYJC#x(MQ^P?xUaRn{7kPi2FpWQIr#3chWlJQHED@ z7yK#9bF4E@7Cx>#Jxlusb@j)f9Ixh4_+#Mi=j-d?9>l)n_VM+=cW5LEHOKu6?J#@Rs*l?S@A0nJP6xDH&VIqqL+*RxiAT>jwU<5mWmm)3Ddn4wT}+`rPEVr|j&Ao`(- z=AhW}aifa%9c{4HXf@+jwJ0Y1)zXgS_ZqEcEUNuP%h$g~tLfkBf2>5fP zQ(~ZQVHTzR)+V&ei{_Mi%FglF`?4h8{HxM%O&^l)SrTSmb}MCdnRj}Nj}ytGqA&J# zK1#|?hVBz$`jOJ3SqCl>gfLZDz06ntl?GAMa(la8$r&asOGz8x&bKhSKzQ z{AxG0J-ul9z2E$y;gnVJYEa+FL@z@#OSS%>OUh?2rfoi)PI*nn>qS1RO}SOZXIme? zEVfJ2-uU-n!Rs6Gbs)SbZsa+&{d#r;(I1?ANV36y5`(%^E3CX{8|`29ZDUX<19+#Sz>rAT@9 zhEG&X0Q$Ao2wy!zQn{~taqi$~%GF&JT>88@<)!&fJ$urd@}G=a_VVjdimy~Kw&_bZ z@%RaPiC;EWE)@6El2_ke7n4kye$85!(cZ&*lGv}=b+^pZ!ohOZ;`xQ?$YTLqv65@wf{ur{EX1XYkhP+D>&y(g@vw8ERH=ZCB&yHdx+w>qwhSwJbDg4Xx- znMv|_IW@=XEhOdmid&i`z9UuQgPZ65hKcoKcdY2;*kYmB4=IP|P92xKh2$=V;U8)^ zl5((~)r7liNOk+|mDrw6#q~zdTzqcXgW`G{4N`BP%p|#Eyqix&_}tFKrs}#RQeE92 z@#^J@;(B*dzh5+cBGyYaoj)$Z6W2-DkxH(Ovq(8#`DO0h{iI6&-08PQkHmU$HWi

rk-t&AfYM2}`;`v7%N=eAP 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 TWb!(Xaxe^m^I<5&oQMAcjN5`l literal 0 HcmV?d00001