Permeation barrier modelling#

In this task, we will model permeation barriers on tungsten and compute the associated Permeation Reduction Factor (PRF).

The PRF is the ratio of the steady state permeation flux without barriers by that of the case with barriers.

Objectives

  • Perform a multi-material simulation in 1D

  • Visualise concentration profiles in 1D

1) Model with barrier#

Let’s first create a model where tungsten is coated with 1 micron of barrier material on both sides.

import festim as F

model_barrier = F.Simulation()

Let’s create three Material instances for the three subdomains and assign it to model_barrier.materials.

Note:

By default, the solubility law of the materials is "sievert".

However, it can be changed by overriding the solubility_law argument to "henry"

barrier_thick = 1e-6
substrate_thick = 3e-3

barrier_left = F.Material(
    id=1,
    D_0=1e-8,
    E_D=0.39,
    S_0=1e22,
    E_S=1.04,
    borders=[0, barrier_thick]
    )

tungsten = F.Material(
    id=2,
    D_0=4.1e-7,
    E_D=0.39,
    S_0=1.87e24,
    E_S=1.04,
    borders=[barrier_thick, substrate_thick + barrier_thick]
    )

barrier_right = F.Material(
    id=3,
    D_0=1e-8,
    E_D=0.39,
    S_0=1e22,
    E_S=1.04,
    borders=[substrate_thick + barrier_thick, substrate_thick + 2 * barrier_thick]
    )

model_barrier.materials = [barrier_left, tungsten, barrier_right]

To avoid cells overlapping the domains boundaries, we create 3 lists of vertices.

import numpy as np

vertices_left = np.linspace(0, barrier_thick, num=50)

vertices_mid = np.linspace(
    barrier_thick, substrate_thick + barrier_thick, num=50)

vertices_right = np.linspace(substrate_thick + barrier_thick,
                             substrate_thick + 2*barrier_thick, num=50)

vertices = np.concatenate([vertices_left, vertices_mid, vertices_right])

model_barrier.mesh = F.MeshFromVertices(vertices)

The temperature is homogeneous across the domain.

model_barrier.T = 600

A Sievert’s boundary condition is applied on the left surface and the concentration is assumed to be zero on the right surface.

left_bc = F.SievertsBC(
    surfaces=1,
    S_0=barrier_left.S_0,
    E_S=barrier_left.E_S,
    pressure=100
    )

right_bc = F.DirichletBC(
    field="solute",
    surfaces=2,
    value=0
    )

model_barrier.boundary_conditions = [left_bc, right_bc]

For this task, we want to compute the permeation flux, that is the flux at the right surface.

We will also export the concentration profiles at three different times

folder = 'task04'

derived_quantities_with_barrier = F.DerivedQuantities([F.HydrogenFlux(surface=2)], show_units=True)

txt_export = F.TXTExport(
    field='solute',
    filename=folder + '/mobile.txt',
    times=[100, 17000, 8e5],
    )

model_barrier.exports = [derived_quantities_with_barrier, txt_export]

In order to ensure the conservation of chemical potential at interfaces, the argument chemical_pot=True has to be specified.

The reason it is fault by default is to save performance.

model_barrier.settings = F.Settings(
    absolute_tolerance=1e0,
    relative_tolerance=1e-09,
    final_time=8e5,
    chemical_pot=True,
)


model_barrier.dt = F.Stepsize(
    initial_value=5,
    stepsize_change_ratio=1.1,
    milestones=[100, 17000, 8e5]
)
model_barrier.initialise()
model_barrier.run()

Hide code cell output

