SPHinXsys  alpha version
Classes | Typedefs | Enumerations | Functions | Variables
SPH Namespace Reference

Classes

class  ActiveMuscle
 Here, the active reponse is considered. More...
 
class  ActiveMuscleParticles
 A group of particles with active muscle particle data. More...
 
class  AlievPanfilowModel
 The simplest Electrophysiology Reaction model, which reduces the complex of array of ion currents to two variables that describe excitation and recovery. More...
 
class  Array
 
class  BaseDataPackage
 Abstract base class for a data package which is given by a small mesh patch. note tha ADDRS_SIZE = PKG_SIZE + 2 * pkg_addrs_buffer_;. More...
 
class  BaseDiffusion
 diffusion property abstract base class. More...
 
class  BaseLevelSet
 A abstract describes a mesh with level set data packages. More...
 
class  BaseMaterial
 Base of all materials. More...
 
class  BaseMesh
 Base class for all meshes. More...
 
class  BaseMeshCellLinkedList
 Abstract class for mesh cell linked list. More...
 
class  BaseMeshWithDataPackages
 Abstract class for a background mesh on which the data packages are located. More...
 
class  BaseParticles
 Particles with essential (geometric and kinematic) data. There are three types of particles. One is real particles whose states are updated by particle dynamics. One is buffer particles whose state are not updated by particle dynamics. They may be switched from real particles or switch to real particles. The other is ghost particles whose states are updated according to boundary condition if their indices are included in the neighbor particle list.
More...
 
class  BaseReactionModel
 Base class for all reaction models. More...
 
class  BodyLowerBound
 the lower bound of a body by reduced particle positions. More...
 
class  BodyPart
 An auxillary class for SPHBody to indicate a part of the body. More...
 
class  BodyPartByCell
 An auxillary class for SPHBody to indicate a part of the body fixed in space. More...
 
class  BodyPartByParticle
 An auxillary class for SPHBody to indicate a part of the body moving together with particles. More...
 
class  BodyStatesIO
 base class for write and read body states. More...
 
class  BodySurface
 A auxillary class for Body to indicate the surface particles from background mesh. More...
 
class  BodySurfaceLayer
 A auxillary class for Body to indicate the particles within the inner layers. More...
 
class  BodyUpperBound
 the upper bound of a body by reduced particle positions. More...
 
class  BoundingBodyDomain
 The base class bounding particle position within a box body domain. More...
 
class  BoundingInAxisDirection
 Bounding particle position in a axis direction. The axis_direction must be 0, 1 for 2d and 0, 1, 2 for 3d. More...
 
class  Branch
 Each branch has a parent and several children, many branches compose a tree. More...
 
class  CellList
 The linked list for one cell. More...
 
class  CompareParticleSequence
 compare the sequence of two particles More...
 
class  ComplexShape
 gives the final geomtrical definition of the SPHBody More...
 
class  DampingBySplittingAlgorithm
 A quantity damping by splitting scheme this method modifies the quantity directly. Note that, if periodic boundary condition is applied, the parallelized version of the method requires the one using ghost particles because the splitting partition only works in this case.
More...
 
class  DampingBySplittingPairwise
 A quantity damping by a pairwise splitting scheme this method modifies the quantity directly Note that, if periodic boundary condition is applied, the parallelized version of the method requires the one using ghost particles because the splitting partition only works in this case.
More...
 
class  DampingBySplittingWithRandomChoice
 A random choice method for obstaining static equilibrium state Note that, if periodic boundary condition is applied, the parallelized version of the method requires the one using ghost particles because the splitting partition only works in this case.
More...
 
class  DataDelegateComplex
 prepare data for complex particle dynamics More...
 
class  DataDelegateContact
 prepare data for contact particle dynamics More...
 
class  DataDelegateInner
 prepare data for inner particle dynamics More...
 
class  DataDelegateSimple
 prepare data for simple particle dynamics. More...
 
class  DiffusionBasedMapping
 Mapping inside of body according to diffusion. This is a abstract class to be override for case specific implementation. More...
 
class  DiffusionBoundaryCondition
 set boundary condition for diffusion problem More...
 
class  DiffusionReactionInitialCondition
 Computing the acoustic time step size computing time step size. More...
 
class  DiffusionReactionMaterial
 Complex material for diffusion or/and reactions. More...
 
