Skip to content

Add new CurlCurlSolve() to propagators#245

Open
Monoclod wants to merge 6 commits into
develfrom
curlcurl
Open

Add new CurlCurlSolve() to propagators#245
Monoclod wants to merge 6 commits into
develfrom
curlcurl

Conversation

@Monoclod
Copy link
Copy Markdown

@Monoclod Monoclod commented May 20, 2026

Add a new propagator called CurlCurlSolve() to find weak solutions to the curl-curl problem.

Find $\mathbf{E} \in H(\textnormal{curl},\Omega)$ such that

$$ \int_\Omega (\nabla \times \mathbf F) \cdot (\nabla \times \mathbf E)\ \textrm{d} \mathbf x - \sigma \int_\Omega \mathbf F \cdot \mathbf E\ \textrm d \mathbf x = \sum_i \int_\Omega \mathbf F \cdot \mathbf J _i\ \textrm d \mathbf x \qquad \forall \mathbf F \in H(\textnormal{curl}), $$

where $\mathbf J _i:\Omega \to \mathbb R^3$ is a real-valued vector field and $\sigma \in \mathbb R$ is a scalar.
Boundary terms from integration by parts are assumed to vanish.

The equation is discretized as

$$ \left( \mathbb C^\top \cdot \mathbb M^2 \cdot \mathbb C - \sigma \mathbb M^1 \right)\cdot \boldsymbol e^{n+1} =\sum_i \mathbb P^1 \cdot \boldsymbol J _i , $$

where $\mathbb M^1$ and $\mathbb M^2$ are objects of the struphy.feec.mass.WeightedMassOperators class, and $\mathbb P^1$ is the projector into the space $V^1_h$.

The method does not converge properly for sufficiently high spline degrees and sufficiently fine mesh grids due to the inherent ill-conditionedness of the curl-curl problem; this should be solved by proper initial conditioning.

This PR also adds tests for the new propagator.

@Monoclod Monoclod changed the title Curlcurl Add new CurlCurlSolve() to propagators May 20, 2026
@Monoclod
Copy link
Copy Markdown
Author

Propagator does not seem to reach the desired convergence rate for linear splines (even if it still converges and the rate is somewhat close) while the others all seem to work fine, so for the moment the test file does not test for spline degree p = 1.

@Monoclod Monoclod marked this pull request as ready for review May 22, 2026 10:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant