[petsc-users] Recommendations of possible preconditioner/ksp solver/snes solver for three phase flow reservoir simulator

Matthew Knepley knepley at gmail.com
Tue Dec 18 07:41:09 CST 2018


Assuming that the FS is multiplicative, you have some really tightly
coupled fields, and the triangular PC is no good.
That suggests you might use a Schur complement, but you would need a good
PC for that. I would first see what
fields need to be tightly coupled, and if the nested Schur complement works
for that. If so, then putting time into a
PC for that is worthwhile.

   Thanks,

     Matt

On Tue, Dec 18, 2018 at 1:22 AM Chukwudi Chukwudozie <chdozie at gmail.com>
wrote:

>  convergence_check.txt
> <https://drive.google.com/file/d/1RXZX081zCvZ8FFEjRBWIkZXgmD0I0arR/view?usp=drive_web>
> The non-convergence persists even after putting a KSP wrapper around the
> ILU. I have attached a file that contains output of the KSPs for the global
> model and that for the blocks. It shows convergence for the first two
> newton steps. However, for the third step with no convergence, the KSP
> residual norm reduces only minimally before the maximum ksp iteration
> steps. Hence, the nonconvergence.
>
>
>
> On Mon, Dec 17, 2018 at 9:55 AM Matthew Knepley <knepley at gmail.com> wrote:
>
>> On Sun, Dec 16, 2018 at 10:12 PM Chukwudi Chukwudozie via petsc-users <
>> petsc-users at mcs.anl.gov> wrote:
>>
>>> Barry,
>>>
>>> Thanks for the reply. I have attached two files with the information.
>>>
>>> On Sat, Dec 15, 2018 at 8:58 PM Smith, Barry F. <bsmith at mcs.anl.gov>
>>> wrote:
>>>
>>>>
>>>>   Chuks,
>>>>
>>>> 1)   Please run a successful case with -snes_view and send the output
>>>> so we can see the exact solver options being used.
>>>>
>>>> 2)   Run a less successful case with -snes_monitor
>>>> -ksp_monitor_true_residual -ksp_converged_reason
>>>> -fieldsplit_ksp_monitor_true_residual -fieldsplit_ksp_converged reason so
>>>> we can see how the linear solver (and the sub linear solves) are (not)
>>>> converging.
>>>>
>>>
>> The first thing I would do is to put Krylov wrappers around the ILU on
>> the subblocks. ILU could be good enough
>> for your simple case, but I bet the blocks are not begin accurately
>> solved in the non-convergent case. You could
>> turn on monitor for the blocks to confirm this:
>>
>>   -P_fieldsplit_0_ksp_type gmres
>>   -P_fieldsplit_0_ksp_monitor_true_residual
>>
>>   Thanks,
>>
>>      Matt
>>
>>
>>>
>>>>     Barry
>>>>
>>>>
>>>> > On Dec 15, 2018, at 7:54 PM, Chukwudi Chukwudozie via petsc-users <
>>>> petsc-users at mcs.anl.gov> wrote:
>>>> >
>>>> > Hi,
>>>> >
>>>> > I am developing a fully implicit control volume finite element black
>>>> oil reservoir simulator using petscdmplex and snes. So far, for 2 phase
>>>> flow problems (3 by 3 block for pressure, saturation and bottomhole
>>>> pressure), my simulator runs fine for small time step sizes in the order of
>>>> less than 5 days. However, increasing the time step size, it doesn't
>>>> converge with -3 (-5 sometimes) diverge reason. Considering that this is a
>>>> fully implicit but nonlinear problem, I expect unconditional stability for
>>>> reasonable time step sizes.
>>>> >
>>>> >  The background DM for the 3 block problem is a composite one with
>>>> the first two being DMPLES's (bag->plexScalNode for pressure and
>>>> saturation) and the last one, bag->WellRedun, a redundant DM for the
>>>> wellbore pressures. See below.
>>>> >
>>>> >     ierr =
>>>> DMRedundantCreate(PETSC_COMM_WORLD,0,bag->numWells,&bag->WellRedun);CHKERRQ(ierr);
>>>> >     ierr =
>>>> DMCompositeCreate(PETSC_COMM_WORLD,&bag->MultiPhasePacker);CHKERRQ(ierr);
>>>> >         ierr =
>>>> DMCompositeAddDM(bag->MultiPhasePacker,bag->plexScalNode);CHKERRQ(ierr);
>>>> >         ierr =
>>>> DMCompositeAddDM(bag->MultiPhasePacker,bag->plexScalNode);CHKERRQ(ierr);
>>>> >         ierr =
>>>> DMCompositeAddDM(bag->MultiPhasePacker,bag->WellRedun);CHKERRQ(ierr);
>>>> >
>>>> > I have used nested matrices as shown below. In addition, I used the
>>>> fieldsplit (composite multiplicative) preconditioner with FGRES and least
>>>> square for newton solver. See below.
>>>> >
>>>> > ierr =
>>>> MatCreateNest(PETSC_COMM_WORLD,Msize,is,Msize,is,&bK[0],K);CHKERRQ(ierr);
>>>> >
>>>> >
>>>> >     ierr = SNESGetKSP(bag->snesP,&kspP);CHKERRQ(ierr);
>>>> >     ierr =
>>>> KSPSetTolerances(kspP,1.e-8,1.e-8,PETSC_DEFAULT,PETSC_DEFAULT);CHKERRQ(ierr);
>>>> >     ierr = KSPSetType(kspP,KSPFGMRES);CHKERRQ(ierr);
>>>> >     ierr = KSPSetFromOptions(kspP);CHKERRQ(ierr);
>>>> >     ierr = KSPGetPC(kspP,&pcP);CHKERRQ(ierr);
>>>> >     ierr = PCSetType(pcP, PCFIELDSPLIT);CHKERRQ(ierr);
>>>> >     ierr =
>>>> DMCompositeGetGlobalISs(bag->MultiPhasePacker,&is);CHKERRQ(ierr);
>>>> >     for(i = 0; i < Msize; i++)  ierr =
>>>> PCFieldSplitSetIS(pcP,NULL,is[i]);CHKERRQ(ierr);
>>>> >     ierr =
>>>> PCFieldSplitSetType(pcP,PC_COMPOSITE_MULTIPLICATIVE);CHKERRQ(ierr);
>>>> >
>>>> > Any ideas on possible precoditioner options/solver
>>>> options/combinations to improve stability will be appreciated.
>>>> >
>>>> > Chuks
>>>> >
>>>>
>>>>
>>
>> --
>> What most experimenters take for granted before they begin their
>> experiments is infinitely more interesting than any results to which their
>> experiments lead.
>> -- Norbert Wiener
>>
>> https://www.cse.buffalo.edu/~knepley/
>> <http://www.cse.buffalo.edu/~knepley/>
>>
>

-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener

https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20181218/c914b2f5/attachment.html>


More information about the petsc-users mailing list