class  DiffusionReactionParticles
 A group of particles with diffusion or/and reactions particle data. More...
 
class  DirectionalDiffusion
 Diffussion is biased along a specific direction. More...
 
class  Edge
 template base class of linear structure More...
 
class  ElasticSolid
 Abstract class for a generalized elastic solid. More...
 
class  ElasticSolidParticles
 A group of particles with elastic body particle data. More...
 
class  ElectroPhysiologyParticles
 A group of particles with electrophysiology particle data. More...
 
class  ElectroPhysiologyReaction
 
class  Exception
 A class for basic exception functionality. More...
 
class  ExternalForce
 This class define external forces. More...
 
class  FeneNeoHookeanSolid
 
class  FictitiousBody
 Derived class from SPHBody. Without inner configuration or inner interaction. More...
 
class  Fluid
 Base class of all fluids. More...
 
class  FluidBody
 Declaration of fluid body. More...
 
class  FluidParticles
 newtonian fluid particles. More...
 
class  GetDiffusionTimeStepSize
 Computing the time step size based on diffusion coefficient and particle smoothing length. More...
 
class  GlobalStaticVariables
 A place to put all global variables. More...
 
class  Gravity
 The gravity force, derived class of External force. More...
 
class  In_Output
 The base class which defines folders for output, restart and particle reload folders. More...
 
class  IndexOutOfRange
 
class  InitializeATimeStep
 initialize a time step for a body. including initialize particle acceleration induced by viscous, gravity and other forces, set the number of ghost particles into zero. More...
 
class  InteractionDynamics
 This is the class for particle interaction with other particles. More...
 
class  InteractionDynamicsSplitting
 This is for the splitting algorithm. More...
 
class  InteractionDynamicsWithUpdate
 This class includes an interaction and a update steps. More...
 
class  InvalidArgument
 
class  InvalidCall
 
class  InvalidTemplateArgument
 
class  IsotropicDiffusion
 isotropic diffusion property. More...
 
class  Kernel
 Abstract base class of a general SPH kernel function which is a smoothed Dirac delta function, a kernel function is radial symmetric, and has a scaling factor. Based on difference data type in 2d or 3d buildings, the kernel is defined for 2 and 3 dimensions. The kernel gives value one at the origin. The naming of kernel function follows the stand SPH literature. Currently, only constant smoothing length is applied. Basically, one can assign different kernel for different particle interactions. More...
 
class  KernelHyperbolic
 Kernel from Yang el al. More...
 
class  KernelTabulated
 
class  KernelWendlandC2
 Kernel WendlandC2. More...
 
class  KeyNotFound
 
class  LevelSet
 Mesh with level set data as packages. More...
 
class  LevelSetComplexShape
 the final geomtrical definition of the SPHBody based on a narrow band level set function generated from the original ComplexShape More...
 
class  LevelSetDataPackage
 Fixed memory level set data packed in a package. More...
 
class  LinearElasticSolid
 Isotropic linear elastic solid. More...
 
class  LocalDirectionalDiffusion
 Diffusion is biased along a specific direction. More...
 
class  LocallyOrthotropicMuscle
 muscle model is a anisotropic material in which there are local fiber direction and cross-fiber sheet direction. the model here is from Holzapfel and Ogden, 2009, Phil. Trans. R. Soc. 367:3445-3475 we consider a neo-hookean model for the background isotropic contribution. More...
 
class  LocalMonoFieldElectroPhysiology
 material class for electro_physiology with locally oriented fibers. More...
 
class  MaterialPropertyIO
 base class for write and read material property. More...
 
class  MaximumSpeed
 Get the maximum particle speed in a SPH body. More...
 
class  Mesh
 Abstract base class for defining basic mesh properties. The mesh is proposed for several functions. First, it is used in cell linked list for neighbor search. Second, it is used for background maps such as level sets. This class is the counterpart of the class particles. More...
 
class  MeshCellLinkedList
 Defining a mesh cell linked list for a body. The meshes for all bodies share the same global coordinates. More...
 
class  MeshSystem
 
class  MeshWithDataPackages
 Abstract class fpr mesh with data packages. More...
 
class  MirrorBoundaryConditionInAxisDirection
 Mirror bounding particle position and velocity in an axis direction. More...
 
class  MonoFieldElectroPhysiology
 material class for electro_physiology. More...
 
class  MultilevelMesh
 Multi level Meshes with multi resolution mesh data. More...
 
