Extracting nuleation positions

aspects of evaluating simulation results and their graphic presentation using either DisplayMICRESS or other software tools. Features and possibilities of DisplayMICRESS
Moritz
Posts: 40
Joined: Fri Aug 06, 2021 11:13 am
anti_bot: 333

Extracting nuleation positions

Post by Moritz » Thu Feb 10, 2022 1:13 pm

Dear all,

for a specific research topic, regarding different nucleation sites in a solidifing melt pool, I am very interested in the exact positions of nucleation and parameters of the nuclei.

I there any possibility to extract a dataset after the simulation, which contains infomation about the position and size of nuclei set or forming in the simulation?

Also, when using a very high seed density (in the range of E14), the output in the log-file for the resulting seed density distribution looks like the image attached. What is the reason behind the **** entry and is this pointing towards a problem with the simulation?

Image

As always, thank you all very much for your help and the discussions!

Best regard,

Moritz

ralph
Posts: 167
Joined: Wed Apr 27, 2011 4:42 pm
anti_bot: 333

Re: Extracting nuleation positions

Post by ralph » Thu Feb 10, 2022 2:54 pm

I there any possibility to extract a dataset after the simulation, which contains infomation about the position and size of nuclei set or forming in the simulation?
We will introduce a tabular output for nucleation events in the next version of MICRESS. In the current version, I am afraid you have to parse the standard or logfile output.

Code: Select all

Seed number 11 set at time t = 6.00000E-02 s
--------------------------------------------
in the bulk, zp =                221321
Phase: 1 (FCC_A1)
Seed type: 1 (10: 4/4)
Local temperature = 914.15 K
Undercooling = 1.2865 K
Nucleus curvature undercooling = 1.2785 K
Grain number = 11
As far as I know, the size is not reported, only the resp. class of the seed type.

You can calculate the coordinates from the cell pointer zp. We should add this x/y/z position in the output.
zp = 1 + x + (dimX+2) * y + (dimX+2)*(dimY+2) * z
Also, when using a very high seed density (in the range of E14), the output in the log-file for the resulting seed density distribution looks like the image attached. What is the reason behind the **** entry and is this pointing towards a problem with the simulation?
The format definition is too small (4 digits) to hold your number. This is only an I/O error which does not influence your simulation.

Best,
Ralph

Moritz
Posts: 40
Joined: Fri Aug 06, 2021 11:13 am
anti_bot: 333

Re: Extracting nuleation positions

Post by Moritz » Thu Feb 10, 2022 6:50 pm

Hello Ralph,

thank you so much for your reply, which is very helpful to me!

I have one follow up question: In the logfile output, what is the correct interpretation of this line:

Seed type: 1 (10: 4/4)

Am I correct, when I assume it is:

Seed type 1 (Seed type)
10 (class of seed of this type)
4/4 (fourth seed of all in all 4 seeds of this type)

Best regards,

Moritz

Bernd
Posts: 1505
Joined: Mon Jun 23, 2008 9:29 pm

Re: Extracting nuleation positions

Post by Bernd » Thu Feb 10, 2022 9:42 pm

Hi Moritz,

This is correct.

Bernd

Moritz
Posts: 40
Joined: Fri Aug 06, 2021 11:13 am
anti_bot: 333

Re: Extracting nuleation positions

Post by Moritz » Mon Mar 14, 2022 3:21 pm

Hi Ralph,

I would like to ask a follow up question. Today I wanted to calculate some seed positions. Unfortunately, I don't understand how to do that. The way I see it, your formula contains at least 3 unknown variables: x,y and z.

Can you maybe please explain how to calculate the seed position again?

Thank you for your help!

Best regards,

Moritz

ralph
Posts: 167
Joined: Wed Apr 27, 2011 4:42 pm
anti_bot: 333

Re: Extracting nuleation positions

Post by ralph » Mon Mar 14, 2022 4:03 pm

EDITED: Sorry. It's not the modulo funktion. It is an integer division.

Hi Moritz,

you can calculate the coordinates backwards by using the modulo function.

Code: Select all

zp = 1 + x + (dimX+2) * y + (dimX+2)*(dimY+2) * z

zp = zp - 1
z = zp / [(dimX+2)(dimY+2)]
zp = zp - z * [(dimX+2)(dimY+2)]
y = zp / (dimX+2)
zp = zp - y * (dimX+2)
x = zp
Best,
Ralph

Moritz
Posts: 40
Joined: Fri Aug 06, 2021 11:13 am
anti_bot: 333

Re: Extracting nuleation positions

Post by Moritz » Wed Mar 16, 2022 11:03 am

Hi Ralph,

thank you very much for this additional information.

I hope my multiple questions don't get annoying. I would like to explain in my own word, how I understood this calculation, to make sure, that I can conduct it correctly:

First, all the variables:

zp = zell pointer as it is in the .log file stated for every seed (for example something like 13187)
dimX = the dimension of the simulation domain in x direction
dimY = the dimension of the simulation domain in y direction
x = x-coordinate of one particular seed
y = y-coordinate of one particular seed
z = z-coordinate of one particular seed

As far as I understood, the zell pointer has to be modified with a calculation, before the calculation of the coordinates.

For z:
zp = zp - 1

With this new zp:
z = zp / [(dimX+2)(dimY+2)]

For y:
zp = zp - z * [(dimX+2)(dimY+2)]

With this new zp:
y = zp / (dimX+2)

For x:
zp = zp - y * (dimX+2)

With this new zp:
x = zp

The question is: Do I use zell numbers for the dimensions or the lengths, depending on the grid spacing? For example for dimX=100, as I used 100 cells or dimX=50, as I used a grid spacing of 0.5 (0.5*100=50)?

I tried both ways, so it seems I misunderstood something, as I got this as a result, when I tried to plot seed positions:

Image

I expected more of a point cloud type of graph.

Best regards,

Moritz

EDIT: Also what is irritating to me: In the calculation the dimension in z direction does not seem to play a role. Is that correct? In the current calculation, changing the value for z for the simulation domain has no influence on the results, but I should have, because seeds can be placed in differend "heights" of the simulation domain.

ralph
Posts: 167
Joined: Wed Apr 27, 2011 4:42 pm
anti_bot: 333

Re: Extracting nuleation positions

Post by ralph » Wed Mar 16, 2022 11:40 am

Hi Moritz,

if we are going 2D, we do not store boundary cells in Y direction (dimY+2 = 3).
If you omit the 2 steps for the Y coordinate, it should work.

Of course, you can scale the array coordinate by the grid spacing for your plot.

Best,
Ralph

Moritz
Posts: 40
Joined: Fri Aug 06, 2021 11:13 am
anti_bot: 333

Re: Extracting nuleation positions

Post by Moritz » Wed Mar 16, 2022 1:30 pm

Hi Ralph,

thanks for the reply.

If I skip the 2 steps for the y coordinate, do I use the z value for the calculation of the zp-value for x? Like: zp = zp - z * (dimX+2)?

Best regards,

Moritz

ralph
Posts: 167
Joined: Wed Apr 27, 2011 4:42 pm
anti_bot: 333

Re: Extracting nuleation positions

Post by ralph » Wed Mar 16, 2022 3:45 pm

Yes, indeed.
The zp is just an linear index for a 2D or 3D array.
e.g. in the second line of code, you count the number of full x rows (2D) which is the z coordinate.

2D:

Code: Select all

zp = zp - 1
z = zp / (dimX+2)
zp = zp - z * (dimX+2)
x = zp
Best,
Ralph

Post Reply