Re: [deal.II] VMult-function in the MatrixFree-Framework

2019-07-24 Thread 'Maxi Miller' via deal.II User Group
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

Re: [deal.II] VMult-function in the MatrixFree-Framework

2019-07-24 Thread Wolfgang Bangerth
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

Re: [deal.II] VMult-function in the MatrixFree-Framework

2019-07-24 Thread 'Maxi Miller' via deal.II User Group
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: > >

Re: [deal.II] VMult-function in the MatrixFree-Framework

2019-07-24 Thread 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

Re: [deal.II] VMult-function in the MatrixFree-Framework

2019-07-24 Thread 'Maxi Miller' via deal.II User Group
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

Re: [deal.II] VMult-function in the MatrixFree-Framework

2019-07-24 Thread Daniel Arndt
> > 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

Re: [deal.II] VMult-function in the MatrixFree-Framework

2019-07-24 Thread 'Maxi Miller' via deal.II User Group
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

Re: [deal.II] VMult-function in the MatrixFree-Framework

2019-07-23 Thread 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 not > provide alpha, but the vector, and return the calculated residual

Re: [deal.II] VMult-function in the MatrixFree-Framework

2019-07-23 Thread 'Maxi Miller' via deal.II User Group
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,

Re: [deal.II] VMult-function in the MatrixFree-Framework

2019-07-23 Thread Daniel Arndt
> 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 =

Re: [deal.II] VMult-function in the MatrixFree-Framework

2019-07-23 Thread 'Maxi Miller' via deal.II User Group
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 =

Re: [deal.II] VMult-function in the MatrixFree-Framework

2019-07-23 Thread Daniel Arndt
> >- 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

[deal.II] VMult-function in the MatrixFree-Framework

2019-07-23 Thread 'Maxi Miller' via deal.II User Group
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