Greetings! I am working in a problem with complex-valued functions over a \mathbb R^2 domain. I would like to know if there is a direct way in Dolfinx of computing the L^2 norm of some function real and imaginary parts separately.
As suggested in the tutorials, I am actually computing the error between some exact solution uex
and a calculated us
as follows
error = us - uex
l2error = dolfinx.fem.form(ufl.inner(error,error) * ufl.ds)
squareerror = dolfinx.fem.assemble_scalar(l2error)
l2normerror = np.sqrt(squareerror)
In this case, error
is a complex function valued function. But, this computes the error of the whole function parts together. My question is if is there some way similar to the above for integrating the split error
real and imaginary parts.
For now, I am proceeding with this alternative:
error = us.x.array - uex.x.array
error_bdr = error[boundary_dofs_index_array]
err_array_real[i] = np.linalg.norm(error_bdr.real)
err_array_imag[i] = np.linalg.norm(error_bdr.imag)
However, this calculates the R^n norm instead of the L^2, which I’d wish to compute. If is there a direct way or an alternative, I’m thankful for knowing.