From a2e42e304bbc0b43825ac9fbf6302c10f47d15a7 Mon Sep 17 00:00:00 2001 From: Daniel Wheeler Date: Sun, 13 Aug 2023 12:43:09 -0400 Subject: [PATCH] notebooks: rerun notebook build Rerun notebook build to fix Jekyll templating issues from tkphd. Don't know why mine works and tkphd's doesn't.. --- benchmarks/benchmark2.ipynb.raw.html | 553 ++++++++++++++++++--------- benchmarks/benchmark3.ipynb.raw.html | 195 ++++++---- 2 files changed, 496 insertions(+), 252 deletions(-) diff --git a/benchmarks/benchmark2.ipynb.raw.html b/benchmarks/benchmark2.ipynb.raw.html index e7f17a481..59789e6c7 100644 --- a/benchmarks/benchmark2.ipynb.raw.html +++ b/benchmarks/benchmark2.ipynb.raw.html @@ -1,34 +1,44 @@ +
-
In [1]:
+
In [1]:
-
-
from IPython.display import HTML
+    
+
from IPython.display import HTML
 
-HTML('''<script>
+HTML('''<script>
 code_show=true; 
 function code_toggle() {
  if (code_show){
- $('div.input').hide();
- $('div.prompt').hide();
+ $('div.input').hide();
+ $('div.prompt').hide();
  } else {
- $('div.input').show();
-$('div.prompt').show();
+ $('div.input').show();
+$('div.prompt').show();
  }
  code_show = !code_show
 } 
 $( document ).ready(code_toggle);
 </script>
-<form action="javascript:code_toggle()"><input type="submit" value="Code Toggle"></form>''')
+<form action="javascript:code_toggle()"><input type="submit" value="Code Toggle"></form>''')
 
+
+
+ +
+
Out[1]:
-
-
+
+
+
+
+
-
In [3]:
+
In [3]:
-
-
from IPython.display import HTML
+    
+
from IPython.display import HTML
 
-HTML('''
-<a href="{{ site.links.github }}/raw/nist-pages/benchmarks/benchmark2.ipynb"
+HTML('''
+<a href="{{ site.links.github }}/raw/nist-pages/benchmarks/benchmark2.ipynb"
    download>
-<button type="submit">Download Notebook</button>
+<button type="submit">Download Notebook</button>
 </a>
-''')
+''')
 
+
+
+ +
+
Out[3]:
+ + + +
+
+
-
+
+
-

Benchmark Problem 2: Ostwald Ripening

+

Benchmark Problem 2: Ostwald Ripening

-
In [2]:
+
In [2]:
-
-
from IPython.display import HTML
+    
+
from IPython.display import HTML
 
-HTML('''{% include jupyter_benchmark_table.html num="[2]" revision=1 %}''')
+HTML('''{% include jupyter_benchmark_table.html num="[2]" revision=1 %}''')
 
+
+
+ +
+
Out[2]:
-
{% include jupyter_benchmark_table.html num="[2]" revision=1 %}
+ + + +
+{% include jupyter_benchmark_table.html num="[2]" revision=1 %} +
+
+
+
-
+
+
-
+
+
-

Free energy and dynamics

+

Free energy and dynamics

-
+
+

The atomic fraction of solute is specified by the conserved variable $c$, while the phase is indicated by a structural order @@ -239,55 +285,57 @@

Free energy and dynamics +

-
+
+
-

Figure 1: Free energy density surface

+

Figure 1: Free energy density surface

-
In [10]:
+
In [10]:
-
-
from mpl_toolkits.mplot3d import Axes3D
+    
+
from mpl_toolkits.mplot3d import Axes3D
 import matplotlib.pyplot as plt
 import numpy
-from matplotlib import cm
+from matplotlib import cm
 
 
 def free_energy_chem(conc, c_alpha_beta, rho_curv):
-    """Chemical free energy function.
-    """
+    """Chemical free energy function.
+    """
     return rho_curv**2 * (conc - c_alpha_beta)**2
 
 def h_interp(eta):
-    """Interpolation function
-    """
+    """Interpolation function
+    """
     return eta**3 * (6 * eta**2 - 15 * eta + 10)
 
 def g_well(eta, alpha):
-    """Double well function
-    """
+    """Double well function
+    """
     return eta**2 * (1 - eta)**2
 
 def free_energy(conc, eta, w_height, rho_curv, c_alpha, c_beta, alpha):
