← Back to team overview

yade-users team mailing list archive

Re: [Question #181411]: cylinder larger than half of the periodic cell

 

Question #181411 on Yade changed:
https://answers.launchpad.net/yade/+question/181411

    Status: Solved => Open

Giulia Macaro is still having a problem:
I still have some problem with the cylinder. The bounding box for a chained cylinder is not implemented for periodic simulations.
There is only the if(!scene->isPeriodic) option:
	if(!scene->isPeriodic){
		const Vector3r& O = se3.position;
		Vector3r O2 = se3.position+cylinder->segment;
		aabb->min=aabb->max=O;
		for (int k=0;k<3;k++){
			aabb->min[k]=min(aabb->min[k],min(O[k],O2[k])-cylinder->radius);
			aabb->max[k]=max(aabb->max[k],max(O[k],O2[k])+cylinder->radius);
		}
		return;
	}
I guess I need to specify the position in relation to the periodic cell.. something like 
	const Vector3r& O = scene->cell->unshearPt(se3.position);
	Vector3r O2 = scene->cell->unshearPt(se3.position)+cylinder->segment;
Is that correct? It seems working now, but I don't know if I'm forgetting something else.

I've got another question: for my simulations I need a rigid cylinder with a circular lateral surface. 
I have chosen to use the chainedCylinder instead of the facetCylinder because I don't want to use the non-circular surface given when then cylinder is created with facets. But at the same time I need a non-deformable cylinder..
So I'm trying to get rid of the deformable chained state, like blocking the rotations of each part of the chain and the translations in the direction parallel to the axis of the cylinder with O.bodies[].state.blockedDOFs='xXYZ'. Would it be enough, or should I include a condition imposing the same lateral and vertical displacement for each body of the chain?

Thanks for your suggestions,
Giulia

-- 
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.