コード例 #1
0
int main()


{
    int el,x,y;
    printf("podaj znak jaki chcesz wypisac:\n");
    scanf("%c", &el);
    printf("podaj ilosc wierszy:\n");
    scanf("%d", &x);
    printf(" podaj ilosc kolumn:\n");
    scanf("%d", &y);
    znak( el,x,y);
      
    system("pause");
  }
コード例 #2
0
ファイル: main.cpp プロジェクト: ba50/nBody
//----------------------------------------------------------------------
int main(int argc, char** argv)
{
	
	int i, j, k;
	double r_ij;

	FILE *XYZ_file, *p_file;

	std::ifstream IN_file;

	std::string buffer;
	std::string IN_filename = "in";
	std::string OUT_filename ="out";
	std::string XYZ_filename = "xyz";

	parameters param;
	state stat;
	Vector sumaP;

	/* Load data */

	IN_file.open(IN_filename);

	IN_file >> param.n;
	std::getline(IN_file, buffer);

	IN_file >> param.m;
	std::getline(IN_file, buffer);

	IN_file >> param.e;
	std::getline(IN_file, buffer);

	IN_file >> param.R;
	std::getline(IN_file, buffer);

	IN_file >> param.f;
	std::getline(IN_file, buffer);

	IN_file >> param.L;
	std::getline(IN_file, buffer);

	IN_file >> param.a;
	std::getline(IN_file, buffer);

	IN_file >> stat.T;
	std::getline(IN_file, buffer);

	IN_file >> param.tau;
	std::getline(IN_file, buffer);

	IN_file >> param.So;
	std::getline(IN_file, buffer);

	IN_file >> param.Sd;
	std::getline(IN_file, buffer);

	IN_file >> param.Sout;
	std::getline(IN_file, buffer);

	IN_file >> param.Sxyz;
	std::getline(IN_file, buffer);

	IN_file.close();

	param.L = param.L * param.a*(param.n - 1);

	/* Okreslanie stanu poczatkowego ukladu */

	srand(time_t(NULL));

	param.N = (int) pow(param.n, 3);

	stat.r = new Vector[param.N];
	stat.p = new Vector[param.N];
	stat.F_p = new Vector[param.N];
	stat.F_s = new Vector[param.N];
printf("init \n");
	for (i = 0; i < param.n; i++){
		for (j = 0; j < param.n; j++){
			for (k = 0; k < param.n; k++){
				stat.r[i + j*param.n + k*param.n*param.n].x = (i - (param.n - 1) / 2.f)*param.a + (j - (param.n - 1) / 2) * param.a / 2.f + (k - (param.n - 1) / 2)*param.a / 2.f;
				stat.r[i + j*param.n + k*param.n*param.n].y = (j - (param.n - 1) / 2)*param.a*sqrt(3.f) / 2 + (k - (param.n - 1) / 2)*param.a*sqrt(3.f) / 6;
				stat.r[i + j*param.n + k*param.n*param.n].z = (k - (param.n - 1) / 2)*param.a * sqrt(2.f / 3.f);
			}
		}
	}
	
/*	XYZ_file = fopen( XYZ_filename.c_str(), "w");

	fprintf(XYZ_file, "%d\n", param.N);
	fprintf(XYZ_file, "STEP:\t%d\n", param.N);
	for (i = 0; i < param.N; i++){
		fprintf(XYZ_file, "Ar\t%f\t%f\t%f\n", stat.r[i].x, stat.r[i].y, stat.r[i].z);
	}
	fprintf(XYZ_file, "\n", param.N);
*/
	printf("p \n");
	for (i = 0; i < param.N; i++){
		stat.r[i].r = sqrt(pow(stat.r[i].x, 2) + pow(stat.r[i].y, 2) + pow(stat.r[i].z, 2));
		
		stat.p[i].x = znak()*sqrt(2*param.m*(-K_B*stat.T*log(r0_1()) / 2));
		stat.p[i].y = znak()*sqrt(2*param.m*(-K_B*stat.T*log(r0_1()) / 2));
		stat.p[i].z = znak()*sqrt(2*param.m*(-K_B*stat.T*log(r0_1()) / 2));

		stat.p[i].r = sqrt(pow(stat.p[i].x, 2) + pow(stat.p[i].y, 2) + pow(stat.p[i].z, 2));
	}

	sumaP.x = 0;
	sumaP.y = 0;
	sumaP.z = 0;
	
	printf("sum p \n");
	for (i = 0; i < param.N; i++){
		sumaP.x += stat.p[i].x;
		sumaP.y += stat.p[i].y;
		sumaP.z += stat.p[i].z;
		
		stat.F_s[i].x = 0;
		stat.F_s[i].y = 0;
		stat.F_s[i].z = 0;

		stat.F_p[i].x = 0;
		stat.F_p[i].y = 0;
		stat.F_p[i].z = 0;
	}

	p_file = fopen( "p", "w");
/*
	for (i = 0; i < param.N; i++){
		stat.p[i].x -= sumaP.x / (double) param.N;
		stat.p[i].y -= sumaP.y / (double) param.N;
		stat.p[i].z -= sumaP.z / (double) param.N;
		fprintf(p_file, "%f\t%f\t%f\n", stat.p[i].x, stat.p[i].y, stat.p[i].z);
	}
*/
	fclose(p_file);
	
	
	/* Initial state */

		stat.V_p = 0;
		stat.V_s = 0;
		printf("main \n");
		for (i = 0; i < param.N; i++){
/*
			if (stat.r[i].r >= param.L){

				stat.V_s += param.f*pow(stat.r[i].r - param.L, 2) / 2;

				stat.F_s[i].x += param.f*(param.L - stat.r[i].r)* stat.r[i].x / stat.r[i].r;
				stat.F_s[i].y += param.f*(param.L - stat.r[i].r)* stat.r[i].y / stat.r[i].r;
				stat.F_s[i].z += param.f*(param.L - stat.r[i].r)* stat.r[i].z / stat.r[i].r;
			}
*/
			for (j = i; j < param.N; j++){
				
				if (i != j){
					r_ij = sqrt(pow(stat.r[i].x - stat.r[j].x, 2) + pow(stat.r[i].y - stat.r[j].y, 2) + pow(stat.r[i].z - stat.r[j].z, 2));

					stat.V_p += param.e*(pow(param.R / r_ij, 12) - 2 * pow(param.R / r_ij, 6));

					stat.F_p[i].x += 12 * param.e*(pow(param.R / r_ij, 12) - pow(param.R / r_ij, 6))*(stat.r[i].x - stat.r[j].x) / pow(r_ij, 2);
					stat.F_p[j].x -= stat.F_p[i].x;

					stat.F_p[i].y += 12 * param.e*(pow(param.R / r_ij, 12) - pow(param.R / r_ij, 6))*(stat.r[i].y - stat.r[j].y) / pow(r_ij, 2);
					stat.F_p[j].y -= stat.F_p[i].y;

					stat.F_p[i].z += 12 * param.e*(pow(param.R / r_ij, 12) - pow(param.R / r_ij, 6))*(stat.r[i].z - stat.r[j].z) / pow(r_ij, 2);
					stat.F_p[j].z -= stat.F_p[i].z;
				}
		
			}
			printf("%d/%d\r",i,param.N);
		}
	printf("\n");
	//--------------------------------------------------------------------
    printf("Hello, OpenCL\n");
    //Setup our GLUT window and OpenGL related things
    //glut callback functions are setup here too
    init_gl(argc, argv);

    //initialize our CL object, this sets up the context
    example = new CL();
    
    //load and build our CL program from the file
    #include "part2.cl" //std::string kernel_source is defined in this file
    example->loadProgram(kernel_source);

    //initialize our particle system with positions, velocities and color
    int num = NUM_PARTICLES;
    std::vector<Vec4> pos(num);
    std::vector<Vec4> color(num);
    std::vector<Vec4> F_p(num);
    std::vector<Vec4> F_s(num);
    std::vector<Vec4> Mom(num);

    //fill our vectors with initial data
    for(int i = 0; i < num; i++)
    {
    	
        pos[i].x = stat.r[i].x;
        pos[i].y = stat.r[i].y;
        pos[i].z = stat.r[i].z;
        pos[i].w = 1.0f;
        
        F_p[i].x = stat.F_p[i].x;
        F_p[i].y = stat.F_p[i].y;
        F_p[i].z = stat.F_p[i].z;
        F_p[i].w = 1.0f;
        
        F_s[i].x = stat.F_s[i].x;
        F_s[i].y = stat.F_s[i].y;
        F_s[i].z = stat.F_s[i].z;
        F_s[i].w = 1.0f;
        
        Mom[i].x = stat.p[i].x;
        Mom[i].y = stat.p[i].y;
        Mom[i].z = stat.p[i].z;
        Mom[i].w = 1.0f;
        
        color[i] = Vec4(1.0f, 0.0f,0.0f, 1.0f);
    }
    
    

    //our load data function sends our initial values to the GPU
    example->loadData(pos, color,  F_p, F_s, Mom);
    //initialize the kernel
    example->popCorn();
    
    //this starts the GLUT program, from here on out everything we want
    //to do needs to be done in glut callback functions
    glutMainLoop();

}