# yade-users team mailing list archive

## Re: [Question #694017]: Extract normal force

```Question #694017 on Yade changed:

This is my MWE;

As I said before, I want to save for each iteration, the sum of force (amplitude) of interactions between balls and mill;
In this MWE, I have rather calculated the forces when there is interaction; But I wish to calculate it rather for each iteration; this will allow me to represent the evolution of its forces in time;

#######################################################################################

fr = 0.1;rho=7640.0;length = 4.0;rMean  = 0.772/2.0;sphRadFuzz =
0.8;rBall  = 0.04 ;

MillMat = O.materials.append(ViscElMat(kn=2*1.0e5,ks=2*1.0e5,frictionAngle=2*fr))
ballMat = O.materials.append(ViscElMat(kn=2*1.0e5,ks=2*1.0e5,frictionAngle=fr,density=rho))

#######################################################################################

# Create Mill from facets
#Walls=O.bodies.append([utils.wall(position=(0,0,0),axis=2,sense=0,material=MillMat),
#                      utils.wall(position=(0,length,0),axis=2,sense=0,material=MillMat)
#                      ])
# define domains for initial cloud of red and blue spheres
packHt=.8*rMean # size of the area
bboxes=[(Vector3(-.5*length,-.5*packHt,-.5*packHt),Vector3(.5*length,0,.5*packHt)),(Vector3(-.5*length,-.5,-.5*packHt),Vector3(.5*length,.5*packHt,.5*packHt))]
colors=(1,0,0),(0,0,1)
for i in (0,1):
sp=pack.SpherePack();
bb=bboxes[i];
vol=(bb[1][0]-bb[0][0])*(bb[1][1]-bb[0][1])*(bb[1][2]-bb[0][2])
O.bodies.append([utils.sphere(s[0],s[1],material=ballMat,color=colors[i]) for s in sp])

O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()]),
InteractionLoop(

[Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),

NewtonIntegrator(gravity=(0,-9.81,0),damping=0.0),

RotationEngine(ids=Mill,rotationAxis=[0,0,-1],rotateAroundZero=True,
angularVelocity=1),

]

O.dt=.5*PWaveTimeStep()

def saveForces():

for i in O.interactions:

if isinstance(O.bodies[i.id1].shape,Facet) or isinstance(O.bodies[i.id2].shape,Facet):
MagnitudeNormalForce = sum((i.phys.normalForce.norm()))
else :
MagnitudeNormalForce = 0

#   out=open(os.getcwd()+'/Resultat/MagnitudenormalForce','a')
#   out.write('%s\n'%str(MagnitudenormalForce))
#   out.close()

O.run(100000)