Je prévois une visualisation des flux bien que des hexagones bisymétriques concaves avec deux bouches. p>
exemple où la longueur du côté D1 est égale à l'autre longueur du côté D2: p>
p>
Quelle nommant j'ai discuté initialement ici sur des hexagones irréguliers. p>
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 . p>
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. P>
5 Réponses :
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 code: p> 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"}]
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!
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). P>
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). P>
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 . P>
à 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. P>
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). P>
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 a> et Ce lien par exemple). p>
pour un plus béton Exemple: p>
donné une sortie de simulation Vous pouvez faire quelque chose comme: < / p> (Remarque: plus d'informations sur Jinja peut être trouvée ici A> - Commentaire Inline Link ne rendant pas correctement ci-dessus.) p> 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. P> Cette technique est une application directe de documents pilotés par les données mais à un substrat différent (que HTML ou SVG) ici. P> espère que cela aide. P> P> y code> et un fichier vrml de modèle similaire à: p>
Bonne réponse! Y at-il un lien manquant dans la deuxième dernière phrase du mot ici code>?
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.
Essayer de définir une bibliothèque de mailles standard, je pense que nous devrions commencer par déterminer les degrés de liberté. P>
Pour des hexagones bissymetriques concaves avec 2 bouches, il pourrait être: p>
Les réponses de Margus et A_a seront utiles pour la réalisation. P>
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!
Si votre objectif est de visualiser de tels hexagones dans Matlab, alors Il produira les éléments suivants pour et de même pour 3D: < / p> Nous obtenons: p> remplir code>
et Fill3 code>
devrait faire l'affaire. Voici un exemple de code, qui suppose que vos hexagones sont paramétrés par deux largeurs w1 code> et
w2 code> et le
d1 code> et
d2 Code> Paramètres qui sont des longueurs des côtés:
w1 = 4, w2 = 2, d1 = 2, d2 = 3 code>: p>
p>
p> p>
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.
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.
assemblable code> et construire des structures de trimesh par inittri code> li>
- Charger le vecteur
f code> est construit par bilin_assembly code> (car cela a fonctionné avant mais pas nécessairement le choix optimal) li>
ol> division de hexagone avec deux bouches en deux trapèze p>
- Prenez deux nœuds que la différence d'index est trois et quelle distance est la plus petite entre six nœuds. li>
- former deux trapèze de telle qu'un trapèze ait des nombres 1 à 4 tandis que l'autre 1,6,5,4. li>
OL>
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 em> par CLAES Johnson. p> syntaxe de l'assemblage où est considéré maintenant pour la simplicité un problème de Poisson (doit être affiné ultérieurement ici) p> xxx pré> où nous avons besoin d'assemblage bilinéaire quelle syntaxe p > xxx pré> syntaxe à un maillage triangulaire init p> xxx pré> 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. p>
ALGORITHMES POUR LES POLYGONS NON CONCONVES GÉNÉRALES H2>
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. P>
ANSYS H2>
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. P>
Sources H2>
- Solutions numériques d'équations différentielles partielles par la méthode des éléments finis em> par CLAES Johnson. li>
- Notes de classe en méthodes d'éléments finis à mon université, 2013-2014 LI>
ol> p>
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.