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

Classes

class  AcousticRiemannSolver
 
class  ActiveMuscle
 Here, the active reponse is considered. 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  AlignedBoxRegion
 A template body part with the collection of particles within by an AlignedBoxShape. More...
 
class  AlignedBoxShape
 Used to describe a bounding box in which the plane vertical to axis direction is aligned to a planar piece of a shape. More...
 
class  Array
 
class  BaseAcousticRiemannSolver
 
class  BaseBodyRelationContact
 The base relation between a SPH body and its contact SPH bodies. More...
 
class  BaseBodyRelationInner
 The abstract relation within a SPH body. More...
 
class  BaseBoundingBox
 
class  BaseCellLinkedList
 Abstract class for mesh cell linked list. More...
 
class  BaseDataPackage
 Abstract base class for a data package, by which the data in a derived class can be on- or off-grid. The data package can be defined in a cell of a background mesh so the pkg_index is the cell location on the mesh. TODO: The class will be enriched with general methods for all data packages. More...
 
class  BaseDerivedVariable
 computing displacement from current and initial particle position More...
 
class  BaseDiffusion
 diffusion property abstract base class. More...
 
class  BaseLevelSet
 A abstract describes a level set field defined on a mesh. More...
 
class  BaseMaterial
 Base of all materials. More...
 
class  BaseMesh
 Base class for all structured meshes which may be grid or cell based. The basic properties of the mesh, such as lower bound, grid spacing and number of grid points may be determined by the derived class. Note that there is no mesh-based data defined here. More...
 
class  BaseMeshField
 Abstract base class for the field data saved on a mesh. More...
 
class  BaseParameterization
 
class  BaseParticleGenerator
 Abstract base particle generator. More...
 
class  BaseParticleGeneratorLattice
 Base class for generating particles from lattice positions for a body. More...
 
class  BaseParticles
 Particles with essential (geometric and kinematic) data. There are three types of particles, all particles of a same type are saved with continuous memory segments. The first type is real particles whose states are updated by particle dynamics. One is buffer particles whose state are not updated by particle dynamics. Buffer particles are saved behind real particles. The global value of total_real_particles_ separate the real and buffer particles. They may be switched from real particles or switch to real particles. As the memory for both particles are continuous, such switch is achieved at the memory boundary sequentially. The basic idea is swap the data of the last real particle with the one will be switched particle, and then switch this swapped last particle as buffer particle by decrease the total_real_particles_ by one. Switch from buffer particle to real particle is easy. One just need to assign expect state to the first buffer particle and increase total_real_particles_ by one. The other is ghost particles whose states are updated according to boundary condition if their indices are included in the neighbor particle list. The ghost particles are saved behind the buffer particles. The global value of real_particles_bound_ separate the sum of real and buffer particles with ghost particles. The global value of total_ghost_particles_ indicates the total number of ghost particles in use. It will be initialized to zero before a time step. In SPHinXsys, the variables registered in general particle data (ParticleData) belong to a hierarchy of two layers. The first is for the global basic physical states to describe the physical process. These variables are defined within the classes of particles. The second is for the local, dynamics-method-related variables, which are defined in specific methods, and are only used by the relevant methods. There is a rule of single registration, that is, a variable is only allowed to be registered with a name once by the function registerAVariable. The usage of the second- and third-layer variables is accessed by getVariableByName. Such a rule requires careful design of the code. More...
 
class  BaseReactionModel
 Base class for all reaction models. More...
 
class  BinaryShapes
 a collections of shapes with binary operations This class so that it has ownership of all shapes by using a unique pointer vector. In this way, add or subtract a shape will call the shape's constructor other than passing the shape pointer. More...
 
class  BodyLowerBound
 the lower bound of a body by reduced particle positions. More...
 
class  BodyMoment
 Compute the moment of a body. More...
 
class  BodyPart
 An auxillary class for SPHBody to indicate a part of the body. More...
 
class  BodyPartByCell
 A body part with a collection of cell lists. More...
 
class  BodyPartByParticle
 A body part with a collection of particles. More...
 
class  BodyParticleDynamics
 
struct  BodyPartParticlesIndex
 
class  BodyPartRelationContact
 The relation between a Body part with a SPH body. More...
 
class  BodyReducedQuantityRecording
 write reduced quantity of a body More...
 
class  BodyRegionByCell
 A body part with the cell lists within a prescribed shape. More...
 
class  BodyRegionByParticle
 A body part with the collection of particles within by a prescribed shape. More...
 
class  BodyRelationContact
 The relation between a SPH body and its contact SPH bodies. More...
 
class  BodyRelationContactToBodyPart
 The relation between a SPH body and a vector of body parts. More...
 
class  BodyRelationInner
 The first concrete relation within a SPH body. More...
 
class  BodyRelationInnerVariableSmoothingLength
 The relation within a SPH body with smoothing length adaptation. More...
 
class  BodyStatesIO
 base class for write and read body states. More...
 
class  BodyStatesRecording
 base class for write body states. More...
 
class  BodyStatesRecordingToPlt
 Write files for bodies the output file is dat format can visualized by TecPlot. More...
 
