Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:geometry:mesh:1d

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:user:geometry:mesh:1d [2013/07/12 14:58] jorisdoc:user:geometry:mesh:1d [2015/02/18 11:09] – [SimpleMesher1D] ziane
Line 1: Line 1:
-====== Mailleurs 1D ======+ 
 +====== 1D Meshers (Curves) ======
  
-===== MeshedPoints =====+FIXME __Mesh Elements versus Finite Elements__: these two notions are different and should not be misunderstood. A mesh is made of geometric cells, the mesh elements. A finite element is a physical entity, which is supported by a mesh element. In Metafor, this is a two-steps method: first, the mesh is created, then the finite elements are applied to the mesh (this second step is done once the integration is started and programmed in the ''InteractionSet'').
  
-==== Mailleur simple ====+Automatic meshers create nodes and mesh cells from the geometry. Metafor meshers are quite basic but still useful to mesh simple geometries, to avoid using external software.
  
-Les mailleurs automatiques créent des mailles à partir de la géométrie. Les mailleurs intégrés dans Metafor ne sont pas très évolués mais ils rendent bien service lors du maillage de géométries simples et évitent l'utilisation de programmes externes.+===== Generating nodes (& cells) =====
  
-:!: __Mailles vs Elements finis:__ Ne pas confondre la création du maillage et la création des éléments finis! Le maillage est composé de cellules purement géométriques. Un élément fini est une entité physique qui repose sur une maille. Dans Metafor, on procède en deux temps: d'abord, la création des mailles, puis l'application des éléments finis sur les mailles créées (cette deuxième étape est exécutée lors du démarrage de l'intégration temporelle et programmée dans l' ''InteractionSet'').+==== SimpleMesher1D ====
  
-Le maillage de lignes s'effectue via la commande :+{{:doc:user:ico-beginner.png?40 |Beginner}} 
 +Basic meshing of ''Curves'' can be done with the following command:
  
-   SimpleMesher1D(curveset(number)).execute(ne, d, cells)+   SimpleMesher1D(curve).execute(ne, d=1.0gencells=False)
  
