57 for(jj=0; jj<dofj; jj++)
59 for(ii=0; ii<dofi; ii++, valptr++)
66 for(jj=0; jj<dofj; jj++)
68 for(ii=0; ii<dofi; ii++, valptr++)
70 *valptr = value / (labs((
long)(ii - jj)) + 1.);
94 spm_int_t *colptr, *rowptr, *dofs, *loc2glob;
106 for(j=0; j<spm->
n; j++, colptr++, loc2glob++)
108 jg = spm->
replicated ? j : *loc2glob - baseval;
109 dofj = (spm->
dof > 0) ? spm->
dof : dofs[jg+1] - dofs[jg];
111 for(i=colptr[0]; i<colptr[1]; i++, rowptr++, oldval++)
113 ig = *rowptr - baseval;
114 dofi = ( spm->
dof > 0 ) ? spm->
dof : dofs[ig+1] - dofs[ig];
117 newval += (dofi*dofj);
154 for(k=0; k<spm->
nnz; k++, rowptr++, colptr++, oldval++)
156 ig = *rowptr - baseval;
157 jg = *colptr - baseval;
158 dofi = (spm->
dof > 0) ? spm->
dof : dofs[ig+1] - dofs[ig];
159 dofj = (spm->
dof > 0) ? spm->
dof : dofs[jg+1] - dofs[jg];
162 newval += (dofi*dofj);
float _Complex spm_complex32_t
static void c_spm_dof_extend_csx(spmatrix_t *spm)
Extend a single dof CSX sparse matrix to a multi-dof sparse matrix.
static void c_spm_dof_extend_ijv(spmatrix_t *spm)
Extend a single dof IJV sparse matrix to a multi-dof sparse matrix.
static void c_spm_dof_extend_update_values(spm_complex32_t *newval, spm_complex32_t value, spm_int_t dofi, spm_int_t dofj, int diag)
Update the newval array thanks to the old value and the degrees of freedom.
void c_spmDofExtend(spmatrix_t *spm)
Extend a single dof sparse matrix to a multi-dof sparse matrix.
int spm_int_t
The main integer datatype used in spm arrays.
The sparse matrix data structure.