class  MultilevelMeshCellLinkedList
 Defining a multimesh cell linked list for a body for multiresolution particle configuration. More...
 
class  MultiPolygon
 used to define a closed region More...
 
class  Muscle
 Globally orthotropic muscle. More...
 
class  NearBodySurface
 An auxillary class for SPHBody to indicate region close the body surface. More...
 
class  Neighborhood
 A neighborhood around particle i. More...
 
class  NeoHookeanSolid
 Neo-Hookean solid. More...
 
class  Oldroyd_B_Fluid
 linear EOS with relaxation time and polymetric viscosity. More...
 
class  PartDynamicsByCell
 Imposing Eulerian constrain to a body. The constrained particles are in the tagged cells . More...
 
class  PartDynamicsByCellReduce
 reduce operation in a Eulerian constrain region. More...
 
class  PartDynamicsByParticle
 Imposing Lagrangian constrain to a body. That is the constrained particles will be the same during the simulation. More...
 
class  PartDynamicsByParticleReduce
 reduce operation in a Lagrangian contrained region. More...
 
class  ParticleDynamics
 The base class for all particle dynamics This class contains the only two interface functions available for particle dynamics. An specific implementation should be realized. More...
 
class  ParticleDynamics1Level
 This class includes an initialization, an interaction and a update steps. More...
 
class  ParticleDynamicsReduce
 Base abstract class for reduce. More...
 
class  ParticleDynamicsSimple
 Simple particle dynamics without considering particle interaction. More...
 
class  ParticleGenerator
 Base abstract class for particle generation. More...
 
class  ParticleGeneratorDirect
 Generate particle directly from position-and-volume data. More...
 
class  ParticleGeneratorLattice
 generate particles from lattice positions for a body. More...
 
class  ParticleGeneratorNetwork
 generate network or tree distributed particles from lattice positions for a body. More...
 
class  PeriodicConditionInAxisDirection
 Base class for two different type periodic boundary conditions. More...
 
class  PeriodicConditionInAxisDirectionUsingCellLinkedList
 The method imposing periodic boundary condition in an axis direction. It includes two different steps, i.e. imposing periodic bounding and condition. The first step is carried out before update cell linked list and the second after the updating. If the exec or parallel_exec is called directly, error message will be given. More...
 
class  PeriodicConditionInAxisDirectionUsingGhostParticles
 The method imposing periodic boundary condition in an axis direction by using ghost particles. It includes three different steps, i.e. imposing periodic bounding, creating ghosts and update ghost state. The first step is carried out before update cell linked list and the second and third after the updating. If the exec or parallel_exec is called directly, error message will be given. More...
 
class  RandomizePartilePosition
 Randomize the initial particle position. More...
 
class  ReadBodyStates
 base class for read body states. More...
 
class  ReadMaterialProperty
 
class  ReadReloadMaterialProperty
 Read the material property to file in XML format. More...
 
class  ReadReloadParticle
 Write the reload particles file in XML format. More...
 
class  ReadRestart
 
class  ReadSimBodyStates
 base class for read SimBody states. More...
 
class  RealBody
 Derived class from SPHBody. With inner particle configuration or inner interactions. More...
 
struct  ReduceLowerBound
 
struct  ReduceMax
 
struct  ReduceMin
 
struct  ReduceOR
 
struct  ReduceSum
 
struct  ReduceUpperBound
 
class  RelaxationOfAllDiffusionSpeciesRK2
 Compute the diffusion relaxation process of all species with second order Runge-Kutta time stepping. More...
 
class  RelaxationOfAllDiffussionSpecies
 Compute the diffusion relaxation process of all species. More...
 
class  RelaxationOfAllReactionsBackward
 Compute the reaction process of all species by backward splitting. More...
 
class  RelaxationOfAllReactionsForward
 Compute the reaction process of all species by forward splitting. More...
 
class  ReloadMaterialPropertyIO
 For write and read material property. More...
 
class  ReloadParticleIO
 For write and read particle reload. More...
 
class  RestartIO
 Write the restart file in XML format. More...
 
class  RungeKutta2Stages2ndStage
 the second stage of the second runge-kutta scheme More...
 
class  RungeKuttaInitialization
 initialization of a runge-kutta integration scheme More...
 
class  Shape
 Base class for all geometries. More...
 
class  SimBodyStatesIO
 base class for write and read SimBody states. More...
 
