@@ -66,32 +66,54 @@ export class meshGeneration {
6666 JSON . stringify ( this . parsedMesh . nodalNumbering )
6767 ) ;
6868
69+ console . log ( this . parsedMesh . elementTypes [ 3 ] ) ;
70+
6971 // Check if it has quadElements or triangleElements structure from gmshReader
70- if ( quadElements && quadElements . length > 0 ) {
72+ if ( this . parsedMesh . elementTypes [ 3 ] || this . parsedMesh . elementTypes [ 10 ] ) {
7173 // Map nodal numbering from GMSH format to FEAScript format for quad elements
7274 const mappedNodalNumbering = [ ] ;
7375
7476 for ( let elemIdx = 0 ; elemIdx < quadElements . length ; elemIdx ++ ) {
7577 const gmshNodes = quadElements [ elemIdx ] ;
7678 const feaScriptNodes = new Array ( gmshNodes . length ) ;
7779
78- // Simple mapping for linear quad elements (4 nodes)
79- // GMSH: FEAScript:
80- // 3 --- 2 1 --- 3
81- // | | | |
82- // 0 --- 1 0 --- 2
83-
84- feaScriptNodes [ 0 ] = gmshNodes [ 0 ] ; // 0 -> 0
85- feaScriptNodes [ 1 ] = gmshNodes [ 3 ] ; // 3 -> 1
86- feaScriptNodes [ 2 ] = gmshNodes [ 1 ] ; // 1 -> 2
87- feaScriptNodes [ 3 ] = gmshNodes [ 2 ] ; // 2 -> 3
80+ // Check for element type based on number of nodes
81+ if ( gmshNodes . length === 4 ) {
82+ // Simple mapping for linear quad elements (4 nodes)
83+ // GMSH: FEAScript:
84+ // 3 --- 2 1 --- 3
85+ // | | --> | |
86+ // 0 --- 1 0 --- 2
87+
88+ feaScriptNodes [ 0 ] = gmshNodes [ 0 ] ; // 0 -> 0
89+ feaScriptNodes [ 1 ] = gmshNodes [ 3 ] ; // 3 -> 1
90+ feaScriptNodes [ 2 ] = gmshNodes [ 1 ] ; // 1 -> 2
91+ feaScriptNodes [ 3 ] = gmshNodes [ 2 ] ; // 2 -> 3
92+ } else if ( gmshNodes . length === 9 ) {
93+ // Mapping for quadratic quad elements (9 nodes)
94+ // GMSH: FEAScript:
95+ // 3--6--2 2--5--8
96+ // | | | |
97+ // 7 8 5 --> 1 4 7
98+ // | | | |
99+ // 0--4--1 0--3--6
100+
101+ feaScriptNodes [ 0 ] = gmshNodes [ 0 ] ; // 0 -> 0
102+ feaScriptNodes [ 1 ] = gmshNodes [ 7 ] ; // 7 -> 1
103+ feaScriptNodes [ 2 ] = gmshNodes [ 3 ] ; // 3 -> 2
104+ feaScriptNodes [ 3 ] = gmshNodes [ 4 ] ; // 4 -> 3
105+ feaScriptNodes [ 4 ] = gmshNodes [ 8 ] ; // 8 -> 4
106+ feaScriptNodes [ 5 ] = gmshNodes [ 6 ] ; // 6 -> 5
107+ feaScriptNodes [ 6 ] = gmshNodes [ 1 ] ; // 1 -> 6
108+ feaScriptNodes [ 7 ] = gmshNodes [ 5 ] ; // 5 -> 7
109+ feaScriptNodes [ 8 ] = gmshNodes [ 2 ] ; // 2 -> 8
110+ }
88111
89112 mappedNodalNumbering . push ( feaScriptNodes ) ;
90113 }
91114
92115 this . parsedMesh . nodalNumbering = mappedNodalNumbering ;
93- } else if ( triangleElements && triangleElements . length > 0 ) {
94- this . parsedMesh . nodalNumbering = triangleElements ;
116+ } else if ( this . parsedMesh . elementTypes [ 2 ] ) {
95117 }
96118
97119 debugLog (
@@ -480,7 +502,7 @@ export class meshGeneration {
480502 /**
481503 * Quadratic 1D elements with the following nodes representation:
482504 *
483- * 1 --- 2 --- 3
505+ * 1--2-- 3
484506 *
485507 */
486508 let columnCounter = 0 ;
@@ -520,11 +542,11 @@ export class meshGeneration {
520542 /**
521543 * Quadratic rectangular elements with the following nodes representation:
522544 *
523- * 2 --- 5 --- 8
524- * | | |
525- * 1 --- 4 --- 7
526- * | | |
527- * 0 --- 3 --- 6
545+ * 2--5-- 8
546+ * | |
547+ * 1 4 7
548+ * | |
549+ * 0--3-- 6
528550 *
529551 */
530552 for ( let elementIndexX = 1 ; elementIndexX <= numElementsX ; elementIndexX ++ ) {
0 commit comments