[petsc-users] Question About Assembly matrix and declaration of KSP & pc

김성익 ksi2443 at gmail.com
Wed Nov 30 06:51:10 CST 2022


Thank you for your comments.
However, I have more questions.

1. Generally,  (KSPCreate, KSPSetOperators, KSPGetPC, PCSetType,
PCFactorSetMatSolverType, KSPSetFromOptions )
above functions are should be called after  each "MatassemblyEnd??"

2.   Though reading the user guide, I don't fully understand under what
circumstances the functions mentioned above should be called again. Can you
explain when each function should be called?

Thanks,

Hyung Kim

2022년 11월 30일 (수) 오후 8:37, Mark Adams <mfadams at lbl.gov>님이 작성:

>
>
> On Wed, Nov 30, 2022 at 5:08 AM 김성익 <ksi2443 at gmail.com> wrote:
>
>> Hello,
>>
>>
>>
>> I’m working on FEM using PETSc.
>>
>> As everyone knows, it is necessary to repeatedly solve Ax=B.
>>
>> Regarding this, I have 4 questions.
>>
>>
>>
>> 1.     There are many steps for preparing KSPSolve. For example
>> KSPcreate, KSPSetOperators, KSPGetPC, PCSetType, PCFactorSetMatSolverType,
>> KSPSetFromOptions…
>> In Nonlinear FEM, there are repeatedly kspsolve for getting answer
>> vector. Is it correct to do all of the aforementioned processes (KSPcreate,
>> KSPSetOperators ~~~) for each KSPSolve? Or should I declare it only once at
>> the beginning and not call it again?
>>
>
> You just do these once at setup but for nonlinear problems KSPSetOperators
> tells the solver that you have a new matrix and so "matrix setup" work
> needs to be done.
>
>
>>
>> 2.     If the answer to question 1 is that it must be repeated every
>> time, should this work be done right before kspsolve, that is, when the
>> global matrix assembly is finished, or is it irrelevant to performance at
>> any time?
>>
>
> KSPSetOperators should be set after the new matrix values are set but it
> might work before. It just sets a pointer to the matrix and flags it as not
> setup.
>
>
>>
>>
>> 3.     When performing FEM, local matrices are often scattered in global
>> matrices depending on connectivity. In this case, which is better in terms
>> of performance: adding the values one by one with MatSetValue or adding
>> them all at once with MatSetValues even if they are scattered?
>>
>
> You want to add one element matrix at a time, generally.
>
>
>>
>>
>>
>>
>> 4.     I would like to measure the time of each section of the process.
>> Which method is recommended?
>>
>
> PETSc methods are timed separateluy, but setup gets folded into KSPSolve
> unless you call SNESSetUp before the SNES[KSP]Solve.
> You can add you own timers also
> https://petsc.org/release/docs/manualpages/Profiling/PetscLogEventRegister/
>
> Mark
>
>
>
>>
>>
>> Thank you for your help.
>>
>>
>>
>> Hyung Kim
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20221130/e517f4c1/attachment.html>


More information about the petsc-users mailing list