Dolfin version: 2019.1.0

How installed: manual commands from a source repository in terminal

System: Ubuntu 19.10

I am solving the heat equation on the unit square x [0, T] using space-time CGq method. Each subinterval [t_n, t_n+1] there are q coupled equations that need to be solved together to find the spatial coefficient functions. I then update the “initial” solution with the t_n+1 solution calculated prior. Rinse and repeat as necessary. To start I have to create a q dimensional vector element for the solution to the coupled equations, but the “initial” solution is located in a non-vector element space. I am having an issue updating my “initial” condition. When I use the command alpha_n.assign(alpha[-1]) it gives the following error.

RuntimeError: Expected a Function or linear combinations of Functions in the same FunctionSpace

This seems to me that the component function vector spaces are different than the vector spaces that I am using for u_n at the start and when I try to assign the new value it errors out due to the objects not lying in the same vector space.

I update in my code exactly the same as the following MWE. The issue is reproduced in the MWE. I would like a way to extract the information from my vector function, or to change the vector space that I use for my initial function.

#Create mesh.

mesh = UnitSquareMesh(10, 10)

#Number of subspaces in the function space.

num_spaces = 2

P = FiniteElement(‘CG’, triangle, 2)

#Initialize element array used to make the product vector element.

element_array = []

#For loop to create the array of elements that we will use to make our product vector element.

for i in range(num_spaces):

element_array.append( P)

#Create the vector element.

vector_element = MixedElement(element_array)

#Create Vector Function Space

V_mixed = FunctionSpace(mesh, vector_element)

#Create Single Vector Space

V_single = FunctionSpace(mesh, P)

#Create mixed and single functions.

f_mixed = Function(V_mixed)

f_single = Function(V_single)

#Attempt to update single function.

f_single.assign(f_mixed[-1])