@@ -66,32 +66,54 @@ export class meshGeneration {
66
66
JSON . stringify ( this . parsedMesh . nodalNumbering )
67
67
) ;
68
68
69
+ console . log ( this . parsedMesh . elementTypes [ 3 ] ) ;
70
+
69
71
// 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 ] ) {
71
73
// Map nodal numbering from GMSH format to FEAScript format for quad elements
72
74
const mappedNodalNumbering = [ ] ;
73
75
74
76
for ( let elemIdx = 0 ; elemIdx < quadElements . length ; elemIdx ++ ) {
75
77
const gmshNodes = quadElements [ elemIdx ] ;
76
78
const feaScriptNodes = new Array ( gmshNodes . length ) ;
77
79
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
+ }
88
111
89
112
mappedNodalNumbering . push ( feaScriptNodes ) ;
90
113
}
91
114
92
115
this . parsedMesh . nodalNumbering = mappedNodalNumbering ;
93
- } else if ( triangleElements && triangleElements . length > 0 ) {
94
- this . parsedMesh . nodalNumbering = triangleElements ;
116
+ } else if ( this . parsedMesh . elementTypes [ 2 ] ) {
95
117
}
96
118
97
119
debugLog (
@@ -480,7 +502,7 @@ export class meshGeneration {
480
502
/**
481
503
* Quadratic 1D elements with the following nodes representation:
482
504
*
483
- * 1 --- 2 --- 3
505
+ * 1--2-- 3
484
506
*
485
507
*/
486
508
let columnCounter = 0 ;
@@ -520,11 +542,11 @@ export class meshGeneration {
520
542
/**
521
543
* Quadratic rectangular elements with the following nodes representation:
522
544
*
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
528
550
*
529
551
*/
530
552
for ( let elementIndexX = 1 ; elementIndexX <= numElementsX ; elementIndexX ++ ) {
0 commit comments