-    """Total free energy function.
-    """
+    """Total free energy function.
+    """
     return free_energy_chem(conc, c_alpha, rho_curv) * (1 - h_interp(eta)) \
            + free_energy_chem(conc, c_beta, rho_curv) * h_interp(eta) \
            + w_height * g_well(eta, alpha)
 
 def plot_figure(params, dpi=200):
     fig = plt.figure(figsize=(8, 8), dpi=dpi)
-    ax = fig.add_subplot(111, projection='3d')
+    ax = fig.add_subplot(111, projection='3d')
 
-    surf = ax.plot_surface(params['conc'],
-                           params['eta'],
+    surf = ax.plot_surface(params['conc'],
+                           params['eta'],
                            free_energy(**params),
                            alpha=0.7,
                            linewidth=0.2,
@@ -295,19 +343,19 @@ 

Figure 1: Free energy density sur cstride=5, antialiased=True) - cset = ax.contourf(params['conc'], - params['eta'], + cset = ax.contourf(params['conc'], + params['eta'], free_energy(**params), 30, - zdir='f', + zdir='f', offset=-0.5, cmap=cm.coolwarm) - ax.set_xlabel(r"Atomic fraction, $c$", fontsize=8) - ax.set_ylabel(r"Structural order parameter, $\eta$", fontsize=8) - ax.set_zlabel(r"Free energy density, $f$", fontsize=8) + ax.set_xlabel(r"Atomic fraction, $c$", fontsize=8) + ax.set_ylabel(r"Structural order parameter, $\eta$", fontsize=8) + ax.set_zlabel(r"Free energy density, $f$", fontsize=8) ax.set_zlim3d(-0.5, 1) - ax.tick_params(axis="both", which="major", labelsize=8) + ax.tick_params(axis="both", which="major", labelsize=8) #adjust camera settings ax.elev = 30 @@ -330,15 +378,24 @@

Figure 1: Free energy density sur plot_figure(params, dpi=50)

+
+
+ +
+
-
-No description has been provided for this image +Figure 1: Free energy density sur zgIWERER6WR0FrCIiIiINKYAKCIiItLJKACKiIiIdDIKgCIiIiKdzL85C7hZiwpFREREpG3TCKCI iIhIJ6MAKCIiItLJKACKiIiIdDIKgCIiIiKdjAKgiIiISCejACgiIiLSySgAioiIiHQyCoAiIiIi nYwCoIiIiEgn8z/dShcwkoWtWgAAAABJRU5ErkJggg== -"/> +" +>
+
+
+
-
+
+
-

Parameter values

+

Parameter values

-
+
+
+ + + + + + + + + + + + + + + @@ -2743,14 +2821,16 @@

Parameter values
-
+
+
-

Domain geometries and boundary conditions

+

Domain geometries and boundary conditions

-
+
+

Several boundary conditions, initial conditions and computational domain geometries are used to challenge different aspects of the numerical solver implementation. We test four combinations that are increasingly difficult to solve: two @@ -2766,149 +2846,189 @@

Domain geometries and boundar for the spherical surface, no boundary conditions are specified for it. Note that the same initial conditions are used for the square computational domains with no-flux, see (b), and periodic boundary conditions, see (a), such that when periodic boundary conditions are applied, there is a discontinuity in the initial condition at the domain boundaries.

+

-
+
+
-

(a) Square periodic

+

(a) Square periodic

-
+
+

A 2D square domain with $L_x = L_y = 200$ and periodic boundary conditions.

+
-
In [9]:
+
In [9]:
-
-
#PYTEST_VALIDATE_IGNORE_OUTPUT
+    
+
#PYTEST_VALIDATE_IGNORE_OUTPUT
 
-from IPython.display import SVG
+from IPython.display import SVG
 
 try:
-    out = SVG(filename='../images/block1.svg')
+    out = SVG(filename='../images/block1.svg')
 except:
     out = None
 out
 
+
+
+ +
+
Out[9]:
+ + +
-No description has been provided for this image +
Ly
Ly
Lx
Lx
+
+
+
-
+
+
-

(b) Square no-flux

+

(b) Square no-flux

-
+
+

A 2D square domain with $L_x = L_y = 200$ and no flux boundary conditions.

+
-
+
+
-

(c) T-shape

+

(c) T-shape

-
+
+

A T-shaped region with zero flux boundary conditions and with dimensions, $a=b=100$ and $c=d=20$.

+
-
In [8]:
+
In [8]:
-
-
#PYTEST_VALIDATE_IGNORE_OUTPUT
+    
+
#PYTEST_VALIDATE_IGNORE_OUTPUT
 
-from IPython.display import SVG
+from IPython.display import SVG
 
 try:
-    out = SVG(filename='../images/t-shape.svg')
+    out = SVG(filename='../images/t-shape.svg')
 except:
     out = None
 out
 
+
+
+ +
+
Out[8]:
+ + +
-No description has been provided for this image +
b
b
a
a
c
c
d
d
+
+
+
-
+
+
-

(d) Sphere

+

(d) Sphere

-
+
+

The domain is the surface of a sphere with radius 100.

+
-
+
+
-

Initial conditions

+

Initial conditions

-
+
+

The initial conditions are chosen such that the average value of $c$ over the computational domain is approximately $0.5$.

+
-
+
+
-

Initial conditions for (a), (b) and (c)

+

Initial conditions for (a), (b) and (c)

-
+
+

The initial value for $c$ on the square and "T" computational domains is -specified by +specified by $$ c\left(x,y\right) = c_{0}+\epsilon\left[\cos\left(0.105x\right)\cos\left(0.11y\right)+\left[\cos\left(0.13x\right)\cos\left(0.087y\right)\right]^{2}\right.\nonumber \\ @@ -2922,33 +3042,35 @@

Initial conditions for (a), (b) & \left.\left.\cos\left(\left(0.031+0.001i\right)x-\left(0.004+0.001i\right)y\right)\right]^{2}\right\} ^{2} \end{align*}

where $\epsilon_{\eta}$=0.1 and $\psi$=1.5.

+

-
+
+
-

Figure 2: initial $c$ for (a), (b) and (c)

+

Figure 2: initial $c$ for (a), (b) and (c)

-
In [4]:
+
In [4]:
-
-
#PYTEST_VALIDATE_IGNORE_OUTPUT
+    
+
#PYTEST_VALIDATE_IGNORE_OUTPUT
 
 import numpy as np
-from bokeh.plotting import figure, show, output_file, output_notebook, gridplot
-from bokeh.models import FixedTicker
+from bokeh.plotting import figure, show, output_file, output_notebook, gridplot
+from bokeh.models import FixedTicker
 output_notebook()
-from bokeh.palettes import brewer, RdBu11, Inferno256
-from bokeh.models.mappers import LinearColorMapper
+from bokeh.palettes import brewer, RdBu11, Inferno256
+from bokeh.models.mappers import LinearColorMapper
 import matplotlib as plt
 import matplotlib.cm as cm
 import numpy as np
-from bokeh.models import HoverTool, BoxSelectTool
+from bokeh.models import HoverTool, BoxSelectTool
 
 def generate_colorbar(mapper, width, height, n_ticks):
     high, low = mapper.high, mapper.low
@@ -3030,24 +3152,43 @@ 

Figure 2: initial $c$ for (a notebook_handle=True, browser=None);

+
+
+ +
+
-
-
- -Loading BokehJS ... -
+ + + +
+ +
+ + Loading BokehJS ... +
+ +
+
+
-
+ + + + + +
+
+
+
+
-
-
-
-
+ + + +
+ + +
+
+
+ +
+
+
+
-
+
+
-

Figure 3: initial $\eta_1$ for (a), (b) and (c)

+

Figure 3: initial $\eta_1$ for (a), (b) and (c)

-
In [5]:
+
In [5]:
-
-
#PYTEST_VALIDATE_IGNORE_OUTPUT
+    
+
#PYTEST_VALIDATE_IGNORE_OUTPUT
 
 def initial_eta(x, y, epsilon_eta=0.1, psi=1.5, i=1):
     eta = epsilon_eta * (np.cos(0.01 * i * x - 4) * np.cos((0.007 + 0.01 * i) * y) \
@@ -3355,17 +3509,27 @@ 

Figure 3: initial $\e notebook_handle=True, browser=None);

+
+
+ +
+
-
-
-
-
+ + + +
+ + +
+
+
+
+ +
+
+
-
+
+
-

Initial conditions for (d)

+

Initial conditions for (d)

-
+
+

The initial value of $c$ for the spherical computational domain is specified by $$ @@ -3529,27 +3699,29 @@

Initial conditions for (d)
-
+
+
-

Figure 4: initial $c$ for (d)

+

Figure 4: initial $c$ for (d)

-
In [8]:
+
In [8]:
-
+
+
-

Figure 5: initial $\eta_1$ for (d)

+

Figure 5: initial $\eta_1$ for (d)

-
In [9]:
+
In [9]:
-
-
def eta_func(x, y, z, epsilon_eta_sphere=0.1, psi=1.5, index=1):
+    
+
def eta_func(x, y, z, epsilon_eta_sphere=0.1, psi=1.5, index=1):
     r = np.sqrt(x**2 + y**2 + z**2)
     theta = np.arccos(z / r)
     phi = np.arctan(y / x)
@@ -5995,15 +6181,24 @@ 

Figure 5: initial $\eta_1$ for (d) plot_3d_sphere(eta_func)

+
+
+ +
+
-
-No description has been provided for this image +Figure 5: initial $\eta_1$ for (d) KAEAADQQSgAAAA2EEgAAQAOhBAAA0EAoAQAANBBKAAAADYQSAABAA6EEAADQQCgBAAA0EEoAAAAN hBIAAEADoQQAANBAKAEAADQQSgAAAA3+//Brzcf2uwAAAPgE4kQJAACggVACAABoIJQAAAAaCCUA AIAGQgkAAKCBUAIAAGgglAAAABoIJQAAgAZCCQAAoOG/AO2DNsJ8vkK8AAAAAElFTkSuQmCC -"/> +" +>
+
+
+
-
+
+
-

Submission Guidelines

Please follow these upload instructions.

+

Submission Guidelines

Please follow these upload instructions.

In addition to that specified, further data to upload can include a YouTube video, snapshots of the simulation at different times, or the field variable at each point in the entire domain at different times. This auxiliary data is not required, but will help others view your work.

-

Part (a)

Part (a) requires running the simulation to equilibrium, and the following data should be collected.

+

Part (a)

Part (a) requires running the simulation to equilibrium, and the following data should be collected.

  • The free energy integrated over the whole domain, $\mathcal{F}$, at each timestep.

    The free energy data should be recorded in a file named free_energy_2a.csv. This plain-text CSV file (comma-separated values) must have the following format -- note the column headings and lack of spaces, and that there is no requirement to fix the number of digits for each column or row.

    -
    csv
    +
    +
    csv
     time,free_energy
     0.0,6400.005
     5.000000001,6300.1
     ...
     10000,199.8753480000002
    -...
    -
    +...
  • The composition field, $c$, and each phase-field, $\eta_i$, at each grid point in the domain at the following times (aspirational):

      @@ -8378,45 +8578,42 @@

      Part (a)

    • 1,000,000

    You may provide this data in whatever format you consider "most useful," e.g. a checkpoint file in the format native to your phase-field simulation framework, and the PFHub operations team will attempt to handle it correctly. -Optionally, please consider also uploading a VTK ImageData file. If your mesh is unstructured or irregular, this will require appropriate interpolation prior to export. This can be accomplished using common scientific visualization software, e.g. using the PointVolumeInterpolator filter in ParaView.

    +Optionally, please consider also uploading a VTK ImageData file. If your mesh is unstructured or irregular, this will require appropriate interpolation prior to export. This can be accomplished using common scientific visualization software, e.g. using the PointVolumeInterpolator filter in ParaView.

    The names of these data files should encode the time and problem, e.g., raw_data_2a.0001000.vti, raw_data_2a.0010000.vti, raw_data_2a.0100000.vti, and raw_data_2a.1000000.vti.

-

: Any mention of commercial products within NIST web pages is for information only; it does not imply recommendation or endorsement by NIST.

-

Parts (b) through (d)

The same data as in Part (a) are required, stored in appropriately named files: please follow the same instructions, modifying "2a" with the appropriate letter ("2b", "2c", etc.).

+

: Any mention of commercial products within NIST web pages is for information only; it does not imply recommendation or endorsement by NIST.

+

Parts (b) through (d)

The same data as in Part (a) are required, stored in appropriately named files: please follow the same instructions, modifying "2a" with the appropriate letter ("2b", "2c", etc.).

+
-
+
+
-

Results

+

Results

-
+
+
-

Results from this benchmark problem are displayed on the [simulation result page]({{ site.baseurl }}/simulations) for different codes.

+

Results from this benchmark problem are displayed on the simulation result page for different codes.

+
-
-
-

Feedback

Feedback on this benchmark problem is appreciated. If you have questions, comments, or seek clarification, please contact the [CHiMaD phase field community]({{ site.baseurl/community/ }}) through the [Gitter chat channel]({{ site.links.chat }}) or by [email]({{ site.baseurl }}/mailing_list/). If you found an error, please file an [issue on GitHub]({{ site.links.github }}/issues/new).

-
-
-
-
-
In [ ]:
-
-
 
-
-
+
+

Feedback

Feedback on this benchmark problem is appreciated. If you have questions, comments, or seek clarification, please contact the CHiMaD phase field community through the Gitter chat channel or by email. If you found an error, please file an issue on GitHub.

+
+ + diff --git a/benchmarks/benchmark3.ipynb.raw.html b/benchmarks/benchmark3.ipynb.raw.html index a08362aed..5970e8502 100644 --- a/benchmarks/benchmark3.ipynb.raw.html +++ b/benchmarks/benchmark3.ipynb.raw.html @@ -1,34 +1,44 @@ +
-
In [2]:
+
In [2]:
-
-
from IPython.display import HTML
+    
+
from IPython.display import HTML
 
-HTML('''<script>
+HTML('''<script>
 code_show=true; 
 function code_toggle() {
  if (code_show){
- $('div.input').hide();
- $('div.prompt').hide();
+ $('div.input').hide();
+ $('div.prompt').hide();
  } else {
- $('div.input').show();
-$('div.prompt').show();
+ $('div.input').show();
+$('div.prompt').show();
  }
  code_show = !code_show
 } 
 $( document ).ready(code_toggle);
 </script>
-<form action="javascript:code_toggle()"><input type="submit" value="Code Toggle"></form>''')
+<form action="javascript:code_toggle()"><input type="submit" value="Code Toggle"></form>''')
 
+
+
+ +
+
Out[2]:
-
-
+
+
+
+
+
-
In [1]:
+
In [1]:
-
-
from IPython.display import HTML
-
-HTML('''
-<a href="{{ site.links.github }}/raw/master/benchmarks/benchmark3.ipynb"
-   download="benchmark3.ipynb">
-<button type="submit">Download Notebook</button>
-</a>''')
+    
+
from IPython.display import HTML
+
+HTML('''
+<a href="{{ site.links.github }}/raw/master/benchmarks/benchmark3.ipynb"
+   download="benchmark3.ipynb">
+<button type="submit">Download Notebook</button>
+</a>''')
 
+
+
+ +
+
Out[1]:
+ + + + +
+
+
+
-
+
+
-

Benchmark Problem 3: Dendritic Growth

+

Benchmark Problem 3: Dendritic Growth

-
In [4]:
+
In [4]:
-
-
from IPython.display import HTML
+    
+
from IPython.display import HTML
 
-HTML('''{% include jupyter_benchmark_table.html num="[3]" revision=1 %}''')
+HTML('''{% include jupyter_benchmark_table.html num="[3]" revision=1 %}''')
 
+
+
+ +
+
Out[4]:
-
{% include jupyter_benchmark_table.html num="[3]" revision=1 %}
+ + + +
+{% include jupyter_benchmark_table.html num="[3]" revision=1 %}
+
+
+
+
-
+
+

See the journal publication entitled "Phase Field Benchmark Problems for Dendritic Growth and Linear Elasticity" for more details about the benchmark problems. Furthermore, read the extended essay for a discussion about the need for benchmark problems.

+
-
+
+
-

Overview

Dendritic growth simulations are useful as benchmark problems being highly sensitive to both the phase field model formulation and the particular numerical implementation employed (see, for example, -[1, 2]). Historically, dendritic growth was one of the first applications of phase field modeling [3, 4], and remains a significant area of research today. Previous analyses of both the sharp [4, 5, 6, 7, 8] and thin interface limits [10, 1, 11, 12] have demonstrated that the diffuse-interface phase field formulation is asymptotically equivalent to the sharp-interface Stefan formulation. In 2001, the introduction of an "anti-trapping current" to correct for solute trapping due to the jump in chemical potential at the solid/liquid interface [13, 14] facilitated quantitative phase field modeling of alloy solidification using unphysically large diffuse interface widths. Today, massive increases in computing power and the advent of scientific computing on graphical processing units enable large-scale, quantitative 3D phase field simulations of growing dendrites (see, for example, [15, 16] and reviews [17, 18]).

+

Overview

Dendritic growth simulations are useful as benchmark problems being highly sensitive to both the phase field model formulation and the particular numerical implementation employed (see, for example, +[1, 2]). Historically, dendritic growth was one of the first applications of phase field modeling [3, 4], and remains a significant area of research today. Previous analyses of both the sharp [4, 5, 6, 7, 8] and thin interface limits [10, 1, 11, 12] have demonstrated that the diffuse-interface phase field formulation is asymptotically equivalent to the sharp-interface Stefan formulation. In 2001, the introduction of an "anti-trapping current" to correct for solute trapping due to the jump in chemical potential at the solid/liquid interface [13, 14] facilitated quantitative phase field modeling of alloy solidification using unphysically large diffuse interface widths. Today, massive increases in computing power and the advent of scientific computing on graphical processing units enable large-scale, quantitative 3D phase field simulations of growing dendrites (see, for example, [15, 16] and reviews [17, 18]).

+
-
+
+
-

Model Formulation

In this formulation, one order parameter, $\phi$, and one additional field variable, $U$, are evolved. The phase of the material is described by $\phi$, which takes a value of -1 in the liquid and +1 in the solid. In addition, the nondimensionalized temperature is indicated by $U$, +

Model Formulation

In this formulation, one order parameter, $\phi$, and one additional field variable, $U$, are evolved. The phase of the material is described by $\phi$, which takes a value of -1 in the liquid and +1 in the solid. In addition, the nondimensionalized temperature is indicated by $U$, \begin{equation} U=\frac{T-T_m}{L/c_p}, \end{equation} @@ -158,16 +205,17 @@

Model Formulation
-
+
+
-

Parameterization and simulation conditions

This section presents the specific details for the solidification and dendritic growth benchmark problem, including the model parameterization, initial conditions, boundary conditions, and computational domain size. The model is parameterized with dimensionless units, see the table below. While the diffuse interface width depends on orientation, it varies between four and five units, where the width is defined as the distance over which $-0.9 < \phi < 0.9$. The benchmark problem is formulated for two dimensions. To further reduce computational cost, we simulate one-quarter of a growing dendrite, as is commonly done in earlier works (e.g., Ref. [1, 2]). One-quarter of a solid seed with a radius of eight units (with the position of the interface defined as $\phi=0$) and a diffuse interface width of one unit is placed in the lower-left corner of the computational domain, surrounded by liquid. Initially, the entire system is uniformly undercooled with $U \left(t=0\right)=\Delta$. This undercooling is chosen to challenge numerical solvers somewhat because it increases the thermal diffusion length and requires a larger computational domain size relative to more negative undercoolings. We select a square computational domain of $(960 \textrm{ units})^2$, which is two times longer than the long dimension used in Ref. [1] for the same model parameterization. No-flux boundary conditions are chosen for $\phi$ and $U$ on all domain boundaries.

+

Parameterization and simulation conditions

This section presents the specific details for the solidification and dendritic growth benchmark problem, including the model parameterization, initial conditions, boundary conditions, and computational domain size. The model is parameterized with dimensionless units, see the table below. While the diffuse interface width depends on orientation, it varies between four and five units, where the width is defined as the distance over which $-0.9 < \phi < 0.9$. The benchmark problem is formulated for two dimensions. To further reduce computational cost, we simulate one-quarter of a growing dendrite, as is commonly done in earlier works (e.g., Ref. [1, 2]). One-quarter of a solid seed with a radius of eight units (with the position of the interface defined as $\phi=0$) and a diffuse interface width of one unit is placed in the lower-left corner of the computational domain, surrounded by liquid. Initially, the entire system is uniformly undercooled with $U \left(t=0\right)=\Delta$. This undercooling is chosen to challenge numerical solvers somewhat because it increases the thermal diffusion length and requires a larger computational domain size relative to more negative undercoolings. We select a square computational domain of $(960 \textrm{ units})^2$, which is two times longer than the long dimension used in Ref. [1] for the same model parameterization. No-flux boundary conditions are chosen for $\phi$ and $U$ on all domain boundaries.

$c_{\alpha}$ 0.3
$c_{\beta}$ 0.7
$\varrho$ $\sqrt{2}$
$\kappa_c$ 3
$\kappa_{\eta}$ 3
$M$ 5
$w$ 1
$\alpha$ 5
$L$ 5
$\epsilon$ 0.05
$c_0$ 0.5
$\epsilon_{sphere}$ 0.05
$\epsilon_{\eta}$ 0.1
$\psi$ 1.5
$\epsilon_{\eta}^{sphere}$ 0.1
- - + @@ -211,20 +259,24 @@

Parameterization and simulat

Quantity Symbol Value
+
-
+
+
-

Example Result at $t=1500$

dendrite

+

Example Result at $t=1500$

dendrite

+
-
+
+
-

Submission Guidelines

All solutions should be run to at least $t=1500$. The following data should be recorded as frequently as possible.

+

Submission Guidelines

All solutions should be run to at least $t=1500$. The following data should be recorded as frequently as possible.

  • The solid fraction in the domain (the integral of $\int_V \frac{\phi + 1}{2} \operatorname{d}V$)

  • @@ -234,54 +286,49 @@

    Submission Guidelines

These three values should be recorded in a file named timeseries_3.csv. This plain-text CSV file (comma-separated values) must have the following format -- note the column headings and lack of spaces, -and that there is no requirement to fix the number of digits for each column or row.

-
csv
-time,solid_fraction,free_energy,tip_position
-0.0,5.47e-5,2142078.02,7.9872
-50.00000001,0.00050023,2110276.50112,26.4273
-...
-1500,0.01872,1976882.3003,288.58
-
+ and that there is no requirement to fix the number of digits for each column or row.

+ +
csv
+  time,solid_fraction,free_energy,tip_position
+  0.0,5.47e-5,2142078.02,7.9872
+  50.00000001,0.00050023,2110276.50112,26.4273
+  ...
+  1500,0.01872,1976882.3003,288.58

In addition, the phase-field zero-level set contour at time $t=1500$ is required. The data should be named as phase_field_1500.csv and include just two columns: one for each coordinate, $x$ and $y$, along the contour where $\phi = 0$. The contour data should be in a sequence that enables an ordered traversal of the contour line. For example,

-
csv
-x,y
-7.625,0.0
-7.601,0.05
-...
-0.0,7.642
-
+ +
csv
+  x,y
+  7.625,0.0
+  7.601,0.05
+  ...
+  0.0,7.642

Finally, please provide a full snapshot of the fields at each grid point in the domain at the following times (aspirational):

  • 100
  • 500
  • 1,000
  • -
  • 1,500
  • -
+
  • 1,500

    You may provide this data in whatever format you consider "most useful," e.g. a checkpoint file in the format native to your phase-field simulation framework, and the PFHub operations team will attempt to handle it correctly. -Optionally, please consider also uploading a VTK ImageData file. If your mesh is unstructured or irregular, this will require appropriate interpolation prior to export. This can be accomplished using common scientific visualization software, e.g. using the PointVolumeInterpolator filter in ParaView.

    +Optionally, please consider also uploading a VTK ImageData file. If your mesh is unstructured or irregular, this will require appropriate interpolation prior to export. This can be accomplished using common scientific visualization software, e.g. using the PointVolumeInterpolator filter in ParaView.

    The names of these data files should encode the time and problem, e.g., raw_data_3.0100.vti, raw_data_3.0500.vti, raw_data_3.1000.vti, and raw_data_3.1500.vti.

    +
  • +

    Please follow these upload instructions.

    In addition to that specified, further data to upload can include a YouTube video, snapshots of the simulation at different times, or the field variable at each point in the entire domain at different times. This auxiliary data is not required, but will help others view your work.

    -

    : Any mention of commercial products within NIST web pages is for information only; it does not imply recommendation or endorsement by NIST.

    +

    : Any mention of commercial products within NIST web pages is for information only; it does not imply recommendation or endorsement by NIST.

    +
    -
    -
    -

    Results

    Results from this benchmark problem are displayed on the [simulation result page]({{ site.baseurl }}/simulations/3a.1) for different codes.

    -
    -
    -
    -
    -
    In [ ]:
    -
    -
     
    -
    -
    +
    +

    Results

    Results from this benchmark problem are displayed on the simulation result page for different codes.

    +
    + +