class  BodyStatesRecordingToVtp
 Write files for bodies the output file is VTK XML format can visualized by ParaView the data type vtkPolyData. More...
 
class  BodyStatesRecordingToVtpString
 Write strings for bodies the output is map of strings with VTK XML format can visualized by ParaView the data type vtkUnstructedGrid. More...
 
class  BodySummation
 Compute the summation of a particle variable in a body. More...
 
class  BodySurface
 A body part with the collection of particles at surface of a body. More...
 
class  BodySurfaceLayer
 A body part with the collection of particles within the surface layers of a body. More...
 
class  BodyUpperBound
 the upper bound of a body by reduced particle positions. 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  CellLinkedList
 Defining a mesh cell linked list for a body. The meshes for all bodies share the same global coordinates. More...
 
class  CellList
 The linked list for one cell. More...
 
class  CombinedInteractionDynamics
 This is the class for combining several interactions dynamics, which share the particle loop but are independent from each other, aiming to increase computing intensity under the data caching environment. More...
 
class  CompareParticleSequence
 compare the sequence of two particles More...
 
class  ComplexBodyRelation
 The relation combined an inner and a contact body relation. The interaction is in a inner-boundary-condition fashion. Here inner interaction is different from contact interaction. More...
 
class  ComplexShape
 
class  CompressibleFluid
 Ideal gas equation of state (EOS). More...
 
class  CompressibleFluidParticles
 Compressible fluid particles. More...
 
struct  CompressibleFluidState
 
class  ConstrainDiffusionBodyRegion
 set boundary condition for diffusion problem More...
 
class  DampingBySplittingComplex
 
class  DampingBySplittingInner
 
class  DampingBySplittingWithWall
 
class  DampingPairwiseComplex
 
class  DampingPairwiseFromWall
 Damping to wall by which the wall velocity is not updated and the mass of wall particle is not considered. More...
 
class  DampingPairwiseInner
 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  DampingPairwiseWithWall
 Damping with wall by which the wall velocity is not updated and the mass of wall particle is not considered. More...
 
class  DampingWithRandomChoice
 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...
 
struct  DataAssembleOperation
 
class  DataDelegateComplex
 prepare data for complex particle dynamics More...
 
class  DataDelegateContact
 prepare data for contact particle dynamics More...
 
class  DataDelegateEmptyBase
 
class  DataDelegateInner
 prepare data for inner particle dynamics More...
 
class  DataDelegateSimple
 prepare data for simple particle dynamics. More...
 
struct  DataTypeIndex
 
struct  DataTypeIndex< int >
 
struct  DataTypeIndex< Mat2d >
 
struct  DataTypeIndex< Mat3d >
 
struct  DataTypeIndex< Real >
 
struct  DataTypeIndex< Vec2d >
 
struct  DataTypeIndex< Vec3d >
 
class  DiffusionBasedMapping
 Mapping inside of body according to diffusion. This is a abstract class to be override for case specific implementation. More...
 
class  DiffusionReaction
 Complex material for diffusion or/and reactions. More...
 
class  DiffusionReactionInitialCondition
 pure abstract class for initial conditions More...
 
class  DiffusionReactionParticles
 A group of particles with diffusion or/and reactions particle data. More...
 
class  DirectionalDiffusion
 Diffusion is biased along a specific direction. More...
 
class  Displacement
 computing displacement from current and initial particle position More...
 
class  DissipativeRiemannSolver
 
class  Edge
 template base class of linear structure only with topology information. Note that a edge is defined together with a structure which is composed of edges. Such structure should have an interface function ContainerSize() returning the curent total amount of edges. 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  ElectroPhysiologyReducedParticles
 A group of reduced particles with electrophysiology particle data. More...
 
struct  ErrorAndParameters
 
class  EulerianFluidBody
 Eulerian Fluid body uses smoothing length to particle spacing 1.3. More...
 
class  Exception
 A class for basic exception functionality. More...
 
class  ExternalForce
 This class define external forces. More...
 
class  FeneNeoHookeanSolid
 Neo-Hookean solid with finite extension. More...
 
class  Fluid
 Base class of all fluids. More...
 
class  FluidBody
 Fluid body uses smoothing length to particle spacing 1.3 and carry out particle sorting every 100 iterations. More...
 
class  FluidParticles
 newtonian fluid particles. More...
 
struct  FluidState
 
class  GeometricShape
 
class  GeometricShapeBall
 
class  GeometricShapeBox
 
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  GreenLagrangeStrain
 
class  GridDataPackage
 Abstract base class for a data package whose data are defined on the grids of a small mesh patch. note tha ADDRS_SIZE = PKG_SIZE + 2 * pkg_addrs_buffer_; Also note that, while the mesh lower bound locates the first data address, the data lower bound locates the first data. More...
 
class  HardeningPlasticSolid
 Class for plastic solid with hardening. More...
 
class  HLLCRiemannSolver
 
class  HLLCRiemannSolverInWeaklyCompressibleFluid
 
class  HLLCRiemannSolverWithLimiterInWeaklyCompressibleFluid
 
class  HLLCWithLimiterRiemannSolver
 
class  ImageMHD
 
class  ImageShape
 