class  Solid
 Base class of all solids. More...
 
class  SolidBody
 Declaration of solidbody which is used for Solid BCs and derived from RealBody. More...
 
class  SolidBodyPartForSimbody
 A SolidBodyPart for coupling with Simbody. The mass, origin, and unit inertial matrix are computed. Note: In Simbody, all spatial vectors are three dimensional. More...
 
class  SolidParticles
 A group of particles with solid body particle data. More...
 
class  SPHBody
 SPHBody is a base body with basic data and functions. Its derived class can be a real fluid body, a real deformable solid body, a static or moving solid body or a fictitious body. Note that only real bodies have cell linked list. More...
 
class  SPHBodyBaseRelation
 The relation within a SPH body or with its contact SPH bodies. More...
 
class  SPHBodyComplexRelation
 The relation within a SPH body and with its contact SPH bodies. The interaction is in a inner-boundary-condition fashion. Here inner interaction is different from conact interaction. More...
 
class  SPHBodyContactRelation
 The relation between a SPH body and its contact SPH bodies. More...
 
class  SPHBodyInnerRelation
 The relation within a SPH body. More...
 
class  SPHSystem
 The SPH system managing objects in the system level. More...
 
class  StateEngine
 
class  Structure
 Base class for all structures. More...
 
class  SVec
 
class  SwapParticleData
 swap sortable particle data according to a sequence More...
 
class  SymmetricTaitFluid
 Tait EOS for positive and negative pressure symmetrically. More...
 
class  Transform2d
 Coordinate transfrom in 2D. More...
 
class  Tree
 tree structure More...
 
class  TriangleMeshShape
 
class  UpperFrontInXDirection
 Get the upper front In X Direction for a SPH body. More...
 
class  VelocityBoundCheck
 check whether particle velocity within a given bound More...
 
class  ViscoelasticFluidParticles
 Viscoelastic fluid particles. More...
 
class  WeaklyCompressibleFluid
 Linear equation of state (EOS). More...
 
class  WeaklyCompressibleFluidFreeSurface
 Equation of state (EOS) with cut-off pressure. More...
 
class  WriteAnObservedQuantity
 write files for observed quantity More...
 
class  WriteBodyStates
 base class for write body states. More...
 
class  WriteBodyStatesToPlt
 Write files for bodies the output file is dat format can visualized by TecPlot. More...
 
class  WriteBodyStatesToVtu
 Write files for bodies the output file is VTK XML format can visualized by ParaView the data type vtkUnstructedGrid. More...
 
class  WriteFreeSurfaceElevation
 write files for the total mechanical energy of a weakly compressible fluid body More...
 
class  WriteLevelSetToPlt
 write the background mesh data for relax body More...
 
class  WriteMaterialProperty
 base class for write material property. More...
 
class  WriteMaximumSpeed
 write files for the maximum speed within the body More...
 
class  WriteObservedDiffusionReactionQuantity
 write the observed diffusion and reaction quantity to files. More...
 
class  WriteReloadMaterialProperty
 Write the material property to file in XML format. More...
 
class  WriteReloadParticle
 Write the reload particles file in XML format. More...
 
class  WriteRestart
 Write the restart file in XML format. More...
 
class  WriteSimBodyPinData
 Write total force acting a solid body. More...
 
class  WriteSimBodyStates
 base class for write SimBody states. More...
 
class  WriteTotalForceOnSolid
 Write total force acting a solid body. More...
 
class  WriteTotalMechanicalEnergy
 write files for the total mechanical energy of a weakly compressible fluid body More...
 
class  WriteTotalViscousForceOnSolid
 write total viscous force acting a solid body More...
 
class  WriteToVtuIfVelocityOutOfBound
 output body sates if particle velocity is out of a bound More...
 
class  WriteUpperFrontInXDirection
 write files for water front in free surface flow More...
 
class  XmlEngine
 XmlEngine class, in which SIMBody XML parse is used. More...
 

Typedefs

using Veci = Vec2i
 
using Vecu = Vec2u
 
using Vecd = Vec2d
 
using Point = Vec2d
 
using Index = Vec2i
 
using Matd = Mat2d
 
using SymMatd = SymMat2d
 
using Transformd = Transform2d
 
using matrix_cell = CellList **
 
template<class DataType , int ARRAY_SIZE>
using PackageDataMatrix = std::array< std::array< DataType, ARRAY_SIZE >, ARRAY_SIZE >
 
