好消息! FLAC2D 9.0及FLAC3D 9.0正式釋出囉! ...
首頁
1
商品介紹
2
PFC Suite 3
https://www.jscic.com.tw/ 楓政科技工程有限公司

PFC Suite 7.0

一、概述

PFC(粒子流程式)是一種通用的離散元素模型 (Distinct-Element Modeling) 框架,有二維和三維二種程式(分別為 PFC2D PFC3D)。 PFC Suite包括 PFC2D PFC3D 其中,PFC2D 亦可單獨購買。

 

c8d573b9f8e9512c672d1a8ea0c8256c.gif

PFC 對合成的材料進行模擬,該材料由一系列大小不一的剛性顆粒組成,這些顆粒在接觸處相互作用以表示粒狀和固體材料。 PFC 模型模擬許多剛性粒子的獨立運動(平移和旋轉)和相互作用,這些粒子基於內力和力矩在接觸處相互作用。粒子形狀可以包括 2D 中的圓盤或 3D 中的球體、2D 中剛性連接的圓盤“團塊(Clumps)”或 3D 中的球體,以及 2D 中的凸型多邊形或 3D 中的多面體。接觸力學遵循顆粒互制法則並據以更新內力和力矩。 PFC 包括 16 個內建的接觸模型,並且可以自行添加 C++ 用戶自定義的接觸模型 (UDM)

Applications

Thanks to its general design, PFC can be customized and applied to a very broad range of numerical investigations where the discrete nature of the systems is of interest. Since the release of the first version in 1994, PFC has become a leading DEM tool for geoscience investigations ranging from fundamental research on soil and rock behavior at the micro scale to a wide variety of large scale applications, including: hydraulic fracturing, soil-tool interactions, brittle rock fracturing, slope and excavation stability, rock cutting, pavement design, material handling, bulk material flow/mixing, and cave mining.

PFC has also been used to simulated a wide range of other advanced applications in the fields of carbon nanotubes, molecular dynamics, magnetic materials, and medicine.

Integrated Analysis Tools

The following analysis modules are included with PFC.

Thermal Analysis: The thermal module of PFC allows simulation of transient heat conduction and storage in materials consisting of PFC particles, as well as development of thermally induced strains and forces. PFC supports both thermal-only and coupled thermal-mechanical analysis.

C++ Contact Models: Enables users to add new contact models (force-displacement response between particles) in PFC using C++ scripting. This component provides the flexibility to incorporate new physics applicable to your simulations into the distinct-element framework


二、 PFC 7.0版更新內容


Features in this version open new realms of possibilities for granular, manufacturing, and soil simulation applications as well as bonded-block modeling (BBM), including fragmentation.

The latest version of PFC provides major enhancements for modeling capabilities, faster solutions with multi-threaded FISH, and many new contact models.

1. 增添五個接觸模型

Five new built-in contact models have been added to PFC 7.0 for a total of 16 contact models plus the null contact model.


(1). Edinburgh-Elasto-Plastic-Adhesive (EEPA) Contact Model


Material subjected to relatively high loads (consolidation) may experience plastic deformation that results in increased contact area and increased cohesive behavior. History-dependent cohesion (or adhesion) can be modeled in PFC by introducing an attractive force component to the contact model.

The Edinburgh-Elasto-Plastic-Adhesion (EEPA) contact model, developed by Morrisey (2013), is an extension of the linear hysteretic model by Walton and Braun (1986). This model allows tensile forces to develop, as well as a non-linear force-displacement behavior in compression. The model also incorporates viscous damping and rolling resistance mechanisms similar to the Rolling Resistance Linear Model.


af66ae6f15981011d9da83e68854546d.JPG


深入了解


(2). Johnson-Kendall-Roberts (JKR) Contact Model


The Johnson-Kendall-Roberts (JKR) contact model is an extension of the well-known Hertz contact model proposed by Johnson (1971). The model accounts for attraction forces due to van der Waals effects. The model is, however, also used to simulate material where the adhesion is caused by capillary or liquid-bridge forces as discussed by Hærvig (2017)Carr (2016), Morrissey (2013), and Xia et al. (2019).

The JKR contact model is an extension of the Hertz-Mindlin model, which allows for tensile forces to develop due to surface adhesion. This model also incorporates viscous damping and rolling resistance mechanisms to the Rolling Resistance Linear Model.

326997cc6647487b8284fd63f39d2ea1.png
深入了解


(3). Spring Network Contact Model

