This the multi-page printable view of this section. Click here to print.
MPM
- 1: Background
- 2: Examples
- 2.1: Example 0: run a simulation
- 2.2: Example 1: granular collapse
- 2.3: Example 2: heat transfer on 2d plate
- 3: Python Class Reference
1 - Background
A brief introduction to the Material Point Method
The material point method (MPM) proposed by Sulsky et al. is one of the mesh-free approaches for coping with large deformation problems. The solution domain of the MPM is discretized and classified into Lagrangian (material Points) and Eulerian (background Grid) components. Moreover, the MPM calculation cycle is driven by mapping the kinematics and dynamics between the material points and background nodes.
MPM calculation cycle within one timestep.
As shown in the Fig. \ref{fig:mpmloop}, five procedures will be conducted within one MPM iteration step.
-
Boundary condition (BC): the corresponding boundary condition will be applied to the material points or nodes, and the type of boundary condition can be: displacement BC, velocity BC, body force BC, traction force BC and temperature BC (if thermal task considered).
-
P2G: kinematic will be mapped from Particles to Grid nodes depends on the shape function. The kinematics consist of the mass, volume, moment, force/stress and the material field state variables including the volume gradient and displacement vector (if multi-material mode is activated).
-
Newton Integration: update the dynamics (moment and velocity) of background nodes using the kinematics expolated from the material points. Additional heat flux and temperature will be integrated once thermal task is run.
-
G2P: update all the state variables of material points assisted by the dynamics interpolated from background nodes. The calculation scheme of the stress and velocity/displacement of material points determined by the user-defined settings. For example, the stress update option governs if USF (Update Stress First) Bardenhagen or USL (Update Stress Late, Sulsky et al.) scheme will be executed. As for the velocity/position update, two options are also available as FLIP (FLuid Implicit Particle method, Brackbill and Ruppel) and PIC (Particle In Cell, Harlow). Moreover, the USF and mixture format of FLIP and PIC would be recommended by the authors.
-
Reset Grid: all the information of nodes will be reset. However, the state variable of material points will be transferred into the next step. The resetting process can avoid mesh distortion, which is why MPM can handle significant deformation problems.
MPM2D
MPM2D is designed to model large deformation problems employing the material point method. The whole program is written in C++ and further encapsulated by python to provide a user-friendly interface. Note that **GUI} utility is also developed and suggested for easily pre-processing and results rendering.
Minimal example python script for MPM2D-GUI is shown as follows:
An example for MPM2D-GUI python script.
## GUI settings for MPM2D
app.core.setAnalysisType(AnalysisType = "MPM")
## Some model settings
## Run the mpm simulation
app.run(1)
The framework of MPM2D
Five main classes are exposed to the python interface (Fig. \ref{fig:mpmframework}):
-
Analysis class is the core of MPM2D, it provides the platform for the communication among other members of MPM2D and navigates the whole simulation task.
-
Grid class depicts the geometry of the solution domain and maintains the hierarchical structure of elements and nodes.
-
Shape classes are responsible for the material points initialization and management. Clusters of the material points are created within a specific shape object. User-defined settings and boundary condition will not be assigned to the material points directly but is delegated to the functions of shapes instead.
-
Material classes affect the mechanical behaviour of material points. MPM2D supports the following material types: elastic material, Mohr-Coulomb material, Neo-Hookean material and Newton liquid.
-
Archiver class will dump the calculation result to a certain file format (binary or ASCII) as simple as possible to decrease the computation cost. When the simulation finishes, users can parse the raw results to the VTK file using the MPM2D extraction tool.
Framework of **MPM2D**.
The MPM2D GUI
MPM2D GUI is always recommended to integrate with MPM tasks, and its snapshot is shown in Fig. \ref{fig:mpmgui}. Essential operation to run an MPM script is:
-
Click the button \includegraphics[scale=0.5]{open.png} and choose the directory path for the MPM script.
-
Double-click the target MPM script, e.g., the highlighted biaxial.py.
-
Click the gear button \includegraphics[scale=0.5]{run.png} and the MPM script has been pasted in the right-corner shell.
-
Type the command
app.run(1)
at the right-corner shell to start the task.
Snapshot of the **MPM2D** GUI.
2 - Examples
We prepared several examples to show a quick start of using MPM2D.
2.1 - Example 0: run a simulation
This example will show : to do.
Here is the script of ‘example0.py’:
|
|
2.2 - Example 1: granular collapse
This example will show : to do.
Here is the script of ‘example0.py’:
|
|
2.3 - Example 2: heat transfer on 2d plate
This example will show : to do.
Here is the script of ‘example0.py’:
|
|
3 - Python Class Reference
MPM2D
Classes
- Analysis
- Grid
- Node
- PhaseTrsfNode
- MptsBase
- Mpts
- PhaseTrsfMpts
- RigidMpts
- Material
- Dp
- Elastic
- Ghostmat
- Mc
- McOrigin
- NeoHookean
- NewtonLiquid
- Shape
- DemPolygon
- DemSphere
- Polygon
- Rectangle
- Ring
- Sphere
- ContactEngine
- MpmWriter
- PeriodicHook
- PyHook
Enumerations
- BCDIR
- BCFIXSTATE
- MatType
- MPMETHOD
- ShapeType
- SIMTYPEMASK
Detailed API
class Analysis
Methods:
-
Analysis()
->void
Default constructor function of MPM core.
-
NodesPos()
->list <float>
Get positions of all nodes, and size of list is 2 x material_nodes_num.
-
NodesTemperature()
->list <float>
Get the temperature of all nodes, and size of list is material_nodes_num.
-
PreAnalysis()
->void
PreAnalysis initializes all the variables and states for Analysis before you call the Run method.
-
PtsMeanStress()
->list <float>
Get the mean stress for all particles, especially for gui view. Size of list is material_points_num and the mean stress defined in 2D is 0.5 x (Sxx + Syy).
-
PtsPos()
->list <float>
Get positions of all mateial points, and size of list is 2 x material_points_num.
-
PtsShearStrain()
->list <float>
Get shear strain for all particles, especially for gui view. And size of list is 2 x material_points_num.
-
PtsStressYY()
->list <float>
Get the yy-component stress for all particles, especially for gui view. And size of list is 2 x material_points_num.
-
PtsTemperature()
->list <float>
Get the temperature for all particles, especially for gui view. And size of list is 2 x material_points_num.
-
PtsTemperatureRemapped()
->list <float>
Get the remapped temperature for all particles, especially for gui view. And size of list is 2 x material_points_num. Note that the remapped temperature is interpolated from the nodes instead of one from material points.
-
Run()
Overloaded function.-
Run()
->void
Run the simulation until reaching the tottime.
-
Run(int runstep)
->void
Run the simulation with n steps.
-
-
RunPthread(int threadnum)
->void
Run the simulation for n steps with detached threads.
-
addMats(mpm.Material matobj)
->void
Push back the defined material into the Analysis.mats.
-
addShapes(mpm.Shape shapeobj)
->void
Push back the defined material into the Analysis.shapes.
-
getElements()
->list <mpm.Element>
Get all the element python-binded-objects of Analysis, and size of list is material_elements_num. More properties can be accessed by the element objects returned by this method.
-
getNodeById(int nodeid)
->mpm.Node
Get the node python-binded-objects with ID specified.
-
getNodes()
->list <mpm.Node>
Get all the node python-binded-objects of Analysis, and size of list is material_nodes_num. More properties can be accessed by the node objects returned by this method.
-
getNonrPts()
->list <mpm.Mpts>
Get all the non-rigid material points python-binded-objects of Analysis, and size of list is material_nonrigid_material_points_num. More properties can be accessed by the nonrigid-material-points objects returned by this method. Note that two types of material points, nonrigid and rigid are defined in this code.
-
getParById(int particleid)
->mpm.Mpts / mpm.RigidPts
Get material points by id. Either nonrigid or rigid material points can be returned by their ID. Note: nonrigid and rigid material points are stored in different containers. Order is as nonrigid material points are followed by rigid material points. Assume there are 5 nonrigid ones and 5 rigid ones. Give the ID = 4 you will get the nonrigid one with ID = 4, but if input is 7, you will get the rigid one with ID = 2.
-
getRigidPts()
->list <mpm.RigidPts>
Get all the rigid material points python-binded-objects of Analysis, and size of list is material_rigid_material_points_num. More properties can be accessed by the rigid-material-points objects returned by this method. Note that two types of material points, nonrigid and rigid are defined in this code.
-
getShapeReactForce(int shapeid, int forcedir)
->float
Get the reactforce of specific shape. If the shape does not include any rigid material points, 0 will be returned. Otherwise, the corresponding reaction force coming from the boundary condition will be obtained.
-
getThermalCriticalTimeStep()
->float
Get the critical time step for the thermal analysis.
-
getTimeStep()
->float
Get the current time step in the simulation.
-
getTrElements()
->list <mpm.TriElement>
The hierarchical elements objects. And this function has not been tested yet.
-
getTrNodes()
->list <mpm.Node>
The hierarchical nodes objects. And this function has not been tested yet.
-
gravityLoad()
->bool
Check if the nonrigid-material-points is under the equilibrium state.
-
isRunning()
->bool
Get the isRunnning flag to check if the core simulation is running.
-
iter()
->int
Get the current iteration step.
-
pause()
->void
Pause the simulation.
-
printNodesTemperature()
->void
Print temperature at all nodes to the shell or GUI.
-
saveCurrentMesh()
->void
Save current mesh file to a vtk file.
-
saveCurrentPtsBin(string savename)
->void
Save current pts states to a binary file.
-
setHigherPicOrder(int picorder)
->void
setHigherPicOrder(self: mpm.Analysis, arg0: int) -> NoneActivate the XPIC engine with specific order.
-
setMethod()
Overloaded function.
-
setMethod(int mpm.METHOD)
->void
Set mpm interpolation method.
-
setMethod(int mpm.METHOD, bool autoadjust)
->void
Set mpm interpolation method and adjust the interpolation automatically.
-
-
setNumThreads(int threadnum)
->void
Set the number of threads in parallel. You should alway call this method explicitly, even only 1 thread is needed.
-
setPicEngineIterperiod(int picfrequency)
->void
Set the frequency to call the XPIC engine.
-
setTimeDt(float totaltime, float timestep)
->void
Set total elapsed time and time step.
-
useContact()
->void
Activate the DEM-driven contact algorithm for nonrigid-nonrigid contact.
-
useNFGrid()
->void
Activate the non-uniform grid. This function has not been tested yet.
-
usePtSplit(bool ison)
->void
Activate the material points split algorithm. This function has not been tested yet.
-
writePtsPos(string savename)
->void
Save the material points states into binary file. This method will be deprecated and you are alway suggested to use saveCurrentPtsBin.
Properties:
-
USL
Flag for if the update-stress-late scheme is activated.
-
contactengine
Contact engine for nonrigid-nonrigid contact algorithm.
-
demstep
Flag for if the DEM substep is activated.
-
dt
Time step.
-
grid
Python-binded-object for Analysis.grid
-
hooks
Python-binded-object for Analysis.hook. Users can add their own function to the MPM loop using the hooks.
-
mapOnce
Flag for pure thermal mpm.task. On this condition, the mapping between the nodes and the material points will only run once for efficiency.
-
mats
Python-binded-object for Analysis.materials.
-
nrpts
Python-binded-object for Analysis.nonrigid-material-points.
-
rigidpts
Python-binded-object for Analysis.rigid-material-points.
-
shapes
Python-binded-object for Analysis.shapes.
-
simTypeMasks
Mask for simulation type. MANAL or TANAL corresponds to the mechanical task and thermal task.
-
trgrid
Python-binded-object for Analysis.treegrid. This function has not been tested yet.
-
writer
Python-binded-object for Analysis.writer for archiving and post-process.
class Grid
Methods:
-
Grid()
->void
Note that: users are not allowed to call this constructor in the python script.
-
getNumEle()
->list <int> [numx, numy]
Get the number of elements along x and y directions.
-
getSpace()
->list <float> [spacex, spacey]
Get the space of the grid.
-
getXrange()
->list <float> [xmin, xmax]
Get xrange of the grid.
-
getYrange()
->list <float> [ymin, tmax]
Get yrange of the grid.
-
printElements()
->void
Print all the elements debug information.
-
printInfo()
->void
Print the grid debug information.
-
setContactDisratio(float ratio)
->void
Set the contact detection ratio for traditional contact algorithm.
-
setFriction(float friction)
->void
Set the frictoin for traditional contact algorithm.
-
setNumEle(int numx, int numy)
->void
Element dimensions in x and y direction.
-
setRange(float xmin, float xmax, float ymin, float ymax)
->void
Set xmin, xmax, ymin, ymax for grid.
Properties:
-
nodes
All the python-binded-objects for nodes.
class Node
Methods:
-
Node()
->void
Note that: users are not allowed to call this constructor in the python script.
-
getId()
->int
Get the node index.
-
getParNum()
->int
Get particle number associated with this node.
-
getTemperature()
->float
Get the temperature at the node.
-
printInfo()
->void
Print the debug information.
-
printMatfInfo()
->void
Print the debug information for multiple material fields.
Properties:
-
pos
Position of node.
class PhaseTrsfNode -> Node
Methods:
-
PhaseTrsfNode()
->void
Note that: users are not allowed to call this constructor in the python script.
All the methods and properties, please refer to the Node class.
class MptsBase
Methods:
-
MptsBase()
->void
Note that: users are not allowed to call this constructor in the python script.
-
getIndex()
->int
Get the unique ID of this particle.
-
getNodeList()
->list <int>
Get the list of node indexes associated with this particle.
-
getNodeSF()
->list <float>
Get the shape function of nodes associated with this particle.
-
getPos()
->list <float> [posx, posy]
Get particle position in 2D.
-
getRemappedT()
->float
Get the remapped temperature on the particle. This temerature is interpolated from the nodes and it is different from the internal temperature.
-
getShearStrain()
->float
Get the shear equivalent strain.
-
getStrain()
->list <float> [strainxx, strainxy, strainyy]
Get strain component on this material point.
-
getStress()
->list <float> [stressxx, stressxy, stressyy]
Get stress component on this material point.
-
getTemperature()
->float
Get the temperature on this material point.
-
getThermalConductivity()
->list <float> [Kxx, Kxy; Kyx, Kyy]
Get thermal conductivity tensor on this material point.
-
getVel()
->list <float> [velx, vely]
Get particle velocity in 2D.
-
getVol()
->float
Get particle volume in 2D.
-
printInfo()
->void
Print debug information.
Properties:
-
heatCapacity
Specific heat capacity
-
heatSource
Heat source or sink for thermal and phase transoformation task.
-
mass
Particle mass.
-
temperature
Particle temperature.
class Mpts -> MptsBase
Methods:
-
Mpts()
->void
Note that: users are not allowed to call this constructor in the python script.
-
getDeformMatrix()
->list <float> [Fxx, Fxy; Fyx, Fyy]
Get deformation matrix of material point.
-
getInitPos()
->list <float> [initpx, initpy]
Get the initial position of particle in 2D.
-
getStrainEnergy()
->float
Get strain energy of non-rigid pts.
-
printMatInfo()
->void
Print debug information for material object.
-
setVel(float velx, float vely)
->void
Set velocity.
class PhaseTrsfMpts -> Mpts
Methods:
-
PhaseTrsfMpts()
->void
Note that: users are not allowed to call this constructor in the python script.
-
getCurrentWaterFraction()
->float
Get current volumetric fraction of liquid.
-
getDIcefractionDTemp(float temperature)
->float
Get the derivative of the ice volumetric fraction against the current temperature.
-
getPhaseFraction(int phaseid)
->float
Get the the volumetric fraction of given phase.
-
getPhaseState()
->float
Current phase state: melting or freezing.
class RigidMpts
Methods:
-
RigidMpts
->void
Note that: users are not allowed to call this constructor in the python script.
class Material
Methods:
-
Material()
->void
Default constructor for mpm.Material.
This is a pure virtual class, and users must initialize its child class instead of itself.
-
setIndex()
->void
Set the unique ID for material object.
-
setInitDensity(float solidrho, float icerho, float waterrho)
->void
Initialie the density for solid, ice and water when phase transformation task is activated.
-
setInitFraction(float solidfraction, float icefraction, float waterfraction)
->void
Initialie the volume fraction for solid, ice and water when phase transformation task is activated.
-
setThermalProp()
->void
Overloaded function.
-
setThermalProp(float hc, list <float> conductivity)
->void
Set themal properties: hc for heat capacity.
The size of list conductivity can be 1 2 for 4.
If 1, conductivity matrix will be [k, 0; 0, k].
If 2, conductivity matrix will be [k1, 0; 0, k2].
If 4, conductivity matrix will be [k1, k2; k3, k4].
-
setThermalProp(list <float> hc, list <float> conductivity)
->void
Set themal properties: hc for heat capacity under phase transformation condition.
The size of list hc must be 6, and the size of list conductivity must be 6.
Heat capacity will be assigned to solid, ice and liquid phase, while conductivity matrix for different phase will be [ki, 0; 0, ki+1], i = 0, 2, 4.
-
Properties:
-
Kn
Contact normal stiffness
-
Ks
Contact tangential stiffness
-
Tres
The residual temperature for ice melting (for phase transformation).
-
coarsegrain
If soil is coarse or fine, which determines different volume function against the temperature for phase transformation.
-
freezepoint
Liquid freeze point for phase transformation.
-
friction
Contact friction coefficient (DEM-drive contact algorithm).
-
heatCapacity
Heat capacity.
-
infinistate
Determines if we use finite strain theory to update the transformation matrix and strain.
-
latentratio
Latent ratio for phase transformation.
-
planestrain
Determine whether plane strain or plane stress.
-
rho
Density.
-
unfrozenlimit
Maximal unfrozen water volumetric fraction for fine soils transoformation model.
-
unfrozenratio
Unfrozen ratio for fine soils transoformation model.
-
usecontentfrozen
Determine whether user volumetric fraction or mass fraction.
class Dp -> Material
Methods:
-
Dp()
->void
Default constructor for mpm.Dp.
-
getStress(list <float> [oldsxx, oldsyy, oldszz, oldsxy], list <float> [dstxx, dstyy, dstxy])
->list <float> [sxx, syy, szz, sxy]
Unit test for this model.
-
printInfo()
->void
Print the debug information.
-
printSState()
->void
Print the debug information for unit test.
Properties:
-
E
Young’s modulous
-
c
cohesion
-
nu
Poisson’s ratio
-
phi
friction angle
-
psi
dilation angle
class Elastic -> Material
Methods:
-
Elastic()
->void
Default constructor for mpm.Elastic.
-
printInfo()
->void
Print the debug information.
Properties:
-
E
Young’s modulous
-
nu
Poisson’s ratio
class Ghostmat -> Material
Methods:
-
Ghostmat()
->void
Default constructor for mpm.Elastic.
-
printInfo()
->void
Print the debug information.
Properties:
-
thermalResistance
The parameter for thermal simulation. (Not activated in mpm task.)
class Mc -> Material
Methods:
-
Mc()
->void
Default constructor for mpm.Mc.
-
getStress(list <float> [oldsxx, oldsyy, oldszz, oldsxy], list <float> [dstxx, dstyy, dstxy])
->list <float> [sxx, syy, szz, sxy]
Unit test for this model.
-
printInfo()
->void
Print the debug information.
Properties:
-
E
Young’s modulous
-
c
cohesion
-
nu
Poisson’s ratio
-
phi
friction angle
-
psi
dilation angle
-
tension
tension cut-off
class McOrigin -> Material
Methods:
-
McOrigin()
->void
Default constructor for mpm.McOrigin.
-
getStress(list <float> [oldsxx, oldsyy, oldszz, oldsxy], list <float> [dstxx, dstyy, dstxy])
->list <float> [sxx, syy, szz, sxy]
Unit test for this model.
-
printInfo()
->void
Print the debug information.
Properties:
-
E
Young’s modulous -
c
cohesion -
nu
Poisson’s ratio -
phi
friction angle -
psi
dilation angle -
tension
tension cut-off
class NeoHookean -> Material
Methods:
-
NeoHookean()
->void
Default constructor for mpm.NeoHookean.
-
printInfo()
Print the debug information.
Properties:
-
E
Young’s modulous
-
nu
Poisson’s ratio
-
uopt
Different way to calculate the strain energy.
class NewtonLiquid -> Material
Methods:
-
NewtonLiquid()
->void
Default constructor for mpm.NewtonLiquid.
-
printInfo()
->void
Print the debug information.
Properties:
-
bulk
Bulk modulus
-
visco
Dynamic viscosity
class Shape
Methods:
-
Shape()
->void
Note that: users are not allowed to call this constructor in the python script.
-
setBc()
->void
Overloaded function.
-
setBc(int xon, float valuex, int yon, float valuey)
->void
Set boundary flag and boundary value for x and y direction.
Boundary value will be effective if and only if either xon or yon is True.
-
setBc(int xon, string valuexexpr, int yon, float valueyexpr)
->void
Set boundary flag and boundary value for x and y direction.
Boundary value will be effective if and only if either xon or yon is True.
Meanwhile, the expression for the boundary value will be parsed according to the currrent time.
Say you can enter
sin(t)
, which means a value will change following the sin function. -
setBc(int xon, string valuexexpr, bool fixposx, int yon, float valueyexpr, bool fixposy)
->void
Set boundary flag and boundary value for x and y direction.
Boundary value will be effective if and only if either xon or yon is True.
If the fixposx or fixposy is true, RigidPts will only update the velocity not for position.
-
-
setConsolidation()
->void
Overloaded function.-
setConsolidation(float sxx, float yy)
->void
Set initial consolidation stress.
-
setConsolidation(string sxx, string yy)
->void
Set initial consolidation stress with string, which will be parsed as numerical value.
-
-
setDamping(float pdamping, float gdamping, float PIC)
->void
Set the damping: particle damping, grid damping and PIC fraction.
-
setInitTemperature(float temp)
->void
Set the initial temperature.
-
setMethod(int method, bool isfixed)
->void
Overried the interpolation method set by mpm.Analysis.
If isfixed is True, it means that the method will not be changed automatically.
-
setThermalBc()
->void
Set the prescribed temperature on Dirichlet BC for thermal field.
-
setTracBc()
->void
Overloaded function.
-
setTracBc(int face, int dir, float value)
->void
Set the traction force boundary condition.
The face is from 0 - 3, starting from the bottom surface and in the anti-clock wise.
Dir refer to the BCDIR enumeration.
And the value is constant.
-
setTracBc(int face, int dir, string value)
->void
Set the traction force boundary condition.
The face is from 0 - 3, starting from the bottom surface and in the anti-clock wise.
Dir refer to the BCDIR enumeration.
And the value will be parsed based on the current time.
-
-
setUserContactNormal(float nx, float ny)
->void
Set user defined contact normal for traditional contact algorithm.
-
unsetThermalBc()
->void
Cancel the thermal boundary condition.
class DemPolygon -> Shape
Method:
-
DemPolygon(float timestep, int searchrange, int callfrequency, float contactKn, float contactKs, float friction)
->void
Constructor for the
DemPolygon
.Input arguments are: timestep, the radius searching range, the neighbourlist updating interval, normal contact stiffness, shear contact stiffness and the friction.
-
addForce2Pt(bool applyforceonpt)
->void
How the dem polygon add the force. True: add to pt, False: add to nodes.
-
addPts(float px, float py)
->void
Add one point to polygon.
-
getDemForce()
->list <float> [forcex, forcey]
Get reaction force in the horizontal and vertical direction.
-
getPts()
->list <float>
Get all the vertex coorinates of polygon.
-
getReactionForce()
->list <float> [forcex, forcey]
Get reaction force.
-
printInfo()
->void
Print the debug information.
-
setDt(float timestep)
->void
Set timestep for dempolygon
-
setForceNormalDir(int axis, int forcestate)
->void
Set the fixed contact normal direction. Axis 0 for horizontal direction, and 1 for vertical direction. Forcestate 0 for positive normal [0, 1], and 1 for negative normal [0, -1].
-
setGravity(float gravityx, float gravityy)
->void
Set the gravity.
-
setInterval(int updateiters)
->void
Set interval of neighbour list update.
-
setPts(list <float>)
->void
Set points array to polygon.
-
setRange(int searchrange)
->void
Set search range for updating the material points neighbour list.
-
setRotFix(bool)
->void
Set if the rotation of the
DemPolygon
is fixed. -
setShapeErr(float gjkerr)
->void
Set the resolution for GJK contact detection.
-
usePolygonContact(bool ispolygon)
->void
Set the way that
DemPolygon
treats the material points. True: for polygon and False: disk.
class DemSphere -> Shape
Method:
-
DemSphere(float timestep, int searchrange, int callfrequency, float contactKn, float contactKs, float friction )
->void
Constructor for the
DemSphere
.Input arguments are: timestep, the radius searching range, the neighbourlist updating interval, normal contact stiffness, shear contact stiffness and the friction.
-
addForce2Pt(bool applyforceonpt)
->void
How the dem polygon add the force. True: add to pt, False: add to nodes.
-
getPts()
->list <float>
Get all the vertex coorinates of polygon.
-
getReactionForce()
->list <float> [forcex, forcey]
Get reaction force.
-
printInfo()
->void
Print the debug information.
-
setArc()
->void
Cut a arc from sphere.
-
setPts(list <float>)
->void
Set points array to polygon.
class Polygon -> Shape
Methods:
-
Polygon(int)
->void
Input argument: shape type. Please refer to shapetype enumeration for details.
-
setPts(list <float>)
->void
Set the vertex for this polygon.
class Rectangle -> Shape
Methods:
-
Rectangle(float xmin, float xmax, float ymin, float ymax, int shapetype)
->void
Input arguments: xmin, xmax, ymin, ymax. Shape type please refer to the SHAPETYPE enumeration.
class Ring -> Shape
Methods:
-
Ring(float px, float py, float inra, float outra, int shapetype )
->void
Input arguments: position x, position y, internal radius, external radius and shape type.
class Sphere -> Shape
Methods:
-
Sphere()
->void
Overloaded function.
-
Sphere(float xmin, float xmax, float ymin, float ymax, int shape type)
->void
Input arguments: xmin, xmax, ymin, ymax. Shape type please refer to the SHAPETYPE enumeration.
-
Sphere(float px, float py, float radius, int shape type)
->void
Input arguments: position x and y, and radius. Shape type please refer to the SHAPETYPE enumeration.
-
class ContactEngine
Properties:
-
addforce2pt
Add force to material points directly. Otherwise force will be applied on the nodes.
-
potential
The contact potential energy.
-
radiusscale
Ratio to scale the radius of material points used by the contact algorithm.
class MpmWriter
Methods:
-
MpmWriter()
->void
Default constructor for mpm.Writer.
-
setDir()
->void
Set the top directory and current directory name for saving result files.
-
setEndTime()
->void
End time of writing result files.
-
setIntervalTime()
->void
Interval time of writing result files.
-
setStartTime()
->void
Start time of writing result files.
class PeriodicHook
Methods:
-
PeriodicHook()
->void
Default constructor for mpm.Hook.
-
reset()
->void
Reset the period of the hook
Properties:
-
dead
The hook is dead (True) or not.
-
iterLast
Iteration of last run.
-
iterPeriod
Iter Periodicity.
-
realLast
Real time of last run.
-
realPeriod
Real Periodicity.
-
totalRuns
The total runs for the hook.
-
virtLast
Virtual time of last run.
-
virtPeriod
Virtual Periodicity.
class PyHook -> PeriodicHook
Properties:
-
command
command for the pyhook. WARNING: you cannot use the print function in the hook, or else it may encounter a crash in detached multi-threads. FIXEME in the future. As a workaround, we use app.print in GUI.
Enumeration BCDIR
Members:
-
XDIR
Horizontal direction enumeration.
-
YDIR
Vertical direction enumeration.
-
NORMALDIR
Normal direction enumeration;
-
TANGENTDIR
Tangential direction enumeration;
Enumeration BCFIXSTATE
Members:
-
BCFREE
Cancel boundary condition enumeration.
-
BCFIXALL
Fix boundary condition enumeration.
-
BCFIXPLUS
Fix positive direction only enumeration.
-
BCFIXMINUS
Fix negative direction only enumeration.
Enumeration MPMETHOD
Members:
-
NONEMETHOD
No mpm method set.
-
LINEAR
Linear interpolation method.
-
GIMP
Generalized interpolation method.
-
LINEARCPDI
Linear covect particle domain interpolation method.
-
MIXMETHOD
Mixed interpolation method between GIMP and CPDI.
-
BSPLINECPDI
B-spline interpolation method (as same as affine mpm).
Enumeration MatType
Members:
-
RIGIDMAT
Only for rigid material points.
-
ELASTICMAT
Elastic material.
-
MCMAT
Mohr-Coulomb material.
-
GHOSTMAT
Only for rigid matrial points. Refer to the examples for the difference between the RIGIDMAT and GHOSTMAT.
-
NEOMAT
Neo-Hookean material.
-
NEWTONMAT
Newton liquid material.
-
DPMAT
Drucker Prager material.
Enumeration SIMTYPEMASK
Members:
-
MANAL
Mechanical simulation task.
-
TANAL
Thermal simulation task.
-
PHASEANAL
Phase transformation task.
Enumeration ShapeType
Members:
-
NONEBC
No boundary condition will be set.
-
NDSHAPE
Node velocity boundary condition.
-
MPTLOADSHAPE
Body force load boundary condition for particles.
-
MPTTRACSHAPE
Traction force boundary condition for particles.
-
RIGIDSHAPE
Displacement or velocity boundary condition for rigid particles.
-
GRAVITYSHAPE
Gravity boundary condition for particles.
-
DEMSHAPE
Shapes for DEM-driven contact algorithm.
-
MPTVELSHAPE
Velocity boundary condition for particles.
-
NDHEATSHAPE
Thermal boundary condition for nodes.