9
votes

Maille standard pour des hexagones concaves avec deux bouches?

Je prévois une visualisation des flux bien que des hexagones bisymétriques concaves avec deux bouches.

exemple où la longueur du côté D1 est égale à l'autre longueur du côté D2:

Entrez la description de l'image ici

Quelle nommant j'ai discuté initialement ici sur des hexagones irréguliers.

Il y a l'outil de maille standard où vous pouvez dessiner vos propres mailles, mais j'aimerais avoir une bibliothèque standard de telle sorte que je puisse mieux coopérer avec d'autres personnes avec les simulations de flux plus tard. Je n'ai trouvé aucune bibliothèque de maille pour hexagones dans l'échange de fichiers mathentral Ici .

Y a-t-il une bibliothèque de mailles standard pour des formes hexagonales irrégulières? Je suis ouvert à toutes les autres langues aussi parce que je pouvais lire le code et convertir ces normes à la bibliothèque MATLAB.


0 commentaires

5 Réponses :


3
votes

Par exemple, vous pourriez jeter un coup d'œil à l'exemple de Alexandra Baumgart et Hazuki Okuda en utilisant Mathematica. Ceci est mis en œuvre avec manipuler strong> Créer efficacement d'une base Ui.

Entrez la description de l'image ici p>

code: p>

Manipulate[
Grid[{{Show[
ParametricPlot3D[{1.25Cos[t], 1.25 Sin[t],s+2-2w},{s,0,.25},{t,0,2Pi},PlotStyle->Directive[Opacity[1],Gray],Mesh->None, Lighting->"Neutral"], 
ParametricPlot3D[{r Cos[t], r Sin[t],2.25-2w},{r,0,1.25},{t,0,2Pi},PlotStyle->Directive[Opacity[1],Gray],Mesh->None, Lighting->"Neutral"],
ParametricPlot3D[{r Cos[t], r Sin[t],2-2w},{r,0,1.25},{t,0,2Pi},PlotStyle->Directive[Opacity[1],Gray],Mesh->None, Lighting->"Neutral"],
ParametricPlot3D[{1.25Cos[t], 1.25 Sin[t],s-2.25+2w},{s,0,.25},{t,0,2Pi},PlotStyle->Directive[Opacity[1],Gray],Mesh->None, Lighting->"Neutral"],
ParametricPlot3D[{r Cos[t], r Sin[t],-2.25+2w},{r,0,1.25},{t,0,2Pi},PlotStyle->Directive[Opacity[1],Gray],Mesh->None],
ParametricPlot3D[{r Cos[t], r Sin[t],-2+2w},{r,0,1.25},{t,0,2Pi},PlotStyle->Directive[Opacity[1],Gray],Mesh->None, Lighting->"Neutral"],  
ParametricPlot3D[{(1-s/2) Cos[t],(1-s/2) Sin[t],Max[0,-s+2 ]},{s,Min[2-(2^(2/3) (2 \[Pi]-Min[2Pi,3 V((w^2)/(.04))])^(1/3))/\[Pi]^(1/3)-w,1.99],2},{t,0, 2 Pi},PlotStyle->Directive[Opacity[1],Hue[a]],Mesh->None, Lighting->"Neutral"],
ParametricPlot3D[{r Cos[t], r Sin[t],Max[0,(2^(2/3) (2 \[Pi]-Min[2Pi,3 V((w^2)/(.04))])^(1/3))/\[Pi]^(1/3)-w]},{r,0, .000000000001+w+((2^(2/3) (2 \[Pi]-Min[2Pi,3 V((w^2)/(.04))])^(1/3))/\[Pi]^(1/3)-w)/2},{t,0,2Pi},PlotStyle->Directive[Opacity[1], Hue[a]],Mesh->None, Lighting->"Neutral"],
ParametricPlot3D[{r Cos[t], r Sin[t], Min[0,-(2^(2/3) (2 \[Pi]-Min[2Pi,3 V((w^2)/(.04))])^(1/3))/\[Pi]^(1/3)]},{r, 0, .00000000001+w+((2^(2/3) (2 \[Pi]-Min[2Pi,3 V((w^2)/(.04))])^(1/3))/\[Pi]^(1/3)-w)/2},{t,0,2Pi},PlotStyle->Directive[Opacity[1],Hue[a]],Mesh->None, Lighting->"Neutral"],
ParametricPlot3D[{(1-s/2) Cos[t],(1-s/2) Sin[t],Min[0,s -2 ]},{s,w,2},{t,0, 2 Pi},PlotStyle->Directive[Opacity[.2],Gray],Mesh->None, Lighting->"Neutral"],ParametricPlot3D[{(1-s/2) Cos[t],(1-s/2) Sin[t],Max[0,-s + 2 - w]},{s,w,2},{t,0, 2 Pi},PlotStyle->Directive[Opacity[.2],Gray],Mesh->None, Lighting->"Neutral"], 
ParametricPlot3D[{(1-s/2) Cos[t],(1-s/2) Sin[t],Min[0,s-2+ w]},{s,w,Min[2-(2^(2/3) (2 \[Pi]-Min[2Pi,3 V((w^2)/(.04))])^(1/3))/\[Pi]^(1/3)-w,2]},{t,0, 2 Pi},Mesh->None, PlotStyle->Directive[Opacity[1],Hue[a]], Lighting->"Neutral"],  ParametricPlot3D[{(w/2) Cos[t],(w/2) Sin[t], b},{t,0,2Pi}, {b, -2 + w, 0}, PlotStyle->Directive[Opacity[1], Hue[a]],Mesh->None, Lighting->"Neutral"],PlotRange->All,ImageSize->{300,300}, SphericalRegion-> True]},{Row[{Text["time to empty = "], Text[2Pi (.04)/(3w^2)],Text[" seconds"]}]}}],{start,ControlType->None},{end,ControlType->None},
{{V,.01,"time (seconds)"},0.01,34,.01,ControlType->Animator,AnimationRate->1,AnimationRunning->False,ImageSize->Small}, 
{{w,.05,"neck width (millimeters)"}, .05, .3,.01,Appearance->"Labeled"}, 
{{a,0,"color of sand"}, 0, 1,Appearance->"Labeled"}]


