[petsc-dev] MatSetValuesBlocked not inserting values
Jacob Faibussowitsch
jacob.fai at gmail.com
Wed Apr 8 16:53:28 CDT 2020
Supposed to be the block row and column indices. So they are the atom global IDs.
Best regards,
Jacob Faibussowitsch
(Jacob Fai - booss - oh - vitch)
Cell: (312) 694-3391
> On Apr 8, 2020, at 4:29 PM, Jed Brown <jed at jedbrown.org> wrote:
>
> What are idxm[0] and idxn[0] in this code?
>
> Jacob Faibussowitsch <jacob.fai at gmail.com> writes:
>
>> Hello All,
>>
>> I am using MATSBAIJ to make a symmetric hamiltonian matrix, but for some reason MatSetValuesBlocked isn’t inserting anything.
>>
>> Setup:
>>
>> I want a 4n x 4n symmetric matrix, where each MatSetValuesBlocked inserts a 4x4 sub-matrix of values into the global matrix, positioned by the global ID of two atoms that I am extracting. So the 4x4 interaction sub matrix between atom 1 and atom 4 will be in rows 0-4 and cols 16-20.
>>
>> My non-working implementation:
>>
>> PetscInt bs = 4;
>>
>> ierr = MatCreateSBAIJ(comm, bs, bs*nLocalAtoms, bs*nLocalAtoms, PETSC_DETERMINE, PETSC_DETERMINE, 1, NULL, 1, NULL, H);CHKERRQ(ierr);
>> ierr = MatSetOption(*H, MAT_SYMMETRIC, PETSC_TRUE);CHKERRQ(ierr);
>> ierr = MatSetUp(*H);CHKERRQ(ierr);
>> .
>> .
>> .
>> START LOOP {
>>
>> Calculations...
>>
>> const PetscScalar valmat[16] = {Es[0], Es[1], Es[2], Es[3], Ex[0], Ex[1], Ex[2], Ex[3], Ey[0], Ey[1], Ey[2], Ey[3], Ez[0], Ez[1], Ez[2], Ez[3]};
>> PetscInt idxm[1], idxn[1];
>> PetscInt m = 1, n = 1;
>>
>> if (globalIDs[i] < globalIDs[neighidx[0]]-1) {
>> // Insert in upper triangular
>> idxm[0] = globalIDs[i]-1;
>> idxn[0] = globalIDs[neighidx[0]]-1;
>> } else {
>> // swap so we insert on upper triangular
>> idxn[0] = globalIDs[i]-1;
>> idxm[0] = globalIDs[neighidx[0]]-1;
>> }
>> ierr = MatSetValuesBlocked(*H, m, (const PetscInt *) idxm, n, (const PetscInt *) idxn, valmat, INSERT_VALUES);CHKERRQ(ierr);
>> } END LOOP
>>
>> ierr = MatAssemblyBegin(*H, MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);
>> ierr = MatAssemblyEnd(*H, MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);
>>
>> RETURN H
>>
>> Output from -mat_view:
>>
>> Mat Object: 2 MPI processes
>> type: mpisbaij
>> row 0:
>> row 1:
>> row 2:
>> row 3:
>> row 4:
>> row 5:
>> row 6:
>> row 7:
>> row 8:
>> row 9:
>> row 10:
>> row 11:
>> row 12:
>> row 13:
>> row 14:
>> row 15:
>>
>> I also checked -info :mat: and it also reports X unneeded storage space but more importantly, 0 used. I am not sure what is going wrong here.
>>
>> Best regards,
>>
>> Jacob Faibussowitsch
>> (Jacob Fai - booss - oh - vitch)
>> Cell: (312) 694-3391
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20200408/eb4b24de/attachment.html>
More information about the petsc-dev
mailing list