[petsc-users] Position based coupling matrix
Barry Smith
bsmith at mcs.anl.gov
Tue Mar 17 10:10:58 CDT 2015
You will need to associate the vector with a DMDA so you can use DMDAVecGetArray() to index into it. Use DMCreateGlobalVector (with the appropriate DMDA) to get the vector instead of VecCreate() before you do the VecLoad().
Barry
> On Mar 17, 2015, at 6:15 AM, Mohammad Imtiaz <M.Imtiaz at victorchang.edu.au> wrote:
>
> Hi,
>
> I am trying to solve a 2 dimensional finite difference reaction diffusion problem where diffusional coupling is position based, i.e. fibres, discontinuities etc occur due to material properties (e.g. Heart tissue).
>
> I have managed to import a matlab matrix representing coupling in four directions as below:
>
> PetscViewerBinaryOpen(PETSC_COMM_WORLD,”R",FILE_MODE_READ,&fd);
> VecCreate(PETSC_COMM_WORLD,&R);
> VecLoad(R,fd);
>
> …..Repeated to get L, U, D, coupling.
>
> How can I now make R,L,U,D available to my finite difference part of the code? So that I can do
>
>
> v is field.
>
> vxx = u[j][i].R*(u[j][i-1].v - u[j][i].v) + u[j][i].L*(u[j][i+1].v – u[j][i].v);
>
> And similarly for up & down coupling.
>
>
>
>
>
> Thanks
> Mohammad Imtiaz
More information about the petsc-users
mailing list