# PhasicFlow: src/phasicFlow/types/triple/tripleFwd.hpp File Reference
PhasicFlow is an open-source parallel DEM (discrete element method) package for simulating granular flow. It is developed in C++ and can be exectued on both GPU (like CUDA) and CPU.

tripleFwd.hpp File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Functions

template<typename T >
INLINE_FUNCTION_HD T | dot (const triple< T > &oprnd1, const triple< T > &oprnd2)
template<typename T >
INLINE_FUNCTION_HD triple< T > | cross (const triple< T > &v1, const triple< T > &v2)
template<typename T >
INLINE_FUNCTION_HD T | length (const triple< T > &v1)
template<typename T >
INLINE_FUNCTION_HD triple< T > | normalize (const triple< T > &v1)
template<typename T >
INLINE_FUNCTION_HD triple< T > | operator+ (const triple< T > &oprnd1, const triple< T > &oprnd2)
template<typename T >
INLINE_FUNCTION_HD triple< T > | operator+ (const triple< T > &oprnd1, const T &oprnd2)
template<typename T >
INLINE_FUNCTION_HD triple< T > | operator+ (const T &oprnd2, const triple< T > &oprnd1)
template<typename T >
INLINE_FUNCTION_HD triple< T > | operator- (const triple< T > &oprnd1, const triple< T > &oprnd2)
template<typename T >
INLINE_FUNCTION_HD triple< T > | operator- (const triple< T > &oprnd1, const T &oprnd2)
template<typename T >
INLINE_FUNCTION_HD triple< T > | operator- (const T &oprnd1, const triple< T > &oprnd2)
template<typename T >
INLINE_FUNCTION_HD triple< T > | operator* (const triple< T > &oprnd1, const triple< T > &oprnd2)
template<typename T >
INLINE_FUNCTION_HD triple< T > | operator* (const triple< T > &oprnd1, const T &oprnd2)
template<typename T >
INLINE_FUNCTION_HD triple< T > | operator* (const T &oprnd1, const triple< T > &oprnd2)
template<typename T >
INLINE_FUNCTION_HD triple< T > | operator/ (const triple< T > &oprnd1, const triple< T > &oprnd2)
template<typename T >
INLINE_FUNCTION_HD triple< T > | operator/ (const triple< T > &oprnd1, const T &oprnd2)
template<typename T >
INLINE_FUNCTION_HD triple< T > | operator/ (const T &oprnd1, const triple< T > &oprnd2)
template<typename T >
INLINE_FUNCTION_HD bool | operator== (const triple< T > &opr1, const triple< T > &opr2)
template<typename T >
INLINE_FUNCTION_HD bool | operator> (const triple< T > &opr1, const triple< T > &opr2)
template<typename T >
INLINE_FUNCTION_HD bool | operator< (const triple< T > &opr1, const triple< T > &opr2)
template<typename T >
INLINE_FUNCTION_HD bool | operator<= (const triple< T > &opr1, const triple< T > &opr2)
template<typename T >
INLINE_FUNCTION_HD bool | operator>= (const triple< T > &opr1, const triple< T > &opr2)
template<typename T >
INLINE_FUNCTION iOstream & | operator<< (iOstream &str, const triple< T > &ov)
template<typename T >
INLINE_FUNCTION iIstream & | operator>> (iIstream &str, triple< T > &iv)
template<typename T >
INLINE_FUNCTION void | readIstream (iIstream &str, triple< T > &iv)

## Function Documentation

## dot()

INLINE_FUNCTION_HD T dot | ( | const triple< T > & | oprnd1,
|  | const triple< T > & | oprnd2
| ) |  |

## cross()

INLINE_FUNCTION_HD triple<T> cross | ( | const triple< T > & | v1,
|  | const triple< T > & | v2
| ) |  |

Referenced by pFlow::checkNormalVec(), Wall::checkTrianlge(), pFlow::periodicBoundarySIKernels::grainGrainInteraction(), infinitePlane::infinitePlane(), cylinder::isInside(), rotatingAxis::linVelocityPoint(), zAxis::makeTransMatrix(), triWall::makeWall(), pFlow::triangle::normal(), ppInteractionFunctor< ContactForceModel, ContactListType >::operator()(), pwInteractionFunctor< ContactForceModel, ContactListType, TraingleAccessor, MotionModel >::operator()(), pFlow::periodicBoundarySIKernels::sphereSphereInteraction(), pFlow::triangle::surface(), pFlow::triangle::valid(), infinitePlane::validPlane3(), and stlFile::writeFacet().

Here is the caller graph for this function:

## length()

INLINE_FUNCTION_HD T length | ( | const triple< T > & | v1 | ) |

