Skip to content

Commit c015df9

Browse files
committed
Fix robin form for dynamic problem
1 parent c25f1f4 commit c015df9

1 file changed

Lines changed: 7 additions & 33 deletions

File tree

src/pulse/problem.py

Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -479,47 +479,21 @@ def _acceleration_form(self, a: dolfinx.fem.Function):
479479
forms[0] += ufl.inner(rho * a, self.u_test) * self.geometry.dx
480480
return forms
481481

482-
def _robin_form(
483-
self,
484-
u: dolfinx.fem.Function,
485-
v: dolfinx.fem.Function | None = None,
486-
) -> list[dolfinx.fem.Form]:
487-
form = ufl.as_ufl(0.0)
482+
def _robin_form(self, u: dolfinx.fem.Function, v: dolfinx.fem.Function | None = None):
483+
forms = super()._robin_form(u)
484+
488485
N = self.geometry.facet_normal
489486

490487
for robin in self.bcs.robin:
491-
if robin.damping:
488+
if not robin.damping:
492489
# Should be applied to the velocity
493490
continue
491+
assert v is not None
494492
k = robin.value.to_base_units() * mesh_factor(str(self.parameters["mesh_unit"]))
495-
496-
if robin.perpendicular:
497-
nn = ufl.Identity(u.ufl_shape[0]) - ufl.outer(N, N)
498-
else:
499-
nn = ufl.outer(N, N)
500-
501-
value = k * nn * u
502-
form += -ufl.dot(value, self.u_test) * self.geometry.ds(robin.marker)
503-
504-
forms = self._empty_form()
505-
forms[0] += form
493+
value = ufl.inner(k * v, N)
494+
forms[0] += ufl.inner(value * self.u_test, N) * self.geometry.ds(robin.marker)
506495
return forms
507496

508-
# def _robin_form(self, u: dolfinx.fem.Function, v: dolfinx.fem.Function | None = None):
509-
# forms = super()._robin_form(u)
510-
511-
# N = self.geometry.facet_normal
512-
513-
# for robin in self.bcs.robin:
514-
# if not robin.damping:
515-
# # Should be applied to the velocity
516-
# continue
517-
# assert v is not None
518-
# k = robin.value.to_base_units() * mesh_factor(str(self.parameters["mesh_unit"]))
519-
# value = ufl.inner(k * v, N)
520-
# forms[0] += ufl.inner(value * self.u_test, N) * self.geometry.ds(robin.marker)
521-
# return forms
522-
523497
@property
524498
def R(self):
525499
# Order is always (u, cavity pressures, rigid body, p)

0 commit comments

Comments
 (0)