# Complex assembly

**URL:** <https://fenicsproject.discourse.group/t/complex-assembly/8102>\
**Category:** dolfinx\
**Created:** [April 20, 2022, 4:00pm UTC](https://fenicsproject.discourse.group/t/complex-assembly/8102 "2022-04-20T16:00:49Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![reckx\_sanchez](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/reckx_sanchez/32/3532_2.png) [@reckx\_sanchez](https://fenicsproject.discourse.group/u/reckx_sanchez)\
**Post date:** [April 20, 2022, 4:00pm UTC](https://fenicsproject.discourse.group/t/complex-assembly/8102/1 "2022-04-20T16:00:49Z")

</div>

Hello, I’m new in dolfinx and i would like to implement a complex bilinearform (sesquilinear) that looks like:

```auto
c=2+3j
a = fem.form(c*inner(grad(u),grad(v))*dx)

```

this is only an example. Is it possible?

DOLFINx version: 0.3.1.0

---

<div class="post-metadata">

**Author:** ![dokken](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/dokken/32/1560_2.png) [@dokken](https://fenicsproject.discourse.group/u/dokken)\
**Post date:** [April 20, 2022, 4:23pm UTC](https://fenicsproject.discourse.group/t/complex-assembly/8102/2 "2022-04-20T16:23:59Z")

</div>

Yes, this is possible. You need to use `dolfinx` that is compiled with the complex build of PETSc, which can be obtained by for instance using docker and the image `dolfinx/dolfinx`, and then call `source dolfinx-complex-mode`.

---

<div class="post-metadata">

**Author:** ![reckx\_sanchez](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/reckx_sanchez/32/3532_2.png) [@reckx\_sanchez](https://fenicsproject.discourse.group/u/reckx_sanchez)\
**Post date:** [April 20, 2022, 5:01pm UTC](https://fenicsproject.discourse.group/t/complex-assembly/8102/3 "2022-04-20T17:01:58Z")

</div>

Hello dokken, thank you for the help. I’have installed dolfinx from source on a Unix PC. How can I activate the complex build of PETSc in this case??

---

<div class="post-metadata">

**Author:** ![dokken](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/dokken/32/1560_2.png) [@dokken](https://fenicsproject.discourse.group/u/dokken)\
**Post date:** [April 20, 2022, 5:30pm UTC](https://fenicsproject.discourse.group/t/complex-assembly/8102/4 "2022-04-20T17:30:02Z")

</div>

Did you build petsc from source as well?

You need to set the `PETS_ARCH` to point to the complex build of PETSC, as done in: [dolfinx/Dockerfile at main · FEniCS/dolfinx · GitHub](https://github.com/FEniCS/dolfinx/blob/main/docker/Dockerfile#L426)

---

<div class="post-metadata">

**Author:** ![reckx\_sanchez](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/reckx_sanchez/32/3532_2.png) [@reckx\_sanchez](https://fenicsproject.discourse.group/u/reckx_sanchez)\
**Post date:** [April 21, 2022, 8:01am UTC](https://fenicsproject.discourse.group/t/complex-assembly/8102/5 "2022-04-21T08:01:03Z")

</div>

I did not install PETSC from source, I installed with Homebrew. But I’ve already found the complex build of PETSC in Homebrew and i’m installing it now. after that i guess i just have to reinstall dolfinx, right?  
Thank you Dokken for your help.

---

<div class="post-metadata">

**Author:** ![dokken](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/dokken/32/1560_2.png) [@dokken](https://fenicsproject.discourse.group/u/dokken)\
**Post date:** [April 21, 2022, 8:21am UTC](https://fenicsproject.discourse.group/t/complex-assembly/8102/6 "2022-04-21T08:21:53Z")

</div>

Yes, you would have to reinstall dolfinx. When calling `cmake` on the C++ interface you should see something like:

```bash
-- Checking for one of the modules 'PETSc>=3.15;petsc>=3.15'
-- Looking for PETSC_USE_COMPLEX
-- Looking for PETSC_USE_COMPLEX - found

```
