Yes, definitely. I have been too lazy to add names, but this is exactly<div>what is needed.</div><div><br></div><div>  Matt<br><br><div class="gmail_quote">On Wed, May 12, 2010 at 1:19 PM, Jed Brown <span dir="ltr"><<a href="mailto:jed@59a2.org">jed@59a2.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">On Wed, 12 May 2010 13:27:18 -0300, Lisandro Dalcin <<a href="mailto:dalcinl@gmail.com">dalcinl@gmail.com</a>> wrote:<br>

> Chris is going to use this from Python, and I have to add support in<br>
> petsc4py. I think I'll have to provide a better API, something like:<br>
><br>
> pc.fieldSplitSetFields(0,[1,2,3],4) # (rho,[Ux,Uy,Uz],p)<br>
><br>
> or<br>
><br>
> pc.fieldSplitSetIS(is_rho, is_U, is_p)<br>
><br>
> and implement then by calling PCFieldSplitSet{Fields|IS} multiple times.<br>
><br>
> Does this API make sense?<br>
<br>
</div>Let's think about improving the C interface.  I would really like to<br>
name the splits since otherwise options sitting in petscrc files don't<br>
compose.  So what about<br>
<br>
  PCFieldSplitSetFields(PC,const char name[],PetscInt nfields,PetscInt fields[]);<br>
  PCFieldSplitSetFieldsByName(PC,const char name[],PetscInt nfields,const char *fieldnames[]);<br>
  PCFieldSplitSetIS(PC,const char name[],IS);<br>
<br>
and on the Python end, the direct wrappers could be called multiple<br>
times to set individual splits (if you provided direct wrappers) or have<br>
the higher level interface using a dict<br>
<br>
  pc.FieldSplitSetSplits(splits)<br>
<br>
with any of the definitions<br>
<br>
  splits = dict(velocity=isvelocity, pressure=ispressure))<br>
  splits = dict(velocity=(0,1,2), pressure=(3,))<br>
  splits = dict(velocity=('u','v','w'), pressure='p')<br>
<br>
The latter would only work if the user used DMSetFieldName to identify<br>
fields u,v,w,p (recall that PC has access to the DM in -dev).  With any<br>
of the definitions above, the runtime prefixes would be<br>
-fieldsplit_velocity_* and -fieldsplit_pressure_* instead of just<br>
numbers.<br>
<br>
Does this seem sensible?<br>
<font color="#888888"><br>
Jed<br>
</font></blockquote></div><br><br clear="all"><br>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener<br>

</div>