[petsc-users] Field split questions

Matthew Knepley knepley at gmail.com
Mon Aug 20 10:09:15 CDT 2012


On Mon, Aug 20, 2012 at 7:47 AM, Colin McAuliffe <cjm2176 at columbia.edu>wrote:

> I am just not seeing where in the section such an IS would go. As far as I
> can tell from the functions in vsection.c, the only item in the section
> which is an IS is bcIndices, defining points where bcs are applied.
>

If you have no structure other than dof, you can make a Section where the
points
just number dofs. Then you just run through the ints p in your IS can call

  PetscSectionSetDof(section, p, 1)

Then PetscSectionSetUp(). Stick this in a DMSHELL, or really any DM you
want,
and FS will use it.

   Matt


>     38   ierr = PetscNew(struct _n_PetscSection, s);CHKERRQ(ierr);
>     39   (*s)->atlasLayout.comm   = comm;
>     40   (*s)->atlasLayout.pStart = -1;
>     41   (*s)->atlasLayout.pEnd   = -1;
>     42   (*s)->atlasLayout.numDof = 1;
>     43   (*s)->atlasDof           = PETSC_NULL;
>     44   (*s)->atlasOff           = PETSC_NULL;
>     45   (*s)->bc                 = PETSC_NULL;
>     46   (*s)->bcIndices          = PETSC_NULL;
>     47   (*s)->setup              = PETSC_FALSE;
>     48   (*s)->numFields          = 0;
>     49   (*s)->fieldNames         = PETSC_NULL;
>     50   (*s)->field              = PETSC_NULL;
>
> Quoting Matthew Knepley <knepley at gmail.com>:
>
>  On Mon, Aug 20, 2012 at 7:17 AM, Colin McAuliffe <cjm2176 at columbia.edu
>> >wrote:
>>
>>  Yes, just call DMSetDefaultSection(). However, note that you will have
>>>
>>>> everything sized
>>>> correctly, but handling topology and iteration for the residual
>>>> calculation
>>>> would be completely
>>>> up to you.
>>>>
>>>>    Matt
>>>>
>>>>
>>> It would be really great to define the initial data layout using IS to
>>> define the equation numbers of the splits, while letting the new DM stuff
>>> handle creating all the nested splits given command line options. Is
>>> something like this possible?
>>>
>>>
>> This is just what I say above. Is something not working?
>>
>>    Matt
>>
>>
>>  Colin
>>>
>>> Quoting Matthew Knepley <knepley at gmail.com>:
>>>
>>>  On Mon, Aug 13, 2012 at 4:06 PM, Colin McAuliffe <cjm2176 at columbia.edu
>>>
>>>> >wrote:
>>>>
>>>>  No, No, No. You do not have to write a DM implementation.
>>>>
>>>>>
>>>>>
>>>>>> You just have to define the data layout in a PetscSection and attach
>>>>>> it
>>>>>> to
>>>>>> the DM with DMSetDefaultSection.
>>>>>>
>>>>>>     Matt
>>>>>>
>>>>>>
>>>>>>  Does use of the PetscSection mean that it is neccesary to define a
>>>>> DMMesh?
>>>>> In other
>>>>> words is there a way to create the data layout for the physics without
>>>>> having to specify
>>>>> any information about the mesh?
>>>>>
>>>>>
>>>>>  Yes, just call DMSetDefaultSection(). However, note that you will have
>>>> everything sized
>>>> correctly, but handling topology and iteration for the residual
>>>> calculation
>>>> would be completely
>>>> up to you.
>>>>
>>>>    Matt
>>>>
>>>>
>>>>  Thanks
>>>>
>>>>> Colin
>>>>>
>>>>>
>>>>>
>>>>> Quoting Matthew Knepley <knepley at gmail.com>:
>>>>>
>>>>>  On Thu, Aug 9, 2012 at 10:22 AM, Dmitry Karpeev <karpeev at mcs.anl.gov>
>>>>>
>>>>>  wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>  On Thu, Aug 9, 2012 at 10:02 AM, Colin McAuliffe  <
>>>>>>> cjm2176 at columbia.edu
>>>>>>> >wrote:
>>>>>>>
>>>>>>>  Sanjay, thanks for the reply but I am avoiding using blocked format
>>>>>>>
>>>>>>>  since
>>>>>>>> my problem has 10 dofs per node but only has either dofs 1-3 or 4-10
>>>>>>>> active
>>>>>>>> on a particular node. If I use block the equations I run out of
>>>>>>>> memory
>>>>>>>> pretty quickly on my machine but can get to reasonable sized
>>>>>>>> problems
>>>>>>>> with
>>>>>>>> the unblocked format.
>>>>>>>>
>>>>>>>> Matt, sorry I am not getting this, but I am still not sure how the
>>>>>>>> DM
>>>>>>>> interface works. I can see in the function PCFieldSplitSetDefaults
>>>>>>>> that
>>>>>>>> there is an initial call to DMCreateFieldDecomposition and
>>>>>>>> subsequent
>>>>>>>> calls
>>>>>>>> to DMCreateSubDM based on the command line options. What I am
>>>>>>>> missing
>>>>>>>> is
>>>>>>>> how the first call to DMCreateFieldDecomposition is able to figure
>>>>>>>> out
>>>>>>>> which equations belong to which field just from command line info
>>>>>>>> such
>>>>>>>> as
>>>>>>>> -pc_fieldsplit_0_fields 2,0. Where/how are the fields 2 and 0
>>>>>>>> defined?
>>>>>>>>
>>>>>>>>  This might change slightly in the near future in petsc-dev to allow
>>>>>>>>
>>>>>>>>  one to
>>>>>>> define splits using named fields.
>>>>>>> In any event, there has to be DM support to implement the
>>>>>>> decompositions
>>>>>>> over a particular mesh/problem over that mesh.
>>>>>>> With DMDA you can essentially get combinations of strided fields in
>>>>>>> each
>>>>>>> split. DMCOMPOSITE allows you
>>>>>>> to pull out combinations of the subproblems that were put in there to
>>>>>>> begin with. If you have your own mesh, you have to write
>>>>>>> a DM implementation around it to expose the available fields.
>>>>>>>
>>>>>>>
>>>>>>>  No, No, No. You do not have to write a DM implementation.
>>>>>>>
>>>>>>
>>>>>> You just have to define the data layout in a PetscSection and attach
>>>>>> it
>>>>>> to
>>>>>> the DM with DMSetDefaultSection.
>>>>>>
>>>>>>     Matt
>>>>>>
>>>>>>
>>>>>>  Dmitry.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>  Thanks
>>>>>>>
>>>>>>>>
>>>>>>>> Colin
>>>>>>>>
>>>>>>>>
>>>>>>>> Quoting Matthew Knepley <knepley at gmail.com>:
>>>>>>>>
>>>>>>>>  On Thu, Aug 9, 2012 at 9:21 AM, Sanjay Govindjee <s_g at berkeley.edu
>>>>>>>> >
>>>>>>>>
>>>>>>>>  wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>>  Colin,
>>>>>>>>>
>>>>>>>>>    I you block the equations in FEAP, then the restrained BCs are
>>>>>>>>>
>>>>>>>>>> 'included' in assembled PETSc matrix (these dofs have rows that
>>>>>>>>>> are
>>>>>>>>>> zero
>>>>>>>>>> modulo a value of unity on the diagonal and the restrained value
>>>>>>>>>> on
>>>>>>>>>> the
>>>>>>>>>> right-hand side).
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>  However, this is not necessary with the DM interface.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>    Matt
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  -sg
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  On 8/9/12 8:41 AM, Colin McAuliffe wrote:
>>>>>>>>>>
>>>>>>>>>>  From what I can gather from the petsc-dev source it looks like
>>>>>>>>>> the
>>>>>>>>>>
>>>>>>>>>>  commands in 4) will then generate the splits using strided
>>>>>>>>>> blocks.
>>>>>>>>>>
>>>>>>>>>>> The
>>>>>>>>>>> problem with that is the fortran code I am using (FEAP) uses
>>>>>>>>>>> petsc
>>>>>>>>>>> to
>>>>>>>>>>> assemble and solve the linear problem within its own nonlinear
>>>>>>>>>>> and
>>>>>>>>>>> time
>>>>>>>>>>> stepping schemes. The linear problem that petsc solves already
>>>>>>>>>>> has
>>>>>>>>>>> boundary
>>>>>>>>>>> conditions applied to it so petsc only sees the active
>>>>>>>>>>> (unrestrained)
>>>>>>>>>>> equations. So then in general fields can't be extracted from the
>>>>>>>>>>> active
>>>>>>>>>>> equations using strided blocks and I am stuck with generating the
>>>>>>>>>>> index
>>>>>>>>>>> sets defining the splits on my own. Will it still be possible to
>>>>>>>>>>> make
>>>>>>>>>>> use
>>>>>>>>>>> of the new DM functions in this case?
>>>>>>>>>>>
>>>>>>>>>>> FEAP website:
>>>>>>>>>>> http://www.ce.berkeley.edu/**********projects/feap/<http://www.ce.berkeley.edu/********projects/feap/>
>>>>>>>>>>> <http://**www.ce.berkeley.edu/********projects/feap/<http://www.ce.berkeley.edu/******projects/feap/>
>>>>>>>>>>> >
>>>>>>>>>>> <http://www.**ce.berkeley.edu/******projects/**feap/<http://ce.berkeley.edu/****projects/**feap/>
>>>>>>>>>>> <http://**www.ce.berkeley.edu/******projects/feap/<http://www.ce.berkeley.edu/****projects/feap/>
>>>>>>>>>>> >
>>>>>>>>>>> >
>>>>>>>>>>> <http://www.ce.**berkeley.edu/******projects/feap/<http://berkeley.edu/****projects/feap/>
>>>>>>>>>>> <http://**berkeley.edu/**projects/feap/<http://berkeley.edu/**projects/feap/>
>>>>>>>>>>> >
>>>>>>>>>>> <http://www.**ce.berkeley.edu/****projects/**feap/<http://ce.berkeley.edu/**projects/**feap/>
>>>>>>>>>>> <http://www.**ce.berkeley.edu/**projects/**feap/<http://www.ce.berkeley.edu/**projects/feap/>
>>>>>>>>>>> >
>>>>>>>>>>> >
>>>>>>>>>>> >
>>>>>>>>>>> <http://www.ce.**berkeley.edu/******projects/feap/<http://berkeley.edu/****projects/feap/>
>>>>>>>>>>> <http://**berkeley.edu/**projects/feap/<http://berkeley.edu/**projects/feap/>
>>>>>>>>>>> >
>>>>>>>>>>> <http://**berkeley.edu/**projects/feap/<http://berkeley.edu/projects/feap/>
>>>>>>>>>>> <http://**berkeley.edu/projects/feap/<http://berkeley.edu/projects/feap/>
>>>>>>>>>>> >
>>>>>>>>>>> >
>>>>>>>>>>> <http://www.ce.**berkeley.edu/****projects/feap/<http://berkeley.edu/**projects/feap/>
>>>>>>>>>>> <http://**berkeley.edu/projects/feap/<http://berkeley.edu/projects/feap/>
>>>>>>>>>>> >
>>>>>>>>>>> <http://www.ce.**berkeley.edu/**projects/feap/<http://berkeley.edu/projects/feap/>
>>>>>>>>>>> <http://www.ce.**berkeley.edu/projects/feap/<http://www.ce.berkeley.edu/projects/feap/>
>>>>>>>>>>> >
>>>>>>>>>>> >
>>>>>>>>>>> >
>>>>>>>>>>> >
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Colin
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Quoting Matthew Knepley <knepley at gmail.com>:
>>>>>>>>>>>
>>>>>>>>>>>  On Wed, Aug 8, 2012 at 10:51 PM, Matthew Knepley <
>>>>>>>>>>> knepley at gmail.com
>>>>>>>>>>> >
>>>>>>>>>>>
>>>>>>>>>>>  wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>  On Wed, Aug 8, 2012 at 10:23 PM, Colin McAuliffe  <
>>>>>>>>>>>> cjm2176 at columbia.edu
>>>>>>>>>>>>
>>>>>>>>>>>>  >wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>  Thanks all, regarding use of DM in 3.3, is the procedure now
>>>>>>>>>>>>> to
>>>>>>>>>>>>> create
>>>>>>>>>>>>>
>>>>>>>>>>>>>  the fields with PCFieldSplitSetIS and then use
>>>>>>>>>>>>>
>>>>>>>>>>>>>  DMCreateFieldDecompositionDM
>>>>>>>>>>>>>> to create a new DM based from the new fields and the DM for
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> original
>>>>>>>>>>>>>> problem?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>  1) Use petsc-dev
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>  2) PCFieldSplitSetIS() is independent. This allows you to
>>>>>>>>>>>>> define
>>>>>>>>>>>>> splits
>>>>>>>>>>>>> however you want, but then recursive gets harder
>>>>>>>>>>>>>
>>>>>>>>>>>>> 3) In 3.3., it uses DMCreateFieldDecompositionDM() to split all
>>>>>>>>>>>>> fields
>>>>>>>>>>>>> apart at once
>>>>>>>>>>>>>
>>>>>>>>>>>>> 4) In petsc-dev, it uses DMCreateSubDM() which can split off
>>>>>>>>>>>>> any
>>>>>>>>>>>>> combination of fields, which from the command line is something
>>>>>>>>>>>>> like
>>>>>>>>>>>>>
>>>>>>>>>>>>>      -pc_fieldsplit_0_fields 2,0 -pc_fieldsplit_1_fields 1,3
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>  I should have shown recursive:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>    -fieldsplit_0_pc_type fieldsplit
>>>>>>>>>>>>
>>>>>>>>>>>> will split 2,0 into two blocks.
>>>>>>>>>>>>
>>>>>>>>>>>>    Matt
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>       Matt
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>   Colin
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>  --
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Colin McAuliffe
>>>>>>>>>>>>>> PhD Candidate
>>>>>>>>>>>>>> Columbia University
>>>>>>>>>>>>>> Department of Civil Engineering and Engineering Mechanics
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>  --
>>>>>>>>>>>>>>
>>>>>>>>>>>>> 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
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>  --
>>>>>>>>>>>>>
>>>>>>>>>>>> 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
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>   --
>>>>>>>>>>>
>>>>>>>>>>>  ------------------------------**********-----------------
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Sanjay Govindjee, PhD, PE
>>>>>>>>>> Professor of Civil Engineering
>>>>>>>>>> Vice Chair for Academic Affairs
>>>>>>>>>>
>>>>>>>>>> 779 Davis Hall
>>>>>>>>>> Structural Engineering, Mechanics and Materials
>>>>>>>>>> Department of Civil Engineering
>>>>>>>>>> University of California
>>>>>>>>>> Berkeley, CA 94720-1710
>>>>>>>>>>
>>>>>>>>>> Voice:  +1 510 642 6060
>>>>>>>>>> FAX:    +1 510 643 5264
>>>>>>>>>> s_g at berkeley.edu
>>>>>>>>>> http://www.ce.berkeley.edu/~**********sanjay<http://www.ce.berkeley.edu/~********sanjay>
>>>>>>>>>> <http://www.ce.**berkeley.edu/~******sanjay<http://www.ce.berkeley.edu/~******sanjay>
>>>>>>>>>> >
>>>>>>>>>> <http://www.ce.**berkeley.edu/**~****sanjay<http://berkeley.edu/~****sanjay>
>>>>>>>>>> <http://www.ce.**berkeley.edu/~****sanjay<http://www.ce.berkeley.edu/~****sanjay>
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> <http://www.ce.**berkeley.edu/****~**sanjay<http://berkeley.edu/**~**sanjay>
>>>>>>>>>> <http://berkeley.**edu/~**sanjay <http://berkeley.edu/~**sanjay>>
>>>>>>>>>> <http://www.ce.**berkeley.edu/**~**sanjay<http://berkeley.edu/~**sanjay>
>>>>>>>>>> <http://www.ce.**berkeley.edu/~**sanjay<http://www.ce.berkeley.edu/~**sanjay>
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> ><
>>>>>>>>>> http://www.ce.berkeley.edu/~********sanjay<http://www.ce.berkeley.edu/~******sanjay>
>>>>>>>>>> <http://www.ce.**berkeley.edu/~****sanjay<http://www.ce.berkeley.edu/~****sanjay>
>>>>>>>>>> >
>>>>>>>>>> <http://www.ce.**berkeley.edu/**~**sanjay<http://berkeley.edu/~**sanjay>
>>>>>>>>>> <http://www.ce.**berkeley.edu/~**sanjay<http://www.ce.berkeley.edu/~**sanjay>
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> <http://www.ce.berkeley.**edu/****~sanjay<http://www.ce.**
>>>>>>>>>> berkeley.edu/~sanjay <http://www.ce.berkeley.edu/~**sanjay<http://www.ce.berkeley.edu/~sanjay>
>>>>>>>>>> >>
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> ------------------------------**********-----------------
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>  --
>>>>>>>>>>
>>>>>>>>> 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
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  --
>>>>>>>> Colin McAuliffe
>>>>>>>> PhD Candidate
>>>>>>>> Columbia University
>>>>>>>> Department of Civil Engineering and Engineering Mechanics
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>  --
>>>>>> 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
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> --
>>>>> Colin McAuliffe
>>>>> PhD Candidate
>>>>> Columbia University
>>>>> Department of Civil Engineering and Engineering Mechanics
>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>> 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
>>>>
>>>>
>>>>
>>>
>>> --
>>> Colin McAuliffe
>>> PhD Candidate
>>> Columbia University
>>> Department of Civil Engineering and Engineering Mechanics
>>>
>>>
>>
>>
>> --
>> 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
>>
>>
>
>
> --
> Colin McAuliffe
> PhD Candidate
> Columbia University
> Department of Civil Engineering and Engineering Mechanics
>



-- 
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/20120820/92a342d4/attachment-0001.html>


More information about the petsc-users mailing list