mirror of
https://github.com/NGSolve/netgen.git
synced 2025-01-11 21:50:34 +05:00
fix type, more in utils
This commit is contained in:
parent
2121ec33f7
commit
16a0f52921
@ -466,8 +466,8 @@ namespace ngcore
|
|||||||
|
|
||||||
enum { MPI_SUM = 0, MPI_MIN = 1, MPI_MAX = 2, MPI_LOR = 4711 };
|
enum { MPI_SUM = 0, MPI_MIN = 1, MPI_MAX = 2, MPI_LOR = 4711 };
|
||||||
|
|
||||||
inline void MPI_Type_contiguous ( int, MPI_Datatype, MPI_Dataype*) { ; }
|
inline void MPI_Type_contiguous ( int, MPI_Datatype, MPI_Datatype*) { ; }
|
||||||
inline void MPI_Type_commit ( MPI_Dataype * ) { ; }
|
inline void MPI_Type_commit ( MPI_Datatype * ) { ; }
|
||||||
|
|
||||||
class NgMPI_Comm
|
class NgMPI_Comm
|
||||||
{
|
{
|
||||||
|
@ -19,5 +19,6 @@
|
|||||||
#include "version.hpp"
|
#include "version.hpp"
|
||||||
#include "xbool.hpp"
|
#include "xbool.hpp"
|
||||||
#include "ngstream.hpp"
|
#include "ngstream.hpp"
|
||||||
|
#include "utils.hpp"
|
||||||
|
|
||||||
#endif // NETGEN_CORE_NGCORE_HPP
|
#endif // NETGEN_CORE_NGCORE_HPP
|
||||||
|
@ -881,6 +881,30 @@ public:
|
|||||||
auto GetNum() const { return num; }
|
auto GetNum() const { return num; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
// some idea, not yet supported
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
template <typename T>
|
||||||
|
class ParallelValue
|
||||||
|
{
|
||||||
|
T val;
|
||||||
|
public:
|
||||||
|
ParallelValue (const T & _val) : val(_val) { ; }
|
||||||
|
operator T () const { return val; }
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename FUNC> class ParallelFunction
|
||||||
|
{
|
||||||
|
FUNC f;
|
||||||
|
public:
|
||||||
|
ParallelFunction (const FUNC & _f) : f(_f) { ; }
|
||||||
|
operator FUNC () const { return f; }
|
||||||
|
auto operator() (size_t i) const { return f(i); }
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
/* currently not used, plus causing problems on MSVC 2017
|
/* currently not used, plus causing problems on MSVC 2017
|
||||||
template <typename T, typename std::enable_if<ngstd::has_call_operator<T>::value, int>::type = 0>
|
template <typename T, typename std::enable_if<ngstd::has_call_operator<T>::value, int>::type = 0>
|
||||||
inline ParallelFunction<T> operator| (const T & func, Tasks tasks)
|
inline ParallelFunction<T> operator| (const T & func, Tasks tasks)
|
||||||
|
@ -101,6 +101,26 @@ namespace ngcore
|
|||||||
return ToLower(p.string());
|
return ToLower(p.string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
void SaveBin (std::ostream & ost, const T & val)
|
||||||
|
{
|
||||||
|
const char * cp = reinterpret_cast<const char*> (&val);
|
||||||
|
for (unsigned j = 0; j < sizeof(T); j++)
|
||||||
|
ost.put(cp[j]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
void LoadBin (std::istream & ist, T & val)
|
||||||
|
{
|
||||||
|
char * cp = reinterpret_cast<char*> (&val);
|
||||||
|
for (unsigned j = 0; j < sizeof(T); j++)
|
||||||
|
ist.get(cp[j]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename T1, typename T2>
|
template<typename T1, typename T2>
|
||||||
std::ostream& operator << (std::ostream& ost, const std::map<T1,T2>& map)
|
std::ostream& operator << (std::ostream& ost, const std::map<T1,T2>& map)
|
||||||
{
|
{
|
||||||
@ -117,6 +137,62 @@ namespace ngcore
|
|||||||
b = std::move(temp);
|
b = std::move(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// min of 2 values
|
||||||
|
template <class T>
|
||||||
|
NETGEN_INLINE T min2 (T a, T b)
|
||||||
|
{
|
||||||
|
return (a < b) ? a : b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// max of 2 values
|
||||||
|
template <class T>
|
||||||
|
NETGEN_INLINE T max2 (T a, T b)
|
||||||
|
{
|
||||||
|
return (a > b) ? a : b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// min of 3 values
|
||||||
|
template <class T>
|
||||||
|
NETGEN_INLINE T min3 (T a, T b, T c)
|
||||||
|
{
|
||||||
|
return (a < b) ? (a < c) ? a : c
|
||||||
|
: (b < c) ? b : c;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// max of 3 values
|
||||||
|
template <class T>
|
||||||
|
NETGEN_INLINE T max3 (T a, T b, T c)
|
||||||
|
{
|
||||||
|
///
|
||||||
|
return (a > b) ? ((a > c) ? a : c)
|
||||||
|
: ((b > c) ? b : c);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// sign of value (+1, 0, -1)
|
||||||
|
template <class T>
|
||||||
|
NETGEN_INLINE int sgn (T a)
|
||||||
|
{
|
||||||
|
return (a > 0) ? 1 : ( ( a < 0) ? -1 : 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/// square element
|
||||||
|
template <class T>
|
||||||
|
NETGEN_INLINE T sqr (const T a)
|
||||||
|
{
|
||||||
|
return a * a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// element to the third power
|
||||||
|
template <class T>
|
||||||
|
NETGEN_INLINE T pow3 (const T a)
|
||||||
|
{
|
||||||
|
return a * a * a;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
NETGEN_INLINE double IfPos (double a, double b, double c) { return a>0 ? b : c; }
|
NETGEN_INLINE double IfPos (double a, double b, double c) { return a>0 ? b : c; }
|
||||||
NETGEN_INLINE double IfZero (double a, double b, double c) { return a==0. ? b : c; }
|
NETGEN_INLINE double IfZero (double a, double b, double c) { return a==0. ? b : c; }
|
||||||
|
|
||||||
|
@ -387,7 +387,7 @@ inline bool operator< (const INDEX_4 & a, const INDEX_4 & b)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -425,6 +425,7 @@ inline T max3 (T a, T b, T c)
|
|||||||
|
|
||||||
///
|
///
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
template <class T>
|
template <class T>
|
||||||
inline int sgn (T a)
|
inline int sgn (T a)
|
||||||
@ -445,6 +446,7 @@ inline T pow3 (const T a)
|
|||||||
{
|
{
|
||||||
return a * a * a;
|
return a * a * a;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user