Hello MICRESS community,
I am working on a multi-layer Wire Arc Additive Manufacturing (WAAM) simulation for an Al-Si-Mg alloy using MICRESS v7.101 (Windows). I have successfully simulated the solidification of the first layer and am now trying to deposit the second layer.
My Goal:
I want to expand my simulation domain in the Z-direction from 1000 cells to 1719 cells (with a constant grid spacing of 0.31 µm). To accurately simulate the addition of solid wire before the heat source arrives, I am trying to stack two separate .rest files:
Bottom Layer: My solidified 1000-cell WAAM microstructure (loaded with Z-shift = 0).
Top Layer (Wire Cast): A standalone 719-cell casting simulation representing the incoming wire (loaded with Z-shift = 1000). Where remelting happens from the temp profile followed by solidification. So I can show the complete layer 1 and layer 2 simulation respectively.
The Issue:
When I launch the simulation, the parser reads the first restart file perfectly and places Layer 1 at the bottom. However, it seems to completely ignore the second restart file. It does not throw a hard crash or path error, but the top 719 cells simply default to Phase 0 (Liquid) instead of loading the microstructural data from the 719-cell cast file.
I have tried initializing with 0 deterministic grains, as well as using 1 "dummy grain" to force memory allocation before the restart_file command overrides it. Neither approach successfully reads the second file.
Here is the relevant snippet of my .in file where the issue is occurring:
Plaintext
# Geometry
# ========
# Grid size?
# Cells in X-direction (CellsX):
200
# Cells in Y-direction (CellsY):
1
# Cells in Z-direction (CellsZ):
1719
# Cell dimension (grid spacing in micrometers):
0.31
... [Model, Database, and Phase definitions omitted for brevity] ...
# Initial Microstructure
# ======================
# Type of grain positioning?
deterministic
# Number of grains at the beginning?
1
#
# Grain number 1
# --------------
# Geometry?
round
# Center x,z coordinates [micrometers], grain number 1?
0.00000
0.00000
# Grain radius? [micrometers]
1.00000
# Choice of growth mode:
stabilisation
# Should the Voronoi criterion be applied?
no_voronoi
# Phase number? [grain group] (integer)
1
# Rotation angle? [Degree]
0.00000
#
# Structure from restart file
# ---------------------------
# Shall grain(s) be replaced by initial structure(s) from a restart file(s) ?
restart_file
# How many restart files shall be read?
2
# For each restart file a grain number and (optionally)
# shift (in grid cells) and zoom factor for all 3 dimensions
# as well as a character for rotation options must be specified:
# grain number [shift X (int) shift Y (int) shift Z (int)]
0 0 0 0
# Name of restart file?
Results_Layer1_Cooling/WAAM_Cooling
# grain number [shift X (int) shift Y (int) shift Z (int)]
0 0 0 1000
# Name of restart file?
Results_Wire/Wire_Cast_719
My questions for the forum:
Is there a strict limitation in MICRESS v7.200 against stacking multiple restart files that were generated with different CellsZ geometries, even if the total fits perfectly inside the new domain?
Is the "dummy grain" method still the recommended workaround for memory allocation when stacking .rest files, or is there a cleaner syntax I am missing?
Could this be a parser alignment bug specific to the terse mode reading of multiple shift coordinates?
Any guidance on how to force the solver to accept both files would be greatly appreciated. Thank you!
Multilayer WAAM simulation
Re: Multilayer WAAM simulation
Dear Jai_4271,
Welcome to the MICRESS forum.
Reading multiple restart files as initial microstructure works differently: The idea is that you define the region where the initial microstructures of each restart file goes by creating corresponding initial grains in the grain input section. This means in your case, you create an initial grain number 1 for your first layer at the bottom (filling the domain up to z=1000), and a second one above. Or - to simplify your life - you can just omit the second one and use grain 0, which automatically remains where you want to put layer 2.
Then, when reading the restart files, you reference the grain number, which defines the region where you want to apply your microstructure:
# For each restart file a grain number and (optionally)
# shift (in grid cells) and zoom factor for all 3 dimensions
# as well as a character for rotation options must be specified:
# grain number [shift X (int) shift Y (int) shift Z (int)]
1 0 0 0
# Name of restart file?
Results_Layer1_Cooling/WAAM_Cooling
# grain number [shift X (int) shift Y (int) shift Z (int)]
0 0 0 1000
# Name of restart file?
Results_Wire/Wire_Cast_719
In your previous setup, you overwrote all the grain 0 region with the first restart file (the whole domain without the small initial region of grain 1), while the second restart did not find any region of grain 0 anymore, and therefore did nothing...
Best wishes
Bernd
Welcome to the MICRESS forum.
Reading multiple restart files as initial microstructure works differently: The idea is that you define the region where the initial microstructures of each restart file goes by creating corresponding initial grains in the grain input section. This means in your case, you create an initial grain number 1 for your first layer at the bottom (filling the domain up to z=1000), and a second one above. Or - to simplify your life - you can just omit the second one and use grain 0, which automatically remains where you want to put layer 2.
Then, when reading the restart files, you reference the grain number, which defines the region where you want to apply your microstructure:
# For each restart file a grain number and (optionally)
# shift (in grid cells) and zoom factor for all 3 dimensions
# as well as a character for rotation options must be specified:
# grain number [shift X (int) shift Y (int) shift Z (int)]
1 0 0 0
# Name of restart file?
Results_Layer1_Cooling/WAAM_Cooling
# grain number [shift X (int) shift Y (int) shift Z (int)]
0 0 0 1000
# Name of restart file?
Results_Wire/Wire_Cast_719
In your previous setup, you overwrote all the grain 0 region with the first restart file (the whole domain without the small initial region of grain 1), while the second restart did not find any region of grain 0 anymore, and therefore did nothing...
Best wishes
Bernd