54 double *valptr = newval;
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;
95 double *newval, *oldval, *oldvalptr;
97 oldval = oldvalptr = (
double*)(spm->
values);
98 newval = spm->
values = malloc( spm->
nnzexp *
sizeof(
double) );
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);
144 double *newval, *oldval, *oldvalptr;
146 oldval = oldvalptr = (
double*)(spm->
values);
147 newval = spm->
values = malloc( spm->
nnzexp *
sizeof(
double) );
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);
static void d_spm_dof_extend_ijv(spmatrix_t *spm)
Extend a single dof IJV sparse matrix to a multi-dof sparse matrix.
void d_spmDofExtend(spmatrix_t *spm)
Extend a single dof sparse matrix to a multi-dof sparse matrix.
static void d_spm_dof_extend_csx(spmatrix_t *spm)
Extend a single dof CSX sparse matrix to a multi-dof sparse matrix.
static void d_spm_dof_extend_update_values(double *newval, double 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.
int spm_int_t
The main integer datatype used in spm arrays.
The sparse matrix data structure.