Vector Vert::max_curvature_dir() { if (mem_max_curvature_dir == Vector()) { calc_curvature(); } return mem_max_curvature_dir; }
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; }