int Initialize( void ) { if (gIData == NULL) { gIData = (AutoData *)PyMem_Malloc(sizeof(AutoData)); assert(gIData); } BlankData(gIData); DefaultData(gIData); return 1; }
PyObject* Reset( void ) { int result = 1; PyObject *OutObj = NULL; result = result && (CleanupSolution(gIData)); result = result && (CleanupSpecialPoints(gIData)); DefaultData(gIData); OutObj = Py_BuildValue("(i)", result); assert(OutObj); return OutObj; }
PyObject* Initialize( void ) { PyObject *OutObj = NULL; if (gIData == NULL) { gIData = (AutoData *)PyMem_Malloc(sizeof(AutoData)); assert(gIData); } BlankData(gIData); DefaultData(gIData); OutObj = Py_BuildValue("(i)", 1); assert(OutObj); return OutObj; }
int main(int argc, char *argv[]) { AutoData *Data; doublereal u[3] = {0., 0., 0.}; integer ipar[3] = {0, 1, 2}; doublereal par[3] = {0., 14., 2.}; Data = (AutoData *)MALLOC(sizeof(AutoData)); BlankData(Data); DefaultData(Data); // Equilibrium points CreateSpecialPoint(Data,3,1,u,3,ipar,par,NULL,NULL,NULL,NULL); // 9 = Beginning point, 1 = branch label Data->iap.irs = 1; // Start from this point Data->print_input = 0; Data->print_output = 0; printf("\nEquilibrium points...\n"); AUTO(Data); system("touch d.ab"); system("cat fort.9 >> d.ab"); system("rm fort.9"); // Periodic orbits CleanupSolution(Data); DefaultData(Data); Data->iap.ips = 2; // BVP Data->iap.irs = 4; // Label of Hopf point Data->iap.ilp = 0; // No detection of folds Data->iap.nicp = 2; // Number of free parameters Data->iap.nmx = 150; // Number of points on branch Data->iap.npr = 30; // Output point and cycle after every npr steps Data->rap.dsmax = 0.5; // Maximum arclength stepsize Data->icp = (integer *)REALLOC(Data->icp,Data->iap.nicp*sizeof(integer)); Data->icp[1] = 10; // Adds period to free parameters printf("\nPeriodic orbits...\n"); AUTO(Data); system("touch d.ab"); system("cat fort.9 >> d.ab"); system("rm fort.9"); // Fold points CleanupSolution(Data); DefaultData(Data); Data->iap.irs = 2; // Label of limit point Data->iap.nicp = 2; // Number of free parameters Data->iap.isp = 1; // Turn on detection of branch points Data->iap.isw = 2; // Controls branch switching (?) Data->rap.dsmax = 0.5; // Maximum arclength stepsize Data->icp[1] = 2; // 3rd parameter is free printf("\nFold points...\n"); AUTO(Data); system("touch d.ab"); system("cat fort.9 >> d.ab"); system("rm fort.9"); // Fold points (reverse) CleanupSolution(Data); DefaultData(Data); Data->iap.irs = 2; // Label of limit point Data->iap.nicp = 2; // Number of free parameters Data->iap.isp = 1; // Turn on detection of branch points Data->iap.isw = 2; // Controls branch switching (?) Data->rap.dsmax = 0.5; // Maximum arclength stepsize Data->icp[1] = 2; // 3rd parameter is free Data->rap.ds = -0.01; // Stepsize (reverse) printf("\nFold points (reverse)...\n"); AUTO(Data); system("touch d.ab"); system("cat fort.9 >> d.ab"); system("rm fort.9"); // Hopf points (reverse) CleanupSolution(Data); DefaultData(Data); Data->iap.irs = 4; // Label of hopf point Data->iap.nicp = 2; // Number of free parameters Data->iap.isw = 2; // Controls branch switching (?) Data->rap.dsmax = 0.5; // Maximum arclength stepsize Data->icp[1] = 2; // 3rd parameter is free Data->rap.ds = -0.01; // Stepsize (reverse) printf("\nHopf points (reverse)...\n"); AUTO(Data); system("touch d.ab"); system("cat fort.9 >> d.ab"); system("rm fort.9"); CleanupAll(Data); return 0; }
int main(int argc, char *argv[]) { AutoData *Data; doublereal *cycle; doublereal *ups, *udotps, *rldot; doublereal period; integer i, j; doublereal u[3] = {0., 0., 0.}; integer ipar[4] = {0, 1, 2, 10}; doublereal par[4] = {280., 2.6666666666666665, 10., 0.4332}; Data = (AutoData *)MALLOC(sizeof(AutoData)); BlankData(Data); DefaultData(Data); Data->iap.irs = 1; Data->iap.ips = 2; Data->iap.ilp = 0; Data->iap.ndim = 3; Data->iap.nicp = 2; Data->iap.ntst = 20; Data->iap.ncol = 4; Data->iap.isp = 2; Data->rap.ds = -0.5; Data->rap.dsmin = 0.01; Data->rap.dsmax = 25.0; Data->rap.epsl = 1e-7; Data->rap.epsu = 1e-7; Data->rap.epss = 0.0001; Data->iap.nmx = 50; Data->rap.rl0 = 200.; Data->rap.rl1 = 400.; // Load data from lor.dat FILE *fp = fopen("lor.dat","r"); if (fp == NULL) { fprintf(stdout,"Error: Could not open lor.dat\n"); exit(1); } cycle = (doublereal *)MALLOC(4*117*sizeof(doublereal)); for (j=0; j<117; j++) { fscanf(fp,"%lf",&cycle[4*j]); for (i=0; i<3; i++) { fscanf(fp,"%lf",&cycle[1+i+j*4]); } } fclose(fp); // Tweak times period = cycle[4*116] - cycle[0]; for (i=116; i>=0; i--) cycle[4*i] = (cycle[4*i] - cycle[0])/period; ups = (doublereal *)MALLOC((Data->iap.ncol*Data->iap.ntst+1)*(Data->iap.ndim+1)*sizeof(doublereal)); udotps = (doublereal *)MALLOC((Data->iap.ncol*Data->iap.ntst+1)*Data->iap.ndim*sizeof(doublereal)); rldot = (doublereal *)MALLOC(Data->iap.nicp*sizeof(doublereal)); prepare_cycle(Data,cycle, 117, ups, udotps, rldot); Data->icp = (integer *)REALLOC(Data->icp,Data->iap.nicp*sizeof(integer)); Data->icp[1] = 10; // Create special point CreateSpecialPoint(Data,9,1,u,4,ipar,par,Data->icp,ups,udotps,rldot); AUTO(Data); CleanupAll(Data); return 0; }
/*主函数*/ void main() { int n = 0; for (;;) { switch (menu_select()) { case 1: printf("\n 添加记录到通讯录\n"); n = Input(pe, n); printf("添加完毕,按任意键返回"); __fpurge(stdin); getchar(); system("clear"); break; case 2: printf("\n 通讯录记录表\n"); Display(pe, n); printf("输出完毕,按任意键返回"); __fpurge(stdin); getchar(); system("clear"); break; case 3: printf("\n 从通讯录中删除记录\n"); n = Delete_a_record(pe, n); printf("删除完毕,按任意键返回"); __fpurge(stdin); getchar(); system("clear"); break; case 4: printf("\n 在通讯录中查找记录\n"); Query_a_record(pe, n); printf("查找完毕,按任意键返回"); __fpurge(stdin); getchar(); system("clear"); break; case 5: printf("\n 修改通讯录中的记录\n"); Change(pe, n); printf("修改完毕,按任意键返回"); __fpurge(stdin); getchar(); system("clear"); break; case 6: printf("\n 保存功能\n"); WritetoText(pe, n); printf("保存完毕,按任意键返回"); __fpurge(stdin); getchar(); system("clear"); break; case 7: printf("\n 默认数据\n"); DefaultData(pe, &n); printf("加载完毕,按任意键返回\n"); Display(pe, n); __fpurge(stdin); getchar(); system("clear"); break; case 0: printf("\n 谢谢使用,再见!\n"); __fpurge(stdin); getchar(); system("clear"); exit(0); } } }