template<class DataType >
using MeshDataMatrix = DataType **
 
typedef model::polygon< model::d2::point_xy< Real > > boost_poly
 
typedef model::multi_polygon< boost_poly > boost_multi_poly
 
template<typename T >
using LargeVec = tbb::concurrent_vector< T >
 
template<typename T >
using StdLargeVec = std::vector< T, cache_aligned_allocator< T > >
 
template<typename T >
using StdVec = std::vector< T >
 
using Vec2i = SVec< 2, int >
 
using Vec3i = SVec< 3, int >
 
using Vec2u = SVec< 2, size_t >
 
using Vec3u = SVec< 3, size_t >
 
using Real = SimTK::Real
 
using Vec2d = SimTK::Vec2
 
using Vec3d = SimTK::Vec3
 
using Mat2d = SimTK::Mat22
 
using Mat3d = SimTK::Mat33
 
using SymMat2d = SimTK::SymMat22
 
using SymMat3d = SimTK::SymMat33
 
typedef std::function< Real(StdVec< StdLargeVec< Real >> &, size_t particle_i)> ReactionFunctor
 
typedef std::function< void(Vecu, Real)> MeshFunctor
 
template<class ReturnType , class DataPackageType >
using PackageFunctor = std::function< ReturnType(DataPackageType *, Real)>
 
typedef std::function< void(size_t, Real)> ParticleFunctor
 
template<class ReturnType >
using ReduceFunctor = std::function< ReturnType(size_t, Real)>
 
template<class BodyType , class BaseParticlesType , class BaseMaterialType >
using DiffusionReactionDataDelegateSimple = DataDelegateSimple< BodyType, DiffusionReactionParticles< BaseParticlesType, BaseMaterialType >, DiffusionReactionMaterial< BaseParticlesType, BaseMaterialType > >
 
template<class BodyType , class BaseParticlesType , class BaseMaterialType >
using DiffusionReactionDataDelegateInner = DataDelegateInner< BodyType, DiffusionReactionParticles< BaseParticlesType, BaseMaterialType >, DiffusionReactionMaterial< BaseParticlesType, BaseMaterialType > >
 
typedef DataDelegateSimple< SPHBody, BaseParticlesGeneralDataDelegateSimple
 
using ParticleConfiguration = StdLargeVec< Neighborhood >
 
using ContatcParticleConfiguration = StdVec< ParticleConfiguration >
 
using MaterialVector = StdVec< BaseMaterial * >
 
using SPHBodyVector = StdVec< SPHBody * >
 
typedef pair< SPHBody *, SPHBodyVectorSPHBodyContactMap
 
using IndexVector = StdVec< size_t >
 
using CellVector = StdVec< Vecu >
 
using ConcurrentIndexVector = LargeVec< size_t >
 
using ConcurrentCellVector = LargeVec< Vecu >
 
using ListData = pair< size_t, Vecd >
 
using CellListDataVector = StdLargeVec< ListData >
 
template<class DataType >
using ConcurrentVector = LargeVec< DataType >
 
using CellLists = StdLargeVec< CellList * >
 
using ConcurrentCellLists = LargeVec< CellList * >
 
using SplitCellLists = StdVec< ConcurrentCellLists >
 
using PositionsAndVolumes = vector< pair< Point, Real > >
 

Enumerations

enum  ShapeBooleanOps { add, sub, sym_diff, intersect }
 

Functions

int SecondAxis (int axis_direction)
 
void MeshIterator (Vecu index_begin, Vecu index_end, MeshFunctor &mesh_functor, Real dt)
 
void MeshIterator_parallel (Vecu index_begin, Vecu index_end, MeshFunctor &mesh_functor, Real dt)
 
void MeshIterator (Vec3u index_begin, Vec3u index_end, MeshFunctor &mesh_functor, Real dt)
 
template<class T >
void Allocate3dArray (T ***&matrix, Vec3u res)
 
template<class T >
void Delete3dArray (T ***matrix, Vec3u res)
 
template<class T >
void Allocate2dArray (T **&matrix, Vec2u res)
 
template<class T >
void Delete2dArray (T **matrix, Vec2u res)
 
template<class T >
void Allocate1dArray (T *&matrix, size_t res)
 
template<class T >
void Delete1dArray (T *matrix, size_t res)
 
