simple adaptive meshing and MATC parameters, 2D steady state

Elmer cases by the users for the users

simple adaptive meshing and MATC parameters, 2D steady state

Postby NJank » 29 Feb 2012, 19:39

This example uses heating of a rectangular block of metal with a coarse mesh. The heatsource is constricted, so mesh refinement is needed around it. This is done using Elmersolver's automatic RGB triangle splitting technique.

In addition, the example uses MATC parameters in the grid file to allow you to adjust the mesh density and heat source geometry. Any MATC variables or calculations are enclosed in $. Comments in the files are noted with exclamation points (!).

As a steady state simulation, Elmer Post can be used to view the final solution. Note that you cannot currently use ElmerPost to view adaptive meshes for transient simulations, as it does not save changing mesh condition for each timestep in EP format. The SaveLine function also has issues with the mesh changing between iterations. For a transient simulation, you can use the SaveScalars function with a list of points to get temperatures at certain locations for each timestep. You can also use ResultOutputSolver to save the results in a format that stores each mesh iteration, such as VTU format. Other postprocessors, such as ParaView and VisIt can view these results. The VTU output commands are included in this example as Solver 2.

-----------------
PROCEDURE (running elmersolver from the command line, assuming elmer files are in the system Path):
-----------------

- Create a new folder and save the adapt.grd and adapt.sif to it.

- Create the base mesh:
elmergrid 1 2 adapt

- Run the solver:
elmersolver adapt.sif

Viewing Results with Elmerpost:
you can use Elmerpost to view the results in several ways
1) view the adapt.ep file in the adapt subfolder. this is based on the initial mesh, and will have a coarser output. I believe the solution shown is the projection of the final solution on the initial mesh **confirmation requested**
2) view the adapt.ep files in the various "RefinedMesh#" folders. The program only makes 10 folders, and then reuses them. The one with highest mesh density, and usually the largest filesize will be the last one containing the final refined result. Note the much higher mesh refinement around the heat source. The maximum temperature is also slightly higher, as this better captured the peak temperature.

EPcoarse.jpg
EPcoarse.jpg (63.55 KiB) Viewed 1261 times
EPrefined.jpg
EPrefined.jpg (82.98 KiB) Viewed 1261 times


Viewing Result in VisIt:
1) in the vtuoutput folder will be a single vtu file. Open visit and select this file as the Source to open. Under Plots, select Add, Mesh, mesh. Then Draw. Select Add, Pseudocolor, Temperature. Then Draw.
2) You can change the VTU output to show each 'timestep' (or steady state iteration) by changing "after all" to "after timestep" in the Solver 2 section of the .sif file. This will create a group of numbered vtu files in the vtuoutput folder. Select this group as the source in Visit, and you can click 'play' to see the gradual mesh refinement. This is the same procedure you would use to visualize an actual transient model.

visitoutput.jpg
visitoutput.jpg (95.6 KiB) Viewed 1261 times


Modifying parameters:
You can adjust the parameter values in the .grd file to see the effect on refinement. You can also change the adaptive mesh convergence criteria in the .sif file Simulation section. These will all affect the amount of mesh refinement required to achieve a satisfactory solution.

adapt.grd file text:
Code: Select all
***** ElmerGrid input file for structured grid generation *****
Version = 210903
!Elmergrid requires you to explicitly turn on MATC
MATC = True

!variables list
$totalwidth = 3e-3$
$heated = 1e-3$
$meshdensity = 100$

$unheated = (totalwidth - heated)/2$

Coordinate System = Cartesian 2D
Subcell Divisions in 2D = 3 3

Subcell Sizes 1 = $unheated heated unheated$
Subcell Sizes 2 = 1e-3 1e-3 1e-3

Material Structure in 2D
  2 1 2
  2 2 2
  2 2 2
End

Materials Interval = 1 2

!set hot boundary to the top of Material 1, and cold to the bottom of 2.
Boundary Definitions
!Special boundary 'out' notation:
!-1 down, -2 right, -3 top and -4 left -11 smaller, -9 bigger, and -10 anything
! type     out      int      double   of the boundaries
  1        -1       2       1
  2        -3       1        1
End

Surface Elements = $meshdensity$
Triangles = logical True  !needed for RGB adaptive meshing
Numbering Horizontal
Element Degree = 1s


adapt.sif file text:
Code: Select all
Header
  CHECK KEYWORDS Warn
  Mesh DB "." "adapt"
End

Simulation
  Max Output Level = 5
  Coordinate System = "Cartesian 2D"
  Coordinate Mapping(3) = 1 2 3
  Simulation Type = "Steady State"
  Steady State Max Iterations = 5
  Post File = adapt.ep
End

Body 1
  Target Bodies(2) = 1 2
  Equation = 1
  Material = 1
End

Equation 1
  Heat Equation = True
  Active Solvers(1) = 1
End

Solver 1
  Exec Solver = "Always"
  Equation = "Heat Equation"
  Procedure = "HeatSolve" "HeatSolver"
  Variable = "Temperature"
  Variable Dofs = 1
  Optimize Bandwidth = True
  Linear System Solver = "Direct"
  Linear System Direct Method = "umfpack"
  Steady State Convergence Tolerance = 1.0e-5
  Stabilize = True
  Nonlinear System Convergence Tolerance = 1.0e-4
  Nonlinear System Max Iterations = 3
  Nonlinear System Newton After Iterations = 2
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1.0

  Adaptive Mesh Refinement = true
  Adaptive Remesh = false
  Adaptive Save Mesh = true
  Adaptive Error Limit = 1e-4
End

Solver 2
Exec Solver = String "after all"
Equation = String "ResultOutput"
Procedure = File "ResultOutputSolve" "ResultOutputSolver"
Output File Name = String "adapt."
Vtu Format = Logical True
Ascii Output = Logical True
Scalar Field 1 = String "Temperature"
Mesh Name = String "RefinedMesh"
Output Directory = String vtuoutput
End

Material 1
   Density = 1
   Heat Conductivity = 1
End

Boundary Condition 1
  Target Boundaries(1) = 1
  Name = HOT
  Heat Flux BC = True
  Heat Flux = 100
End

Boundary Condition 2
  Target Boundaries(1) = 2
  Name = COLD
  Temperature = 0
End
NJank
 
Posts: 51
Joined: 05 Dec 2009, 00:05

Return to Contributed Cases

Who is online

Users browsing this forum: No registered users and 1 guest