[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: memory bleeding



Yes, of course I destroy the matrix.... The scheme of my code when I create a diagonal Mass-lumping matrix is the code below.

In MatSeqAIJSetPreallocation(M_aux1,6,PETSC_NULL); the number is 6 because in a general coordinates it's possible this matrix changes in a 6x6 full matrix.

"element3D *p_element = lfiber[i].getElement(e)" is a internal procedure to obtain information about the element

------------------------------------------------------------------

Mat M_aux1, M_aux2;

MatCreateSeqAIJ(PETSC_COMM_SELF, 6, 6, 6, PETSC_NULL, &M_aux1);
MatCreateSeqAIJ(PETSC_COMM_SELF, 6, 6, 6, PETSC_NULL, &M_aux2);

MatSeqAIJSetPreallocation(M_aux1,6,PETSC_NULL);
MatSeqAIJSetPreallocation(M_aux2,6,PETSC_NULL);

MatSetFromOptions(M_aux1);
MatSetOption(M_aux1, MAT_SYMMETRIC);
MatSetOption(M_aux1, MAT_IGNORE_ZERO_ENTRIES);

MatSetFromOptions(M_aux2);
MatSetOption(M_aux2, MAT_SYMMETRIC);
MatSetOption(M_aux2, MAT_IGNORE_ZERO_ENTRIES);


for(uint32_t i=0; i<nfiber;i++) { for(uint32_t e=0; e<lfiber[i].nelements;e++) {

     MatZeroentries(M_aux1);
     MatZeroentries(M_aux2);

     element3D *p_element = lfiber[i].getElement(e);

     p_element->updateTs();

MatSetValue(M_aux1, 0, 0, p_element->L0 * value.pho / 6., INSERT_VALUES);
MatSetValue(M_aux1, 1, 1, p_element->L0 * value.pho / 6., INSERT_VALUES);
MatSetValue(M_aux1, 2, 2, p_element->L0 * value.pho / 6., INSERT_VALUES);
MatSetValue(M_aux1, 3, 3, p_element->L0 * value.pho / 6., INSERT_VALUES);
MatSetValue(M_aux1, 4, 4, p_element->L0 * value.pho / 6., INSERT_VALUES);
MatSetValue(M_aux1, 5, 5, p_element->L0 * value.pho / 6., INSERT_VALUES);



MatAssemblyBegin(M_aux1,MAT_FINAL_ASSEMBLY); MatAssemblyEnd(M_aux1,MAT_FINAL_ASSEMBLY);


MatMatMult(M_aux1,p_element->T,&M_aux2); MatMatMult(p_element->TT,M_aux2,&M_aux1);

     }

     // here I work with the matrix M_aux2, but in this point the memory
     // is constant. The code doesn't waste memory
}

MatDestroy(M_aux1);
MatDestroy(M_aux2);

------------------------


Thanks,

best regards


-- Jordi Marcé-Nogué Dept. Resistència de Materials i Estructures a l'Enginyeria Universitat Politècnica de Catalunya (UPC)

Edifici T45 - despatx 137
ETSEIAT (Terrassa)

phone: +34 937 398 728
mail: jordi.marce@xxxxxxx