|
This appendix describes commands for producing
good-quality meshes of models that tile space, such as polycrystalline
materials models. Such models are often refered to as "periodic", but since
that term already has a different meaning in Cubit, the keyword "tile" is used instead.
Meshes may be smoothed across periodic boundaries. Periodic boundary conditions
can be automatically set up, according to ALEGRA conventions (SAND99-2698).
Initial setup
First import the model and merge the surfaces. Then mesh it with any method
that will create meshes that match across the tile (periodic) boundary, say with
scheme
polyhedron
or
sweep.
Once the mesh is created, specify the
"tile vectors", which lets Cubit know that the nodes across the periodic boundaries
are actually the same node:
Tile [x <period>] [y <period>] [z <period>]
The 'period' you specify is actually the vector offset from one boundary to its match.
Specify one tile command for each coordinate axis that the model is periodic in.
E.g.
Tile x 1
Tile y 1
Tile z 1
You can see which nodes are matched to a given node by some
combination of tile vectors with the following command:
Tile Debug Node <id>
If you later need to delete these tile vectors, use the following command:
Tile Off
Once the tile vectors are specified, you can set up periodic boundary conditions
that meet ALEGRA specifications. The command is:
Tile Nodeset <start_id>
This will create a nodeset for all combinations of tile vectors that actually connect
nodes. The nodesets created will be reported to you. The nodesets will be consecutive
starting with the given 'start_id', except that if there are no nodes for a particular
combination there will be no nodeset and the id space will have a hole.
To delete these nodesets, use the
Tile Off
command rather than the usual commands to delete nodesets.
Smoothing
Once a mesh has been created and the tile vectors have been specified, you can smooth
the mesh and keep the periodic boundaries exactly offset by the tile vectors.
Only hex meshes are currently supported.
A variety of 3d
smoothing schemes are supported,
including laplac, equipotential, untangle, and condition number.
Smooth Volume <volume_id_range> [Global [Float <dim>] ]
Use "Global" if you are smoothing a collection of volumes.
Use "float 3" if you want nodes on surfaces, curves, and vertices
to be able to move off of their geometric owner. Use "float 2" if
you want just nodes on curves and vertices to be able to move off
of their owner (but stay on an owning surface).
It is often useful to specify that some of the nodes are fixed using the
"node position fixed" command.
Example
# make the geometry
#{brick_size=500}
brick wid {brick_size}
brick wid {brick_size}
body 2 move {brick_size} 0 0
brick wid {brick_size}
body 3 move {brick_size} {brick_size} 0
brick wid {brick_size}
body 4 move 0 {brick_size} 0
brick wid {brick_size}
body 5 move 0 0 {brick_size}
brick wid {brick_size}
body 6 move {brick_size} 0 {brick_size}
brick wid {brick_size}
body 7 move {brick_size} {brick_size} {brick_size}
brick wid {brick_size}
body 8 move 0 {brick_size} {brick_size}
merge all
# mesh it
vol all int 3
mesh vol all
# set the tiling vectors
tile x {brick_size*2}
tile y {brick_size*2}
tile z {brick_size*2}
tile debug node 256
tile debug node 245
# set the tiling nodesets
tile nodeset
# mess up the mesh quality
# volume all smooth scheme randomize
# smooth volume all
surface all smooth scheme randomize
smooth surface all
draw hex all
# fix the mesh quality
node in volume all position fixed
node in surface all position free
volume all smooth scheme laplac
# volume all smooth scheme untangle beta 0.08
smooth volume all global float 3
draw hex all
|