[petsc-users] discontinuous viscosity stokes equation 3D staggered grid

Bishesh Khanal bisheshkh at gmail.com
Fri Jul 19 03:56:51 CDT 2013


On Thu, Jul 18, 2013 at 7:59 PM, Matthew Knepley <knepley at gmail.com> wrote:

> On Thu, Jul 18, 2013 at 12:51 PM, Bishesh Khanal <bisheshkh at gmail.com>wrote:
>
>> Thanks Jed. I implemented a 2D case which worked when running the program
>> with the options: -pc_type fieldsplit -pc_fieldsplit_type schur
>> -pc_fieldsplit_detect_saddle_point
>>  But I encountered some problems when using following options (this set
>> of options is based on one of the tutorial slides in the website for
>> multiphysics problem):
>> -ksp_type fgmres -pc_type mg -mg_levels_ksp_type fgmres
>> -mg_levels_ksp_max_it 2 -mg_levels_pc_type fieldsplit
>> -mg_levels_pc_fieldsplit_detect_saddle_point ‐mg_levels_pc_fieldsplit_type
>> schur -mg_levels_pc_fieldsplit_factorization_type full
>> -mg_levels_pc_fieldsplit_schur_precondition user
>> -mg_levels_fieldsplit_0_ksp_type preonly -mg_levels_fieldsplit_0_pc_type
>> sor -mg_levels_fieldsplit_0_pc_sor_forward -mg_levels_fieldsplit_0_ksp_type
>> gmres -mg_levels_fieldsplit_0_pc_type none -mg_levels_fieldsplit_ksp_max_it
>> 5 -mg_coarse_pc_type svd
>>
>> The relevant error messages:
>> [1]PETSC ERROR: --------------------- Error Message
>> ------------------------------------
>> [1]PETSC ERROR: Invalid argument!
>> [1]PETSC ERROR: Unknown logical value: ‐mg_levels_pc_fieldsplit_type!
>> [1]PETSC ERROR:
>> ------------------------------------------------------------------------
>> [1]PETSC ERROR: Petsc Release Version 3.4.1, Jun, 10, 2013
>>  ...
>> [1]PETSC ERROR: PetscOptionsStringToBool() line 173 in
>> /home/bkhanal/Documents/softwares/petsc-3.4.1/src/sys/objects/options.c
>> [1]PETSC ERROR: PetscOptionsGetBool() line 1530 in
>> /home/bkhanal/Documents/softwares/petsc-3.4.1/src/sys/objects/options.c
>> [1]PETSC ERROR: PCSetFromOptions_FieldSplit() line 1060 in
>> /home/bkhanal/Documents/softwares/petsc-3.4.1/src/ksp/pc/impls/fieldsplit/fieldsplit.c
>>
>
> These line numbers do not match the source. How did you install?
>
>
> https://bitbucket.org/petsc/petsc/src/160ea6873d9fa631d01b6f8a2d8b12aece7dfb61/src/ksp/pc/impls/fieldsplit/fieldsplit.c?at=maint#cl-1060
>
> I had installed it in pretty much a standard way: downloading the tarball
from the petsc webpage, then using ./configure with a bunch of options.
I checked the fieldsplit.c file in my local installation, it seemed the
difference to be in the first line. My local copy the code starts at 2nd
line with first being just a newline unlike the one in bitbucket.
In any case, I tried to install a newer version: petsc-3.4.2 but I
encountered some problems! I will send another email regarding installation
issues at  petsc-maint at mcs.anl.gov while keeping this thread intact for my
stokes problem!