int ThirdAxis (int axis_direction)
 
template<class T >
sqr (const T &x)
 
template<class T >
cube (const T &x)
 
template<class T >
powern (const T &a, int n)
 
template<class T >
SMIN (T a1, T a2)
 
template<class T >
SMIN (T a1, T a2, T a3)
 
template<class T >
SMIN (T a1, T a2, T a3, T a4)
 
template<class T >
SMIN (T a1, T a2, T a3, T a4, T a5)
 
template<class T >
SMIN (T a1, T a2, T a3, T a4, T a5, T a6)
 
template<class T >
SMAX (T a1, T a2)
 
template<class T >
SMAX (T a1, T a2, T a3)
 
template<class T >
SMAX (T a1, T a2, T a3, T a4)
 
template<class T >
SMAX (T a1, T a2, T a3, T a4, T a5)
 
template<class T >
SMAX (T a1, T a2, T a3, T a4, T a5, T a6)
 
template<class T >
void update_minmax (T a1, T &amin, T &amax)
 
template<class T >
void update_minmax (T a1, T a2, T &amin, T &amax)
 
template<class T >
ABS (const T &x)
 
template<class T >
SGN (const T &x)
 
template<class T >
HSF (const T &x)
 
template<class T >
clamp (T a, T lower, T upper)
 
template<class T >
bool Not_a_number (T a)
 
double rand_norm (double u, double std)
 
Vec2d FirstAxisVector (Vec2d zero_vector)
 
Vec3d FirstAxisVector (Vec3d zero_vector)
 
Real getMinAbsoluteElement (Vec2d input)
 
Real getMinAbsoluteElement (Vec3d input)
 
Vec3d upgradeToVector3D (Real input)
 
Vec3d upgradeToVector3D (Vec2d input)
 
Vec3d upgradeToVector3D (Vec3d input)
 
Mat2d getInverse (Mat2d &A)
 
Mat3d getInverse (Mat3d &A)
 
Mat2d getAverageValue (Mat2d &A, Mat2d &B)
 
Mat3d getAverageValue (Mat3d &A, Mat3d &B)
 
Mat2d inverseCholeskyDecomposition (Mat2d &A)
 
Mat3d inverseCholeskyDecomposition (Mat3d &A)
 
template<int N, class T >
std::ostream & operator<< (std::ostream &out, const SVec< N, T > &v)
 
template<int N, class T >
std::istream & operator>> (std::istream &in, SVec< N, T > &v)
 
template<typename OutVectorType >
OutVectorType upgradeVector (Real input)
 
template<typename OutVectorType >
OutVectorType upgradeVector (Vec2d input)
 
template<typename OutVectorType >
OutVectorType upgradeVector (Vec3d input)
 
template<class DataPackageType >
void PackageIterator (ConcurrentVector< DataPackageType *> data_pkgs, PackageFunctor< void, DataPackageType > &pkg_functor, Real dt=0.0)
 
template<class DataPackageType >
void PackageIterator_parallel (ConcurrentVector< DataPackageType *> data_pkgs, PackageFunctor< void, DataPackageType > &pkg_functor, Real dt=0.0)
 
template<class ReturnType , typename ReduceOperation , class DataPackageType >
ReturnType ReducePackageIterator (ConcurrentVector< DataPackageType *> data_pkgs, ReturnType temp, PackageFunctor< ReturnType, DataPackageType > &reduce_pkg_functor, ReduceOperation &reduce_operation, Real dt=0.0)
 
template<class ReturnType , typename ReduceOperation , class DataPackageType >
ReturnType ReducePackageIterator_parallel (ConcurrentVector< DataPackageType *> data_pkgs, ReturnType temp, PackageFunctor< ReturnType, DataPackageType > &reduce_pkg_functor, ReduceOperation &reduce_operation, Real dt=0.0)
 
void ParticleIterator (size_t number_of_particles, ParticleFunctor &particle_functor, Real dt)
 
void ParticleIterator_parallel (size_t number_of_particles, ParticleFunctor &particle_functor, Real dt)
 
void ParticleIteratorSplittingSweep (SplitCellLists &split_cell_lists, ParticleFunctor &particle_functor, Real dt)
 
void ParticleIteratorSplittingSweep_parallel (SplitCellLists &split_cell_lists, ParticleFunctor &particle_functor, Real dt)
 