Calling FFC just-in-time (JIT) compiler, this may take some time.
Calling FFC just-in-time (JIT) compiler, this may take some time.
Calling FFC just-in-time (JIT) compiler, this may take some time.
Calling FFC just-in-time (JIT) compiler, this may take some time.
Defining initial values
Calling FFC just-in-time (JIT) compiler, this may take some time.
Defining variational problem
Defining source terms
Defining boundary conditions
Time stepping...
Calling FFC just-in-time (JIT) compiler, this may take some time.
Calling FFC just-in-time (JIT) compiler, this may take some time.
0.0 %        5.0e+00 s    Elapsed time so far: 1.2 s
Calling FFC just-in-time (JIT) compiler, this may take some time.
Calling FFC just-in-time (JIT) compiler, this may take some time.
Calling FFC just-in-time (JIT) compiler, this may take some time.
Calling FFC just-in-time (JIT) compiler, this may take some time.
0.0 %        1.0e+01 s    Elapsed time so far: 3.2 s
0.0 %        1.7e+01 s    Elapsed time so far: 3.2 s
0.0 %        2.3e+01 s    Elapsed time so far: 3.2 s
0.0 %        3.1e+01 s    Elapsed time so far: 3.2 s
0.0 %        3.9e+01 s    Elapsed time so far: 3.2 s
0.0 %        4.7e+01 s    Elapsed time so far: 3.2 s
0.0 %        5.7e+01 s    Elapsed time so far: 3.2 s
0.0 %        6.8e+01 s    Elapsed time so far: 3.2 s
0.0 %        8.0e+01 s    Elapsed time so far: 3.2 s
0.0 %        9.3e+01 s    Elapsed time so far: 3.2 s
0.0 %        1.0e+02 s    Elapsed time so far: 3.2 s
Calling FFC just-in-time (JIT) compiler, this may take some time.
Calling FFC just-in-time (JIT) compiler, this may take some time.
0.0 %        1.1e+02 s    Elapsed time so far: 4.2 s
0.0 %        1.2e+02 s    Elapsed time so far: 4.2 s
0.0 %        1.3e+02 s    Elapsed time so far: 4.2 s
0.0 %        1.4e+02 s    Elapsed time so far: 4.2 s
0.0 %        1.5e+02 s    Elapsed time so far: 4.2 s
0.0 %        1.6e+02 s    Elapsed time so far: 4.2 s
0.0 %        1.8e+02 s    Elapsed time so far: 4.2 s
0.0 %        1.9e+02 s    Elapsed time so far: 4.2 s
0.0 %        2.1e+02 s    Elapsed time so far: 4.2 s
0.0 %        2.3e+02 s    Elapsed time so far: 4.2 s
0.0 %        2.5e+02 s    Elapsed time so far: 4.2 s
0.0 %        2.7e+02 s    Elapsed time so far: 4.2 s
0.0 %        3.0e+02 s    Elapsed time so far: 4.2 s
0.0 %        3.3e+02 s    Elapsed time so far: 4.2 s
0.0 %        3.6e+02 s    Elapsed time so far: 4.2 s
0.1 %        3.9e+02 s    Elapsed time so far: 4.2 s
0.1 %        4.3e+02 s    Elapsed time so far: 4.2 s
0.1 %        4.7e+02 s    Elapsed time so far: 4.3 s
0.1 %        5.1e+02 s    Elapsed time so far: 4.3 s
0.1 %        5.6e+02 s    Elapsed time so far: 4.3 s
0.1 %        6.2e+02 s    Elapsed time so far: 4.3 s
0.1 %        6.8e+02 s    Elapsed time so far: 4.3 s
0.1 %        7.4e+02 s    Elapsed time so far: 4.3 s
0.1 %        8.1e+02 s    Elapsed time so far: 4.3 s
0.1 %        8.9e+02 s    Elapsed time so far: 4.3 s
0.1 %        9.8e+02 s    Elapsed time so far: 4.3 s
0.1 %        1.1e+03 s    Elapsed time so far: 4.3 s
0.1 %        1.2e+03 s    Elapsed time so far: 4.3 s
0.2 %        1.3e+03 s    Elapsed time so far: 4.3 s
0.2 %        1.4e+03 s    Elapsed time so far: 4.3 s
0.2 %        1.6e+03 s    Elapsed time so far: 4.3 s
0.2 %        1.7e+03 s    Elapsed time so far: 4.3 s
0.2 %        1.9e+03 s    Elapsed time so far: 4.4 s
0.3 %        2.1e+03 s    Elapsed time so far: 4.4 s
0.3 %        2.3e+03 s    Elapsed time so far: 4.4 s
0.3 %        2.5e+03 s    Elapsed time so far: 4.4 s
0.3 %        2.8e+03 s    Elapsed time so far: 4.4 s
0.4 %        3.0e+03 s    Elapsed time so far: 4.4 s
0.4 %        3.3e+03 s    Elapsed time so far: 4.4 s
0.5 %        3.7e+03 s    Elapsed time so far: 4.4 s
0.5 %        4.0e+03 s    Elapsed time so far: 4.4 s
0.6 %        4.4e+03 s    Elapsed time so far: 4.4 s
0.6 %        4.9e+03 s    Elapsed time so far: 4.4 s
0.7 %        5.4e+03 s    Elapsed time so far: 4.4 s
0.7 %        5.9e+03 s    Elapsed time so far: 4.4 s
0.8 %        6.5e+03 s    Elapsed time so far: 4.4 s
0.9 %        7.1e+03 s    Elapsed time so far: 4.4 s
1.0 %        7.9e+03 s    Elapsed time so far: 4.4 s
1.1 %        8.6e+03 s    Elapsed time so far: 4.4 s
1.2 %        9.5e+03 s    Elapsed time so far: 4.4 s
1.3 %        1.0e+04 s    Elapsed time so far: 4.5 s
1.4 %        1.1e+04 s    Elapsed time so far: 4.5 s
1.6 %        1.3e+04 s    Elapsed time so far: 4.5 s
1.7 %        1.4e+04 s    Elapsed time so far: 4.5 s
1.9 %        1.5e+04 s    Elapsed time so far: 4.5 s
2.1 %        1.7e+04 s    Elapsed time so far: 4.5 s
2.1 %        1.7e+04 s    Elapsed time so far: 4.5 s
2.1 %        1.7e+04 s    Elapsed time so far: 4.5 s
2.2 %        1.7e+04 s    Elapsed time so far: 4.5 s
2.2 %        1.8e+04 s    Elapsed time so far: 4.5 s
2.2 %        1.8e+04 s    Elapsed time so far: 4.5 s
2.3 %        1.8e+04 s    Elapsed time so far: 4.5 s
2.3 %        1.9e+04 s    Elapsed time so far: 4.5 s
2.4 %        1.9e+04 s    Elapsed time so far: 4.5 s
2.4 %        1.9e+04 s    Elapsed time so far: 4.5 s
2.5 %        2.0e+04 s    Elapsed time so far: 4.5 s
2.5 %        2.0e+04 s    Elapsed time so far: 4.5 s
2.6 %        2.1e+04 s    Elapsed time so far: 4.6 s
2.6 %        2.1e+04 s    Elapsed time so far: 4.6 s
2.7 %        2.2e+04 s    Elapsed time so far: 4.6 s
2.8 %        2.3e+04 s    Elapsed time so far: 4.6 s
2.9 %        2.3e+04 s    Elapsed time so far: 4.6 s
3.0 %        2.4e+04 s    Elapsed time so far: 4.6 s
3.1 %        2.5e+04 s    Elapsed time so far: 4.6 s
3.2 %        2.6e+04 s    Elapsed time so far: 4.6 s
3.4 %        2.7e+04 s    Elapsed time so far: 4.6 s
3.5 %        2.8e+04 s    Elapsed time so far: 4.6 s
3.7 %        3.0e+04 s    Elapsed time so far: 4.6 s
3.9 %        3.1e+04 s    Elapsed time so far: 4.6 s
4.1 %        3.3e+04 s    Elapsed time so far: 4.6 s
4.3 %        3.5e+04 s    Elapsed time so far: 4.6 s
4.6 %        3.6e+04 s    Elapsed time so far: 4.6 s
4.8 %        3.9e+04 s    Elapsed time so far: 4.6 s
5.1 %        4.1e+04 s    Elapsed time so far: 4.6 s
5.5 %        4.4e+04 s    Elapsed time so far: 4.6 s
5.8 %        4.6e+04 s    Elapsed time so far: 4.7 s
6.2 %        5.0e+04 s    Elapsed time so far: 4.7 s
6.6 %        5.3e+04 s    Elapsed time so far: 4.7 s
7.1 %        5.7e+04 s    Elapsed time so far: 4.7 s
7.6 %        6.1e+04 s    Elapsed time so far: 4.7 s
8.2 %        6.6e+04 s    Elapsed time so far: 4.7 s
8.8 %        7.1e+04 s    Elapsed time so far: 4.7 s
9.5 %        7.6e+04 s    Elapsed time so far: 4.7 s
10.3 %        8.2e+04 s    Elapsed time so far: 4.7 s
11.1 %        8.9e+04 s    Elapsed time so far: 4.7 s
12.1 %        9.7e+04 s    Elapsed time so far: 4.7 s
13.1 %        1.0e+05 s    Elapsed time so far: 4.7 s
14.2 %        1.1e+05 s    Elapsed time so far: 4.7 s
15.4 %        1.2e+05 s    Elapsed time so far: 4.7 s
16.8 %        1.3e+05 s    Elapsed time so far: 4.7 s
18.3 %        1.5e+05 s    Elapsed time so far: 4.7 s
19.9 %        1.6e+05 s    Elapsed time so far: 4.7 s
21.7 %        1.7e+05 s    Elapsed time so far: 4.7 s
23.7 %        1.9e+05 s    Elapsed time so far: 4.8 s
25.9 %        2.1e+05 s    Elapsed time so far: 4.8 s
28.3 %        2.3e+05 s    Elapsed time so far: 4.8 s
31.0 %        2.5e+05 s    Elapsed time so far: 4.8 s
33.9 %        2.7e+05 s    Elapsed time so far: 4.8 s
37.1 %        3.0e+05 s    Elapsed time so far: 4.8 s
40.6 %        3.2e+05 s    Elapsed time so far: 4.8 s
44.5 %        3.6e+05 s    Elapsed time so far: 4.8 s
48.7 %        3.9e+05 s    Elapsed time so far: 4.8 s
53.4 %        4.3e+05 s    Elapsed time so far: 4.8 s
58.5 %        4.7e+05 s    Elapsed time so far: 4.8 s
64.2 %        5.1e+05 s    Elapsed time so far: 4.8 s
70.5 %        5.6e+05 s    Elapsed time so far: 4.8 s
77.3 %        6.2e+05 s    Elapsed time so far: 4.8 s
84.8 %        6.8e+05 s    Elapsed time so far: 4.8 s
93.1 %        7.5e+05 s    Elapsed time so far: 4.8 s
100.0 %        8.0e+05 s    Elapsed time so far: 4.8 s

