libmesh解析
本工作只是尝试解析原libmesh的代码,供学习使用
首页
类
文件
文件列表
文件成员
全部
类
命名空间
文件
函数
变量
类型定义
枚举
枚举值
友元
页
home
lwz
libmesh
include
base
libmesh_augment_std_namespace.h
浏览该文件的文档.
1
// The libMesh Finite Element Library.
2
// Copyright (C) 2002-2023 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3
4
// This library is free software; you can redistribute it and/or
5
// modify it under the terms of the GNU Lesser General Public
6
// License as published by the Free Software Foundation; either
7
// version 2.1 of the License, or (at your option) any later version.
8
9
// This library is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
// Lesser General Public License for more details.
13
14
// You should have received a copy of the GNU Lesser General Public
15
// License along with this library; if not, write to the Free Software
16
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
18
19
20
#ifndef LIBMESH_LIBMESH_AUGMENT_STD_NAMESPACE_H
21
#define LIBMESH_LIBMESH_AUGMENT_STD_NAMESPACE_H
22
23
#include "
libmesh_common.h
"
24
25
26
// For some reason the real std::max, std::min
27
// don't handle mixed compatible types
28
#define LIBMESH_DEFINE_MAX_MIN(type1, type2) \
29
inline auto max(type1 a, type2 b) -> decltype(a>b?a:b) \
30
{ return (a>b?a:b); } \
31
inline auto min(type1 a, type2 b) -> decltype(a<b?a:b) \
32
{ return (a<b?a:b); }
33
34
#define LIBMESH_DEFINE_BOTH_MAX_MIN(type1, type2) \
35
LIBMESH_DEFINE_MAX_MIN(type1, type2) \
36
LIBMESH_DEFINE_MAX_MIN(type2, type1)
37
38
namespace
std {
39
LIBMESH_DEFINE_BOTH_MAX_MIN
(
long
double
,
double
)
40
LIBMESH_DEFINE_BOTH_MAX_MIN
(
long
double
,
float
)
41
LIBMESH_DEFINE_BOTH_MAX_MIN
(
double
,
float
)
42
43
#ifdef LIBMESH_DEFAULT_QUADRUPLE_PRECISION
44
LIBMESH_DEFINE_BOTH_MAX_MIN
(
libMesh::Real
,
long
double
)
45
LIBMESH_DEFINE_BOTH_MAX_MIN
(
libMesh::Real
,
double
)
46
LIBMESH_DEFINE_BOTH_MAX_MIN
(libMesh::
Real
,
float
)
47
#endif
48
49
// fix for std::abs() overload ambiguity with older PGI
50
#if defined(__PGI) && !defined(__NVCOMPILER)
51
inline
double
abs
(
double
a)
52
{ return ::fabs(a); }
53
#endif
54
}
55
56
#endif // #define LIBMESH_LIBMESH_AUGMENT_STD_NAMESPACE_H
std::abs
ADRealEigenVector< T, D, asd > abs(const ADRealEigenVector< T, D, asd > &)
计算自动微分实数向量的绝对值。
Definition:
type_vector.h:112
libmesh_common.h
libMesh::Real
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Definition:
libmesh_common.h:143
std::LIBMESH_DEFINE_BOTH_MAX_MIN
LIBMESH_DEFINE_BOTH_MAX_MIN(long double, double) LIBMESH_DEFINE_BOTH_MAX_MIN(long double
生成于 2023年 十二月 20日 星期三 14:07:05 , 为 libmesh解析使用
1.8.5