template<class ReturnType , typename ReduceOperation >
ReturnType ReduceIterator (size_t number_of_particles, ReturnType temp, ReduceFunctor< ReturnType > &reduce_functor, ReduceOperation &reduce_operation, Real dt=0.0)
 
template<class ReturnType , typename ReduceOperation >
ReturnType ReduceIterator_parallel (size_t number_of_particles, ReturnType temp, ReduceFunctor< ReturnType > &reduce_functor, ReduceOperation &reduce_operation, Real dt=0.0)
 

Variables

const int MaximumNeighborhoodSize = int(Pi * 9)
 
const SimTK::Real Pi = SimTK::Pi
 
const SimTK::Real Infinity = SimTK::Infinity
 
const SimTK::Real Eps = SimTK::Eps
 
const SimTK::Real TinyReal = SimTK::TinyReal
 
constexpr size_t MaxSize_t = numeric_limits<size_t>::max()
 

Detailed Description

Macro for APPLE compilers

Typedef Documentation

◆ CellListDataVector

using SPH::CellListDataVector = typedef StdLargeVec<ListData>

Cell list concurrent vector data.

◆ CellLists

using SPH::CellLists = typedef StdLargeVec<CellList*>

Cell lists

◆ CellVector

using SPH::CellVector = typedef StdVec<Vecu>

Cell container with elements of Vecu.

◆ ConcurrentCellLists

using SPH::ConcurrentCellLists = typedef LargeVec<CellList*>

concurrent cell lists

◆ ConcurrentCellVector

using SPH::ConcurrentCellVector = typedef LargeVec<Vecu>

Concurrent cell indexes.

◆ ConcurrentIndexVector

using SPH::ConcurrentIndexVector = typedef LargeVec<size_t>

Concurrent particle indexes .

◆ ConcurrentVector

template<class DataType >
using SPH::ConcurrentVector = typedef LargeVec<DataType>

Concurrent vector .

◆ ContatcParticleConfiguration

All contact neighborhoods for all particles in a body.

◆ IndexVector

using SPH::IndexVector = typedef StdVec<size_t>

Index container with elements of size_t.

◆ ListData

using SPH::ListData = typedef pair<size_t, Vecd>

List data pair

◆ MaterialVector

using SPH::MaterialVector = typedef StdVec<BaseMaterial*>

Vector of Material. Note that vector of references are not allowed in c++.

◆ MeshFunctor

typedef std::function<void(Vecu, Real)> SPH::MeshFunctor

Functor for operation on the mesh.

◆ PackageFunctor

template<class ReturnType , class DataPackageType >
using SPH::PackageFunctor = typedef std::function<ReturnType(DataPackageType*, Real)>

Functor for operation on the mesh data package.

◆ ParticleConfiguration

using SPH::ParticleConfiguration = typedef StdLargeVec<Neighborhood>

A neighborhoods for all particles in a body.

◆ ParticleFunctor

typedef std::function<void(size_t, Real)> SPH::ParticleFunctor

Functor for operation on particles.

◆ PositionsAndVolumes

using SPH::PositionsAndVolumes = typedef vector<pair<Point, Real> >

Pair of point and volume.

◆ ReactionFunctor

typedef std::function<Real(StdVec<StdLargeVec<Real>>&, size_t particle_i)> SPH::ReactionFunctor

Reaction functor .

◆ ReduceFunctor

template<class ReturnType >
using SPH::ReduceFunctor = typedef std::function<ReturnType(size_t, Real)>

Functors for reducing operation on particles.

◆ SPHBodyVector

using SPH::SPHBodyVector = typedef StdVec<SPHBody*>

Vector of SPH body. Note that vector of references are not allowed in c++.

◆ SplitCellLists

using SPH::SplitCellLists = typedef StdVec<ConcurrentCellLists>

Split cell list for split algorithms.

Function Documentation

◆ HSF()

template<class T >
T SPH::HSF ( const T &  x)
inline

Heaviside step function

◆ inverseCholeskyDecomposition() [1/2]

Mat2d SPH::inverseCholeskyDecomposition ( Mat2d &  A)

Decomposing a matrix into Lower Triangular.

◆ inverseCholeskyDecomposition() [2/2]

Mat3d SPH::inverseCholeskyDecomposition ( Mat3d &  A)

Decomposing a matrix into Lower Triangular.

◆ MeshIterator()