-|''number''numéro de la ligne à mailler +with 
-|''ne''nombre de segments | +|''curve''    [''Curve''] | the curve to be meshed 
-|''d''  | distribution (rapport entre le dernier et le premier segment- [défaut=1.0] +|''ne''       [''int''  | number of segments | 
-|''cells''génère des mailles 1D [défaut=False] |+|''d''        | [''float''| distribution (ratio between the length of the last and first segments) | 
 +|''gencells'' {{:doc:user:ico-advanced.png?18|Advanced}} | [''bool'' | generate mesh cells (e.g. for 1D springs)  |
  
 +{{:doc:user:ico-advanced.png?40 |Advanced}}
 +Likewise, meshing at a higher degree (second or third):
  
-De manière analoguele maillage au deuxième ou troisième degré se fait via:+   HighDegreeSimpleMesher1D(curveset(number)degree).execute(ne, d, cells)
  
-   HighDegreeSimpleMesher1D(curveset(numero), degree).execute(ned, cells)+Note : The ''d'' parameter is used to create segments ''d'' times smaller at the beginning of the curve than at its endThereforethe curve orientation matters.
  
-NB: Utilisation du paramètre ''d'' permet de créer des segments ''d'' fois plus petits au début de la courbe qu’à la fin. Donc, attention à l’orientation des courbes pendant la création de la géométrie.  +==== Density mesher - DensityMesher1D ==== 
- +{{:doc:user:ico-advanced.png?40 |Advanced}} 
-==== Mailleur "densité" - DensityMesher1D ==== +The density mesher is used to mesh a line while specifying the length of the desired segment as a function of the curvilinear abscissaThis is done in two steps:
- +
-Le mailleur "densité" permet de mailler une ligne en spécifiant la longueur des mailles voulues en fonction de l'abscisse curviligneOn procède en deux étapes:+
    
-Création d'une fonction "longueur de mailleen fonction de l'abscisse curviligne réduite ($s\in[0,1]$).+First, a function "mesh element lengthis defined, with the reduced curvilinear abscissa as argument ($s\in[0,1]$).
  
 <code> <code>
Line 37: Line 40:
 </code> </code>
  
-Création d'un mailleur "densité" sur la courbe 1.+Second, the density mesher is created on curve #1.
  
 <code> <code>
 mesher = DensityMesher1D(curveset(1), ellength) mesher = DensityMesher1D(curveset(1), ellength)
-mesher.setDeltaI(0.001)      # paramètre interne d'intégration+mesher.setDeltaI(0.001)      # internal integration parameter
 mesher.execute(False) mesher.execute(False)
 </code> </code>
  
-Le paramètre ''False'' passé à ''execute'' permet de générer uniquement les noeuds (et aucune arête)Ceci est très important pour garder une cohérence de la frontière d'un domaine 2D pour le contact défo-défo.+The parameter ''False'', passed to ''execute'', is used to generate only nodes, and not segmentsThis is important to be consistent with 2D meshing and for defo-defo contact.
  
-=== Mailleur HybridDensityMesher1D ===+===HybridDensityMesher1D ===
 +{{:doc:user:ico-advanced.png?40 |Advanced}} 
 +The way to create a grid of $n$ intervals on a curve starts with specifying the distribution of points on this curve. This is done by specifying the distribution of the curve parameter ${u(\xi) \; 0 \leq \xi \leq n+1}$ in the parametric domain, corresponding to the points of the curve ${\boldsymbol{x}(u) \; 0 \leq u \leq 1}$ in the physical domain. The final task is to specify ${u(\xi) \; 0 \leq \xi \leq n+1}$ such as ${\boldsymbol{x}(u(\xi)) \; 0 \leq \xi \leq n+1}$ is a good parametrization of the curve $\boldsymbol{x}(u)$.
  
-La méthodologie de construire une grille de $n$ intervalles sur une courbe commence par la spécification de la distribution des points sur cette dernière. Ceci revient à spécifier la distribution du paramètre de la courbe ${u(\xi) \; 0 \leq \xi \leq n+1}$ dans l'espace paramétrique, qui correspond aux points de la courbe ${\boldsymbol{x}(u) \; 0 \leq u \leq 1}$ dans l'espace physique. La tâche finale est de déterminer ${u(\xi) \; 0 \leq \xi \leq n+1}$ tel que ${\boldsymbol{x}(u(\xi)) \; 0 \leq \xi \leq n+1}$ est une bonne paramétrisation de la courbe $\boldsymbol{x}(u)$. +Finding the function $u(\xi)$ is equivalent to finding the function $\xi(u)$. With the definition $\rho(u) = \frac{d\xi}{du}$, it leads to:
- +
-La recherche de la fonction $u(\xi)$ revient à trouver la fonction $\xi(u)$. Avec la définition $\rho(u) = \frac{d\xi}{du}$,+
  
 $$ \xi(u) = \int_0^u \rho(w) dw. $$ $$ \xi(u) = \int_0^u \rho(w) dw. $$
  
-Dans le cas hybrideun ensemble plus complexe de considérations physiques est pris en compte dans la construction d'une fonction de densité des points de la grille, $\rho(u)$. Les approches possibles incluent les suivantes :+In the hydrid casethe construction of the grid points density function $\rho(u)$ requires more complex physical considerationsSeveral approaches exist:
  
-  * Distribution uniforme de la longueur d'arc où les points de la grille sont séparés par des distances égales dans l'espace physiqueDans ce casla densité des points de la grille doit être proportionelle au taux de variation de la longueur d'arc, c'est à dire $$\rho(u) \propto \left\| \frac{d\boldsymbol{x}}{du} \right\| $$ +  * A uniform distribution of the arc length, where grid points are separated by equal distances in the physical domainIn this casethe grid points density function must be proportional to the arc length change rate: $$\rho(u) \propto \left\| \frac{d\boldsymbol{x}}{du} \right\| $$ 
-  * Distribution uniforme de la longueur d'arc pondérée par la courbureoù les points de la grille sont concentrés dans les régions de forte courburePour ce cas-làla fonction de densité des points de la grille prend la forme suivante $$\rho(u) \propto \kappa(u) \left\| \frac{d\boldsymbol{x}}{du} \right\| $$ où $\kappa(u)$ est la courbure de la courbe $\boldsymbol{x}$ en $u$. +  * A uniform distribution of the arc length weighted by the curvaturewhere grid points are concentrated in areas with greater curvatureIn this casethe grid points density function is written as: $$\rho(u) \propto \kappa(u) \left\| \frac{d\boldsymbol{x}}{du} \right\| $$ where $\kappa(u)$ is the curvature of the curve $\boldsymbol{x}$, in $u$. 
-  * Attraction de la grille vers un point d'attraction $u^{*}$ dans l'espace paramétrique (correspondant au point $\boldsymbol{x}^{*} = \boldsymbol{x}(u^{*})$ dans l'espace physique). Un cas typique est $u^{*}=0$ ou $u^{*}=1$, quand on désire capter une échelle de petite taille à une des extrémités de la courbeAlternativement, $0< u^* < 1$ concentre le raffinement près d'un point à l'intérieur de la courbe. \\ Pour ces cas-làun bon choix pour $\rho(u)$ est : \\ $$ \rho_{u^{*}} (u) \propto \frac{1}{\sqrt{(k (u-u^{*}))^2 +1} } $$ où $k$ est un facteur d'attraction qui détermine l'intensité d'attraction vers $u^{*}$.+  * An attraction of the grid towards an attraction point $u^{*}$ in the parametric domain (which corresponds to the point $\boldsymbol{x}^{*} = \boldsymbol{x}(u^{*})$ in the physical domain). A usual possibility is $u^{*}=0$ or $u^{*}=1$, when a very small scale is desired at one end of the curveAlternatively, $0< u^* < 1$ will focus the refining near a point inside the curve. \\ For these casesa proper choice for $\rho(u)$ is : \\ $$ \rho_{u^{*}} (u) \propto \frac{1}{\sqrt{(k (u-u^{*}))^2 +1} } $$ where $k$ is an attraction factor which determines the intensity of the attraction towards $u^{*}$.  
  
-En pratiqueil est plus que probable que l'utilisateur désire une fonction hybride de densité de points de la grillequi est une combinaison linéaire de plusieurs fonctions de densité décrites ci-dessusDans ce cas, plusieurs fonctions de densité $\rho_i(u)$ peuvent être combinéeschacune normalisée de manière à ce que   +In practiceit is likely that the user wishes for an hybrid grid points density functionso a linear combination of several functions described aboveThese functions $\rho_i(u)$ can be combinedeach one being normalized such as $\int_0^1 \rho_i(u) \, du = \xi(1)-\xi(0) = m$. Introducing the positive constants $\lambda_i$ such as $\sum_i \lambda_i=1$, the normalized hybrid density function $\rho(u)$ is defined as:  
-$\int_0^1 \rho_i(u) \, du = \xi(1)-\xi(0) = m$. Etant donné les constantes positives $\lambda_i$ telles que $\sum_i \lambda_i=1$, on construit $\rho(u) = \sum_i \lambda_i \rho_i(u)$ qui est une fonction de densité de points de la grille avec une normalisation adéquate. Cette fonction hybride de densité va migrer les points de la grille dans les régions où une des fonctions $\rho_i(u)$ nécessite un raffinementEn utilisant ce concept, il est possible de répartir les points de la grille sur base des critères hybrides de longueur d'arc, de courbure et d'attraction vers un ensemble ${u_i^*}$ de points distincts.+$$\rho(u) = \sum_i \lambda_i \rho_i(u)$
 +This hybrid density function migrates the grid points towards every area where a function $\rho_i(u)$ requires refiningUsing this concept, it is possible to allocate grid points based on hybrid criteria of arc lengthcurvature and attraction towards a set of distinct points ${u_i^*}$.
  
-Finalementsi on donne les poids $\lambda_s$$\lambda_{\kappa}$, les points $\{u_i^* \; | \; 0 \leq u_i^* \leq 1, \; 1  \leq i \leq p\}$, les poids $\{\lambda_i, \;  1 \leq i \leq p\}$ et les facteurs d'attraction $\{k_i, \;  1 \leq i \leq p\}$ où $\lambda_s+\lambda_{\kappa}+\sum_{i=1}^p \lambda_i =1$, on génère une distribution de $n+1$ points $u_0, u_1, \ldots, u_{n+1}$ qui sont simultanément concentrés au voisinage des points d'attraction $\{u_i^*\}$, positionnés dans les régions de forte courbureet positionnés de manière à éviter de grands écarts sur la longueur d'arc.+Finallysupplying: 
 +  * the weights $\lambda_s$ and $\lambda_{\kappa}$, 
 +  * the points $\{u_i^* \; | \; 0 \leq u_i^* \leq 1, \; 1  \leq i \leq p\}$, 
 +  * the weights $\{\lambda_i, \;  1 \leq i \leq p\}$
 +  * the attraction factors $\{k_i, \;  1 \leq i \leq p\}$ 
 +where $\lambda_s+\lambda_{\kappa}+\sum_{i=1}^p \lambda_i =1$, distribution of $n+1$ points $u_0, u_1, \ldots, u_{n+1}$ is generated, where these points are simultaneously: 
 +  * of a higher density close to the attraction points $\{u_i^*\}$, 
 +  * positioned in areas where the curvature is large, 
 +  * positioned to avoid large differences on the arc length.
  
-Sous Metafor, le mailleur HybridDensityMesher1D est interfacée sous la forme suivante +In Metafor, the mesher ''HybridDensityMesher1D'' is interfaced as
 <code> <code>
 Mesher = HybridDensityMesher1D(curveset(number),p)                               Mesher = HybridDensityMesher1D(curveset(number),p)                              
Line 72: Line 84:
 </code> </code>
  
-|''number''numéro de la courbe à mailler +|''number''number of the curve to be meshed 
-|''p''nombre de points d'attraction - [défaut=0] | +|''p''number of attraction points - [default=0] | 
-|''n''nombre de segments/d'intervalles +|''n''number of segments | 
-|''lambdaS''poids du critère de distribution uniforme de la longueur d'arc - [défaut=1.0] | +|''lambdaS''weight of the uniform arc length distribution criterion - [default=1.0] | 
-|''lambdaK''poids du critère de distribution uniforme de la longueur d'arc pondérée par la courbure - [défaut=0.0] | +|''lambdaK''weight of the uniform arc length distribution weighted by the curvature criterion - [default=0.0] | 
-|''cells''génère des mailles 1D [défaut=False] |+|''cells''generated mesh elements in addition to nodes [default=False] |
  
 +To concentrate some mesh elements towards an attraction point, the follwoing command can be used before the ''.execute()'' operation:
  
-Si on désire concentrer les mailles autour d'un point d'attraction, nous pouvons utiliser les commandes suivantes avant l'opération .execute():  
 <code> <code>
 Mesher.pushAttractorPt(uJ) Mesher.pushAttractorPt(uJ)
Line 87: Line 99:
 </code> </code>
  
-|''uJ'' |valeur du paramètre $u$ de la courbe correspondant au point d'attraction+|''uJ''value of the $u$ parameter corresponding to the attraction point| 
-|''lambdaJ'' |poids associé au point d'attraction+|''lambdaJ'' |weight associated to the attraction point| 
-|''kJ'' |facteur d'attraction| +|''kJ'' |attraction factor|
-===== Mailles 1D =====+
  
-==== Mailles 1D : création manuelle ====+===== Generating cells alone =====
  
-Pour créer manuellement une maille 1D sur deux "points de maillage":+Generating cells is only useful if you plan to define 1D elements (such as springs) in your model. 
 + 
 +==== Manual definition ==== 
 +{{:doc:user:ico-advanced.png?40 |Advanced}} 
 +To manually create a 1D cell based on two mesh points, 
  
   mesh.define(no, CELL_LINE, grp, no1, no2)   mesh.define(no, CELL_LINE, grp, no1, no2)
  
-| ''no''numéro de la maille 1D |  +| ''no''  number of the 1D cell |  
-| ''grp''entité qui contiendra la maille (un ''[[doc:user:geometry:user:selections|Group]]'' par exemple) |  +| ''grp''entity which will contain the mesh element (for example a ''[[doc:user:geometry:user:selections|Group]]'') |  
-| ''no1''numéro du point maillage 1 |  +| ''pt1''first mesh point |  
-| ''no2''numéro du point maillage 2  +| ''pt2''second mesh point | 
- +
-==== Mailles 1D : CellLineMesher ==== +
- +
-Pour générer des mailles 1D à partir de deux ensembles de points de maillage, il existe le ''CellLineMesher''+
- +
-Le ''CellLineMesher'' est un mailleur qui, sur base de deux entités géométriques maillées (i.e. contenant des ''MeshedPoints''), génère des objets de type ''CELL_LINE'' dans la topologie. Tout ''MeshPoint'' de la première entité sera liée par un ''CELL_LINE'' à tout ''MeshPoint'' de la seconde. +
  
-L'''Interaction'' générée sur ces ''CELL_LINE'' sera définie sur la première entité géométrique passée au ''CellLineMesher''.+==== CellLineMesher ==== 
 +{{:doc:user:ico-advanced.png?40 |Advanced}} 
 +The ''CellLineMesher'' is used to generate a series of 1D cells linking two sets of mesh points.
  
 +The ''CellLineMesher'' is a mesher which, based on two meshed geometric entities, generates objects of ''CELL_LINE'' type. Every mesh point of the first entity will be linked by a ''CELL_LINE'' to every ''MeshPoint'' of the second entity.
  
 +The ''interaction'' generated on these ''CELL_LINE'' will be defined by the first geometric entity passed to the ''CellLineMesher''.
  
-__Exemple:__+__Example:__
  
-Génération de ''CELL_LINE'' sur deux groupes de "points de maillage" (provenant d'un [[doc:user:geometry:import:tuto2|import Bacon]] par exemple)+Generation of ''CELL_LINE'' on two sets of mesh points (coming from a [[doc:user:geometry:import:tuto2|Bacon import]] for example)
  
   mesher = CellLineMesher(groupset(no1), groupset(no2))    mesher = CellLineMesher(groupset(no1), groupset(no2)) 
Line 121: Line 134:
   ...   ...
   app = FieldApplicator(no)   app = FieldApplicator(no)
-  app.push(groupset(no1))   # Definition des elements sur la première entité du ''CellLineMesher''+  app.push(groupset(no1))   # Definition of the element on the first  
 +                            # ''CellLineMesher'' entity
  
  
doc/user/geometry/mesh/1d.txt · Last modified: 2016/03/30 15:23 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki