Re: [petsc-users] Implementation of Power Iteration method in PETSc
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
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
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
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