dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #06012
Re: discrete function initialization
On Tue, Jan 15, 2008 at 10:08:10PM -0500, Jake Ostien wrote:
> Anders Logg wrote:
>> On Tue, Jan 15, 2008 at 03:29:27PM -0500, Jake Ostien wrote:
>>
>>> Firstly, I am trying to update my code to the latest version of DOLFIN
>>> (pulled today). I am getting an assertion error while trying to
>>> initialize a discrete vector (which obviously worked previously, say the
>>> 0.7.1 release).
>>> Here is the general flavor of what I am doing
>>>
>>> <In the constructor of a NonlinearProblem class>
>>>
>>> BilinearForm a;
>>> LinearForm L(f, g, h);
>>>
>>> Vector vec;
>>> Function func;
>>>
>>> func.init(mesh, vec, *L, 3);
>>>
>>
>> The last argument seems suspicious. You have a form with only three
>> arguments and you ask for the forth function space associated with the
>> form. If you want a Function corresponding to the h function, try with
>> a 2 instead.
>>
> DiscreteFunction::init computes num_arguments = form.rank() +
> form.num_coefficients() as a check. I read that as providing basically an
> offset (by the form rank) of the argument number. This previously worked
> for me, and I never argued with a success, even though the convention you
> imply is more intuitive.
>
> But now in the operator[], dof_map_set.size() only seems to be as large as
> the form rank. So taking my actual code (not an example) I have in my
> constructor
>
> < some stuff >
>
> a = new DGSGPaBilinearForm(tan, n, h, alpha, k, mu, lambda, plastic_flag);
>
> < some other stuff >
>
> plastic_flag.init(mesh, pflag_vec, *a, 9)
>
> which made sense if you take a rank two form (0,1) plus the arguments
> (2,3,4,5,6,7,8,9). After the update in the DofMapSet::operator[] method
> dof_map_set.size() is 2 and i is 9, so obviously the assertion fails. Now,
> curiously, when I go back and check the version I was using, I see
> different behavior, such that the operator[] is never called during
> construction. I'm confused about this, so I'll look some more, but I'm
> open to suggestions from anyone who knows the system better than me.
Does it work now?
--
Anders
Follow ups
References