Source code for festim.exports.trap_density_xdmf
from festim.exports.xdmf_export import XDMFExport
import fenics as f
[docs]
class TrapDensityXDMF(XDMFExport):
"""
Args:
trap (festim.Trap): the trap to export density
kwargs (): See XDMFExport
"""
def __init__(self, trap, **kwargs) -> None:
super().__init__(
field="1", **kwargs
) # field is "1" just to make the code not crash
self.trap = trap
[docs]
def write(self, t, dx):
"""Writes to file
Args:
t (float): the time
dx (fenics.Measure): the measure for dx
"""
functionspace = self.function.function_space().collapse()
u = f.Function(functionspace)
v = f.TestFunction(functionspace)
F = f.inner(u, v) * dx
for mat in self.trap.materials:
F -= f.inner(self.trap.density[0], v) * dx(mat.id)
f.solve(F == 0, u, bcs=[])
self.function = u
super().write(t)