A spring network bond is a set of elastic springs with constant normal and shear stiffnesses, uniformly distributed over a cross-section lying on the contact plane and centered at the contact point. Relative motion at the contact causes development of a linear force and moment that act on the two contacting pieces. This behavior is the same as the linear parallel bond and the soft-bond model. But unlike those models, a method exists to compute contact stiffnesses that are consistent—when bonded—with an elastic material with a target Young’s modulus and zero Poisson’s ratio. If a non-zero Poisson’s ratio is specified then a fictitious force, derived from linear elasticity, is computed and added to the total force to produce the desired Poisson effect. If the maximum normal stress exceeds the bond tensile strength, the bond may enter a user-defined force-displacement regime before breaking. If the maximum shear stress exceeds the bond shear strength, then it breaks and may enter a user-defined force-displacement regime in the shear direction. If the bond is inactive but the contact is active, frictional strength parameters govern slip with potential dilation and/or healing.

The spring network model can be used to simulate unbonded and bonded systems. The bonded formulation is based on the Rigid Block Spring Network (RBSN) lattice model introduced by Bolander (1998a) and the subsequent work of Asahina (2015) and Asahina (2017). Some key characteristics of this model include:

  1. the effective removal of particle-scale heterogeneity in elastic response, allowing the user to control heterogeneity;
  2. the ability to match a target Young’s modulus directly;
  3. matching a target Poisson’s ratio. Rasmussen (2021) and references therein demonstrate the effective use of this methodology in DEM simulations.

No property calibration is needed for macroscopic Young's modulus and Poisson's ratio. Corrections are automatically applied to contact forces based on the current average stress tensor of the contacting blocks and the elastic behavior of the blocks

In an unbonded state, the spring network model behaves similar to the contact model proposed by Jiang (2015a), providing the ability to transmit both a force and a moment at the contact point, with frictional strength parameters limiting the shear force, bending moment, and twisting moment. Dilation and evolving shear strength as a function of slip can also be specified.

In its bonded formulation, the model behavior is similar to that of a linear parallel bond or soft-bond model, with the possibility for the bond to fail if the bond strength is exceeded either in shear or in tension. Unlike those models, contact properties can be computed based on lattice theory to provide a theoretical match to a target macroscopic Young’s modulus and Poisson’s ratio. Similar to the soft-bond model, the bond may not be removed upon failure in tension. Instead, it may enter into a user-specified softening regime until the bond stress reaches a threshold value, at which time the bond is removed and considered broken. For example, the following figure (left) shows six contacts behaviors for different interface/joint conditions: 1) no slip weakening friction, 2) linear slip weakening friction, 3) linear slip weakening with healing, 4) piecewise linear slip weakening with healing, 5) piecewise linear slip weakening with healing and cohesion, 6) piecewise linear slip weakening with healing, cohesion, and residual cohesion.


深入了解



5ab9064f81c94f3b024158da65567dd5.JPG


(4). FISH Contact Model


The FISH model does not encapsulate any contact physics. Instead, the user must specify a FISH function that is called during the force-displacement law.

The FISH contact model can be used to facilitate contact model development. The FISH scripting language provides a powerful tool for adding custom physics. This contact model is a blank slate for users to implement their own contact physics via a FISH function. The function must take nine arguments which are filled inside the force-displacement computation. The FISH function must modify the contact model force and/or moment. If effective stiffnesses are provided, then the timestep is determined automatically. C++ contact models and FISH intrinsics are still available.

Contact extra variables or global FISH symbols can be used to manage the contact model properties. It is also strongly suggested that the contact property indices (see contact.model.prop.index and contact.prop.index) be used to set the properties in the FISH model while cycling, as string properties increase modeling times significantly.


深入了解


5b412a63b99ae1f200da7ada5fef5aca.JPG


(5). Linear Dipole Contact Model


The linear dipole model is mechanically the same as the Linear Model, comprised of both linear and dashpot components. The linear component provides linear elastic (no-tension) frictional behavior, while the dashpot component provides viscous behavior. Both components act over a vanishingly small area, and thus transmit only a force.

In order to model magnetic interactions, each piece is abstracted as a magnetic dipole based on Thomas and Zewski (2008). Forces and moments due to the dipole interactions are computed and also applied to the pieces. The moments applied to each piece due to the dipole interactions are, in general, not the same. One must also use the proximity concept (see the contact cmat proximity command) so that contacts may be deemed active despite the lack of physical overlap. Inheritance of the dipole_mo surface property is also required along with orientation tracking (see the model orientation-tracking command).