>    Matt
>
>
>>  [1]PETSC ERROR: PCSetFromOptions() line 174 in
>> /home/bkhanal/Documents/softwares/petsc-3.4.1/src/ksp/pc/interface/pcset.c
>> [1]PETSC ERROR: KSPSetFromOptions() line 357 in
>> /home/bkhanal/Documents/softwares/petsc-3.4.1/src/ksp/ksp/interface/itcl.c
>> [1]PETSC ERROR: PCSetUp_MG() line 677 in
>> /home/bkhanal/Documents/softwares/petsc-3.4.1/src/ksp/pc/impls/mg/mg.c
>> [1]PETSC ERROR: PCSetUp() line 890 in
>> /home/bkhanal/Documents/softwares/petsc-3.4.1/src/ksp/pc/interface/precon.c
>> [1]PETSC ERROR: KSPSetUp() line 278 in
>> /home/bkhanal/Documents/softwares/petsc-3.4.1/src/ksp/ksp/interface/itfunc.c
>> ...
>> And the warnings:
>>
>> WARNING! There are options you set that were not used!
>> WARNING! could be spelling mistake, etc!
>> Option left: name:-mg_coarse_pc_type value: svd
>> Option left: name:-mg_levels_fieldsplit_0_ksp_type value: gmres
>> Option left: name:-mg_levels_fieldsplit_0_pc_sor_forward (no value)
>> Option left: name:-mg_levels_fieldsplit_0_pc_type value: none
>> Option left: name:-mg_levels_fieldsplit_ksp_max_it value: 5
>> Option left: name:-mg_levels_ksp_max_it value: 2
>> Option left: name:-mg_levels_ksp_type value: fgmres
>> Option left: name:-mg_levels_pc_fieldsplit_factorization_type value: full
>> Option left: name:-mg_levels_pc_fieldsplit_schur_precondition value: user
>>
>> Is it that -mg_levels_pc_fieldsplit_type should be followed by some
>> "bool" value ? 1 ? true ?
>> I tried using "true", then it did not give any error but the following
>> warnings:
>> WARNING! There are options you set that were not used!
>> WARNING! could be spelling mistake, etc!
>> Option left: name:-mg_coarse_pc_type value: svd
>> Option left: name:-mg_levels_fieldsplit_0_pc_sor_forward (no value)
>> Option left: name:-mg_levels_pc_fieldsplit_factorization_type value: full
>>
>> I ran the program for the small size. Now, before I implement the 3D case
>> with this approach instead of trying the implementation of Augmented
>> Lagrangian method (M2 in previous email) my question is:
>> If I use the Petsc with the method you suggested (PCFieldSplit, multigrid
>> for momentum etc), tentatively how much of computing resources and the
>> corresponding time would it require to solve the problem of the size I want
>> (around 250^3 grid sized domain) ?
>>
>>
>>
>> On Wed, Jul 17, 2013 at 9:48 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote:
>>
>>> Bishesh Khanal <bisheshkh at gmail.com> writes:
>>>
>>> > Now, I implemented two different approaches, each for both 2D and 3D,
>>> in
>>> > MATLAB. It works for the smaller sizes but I have problems solving it
>>> for
>>> > the problem size I need (250^3 grid size).
>>> > I use staggered grid with p on cell centers, and components of v on
>>> cell
>>> > faces. Similar split up of K to cell center and faces to account for
>>> the
>>> > variable viscosity case)
>>>
>>> Okay, you're using a staggered-grid finite difference discretization of
>>> variable-viscosity Stokes.  This is a common problem and I recommend
>>> starting with PCFieldSplit with Schur complement reduction (make that
>>> work first, then switch to block preconditioner).  You can use PCLSC or
>>> (probably better for you), assemble a preconditioning matrix containing
>>> the inverse viscosity in the pressure-pressure block.  This diagonal
>>> matrix is a spectrally equivalent (or nearly so, depending on
>>> discretization) approximation of the Schur complement.  The velocity
>>> block can be solved with algebraic multigrid.  Read the PCFieldSplit
>>> docs (follow papers as appropriate) and let us know if you get stuck.
>>>
>>
>>
>
>
> --
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130719/3459f0bf/attachment.html>


More information about the petsc-users mailing list