Exemple #1
0
Vector Vert::max_curvature_dir() {
    if (mem_max_curvature_dir == Vector()) {
        calc_curvature();
    }

    return mem_max_curvature_dir;
}
Exemple #2
0
double calc_time_derivs(double *de, double *x, double *y, double *gamma,
			double c[],
			double *vx, double *vy, double *dgamma, int np) {

    int j;
    double *xe, *ye, *se, *kappa, *dgamma_pre, *T, *U, *wx, *wy;

    xe = vector(np);
    ye = vector(np);
    se = vector(np);
    kappa = vector(np);
    dgamma_pre = vector(np);
    T = vector(np);
    U = vector(np);
    wx = vector(np);
    wy = vector(np);

    d1(x, de, 1.0, np, xe);
    d1(y, de, 0.0, np, ye);
    for(j = 0; j < np; j++)
	se[j] = sqrt(xe[j]*xe[j] + ye[j]*ye[j]);

    calc_curvature(de, x, y, xe, ye, se, np, kappa);

    birkhoff_integral(de, x, y, xe, ye, se, gamma, c[3], np, wx, wy);

    printf("\nU:\n");
    for(j = 0; j < np; j++) {
	U[j] = (-ye[j]*wx[j] + xe[j]*wy[j])/se[j];
	printf("%i: %e\n", j, U[j]);
    }
    calc_T(de, xe, ye, U, np, T);

    
    for(j = 0; j < np; j++) {
	dgamma_pre[j] = 
	    + (T[j] - (wx[j]*xe[j]+wy[j]*ye[j])/se[j])*gamma[j]/se[j]
	    + c[0]*kappa[j]
	    - c[1]*U[j]
	    - c[2]*y[j];

	vx[j] = (-ye[j]*U[j] + xe[j]*T[j])/se[j];
        vy[j] = ( xe[j]*U[j] + ye[j]*T[j])/se[j];
    }

    d1(dgamma_pre, de, 0.0, np, dgamma);

    
    free(xe);
    free(ye);
    free(se);
    free(kappa);
    free(dgamma_pre);
    free(T);
    free(U);
    free(wx);
    free(wy);

    return 0.0;
}