For example, the following figure compares the analytic solution for the attractive forces/moments for square ferromagnets, derived by Akoun (1984), with those produced by the Linear Dipole Model contact model (based on the configuration reported by (Thomas and Zewski, 2008). In this verification problem, a square clump with a 1 cm side is created with various numbers of pebbles. The clumps have uniform magnetic induction of 1 Tesla. The corresponding magnetic moment is set for each pebble accounting for the total number of pebbles. Each pebble must interact with each other pebble of the other clump. The side lengths are 1, 3, and 6 pebbles, resulting in 1, 27, and 216 pebbles per clump and 1, 729, and 46,656 contacts. The model and analytical solutions compare well, improving with increasing resolution (more pebbles used).


深入了解


6b8870e3234d8b8cb9a3ec753c885622.JPG



2. 剛性塊體及團塊(Rigid Blocks and Clumps)


In addition to improved computational performance, rigid blocks have been enhanced so that it's possible to:

  • Cut rigid blocks during cycling, retaining contacts
  • Easily apply rigid block boundary conditions
  • Simplify model creation via facet groups
  • Densify rigid blocks via cutting

The clumping logic has been generalized, allowing collections of balls and/or convex rigid blocks to be clumped together. This logic permits:

  • Modeling concave shapes with rigid blocks instead of pebbles. For example, models composed of the dolos object shown below (left and center) requires about the same modeling time as the clump (right), but does not suffer from bumpy surfaces and normal stiffness issues

7f1ca5d707aa6b4b2f478087f1ae79e6.png

  • Improved simulations of fragmentation; clumps (including rigid blocks) can now break (e.g., pebbles may be freed from clumps during cycling) without losing the contact information
  • The clump inertia tensor and volume computations are now multi-threaded


3. 顆粒注入口 (Particle Inlets)


Particle inlets have been added to simplify model generation by automatically generating streams of balls, clumps, and/or rigid blocks into the model during cycling.

  • Uses the brick logic to pre-define a collection of objects (balls, clumps, rigid blocks)
  • Can specify inlet flow rates, positions, and orientations
  • Can translate and rotate inlets at defined velocities during cycling

The Inlet logic uses the Brick logic to create inlet(s) of particles using the inlet create command. Existing inlets may be modified with the inlet modify command. During cycling, particles in the brick are fictiously translated according to the specified flow-velocity vector and the current timestep. Given these updated fictitious positions, particles in the brick that fall out of the brick extent boundary are identified for insertion and their centroid is mapped back into the brick extent. Copies of particles corresponding to the fictitious brick particles identified for insertion are then actually inserted, with an initial velocity set to the inlet flow velocity. Note that the sole information used for the inlets regards the particles; contact information is not considered. Contacts are subsequently automatically created during cycling.

深入了解

Spray-simulation using PFC Inlets 影片 



4. FISH


Multi-threaded FISH


The FISH scripting language is now multi-threaded, resulting in much faster execution of FISH functions. This an important new feature in PFC 7 as FISH is commonly used during model cycling. To take full advantage of multi-threaded FISH, a new LIST data type, SPLITTING syntax, and OPERATORS have been added.


FISH
 Lists


Lists are one-dimensional arrays of general FISH values. They differ from matrices in that each index can hold any valid FISH type (including another list). They differ from arrays in that they are passed by value, and they can only be of one dimension. You can iterate through all the elements of a list using the loop foreach statement. The access operator -> can be applied to lists, which permits the retrieval or assignment of an element and returns another list.


深入了解


Splitting


FISH
 splitting allows a function, operator, or library call to be executed repeatedly on each element of an aggregate type (a list, an array, a container of objects, etc). Splitting is executed on all available threads. Splitting can be used as an alternative to loop statements to perform actions on many objects in a very clear and concise manner.


深入了解


9d6130fb2d35552642dd203415d46cab.png


Operators


FISH
 operators are a special class of function designed to be executed in a multi-threaded environment.

On a repeated function call made using splitting, if the symbol was declared as an operator these separate executions will be distributed on all available threads (see the program threads command). On a typical modern multi-core computer and a large set of data this can result in a very large increase in speed.

One of the most common and important uses of FISH operators—indeed their primary reason for being—is to use during cycling. Otherwise a single threaded FISH function that checks or changes all objects in a model will easily dominate the run time of the system.


深入了解