class  ImageShapeFromFile
 
class  ImageShapeSphere
 
class  IndexOutOfRange
 
class  InitializationRK
 initialization of a runge-kutta integration scheme More...
 
class  InOutput
 The base class which defines folders for output, restart and particle reload folders. 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  KernelCubicBSpline
 
class  KernelHyperbolic
 Kernel from Yang el al. More...
 
class  KernelLaguerreGauss
 
class  KernelQuadratic
 Kernel from Yang el al. More...
 
class  KernelTabulated
 
class  KernelWendlandC2
 Kernel WendlandC2. More...
 
class  KeyNotFound
 
class  LevelSet
 Mesh with level set data as packages. Note that the mesh containing the data packages are cell-based but within the data package, the data is grid-based. Note that the level set data is initialized after the constructor. More...
 
class  LevelSetDataPackage
 Fixed memory level set data packed in a package. Level set is the signed distance to an interface, here, the surface of a body. More...
 
class  LevelSetShape
 A shape using level set to define geometry. More...
 
class  LinearElasticSolid
 Isotropic linear elastic solid. Note that only basic parameters are used to set ElasticSolid parameters. 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...
 
struct  loopParticleDataMap
 
struct  loopVariableNameList
 
class  MaximumSpeed
 Get the maximum particle speed in a SPH body. More...
 
class  Mesh
 Abstract base class for cell-based mesh by introducing number of cells, buffer width and mesh-based data in its derived classes. Note that we identify the difference between grid spacing and data spacing. The latter is different from grid spacing when MeshWithDataPackage is considered. More...
 
class  MeshRecordingToPlt
 write the background mesh data for relax body More...
 
class  MeshWithGridDataPackages
 Abstract class for mesh with data packages. More...
 
class  MirrorBoundaryConditionInAxisDirection
 Mirror bounding particle position and velocity in an axis direction Note that, currently, this class is not for mirror condition in combined directions, such as mirror condition in both x and y directions. More...
 
class  MonoFieldElectroPhysiology
 material class for electro_physiology. More...
 
class  MultilevelCellLinkedList
 Defining a multilevel level set for a complex region. More...
 
class  MultilevelLevelSet
 
class  MultilevelMesh
 Multi-level Meshes with successively double the resolution. More...
 
class  MultiPolygon
 used to define a closed region More...
 
class  MultiPolygonShape
 A shape whose geometry is defined by a multi polygon. More...
 
class  Muscle
 Globally orthotropic muscle. More...
 
class  NearShapeSurface
 A body part with the cell lists near the surface of a prescribed shape. More...
 
class  Neighborhood
 A neighborhood around particle i. More...
 
class  NeighborRelation
 Base neighbor relation between particles i and j. More...
 
class  NeighborRelationContact
 A contact neighbor relation functor between particles i and j. More...
 
class  NeighborRelationContactBodyPart
 A contact neighbor relation functor between particles i and j. More...
 
class  NeighborRelationInner
 A inner neighbor relation functor between particles i and j. More...
 
class  NeighborRelationInnerVariableSmoothingLength
 A inner neighbor relation functor between particles i and j. More...
 
class  NeighborRelationSelfContact
 A solid contact neighbor relation functor between particles i and j. More...
 
class  NeighborRelationSolidContact
 A solid contact neighbor relation functor between particles i and j. More...
 
class  NeoHookeanSolid
 Neo-Hookean solid, Compressible formulation! More...
 
class  NeoHookeanSolidIncompressible
 Neo-Hookean solid, Incompressible formulation! Currently only works with KirchhoffStressRelaxationFirstHalf, not with StressRelaxationFirstHalf. More...
 
class  NoRiemannSolver
 
class  NormalDirectionFromBodyShape
 normal direction at particles More...
 
class  NormalDirectionFromShapeAndOp
 
class  ObservedQuantityRecording
 write files for observed quantity More...
 
class  ProbeBody
 
class  ObserverParticleGenerator
 Generate particle directly from position-and-volume data. More...
 
class  ObserverParticles
 
class  OffsetInitialPosition
 offset initial particle position More...
 
class  Oldroyd_B_Fluid
 linear EOS with relaxation time and polymetric viscosity. More...
 
class  OpenBoundaryConditionInAxisDirection
 In open boundary case, we transfer fluid particles to buffer particles at outlet. More...
 
class  OrthotropicSolid
 Orthotropic solid - generic definition with 3 orthogonal directions + 9 independent parameters, ONLY for 3D applications. More...
 
class  ParameterizationIO
 
class  PartDynamicsByCell
 Abstract class for imposing Eulerian constrain to a body. The constrained particles are in the tagged cells . More...
 
class  PartDynamicsByCellReduce
 Abstract class for reduce operation in a Eulerian constrain region. More...
 
class  PartDynamicsByParticle
 Abstract class for imposing body part dynamics by particles. 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  ParticleDynamicsComplex
 particle dynamics by considering contribution from extra contact bodies More...
 
class  ParticleDynamicsReduce
 Base abstract class for reduce. More...
 
class  ParticleDynamicsSimple
 Simple particle dynamics without considering particle interaction. More...
 
