[petsc-users] submatrix times subvector
Tabrez Ali
stali at geology.wisc.edu
Tue Jan 15 12:35:22 CST 2013
Thanks! I will try this.
Tabrez
On 01/15/2013 12:23 PM, Jed Brown wrote:
> On Tue, Jan 15, 2013 at 12:09 PM, Tabrez Ali <stali at geology.wisc.edu
> <mailto:stali at geology.wisc.edu>> wrote:
>
> Jed
>
> The problem with MatGetSubMatrix is that iscol isn't available
> easily. I want to get all associated columns but according to the
> man page it is not possible in Fortran.
>
> "If iscol is PETSC_NULL then all columns are obtained (not
> supported in Fortran)."
>
>
> Well, we could add Fortran support for that case (it currently needs a
> custom binding to do that) or you can
>
> call MatGetColumnOwnershipRange(A,colstart,colend,ierr)
> ncols = colend - colstart
> call ISCreateStride(comm,ncols,colstart,one,iscol,ierr)
>
> and pass iscol to MatGetSubMatrix(). This is what's done internally
> when you pass iscol=NULL:
>
> if (!iscol) {
> ierr =
> ISCreateStride(((PetscObject)mat)->comm,mat->cmap->n,mat->cmap->rstart,1,&iscoltmp);CHKERRQ(ierr);
>
>
> Is there a workaround?
>
> Tabrez
>
>
> On 01/14/2013 03:38 PM, Jed Brown wrote:
>> On Mon, Jan 14, 2013 at 3:27 PM, Tabrez Ali
>> <stali at geology.wisc.edu <mailto:stali at geology.wisc.edu>> wrote:
>>
>> Hello
>>
>> I am solving a system of equations of the form:
>>
>> |A C| |u1| = |f1|
>> |C'B| |u2| |f2|
>>
>> After each solve, I need to perform B*f2 before updating f.
>> Should I use MatGetSubMatrix/VecGetSubVector followed by
>> MatMult or is there something simpler.
>>
>>
>> Yes, or let PCFIELDSPLIT do all the block solver stuff for you.
>
>
> --
> No one trusts a model except the one who wrote it; Everyone trusts an observation except the one who made it- Harlow Shapley
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130115/608c2840/attachment.html>
More information about the petsc-users
mailing list