MDStressLab++
Loading...
Searching...
No Matches
StressTuple.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

template<std::size_t I = 0, typename ... TStress>
std::enable_if< I==sizeof...(TStress), void >::type recursiveBuildStress (const double &fij, const Vector3d &ra, const Vector3d &rA, const Vector3d &rb, const Vector3d &rB, const Vector3d &rab, const Vector3d &rAB, const int &i_gridPoint, const int &i_stress, std::tuple< TStress &... > t)
 
double averagingDomainSize_max (const std::tuple<> t)
 
template<std::size_t I = 0, typename ... TStress>
std::enable_if< I==sizeof...(TStress) -1, double >::type averagingDomainSize_max (const std::tuple< TStress &... > t)
 
template<std::size_t I = 0, typename ... TStress>
std::enable_if< I< sizeof...(TStress) -1, double >::type averagingDomainSize_max(const std::tuple< TStress &... > t){ return std::max(std::get< I >(t).method.getAveragingDomainSize(), averagingDomainSize_max< I+1 >(t));}std::map< Grid< Reference > double recursiveGridMaxAveragingDomainSizeMap (const std::tuple<> &t)
 
template<std::size_t I = 0, StressType stressType, typename TGrid = typename std::conditional<stressType == Piola,Grid<Reference>,Grid<Current>>::type, typename ... BF>
std::enable_if< I==sizeof...(BF), std::map< TGrid *, double > >::type recursiveGridMaxAveragingDomainSizeMap (const std::tuple< Stress< BF, stressType > &... > t)
 
template<std::size_t I = 0, StressType stressType, typename TGrid = typename std::conditional<stressType == Piola,Grid<Reference>,Grid<Current>>::type, typename ... BF>
std::enable_if< I< sizeof...(BF), std::map< TGrid *, double > >::type recursiveGridMaxAveragingDomainSizeMap(const std::tuple< Stress< BF, stressType > &... > t){ std::map< TGrid *, double > map;const std::map< TGrid *, double > &rmap=recursiveGridMaxAveragingDomainSizeMap< I+1 >(t);map[std::get< I >(t).pgrid]=std::get< I >(t).method.getAveragingDomainSize();for(const auto &pair :rmap) if(std::get< I >(t).pgrid==pair.first) { map[pair.first]=std::max(map.at(std::get< I >(t).pgrid), pair.second);} else { auto result=map.insert(pair);assert(result.second==true);} return map;}inline std::vector< std::pair< Grid< Current > *, double > getTGridDomainSizePairs (const std::tuple<> &emptyTuple)
 
std::vector< std::pair< Grid< Reference > *, double > > getTGridDomainSizePairs (std::tuple<> &&emptyTuple)
 
template<std::size_t I = 0, StressType stressType, typename TGrid = typename std::conditional<stressType == Piola,Grid<Reference>,Grid<Current>>::type, typename ... BF>
std::enable_if< I==sizeof...(BF) -1, std::vector< std::pair< TGrid *, double > > >::type getTGridDomainSizePairs (const std::tuple< Stress< BF, stressType > &... > t)
 
vectorPair insert (vectorPair.end(), next.begin(), next.end())
 
std::vector< GridBase * > getBaseGridList (const std::tuple<> t)
 
template<std::size_t I = 0, typename ... TStress>
std::enable_if< I==sizeof...(TStress) -1, std::vector< GridBase * > >::type getBaseGridList (const std::tuple< TStress &... > t)
 
pgridBaseVector insert (pgridBaseVector.end(), next.begin(), next.end())
 
template<std::size_t I = 0, typename ... TStress>
std::enable_if< I==sizeof...(TStress), void >::type recursiveFold (const Vector3d &origin, const Vector3d &step, const Vector3i &pbc, const std::tuple< TStress &... > t)
 
boxPoints fold (pbc)
 
 std::cout<< std::endl;recursiveFold< I+1 > (origin, step, pbc, t)
 
template<std::size_t I = 0, typename ... TStress>
std::enable_if< I==sizeof...(TStress), void >::type recursiveWriteStressAndGrid (std::tuple< TStress &... > t)
 