class  ParticleGenerator
 Generate volumetric particles by initialize position and volume. More...
 
class  ParticleGeneratorLattice
 generate particles from lattice positions for a body. More...
 
class  ParticleGeneratorMultiResolution
 generate multi-resolution particles from lattice positions for a body. More...
 
class  ParticleGeneratorNetwork
 Generate a tree-shape network for the conduction system of a heart with particles. More...
 
class  ParticleGeneratorReload
 Generate particle by reloading particle position and volume. More...
 
class  ParticleSmoothing
 computing smoothed variable field by averaging with neighbors More...
 
class  ParticleSorting
 The class for sorting particle according a given sequence. More...
 
class  ParticleSpacingByBodyShape
 Adaptive resolutions within a SPH body according to the distance to the body surface. More...
 
class  ParticleWithLocalRefinement
 Base class for particle with local refinement. More...
 
class  PartInteractionDynamicsByParticle
 Abstract class for particle interaction involving in a body part. More...
 
class  PartInteractionDynamicsByParticle1Level
 
class  PartInteractionDynamicsByParticleWithUpdate
 Abstract class for particle interaction involving in a body part with an extra update step. More...
 
class  PartSimpleDynamicsByParticle
 Abstract class for body part simple particle dynamics. 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. Note that, currently, this class is not for periodic condition in combined directions, such as periodic condition in both x and y directions. More...
 
class  PlasticSolid
 Abstract class for a generalized plastic solid. More...
 
class  PltEngine
 The base class which defines Tecplot file related operation. More...
 
class  RandomizeParticlePosition
 Randomize the initial particle position. More...
 
struct  ReadAParticleVariableFromXml
 
class  ReadSimBodyStates
 base class for read SimBody states. More...
 
class  RealBody
 Derived body with inner particle configuration or inner interactions. After construction, the particle and material must be specified. More...
 
struct  ReduceAND
 
struct  ReduceLowerBound
 
struct  ReduceMax
 
struct  ReduceMin
 
struct  ReduceOR
 
struct  ReduceSum
 
struct  ReduceUpperBound
 
class  RefinedLevelSet
 level set which has double resolution of a coarse level set. More...
 
class  RefinedMesh
 Abstract base class derived from the coarse mesh but has double resolution. Currently, the design is simple but can be extending for more inter-mesh operations. More...
 
class  RegressionTestBase
 The base of regression test for various method (time-averaged, ensemble-averaged, dynamic time warping) More...
 
class  RegressionTestDynamicTimeWarping
 the regression test is based on the dynamic time warping. More...
 
class  RegressionTestEnsembleAveraged
 the regression test is based on the ensemble-averaged meanvalue and variance. More...
 
class  RegressionTestTimeAveraged
 The regression test is based on the time-averaged meanvalue and variance. More...
 
class  RelaxationOfAllDiffusionSpeciesComplex
 
class  RelaxationOfAllDiffusionSpeciesInner
 Compute the diffusion relaxation process of all species. More...
 
class  RelaxationOfAllDiffusionSpeciesRK2
 Compute the diffusion relaxation process of all species with second order Runge-Kutta time stepping. 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  ReloadMaterialParameterIO
 For write and read material property. More...
 
class  ReloadParticleIO
 Write the reload particles file in XML format. More...
 
class  RestartIO
 Write the restart file in XML format. More...
 
class  Rotation2d
 Rotation Coordinate transform (around the origin) in 2D with an angle. More...
 
struct  SearchDepthMultiResolution
 a small functor for obtaining search depth across resolution More...
 
struct  SearchDepthSingleResolution
 
struct  SearchDepthVariableSmoothingLength
 a small functor for obtaining search depth for variable smoothing length More...
 
class  SecondaryStructure
 Abstract class as interface for all secondary structures. Currently, it provides interface on building inner configuration. The interface can be extended. More...
 
class  SecondStageRK2
 the second stage of the 2nd-order Runge-Kutta scheme More...
 
class  Shape
 Base class for all volumetric geometries Note that checkContain and findClosest point are basic function, They should not call other functions in shape. More...
 
class  SharedPtrKeeper
 A wrapper to provide an shared ownership for a new derived object which previous often generated by new a raw pointer. More...
 
class  ShellParticles
 A group of particles with shell particle data. More...
 
class  SimBodyStatesIO
 base class for write and read SimBody states. More...
 
class  SimpleParticleDynamics
 
class  Solid
 Base class of all solid materials. 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  SolidBodyRelationContact
 The relation between a solid body and its contact solid bodies. More...
 
class  SolidBodyRelationSelfContact
 The relation for self contact of a solid body. More...
 
class  SolidParticles
 A group of particles with solid body particle data. More...
 
class  SPHAdaptation
 Base class for all adaptations. The base class defines essential global parameters. It is also used for single-resolution method. In the constructor parameter, system_refinement_ratio defines the relation between present resolution to the system reference resolution. The derived classes are defined for more complex adaptations. 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...
 
struct  SPHBodyParticlesIndex
 
class  SPHBodyRelation
 The abstract class for all relations within a SPH body or with its contact SPH bodies. More...
 
class  SPHSystem
 The SPH system managing objects in the system level. More...
 
