Skip to content

Commit

Permalink
Merge pull request #431 from sblauth/fix/quadrature_degree
Browse files Browse the repository at this point in the history
Use minimum fenics quadrature degree if specified
  • Loading branch information
sblauth committed May 17, 2024
2 parents f949197 + 032b3d3 commit 1d332c1
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
6 changes: 6 additions & 0 deletions cashocs/_forms/shape_form_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,12 @@ def _setup_assembler_failsafe(
ufl_algorithms.estimate_total_polynomial_degree(modified_scalar_product),
ufl_algorithms.estimate_total_polynomial_degree(shape_derivative),
)
fenics_quadrature_degree = fenics.parameters["form_compiler"][
"quadrature_degree"
]
if fenics_quadrature_degree is not None:
estimated_degree = np.minimum(estimated_degree, fenics_quadrature_degree)

assembler = fenics.SystemAssembler(
modified_scalar_product,
shape_derivative,
Expand Down
16 changes: 11 additions & 5 deletions cashocs/nonlinear_solvers/picard_solver.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,15 @@ def _create_homogenized_bcs(
return bcs_list_hom


def _enlist_picard(
obj: Optional[List[Union[T, None]]], length: int
) -> List[Union[T, None]]:
if obj is None:
return [None] * length
else:
return obj


def picard_iteration(
form_list: Union[List[ufl.form], ufl.Form],
u_list: Union[List[fenics.Function], fenics.Function],
Expand Down Expand Up @@ -143,12 +152,9 @@ def picard_iteration(
u_list = _utils.enlist(u_list)
bcs_list = _utils.check_and_enlist_bcs(bcs_list)
bcs_list_hom = _create_homogenized_bcs(bcs_list)
preconditioner_form_list = _utils.enlist(preconditioner_forms)

if newton_linearizations is None:
newton_linearization_list = [None] * len(u_list)
else:
newton_linearization_list = newton_linearizations
preconditioner_form_list = _enlist_picard(preconditioner_forms, len(u_list))
newton_linearization_list = _enlist_picard(newton_linearizations, len(u_list))

comm = u_list[0].function_space().mesh().mpi_comm()

Expand Down

0 comments on commit 1d332c1

Please sign in to comment.