Esempio n. 1
0
void Elem_face::calcK(Sparse& K){
	if(!isInterior())
		return;

	K.add(row,row,coef);
	K.add(col,col,coef);
	K.add(row,col,-coef);
}
Esempio n. 2
0
	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);
			}
	};
Esempio n. 3
0
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);
};
Esempio n. 4
0
	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);
		}
	};