Hi,

Exception from the title is invoked by the following part of my code:

```
Xp = CoefficientFunction((x, y))
cf = (Xp - Xp.Other()) * contact.normal
integral_of_difference = Integrate(cf, mesh)
```

Hi,

Exception from the title is invoked by the following part of my code:

```
Xp = CoefficientFunction((x, y))
cf = (Xp - Xp.Other()) * contact.normal
integral_of_difference = Integrate(cf, mesh)
```

The .Other can only be used in `ContactBoundary`

(for now). If you want to compute this integral, you need to assemble or apply a BilinearForm right now.

Thank you for the answer, christoper.

Could you point me a bit on how to make this BilinearForm? I’ve tried with

```
X = CoefficientFunction((x, y))
gf1.Set(X)
b = BilinearForm(fes)
b += gf1 * u * ds(definedon=mesh.Boundaries(mesh_fun.bnds["Slave contact boundary string"]))
b += -gfu1 * u * ds(definedon=mesh.Boundaries(mesh_fun.bnds["Master contact boundary string"]))
```

and then for every calculated displacement gfu:

```
b.Apply(gfu.vec, res)
```

but doesn’t work.

Hi, no I mean one using the ContactBoundary from here: 6.2 Contact Problems — NGS-Py 6.2.2403 documentation

something like

```
cb = ContactBoundary(mesh.Boundaries("main"), mesh.Boundaries("secondary"))
cb.AddIntegrator((X - X.Other()) * v)
a = BilinearForm(fes)
cb.Update(gf=displacement, bf=a)
one = GridFunction(fes)
one.Set(1, defindon=mesh.Boundaries("main"))
tmp = one.vec.CreateVector()
a.Apply(displacement.vec, tmp2)
integral = InnerProduct(tmp2, one.vec)
```

(not tested, let me know if it works/not works)

It’s not really nice… We should add some nicer way to do this…

Thanky again, christoper. It works after I switched from integrator

```
cb.AddIntegrator((X - X.Other()) * v)
```

to energy formulation

```
cb.AddEnergy((X - X.Other()) * u)
```

It is however hard for me to check if resulting number is correct, so I tried to calculate element-by-element product instead of integral, with

```
mult.FV().NumPy()[:] = one.vec.FV().NumPy() * tmp.FV().NumPy()
```

Now I am struggling to figure out how to evaluate the grid function mult as NumPy array. Applying mult.FV().NumPy() gives me a huge vector for which I don’t know how to represent on mesh nodes. Can you help me there as well?