# "BlockedDiscreteOperator" in Bempp-cl?

**URL:** <https://bempp.discourse.group/t/blockeddiscreteoperator-in-bempp-cl/211>\
**Category:** Uncategorized\
**Created:** [2 October 2023 16:01 UTC](https://bempp.discourse.group/t/blockeddiscreteoperator-in-bempp-cl/211 "2023-10-02T16:01:29Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jnick](https://avatars.discourse-cdn.com/v4/letter/j/48db29/32.png) [@jnick](https://bempp.discourse.group/u/jnick)\
**Post date:** [2 October 2023 16:01 UTC](https://bempp.discourse.group/t/blockeddiscreteoperator-in-bempp-cl/211/1 "2023-10-02T16:01:29Z")

</div>

Dear Bempp-cl team,

when attempting to port my code to bempp-cl, I found that the “bempp.api.BlockedDiscreteOperator” functionality is not directly implemented in the new version.

Do you have a recommendation on how to implement custom block operators without this function?

Thank you very much in advance for your help.

Best,  
Jörg

---

<div class="post-metadata">

**Author:** ![Elwin](https://yyz2.discourse-cdn.com/free1/user_avatar/bempp.discourse.group/elwin/32/38_2.png) [@Elwin](https://bempp.discourse.group/u/Elwin)\
**Post date:** [6 October 2023 13:47 UTC](https://bempp.discourse.group/t/blockeddiscreteoperator-in-bempp-cl/211/2 "2023-10-06T13:47:46Z")

</div>

Hi Jörg,

The bempp-cl library has similar functionality as bempp v3 for blocked operators but with slightly different syntax.

If we have

```auto
grid = bempp.api.shapes.regular_sphere(1)
space = bempp.api.function_space(grid, "DP", 0)
sl_op = bempp.api.operators.boundary.laplace.single_layer(space, space, space)
sl_wf = sl_op.weak_form()

```

a continous operator `sl_op` and a discrete operator `sl_wf` one can form blocked operators in two ways.

First, one can assembly a continuous blocked operator as

```auto
block_op = bempp.api.BlockedOperator(2,2)
block_op[0,0] = sl_op
block_op[1,1] = sl_op

```

and then calculate its weak form as `block_op.weak_form()`.

Second, one can assemble a discrete blocked operator as

```auto
block_wf = bempp.api.assembly.blocked_operator.BlockedDiscreteOperator([[sl_wf, sl_wf],[sl_wf, sl_wf]])

```

where you need to pass a list of lists with discrete operators.

Best,  
Elwin

---

<div class="post-metadata">

**Author:** ![jnick](https://avatars.discourse-cdn.com/v4/letter/j/48db29/32.png) [@jnick](https://bempp.discourse.group/u/jnick)\
**Post date:** [17 October 2023 11:34 UTC](https://bempp.discourse.group/t/blockeddiscreteoperator-in-bempp-cl/211/3 "2023-10-17T11:34:33Z")

</div>

Thank you Elwin, this has fixed the problem.

Best,  
Jörg
