[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