#include #include "ctops.h" void testTop( Top * top, const char* filename ) { FILE *f; double t; Vector omega, omega0 = { 1.0, -1.0, 0.5 }; Matrix A, A0 = { 1,0,0, 0,1,0, 0,0,1 }; Initialization( top, &omega0, &A0 ); f = fopen(filename, "w" ); for ( t = 0.0; t < 12.0; t += 0.1 ) { Evolution( top, t, &omega, &A ); fprintf(f, "%f %f %f %f %f %f %f %f %f %f %f %f %f\n", t, A.xx, A.xy, A.xz, A.yx, A.yy, A.yz, A.zx, A.zy, A.zz, omega.x, omega.y, omega.z); } fclose(f); } int main() { Top sphere, prolate, oblate, asymtop, recurse; double Ix = 1.0, Iy = 1.5, Iz = 2.0; DefineTop( &sphere , SphericalTop, Ix, Ix, Ix); DefineTop( &prolate, ProlateTop, Ix, Iz, Iz); DefineTop( &oblate, OblateTop, Ix, Ix, Iz); DefineTop( &asymtop, AsymmetricTop, Ix, Iy, Iz); DefineTop( &recurse, RecurTop, Ix, Iy, Iz); testTop( &sphere, "csphere.dat" ); testTop( &prolate, "cprolate.dat" ); testTop( &oblate, "coblate.dat" ); testTop( &asymtop, "casymtop.dat" ); testTop( &recurse, "crecurse.dat" ); FreeTop( &sphere ); FreeTop( &prolate ); FreeTop( &oblate ); FreeTop( &asymtop ); FreeTop( &recurse ); return 0; }