Yes this is definitely possible.
You can use the SurfaceReactionBC to model this, where you can set the gas partial pressure for H2 and HT separately.
Here is an example in action:
import festim as F
import numpy as np
my_model = F.HydrogenTransportProblem()
protium = F.Species("H")
tritium = F.Species("T")
my_model.species = [protium, tritium]
my_model.mesh = F.Mesh1D(np.linspace(0, 1, 100))
left_surf = F.SurfaceSubdomain1D(id=1, x=0)
right_surf = F.SurfaceSubdomain1D(id=2, x=1)
# assumes the same diffusivity for all species
material = F.Material(D_0={protium: 1e-02, tritium: 8e-03}, E_D={protium: 0.0, tritium: 0.0})
vol = F.VolumeSubdomain1D(id=1, borders=[0, 1], material=material)
my_model.subdomains = [vol, left_surf, right_surf]
my_model.boundary_conditions = [
# Protium BCs
F.SurfaceReactionBC(
reactant=[protium, protium],
gas_pressure=100,
k_r0=0,
E_kr=0,
k_d0=1,
E_kd=0,
subdomain=left_surf,
),
F.SurfaceReactionBC(
reactant=[protium, tritium],
gas_pressure=100,
k_r0=0,
E_kr=0,
k_d0=0.8,
E_kd=0,
subdomain=left_surf,
),
]
my_model.temperature = 300
my_model.settings = F.Settings(atol=1e-10, rtol=1e-10, final_time=100)
my_model.settings.stepsize = F.Stepsize(1)
my_model.exports = [
F.VTXSpeciesExport(filename="protium_profile.bp", field=protium),
F.VTXSpeciesExport(filename="tritium_profile.bp", field=tritium),
]
my_model.initialise()
my_model.run()
Obviously, in this example, H comes from 2 sources: H2 and HT, and T comes only from HT. We also have different diffusion coefficients. However, a limitation is that it assumes the gas pressures remain constant, even if recombination values are included.
Hope this helps!