We can plot the concentration profiles at different times and notice the jump of concentrations at interfaces:

import matplotlib.pyplot as plt

fig, axs = plt.subplots(nrows=1, ncols=3, sharey=True)
data = np.genfromtxt(folder + f"/mobile.txt", skip_header=1, delimiter=",")
data = data[data[:, 0].argsort()]  # make sure data is sorted

xlim_left = (0, barrier_thick * 1.2)
xlim_mid = (None, None)
xlim_right = (substrate_thick, substrate_thick + 2 * barrier_thick)

for ax, xlim in zip(
    axs,
    [xlim_left, xlim_mid, xlim_right],
):
    plt.sca(ax)
    for i, time in enumerate(txt_export.times):
        plt.plot(data[:, 0], data[:, i + 1], label=f"{time:.0f} s")

    plt.xlabel("Depth (m)")
    plt.xlim(*xlim)

axs[0].set_yscale("log")
axs[0].set_ylim(bottom=1e12)
axs[0].set_ylabel("Mobile H concentration (H/m$^3$)")
axs[0].set_title("zoom left")
axs[2].set_title("zoom right")
axs[0].legend(reverse=True)
plt.show()
../_images/db56aa1472c53ee201dcc1b12ab06ec8239fbfc3a3a27478f214335fa816187e.png

