Dear firedrake users, I try to solve a variational inequality using snes-firedrake. I have two unknown functions say (theta,w) so the functionspace is Vh = MixedFunctionSpace([Th,Wh]) where Th = FunctionSpace(mesh, "Lagrange", 1) Wh = FunctionSpace(mesh, "Lagrange", 2) the inequality constraint concerns only $w$ I set : obstacle = Function(Vh.sub(1)).interpolate((Constant(-0.03))) upper = Function(Vh.sub(1)).interpolate(Constant(1e10)) *solver.solve(bounds=(obstacle, upper)) * but this line causes the following error: File "/Users/maths/Desktop/Firedrake/VI/Timoshenko-obs.py", line 64, in <module> solver.solve(bounds=(obstacle, upper)) File "petsc4py/PETSc/Log.pyx", line 188, in petsc4py.PETSc.Log.EventDecorator.decorator.wrapped_func File "petsc4py/PETSc/Log.pyx", line 189, in petsc4py.PETSc.Log.EventDecorator.decorator.wrapped_func File "/Users/maths/firedrake/src/firedrake/firedrake/adjoint_utils/variational_solver.py", line 89, in wrapper out = solve(self, **kwargs) File "/Users/maths/firedrake/src/firedrake/firedrake/variational_solver.py", line 312, in solve self.snes.setVariableBounds(lb, ub) File "petsc4py/PETSc/SNES.pyx", line 1978, in petsc4py.PETSc.SNES.setVariableBounds petsc4py.PETSc.Error: error code 75 [0] SNESVISetVariableBounds() at /Users/maths/firedrake/src/petsc/src/snes/impls/vi/vi.c:424 [0] SNESVISetVariableBounds_VI() at /Users/maths/firedrake/src/petsc/src/snes/impls/vi/vi.c:443 [0] Arguments are incompatible [0] Incompatible vector lengths lower bound = 201 solution vector = 302 Hope that one can help me ... Best regards. Smail. On Fri, Apr 11, 2025 at 9:11 AM Smail Merabet <merabetsmail@gmail.com> wrote:
Dear firedrake users,
I try to solve a fourth-order 1d nonlinear problem using the Hermite element in firedrake. The functional space for the weak solution is: $$\mathcal{H}\times \mathcal{H}/times H^{2}_{0} $$ where, $$ \mathcal{H} = \left\lbrace f\in H^2([0,\ell]), \; f(0)=0, \; f'(0)=0 \right\rbrace. $$ I can't impose the boundary conditions correctly. When I compile the code, I get the following error: FiniteElement('Hermite', interval, 3), name=None, index=1, component=None), IndexedProxyFunctionSpace(<firedrake.mesh.MeshTopology object at 0x125a2ce80>, FiniteElement('Hermite', interval, 3), name=None, index=2, component=None), name='None_None_None'), Mesh(VectorElement(FiniteElement('Lagrange', interval, 1), dim=1), 0)), 9) defined on incompatible FunctionSpace!
Note the same problem was implemented using FEniCS with C0-interior penalty method, in the reference (sec. 3 eq 3.12-3.13):
Enhanced models for the nonlinear bending of planar rods: localization phenomena and multistability by: Matteo Brunetti , Antonino Favata and Stefano Vidoli.
I attached the codes to this email.
Thanks in advance Smail MERABET