3 commentaires

Joli! Même le maillage plus simple serait bien où aucune morphologie de sablier. Un hexagone concave simple avec double bouche est requis. Certains simples afin qu'il puisse être utilisé comme standard ultérieurement. La comparaison doit être faite pour expliquer pourquoi le choisi sera le meilleur que n'importe qui d'autre. Ce serait bien si vous pouviez simplifier la proposition.


"La comparaison doit être faite pour expliquer pourquoi le choisi sera le meilleur que tout autre.", Vous devriez alors avoir une idée de ce qui est préférable (normalement, vous ne le savez pas). Dans la vie réelle, je sais que ce problème est résolu légèrement différemment. Je pense que cela s'appelait "l'apprentissage itératif", essentiellement des paramètres randomisez et testez comment ils fonctionnent bien. Après cela, vous répétez, mais favorisez la collecte de paramètres Qu'est-ce qui s'est bien performé jusqu'à présent. Vous pourriez également être en mesure de former le réseau de neurones avec des commentaires pour le faire pour vous.


Oui bien sûr. C'est la raison pour laquelle ce fil est ici pour obtenir une standard. Obtenir des idées et des raisons pour lesquelles quelque chose est meilleur qu'un autre. Toute méthode à expliquer est la bienvenue!



2
votes

Si tel est de rester en veille comme purement la couche de présentation, il dépend vraiment de la sortie de la simulation et de la représentation que vous sélectionnez pour cela.

