@@ -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