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 - 如果 configNone

  • KeyError - 如果 geom_type"domain",但 config.domainNone

  • KeyError - 如果 geom_type"BC",但 config.bcNone

  • ValueError - 如果 geom_type 既不是 "BC" 也不是 "domain"