2) Model without barrier#

We can also run the equivalent model without permeation barriers with bare tungsten. Let’s make a few modifications:

model_no_barrier = F.Simulation()

tungsten.id = 1
tungsten.borders = [0, 3e-3]
model_no_barrier.materials = [tungsten]

# new mesh
model_no_barrier.mesh = F.MeshFromVertices(np.linspace(1e-6, 3e-3, num=50))

# change the solubility of the Sievert's condition
left_bc.S_0 = tungsten.S_0
left_bc.E_S = tungsten.E_S

model_no_barrier.T = model_barrier.T
model_no_barrier.boundary_conditions = model_barrier.boundary_conditions

model_no_barrier.settings = model_barrier.settings
model_no_barrier.settings.chemical_pot = False  # no need for chemical potential anymore!

model_no_barrier.dt = model_barrier.dt

derived_quantities_without_barrier = F.DerivedQuantities([F.HydrogenFlux(surface=2)], show_units=True)

model_no_barrier.exports = [derived_quantities_without_barrier]

model_no_barrier.initialise()
model_no_barrier.run()

Hide code cell output

Defining initial values
Defining variational problem
Defining source terms
Defining boundary conditions
Time stepping...
Calling FFC just-in-time (JIT) compiler, this may take some time.
Calling FFC just-in-time (JIT) compiler, this may take some time.
0.0 %        5.0e+00 s    Elapsed time so far: 1.0 s
0.0 %        1.0e+01 s    Elapsed time so far: 1.0 s
0.0 %        1.7e+01 s    Elapsed time so far: 1.0 s
0.0 %        2.3e+01 s    Elapsed time so far: 1.0 s
0.0 %        3.1e+01 s    Elapsed time so far: 1.0 s
0.0 %        3.9e+01 s    Elapsed time so far: 1.0 s
0.0 %        4.7e+01 s    Elapsed time so far: 1.0 s
0.0 %        5.7e+01 s    Elapsed time so far: 1.0 s
0.0 %        6.8e+01 s    Elapsed time so far: 1.0 s
0.0 %        8.0e+01 s    Elapsed time so far: 1.0 s
0.0 %        9.3e+01 s    Elapsed time so far: 1.0 s
0.0 %        1.0e+02 s    Elapsed time so far: 1.0 s
0.0 %        1.1e+02 s    Elapsed time so far: 1.0 s
0.0 %        1.2e+02 s    Elapsed time so far: 1.0 s
0.0 %        1.3e+02 s    Elapsed time so far: 1.1 s
0.0 %        1.4e+02 s    Elapsed time so far: 1.1 s
0.0 %        1.5e+02 s    Elapsed time so far: 1.1 s
0.0 %        1.6e+02 s    Elapsed time so far: 1.1 s
0.0 %        1.8e+02 s    Elapsed time so far: 1.1 s
0.0 %        1.9e+02 s    Elapsed time so far: 1.1 s
0.0 %        2.1e+02 s    Elapsed time so far: 1.1 s
0.0 %        2.3e+02 s    Elapsed time so far: 1.1 s
0.0 %        2.5e+02 s    Elapsed time so far: 1.1 s
0.0 %        2.7e+02 s    Elapsed time so far: 1.1 s
0.0 %        3.0e+02 s    Elapsed time so far: 1.1 s
0.0 %        3.3e+02 s    Elapsed time so far: 1.1 s
0.0 %        3.6e+02 s    Elapsed time so far: 1.1 s
0.1 %        3.9e+02 s    Elapsed time so far: 1.1 s
0.1 %        4.3e+02 s    Elapsed time so far: 1.1 s
0.1 %        4.7e+02 s    Elapsed time so far: 1.1 s
0.1 %        5.1e+02 s    Elapsed time so far: 1.1 s
0.1 %        5.6e+02 s    Elapsed time so far: 1.1 s
0.1 %        6.2e+02 s    Elapsed time so far: 1.1 s
0.1 %        6.8e+02 s    Elapsed time so far: 1.1 s
0.1 %        7.4e+02 s    Elapsed time so far: 1.1 s
0.1 %        8.1e+02 s    Elapsed time so far: 1.1 s
0.1 %        8.9e+02 s    Elapsed time so far: 1.1 s
0.1 %        9.8e+02 s    Elapsed time so far: 1.1 s
0.1 %        1.1e+03 s    Elapsed time so far: 1.1 s
0.1 %        1.2e+03 s    Elapsed time so far: 1.1 s
0.2 %        1.3e+03 s    Elapsed time so far: 1.1 s
0.2 %        1.4e+03 s    Elapsed time so far: 1.1 s
0.2 %        1.6e+03 s    Elapsed time so far: 1.1 s
0.2 %        1.7e+03 s    Elapsed time so far: 1.1 s
0.2 %        1.9e+03 s    Elapsed time so far: 1.1 s
0.3 %        2.1e+03 s    Elapsed time so far: 1.1 s
0.3 %        2.3e+03 s    Elapsed time so far: 1.1 s
0.3 %        2.5e+03 s    Elapsed time so far: 1.1 s
0.3 %        2.8e+03 s    Elapsed time so far: 1.1 s
0.4 %        3.0e+03 s    Elapsed time so far: 1.1 s
0.4 %        3.3e+03 s    Elapsed time so far: 1.1 s
0.5 %        3.7e+03 s    Elapsed time so far: 1.2 s
0.5 %        4.0e+03 s    Elapsed time so far: 1.2 s
0.6 %        4.4e+03 s    Elapsed time so far: 1.2 s
0.6 %        4.9e+03 s    Elapsed time so far: 1.2 s
0.7 %        5.4e+03 s    Elapsed time so far: 1.2 s
0.7 %        5.9e+03 s    Elapsed time so far: 1.2 s
0.8 %        6.5e+03 s    Elapsed time so far: 1.2 s
0.9 %        7.1e+03 s    Elapsed time so far: 1.2 s
1.0 %        7.9e+03 s    Elapsed time so far: 1.2 s
1.1 %        8.6e+03 s    Elapsed time so far: 1.2 s
1.2 %        9.5e+03 s    Elapsed time so far: 1.2 s
1.3 %        1.0e+04 s    Elapsed time so far: 1.2 s
1.4 %        1.1e+04 s    Elapsed time so far: 1.2 s
1.6 %        1.3e+04 s    Elapsed time so far: 1.2 s
1.7 %        1.4e+04 s    Elapsed time so far: 1.2 s
1.9 %        1.5e+04 s    Elapsed time so far: 1.2 s
2.1 %        1.7e+04 s    Elapsed time so far: 1.2 s
2.1 %        1.7e+04 s    Elapsed time so far: 1.2 s
2.1 %        1.7e+04 s    Elapsed time so far: 1.2 s
2.2 %        1.7e+04 s    Elapsed time so far: 1.2 s
2.2 %        1.8e+04 s    Elapsed time so far: 1.2 s
2.2 %        1.8e+04 s    Elapsed time so far: 1.2 s
2.3 %        1.8e+04 s    Elapsed time so far: 1.2 s
2.3 %        1.9e+04 s    Elapsed time so far: 1.2 s
2.4 %        1.9e+04 s    Elapsed time so far: 1.2 s
2.4 %        1.9e+04 s    Elapsed time so far: 1.2 s
2.5 %        2.0e+04 s    Elapsed time so far: 1.2 s
2.5 %        2.0e+04 s    Elapsed time so far: 1.2 s
2.6 %        2.1e+04 s    Elapsed time so far: 1.2 s
2.6 %        2.1e+04 s    Elapsed time so far: 1.2 s
2.7 %        2.2e+04 s    Elapsed time so far: 1.2 s
2.8 %        2.3e+04 s    Elapsed time so far: 1.2 s
2.9 %        2.3e+04 s    Elapsed time so far: 1.2 s
3.0 %        2.4e+04 s    Elapsed time so far: 1.2 s
3.1 %        2.5e+04 s    Elapsed time so far: 1.2 s
3.2 %        2.6e+04 s    Elapsed time so far: 1.2 s
3.4 %        2.7e+04 s    Elapsed time so far: 1.2 s
3.5 %        2.8e+04 s    Elapsed time so far: 1.2 s
3.7 %        3.0e+04 s    Elapsed time so far: 1.2 s
3.9 %        3.1e+04 s    Elapsed time so far: 1.2 s
4.1 %        3.3e+04 s    Elapsed time so far: 1.2 s
4.3 %        3.5e+04 s    Elapsed time so far: 1.2 s
4.6 %        3.6e+04 s    Elapsed time so far: 1.2 s
4.8 %        3.9e+04 s    Elapsed time so far: 1.3 s
5.1 %        4.1e+04 s    Elapsed time so far: 1.3 s
5.5 %        4.4e+04 s    Elapsed time so far: 1.3 s
5.8 %        4.6e+04 s    Elapsed time so far: 1.3 s
6.2 %        5.0e+04 s    Elapsed time so far: 1.3 s
6.6 %        5.3e+04 s    Elapsed time so far: 1.3 s
7.1 %        5.7e+04 s    Elapsed time so far: 1.3 s
7.6 %        6.1e+04 s    Elapsed time so far: 1.3 s
8.2 %        6.6e+04 s    Elapsed time so far: 1.3 s
8.8 %        7.1e+04 s    Elapsed time so far: 1.3 s
9.5 %        7.6e+04 s    Elapsed time so far: 1.3 s
10.3 %        8.2e+04 s    Elapsed time so far: 1.3 s
11.1 %        8.9e+04 s    Elapsed time so far: 1.3 s
12.1 %        9.7e+04 s    Elapsed time so far: 1.3 s
13.1 %        1.0e+05 s    Elapsed time so far: 1.3 s
14.2 %        1.1e+05 s    Elapsed time so far: 1.3 s
15.4 %        1.2e+05 s    Elapsed time so far: 1.3 s
16.8 %        1.3e+05 s    Elapsed time so far: 1.3 s
18.3 %        1.5e+05 s    Elapsed time so far: 1.3 s
19.9 %        1.6e+05 s    Elapsed time so far: 1.3 s
21.7 %        1.7e+05 s    Elapsed time so far: 1.3 s
23.7 %        1.9e+05 s    Elapsed time so far: 1.3 s
25.9 %        2.1e+05 s    Elapsed time so far: 1.3 s
28.3 %        2.3e+05 s    Elapsed time so far: 1.3 s
31.0 %        2.5e+05 s    Elapsed time so far: 1.3 s
33.9 %        2.7e+05 s    Elapsed time so far: 1.3 s
37.1 %        3.0e+05 s    Elapsed time so far: 1.3 s
40.6 %        3.2e+05 s    Elapsed time so far: 1.3 s
44.5 %        3.6e+05 s    Elapsed time so far: 1.3 s
48.7 %        3.9e+05 s    Elapsed time so far: 1.3 s
53.4 %        4.3e+05 s    Elapsed time so far: 1.3 s
58.5 %        4.7e+05 s    Elapsed time so far: 1.3 s
64.2 %        5.1e+05 s    Elapsed time so far: 1.3 s
70.5 %        5.6e+05 s    Elapsed time so far: 1.3 s
77.3 %        6.2e+05 s    Elapsed time so far: 1.3 s
84.8 %        6.8e+05 s    Elapsed time so far: 1.3 s
93.1 %        7.5e+05 s    Elapsed time so far: 1.3 s
100.0 %        8.0e+05 s    Elapsed time so far: 1.4 s