void SPH::MeshIterator ( Vecu  index_begin,
Vecu  index_end,
MeshFunctor mesh_functor,
Real  dt = 0.0 
)

Iterator on the mesh by looping index. sequential computing.

◆ MeshIterator_parallel()

void SPH::MeshIterator_parallel ( Vecu  index_begin,
Vecu  index_end,
MeshFunctor mesh_functor,
Real  dt = 0.0 
)

Iterator on the mesh by looping index. parallel computing.

◆ PackageIterator()

template<class DataPackageType >
void SPH::PackageIterator ( ConcurrentVector< DataPackageType *>  data_pkgs,
PackageFunctor< void, DataPackageType > &  pkg_functor,
Real  dt = 0.0 
)

Iterator on a collection of mesh data packages. sequential computing.

◆ PackageIterator_parallel()

template<class DataPackageType >
void SPH::PackageIterator_parallel ( ConcurrentVector< DataPackageType *>  data_pkgs,
PackageFunctor< void, DataPackageType > &  pkg_functor,
Real  dt = 0.0 
)

Iterator on a collection of mesh data packages. parallel computing.

◆ ParticleIterator()

void SPH::ParticleIterator ( size_t  number_of_particles,
ParticleFunctor particle_functor,
Real  dt = 0.0 
)

Iterators for particle functors. sequential computing.

◆ ParticleIterator_parallel()

void SPH::ParticleIterator_parallel ( size_t  number_of_particles,
ParticleFunctor particle_functor,
Real  dt = 0.0 
)

Iterators for particle functors. parallel computing.

◆ ParticleIteratorSplittingSweep()

void SPH::ParticleIteratorSplittingSweep ( SplitCellLists split_cell_lists,
ParticleFunctor particle_functor,
Real  dt = 0.0 
)

Iterators for particle functors with splitting. sequential computing.

◆ ParticleIteratorSplittingSweep_parallel()

void SPH::ParticleIteratorSplittingSweep_parallel ( SplitCellLists split_cell_lists,
ParticleFunctor particle_functor,
Real  dt = 0.0 
)

Iterators for particle functors with splitting. parallel computing.

◆ ReduceIterator()

template<class ReturnType , typename ReduceOperation >
ReturnType SPH::ReduceIterator ( size_t  number_of_particles,
ReturnType  temp,
ReduceFunctor< ReturnType > &  reduce_functor,
ReduceOperation &  reduce_operation,
Real  dt = 0.0 
)

Iterators for reduce functors. sequential computing.

◆ ReduceIterator_parallel()

template<class ReturnType , typename ReduceOperation >
ReturnType SPH::ReduceIterator_parallel ( size_t  number_of_particles,
ReturnType  temp,
ReduceFunctor< ReturnType > &  reduce_functor,
ReduceOperation &  reduce_operation,
Real  dt = 0.0 
)

Iterators for reduce functors. parallel computing.

◆ ReducePackageIterator()

template<class ReturnType , typename ReduceOperation , class DataPackageType >
ReturnType SPH::ReducePackageIterator ( ConcurrentVector< DataPackageType *>  data_pkgs,
ReturnType  temp,
PackageFunctor< ReturnType, DataPackageType > &  reduce_pkg_functor,
ReduceOperation &  reduce_operation,
Real  dt = 0.0 
)

Package iterator for reducing. sequential computing.

◆ ReducePackageIterator_parallel()

template<class ReturnType , typename ReduceOperation , class DataPackageType >
ReturnType SPH::ReducePackageIterator_parallel ( ConcurrentVector< DataPackageType *>  data_pkgs,
ReturnType  temp,
PackageFunctor< ReturnType, DataPackageType > &  reduce_pkg_functor,
ReduceOperation &  reduce_operation,
Real  dt = 0.0 
)

Package iterator for reducing. parallel computing.

◆ SecondAxis()

int SPH::SecondAxis ( int  axis_direction)

rotating axis once according to right hand rule. The axis_direction must be 0, 1 for 2d and 0, 1, 2 for 3d

◆ ThirdAxis()

int SPH::ThirdAxis ( int  axis_direction)

rotating axis twice according to right hand rule. The axis_direction must be 0, 1 for 2d and 0, 1, 2 for 3d

Variable Documentation

◆ MaximumNeighborhoodSize

const int SPH::MaximumNeighborhoodSize = int(Pi * 9)

only works for smoothing length ratio less or equal than 1.3