Example #1
0
NPolygon Rasterizer::ClipCheck(vector<Vertex> & verts)
{
	NPolygon poly(verts, 3);

	Clipper clip(poly);

	poly.ClearPoly();

	poly = clip.GetClippedPoly();
	vector<Vertex> tempVerts = poly.GetVertices();
	for (int i = 0; i < poly.GetSides(); i++)
	{
		tempVerts[i]._w = 1.0f/tempVerts[i]._w;
		tempVerts[i]._x *= tempVerts[i]._w;
		tempVerts[i]._y *= tempVerts[i]._w;
		tempVerts[i]._u *= tempVerts[i]._w;
		tempVerts[i]._v *= tempVerts[i]._w;
		_viewPortMatrix.Transformation(tempVerts[i]);
	}
	_gradient = Gradients(tempVerts, poly.GetSides());
	poly.SetVertices(tempVerts);

	return poly;
}
Example #2
0
void LES_Modelling(double*** eddy_viscosity,
                   double*** velocity_x,
                   double*** velocity_y, double*** velocity_z,
                   double*** rho,
                   double dx, double* dy, double dz,
                   int ldx, int ldy, int ldz)
{

  for (int k = 0; k < ldz; k++){
    for (int j = 0; j < ldy; j++){
      for (int i = 0; i < ldx; i++){

        // These are the variables that the derivatives will be saved in
        //  order to  compute the filtered rate of strain which is necessary
        //  to compute the eddy viscosity based on the Smagorinsky model

        double u_over_x=0., u_over_y=0., u_over_z=0.,
          v_over_x=0., v_over_y=0., v_over_z=0.,
          w_over_x=0., w_over_y=0., w_over_z=0.;


        //Computing the Gradients of the x component of the velocity
        Gradients(velocity_x,
                  &u_over_x, &u_over_y, &u_over_z,
                  i, j, k,
                  dx, dy, dz);

        //Computing the Gradients of the y component of the velocity
        Gradients(velocity_y,
                  &v_over_x, &v_over_y, &v_over_z,
                  i, j, k,
                  dx, dy, dz);

        //Computing the Gradients of the z component of the velocity
        Gradients(velocity_z,
                  &w_over_x, &w_over_y, &w_over_z,
                  i, j, k,
                  dx, dy, dz);


        // Characteristic filtered rate of strain
        double char_filtered_strain=
          2.*(u_over_x*u_over_x + v_over_y*v_over_y
              +w_over_z*w_over_z + u_over_y*v_over_x + u_over_z*w_over_x
              +v_over_z*w_over_y);

        char_filtered_strain+=
          u_over_y*u_over_y + v_over_x*v_over_x + u_over_z*u_over_z
          +w_over_x*w_over_x + v_over_z*v_over_z + w_over_y*w_over_y;


        char_filtered_strain = sqrt(char_filtered_strain);


        // Computing the (Smagarinsky length)^2
        double C_s =0.12;
        double width_square =dx*dx + dy[j]*dy[j] + dz*dz;
        double length_square = C_s*C_s * width_square;
        

        //Computing the eddy viscosity
        eddy_viscosity[k][j][i] =  length_square * char_filtered_strain*rho[k][j][i];

      }
    }
  }

}