3) Calculate the PRF#

We can plot the temporal evolution of permeation flux with or without permeation barriers:

t_with_barrier = derived_quantities_with_barrier.t
permeation_flux_with_barrier = derived_quantities_with_barrier.filter(surfaces=2, fields="solute").data
permeation_flux_with_barrier = -np.array(permeation_flux_with_barrier)

t_without_barrier = derived_quantities_without_barrier.t
permeation_flux_no_barrier = derived_quantities_without_barrier.filter(surfaces=2, fields="solute").data
permeation_flux_no_barrier = -np.array(permeation_flux_no_barrier)

plt.figure()

plt.plot(t_without_barrier, permeation_flux_no_barrier, label="without barrier")
plt.plot(t_with_barrier, permeation_flux_with_barrier, label="with barrier")

plt.xscale("log")
plt.legend()
plt.xlabel("Time (s)")
plt.ylabel("Permeation flux (H/m2/s)")
plt.show()
../_images/7f5a2df39a3508f77d7827102801e423541b1d81de1975e83a3c4f03ade5cda8.png

Clearly, having the coating on both sides reduces the permeation flux!

Moreover, it can be shown that the PRF of this configuration is:

\[\mathrm{PRF} = 1 + 2 \alpha \beta \gamma\]

With

\[\alpha = D_\mathrm{substrate} / D_\mathrm{barrier} \]
\[\beta = S_\mathrm{substrate} / S_\mathrm{barrier} \]
\[\gamma = e_\mathrm{barrier} / e_\mathrm{substrate} \]

We can compare the computed PRF to the theory.

computed_PRF = permeation_flux_no_barrier[-1]/permeation_flux_with_barrier[-1]

diff_ratio = tungsten.D_0/barrier_left.D_0
sol_ratio = tungsten.S_0/barrier_left.S_0
length_ratio = barrier_thick/substrate_thick

theoretical_PRF = 1 + 2 * diff_ratio*sol_ratio*length_ratio

print(f"Theoretical PRF = {theoretical_PRF:.4f}")
print(f"Computed PRF = {computed_PRF:.4f}")
print(f"Error = {(computed_PRF - theoretical_PRF)/theoretical_PRF:.2%}")
Theoretical PRF = 6.1113
Computed PRF = 6.1135
Error = 0.03%

Question#

Will adding traps to the simulation change the value of the PRF?

Show solution
No. The PRF is a measure of the flux of mobile particles and is computed at steady state.

At steady state, the McNabb & Foster model states that the concentration of mobile particle is independent of the trapped concentration.

Therefore, the steady state PRF is independent of trapping.