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()->voidDefault 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()->voidPreAnalysis 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()->voidRun the simulation until reaching the tottime.
-
Run(int runstep)->voidRun the simulation with n steps.
-
-
RunPthread(int threadnum)->voidRun the simulation for n steps with detached threads.
-
addMats(mpm.Material matobj)->voidPush back the defined material into the Analysis.mats.
-
addShapes(mpm.Shape shapeobj)->voidPush 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.NodeGet 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.RigidPtsGet 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)->floatGet 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()->floatGet the critical time step for the thermal analysis.
-
getTimeStep()->floatGet 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()->boolCheck if the nonrigid-material-points is under the equilibrium state.
-
isRunning()->boolGet the isRunnning flag to check if the core simulation is running.
-
iter()->intGet the current iteration step.
-
pause()->voidPause the simulation.
-
printNodesTemperature()->voidPrint temperature at all nodes to the shell or GUI.
-
saveCurrentMesh()->voidSave current mesh file to a vtk file.
-
saveCurrentPtsBin(string savename)->voidSave current pts states to a binary file.
-
setHigherPicOrder(int picorder)->voidsetHigherPicOrder(self: mpm.Analysis, arg0: int) -> NoneActivate the XPIC engine with specific order.
-
setMethod()Overloaded function.
-
setMethod(int mpm.METHOD)->voidSet mpm interpolation method.
-
setMethod(int mpm.METHOD, bool autoadjust)->voidSet mpm interpolation method and adjust the interpolation automatically.
-
-
setNumThreads(int threadnum)->voidSet the number of threads in parallel. You should alway call this method explicitly, even only 1 thread is needed.
-
setPicEngineIterperiod(int picfrequency)->voidSet the frequency to call the XPIC engine.
-
setTimeDt(float totaltime, float timestep)->voidSet total elapsed time and time step.
-
useContact()->voidActivate the DEM-driven contact algorithm for nonrigid-nonrigid contact.
-
useNFGrid()->voidActivate the non-uniform grid. This function has not been tested yet.
-
usePtSplit(bool ison)->voidActivate the material points split algorithm. This function has not been tested yet.
-
writePtsPos(string savename)->voidSave 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()->voidNote 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()->voidPrint all the elements debug information.
-
printInfo()->voidPrint the grid debug information.
-
setContactDisratio(float ratio)->voidSet the contact detection ratio for traditional contact algorithm.
-
setFriction(float friction)->voidSet the frictoin for traditional contact algorithm.
-
setNumEle(int numx, int numy)->voidElement dimensions in x and y direction.
-
setRange(float xmin, float xmax, float ymin, float ymax)->voidSet xmin, xmax, ymin, ymax for grid.
Properties:
-
nodes
All the python-binded-objects for nodes.
class Node
Methods:
-
Node()->voidNote that: users are not allowed to call this constructor in the python script.
-
getId()->intGet the node index.
-
getParNum()->intGet particle number associated with this node.
-
getTemperature()->floatGet the temperature at the node.
-
printInfo()->voidPrint the debug information.
-
printMatfInfo()->voidPrint the debug information for multiple material fields.
Properties:
-
pos
Position of node.
class PhaseTrsfNode -> Node
Methods:
-
PhaseTrsfNode()->voidNote 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()->voidNote that: users are not allowed to call this constructor in the python script.
-
getIndex()->intGet 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()->floatGet the remapped temperature on the particle. This temerature is interpolated from the nodes and it is different from the internal temperature.
-
getShearStrain()->floatGet 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()->floatGet 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()->floatGet particle volume in 2D.
-
printInfo()->voidPrint 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()->voidNote 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()->floatGet strain energy of non-rigid pts.
-
printMatInfo()->voidPrint debug information for material object.
-
setVel(float velx, float vely)->voidSet velocity.
class PhaseTrsfMpts -> Mpts
Methods:
-
PhaseTrsfMpts()->voidNote that: users are not allowed to call this constructor in the python script.
-
getCurrentWaterFraction()->floatGet current volumetric fraction of liquid.
-
getDIcefractionDTemp(float temperature)->floatGet the derivative of the ice volumetric fraction against the current temperature.
-
getPhaseFraction(int phaseid)->floatGet the the volumetric fraction of given phase.
-
getPhaseState()->floatCurrent phase state: melting or freezing.
class RigidMpts
Methods:
-
RigidMpts->voidNote that: users are not allowed to call this constructor in the python script.
class Material
Methods:
-
Material()->voidDefault constructor for mpm.Material.
This is a pure virtual class, and users must initialize its child class instead of itself.
-
setIndex()->voidSet the unique ID for material object.
-
setInitDensity(float solidrho, float icerho, float waterrho)->voidInitialie the density for solid, ice and water when phase transformation task is activated.
-
setInitFraction(float solidfraction, float icefraction, float waterfraction)->voidInitialie the volume fraction for solid, ice and water when phase transformation task is activated.
-
setThermalProp()->voidOverloaded function.
-
setThermalProp(float hc, list <float> conductivity)->voidSet 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)->voidSet 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()->voidDefault 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()->voidPrint the debug information.
-
printSState()->voidPrint 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()->voidDefault constructor for mpm.Elastic.
-
printInfo()->voidPrint the debug information.
Properties:
-
E
Young’s modulous
-
nu
Poisson’s ratio
class Ghostmat -> Material
Methods:
-
Ghostmat()->voidDefault constructor for mpm.Elastic.
-
printInfo()->voidPrint the debug information.
Properties:
-
thermalResistance
The parameter for thermal simulation. (Not activated in mpm task.)
class Mc -> Material
Methods:
-
Mc()->voidDefault 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()->voidPrint 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()->voidDefault 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()->voidPrint 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()->voidDefault 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()->voidDefault constructor for mpm.NewtonLiquid.
-
printInfo()->voidPrint the debug information.
Properties:
-
bulk
Bulk modulus
-
visco
Dynamic viscosity
class Shape
Methods:
-
Shape()->voidNote that: users are not allowed to call this constructor in the python script.
-
setBc()->voidOverloaded function.
-
setBc(int xon, float valuex, int yon, float valuey)->voidSet 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)->voidSet 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)->voidSet 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()->voidOverloaded function.-
setConsolidation(float sxx, float yy)->voidSet initial consolidation stress.
-
setConsolidation(string sxx, string yy)->voidSet initial consolidation stress with string, which will be parsed as numerical value.
-
-
setDamping(float pdamping, float gdamping, float PIC)->voidSet the damping: particle damping, grid damping and PIC fraction.
-
setInitTemperature(float temp)->voidSet the initial temperature.
-
setMethod(int method, bool isfixed)->voidOverried the interpolation method set by mpm.Analysis.
If isfixed is True, it means that the method will not be changed automatically.
-
setThermalBc()->voidSet the prescribed temperature on Dirichlet BC for thermal field.
-
setTracBc()->voidOverloaded function.
-
setTracBc(int face, int dir, float value)->voidSet 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)->voidSet 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)->voidSet user defined contact normal for traditional contact algorithm.
-
unsetThermalBc()->voidCancel the thermal boundary condition.
class DemPolygon -> Shape
Method:
-
DemPolygon(float timestep, int searchrange, int callfrequency, float contactKn, float contactKs, float friction)->voidConstructor 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)->voidHow the dem polygon add the force. True: add to pt, False: add to nodes.
-
addPts(float px, float py)->voidAdd 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()->voidPrint the debug information.
-
setDt(float timestep)->voidSet timestep for dempolygon
-
setForceNormalDir(int axis, int forcestate)->voidSet 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)->voidSet the gravity.
-
setInterval(int updateiters)->voidSet interval of neighbour list update.
-
setPts(list <float>)->voidSet points array to polygon.
-
setRange(int searchrange)->voidSet search range for updating the material points neighbour list.
-
setRotFix(bool)->voidSet if the rotation of the
DemPolygonis fixed. -
setShapeErr(float gjkerr)->voidSet the resolution for GJK contact detection.
-
usePolygonContact(bool ispolygon)->voidSet the way that
DemPolygontreats 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 )->voidConstructor 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)->voidHow 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()->voidPrint the debug information.
-
setArc()->voidCut a arc from sphere.
-
setPts(list <float>)->voidSet points array to polygon.
class Polygon -> Shape
Methods:
-
Polygon(int)->voidInput argument: shape type. Please refer to shapetype enumeration for details.
-
setPts(list <float>)->voidSet the vertex for this polygon.
class Rectangle -> Shape
Methods:
-
Rectangle(float xmin, float xmax, float ymin, float ymax, int shapetype)->voidInput 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 )->voidInput arguments: position x, position y, internal radius, external radius and shape type.
class Sphere -> Shape
Methods:
-
Sphere()->voidOverloaded function.
-
Sphere(float xmin, float xmax, float ymin, float ymax, int shape type)->voidInput arguments: xmin, xmax, ymin, ymax. Shape type please refer to the SHAPETYPE enumeration.
-
Sphere(float px, float py, float radius, int shape type)->voidInput 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()->voidDefault constructor for mpm.Writer.
-
setDir()->voidSet the top directory and current directory name for saving result files.
-
setEndTime()->voidEnd time of writing result files.
-
setIntervalTime()->voidInterval time of writing result files.
-
setStartTime()->voidStart time of writing result files.
class PeriodicHook
Methods:
-
PeriodicHook()->voidDefault constructor for mpm.Hook.
-
reset()->voidReset 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.