[petsc-users] Implementation of Power Iteration method in PETSc

Fande Kong fdkong.jd at gmail.com
Thu Sep 27 10:12:26 CDT 2018


Hi Yingjie,

For finite difference method, there are a lot of example in PETSc. For
instance,
https://www.mcs.anl.gov/petsc/petsc-current/src/ksp/ksp/examples/tutorials/ex29.c.html

For linear eigenvalue problems,  there is a list of examples at
http://slepc.upv.es/documentation/current/src/eps/examples/tutorials/index.html

Before you go to implement your inver power algorithm, I would like to
suggest you go though PETSc manual and SLEPc manual.
https://www.mcs.anl.gov/petsc/petsc-current/docs/manual.pdf  and
http://slepc.upv.es/documentation/slepc.pdf
SLEPc has both nonlinear and linear inverse power iteration methods, and
you can pick any version you want.

It is a good idea to have big picture before you do anything using PETSc or
SLEPc.

Fande,

On Wed, Sep 26, 2018 at 8:17 PM Yingjie Wu <yjwu16 at gmail.com> wrote:

> Thank you, Fande.
>
> I've seen you in moose usergroup before.
>
>
> I've just learned about SLEPC, and I wonder if I want to do neutron
> eigenvalue calculations and use finite difference to discrete grids, would
> it be difficult to implement it in SLEPC? Is there such an example(finite
> difference + linear eigenvalue)?Because I don't know much about finite
> element.Or am I still using a loop of KSP in PETSc?I'm a newcomer to petsc,
> please give me some advice
>
>
> Thanks,
>
> Yingjie
>
>
> Fande Kong <fdkong.jd at gmail.com> 于2018年9月27日周四 上午12:25写道:
>
>> I have implemented this algorithm in SLEPC. Take a look at this example
>> http://slepc.upv.es/documentation/current/src/eps/examples/tutorials/ex34.c.html
>>
>> The motivation of the algorithm is also for neutron calculations (a
>> moose-based application).
>>
>> Fande,
>>
>> On Wed, Sep 26, 2018 at 10:02 AM Yingjie Wu <yjwu16 at gmail.com> wrote:
>>
>>> Dear Petsc developer:
>>> Hi,
>>>
>>> Thank you very much for your previous reply,  they really helped me a
>>> lot.
>>>
>>> I've been doing neutron calculations recently, and I want to use the
>>> power Iteration method to calculate the neutron flux, essentially to solve
>>> linear equations, but after each solution is done, a scalar *K* is
>>> updated to form a new right end term *b*, and the next linear equation
>>> system is solved until the convergence criterion is satisfied. The flow of
>>> the source iteration algorithm is as follows:
>>>
>>>
>>> 1: *Φ*(0) = arbitrary nonzero vector 2: K(0) = arbitrary nonzero
>>> constant 3: *for* n = 1; 2; 3; ::: do 4: *b *= 1 / K(n-1) *F * Φ(n-1)
>>> 5: *Φ*(n) * M   = *b* 6: K(n) = k(n-1)* (F * *Φ*(n)  ,F *Φ*(n)  ) / (F
>>> *Φ*(n-1)  ,F  *Φ*(n-1)  )
>>>
>>> 7: check convergence of eigenvalue and eigenvector 8: *end for*
>>>
>>>
>>> (F , M are the coefficient matrix.)
>>>
>>>
>>> The difficulty is that I need to set up an extra loop to regulate KSP.
>>> Does PETSc have such an example? How do I implement this algorithm in
>>> PETsc? Please tell me the key functions if possible.
>>>
>>>
>>> Thanks,
>>>
>>> Yingjie
>>>
>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20180927/ee2d9d95/attachment.html>


More information about the petsc-users mailing list