Ejemplo n.º 1
0
int Initialize( void ) {
    if (gIData == NULL) {
      gIData = (AutoData *)PyMem_Malloc(sizeof(AutoData));
      assert(gIData);
    }

    BlankData(gIData);
    DefaultData(gIData);
    
    return 1;
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
Archivo: ab.c Proyecto: F-A/pydstool
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;
}
Ejemplo n.º 5
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;
}
Ejemplo n.º 6
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);
		}
	}
}