> On Mar 19, 2015, at 4:42 AM, Mohammad Imtiaz <[email protected]> > wrote: > > Thank you, I am trying this now. > > One more question: > > I am my assigning my coupling matrix R as one of the state variable in the > DMDA passed to RHS function even though R does not change once > initialized.
Not sure what you mean by this. > Is this the most efficient way to do this? So long as you are just passing around the Mat R then it is efficient, since R is just a pointer to the data structure. If you are calling MatDuplicate() on R or creating a new R repeatedly then no it would not be efficient. Barry > > Thanks > Mohammad > > > > > > > On 18/03/2015 2:10 am, "Barry Smith" <[email protected]> wrote: > >> >> 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 >>> <[email protected]> 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 >> >> Scanned by Messagelabs ***
