hypre/drivers/ParaGrid3D/parallel3D/Method_Matrices.cpp
2000-12-15 00:21:10 +00:00

36 lines
689 B
C++

#include "Method.h"
void Method::Mass( Matrix *Masa){
int i, j, k, ii, jj, start, end, num_tr;
double den;
double *MM=new double [DimPN[level]];
end = DimPN[level];
for(i=0; i<end; i++)
MM[i]=0;
for(num_tr=0; num_tr<NTR; num_tr++){
den = volume(num_tr)/20.;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
ii = TR[num_tr][i];
jj = TR[num_tr][j];
start = V[level][ii];
end = V[level][ii+1];
for(k=start; k<end; k++){
if(jj==PN[level][k]){
if(i==j)
MM[k]+=2*den;
else
MM[k]+=den;
break;
}
}
}
}
}
Masa->InitMatrix(V[level], PN[level], MM, NN[level], &Dir,
dim_Dir[level], &Atribut);
}