template<std::size_t I = 0, typename ... TStress>
std::enable_if< I< sizeof...(TStress), void >::type recursiveWriteStressAndGrid(std::tuple< TStress &... > t){ std::cout<< "Writing stress and grid of "<< std::get< I >(t).name<< std::endl;std::get< I >(t).write();std::get< I >(t).pgrid-> write (std::get< I >(t).name)
 
 recursiveWriteStressAndGrid< I+1 > (t)
 

Variables

template<std::size_t I = 0, StressType stressType, typename TGrid = typename std::conditional<stressType == Piola,Grid<Reference>,Grid<Current>>::type, typename ... BF>
std::enable_if< I< sizeof...(BF) -1, std::vector< std::pair< TGrid *, double > > >::type getTGridDomainSizePairs(const std::tuple< Stress< BF, stressType > &... > t){ std::vector< std::pair< TGrid *, double > > vectorPair;vectorPair.push_back({std::get< I >(t).pgrid, std::get< I >(t).method.getAveragingDomainSize()});std::vector< std::pair< TGrid *, double > next = getTGridDomainSizePairs<I+1>(t)
 
return vectorPair
 
return pgridBaseVector
 

Function Documentation

◆ averagingDomainSize_max() [1/2]

template<std::size_t I = 0, typename ... TStress>
std::enable_if< I==sizeof...(TStress) -1, double >::type averagingDomainSize_max ( const std::tuple< TStress &... >  t)
inline

Definition at line 78 of file StressTuple.h.

◆ averagingDomainSize_max() [2/2]

double averagingDomainSize_max ( const std::tuple<>  t)

Definition at line 72 of file StressTuple.h.

◆ fold()

boxPoints fold ( pbc  )

◆ getBaseGridList() [1/2]

template<std::size_t I = 0, typename ... TStress>
std::enable_if< I==sizeof...(TStress) -1, std::vector< GridBase * > >::type getBaseGridList ( const std::tuple< TStress &... >  t)
inline

Definition at line 172 of file StressTuple.h.

◆ getBaseGridList() [2/2]

std::vector< GridBase * > getBaseGridList ( const std::tuple<>  t)

Definition at line 165 of file StressTuple.h.

◆ getTGridDomainSizePairs() [1/3]

template<std::size_t I = 0, StressType stressType, typename TGrid = typename std::conditional<stressType == Piola,Grid<Reference>,Grid<Current>>::type, typename ... BF>
std::enable_if< I==sizeof...(BF) -1, std::vector< std::pair< TGrid *, double > > >::type getTGridDomainSizePairs ( const std::tuple< Stress< BF, stressType > &... >  t)
inline

Definition at line 145 of file StressTuple.h.

◆ getTGridDomainSizePairs() [2/3]

template<std::size_t I = 0, StressType stressType, typename TGrid = typename std::conditional<stressType == Piola,Grid<Reference>,Grid<Current>>::type, typename ... BF>
std::enable_if< I< sizeof...(BF), std::map< TGrid *, double > >::type recursiveGridMaxAveragingDomainSizeMap(const std::tuple< Stress< BF, stressType > &... > t){ std::map< TGrid *, double > map;const std::map< TGrid *, double > &rmap=recursiveGridMaxAveragingDomainSizeMap< I+1 >(t);map[std::get< I >(t).pgrid]=std::get< I >(t).method.getAveragingDomainSize(); for(const auto &pair :rmap) if(std::get< I >(t).pgrid==pair.first) { map[pair.first]=std::max(map.at(std::get< I >(t).pgrid), pair.second); } else { auto result=map.insert(pair); assert(result.second==true); } return map;}inline std::vector< std::pair< Grid< Current > *, double > getTGridDomainSizePairs ( const std::tuple<> &  emptyTuple)
inline

Definition at line 131 of file StressTuple.h.

◆ getTGridDomainSizePairs() [3/3]

std::vector< std::pair< Grid< Reference > *, double > > getTGridDomainSizePairs ( std::tuple<> &&  emptyTuple)
inline

Definition at line 136 of file StressTuple.h.

◆ insert() [1/2]

pgridBaseVector insert ( pgridBaseVector.  end(),
next.  begin(),
next.  end() 
)

◆ insert() [2/2]

vectorPair insert ( vectorPair.  end(),
next.  begin(),
next.  end() 
)

◆ recursiveBuildStress()

template<std::size_t I = 0, typename ... TStress>
std::enable_if< I==sizeof...(TStress), void >::type recursiveBuildStress ( const double &  fij,
const Vector3d ra,
const Vector3d rA,
const Vector3d rb,
const Vector3d rB,
const Vector3d rab,
const Vector3d rAB,
const int &  i_gridPoint,
const int &  i_stress,
std::tuple< TStress &... >  t 
)
inline

Definition at line 14 of file StressTuple.h.

◆ recursiveFold()

template<std::size_t I = 0, typename ... TStress>
std::enable_if< I==sizeof...(TStress), void >::type recursiveFold ( const Vector3d origin,
const Vector3d step,
const Vector3i pbc,
const std::tuple< TStress &... >  t 
)
inline

Definition at line 194 of file StressTuple.h.

◆ recursiveGridMaxAveragingDomainSizeMap() [1/2]

template<std::size_t I = 0, StressType stressType, typename TGrid = typename std::conditional<stressType == Piola,Grid<Reference>,Grid<Current>>::type, typename ... BF>
std::enable_if< I==sizeof...(BF), std::map< TGrid *, double > >::type recursiveGridMaxAveragingDomainSizeMap ( const std::tuple< Stress< BF, stressType > &... >  t)
inline

Definition at line 100 of file StressTuple.h.

◆ recursiveGridMaxAveragingDomainSizeMap() [2/2]

template<std::size_t I = 0, typename ... TStress>
std::enable_if< I< sizeof...(TStress) -1, double >::type averagingDomainSize_max(const std::tuple< TStress &... > t){ return std::max(std::get< I >(t).method.getAveragingDomainSize(), averagingDomainSize_max< I+1 >(t));}std::map< Grid< Reference > double recursiveGridMaxAveragingDomainSizeMap ( const std::tuple<> &  t)
inline

Definition at line 91 of file StressTuple.h.

◆ recursiveWriteStressAndGrid()

template<std::size_t I = 0, typename ... TStress>
std::enable_if< I==sizeof...(TStress), void >::type recursiveWriteStressAndGrid ( std::tuple< TStress &... >  t)
inline

Definition at line 213 of file StressTuple.h.

◆ recursiveWriteStressAndGrid< I+1 >()

◆ std::cout<< std::endl;recursiveFold< I+1 >()

std::cout<< std::endl;recursiveFold< I+1 > ( origin  ,
step  ,
pbc  ,
 
)

◆ write()

template<std::size_t I = 0, typename ... TStress>
std::enable_if< I< sizeof...(TStress), void >::type recursiveWriteStressAndGrid(std::tuple< TStress &... > t){ std::cout<< "Writing stress and grid of "<< std::get< I >(t).name<< std::endl;std::get< I >(t).write();std::get< I >(t).pgrid-> write ( std::get< I >(t).  name)
inline

Variable Documentation

◆ next

template<std::size_t I = 0, StressType stressType, typename TGrid = typename std::conditional<stressType == Piola,Grid<Reference>,Grid<Current>>::type, typename ... BF>
std::enable_if<I < sizeof...(TStress)-1, std::vector<GridBase*> >::type getBaseGridList(const std::tuple<TStress&...> t){ std::vector<GridBase*> pgridBaseVector; pgridBaseVector.push_back(std::get<I>(t).pgrid); std::vector<GridBase*> next = getTGridDomainSizePairs<I+1>(t)
inline

Definition at line 159 of file StressTuple.h.

◆ pgridBaseVector

return pgridBaseVector

Definition at line 187 of file StressTuple.h.

◆ vectorPair

return vectorPair

Definition at line 161 of file StressTuple.h.