mindflow.geometry.HyperCube
- class mindflow.geometry.HyperCube(name, dim, coord_min, coord_max, dtype=np.float32, sampling_config=None)[源代码]
超立方体对象的定义。
- 参数:
name (str) - 超立方体的名称。
dim (int) - 维数。
coord_min (Union[int, float, tuple, list, numpy.ndarray]) - 超立方体的最小坐标。若参数类型为tuple或list,元素类型支持tuple[int, int],tuple[float, float],list[int, int],list[float, float]。
coord_max (Union[int, float, tuple, list, numpy.ndarray]) - 超立方体的最大坐标。若参数类型为tuple或list,元素类型支持tuple[int, int],tuple[float, float],list[int, int],list[float, float]。
dtype (numpy.dtype) - 采样点数据类型的数据类型。默认值:
numpy.float32
。sampling_config (SamplingConfig) - 采样配置。默认值:
None
。
- 异常:
TypeError - sampling_config 不是类采样配置的实例。
- 支持平台:
Ascend
GPU
样例:
>>> from mindflow.geometry import generate_sampling_config, HyperCube >>> hypercube_random = dict({ ... 'domain': dict({ ... 'random_sampling': True, ... 'size': 1000, ... 'sampler': 'uniform' ... }), ... 'BC': dict({ ... 'random_sampling': True, ... 'size': 200, ... 'sampler': 'uniform', ... 'with_normal': False, ... }), ... }) >>> sampling_config = generate_sampling_config(hypercube_random) >>> hypercube = HyperCube("HyperCube", 3, [-1, 2, 1], [0, 3, 2], sampling_config=sampling_config) >>> domain = hypercube.sampling(geom_type="domain") >>> bc = hypercube.sampling(geom_type="BC") >>> print(domain.shape) (1000, 3)
- sampling(geom_type='domain')[源代码]
采样点。
- 参数:
geom_type (str) - 几何类型,可以是
"domain"
或者"BC"
。默认值:"domain"
。"domain"
: 问题的可行域。"BC"
: 问题的边界条件。
- 返回:
Numpy.ndarray,如果配置选择包括法向向量,返回带边界法向向量的二维numpy数组。否则返回不带边界法向向量的二维numpy数组。
- 异常:
ValueError - 如果 config 为
None
。KeyError - 如果 geom_type 为
"domain"
,但 config.domain 为None
。KeyError - 如果 geom_type 为
"BC"
,但 config.bc 为None
。ValueError - 如果 geom_type 既不是
"BC"
也不是"domain"
。