Referenced by pFlow::binarySearch_(), InsertionRegion< ShapeType >::checkForContact(), pFlow::checkNormalVec(), collisionCheck::checkPoint(), nonLinearMod< limited >::contactForce(), nonLinear< limited >::contactForce(), linear< limited >::contactForce(), cGRelativeLinear< limited >::contactForce(), cGAbsoluteLinear< limited >::contactForce(), pFlow::countChar(), pFlow::periodicBoundarySIKernels::grainGrainInteraction(), zAxis::length(), line::length(), pLine::lineGrainCheck(), pLine::lineSphereCheck(), triWall::makeWall(), quadruple< T >::normalize(), triple< intType >::normalize(), ppInteractionFunctor< ContactForceModel, ContactListType >::operator()(), normalRolling< contactForceModel >::rollingFriction(), grainRolling< contactForceModel >::rollingFriction(), pFlow::NBSLevel0Kernels::sphereSphereCheck(), sphereSphereCheckB(), pFlow::periodicBoundarySIKernels::sphereSphereInteraction(), pFlow::triangle::surface(), pFlow::triangle::valid(), and infinitePlane::validPlane3().

Here is the caller graph for this function:

## normalize()

INLINE_FUNCTION_HD triple<T> normalize | ( | const triple< T > & | v1 | ) |

Referenced by infinitePlane::infinitePlane(), zAxis::makeTransMatrix(), pFlow::triangle::normal(), and line::unitVector().

Here is the caller graph for this function:

## operator+() [1/3]

INLINE_FUNCTION_HD triple<T> operator+ | ( | const triple< T > & | oprnd1,
|  | const triple< T > & | oprnd2
| ) |  |

## operator+() [2/3]

INLINE_FUNCTION_HD triple<T> operator+ | ( | const triple< T > & | oprnd1,
|  | const T & | oprnd2
| ) |  |

## operator+() [3/3]

INLINE_FUNCTION_HD triple<T> operator+ | ( | const T & | oprnd2,
|  | const triple< T > & | oprnd1
| ) |  |

## operator-() [1/3]

INLINE_FUNCTION_HD triple<T> operator- | ( | const triple< T > & | oprnd1,
|  | const triple< T > & | oprnd2
| ) |  |

## operator-() [2/3]

INLINE_FUNCTION_HD triple<T> operator- | ( | const triple< T > & | oprnd1,
|  | const T & | oprnd2
| ) |  |

## operator-() [3/3]

INLINE_FUNCTION_HD triple<T> operator- | ( | const T & | oprnd1,
|  | const triple< T > & | oprnd2
| ) |  |

## operator*() [1/3]

INLINE_FUNCTION_HD triple<T> operator* | ( | const triple< T > & | oprnd1,
|  | const triple< T > & | oprnd2
| ) |  |

## operator*() [2/3]

INLINE_FUNCTION_HD triple<T> operator* | ( | const triple< T > & | oprnd1,
|  | const T & | oprnd2
| ) |  |

## operator*() [3/3]

INLINE_FUNCTION_HD triple<T> operator* | ( | const T & | oprnd1,
|  | const triple< T > & | oprnd2
| ) |  |

## operator/() [1/3]

INLINE_FUNCTION_HD triple<T> operator/ | ( | const triple< T > & | oprnd1,
|  | const triple< T > & | oprnd2
| ) |  |

## operator/() [2/3]

INLINE_FUNCTION_HD triple<T> operator/ | ( | const triple< T > & | oprnd1,
|  | const T & | oprnd2
| ) |  |

## operator/() [3/3]

INLINE_FUNCTION_HD triple<T> operator/ | ( | const T & | oprnd1,
|  | const triple< T > & | oprnd2
| ) |  |

## operator==()

INLINE_FUNCTION_HD bool operator== | ( | const triple< T > & | opr1,
|  | const triple< T > & | opr2
| ) |  |

## operator>()

INLINE_FUNCTION_HD bool operator> | ( | const triple< T > & | opr1,
|  | const triple< T > & | opr2
| ) |  |

## operator<()

INLINE_FUNCTION_HD bool operator< | ( | const triple< T > & | opr1,
|  | const triple< T > & | opr2
| ) |  |

## operator<=()

INLINE_FUNCTION_HD bool operator<= | ( | const triple< T > & | opr1,
|  | const triple< T > & | opr2
| ) |  |

## operator>=()

INLINE_FUNCTION_HD bool operator>= | ( | const triple< T > & | opr1,
|  | const triple< T > & | opr2
| ) |  |

## operator<<()

INLINE_FUNCTION iOstream& operator<< | ( | iOstream & | str,
|  | const triple< T > & | ov
| ) |  |

## operator>>()

INLINE_FUNCTION iIstream& operator>> | ( | iIstream & | str,
|  | triple< T > & | iv
| ) |  |

## readIstream()

INLINE_FUNCTION void readIstream | ( | iIstream & | str,
|  | triple< T > & | iv
| ) |  |