class  StateEngine
 
class  SurfaceParticleGenerator
 Generate volumetric particles by initialize extra surface variables. More...
 
class  SVec
 
struct  swapParticleDataValue
 
class  SwapSortableParticleData
 swap sortable particle data according to a sequence More...
 
class  SymmetricTaitFluid
 Tait EOS for positive and negative pressure symmetrically. More...
 
class  ThickSurfaceParticleGeneratorLattice
 Generate thick surface particles from lattice positions for a thin structure defined by a body shape. More...
 
class  TimeStepInitialization
 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  TotalAveragedParameterOnDiffusionBody
 Computing the total averaged parameter on the whole diffusion body. More...
 
class  TotalAveragedParameterOnPartlyDiffusionBody
 Computing the total averaged parameter on partly diffusion body. More...
 
class  TotalMechanicalEnergy
 Compute the total mechanical (kinematic and potential) energy. More...
 
class  Transform2d
 Coordinate transform in 2D Note that the rotation is around the frame (or local) origin. More...
 
class  TransformShape
 A template shape in which coordinate transformation is applied before or/and after access the interface functions. More...
 
class  TranslationAndRotation
 transformation on particle position and rotation More...
 
class  TreeBody
 The tree is composed of a root (the first branch) and other branch generated sequentially. More...
 
class  TreeBodyRelationInner
 The relation within a reduced SPH body, viz. network. More...
 
class  TreeTerminates
 A body part with the collection of particles as the terminates of the tree. More...
 
class  TriangleMeshShape
 
class  TriangleMeshShapeBrick
 
class  TriangleMeshShapeCylinder
 
class  TriangleMeshShapeSphere
 
class  TriangleMeshShapeSTL
 
class  UniquePtrKeeper
 A wrapper to provide an ownership for a new derived object which previous often generated by new a raw pointer. More...
 
class  UniquePtrKeepers
 A wrapper to provide an ownership for a vector of base class pointers which point to derived objects. It should be a private member. More...
 
struct  UpdateAReactionSpecies
 
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  VonMisesStrain
 
class  VonMisesStrainDynamic
 
class  VonMisesStress
 computing von_Mises_stress More...
 
class  WeaklyCompressibleFluid
 Linear equation of state (EOS). More...
 
class  WeaklyCompressibleFluidFreeSurface
 Equation of state (EOS) with cut-off pressure. More...
 
class  WeaklyCompressibleFluidParticles
 WeaklyCompressible fluid particles. More...
 
struct  WriteAParticleVariableToXml
 
class  WriteSimBodyPinData
 Write total force acting a solid body. More...
 
class  WriteSimBodyStates
 base class for write SimBody states. More...
 
class  WriteToVtpIfVelocityOutOfBound
 output body sates if particle velocity is out of a bound More...
 
class  XmlEngine
 
class  XmlMemoryIO
 

Typedefs

using Veci = Vec2i
 
using Vecu = Vec2u
 
using Vecd = Vec2d
 
using Matd = Mat2d
 
using SymMatd = SymMat2d
 
using AngularVecd = Real
 
using BoundingBox = BaseBoundingBox< Vec2d >
 
using Transformd = Transform2d
 
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
 
using BodyAlignedBoxByParticle = AlignedBoxRegion< BodyRegionByParticle >
 
using BodyAlignedBoxByCell = AlignedBoxRegion< BodyRegionByCell >
 
template<template< typename DataType > typename DataContainerType>
using GeneralDataAssemble = std::tuple< StdVec< DataContainerType< Real > * >, StdVec< DataContainerType< Vecd > * >, StdVec< DataContainerType< Matd > * >, StdVec< DataContainerType< int > * > >
 
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
 
using Transform3d = SimTK::Transform
 
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 >
 
template<typename T >
using DoubleVec = std::vector< std::vector< T > >
 
template<typename T >
using TripleVec = std::vector< std::vector< std::vector< T > >>
 
template<class T >
using UniquePtr = std::unique_ptr< T >
 
template<class T >
using SharedPtr = std::shared_ptr< T >
 
using MaterialVector = StdVec< BaseMaterial * >
 
using SPHBodyVector = StdVec< SPHBody * >
 
using SolidBodyVector = StdVec< SolidBody * >
 
using RealBodyVector = StdVec< RealBody * >
 
using BodyPartVector = StdVec< BodyPart * >
 
using FictitiousBodyVector = StdVec< FictitiousBody * >
 
using IndexVector = StdVec< size_t >
 
using ConcurrentIndexVector = LargeVec< size_t >
 
using ListData = std::pair< size_t, Vecd >
 
using ListDataVector = StdLargeVec< ListData >
 
using CellLists = StdLargeVec< CellList * >
 
template<class DataType >
using ConcurrentVector = LargeVec< DataType >
 
using ConcurrentCellLists = LargeVec< CellList * >
 
using SplitCellLists = StdVec< ConcurrentCellLists >
 
using PositionsVolumes = StdVec< std::pair< Vecd, Real > >
 
typedef GeneralDataAssemble< StdLargeVec > ParticleData
 
typedef std::array< std::map< std::string, size_t >, 4 > ParticleDataMap
 
