[petsc-users] Assemble a Jacobian for a DMComposite object.
(Rebecca) Xuefei YUAN
xy2102 at columbia.edu
Fri Mar 19 15:37:36 CDT 2010
Dear Mike,
Thanks for the reply.
I know that MatSetValuesStencil() is not ready for a Jacobian of
DMComposite object, so I am using MatSetValues() to do it row by row.
What I am working now is to get the global indices idxm[] and idxn[]
for each processor, so I need some information transferred between
processors.
I think the following iterations would give me the necessary
information for global row indices idxm[]
if (rank > 0){
PetscInt receivedNumber[rank];
for (i=0;i<rank;i++){//recieve from rank i
}
}
if (rank < size-1){
PetscInt sentNumber[size-rank-1];
for (i=rank+1;i<size;i++){//send to rank i
}
}
For the column indices idxn[], it is the next step.
Thanks very much for your kind reply again!
Rebecca
Quoting Mike McCourt <mccomic at mcs.anl.gov>:
> Sorry, MatSetValuesStencil() only "knows" about DA's, not more
> general DMs. In the arguments to MatSetValuesStencil() there is no way
> to indicate anything except the location in a single regular grid. We
> all need to think about what makes sense for an interface for
> composite grids.
>
> I think we're working on this now. But it's not ready yet.
>
> -Mike
>
> ----- Original Message -----
> From: "(Rebecca) Xuefei YUAN" <xy2102 at columbia.edu>
> To: "PETSc users list" <petsc-users at mcs.anl.gov>
> Sent: Friday, March 19, 2010 3:24:10 PM GMT -06:00 US/Canada Central
> Subject: [petsc-users] Assemble a Jacobian for a DMComposite object.
>
> Dear all,
>
> I am working on assembling a Jacobian for a DMComposite object.
>
> In FormJacobian(), I am not sure how to use MatSetValuesStencil() in
> this case, so I use MatSetValues() to assemble this Jacobian row by row.
>
> MatSetValues(Mat mat,PetscInt m,const PetscInt idxm[],PetscInt n,const
> PetscInt idxn[],const PetscScalar v[],InsertMode addv)
>
> To specify the row and columns' global indices idxm[] and idxn[], I
> need processor (rank=i) to receive (info.xm*info.ym) from each
> processor (rank<i), totally n(=rank) ints, and send its
> info.xm*info.ym to each processor (rank<i), totally m (=size-rank-1).
>
> Is there an existing call for that?
>
> Thanks a lot!
>
> Rebecca
>
>
>
>
> --
> (Rebecca) Xuefei YUAN
> Department of Applied Physics and Applied Mathematics
> Columbia University
> Tel:917-399-8032
> www.columbia.edu/~xy2102
>
>
>
--
(Rebecca) Xuefei YUAN
Department of Applied Physics and Applied Mathematics
Columbia University
Tel:917-399-8032
www.columbia.edu/~xy2102
More information about the petsc-users
mailing list