Patrick Riesen wrote:
> Anders Logg wrote:
>> On Wed, Mar 11, 2009 at 10:21:52AM +0100, Patrick Riesen wrote:
>>>> hello
>>>>
>>>> So my Etafunction is now being correctly constructed and there are the 
>>>> correct values in the dof-vector(). i did this by a function class 
>>>> definition and a call to Eta as
>>>>
>>>>
>>>> class Eta: public Function
>>>> {
>>>>    Eta (Mesh& mesh, Function& gamma, Form& form, ...) : Function(mesh, 
>>>> form, argument_id)
>>>> { constructor....something as above }
>>>>
>>>> and then i call it as
>>>>
>>>> f_eta = new Eta(.....);
>>>>
>>>> in the main program.
>>>>
>>>> calling Eta as Function(mesh,form,id) i thought this should create a 
>>>> discrete function for f_eta, but the type of the f_eta function is 
>>>> 'user'. this gives me an error at the assembly, "missing eval() for 
>>>> user-defined function..."
>>>> do i have to add an dummy eval() function to my Eta-class, or what do i 
>>>> have to change that no eva()-missing error is raised and my f_eta 
>>>> function is of type discrete?
>>>>
>>>> thanks for your help,
>>>> patrick
>>>>
>>> sorry, i found an error, now the Eta is of type discrete (all 3 argument 
>>> functions of my form are now discrete). but the eval() error at assembly 
>>> of the form is still present.
>> Have you called vector() inside the constructor of Eta? That should
>> make it discrete and the assembler should not complain. Perhaps there
>> is some other function in you form that is missing an eval (or a
>> vector).
>>
>   hi anders,
> yes i did that, and now i found the error fortunately. i did not 
> initialize the bilinear form correctly with some placeholder function 
> for Eta. now the assembly is working, so i can go on.
> 
> thank you & regards,
> patrick

hi all
my code is now running but the Eta-funcs still give me some problems. i 
have initialized my bilinear/linear form with two constant functions as

f_eta = new Function(mesh, 1.)
f_Deta = new Function(mesh, 1.)

the first newton iteration gives me a newtonian solution from which i 
take the velocity to compute the invariant in another form (gamma) and 
then i construct the discussed functions Eta, DEta, and renew f_eta, 
f_Deta as

f_eta = new Eta(gamma,.....)
f_Deta = new DEta(gamma,......)


so i guess in the second iteration it will assemble with a variable 
viscosity as f_eta, f_Deta are different now but it just converges to 
the newtonian solution.

is this a problem, that i constructed the forms with a constant 
function? does dolfin then not consider the values in the vector() of 
the new discrete functions for f_eta, f_Deta after renewing?

thanks for your support,
patrick













_______________________________________________
DOLFIN-dev mailing list
[email protected]
http://www.fenics.org/mailman/listinfo/dolfin-dev

Reply via email to