Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

MeshFile.Write writes a 3 21 header for meshes with 6- or 8-node elements

Ouverte
#68 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
58/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
python
Domaine
backend

Piste de recherche

Start with mikecore/MeshFile.py:345-348 and the element-writing loop to see how the header is chosen; compare that with element creation in mikecore/MeshBuilder.py:150-153 and mikecore/MeshFile.py:390-393. Reproduce with a 6-node mesh and MeshFile.ReadMesh(path). Done means unsupported element widths are rejected rather than written with a mismatched header; the suggested read-side exception is also worth checking at mikecore/MeshFile.py:305-313.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Summary

MeshFile.Write() picks the element header line from _hasQuads alone (mikecore/MeshFile.py:345-348):

if not self._hasQuads:
    maxNodesPerElmt, elmtType = 3, 21
else:
    maxNodesPerElmt, elmtType = 4, 25

Elements with 6 or 8 nodes (types 32/33) are never considered. MeshBuilder.CreateMesh() accepts them (mikecore/MeshBuilder.py:150-153), and MeshFile.Create() only sets _hasQuads for 4-node elements (mikecore/MeshFile.py:390-393). So a mesh of quadratic elements is written with the header <n> 3 21, while the row loop still writes every node, which makes the rows 6 or 8 values wide.

Reproduce

Build a mesh with 6-node triangles via MeshBuilder, call CreateMesh().Write(path), then MeshFile.ReadMesh(path).

  • The written header claims max 3 nodes per element, code 21, and doesn't match the rows.
  • On read, Read() only recognises 3 and 4 nodes per element (mikecore/MeshFile.py:305-313), so those elements get ElementType = 0.

mikeio can reach this too: it writes .mesh through MeshBuilder().CreateMesh().Write(), e.g. to_mesh on a quadratic mesh.

Background

The .mesh format documents only codes 21 (all triangles) and 25 (quads present) for the element header. There's no documented quadratic form (32/33 are dfsu element types).

Suggested fix

  • In Write(), derive maxNodesPerElmt from the widest element instead of _hasQuads, and raise on any element with other than 3 or 4 nodes, since .mesh can't represent it.
  • Probably make Read() raise on such elements too, instead of the silent ElementType = 0 (there's a # TODO: Throw an exception? there).

Found while reviewing #53.

🤖 Generated with Claude Code

Langage dominant
Python
Étoiles
5
Forks
1
Merge moyen
1 h 19 min
PR mergées (30 j)
6

Préparer son environnement

  • Fournit un Dockerfile ou un fichier Docker Compose
  • Aucun modèle de pull request
  • Aucun guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de DHI/mikecore-python

Toutes les issues de DHI/mikecore-python

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.