Par exemple, si la simulation émet une seule variable (par exemple, la Volume de l'un des compartiments), alors cela pourrait être attribué directement à un attribut de la visualisation telle que l'emplacement du capuchon "haut" d'un cylindre. Un cylindre "complémentaire" pourrait se tenir sur la précédente avec ses coordonnées de capuchon inférieures affectées à (Totalvolume-Buy Complatmentvolume).

Dans ce cas, la visualisation est juste un tableau de bord et ne se répète pas dans La simulation (par exemple, les collisions d'objet ou la proximité en général ne sont pas prises en compte par la simulation).

Pour généraliser cela, nous parlons d'une solution dans laquelle un ensemble de quantités est attribué à un ensemble d'attributs de visualisation .

à partir de ce point de vue, un ensemble d'objets complexes pourrait être créé à l'aide de VRML (ou X3D), leurs attributs peuvent être liés directement aux sorties de simulation et que le rendu soit déclenché chaque N-ème TIMESTE DE SIMULATION.

Pour créer les objets "Scène" ou Visualization, vous pouvez utiliser un logiciel comme Blender qui peut exporter des scènes VRML ou écrire le VRML manuellement (c'est vraiment un droit Tâche TForward).

en termes d'infrastructure, Matlab a un Toolkit VRML et Python a une sélection très large de modules par lesquels VRML peut être manipulé (s'il vous plaît voir Ceci et Ce lien par exemple).

pour un plus béton Exemple:

donné une sortie de simulation y et un fichier vrml de modèle similaire à: xxx

Vous pouvez faire quelque chose comme: < / p> xxx

(Remarque: plus d'informations sur Jinja peut être trouvée ici - Commentaire Inline Link ne rendant pas correctement ci-dessus.)

retour dans le fichier et liant différents éléments à différentes quantités (par exemple, la transformation de la transformation qui peut pivoter, échelle, traduire la boîte ou changer l'apparence de la boîte en attribuant une couleur différente), y ou peut créer une sorte de sortie "tableau de bord" pour votre simulation .... y compris des hexagones irréguliers.

Cette technique est une application directe de documents pilotés par les données mais à un substrat différent (que HTML ou SVG) ici.

espère que cela aide.


2 commentaires

Bonne réponse! Y at-il un lien manquant dans la deuxième dernière phrase du mot ici ?


Merci, non, le "Ici" n'implique pas de lien dans ce cas, il est destiné à dire que c'est essentiellement une technique D3, mais dans ce cas appliqué sur un substrat différent de celui de HTML / SVG habituel.



1
votes

Essayer de définir une bibliothèque de mailles standard, je pense que nous devrions commencer par déterminer les degrés de liberté.

Pour des hexagones bissymetriques concaves avec 2 bouches, il pourrait être:

  1. Largeur de la hache de la bouche (W_M)
  2. Largeur supérieure relative (W_T = W_T / W_M)
  3. Largeur inférieure relative (W_B = W_B / W_M)
  4. Hauteur supérieure relative
  5. Hauteur inférieure relative

    Les réponses de Margus et A_a seront utiles pour la réalisation.


1 commentaires

En fait, je pense que votre réponse répond mieux à la question que Margus et A_a. Le but est de comprendre quoi de normaliser pour un maillage standard. Excellentes idées!



2
votes

Si votre objectif est de visualiser de tels hexagones dans Matlab, alors remplir et Fill3 devrait faire l'affaire. Voici un exemple de code, qui suppose que vos hexagones sont paramétrés par deux largeurs w1 et w2 et le d1 et d2 Paramètres qui sont des longueurs des côtés: xxx

Il produira les éléments suivants pour w1 = 4, w2 = 2, d1 = 2, d2 = 3 :

Entrez la description de l'image ici

et de même pour 3D: < / p> xxx

Nous obtenons:

Entrez l'image Description ici


5 commentaires

C'est une bonne réponse à nouveau! Si simple mais élégant. Exactement ce dont nous avons besoin ici. Je pense que votre solution a encore moins de paramètres que Bert's, car vous n'avez pas d'angle directement, mais il peut être déduit de manière secondaire à partir de vos paramètres.


Je n'ai pas initialement remarqué que D1 et D2 sont des longueurs des côtés. J'ai corrigé cela maintenant dans le code ci-dessus afin que le paramétrage soit basé sur les largeurs et les longueurs des côtés.


Belle mise en œuvre! Cela suppose que les côtés haut et inférieurs sont parallèles et que l'hexagonal a une hache verticale de symétrie.


En supposant que vous n'avez pas besoin d'autres degrés de liberté, vous pouvez réorganiser ceux-ci comme suit. En remplaçant W1 et D1 par leur rapport R1 (et également R2) et en ajoutant RW comme W1 / R2, vous définissez entièrement la forme et peut définir la taille dans un paramètre indépendant.


J'ai ajouté ci-dessous une page wiki sur la façon de construire enfin la maille via des syntaxes.



0
votes

J'ai discuté de ce problème avec mon colécle. Il est motivé pour créer un réseau de triangle mais souligne également des algorithmes généraux pour des polygones non conçaires.

Pour créer un maillage par algorithme
  1. Divisez l'hexagone en deux trapèces par la ligne pointillée comme illustré dans le corps de la question
  2. Divisez les trapézoïdes en triangles: assemblable et construire des structures de trimesh par inittri
  3. Charger le vecteur f est construit par bilin_assembly (car cela a fonctionné avant mais pas nécessairement le choix optimal)

    division de hexagone avec deux bouches en deux trapèze

    1. Prenez deux nœuds que la différence d'index est trois et quelle distance est la plus petite entre six nœuds.
    2. former deux trapèze de telle qu'un trapèze ait des nombres 1 à 4 tandis que l'autre 1,6,5,4.

      Les syntaxes suivantes sont basées sur mes éditions de codes en 2013, mais principalement sur les descriptions du livre solutions numériques d'équations différentielles partielles par la méthode des éléments finis par CLAES Johnson.

      syntaxe de l'assemblage où est considéré maintenant pour la simplicité un problème de Poisson (doit être affiné ultérieurement ici) xxx

      où nous avons besoin d'assemblage bilinéaire quelle syntaxe xxx

      syntaxe à un maillage triangulaire init xxx

      Je n'ai pas publié les codes source complets ici en raison de problèmes de droit d'auteur et ils feraient la répondre assez longtemps. Cependant, tous les algorithmes sont basés sur la première source afin de pouvoir créer un chercheur ici. Je pense que ce genre de méthode FEM est le seul moyen de trouver le maillage optimal ici.

      ALGORITHMES POUR LES POLYGONS NON CONCONVES GÉNÉRALES

      Il existe également des algorithmes qui peuvent créer des mailles pour les polygones non conçus en général. Il est possible que le maillage fourni par Margus ' réponses est produit par un tel algorithme.

      ANSYS

      J'écoutais différents produits sur la visualisation des trous, des géométries différentes et des matériaux différents. Ansys est une solution prometteuse ici.

      Sources
      1. Solutions numériques d'équations différentielles partielles par la méthode des éléments finis par CLAES Johnson.
      2. Notes de classe en méthodes d'éléments finis à mon université, 2013-2014


1 commentaires

Je devais accepter celui-ci ici car c'est la seule réponse qui offre un moyen systématique de trouver le maillage standard. Je suis plus qu'heureux de répondre à une meilleure réponse qui peut fournir des codes source gratuits pour des tests systématiques.