From 0dbcca5093eb0102ea5365af247e2585561de924 Mon Sep 17 00:00:00 2001 From: Christophe Bourcier Date: Tue, 8 Aug 2023 12:42:44 +0200 Subject: [PATCH] Some improvements on Scaled Jacobian: - add math to sphinx to generate the formulas - change the icon to deformed hexahedrons - add a test on deformed hexahedrons - update the example use case on the doc to deformed hexahedrons --- doc/gui/conf.py.in | 1 + doc/gui/images/scaled_jacobian.png | Bin 2931 -> 2113 bytes doc/gui/images/scaled_jacobian_mesh_hexa.png | Bin 0 -> 11868 bytes doc/gui/images/scaled_jacobian_mesh_tetra.png | Bin 35275 -> 0 bytes doc/gui/input/scaled_jacobian.rst | 19 ++++++--- resources/CMakeLists.txt | 1 + resources/mesh_scaled_jacobian.png | Bin 7383 -> 2113 bytes test/SMESH_controls_scaled_jacobian.py | 40 +++++++++++++++++- 8 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 doc/gui/images/scaled_jacobian_mesh_hexa.png delete mode 100644 doc/gui/images/scaled_jacobian_mesh_tetra.png diff --git a/doc/gui/conf.py.in b/doc/gui/conf.py.in index be0975ff7..854a10d49 100644 --- a/doc/gui/conf.py.in +++ b/doc/gui/conf.py.in @@ -186,6 +186,7 @@ html_use_index = True # Output file base name for HTML help builder. htmlhelp_basename = 'smeshdoc' +extensions += ['sphinx.ext.mathjax'] # Options for LaTeX output # ------------------------ diff --git a/doc/gui/images/scaled_jacobian.png b/doc/gui/images/scaled_jacobian.png index 6739c3121d1ed5a2cda5fe2d910b73a7d26f4fe6..e25a7fa4ee4fcbd2d68f69342215c50c8baeb657 100644 GIT binary patch literal 2113 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 literal 2931 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 up!@v*Pv5{b)=q8k5`Z%>$5!dziT)>P!)(g{ diff --git a/doc/gui/images/scaled_jacobian_mesh_hexa.png b/doc/gui/images/scaled_jacobian_mesh_hexa.png new file mode 100644 index 0000000000000000000000000000000000000000..4c881869d5972c47f5e753ee913aaabfa0356a57 GIT binary patch literal 11868 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 eg=TqeM^oXG>=kjS;C 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 DsElBa diff --git a/doc/gui/input/scaled_jacobian.rst b/doc/gui/input/scaled_jacobian.rst index 4ce8f9ac0..fddfd0977 100644 --- a/doc/gui/input/scaled_jacobian.rst +++ b/doc/gui/input/scaled_jacobian.rst @@ -4,12 +4,19 @@ Scaled Jacobian *************** -The **Scaled Jacobian** mesh quality criteria, is a scalar measure of the deviation from the perfect element in the geometrical sense, this measure normalize the range of reported values -between [0,1] for a normal element, the value of 1 is considered a perfect element and 0 a element with a collapsed side. Negative values are also accepted for invalid elements. +The **Scaled Jacobian** mesh quality criteria is a scalar measure of the deviation from the perfect element in the geometrical sense. This measure normalizes the range of reported values between [0,1] for a normal element, the value of 1 is considered a perfect element and 0 a element with a collapsed side. Negative values are also accepted for invalid elements. -The **Scaled Jacobian** is implemented for volumetric elements returning 0 for polyhedrons. For tetrahedron and hexahedron the close form -is defined in `[1] `_, for pyramids the minimum scaled jacobian of the four tetrahedrons formed -in the four vertices of the pyramid base is reported, for pentahedrons a decomposition into tetrahedron is also done and finally for hexahedron prisms the minimum scaled jacobian between two pentahedrons and one hexahedron is reported. +The **Scaled Jacobian** is implemented for all volumetric elements (except for polyhedrons, returning 0). + +For tetrahedrons and hexahedrons, the formulas are +defined in `The Verdict Library Reference Manual [1] `_. + +For pyramid, the minimum scaled jacobian of the four tetrahedrons formed +in the four vertices of the pyramid base is reported. + +For pentahedron, a decomposition into tetrahedron is also done. + +For hexahedron prisms, the minimum scaled jacobian between two pentahedrons and one hexahedron is reported. * Geometrically the Scaled Jacobian of a **tetrahedron** can be understood by the follow figure: @@ -35,7 +42,7 @@ in the four vertices of the pyramid base is reported, for pentahedrons a decompo Your mesh will be displayed in the viewer with its elements colored according to the applied mesh quality control criterion: - .. image:: ../images/scaled_jacobian_mesh_tetra.png + .. image:: ../images/scaled_jacobian_mesh_hexa.png :align: center diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt index de35d5b95..feda6ed7e 100644 --- a/resources/CMakeLists.txt +++ b/resources/CMakeLists.txt @@ -168,6 +168,7 @@ SET(SMESH_RESOURCES_FILES mesh_renumbering_nodes.png mesh_revolution.png mesh_rotation.png + mesh_scaled_jacobian.png mesh_sew_bordertoside.png mesh_sew_conform_freeborders.png mesh_sew_freeborders.png diff --git a/resources/mesh_scaled_jacobian.png b/resources/mesh_scaled_jacobian.png index 0f01f54a511ac23d231a9513eab0f0cd44e1bc9d..e25a7fa4ee4fcbd2d68f69342215c50c8baeb657 100644 GIT binary patch literal 2113 zcmV-H2)_4;P)EX>4Tx04R}tkv&MmKp2MKriw)>4t5Z62v~KoAS&XhRVYG*P%E_RU~=gnG-*gu zTpR`0f`dPcRR6lU)_NUJ-KV5JqKY8FP}9gzxyeM}Y5lF`ngL_vh$Qa~1;vBJnIUOq+OvczV+| zIPVijSW#Aq&xyxOx*+i**A*r{;+x#A2b1l{RKYQzM=tj;fkY`9j8H zmGc&7tz2czd-4~CbNb3M*J%wRfkiAqf(Qjwlu(9^80|VK7E*K`_wf(7eu-QPxk_N< zSU?3DWY-V=2fur3(v&^matG*tGGtSBr64UKp9kL0=$o=Y-!0I+=Jl<4j?)JqO}$Fq00)P_ zNP)7~ecl~v@7upM&HnuWW@K`ryJng_00006VoOIv0RI600RN!9r;`8x010qNS#tmY z4#WTe4#WYKD-Ig~000McNliru=LiT0BpIo}`f30G02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00tRJL_t(o!@ZbUY*bYkfWLF^Ogmeb=?>kd77EgW$OAQo z09u0)17Qh@jlP%|eR7G3(TF^lnD}5cU`#Oj-~%C1LK8JH`T!Wg0udAo*wRuc(7iKV zr_<8*-s8i)WR~7L(*eq#oa8R&p7WjaulESj5Jgd3TXnsu0BXkIf&;D`g@1t-;0B8z zVxb*XRdwvpv>!@fXW{^1AOpf7_}c|7BXH#xIIk$mWnI^&7acG=J6k+EK7P0e8q*m# z3`C$+RM9##MN9Jlm!~D?ftwEuFh4(EG=xIm7Q(CPu3iJCtHA3uO+-L=2JXypN0XeB zlFN5yY5lo}W{K#KQck1|xCagu!RzV5>A;;TaC;ZfSHheI;aNI-POgL^{L^%ck5d8` z^3-P=8GqNu1>As|2HbQ2Jig@pvYg;{fLjHR12R=`s_;`MG~G1V9LWY4Vsqm$N`V<* zj2cEMVvtJ;?CU9B6MJmA;1Ls!3<1`>#ssWX$TJKKBC`7dAeKNphkh8?N%m4~$ zr;v7*o3CF4!sIhTfKhVkBacqJ6&I)}iNd&4!}b;;6En~`9^XF+;FishLPz)r;Uh%0 zVE`{&hk(MK0mNdVW>r&upA0NgTy$?jHI*#W@O zsYkN1Taurde6)^H!|M~*lLXMaY5udR7^ra6>UOq4ZAY}*oCK%fYQE8U6dHOY^*3|^ zvxfb}N_Yl3C#-kd5>NEJCmat5jt5lS!;+nY zlDb=xrHb+TOuxM;IIQhKK53}14d^#OP=L&MxLwzvuFZPnIcdzAF!5BL;7Fc;8d%#a zsry4m6ZY}WM#bN6hjJijZpGByasik&)VuyB?D!Gd%}sV$3^OYs!)EFc$;DjI9v7@W zC*xkZ)FgmH2)C4#+o2SgH1*|~KS8d91_c^`VF?`)I)GjvC%VaTss@;p#u^KSG5c*f z-})U%0Hxfu8Or?N1eTh%mqPLc)C;ILH~Y4PYbLNmf=9p{Febq-z`yX6X`$jhFBxzE z1!g!ITlk1>phg%?1NtO1OBe>03epv2{-cWR@%LqEWZ}dj5~vWcPJnmeaAOf$z*n|H zMNa%PClI(dKt&jBz_iD?)Spa8Agk9FaBE{!y>WF1X&DZHDx#z7vEj#rwUDU@ID6uu z5+>}M=9i-rZl#cFiaqLNL3oHXH7dmDUu8CdVMN$J(&s0QYip+hhC(gzSw3fF<+Oh9d0Y00u4A zGX>9I)7j#ews3KAu#xw(s?CTO1O|AAK9+Hba*k38o0F}TcYkRXQfPC>Od`-V( z-IPwi ziJ}?+MZhW~o-Sx{#U7zRdHH?i;s+~3LkZ!&44ls7-^|72o<#?|dNq3O@j!8L>Yx50 zcze-Q94ny^WXAj@R6hcWk{qrd_WcfDJ`}*W@ezfn=9weap1RKmG5+2pS{-;)<6c- zeh6!;pvDdBy|6Oh%>CClL)BOIAGfwbTN_kX8u!D)5DIbZ&(j<@ae`A1{1E-_LAs`C zb&XJ8v7VaRH(8hEqb}D^L0(>b2swGuIQk6+8R_ok@WBIo4sn00000NkvXXu0mjf+Sbo_ literal 7383 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 diff --git a/test/SMESH_controls_scaled_jacobian.py b/test/SMESH_controls_scaled_jacobian.py index b7388ec4a..c2a44dc75 100644 --- a/test/SMESH_controls_scaled_jacobian.py +++ b/test/SMESH_controls_scaled_jacobian.py @@ -136,9 +136,47 @@ if not Done: pentahedrons = 0.6 pentasAndPolys = smesh.GetFilter(SMESH.VOLUME, SMESH.FT_ScaledJacobian, SMESH.FT_LessThan, pentahedrons ) -#Distorted hexas polysIds = Mesh_4.GetIdsFromFilter(polysElements) pentasAndPolysIds = Mesh_4.GetIdsFromFilter(pentasAndPolys) assert( len(pentasAndPolysIds) - len(polysIds) == 10 ) + +#Test distorded hexahedrons scaled jacobian values +Mesh_5 = smesh.Mesh(Box_1,'Mesh_5') +Regular_1D = Mesh_5.Segment() +Number_of_Segments_1 = Regular_1D.NumberOfSegments(2) +Quadrangle_2D = Mesh_5.Quadrangle(algo=smeshBuilder.QUADRANGLE) +Hexa_3D = Mesh_5.Hexahedron(algo=smeshBuilder.Hexa) +isDone = Mesh_5.Compute() + +if not Done: + raise Exception("Error when computing hexaedrons Mesh for quality control test") + +#move some nodes to make scaled jacobian lesser than 1 +node_id_1 = Mesh_5.FindNodeClosestTo(0, 0, 10) +node_id_5 = Mesh_5.FindNodeClosestTo(10, 0, 10) +node_id_14 = Mesh_5.FindNodeClosestTo(10, 5, 10) +node_id_13 = Mesh_5.FindNodeClosestTo(10, 0, 5) +node_id_6 = Mesh_5.FindNodeClosestTo(10, 0, 0) +Mesh_5.MoveNode( node_id_1, 1, 1, 9 ) +Mesh_5.MoveNode( node_id_5, 9, 1, 9 ) +Mesh_5.MoveNode( node_id_14, 10, 5, 9 ) +Mesh_5.MoveNode( node_id_13, 9, 0, 5 ) +Mesh_5.MoveNode( node_id_6, 8, 0, 0 ) + +yellow_element = Mesh_5.FindElementsByPoint(7.5, 2.5, 2.5)[0] +green_element = Mesh_5.FindElementsByPoint(7.5, 2.5, 7.5)[0] +blue_element = Mesh_5.FindElementsByPoint(2.5, 2.5, 7.5)[0] + +yellow_SJ = Mesh_5.GetScaledJacobian(yellow_element) +green_SJ = Mesh_5.GetScaledJacobian(green_element) +blue_SJ = Mesh_5.GetScaledJacobian(blue_element) + +yellow_SJ_ref = 0.910446300912 +green_SJ_ref = 0.818025491961 +blue_SJ_ref = 0.654728501099 + +assert assertWithDelta( yellow_SJ_ref, yellow_SJ, 1e-10 ) +assert assertWithDelta( green_SJ_ref, green_SJ, 1e-10 ) +assert assertWithDelta( blue_SJ_ref, blue_SJ, 1e-10 ) -- 2.39.2