コード例 #1
0
ファイル: yoyo.c プロジェクト: Guilhem117/rug-warrior
void start_yoyo() 
{   printf("Yo-Yo\n");
    yo_tune();
    init_velocity();             /* Needed by track */
    sleep(1.0);
    start_process(yoyo(yo_inches));
}
コード例 #2
0
void test_mainRRR(void)
{
	typedef CSimuStaticRod T;
	CMeMaterialProperty mtl;
	mtl.setYoung(2.00e5);
	mtl.setPoisson(0.4);
	mtl.setDamping(50.0, 0.0);
	mtl.setMassDamping(1.0e-4);
	int nv=2; 
	int nelm=1;
	const double z1 = 0.02;
	Vector3d pVertex[]={
		Vector3d(2,0,0),  Vector3d(3,0,0), 
	};		
	Vector3d init_velocity(0,0,0);
	int element[4]={0,1, 2, 3};
	const double rod_crossarea=1e-6;
	T *s = new T(pVertex, nv, init_velocity, element, nelm, rod_crossarea, mtl);	

	//set constraints
	int fixednodes[]={0}; 
	const int len = sizeof(fixednodes)/sizeof(int);
	CFixedPositionConstraint* fixpos = new CFixedPositionConstraint(10, 0, 1e10, len, fixednodes);
	s->addConstraint(fixpos);
	//s->setGravityAccelertion(Vector3d(0,-10,0));

	{
		int movenodes[]={1};
		Vector3d vel(sqrt(2.0)-1, 0, -1); vel*=1e-3;
		CVelocityConstraint *velo = new CVelocityConstraint(10, 1, 1000, 1, movenodes, vel);
		//s->addConstraint(velo);
	}
	{
		const Vector3d center=pVertex[0];
		const Vector3d norm(0,1,0);
		int vertbuffer[]={1};
		const double av = PI*1.0*1e-3 *0.50;//0.25000;
		CPlanarRotationConstraint *r = new CPlanarRotationConstraint(
			10, 0, 1000,
			1, vertbuffer, 
			center, norm, av);
		s->addConstraint(r);
	}
	{
		int fixednodes[]={1};
		const int len = sizeof(fixednodes)/sizeof(int);
		CFixedPositionConstraint* fixpos = new CFixedPositionConstraint(15, 1001, 1500, len, fixednodes);
		//s->addConstraint(fixpos);
	}

	CSimuEngine e;
	e.addSimuObject(s);
	e.setTimestep(10.00e-5); // max step for verlet
	e.startSimulationInMiliSeconds(10000, 50);
	s->exportElementState(0, mtl, stdout);
}
コード例 #3
0
ファイル: simu_test.cpp プロジェクト: nanzhang790/View3dn
void test_mainTET(void)
{
	typedef CSimuStaticRod T;
	CMeMaterialProperty mtl;
	mtl.setYoung(3.00e5);
	mtl.setPoisson(0.40);
	mtl.setDamping(40.00, 0.0);
	mtl.setMassDamping(1.0e-4);
	int nv=4, nelm=6;
	Vector3d pVertex[]={
		Vector3d(0,0,0), Vector3d(1,0,0),
		Vector3d(0,1,0), Vector3d(0,0,1),	
	};		
	Vector3d init_velocity(0,0,0);
	int element[12]={3,0, 0,1, 1, 2, 2, 0, 3, 1, 3, 2};
	const double rod_crossarea=1e-5;
	T *s = new T(pVertex, nv, init_velocity, element, nelm,	rod_crossarea, mtl);

	//set constraints
	int fixednodes[]={0,1, 2}; 
	const int len = sizeof(fixednodes)/sizeof(int);
	CFixedPositionConstraint* fixpos = new CFixedPositionConstraint(10, 0, 1e10, len, fixednodes);
	s->addConstraint(fixpos);
	s->setGravityAccelertion(Vector3d(0,0,0));
	const double dx = 1;
	const double dy = 0.0;
	const double dz= 0.99;
	{
		int movenodes[]={3};
		Vector3d vel(dx, dy, dz); vel*=1.00e-3;
		CVelocityConstraint *velo = new CVelocityConstraint(10, 1, 1000, 1, movenodes, vel);
		s->addConstraint(velo);
	}
	{
		int movenodes[]={3};
		Vector3d vel(-dx, -dy, -dz); vel*=1.000e-3;
		CVelocityConstraint *velo = new CVelocityConstraint(20, 1001, 2000, 1, movenodes, vel);
		//s->addConstraint(velo);
	}

	CSimuEngine e;
	e.addSimuObject(s);
	e.setTimestep(2.00e-4); // max step for verlet

	const int timerid = 0;
	startFastTimer(timerid);
	e.startSimulationInMiliSeconds(10000, 50);
	//e.startSimulation(100, 1);
	stopFastTimer(timerid);
	reportTimeDifference(timerid, "Hemi sphere simmu. run time:");
	s->exportElementState(0, mtl, stdout);
	//s->exportElementState(4, mtl, stdout);
	//s->exportElementState(5, mtl, stdout);

}
コード例 #4
0
ファイル: simu_test.cpp プロジェクト: nanzhang790/View3dn
//void test_main(void)
void test_mainTTTT(void)
{
	CMeMaterialProperty mtl;
	mtl.setYoung(4.0e4);
	int nv, nelm, nface;
	Vector3d* pVertex;
	Vector3d init_velocity(0,0,0);
	int *face, *element;
	int nv_per_elm=4, meshtype;
	const double thickness=0.001;

	bool simLoadNeutralMeshFile(const char *fname, 
	Vector3d *& pVertex, int &nv, 
	int *& pFace, int &ntri,
	int *& pTet, int &ntet, int &meshtype);
	bool r = simLoadNeutralMeshFile("./cubemesh502.mesh", pVertex, nv, face, nface, element, nelm, meshtype);

	CSimuSpringObj *ss = new CSimuSpringObj(
		1,					//springtype, 0: Vangalder, 1: Lloyd
		pVertex, nv,		//vertex array and length	
		init_velocity,		//initial vertex velocity
		1,					//const int isSolid,							//solid or surface 1: solid, 0: surface
		&element[0], nv_per_elm, nelm,	thickness, mtl);
	CSimuSpringObj& s= *ss;
	printf("Spring object spring count is %d\n", s.getElementCount());

	//set constraints
	CVertexConstraints constraints;
	constraints.setFixedPositionXYZ();
	int buffer[]={61, 169, 168, 3, 108, 104, 9, 111, 110, 0, 
				102, 107, 4, 105, 113, 
				6, 174, 106, 8, 180, 109, 10, 112, 176,
				61, 177
	};
	for (int i=0; i<26; i++){
		s.setConstraints(buffer[i], constraints);
	}
	s.setGravityAccelertion(Vector3d(0,-2,0));

	//velocity verlet integration method
	const double dt=0.0005;		//1MS
	CSimuEngine e;
	e.addSimuObject(ss);
	e.setTimestep(dt);

	const int timerid = 0;
	startFastTimer(timerid);
	e.startSimulation(3000, 10);
	stopFastTimer(timerid);
	reportTimeDifference(timerid, "MASSSPRING. run time:");
}
コード例 #5
0
ファイル: simu_test.cpp プロジェクト: nanzhang790/View3dn
void test_mainSSS(void)
{
	CMeMaterialProperty mtl;
	mtl.setYoung(2e4);
	mtl.setMassDamping(5e-3);
	mtl.m_rigid = 2;
	mtl.setDamping(0.50, 0.50);
	const int nv=6;
	Vector3d pVertex[nv]={
		Vector3d(0, 0, 0),
		Vector3d(1, 0, 0),
		Vector3d(0, 1, 0),
		Vector3d(1, 1, 0),
		Vector3d(0.5, 1.5, 0),
		Vector3d(0.5, -0.5, 0)
	};
	Vector3d init_velocity(0,0,0);
	const int nelm=4;
	Vector3i element[nelm]={
		Vector3i(0, 1, 3), 
		Vector3i(0, 3, 2),
		Vector3i(2, 3, 4),
		Vector3i(0, 5, 1)
	};
	const int nv_per_elm=3;
	const double shell_thickness=0.001;
	const int isstatic = 0;
	typedef CSimuThinshell T;
	T *pshell = new T(
		pVertex, 6,					//vertex array and length
		init_velocity,					//vertex velocity
		&element[0].x, nv_per_elm, 4,   //element information
		shell_thickness,
		mtl,							//material property
		isstatic
		), &s = *pshell;
	//set constraints
	int fixednodes[]={0, 3};
	const int len = sizeof(fixednodes)/sizeof(int);
	CFixedPositionConstraint* fixpos = new CFixedPositionConstraint(10, 0, 1e10, len, fixednodes);
	s.addConstraint(fixpos);
	s.setGravityAccelertion(Vector3d(0,0,-10));

	CSimuEngine e;
	e.addSimuObject(pshell);
	e.setTimestep(30e-3);  //max step len for implicit
	//e.setTimestep(70e-3);  //max step len for explicit
	e.startSimulation(10000, 50);

}
コード例 #6
0
ファイル: simu_test.cpp プロジェクト: nanzhang790/View3dn
void test_mainxx(void)
{
	CMeMaterialProperty mtl;
	mtl.setYoung(1e9);
	const int nv=24;
	double pVertex[nv*3]={
		-0.00000000033528,-0.00000000033528,0.00000000298023,
		0.02999999966472,-0.00000000033528,0.00000000298023,
		-0.00000000033528,0.02999999966472,0.00000000298023,
		0.02999999966472,0.02999999966472,0.00000000298023,
		-0.00000000033528,-0.00000000033528,0.03000000298023,
		0.02999999966472,-0.00000000033528,0.03000000298023,
		-0.00000000033528,0.02999999966472,0.03000000298023,
		0.02999999966472,0.02999999966472,0.03000000298023,
		-0.00000000033528,-0.00000000033528,0.06000000298023,
		0.02999999966472,-0.00000000033528,0.06000000298023,
		-0.00000000033528,0.02999999966472,0.06000000298023,
		0.02999999966472,0.02999999966472,0.06000000298023,
		-0.00000000033528,-0.00000000033528,0.09000000298023,
		0.02999999966472,-0.00000000033528,0.09000000298023,
		-0.00000000033528,0.02999999966472,0.09000000298023,
		0.02999999966472,0.02999999966472,0.09000000298023,
		-0.00000000033528,-0.00000000033528,0.12000000298023,
		0.02999999966472,-0.00000000033528,0.12000000298023,
		-0.00000000033528,0.02999999966472,0.12000000298023,
		0.02999999966472,0.02999999966472,0.12000000298023,
		-0.00000000033528,-0.00000000033528,0.15000000298023,
		0.02999999966472,-0.00000000033528,0.15000000298023,
		-0.00000000033528,0.02999999966472,0.15000000298023,
		0.02999999966472,0.02999999966472,0.15000000298023
	};
		
	Vector3d init_velocity(0,0,0);
	const int nelm=30;
	int element[nelm*4]={
		1,2,3,5,
		5,6,2,3,
		5,7,6,3,
		2,4,3,6,
		6,8,4,7,
		3,4,7,6,
		5,6,7,9,
		9,10,6,7,
		9,11,10,7,
		6,8,7,10,
		10,12,8,11,
		7,8,11,10,
		9,10,11,13,
		13,14,10,11,
		13,15,14,11,
		10,12,11,14,
		14,16,12,15,
		11,12,15,14,
		13,14,15,17,
		17,18,14,15,
		17,19,18,15,
		14,16,15,18,
		18,20,16,19,
		15,16,19,18,
		17,18,19,21,
		21,22,18,19,
		21,23,22,19,
		18,20,19,22,
		22,24,20,23,
		19,20,23,22
	};
	for (int i=0; i<nelm*4; i++) element[i]--; //back from Fortran input.

	CSimuTetra2* pshell = new CSimuTetra2(
		(const Vector3d*)pVertex, nv,	//vertex array and length
		init_velocity,					//vertex velocity
		element, nelm,					//element information
		mtl								//material property
		);
	CSimuTetra2& s = *pshell;

	//set constraints
	CVertexConstraints constraints;
	constraints.setFixedPositionXYZ();
	s.setConstraints(0, constraints);
	s.setConstraints(1, constraints);
	s.setConstraints(2, constraints);
	s.setConstraints(3, constraints);
	s.setGravityAccelertion(Vector3d(0,-2,0));

	CSimuEngine e;
	e.addSimuObject(pshell);
	e.setTimestep(4.0e-4);

	const int timerid = 0;
	startFastTimer(timerid);
	e.startSimulation(700);
	stopFastTimer(timerid);
	reportTimeDifference(timerid, "Plane simmu. run time:");
}
コード例 #7
0
ファイル: simu_test.cpp プロジェクト: nanzhang790/View3dn
void test_mainPLATEQUAD(void)   //PLATEQUAD
{
	CMeMaterialProperty mtl;
	mtl.setYoung(5.00e4);
	mtl.setDamping(18, 0);	//strain rate damping
	mtl.setMassDamping(1.000e-4);
	mtl.m_rigid = 1;
	const int nv=18;
	const double z0 = 0.1;
	const double z1 = 0.00;
	const double z2 = z0;
	Vector3d pVertex[nv]={
		Vector3d(0,   0, z0),	//node 0
		Vector3d(0.1, 0, z0),
		Vector3d(0.2, 0, z0),
		Vector3d(0.3, 0, z0),
		Vector3d(0.4, 0, z0),
		Vector3d(0.5, 0, z0),
		Vector3d(0,   0.1, z1),
		Vector3d(0.1, 0.1, z1),
		Vector3d(0.2, 0.1, z1),   //node 8
		Vector3d(0.3, 0.1, z1),
		Vector3d(0.4, 0.1, z1),
		Vector3d(0.5, 0.1, z1),
		Vector3d(0,   0.2, z2),
		Vector3d(0.1, 0.2, z2),
		Vector3d(0.2, 0.2, z2),
		Vector3d(0.3, 0.2, z2),
		Vector3d(0.4, 0.2, z2),
		Vector3d(0.5, 0.2, z2),
	};
		
	Vector3d init_velocity(0,0,0);
	const int nelm=10;
	Vector4i element[nelm]={
		Vector4i(0, 1, 7, 6), 
		Vector4i(1, 2, 8, 7),
		Vector4i(2, 3, 9, 8),
		Vector4i(3, 4, 10, 9),
		Vector4i(4, 5, 11, 10),
		Vector4i(6, 7, 13, 12),
		Vector4i(7, 8, 14, 13),
		Vector4i(8, 9, 15, 14),
		Vector4i(9, 10, 16, 15),
		Vector4i(10, 11, 17, 16)
	};
	const int nv_per_elm=4;
	const double shell_thickness=0.004;

	CSimuEngine e;
	//typedef CSimuSpringThinshell T;
	typedef CSimuThinshell T;
	T *pshell;
	{
		pshell = new T(pVertex, nv, init_velocity, &element[0].x, nv_per_elm, nelm, shell_thickness, mtl);
		//set constraints
		int fixednodes[]={0, 6, 12, 1, 7, 13};
		const int len = sizeof(fixednodes)/sizeof(int);
		CFixedPositionConstraint* fixpos = new CFixedPositionConstraint(10, 0, 1e12, len, fixednodes);
		T &s = *pshell;
		s.addConstraint(fixpos);
		s.setGravityAccelertion(Vector3d(0,0,-10));
		e.addSimuObject(pshell);
	}
	{
		CMeMaterialProperty mtl2 = mtl;
		mtl2.setYoung(mtl.getYoung()*3.0);
		for (int i=0; i<nv; i++) pVertex[i].z+=0.2;
		T *pshell = new T(pVertex, nv, init_velocity, &element[0].x, nv_per_elm, nelm, shell_thickness, mtl2);
		T &s = *pshell;
		//set constraints
		int fixednodes[]={0, 6, 12, 1, 7, 13};
		const int len = sizeof(fixednodes)/sizeof(int);
		CFixedPositionConstraint* fixpos = new CFixedPositionConstraint(10, 0, 1e12, len, fixednodes);
		s.addConstraint(fixpos);
		s.setGravityAccelertion(Vector3d(0,0,-10));
		e.addSimuObject(pshell);
	}

	e.setTimestep(10.0e-4);
	const int timerid = 0;
	startFastTimer(timerid);
		e.startSimulationInMiliSeconds(10000,100);
		//int N=1000000;
		//for (int i=0; i<N; i++)
		//	pshell->computeElasticForces(false);
	stopFastTimer(timerid);
	reportTimeDifference(timerid, "Plane quad simmu. run time:");
}
コード例 #8
0
ファイル: simu_test.cpp プロジェクト: nanzhang790/View3dn
void test_mainPLATEPLATETRI(void)		//PLATEPLATETRI
{
	typedef CSimuThinshell T;
	CMeMaterialProperty mtl;
	mtl.setYoung(25.0e4);
	mtl.setMassDamping(1e-4);
	mtl.setDamping(10, 0);	//strain rate damping
	mtl.m_rigid = 0;
	const int nv=18;
	Vector3d pVertex[]={
		Vector3d(0,   0, 0),
		Vector3d(0.1, 0, 0),
		Vector3d(0.2, 0, 0),
		Vector3d(0.3, 0, 0),
		Vector3d(0.4, 0, 0),
		Vector3d(0.5, 0, 0),
		Vector3d(0,   0.1, 0),
		Vector3d(0.1, 0.1, 0),
		Vector3d(0.2, 0.1, 0),
		Vector3d(0.3, 0.1, 0),
		Vector3d(0.4, 0.1, 0),
		Vector3d(0.5, 0.1, 0),
		Vector3d(0,   0.2, 0),
		Vector3d(0.1, 0.2, 0),
		Vector3d(0.2, 0.2, 0),
		Vector3d(0.3, 0.2, 0),
		Vector3d(0.4, 0.2, 0),
		Vector3d(0.5, 0.2, 0),
	};
		
	Vector3d init_velocity(0,0,0);
	const int nelm=20;
	Vector3i element[]={
		Vector3i(0, 1, 6), 
		Vector3i(6, 1, 7),
		Vector3i(1, 2, 7),
		Vector3i(7, 2, 8),
		Vector3i(8, 2, 3),
		Vector3i(8, 3, 9),
		Vector3i(9, 3, 4),
		Vector3i(9, 4, 10),
		Vector3i(10, 4, 5),
 		Vector3i(10, 5, 11),//=============
		Vector3i(12, 6, 13),
		Vector3i(13, 6, 7),
		Vector3i(13, 7, 14),
		Vector3i(14, 7, 8),
		Vector3i(14, 8, 15),
		Vector3i(15, 8, 9),
		Vector3i(15, 9, 16),
		Vector3i(16, 9, 10),
		Vector3i(16, 10, 17),
		Vector3i(17, 10, 11)
	};
	const int nv_per_elm=3;
	const double shell_thickness=0.001;
	T *s = new T(
		pVertex, nv,					//vertex array and length
		init_velocity,					//vertex velocity
		&element[0].x, nv_per_elm, nelm,//element information
		shell_thickness,
		mtl								//material property
		);
	s->setGravityAccelertion(Vector3d(0, 0, -10));

	//set constraints
	int fixednodes[]={0, 6, 12, 1, 7, 13};
	const int len = sizeof(fixednodes)/sizeof(int);
	CFixedPositionConstraint* fixpos = new CFixedPositionConstraint(10, 0, 1e10, len, fixednodes);
	s->addConstraint(fixpos);
	CSimuEngine e;
	e.addSimuObject(s);
	e.setTimestep(10.0e-4);
	//======================
	const int timerid = 0;
	startFastTimer(timerid);
	e.startSimulation(20000,100);
	stopFastTimer(timerid);
	reportTimeDifference(timerid, "Plane simmu. run time:");
}
コード例 #9
0
void test_main(void)  //ShearRECT
{
	typedef CSimuStaticRod T;
	typedef CSimuThinshell T4;
	CMeMaterialProperty mtl;
	mtl.setYoung(2.00e5);
	mtl.setPoisson(0.40);
	mtl.setDamping(60.00, 0.0);
	mtl.setMassDamping(1.0e-4);
	T *s, *axisX, *axisY, *axisZ;
	T4 *fplane;
	{
		int nv=2, nelm=1;
		Vector3d pVertex[]={Vector3d(0,0,0), Vector3d(1,0,0)};		
		Vector3d init_velocity(0,0,0);
		int element[2]={0,1};
		const double rod_crossarea=1e-5;
		//axisX = new T(pVertex, nv, init_velocity, element, nelm, rod_crossarea, mtl);
	}

	{//FLOOOR PLANE
		int nv=4, nelm=1, nv_per_elm=4;
		const double shell_thickness = 1;
		Vector3d cc(0.5, -0.1, 0);
		const double  rr=5;
		Vector3d pVertex[4]={
			cc+Vector3d(-rr, 0, -rr), 
			cc+Vector3d(rr, 0, -rr), 
			cc+Vector3d(rr, 0, rr), 
			cc+Vector3d(-rr, 0, rr)			
		};		
		Vector3d init_velocity(0,0,0);
		int element[4]={0,3, 2, 1};
		fplane = new T4(pVertex, nv, init_velocity, &element[0], nv_per_elm, nelm, shell_thickness, mtl);
	}

	{
		int nv=4, nelm=4;
		Vector3d pVertex[]={
			Vector3d(0,0,0), Vector3d(1,0,0),
			Vector3d(0,1,0), Vector3d(1,1,0),	
		};		
		Vector3d init_velocity(0,0,0);
		int element[8]={0,1, 0,2, 3, 2, 3, 1};
		const double rod_crossarea=1e-5;
		s = new T(pVertex, nv, init_velocity, element, nelm, rod_crossarea, mtl);
	}

	//set constraints
	{//fixed pos.
		int fixednodes[]={0,1}; 
		const int len = sizeof(fixednodes)/sizeof(int);
		CFixedPositionConstraint* fixpos = new CFixedPositionConstraint(10, 0, 1e10, len, fixednodes);
		s->addConstraint(fixpos);
		s->setGravityAccelertion(Vector3d(0,0,0));
	}

	{
		const double dx = 0.0;
		const double dy = -0.750;
		const double dz= 0.0;
		int movenodes[]={2, 3};
		Vector3d vel(dx, dy, dz); vel*=1.00e-3*0.5;
		CVelocityConstraint *velo = new CVelocityConstraint(10, 1, 2000, 2, movenodes, vel);
		s->addConstraint(velo);
	}

	{
		const double dx = 0.0;
		const double dy = 0.70;
		const double dz= 0.0;
		int movenodes[]={2, 3};
		Vector3d vel(dx, dy, dz); vel*=1.00e-3*0.5;
		CVelocityConstraint *velo = new CVelocityConstraint(10, 5001, 7000, 2, movenodes, vel);
		s->addConstraint(velo);
	}

	{
		const double dx = 0.999;
		const double dy = -0.999;
		const double dz= 0;
		int movenodes[]={2, 3};
		Vector3d vel(dx, dy, dz); vel*=1.00e-3*0.3333;
		CVelocityConstraint *velo = new CVelocityConstraint(10, 10001, 13000, 2, movenodes, vel);
		s->addConstraint(velo);
	}
	{
		const double dx = 0;
		const double dy = -0.9999;
		const double dz= -1.0;
		int movenodes[]={2, 3};
		Vector3d vel(dx, dy, dz); vel*=1.00e-3*0.33333;
		CVelocityConstraint *velo = new CVelocityConstraint(10, 15001, 18000, 2, movenodes, vel);
		s->addConstraint(velo);
	}

	CSimuEngine e;
	e.addSimuObject(s);
	e.addSimuObject(fplane);
	e.setTimestep(5.00e-4); // max step for verlet

	const int timerid = 0;
	startFastTimer(timerid);
	e.startSimulationInMiliSeconds(20000, 50);
	//e.startSimulation(100, 1);
	stopFastTimer(timerid);
	reportTimeDifference(timerid, "Hemi sphere simmu. run time:");
	s->exportElementState(0, mtl, stdout);
}