{"id":1679,"date":"2026-10-20T10:51:29","date_gmt":"2026-10-20T02:51:29","guid":{"rendered":"https:\/\/people.utm.my\/arazin\/?page_id=1679"},"modified":"2026-11-07T20:57:53","modified_gmt":"2026-11-07T12:57:53","slug":"2d-ndm-explorer","status":"publish","type":"page","link":"https:\/\/people.utm.my\/arazin\/2d-ndm-explorer\/","title":{"rendered":"2D NDM Explorer"},"content":{"rendered":"<div class=\"rz-page\">\n<p><!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 ENGLISH \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 --><\/p>\n<div lang=\"en\">\n<p class=\"rz-eyebrow\">Interactive tool &middot; Meshfree methods &middot; NURBS<\/p>\n<h1>2D NDM Explorer<\/h1>\n<details class=\"rz-lead-fold\">\n<summary>About this tool<\/summary>\n<p class=\"rz-lead\">The NURBS-Divergence-Meshless method: the divergence theorem turns the heat equation over each cell into four line integrals, and NURBS make every cell a rectangle in the parameter space, so each normal is simply (0, &plusmn;1) or (&plusmn;1, 0). Inspect the equation of any cell, switch between MLS and RBF, let the cells overlap, and compare the accuracy with finite elements.<\/p>\n<\/details>\n<\/div>\n<p><!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 BAHASA MELAYU \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 --><\/p>\n<div lang=\"ms\">\n<p class=\"rz-eyebrow\">Alatan interaktif &middot; Meshfree methods &middot; NURBS<\/p>\n<h1>2D NDM Explorer<\/h1>\n<details class=\"rz-lead-fold\">\n<summary>Tentang alatan ini<\/summary>\n<p class=\"rz-lead\">Kaedah NURBS-Divergence-Meshless: teorem divergence menukar persamaan haba bagi setiap cell kepada empat line integral, dan NURBS menjadikan setiap cell segi empat tepat dalam ruang parameter, jadi setiap normal hanyalah (0, &plusmn;1) atau (&plusmn;1, 0). Teliti persamaan mana-mana cell, tukar antara MLS dan RBF, biarkan cell bertindih, dan bandingkan ketepatannya dengan finite element.<\/p>\n<\/details>\n<\/div>\n<p><!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 THE TOOL \u2014 shared by both languages, loaded by the site bundle. Keep this line as it is. \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 --><\/p>\n<div data-rz-tool=\"ndm2d\">\n<p><span lang=\"en\">Loading the interactive tool&hellip;<\/span><span lang=\"ms\">Memuatkan alatan interaktif&hellip;<\/span><\/p>\n<\/div>\n<div class=\"rzt-doc\">\n<div lang=\"en\">\n<details class=\"rz-acc\" open>\n<summary>How the NDM method works<\/summary>\n<div>\n<p>The NURBS-Divergence-Meshless method (Rasin et al., 2025) starts from steady heat conduction, k&nabla;&sup2;T + Q = 0, and does not use a weak form. Each node gets a cell, the equation is integrated over the cell, and the divergence theorem turns the area integral into the flux through the cell boundary:<\/p>\n<div class=\"rzt-eq\">&#8750;<sub>&Gamma;<sub>c<\/sub><\/sub> &nabla;T &middot; n ds = &minus;&int;<sub>&Omega;<sub>c<\/sub><\/sub> Q \/ k d&Omega; = F&#770;<\/div>\n<p>The cells are drawn in the NURBS parameter space, where they are rectangles. On each side one component of the outward normal is &plusmn;1 and the other is 0, so the boundary integral splits into four line integrals along the sides (the paper&rsquo;s Eq. 8):<\/p>\n<div class=\"rzt-eq\">&minus;&int;<sub>b<\/sub> (T,<sub>&xi;<\/sub> G<sub>12<\/sub> + T,<sub>&eta;<\/sub> G<sub>22<\/sub>) d&xi; + &int;<sub>r<\/sub> (T,<sub>&xi;<\/sub> G<sub>11<\/sub> + T,<sub>&eta;<\/sub> G<sub>12<\/sub>) d&eta; + &int;<sub>t<\/sub> (T,<sub>&xi;<\/sub> G<sub>12<\/sub> + T,<sub>&eta;<\/sub> G<sub>22<\/sub>) d&xi; &minus; &int;<sub>l<\/sub> (T,<sub>&xi;<\/sub> G<sub>11<\/sub> + T,<sub>&eta;<\/sub> G<sub>12<\/sub>) d&eta; = F&#770;<br \/>G<sub>11<\/sub> = (x<sub>&eta;<\/sub>&sup2; + y<sub>&eta;<\/sub>&sup2;) \/ |J| &nbsp;&nbsp; G<sub>12<\/sub> = &minus;(x<sub>&xi;<\/sub>x<sub>&eta;<\/sub> + y<sub>&xi;<\/sub>y<sub>&eta;<\/sub>) \/ |J| &nbsp;&nbsp; G<sub>22<\/sub> = (x<sub>&xi;<\/sub>&sup2; + y<sub>&xi;<\/sub>&sup2;) \/ |J|<\/div>\n<p>The G terms carry the whole geometry, taken from the derivatives of the NURBS map. Each side integral is one-dimensional and uses 1, 3 or 5 Gauss&ndash;Legendre points. The cell inspector beside the parameter space shows the four integrals for the selected node, evaluated with the solution, and their sum.<\/p>\n<ul>\n<li><b>Approximation.<\/b> T(&xi;, &eta;) = &Sigma;<sub>j<\/sub> N<sub>j<\/sub>(&xi;, &eta;) T<sub>j<\/sub>, built in the parameter space either by Moving Least Squares (quadratic basis, exponential weight e<sup>&minus;(r\/c)&sup2;<\/sup>) or by Gaussian radial basis functions, R = e<sup>&minus;&alpha;<sub>c<\/sub>(r\/d<sub>c<\/sub>)&sup2;<\/sup> with &alpha;<sub>c<\/sub> = 0.8, without polynomial terms, as in the paper.<\/li>\n<li><b>One row per node.<\/b> n nodes give n cell equations, each assembled as one row of the matrix. The system is banded but not symmetric, so it is solved by LU factorisation with partial pivoting.<\/li>\n<li><b>Boundary conditions.<\/b> On a prescribed-temperature edge the cell equation of a node is replaced by the condition itself, &Sigma;<sub>j<\/sub> N<sub>j<\/sub>(x<sub>I<\/sub>) T<sub>j<\/sub> = T&#770;. This direct imposition works even for MLS, whose shape functions do not interpolate, because nothing has to be integrated by parts (Li and Zhang, 2020). On a flux edge the prescribed flux replaces &nabla;T&middot;n on the boundary side and moves to the right-hand side.<\/li>\n<li><b>Cells.<\/b> Cells may overlap, or hold no node at all, and each still gives a valid balance equation. The paper finds that overlapping cells converge at a slightly lower rate.<\/li>\n<\/ul>\n<p>Choices in this tool: the support is a circle of radius d = &alpha;h in the parameter space (the paper uses the knot span); the MLS weight uses c = 0.3 d; the RBF uses d<sub>c<\/sub> = 2d; side integrals are split at the knot lines, and supports stop at C&#8304; knot lines; k = 1 W\/(m&middot;K), which reproduces the paper&rsquo;s fan-blade temperatures.<\/p>\n<\/div>\n<\/details>\n<details class=\"rz-acc\">\n<summary>Things to try<\/summary>\n<div>\n<ol>\n<li>Tap a node in the radial-flow problem and read its cell equation: the heat crosses the two radial sides (about &plusmn;2.5) and almost none crosses the two angular sides. The sum of the four is zero to round-off.<\/li>\n<li>Tap a node on the outer arc. Its row is the boundary condition, and with MLS its own shape function is only about 0.7 there (about 0.58 for an interior node), yet T at that node is exactly 30 &deg;C.<\/li>\n<li>Open the patch test: NDM-MLS recovers the quadratic temperature to about 10<sup>&minus;14<\/sup>, even with one Gauss point per side, overlapping cells or irregular nodes. Switch to RBF and it no longer does.<\/li>\n<li>Run the comparison. NDM-MLS converges at a rate of about 2.5, overlapping cells at about 2, bilinear Q4 at about 1, while the Gaussian RBF stalls once the nodes become dense.<\/li>\n<li>Open the fan blade. At refinement 6 (91 nodes) NDM-MLS is within about 0.02% of the paper&rsquo;s converged hub temperature, and Q4 on the same nodes within about 0.12%. Let the cells overlap and the error grows to about 0.2%.<\/li>\n<li>Change the Gauss points per side from 5 to 1. The fluxes along these short sides are nearly linear, so the answer hardly changes, as the paper also found.<\/li>\n<li>Show the knot lines on the fan blade and inspect a cell that straddles the bold line &xi; = 0.5: its side integrals are split at the knot, and the supports on either side stop there.<\/li>\n<\/ol>\n<\/div>\n<\/details>\n<\/div>\n<div lang=\"ms\">\n<details class=\"rz-acc\" open>\n<summary>Bagaimana kaedah NDM berfungsi<\/summary>\n<div>\n<p>Kaedah NURBS-Divergence-Meshless (Rasin et al., 2025) bermula daripada konduksi haba mantap, k&nabla;&sup2;T + Q = 0, dan tidak menggunakan weak form. Setiap nod diberi satu cell, persamaan dikamir ke atas cell itu, dan teorem divergence menukar kamiran luas kepada fluks merentasi sempadan cell:<\/p>\n<div class=\"rzt-eq\">&#8750;<sub>&Gamma;<sub>c<\/sub><\/sub> &nabla;T &middot; n ds = &minus;&int;<sub>&Omega;<sub>c<\/sub><\/sub> Q \/ k d&Omega; = F&#770;<\/div>\n<p>Cell dilukis dalam ruang parameter NURBS, di mana ia berbentuk segi empat tepat. Pada setiap sisi, satu komponen normal luar ialah &plusmn;1 dan satu lagi 0, jadi kamiran sempadan terpecah kepada empat line integral sepanjang sisi (Pers. 8 dalam paper):<\/p>\n<div class=\"rzt-eq\">&minus;&int;<sub>b<\/sub> (T,<sub>&xi;<\/sub> G<sub>12<\/sub> + T,<sub>&eta;<\/sub> G<sub>22<\/sub>) d&xi; + &int;<sub>r<\/sub> (T,<sub>&xi;<\/sub> G<sub>11<\/sub> + T,<sub>&eta;<\/sub> G<sub>12<\/sub>) d&eta; + &int;<sub>t<\/sub> (T,<sub>&xi;<\/sub> G<sub>12<\/sub> + T,<sub>&eta;<\/sub> G<sub>22<\/sub>) d&xi; &minus; &int;<sub>l<\/sub> (T,<sub>&xi;<\/sub> G<sub>11<\/sub> + T,<sub>&eta;<\/sub> G<sub>12<\/sub>) d&eta; = F&#770;<br \/>G<sub>11<\/sub> = (x<sub>&eta;<\/sub>&sup2; + y<sub>&eta;<\/sub>&sup2;) \/ |J| &nbsp;&nbsp; G<sub>12<\/sub> = &minus;(x<sub>&xi;<\/sub>x<sub>&eta;<\/sub> + y<sub>&xi;<\/sub>y<sub>&eta;<\/sub>) \/ |J| &nbsp;&nbsp; G<sub>22<\/sub> = (x<sub>&xi;<\/sub>&sup2; + y<sub>&xi;<\/sub>&sup2;) \/ |J|<\/div>\n<p>Sebutan G membawa seluruh maklumat geometri, diambil daripada terbitan pemetaan NURBS. Setiap kamiran sisi adalah satu dimensi dan menggunakan 1, 3 atau 5 titik Gauss&ndash;Legendre. Pemeriksa cell di sebelah ruang parameter menunjukkan empat kamiran bagi nod terpilih, dinilai dengan penyelesaian, serta jumlahnya.<\/p>\n<ul>\n<li><b>Approximation.<\/b> T(&xi;, &eta;) = &Sigma;<sub>j<\/sub> N<sub>j<\/sub>(&xi;, &eta;) T<sub>j<\/sub>, dibina dalam ruang parameter sama ada dengan Moving Least Squares (basis kuadratik, weight eksponen e<sup>&minus;(r\/c)&sup2;<\/sup>) atau dengan radial basis functions Gaussian, R = e<sup>&minus;&alpha;<sub>c<\/sub>(r\/d<sub>c<\/sub>)&sup2;<\/sup> dengan &alpha;<sub>c<\/sub> = 0.8, tanpa sebutan polinomial, seperti dalam paper.<\/li>\n<li><b>Satu baris setiap nod.<\/b> n nod memberi n persamaan cell, setiap satu dipasang sebagai satu baris matriks. Sistemnya berjalur tetapi tidak simetri, jadi ia diselesaikan dengan pemfaktoran LU dengan partial pivoting.<\/li>\n<li><b>Syarat sempadan.<\/b> Pada sisi bersuhu tetap, persamaan cell bagi nod digantikan dengan syarat itu sendiri, &Sigma;<sub>j<\/sub> N<sub>j<\/sub>(x<sub>I<\/sub>) T<sub>j<\/sub> = T&#770;. Pengenaan terus ini berfungsi walaupun untuk MLS, yang shape functions-nya tidak menginterpolasi, kerana tiada apa yang perlu dikamir secara bahagian (Li dan Zhang, 2020). Pada sisi fluks, fluks yang ditetapkan menggantikan &nabla;T&middot;n pada sisi sempadan dan berpindah ke sebelah kanan persamaan.<\/li>\n<li><b>Cell.<\/b> Cell boleh bertindih, atau tidak mengandungi sebarang nod, dan setiap satu tetap memberi persamaan keseimbangan yang sah. Paper mendapati cell bertindih converge pada kadar yang sedikit lebih rendah.<\/li>\n<\/ul>\n<p>Pilihan dalam tool ini: support ialah bulatan berjejari d = &alpha;h dalam ruang parameter (paper menggunakan knot span); weight MLS menggunakan c = 0.3 d; RBF menggunakan d<sub>c<\/sub> = 2d; kamiran sisi dipecahkan pada knot lines, dan support berhenti pada knot lines C&#8304;; k = 1 W\/(m&middot;K), yang menghasilkan semula suhu bilah kipas dalam paper.<\/p>\n<\/div>\n<\/details>\n<details class=\"rz-acc\">\n<summary>Cubaan untuk anda<\/summary>\n<div>\n<ol>\n<li>Ketik satu nod dalam masalah aliran jejarian dan baca persamaan cell-nya: haba merentasi dua sisi jejarian (kira-kira &plusmn;2.5) dan hampir tiada yang merentasi dua sisi sudut. Jumlah keempat-empatnya sifar hingga ralat pembundaran.<\/li>\n<li>Ketik satu nod pada lengkok luar. Barisnya ialah syarat sempadan, dan dengan MLS shape function-nya sendiri hanya kira-kira 0.7 di situ (kira-kira 0.58 bagi nod dalaman), namun T pada nod itu tepat 30 &deg;C.<\/li>\n<li>Buka patch test: NDM-MLS memperoleh semula suhu kuadratik hingga kira-kira 10<sup>&minus;14<\/sup>, walaupun dengan satu Gauss point setiap sisi, cell bertindih atau nod tidak sekata. Tukar kepada RBF dan ia tidak lagi berbuat demikian.<\/li>\n<li>Jalankan perbandingan. NDM-MLS converge pada kadar kira-kira 2.5, cell bertindih kira-kira 2, bilinear Q4 kira-kira 1, manakala RBF Gaussian terhenti apabila nod menjadi padat.<\/li>\n<li>Buka bilah kipas. Pada refinement 6 (91 nod), NDM-MLS berada dalam lingkungan kira-kira 0.02% daripada suhu hab converged dalam paper, dan Q4 pada nod yang sama dalam lingkungan kira-kira 0.12%. Biarkan cell bertindih dan ralat meningkat kepada kira-kira 0.2%.<\/li>\n<li>Ubah Gauss points setiap sisi dari 5 ke 1. Fluks sepanjang sisi pendek ini hampir linear, jadi jawapan hampir tidak berubah, seperti yang turut didapati dalam paper.<\/li>\n<li>Paparkan knot lines pada bilah kipas dan periksa cell yang merentasi garis tebal &xi; = 0.5: kamiran sisinya dipecahkan pada knot itu, dan support di kedua-dua belah berhenti di situ.<\/li>\n<\/ol>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<div lang=\"en\">\n<h3>Related reading<\/h3>\n<div class=\"rz-links\">\n  <a href=\"https:\/\/doi.org\/10.1016\/j.camwa.2025.07.011\"><span class=\"k\">Paper<\/span><\/p>\n<div><b>NURBS-Divergence-Meshless (NDM) method<\/b><span>Rasin, Hirol, Zainal Abidin, Mokhtaram, Mohd Noor and Mohd Yassin, Comput. Math. Appl. 196 (2025) 151&ndash;171.<\/span><\/div>\n<p><\/a><br \/>\n  <a href=\"https:\/\/doi.org\/10.24433\/CO.4214149.v1\"><span class=\"k\">Code<\/span><\/p>\n<div><b>NDM code on Code Ocean<\/b><span>The code behind the paper&rsquo;s results.<\/span><\/div>\n<p><\/a><br \/>\n  <a href=\"https:\/\/people.utm.my\/arazin\/2d-nrpim-explorer\/\"><span class=\"k\">Tool<\/span><\/p>\n<div><b>2D N-RPIM Explorer<\/b><span>NURBS geometry with radial point interpolation, in a Galerkin weak form.<\/span><\/div>\n<p><\/a><br \/>\n  <a href=\"https:\/\/people.utm.my\/arazin\/mls-approximation-explorer\/\"><span class=\"k\">Tool<\/span><\/p>\n<div><b>MLS Approximation Explorer<\/b><span>The MLS approximation used here, explored in 1D.<\/span><\/div>\n<p><\/a>\n<\/div>\n<p class=\"rz-note\">Runs entirely in your browser; nothing is sent anywhere. Source code: <a href=\"https:\/\/github.com\/RazinUTM\/rz-tools\" target=\"_blank\" rel=\"noopener\">github.com\/RazinUTM\/rz-tools<\/a>. Spotted a bug or have an idea for a tool? Email <a href=\"mailto:arazin@utm.my\">arazin@utm.my<\/a>.<\/p>\n<\/div>\n<div lang=\"ms\">\n<h3>Bacaan berkaitan<\/h3>\n<div class=\"rz-links\">\n  <a href=\"https:\/\/doi.org\/10.1016\/j.camwa.2025.07.011\"><span class=\"k\">Paper<\/span><\/p>\n<div><b>NURBS-Divergence-Meshless (NDM) method<\/b><span>Rasin, Hirol, Zainal Abidin, Mokhtaram, Mohd Noor dan Mohd Yassin, Comput. Math. Appl. 196 (2025) 151&ndash;171.<\/span><\/div>\n<p><\/a><br \/>\n  <a href=\"https:\/\/doi.org\/10.24433\/CO.4214149.v1\"><span class=\"k\">Kod<\/span><\/p>\n<div><b>Kod NDM di Code Ocean<\/b><span>Kod di sebalik keputusan dalam paper.<\/span><\/div>\n<p><\/a><br \/>\n  <a href=\"https:\/\/people.utm.my\/arazin\/2d-nrpim-explorer\/\"><span class=\"k\">Alatan<\/span><\/p>\n<div><b>2D N-RPIM Explorer<\/b><span>Geometri NURBS dengan radial point interpolation, dalam weak form Galerkin.<\/span><\/div>\n<p><\/a><br \/>\n  <a href=\"https:\/\/people.utm.my\/arazin\/mls-approximation-explorer\/\"><span class=\"k\">Alatan<\/span><\/p>\n<div><b>MLS Approximation Explorer<\/b><span>MLS approximation yang digunakan di sini, diterokai dalam 1D.<\/span><\/div>\n<p><\/a>\n<\/div>\n<p class=\"rz-note\">Berjalan sepenuhnya dalam pelayar anda; tiada data dihantar ke mana-mana. Kod sumber: <a href=\"https:\/\/github.com\/RazinUTM\/rz-tools\" target=\"_blank\" rel=\"noopener\">github.com\/RazinUTM\/rz-tools<\/a>. Jumpa pepijat atau ada idea untuk alatan baharu? E-mel <a href=\"mailto:arazin@utm.my\">arazin@utm.my<\/a>.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Interactive tool &middot; Meshfree methods &middot; NURBS 2D NDM Explorer About this tool The NURBS-Divergence-Meshless method: the divergence theorem turns the heat equation over each cell into four line integrals, and NURBS make every cell a rectangle in the parameter space, so each normal is simply (0, &plusmn;1) or (&plusmn;1, 0). Inspect the equation of [&hellip;]<\/p>\n","protected":false},"author":6455,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-1679","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/people.utm.my\/arazin\/wp-json\/wp\/v2\/pages\/1679","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/people.utm.my\/arazin\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/people.utm.my\/arazin\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/people.utm.my\/arazin\/wp-json\/wp\/v2\/users\/6455"}],"replies":[{"embeddable":true,"href":"https:\/\/people.utm.my\/arazin\/wp-json\/wp\/v2\/comments?post=1679"}],"version-history":[{"count":2,"href":"https:\/\/people.utm.my\/arazin\/wp-json\/wp\/v2\/pages\/1679\/revisions"}],"predecessor-version":[{"id":1729,"href":"https:\/\/people.utm.my\/arazin\/wp-json\/wp\/v2\/pages\/1679\/revisions\/1729"}],"wp:attachment":[{"href":"https:\/\/people.utm.my\/arazin\/wp-json\/wp\/v2\/media?parent=1679"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}