예제 #1
0
int main() {

    vec A = zeros(values*N);
    vec dAdt = zeros(values*N);
    vec M = zeros(N);

    double u, v, w;
    double x, y, z;
    double r, theta, phi;

    long idum = -1;

    // initial conditions

    for (int i=0; i<N; i++) {

        u = ran2(&idum);
        v = ran2(&idum);
        w = ran2(&idum);

        phi = 2*pi*w;
        r = R0*cbrt(u);
        theta = acos(1-2*v);

        x = r*sin(theta)*cos(phi);
        y = r*sin(theta)*sin(phi);
        z = r*cos(theta);

        int j = values*i;

        A(j)   = x;                     // x - position
        A(j+1) = y;                     // y - position
        A(j+2) = z;                     // z - position
        A(j+3) = 0.0;                     // vx - velocity
        A(j+4) = 0.0;                     // vy - velocity
        A(j+5) = 0.0;                     // vz - velocity

        M(i) = sigma*gaussian_deviate(&idum) + mu;
    }


    Solver R = Solver(A, dAdt, M);
    //R.RungeKutta4();
    R.LeapFrog();
}