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

2018-09-27 Thread Fande Kong
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  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  于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  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
>>>
>>>
>>>


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

2018-09-26 Thread Yingjie Wu
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  于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  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
>>
>>
>>


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

2018-09-26 Thread Fande Kong
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  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
>
>
>


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

2018-09-26 Thread Yingjie Wu
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