void Elem_face::calcK(Sparse& K){ if(!isInterior()) return; K.add(row,row,coef); K.add(col,col,coef); K.add(row,col,-coef); }
void initialize_sparse(Sparse& K){ Parent::initialize_sparse(K); for(int a=0;a<NUM_NODES;a++) for(int i=0;i<DIM;i++){ if(nodes[a]->dof[i].isDirichlet) continue; for(unsigned alpha=0;alpha<num_dof_p;alpha++) K.add(nodes[a]->dof[i].mi,m_pressure_id+alpha); } };
void Elem_face::initialize(Sparse& K){ if(!isInterior()) return; row=elem0->get_pressureID(); col=elem1->get_pressureID(); if(col<row){ int tmp=row; row=col; col=tmp; } K.add(row,col); };
void calcK_UP(Sparse& K){ for(unsigned alpha=0;alpha<num_dof_p;alpha++) for(unsigned a=0;a<NUM_NODES;a++) for(unsigned i=0;i<DIM;i++){ if(nodes[a]->dof[i].isDirichlet) continue; int row=nodes[a]->dof[i].mi; //issue2 //K.add(row,m_pressure_id,m_dNdx[a][i]*m_Volume); double sum=0; for(unsigned gpi=0;gpi<NUM_GP;gpi++){ Default_gauss_point* gp=gauss_points[gpi]; sum+= gp->coor[alpha]*(m_J_rel_[gpi]+1.)*gp->dNdx[a][i]* gp->weight*gp->jacob; } K.add(row,m_pressure_id+alpha,sum); } };