How to Get the force on a triangle mesh wall

Asked by Henry

Dear all,
   I want to simulate the direct shear test of geomaterial using Esys. In PFC3D, we can use the finite wall to generate the shear box. But there is no finite wall in Esys, so now I creat the shear box with triangle mesh wall. However, I can't get the force of the particles on the wall. Is there any function to get the force on a triangle mesh wall? Or is there function to get the force on a solide box (if has, I can generate shear box with the soild box)? or is there anyother way to realize the direct shear test?
  Many thanks for your help!

Henry!

Question information

Language:
English Edit question
Status:
Answered
For:
ESyS-Particle Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:

This question was reopened

Revision history for this message
SteffenAbe (s-abe) said :
#1

Depends if you need the total force on each wall or mesh facet (possible) or the force on each particle in contact with the wall (currently not possible). Also, do you need that force during / within the simulation or only for post-processing ?

Revision history for this message
Henry (wenjiexu) said :
#2

Hi, SteffenAbe
    I want to geth the total force on each mesh facet during the whole simulation processing. So I can save or control the force of each wall.
   Thanks a lot!

Henry.

Revision history for this message
SteffenAbe (s-abe) said :
#3

Saving the forces is easy - in case of an infinite wall you need to use a WallVectorFieldSaver (sample code below) , in case of mesh wall you need a TriangleVectorFieldSaverPrms (example code below).
If you want to use the force within the simulation, i.e. for controlling you need to get it via a getWallForce call inside your Runnable. However, if you only want to set a constant force to a wall, there is an applyForceToWall function (also to be used inside the "run" function of your runnable).

---- Wall force saver sample code ---

# create a wall located at (0,0,0) with normal pointing in +z direction
mySim.createWall("frontWall",Vec3(0.0,0.0,0.0),Vec3(0.0,0.0,1.0))

# create a wall located at (0,0,0) with normal pointing in +x direction
mySim.createWall("bottomWall",Vec3(0.0,0.0,0.0),Vec3(1.0,0.0,0.0))

# setup saver to save the force on this wall every "dt_save" time steps
# assume nt is the total number of time steps in the simulation
wf_file_name="wall_force.dat"
wf_saver_params=WallVectorFieldSaverPrms(
        fileName=wf_file_name,
        fieldName="Force",
        wallName=["bottomWall","frontWall"],
        fileFormat="RAW_SERIES",
        beginTimeStep=0,
        endTimeStep=nt,
        timeStepIncr=dt_save
      )
sim.createFieldSaver(wf_saver_params)

---- mesh force saver

# assume your mesh is called "Mesh"
mf1_prm=TriangleVectorFieldSaverPrms("Mesh","force","mf/meshforce","RAW",0,nt,dt_mfs)
sim.addVectorTriangleSaveField(mf1_prm)

Steffen

Revision history for this message
Henry (wenjiexu) said :
#4

Dear SteffenAbe,
   Many thanks for your help.
   I have another question, that is how to set a constant force to a mesh wall or get the force of a mesh wall during the simulation process.
   I want to simualte a triaxial test using Esys-Particle, and I want to use the mesh wall to form the confining boundary. To obtain the apply a constant confining pressure on the confining boundary during the shear process, I must know the force of the mesh wall.
   Thanks a lot!

  Henry

Revision history for this message
Henry (wenjiexu) said :
#5

Dear SteffenAbe,
   Many thanks for your help.
   I have another question, that is how to set a constant force to a mesh wall or get the force of a mesh wall during the simulation process.
   I want to simualte a triaxial test using Esys-Particle, and I want to use the mesh wall to form the confining boundary. To obtain the apply a constant confining pressure on the confining boundary during the shear process, I must know the force of the mesh wall.
   Thanks a lot!

  Henry

Revision history for this message
SteffenAbe (s-abe) said :
#6

> that is how to set a constant force to a mesh wall or get the force of a mesh wall during the simulation process.
Neither of the two functions is currently implemented.
The implementation of a ApplyForceTo function for triangle meshes has been discussed a number of times, but so far no good idea for an implementation has emerged. The key difficulty is that all approaches discussed so far would introduce non-local interactions which are difficult to handle efficiently within the parallelisation framework.
A GetForce type function for mesh walls would probably be implementable without too much difficulty. Need to look into how much effort this would take and then decide if we add this to the whishlist for 2.3

Steffen

Revision history for this message
Henry (wenjiexu) said :
#7

I think the function of geting the force on triangle meshe wall is important. For example, as we know, the triaxial test is an important kind of tests in studing the mechanical of geomaterials, and the common shape of the sample is cylindrical. To control the confining pressure of the sample during the test, maybe we must use a cylidrical mesh walls as the confining boundary, and we should monitor the force on the mesh wall to maintain at a fixed value.

Thanks!
Henry

Can you help with this problem?

Provide an answer of your own, or ask Henry for more information if necessary.

To post a message you must log in.