I actually tried it, but the problem was that u was declared as a
fem_variable and not fem_data and getfem kept telling me "Cannot derive
function sign. No derivative provided or not derivable function."
Could you explain this behaviour to me? I would like to understand what
happens when u is declared as a variable.
Thank you for your help and kindness.
Best,
Eloi.

Le ven. 30 sept. 2022 à 11:16, Konstantinos Poulios <logar...@googlemail.com>
a écrit :

> ok, what you are doing is equivalent to
>
> grad_norm = gf.asm_generic(self.IM, 1, "(2+2*p)*sign(u)*pow(abs(u),
> 1+2*p)*Test_phi", -1, md)
>
> This is the definition of assembling a residual vector, assembling the
> product with each basis function.
>
> BR
> Kostas
>
> On Fri, Sep 30, 2022 at 10:01 AM Eloi Martinet <eloi.marti...@gmail.com>
> wrote:
>
>> Hello,
>> Here is what I do currently :
>>
>> md = gf.Model("real")
>> md.add_fem_variable("u", self.V)
>> md.add_fem_variable("phi", self.V) # Represents a basis function
>> md.add_data("p", 1)
>> md.set_variable("p", p)
>> md.set_variable("u", u)
>>
>> grad_norm = np.zeros(nbdof_V)
>>
>> for i in tqdm(range(nbdof_V)):
>>             phi = np.zeros(self.nbdof_V)
>>             phi[i] = 1
>>             self.md.set_variable("phi", phi)
>>
>>             grad_norm[i] = (2+2*p)*gf.asm_generic(self.IM, 0,
>> "sign(u)*pow(abs(u), 1+2*p)*phi", -1, md)
>>
>> Sorry I should have included this snippet from the beginning.
>> Have a great day.
>> Best,
>> Eloi.
>>
>> Le jeu. 29 sept. 2022 à 21:39, Konstantinos Poulios <
>> logar...@googlemail.com> a écrit :
>>
>>> Hello, would you like to send us a naive implementation of your assembly
>>> with asm_generic (and a loop) to take it from there?
>>>
>>> BR
>>> Kostas
>>>
>>> On Thu, Sep 29, 2022 at 6:27 PM Eloi Martinet <eloi.marti...@univ-smb.fr>
>>> wrote:
>>>
>>>> Hello everyone,
>>>> My problem is the following : I have a FE space V with basis phi_i. Let
>>>> u be a function on V and f a real valued function. What is the quickest way
>>>> to compute the vector (\int f(u)*phi_i)_i ? I would like to use asm_generic
>>>> but I don't see how to do it without looping on i and computing it for all
>>>> i, which is way too long.
>>>>
>>>> Thank you, have a good day.
>>>> Best regards,
>>>> Eloi.
>>>>
>>>

Reply via email to