typedef std::array< StdVec< std::pair< std::string, size_t > >, 4 > ParticleVariableList
 
using ShapeAndOp = std::pair< Shape *, ShapeBooleanOps >
 
using DefaultShape = ComplexShape
 
typedef std::function< void(const 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 DiffusionReactionSimpleData = DataDelegateSimple< BodyType, DiffusionReactionParticles< BaseParticlesType >, DiffusionReaction< BaseMaterialType > >
 
template<class BodyType , class BaseParticlesType , class BaseMaterialType >
using DiffusionReactionInnerData = DataDelegateInner< BodyType, DiffusionReactionParticles< BaseParticlesType >, DiffusionReaction< BaseMaterialType > >
 
template<class BodyType , class BaseParticlesType , class BaseMaterialType , class ContactBodyType , class ContactBaseParticlesType , class ContactBaseMaterialType >
using DiffusionReactionContactData = DataDelegateContact< BodyType, DiffusionReactionParticles< BaseParticlesType >, DiffusionReaction< BaseMaterialType >, ContactBodyType, DiffusionReactionParticles< ContactBaseParticlesType >, DiffusionReaction< ContactBaseMaterialType >, DataDelegateEmptyBase >
 
typedef DataDelegateInner< SPHBody, BaseParticles, BaseMaterialDissipationDataInner
 
typedef DataDelegateContact< SPHBody, BaseParticles, BaseMaterial, SPHBody, BaseParticles, BaseMaterial, DataDelegateEmptyBaseDissipationDataContact
 
typedef DataDelegateContact< SPHBody, BaseParticles, BaseMaterial, SolidBody, SolidParticles, Solid, DataDelegateEmptyBaseDissipationDataWithWall
 
typedef DataDelegateSimple< SPHBody, BaseParticles, BaseMaterialGeneralDataDelegateSimple
 
typedef DataDelegateInner< SPHBody, BaseParticles, BaseMaterialGeneralDataDelegateInner
 
typedef DataDelegateContact< SPHBody, BaseParticles, BaseMaterial, SPHBody, BaseParticles, BaseMaterial, DataDelegateEmptyBaseGeneralDataDelegateContact
 
template<class LocalDynamicsType >
using SimpleDynamics = SimpleParticleDynamics< BodyParticleDynamics, LocalDynamicsType >
 
using ParticleConfiguration = StdLargeVec< Neighborhood >
 
using ContactParticleConfiguration = StdVec< ParticleConfiguration >
 
typedef DataDelegateSimple< RealBody, SolidParticles, SolidSolidDataSimple
 
typedef DataDelegateSimple< RealBody, ElasticSolidParticles, ElasticSolidElasticSolidDataSimple
 

Enumerations

enum  Image_Data_Type { MET_FLOAT, MET_UCHAR, MET_LONG }
 
enum  Output_Mode { BINARY, ASCII }
 
enum  ShapeBooleanOps { add, sub, sym_diff, intersect }
 

Functions

int SecondAxis (int axis_direction)
 
void MeshIterator (const Vecu &index_begin, const Vecu &index_end, MeshFunctor &mesh_functor, Real dt)
 
void MeshIterator_parallel (const Vecu &index_begin, const Vecu &index_end, MeshFunctor &mesh_functor, Real dt)
 
void MeshIterator (const Vec3u &index_begin, const 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)
 
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<class T >
bool operator== (const BaseBoundingBox< T > &bb1, const BaseBoundingBox< T > &bb2)
 
template<class BoundingBoxType >
BoundingBoxType getIntersectionOfBoundingBoxes (const BoundingBoxType &bb1, const BoundingBoxType &bb2)
 
template<class CastingType , class OwnerType , class CastedType >
CastingType * DynamicCast (OwnerType *owner, CastedType *casted)
 
template<class CastingType , class OwnerType , class CastedType >
CastingType & DynamicCast (OwnerType *owner, CastedType &casted)
 
template<class T , typename... ConstructorArgs>
UniquePtr< T > makeUnique (ConstructorArgs &&...args)
 
template<class T , typename... ConstructorArgs>
SharedPtr< T > makeShared (ConstructorArgs &&...args)
 
int ThirdAxis (int axis_direction)
 
double getLeftStateInWeno (double v_1, double v_2, double v_3, double v_4)
 
double getRightStateInWeno (double v_1, double v_2, double v_3, double v_4)
 
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 (const Vec2d &zero_vector)
 
Vec3d FirstAxisVector (const Vec3d &zero_vector)
 
Real getMaxAbsoluteElement (const Vec2d &input)
 
Real getMaxAbsoluteElement (const Vec3d &input)
 
Real getMinAbsoluteElement (const Vec2d &input)
 
Real getMinAbsoluteElement (const Vec3d &input)
 
Vec3d upgradeToVector3D (const Real &input)
 
Vec3d upgradeToVector3D (const Vec2d &input)
 
Vec3d upgradeToVector3D (const Vec3d &input)
 
Mat3d upgradeToMatrix3D (const Mat2d &input)
 
Mat3d upgradeToMatrix3D (const Mat3d &input)
 
Mat2d getInverse (const Mat2d &A)
 
Mat3d getInverse (const Mat3d &A)
 
Mat2d getAverageValue (const Mat2d &A, const Mat2d &B)
 
Mat3d getAverageValue (const Mat3d &A, const Mat3d &B)
 
Mat2d inverseCholeskyDecomposition (const Mat2d &A)
 
Mat3d inverseCholeskyDecomposition (const Mat3d &A)
 
Mat2d getTransformationMatrix (const Vec2d &direction_of_y)
 
Mat3d getTransformationMatrix (const Vec3d &direction_of_z)
 
Mat2d getDiagonal (const Mat2d &A)
 
Mat3d getDiagonal (const Mat3d &A)
 
Real CalculateDoubleDotProduct (Mat2d Matrix1, Mat2d Matrix2)
 
Real CalculateDoubleDotProduct (Mat3d Matrix1, Mat3d Matrix2)
 
Real getCosineOfAngleBetweenTwoVectors (const Vec2d &vector_1, const Vec2d &vector_2)
 
Real getCosineOfAngleBetweenTwoVectors (const Vec3d &vector_1, const Vec3d &vector_2)
 
Vec2d getVectorProjectionOfVector (const Vec2d &vector_1, const Vec2d &vector_2)
 
Vec3d getVectorProjectionOfVector (const Vec3d &vector_1, const Vec3d &vector_2)
 
Real getVonMisesStressFromMatrix (const Mat2d &sigma)
 
Real getVonMisesStressFromMatrix (const Mat3d &sigma)
 
Vec2d getPrincipalValuesFromMatrix (const Mat2d &A)
 
Vec3d getPrincipalValuesFromMatrix (const Mat3d &A)
 
Real MinimumDimension (const BoundingBox &bbox)
 
template<typename OutVectorType >
OutVectorType upgradeVector (const Real &input)
 
template<typename OutVectorType >
OutVectorType upgradeVector (const Vec2d &input)
 
template<typename OutVectorType >
OutVectorType upgradeVector (const 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 total_real_particles, const ParticleFunctor &particle_functor, Real dt)
 
void ParticleIterator_parallel (size_t total_real_particles, const ParticleFunctor &particle_functor, Real dt)
 
void ParticleIteratorSplittingSweep (SplitCellLists &split_cell_lists, const ParticleFunctor &particle_functor, Real dt)
 
void ParticleIteratorSplittingSweep_parallel (SplitCellLists &split_cell_lists, const ParticleFunctor &particle_functor, Real dt)
 
template<class ReturnType , typename ReduceOperation >
ReturnType ReduceIterator (size_t total_real_particles, ReturnType temp, ReduceFunctor< ReturnType > &reduce_functor, ReduceOperation &reduce_operation, Real dt=0.0)
 
template<class ReturnType , typename ReduceOperation >
ReturnType ReduceIterator_parallel (size_t total_real_particles, ReturnType temp, ReduceFunctor< ReturnType > &reduce_functor, ReduceOperation &reduce_operation, Real dt=0.0)
 
void PartIteratorByParticle (const IndexVector &body_part_particles, const ParticleFunctor &particle_functor, Real dt)
 
void PartIteratorByParticle_parallel (const IndexVector &body_part_particles, const ParticleFunctor &particle_functor, Real dt)
 
void PartIteratorByCell (const CellLists &body_part_cells, const ParticleFunctor &particle_functor, Real dt)
 
void PartIteratorByCell_parallel (const CellLists &body_part_cells, const ParticleFunctor &particle_functor, Real dt)
 

Variables

constexpr int MaximumNeighborhoodSize = int(M_PI * 9)
 
const int Dimensions = 2
 
const Matd reduced_unit_matrix = { 1, 0, 0, 0 }
 
const Vecd local_pseudo_n_0 = Vecd(0.0, 1.0)
 
const Real Pi = Real(M_PI)
 
constexpr size_t MaxSize_t = std::numeric_limits<size_t>::max()
 
const int xAxis = 0
 
const int yAxis = 1
 
const int zAxis = 2
 
const bool positiveDirection = true
 
const bool negativeDirection = false
 

Detailed Description

Macro for APPLE compilers

Typedef Documentation

◆ CellLists

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

Cell lists

◆ ConcurrentCellLists

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

concurrent cell lists

◆ ConcurrentIndexVector

using SPH::ConcurrentIndexVector = typedef LargeVec<size_t>

Concurrent particle indexes .

◆ ConcurrentVector

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

Concurrent vector .

◆ ContactParticleConfiguration

All contact neighborhoods for all particles in a body for a contact body relation.

◆ GeneralDataAssemble

template<template< typename DataType > typename DataContainerType>
using SPH::GeneralDataAssemble = typedef std::tuple<StdVec<DataContainerType<Real> *>, StdVec<DataContainerType<Vecd> *>, StdVec<DataContainerType<Matd> *>, StdVec<DataContainerType<int> *> >

Generalized data assemble type

◆ IndexVector

using SPH::IndexVector = typedef StdVec<size_t>

Index container with elements of size_t.

◆ ListData

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

List data pair

◆ ListDataVector

using SPH::ListDataVector = typedef StdLargeVec<ListData>

Vector of 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(const 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>

Inner neighborhoods for all particles in a body for a inner body relation.

◆ ParticleData

typedef GeneralDataAssemble<StdLargeVec> SPH::ParticleData

Generalized particle data type

◆ ParticleDataMap

typedef std::array<std::map<std::string, size_t>, 4> SPH::ParticleDataMap

Generalized particle variable to index map

◆ ParticleFunctor

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

Functor for operation on particles.

◆ ParticleVariableList

typedef std::array<StdVec<std::pair<std::string, size_t> >, 4> SPH::ParticleVariableList

Generalized particle variable list

◆ PositionsVolumes

using SPH::PositionsVolumes = typedef StdVec<std::pair<Vecd, Real> >

Pair of point and volume.

◆ 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 bodies

◆ SplitCellLists

using SPH::SplitCellLists = typedef StdVec<ConcurrentCellLists>

Split cell list for split algorithms.

Function Documentation

◆ CalculateDoubleDotProduct()

Real SPH::CalculateDoubleDotProduct ( Mat2d  Matrix1,
Mat2d  Matrix2 
)

double dot product between two matrices, resulting in a scalar value (sum of products of element-wise)

◆ getCosineOfAngleBetweenTwoVectors()

Real SPH::getCosineOfAngleBetweenTwoVectors ( const Vec2d &  vector_1,
const Vec2d &  vector_2 
)

get angle between two vectors.

◆ getPrincipalValuesFromMatrix()

Vec2d SPH::getPrincipalValuesFromMatrix ( const Mat2d &  A)

pricipal strain or stress from strain or stress matrix

◆ getTransformationMatrix()

Mat2d SPH::getTransformationMatrix ( const Vec2d &  direction_of_y)

get transformation matrix.

◆ getVectorProjectionOfVector()

Vec2d SPH::getVectorProjectionOfVector ( const Vec2d &  vector_1,
const Vec2d &  vector_2 
)

get orthogonal projection of a vactor.

◆ getVonMisesStressFromMatrix()

Real SPH::getVonMisesStressFromMatrix ( const Mat2d &  sigma)

von Mises stress from stress matrix

◆ HSF()

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

Heaviside step function

◆ inverseCholeskyDecomposition() [1/2]

Mat2d SPH::inverseCholeskyDecomposition ( const Mat2d &  A)

Decomposing a matrix into Lower Triangular.

◆ inverseCholeskyDecomposition() [2/2]

Mat3d SPH::inverseCholeskyDecomposition ( const Mat3d &  A)

Decomposing a matrix into Lower Triangular.

◆ MeshIterator()

void SPH::MeshIterator ( const Vecu index_begin,
const 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 ( const Vecu index_begin,
const Vecu index_end,
MeshFunctor mesh_functor,
Real  dt = 0.0 
)

Iterator on the mesh by looping index. parallel computing.

◆ MinimumDimension()

Real SPH::MinimumDimension ( const BoundingBox bbox)

obtain minimum dimension of a bounding box

◆ 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  total_real_particles,
const ParticleFunctor particle_functor,
Real  dt = 0.0 
)

Iterators for particle functors. sequential computing.

◆ ParticleIterator_parallel()

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

Iterators for particle functors. parallel computing.

◆ ParticleIteratorSplittingSweep()

void SPH::ParticleIteratorSplittingSweep ( SplitCellLists split_cell_lists,
const 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,
const ParticleFunctor particle_functor,
Real  dt = 0.0 
)

Iterators for particle functors with splitting. parallel computing.

◆ PartIteratorByCell()

void SPH::PartIteratorByCell ( const CellLists body_part_cells,
const ParticleFunctor particle_functor,
Real  dt = 0.0 
)

Body part iterators by cell. sequential computing.

◆ PartIteratorByCell_parallel()

void SPH::PartIteratorByCell_parallel ( const CellLists body_part_cells,
const ParticleFunctor particle_functor,
Real  dt = 0.0 
)

Body part iterators by cell. parallel computing.

◆ PartIteratorByParticle()

void SPH::PartIteratorByParticle ( const IndexVector body_part_particles,
const ParticleFunctor particle_functor,
Real  dt = 0.0 
)

Body part iterators by particle. sequential computing.

◆ PartIteratorByParticle_parallel()

void SPH::PartIteratorByParticle_parallel ( const IndexVector body_part_particles,
const ParticleFunctor particle_functor,
Real  dt = 0.0 
)

Body part iterators by particle. parallel computing.

◆ ReduceIterator()

template<class ReturnType , typename ReduceOperation >
ReturnType SPH::ReduceIterator ( size_t  total_real_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  total_real_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

◆ local_pseudo_n_0

const Vecd SPH::local_pseudo_n_0 = Vecd(0.0, 1.0)

initial local normal, only works for thin structure dynamics.

◆ MaximumNeighborhoodSize

constexpr int SPH::MaximumNeighborhoodSize = int(M_PI * 9)

only works for smoothing length ratio less or equal than 1.3

◆ reduced_unit_matrix

const Matd SPH::reduced_unit_matrix = { 1, 0, 0, 0 }

correction matrix, only works for thin structure dynamics.