For now, I solved that in python only: most/all python code calls
utils.sphere to create sphere etc. Material::newAssocState returns
instance of required State (sub)class.
> Are you just trying to make the code foolproof or is there another reason?
Yes, that's it.
> In that case, it could be tested only once, e.g. in the constitutive law 
> or IPdispatcher at first iteration, using Material::checkStateType(Body* 
> b). Not very elegant though, since this is a loop on interactions 
> instead of bodies...
Good idea, I could check in the BoundingVolumeMetaEngine or Collider.
BoundingVolumeMetaEngine is called just once when using VelocityBins,
though... And putting that inside the collider seems like a little
abuse. But it might work. Will do that.
> Another possible location for this would be in 
> body->assignMatType(MatType* t), which could call t->checkStateType(this).
> The problem is it requires that the state type is always defined before 
> the mat type...
That; and also code that wouldn't use this special method to assign
material would fool us.
> So, initializers perhaps?
We don't use them for quite long now, and I don't feel like reinventing
them (in fact dropping initializers would be a nice clean-up :-) ).

Cheers, V.



_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to