# ValueError: too many values to unpack (expected 2) in solver part

**URL:** <https://fenicsproject.discourse.group/t/valueerror-too-many-values-to-unpack-expected-2-in-solver-part/7432>\
**Category:** Linear Algebra\
**Created:** [January 7, 2022, 10:41am UTC](https://fenicsproject.discourse.group/t/valueerror-too-many-values-to-unpack-expected-2-in-solver-part/7432 "2022-01-07T10:41:45Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![adnan](https://avatars.discourse-cdn.com/v4/letter/a/f19dbf/32.png) [@adnan](https://fenicsproject.discourse.group/u/adnan)\
**Post date:** [January 7, 2022, 10:41am UTC](https://fenicsproject.discourse.group/t/valueerror-too-many-values-to-unpack-expected-2-in-solver-part/7432/1 "2022-01-07T10:41:45Z")

</div>

```auto
from fenics import *

import matplotlib.pyplot as plt

from IPython.display import HTML, display

import time

import random

def progress(value, max=100):

  return HTML("""

    Iterations: {value} of {max}

    <progress

    value='{value}'

    max='{max}',

    style='width: 100%'

     >

    {value}

    </progress>

    """.format(value=value, max=max))

class InitialConditions(UserExpression):

  def __init__ (self, **kwargs):

    random.seed(4 + MPI.rank(MPI.comm_world))

    super(). __init__ (**kwargs)

  def eval(self, values, x):

    values[0] = 0.00 

    values[1] = 0.00

    values[2] = 0.02*(0.5 - random.random())

    values[3] = 0.00

  def value_shape(self):

    return (4,)
class CahnHilliardEqaution(NonlinearProblem):

  def __init__ (self, a, Res):

    NonlinearProblem. __init__ (self)

    self.Res = Res

    self.a = a

  def F(self, b, x):

    assemble(self.Res, tensor=b)

  def J(self, A, x):

    assemble(self.a, tensor=A)

tau = 2.5e-1 #T / n_steps #delta 

A1=0.4

mesh = UnitSquareMesh(128,128)

FE = FiniteElement("P", mesh.ufl_cell(), 1) # scalar element

V = FunctionSpace(mesh,MixedElement([FE,FE,FE,FE])) # mixed space

q = Function(V)

dq =TrialFunction(V)

old_q = Function(V)

mu_phi,mu_qe,phi,qe = split(q)

dmu_phi,dmu_qe,dphi,dqe = split(dq)

old_mu_phi,old_mu_qe,old_phi,old_qe = split(old_q)

E = 0.5*inner(grad(phi),grad(phi))*dx + (phi*ln(phi))*dx 

Res = derivative(E, q, dq) - inner(mu_phi,dphi)*dx - inner(mu_qe,dqe)*dx 

a = derivative(Res, q, dq)

problem = CahnHilliardEqaution(a, Res)

solver = NewtonSolver()

q_init = InitialConditions()

q.interpolate(q_init)

old_q.interpolate(q_init)

file = File("output.pvd", "compressed")

t = 0.0

T = 50*tau

while (t < T):

    t += tau

    old_q.vector()[:] = q.vector()

    z=solver.solve(problem,q.vector())

```

 ![image](https://global.discourse-cdn.com/free1/uploads/fenicsproject1/original/2X/b/bd4d922d6ac6cf941d24bdc53414a89d1fe9e5ab.png)

---

<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:** [January 7, 2022, 10:44am UTC](https://fenicsproject.discourse.group/t/valueerror-too-many-values-to-unpack-expected-2-in-solver-part/7432/2 "2022-01-07T10:44:21Z")

</div>

Please follow the guidelines in [Read before posting: How do I get my question answered?](https://fenicsproject.discourse.group/t/read-before-posting-how-do-i-get-my-question-answered/21) when posting a question.

---

<div class="post-metadata">

**Author:** ![adnan](https://avatars.discourse-cdn.com/v4/letter/a/f19dbf/32.png) [@adnan](https://fenicsproject.discourse.group/u/adnan)\
**Post date:** [January 7, 2022, 10:48am UTC](https://fenicsproject.discourse.group/t/valueerror-too-many-values-to-unpack-expected-2-in-solver-part/7432/3 "2022-01-07T10:48:44Z")

</div>

Thank you!.  
I tried my best to minimize the code, but!!!  
Also, I am working on colab.

---

<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:** [January 7, 2022, 11:12am UTC](https://fenicsproject.discourse.group/t/valueerror-too-many-values-to-unpack-expected-2-in-solver-part/7432/4 "2022-01-07T11:12:16Z")

</div>

I cannot reproduce your problem.

> [@adnan](#):
>
> ```auto
> dq =TrialFunction(V)
> 
> old_q = Function(V)
> 
> mu_phi,mu_qe,phi,qe = split(q)
> 
> dmu_phi,dmu_qe,dphi,dqe = split(dq)
> 
> old_mu_phi,old_mu_qe,old_phi,old_qe = split(old_q)
> 
> E = 0.5*inner(grad(phi),grad(phi))*dx + (phi*ln(phi))*dx 
> 
> Res = derivative(E, q, dq) - inner(mu_phi,dphi)*dx - inner(mu_qe,dqe)*dx 
> 
> a = derivative(Res, q, dq)
> 
> ```

This is very unclear to me. What are you trying to compute here?  
You are differentiating in the direction of `dq` twice, which to me looks very odd.  
What is the energy functional you are trying to minimize?
