Thus I intended to use a GMG-preconditioner, with a Chebyshev-smoother.
Usually the GMG-preconditioner does not require the main matrix either
(yes, small matrices are still required, but they do not require the same
amount of storage space), but here I run into the problem which is
mentioned
On 7/24/19 12:23 PM, 'Maxi Miller' via deal.II User Group wrote:
> My LinearOperator only provides a vmult-interface, nothing else, but for
> initializing the preconditioner I still need a sparse matrix, thus I can not
> use the LinearOperator, as far as I understand. Or is there a way to use
My LinearOperator only provides a vmult-interface, nothing else, but for
initializing the preconditioner I still need a sparse matrix, thus I can
not use the LinearOperator, as far as I understand. Or is there a way to
use it?
Am Mittwoch, 24. Juli 2019 17:28:14 UTC+2 schrieb Daniel Arndt:
>
>
>
> Is there then a way to use LinearOperator as Input for a preconditioner?
> Else I still have to form the full system matrix (which I would like to
> avoid).
>
Most precoditioners require access to individual matrx entries. If the
class you derive from linear operator provides a suitable
Is there then a way to use LinearOperator as Input for a preconditioner?
Else I still have to form the full system matrix (which I would like to
avoid).
Am Mittwoch, 24. Juli 2019 13:43:09 UTC+2 schrieb Daniel Arndt:
>
> On the other hand, would it be sufficient to unroll the
>
> On the other hand, would it be sufficient to unroll the
>>> residual-calculation, i.e. if the residual is F(u) = nabla^2 u + f, to
>>> write (in the cell-loop): (nabla^2(u + eps*src) + f - nabla^2u -
>>> f)/epsilon? Or would that lead to wrong results?
>>>
>>
>> It is sufficient to only
Am Mittwoch, 24. Juli 2019 00:39:14 UTC+2 schrieb Daniel Arndt:
>
> Maxi,
>
> No, that code is the vmult-call I am using in my LinearOperator (and is
>> used directly in my solve()-call). The calculate_residual()-function is
>> similar to the function in step-15, with the difference, that I do
Maxi,
No, that code is the vmult-call I am using in my LinearOperator (and is
> used directly in my solve()-call). The calculate_residual()-function is
> similar to the function in step-15, with the difference, that I do not
> provide alpha, but the vector, and return the calculated residual
No, that code is the vmult-call I am using in my LinearOperator (and is
used directly in my solve()-call). The calculate_residual()-function is
similar to the function in step-15, with the difference, that I do not
provide alpha, but the vector, and return the calculated residual value.
Thus,
> My aim is to implement the jacobian approximation, i.e. (if F(u) = 0 is
> the function to solve) I wanted to implement
> dst = (F(current_solution + epsilon * src) - F(current_solution))/epsilon.
> In my LinearOperator, my code is
> LinearOperator jacobian_operator;
> jacobian_operator.vmult =
My aim is to implement the jacobian approximation, i.e. (if F(u) = 0 is the
function to solve) I wanted to implement
dst = (F(current_solution + epsilon * src) - F(current_solution))/epsilon.
In my LinearOperator, my code is
LinearOperator jacobian_operator;
jacobian_operator.vmult =
>
>- When using the LinearOperator, the function vmult() is used when
>solving the system with a GMRES-solver (or similar). Does the same hold up
>for the MatrixFree-framework?
>
> Yes.
>
>- If the above is correct: In each GMRES-iteration I have to calculate
>the residual of
In my project I already managed to replace the system_matrix in the
solve()-call by a custom LinearOperator, but still I had to retain the
matrix itself (for the preconditioner, for example). Thus I am now trying
to use the MatrixFree-framework for that.
Thus, some questions arose:
- When
13 matches
Mail list logo