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; }
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]; } } } }