yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #00746
[svn] r1560 - in trunk: . gui/py pkg/dem/DataClass/InteractionGeometry
Author: eudoxos
Date: 2008-10-27 21:26:39 +0100 (Mon, 27 Oct 2008)
New Revision: 1560
Modified:
trunk/SConstruct
trunk/gui/py/utils.py
trunk/pkg/dem/DataClass/InteractionGeometry/SpheresContactGeometry.hpp
Log:
1. Add initializers for all SpheresContactGeometry members, to avoid nan's in the .xml file
2. Add code for saving arbitrary python variables within the .xml file, see documentation on utils.saveVars() and utils.loadVars()
3. Fix error (hopefully) caused by dangling symlinks in the symlinked buildDir/include tree
Modified: trunk/SConstruct
===================================================================
--- trunk/SConstruct 2008-10-26 21:47:44 UTC (rev 1559)
+++ trunk/SConstruct 2008-10-27 20:26:39 UTC (rev 1560)
@@ -451,7 +451,7 @@
If not, include tree will be created and syumlinked in buildDir, using relative symlinks."""
global env
import os,string,re
- from os.path import join,split,isabs,isdir,exists,islink,isfile,sep
+ from os.path import join,split,isabs,isdir,exists,lexists,islink,isfile,sep
if not prefix: yadeRoot=buildDir
else: yadeRoot=prefix
yadeInc=join(yadeRoot,'include','yade-%s'%env['version'],'yade')
@@ -489,7 +489,9 @@
while apfl[i]==aptl[i] and i<min(len(apfl),len(aptl))-1: i+=1
return sep.join(['..' for j in range(0,len(apfl)-i)]+aptl[i:])
linkName=join(subInc,f); linkTarget=relpath(linkName,join(root,f))
- if not exists(linkName): os.symlink(linkTarget,linkName)
+ if not exists(linkName):
+ if lexists(linkName): os.remove(linkName) # broken symlink: remove it
+ os.symlink(linkTarget,linkName)
else: # install directory: use scons' Install facility
env.Install(subInc,join(root,f))
Modified: trunk/gui/py/utils.py
===================================================================
--- trunk/gui/py/utils.py 2008-10-26 21:47:44 UTC (rev 1559)
+++ trunk/gui/py/utils.py 2008-10-27 20:26:39 UTC (rev 1560)
@@ -16,7 +16,30 @@
# c++ implementations for performance reasons
from yade._utils import *
+def saveVars(**kw):
+ """Save passed variables into the simulation so that it can be recovered when the simulation is loaded again.
+ For example, variables a=5, b=66 and c=7.5e-4 are defined. To save those, use
+
+ utils.saveVars(a=a,b=b,c=c)
+
+ those variables will be save in the .xml file, when the simulation itself is saved. To recover those variables once
+ the .xml is loaded again, use
+
+ utils.loadVars()
+
+ and they will be defined in the __builtin__ namespace (i.e. available from anywhere in the python code).
+ """
+ import cPickle
+ Omega().tags['pickledPythonVariablesDictionary']=cPickle.dumps(kw)
+
+def loadVars():
+ import cPickle
+ import __builtin__
+ d=cPickle.loads(Omega().tags['pickledPythonVariablesDictionary'])
+ for k in d: __builtin__.__dict__[k]=d[k]
+
+
def typedEngine(name): return [e for e in Omega().engines if e.name==name][0]
def sphere(center,radius,density=1,young=30e9,poisson=.3,frictionAngle=0.5236,dynamic=True,wire=False,color=[1,1,1],physParamsClass='BodyMacroParameters'):
Modified: trunk/pkg/dem/DataClass/InteractionGeometry/SpheresContactGeometry.hpp
===================================================================
--- trunk/pkg/dem/DataClass/InteractionGeometry/SpheresContactGeometry.hpp 2008-10-26 21:47:44 UTC (rev 1559)
+++ trunk/pkg/dem/DataClass/InteractionGeometry/SpheresContactGeometry.hpp 2008-10-27 20:26:39 UTC (rev 1560)
@@ -87,7 +87,7 @@
Vector3r relRotVector() const;
- SpheresContactGeometry():contactPoint(Vector3r::ZERO),radius1(0),radius2(0),hasShear(false),pos1(Vector3r::ZERO),pos2(Vector3r::ZERO){createIndex();}
+ SpheresContactGeometry():contactPoint(Vector3r::ZERO),radius1(0),radius2(0),hasShear(false),pos1(Vector3r::ZERO),pos2(Vector3r::ZERO),ori1(Quaternionr::IDENTITY),ori2(Quaternionr::IDENTITY),cp1rel(Quaternionr::IDENTITY),cp2rel(Quaternionr::IDENTITY),d1(0),d2(0),d0(0),initRelOri12(Quaternionr::IDENTITY){createIndex();}
virtual ~SpheresContactGeometry();
protected :
virtual void registerAttributes(){