mindflow.geometry

class mindflow.geometry.Cone(name, centre, radius, h_min, h_max, h_axis, boundary_type='uniform', dtype=numpy.float32, sampling_config=None)[源代码]

圆锥体对象的定义。

参数:
  • name (str) - 圆锥体的名称。

  • centre (numpy.ndarray) - 底部的原点。

  • radius (float) - 底部的半径。

  • h_min (float) - 底部的高度坐标。

  • h_max (float) - 圆锥体的最大高度坐标。

  • h_axis (int) - 底部法向向量的轴。

  • boundary_type (str) - 值可以是“uniform”或“unweighted”。默认值:“uniform”。

    • ‘uniform’,每个边界中的预期样本数与边界的面积(长度)是成比例的。

    • ‘unweighted’,每个边界中的预期样本数相同。

  • dtype (numpy.dtype) - 采样点数据类型的数据类型。默认值:np.float32。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

支持平台:

Ascend GPU

样例:

>>> import numpy as np
>>> from mindflow.geometry import generate_sampling_config, Cone
>>> cone_mesh = dict({'domain': dict({'random_sampling': True, 'size': 300}),
...                   'BC': dict({'random_sampling': True, 'size': 300, 'with_normal': False,}),})
>>> vertices = np.array([[0., .1, 0.], [.9, .2, .1], [.5, .6, 0.1], [.6, .5, .8]])
>>> centre = np.array([0., 0.5])
>>> radius = 1.5
>>> h_min = -7.
>>> h_max = 7.
>>> h_axis = 2
>>> cone = Cone("cone", centre, radius, h_min, h_max, h_axis,
...             sampling_config=generate_sampling_config(cone_mesh))
>>> domain = cone.sampling(geom_type="domain")
>>> bc = cone.sampling(geom_type="bc")
>>> print(domain.shape)
(300, 2)
class mindflow.geometry.CSGDifference(geom1, geom2, sampling_config=None)[源代码]

几何差异的CSG类。

参数:
  • geom1 (Geometry) - 几何体对象。

  • geom2 (Geometry) - 要从 geom1 中减去的几何体对象。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config, Disk, Rectangle, CSGDifference
>>> sampling_config_csg = dict({
...     'domain': dict({
...         'random_sampling': True,
...         'size': 1000,
...         'sampler': 'uniform'
...     }),
...     'BC': dict({
...         'random_sampling': True,
...         'size': 200,
...         'sampler': 'uniform',
...         'with_normal': True,
...     }),
... })
>>> disk = Disk("disk", (1.2, 0.5), 0.8)
>>> rect = Rectangle("rect", (-1.0, 0), (1, 1))
>>> diff = CSGDifference(rect, disk)
>>> diff.set_sampling_config(generate_sampling_config(sampling_config_csg))
>>> domain = diff.sampling(geom_type="domain")
>>> bc, bc_normal = diff.sampling(geom_type="BC")
>>> print(domain.shape)
(1000, 2)
class mindflow.geometry.CSGIntersection(geom1, geom2, sampling_config=None)[源代码]

几何相交的CSG类。

参数:
  • geom1 (Geometry) - 几何体对象。

  • geom2 (Geometry) - 要与geom1求交集的几何体对象。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config, Disk, Rectangle, CSGIntersection
>>> sampling_config_csg = dict({
...     'domain': dict({
...         'random_sampling': True,
...         'size': 1000,
...         'sampler': 'uniform'
...     }),
...     'BC': dict({
...         'random_sampling': True,
...         'size': 200,
...         'sampler': 'uniform',
...         'with_normal': True,
...     }),
... })
>>> disk = Disk("disk", (1.2, 0.5), 0.8)
>>> rect = Rectangle("rect", (-1.0, 0), (1, 1))
>>> inter = CSGIntersection(rect, disk)
>>> inter.set_sampling_config(generate_sampling_config(sampling_config_csg))
>>> domain = inter.sampling(geom_type="domain")
>>> bc, bc_normal = inter.sampling(geom_type="BC")
>>> print(domain.shape)
(1000, 2)
class mindflow.geometry.CSGUnion(geom1, geom2, sampling_config=None)[源代码]

用于几何合并的CSG类。

参数:
  • geom1 (Geometry) - 几何体对象。

  • geom2 (Geometry) - 要与 geom1 求并集的几何体对象。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config, Disk, Rectangle, CSGUnion
>>> sampling_config_csg = dict({
...     'domain': dict({
...         'random_sampling': True,
...         'size': 1000,
...         'sampler': 'uniform'
...     }),
...     'BC': dict({
...         'random_sampling': True,
...         'size': 200,
...         'sampler': 'uniform',
...         'with_normal': True,
...     }),
... })
>>> disk = Disk("disk", (1.2, 0.5), 0.8)
>>> rect = Rectangle("rect", (-1.0, 0), (1, 1))
>>> union = CSGUnion(rect, disk)
>>> union.set_sampling_config(generate_sampling_config(sampling_config_csg))
>>> domain = union.sampling(geom_type="domain")
>>> bc, bc_normal = union.sampling(geom_type="BC")
>>> print(domain.shape)
(1000, 2)
class mindflow.geometry.CSGXOR(geom1, geom2, sampling_config=None)[源代码]

用于几何异或计算的CSG类。

参数:
  • geom1 (Geometry) - 几何体对象。

  • geom2 (Geometry) - 要与 geom1 求异或的几何体对象。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config, Disk, Rectangle, CSGXOR
>>> sampling_config_csg = dict({
...     'domain': dict({
...         'random_sampling': True,
...         'size': 1000,
...         'sampler': 'uniform'
...     }),
...     'BC': dict({
...         'random_sampling': True,
...         'size': 200,
...         'sampler': 'uniform',
...         'with_normal': True,
...     }),
... })
>>> disk = Disk("disk", (1.2, 0.5), 0.8)
>>> rect = Rectangle("rect", (-1.0, 0), (1, 1))
>>> xor = CSGXOR(rect, disk)
>>> xor.set_sampling_config(generate_sampling_config(sampling_config_csg))
>>> domain = xor.sampling(geom_type="domain")
>>> bc, bc_normal = xor.sampling(geom_type="BC")
>>> print(domain.shape)
(1000, 2)
class mindflow.geometry.Cuboid(name, coord_min, coord_max, dtype=numpy.float32, sampling_config=None)[源代码]

立方体对象的定义。

参数:
  • name (str) - 立方体对象的名称。

  • coord_min (Union[tuple[int, int], tuple[float, float], list[int, int], list[float, float], numpy.ndarray]) - 立方体对象左下角的坐标。

  • coord_max (Union[tuple[int, int], tuple[float, float], list[int, int], list[float, float], numpy.ndarray]) - 立方体对象右上角的坐标。

  • dtype (numpy.dtype) - 采样点数据类型的数据类型。默认值:numpy.float32。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config, Cuboid
>>> cuboid_mesh = dict({'domain': dict({'random_sampling': False, 'size': [50, 50, 25]}),
...                      'BC': dict({'random_sampling': False, 'size': 1000, 'with_normal': True,}),})
>>> cuboid = Cuboid("cuboid", (-3.0, 1, 0), (1, 2, 1), sampling_config=generate_sampling_config(cuboid_mesh))
>>> domain = cuboid.sampling(geom_type="domain")
>>> bc, bc_normal = cuboid.sampling(geom_type="BC")
>>> print(domain.shape)
(62500, 3)
class mindflow.geometry.Cylinder(name, centre, radius, h_min, h_max, h_axis, boundary_type='uniform', dtype=numpy.float32, sampling_config=None)[源代码]

圆柱体对象的定义。

参数:
  • name (str) - 圆柱体的名称。

  • centre (numpy.ndarray) - 底部的原点。

  • radius (float) - 底部的半径。

  • h_min (float) - 底部的高度坐标。

  • h_max (float) - 顶部的高度坐标。

  • h_axis (int) - 底部法向向量的轴。

  • boundary_type (str) - 值可以是“uniform”或“unweighted”。默认值:“uniform”。

    • ‘uniform’,每个边界中的预期样本数与边界的面积(长度)是成比例的。

    • ‘unweighted’,每个边界中的预期样本数相同。

  • dtype (numpy.dtype) - 采样点数据类型的数据类型。默认值:np.float32。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

支持平台:

Ascend GPU

样例:

>>> import numpy as np
>>> from mindflow.geometry import generate_sampling_config, Cylinder
>>> cylinder_mesh = dict({'domain': dict({'random_sampling': True, 'size': 300}),
...                       'BC': dict({'random_sampling': True, 'size': 300, 'with_normal': False,}),})
>>> vertices = np.array([[0., .1, 0.], [.9, .2, .1], [.5, .6, 0.1], [.6, .5, .8]])
>>> centre = np.array([0., 0.5])
>>> radius = 1.5
>>> h_min = -7.
>>> h_max = 7.
>>> h_axis = 2
>>> cylinder = Cylinder("cylinder", centre, radius, h_min, h_max, h_axis,
...                     sampling_config=generate_sampling_config(cylinder_mesh))
>>> domain = cylinder.sampling(geom_type="domain")
>>> bc = cylinder.sampling(geom_type="bc")
>>> print(domain.shape)
(300, 2)
class mindflow.geometry.Disk(name, center, radius, dtype=np.float32, sampling_config=None)[源代码]

圆盘对象的定义。

参数:
  • name (str) - 圆盘的名称。

  • center (Union[tuple[int, int], tuple[float, float], list[int, int], list[float, float], numpy.ndarray]) - 圆盘的中心坐标。

  • radius (Union[int, float]) - 圆盘的半径。

  • dtype (numpy.dtype) - 采样点的数据类型。默认值:numpy.float32。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

异常:
  • ValueError - 如果 center 既不是长度为2的list也不是Tuple。

  • ValueError - 如果 radius 为负数。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config, Disk
>>> disk_mesh = dict({'domain': dict({'random_sampling': False, 'size' : [100, 180]}),
...                   'BC': dict({'random_sampling': False, 'size': 200, 'with_normal' : True,})})
>>> disk = Disk("disk", (-1.0, 0), 2.0, sampling_config=generate_sampling_config(disk_mesh))
>>> domain = disk.sampling(geom_type="domain")
>>> bc, bc_normal = disk.sampling(geom_type="BC")
>>> print(bc.shape)
(200, 2)
sampling(geom_type='domain')[源代码]

采样域和边界点。

参数:
  • geom_type (str) - 几何类型,可以是”domain”或者”BC”。默认值:”domain”。

    • “domain”: 问题的可行域。

    • “BC”: 问题的边界条件。

返回:

Numpy.array,如果配置选择包括法向向量,返回带边界法向向量的二维numpy数组。否则返回不带边界法向向量的二维numpy数组。

异常:
  • ValueError - 如果 config 为None。

  • KeyError - 如果 geom_typedomain,但 config.domain 是None。

  • KeyError - 如果 geom_typeBC,但 config.bc 为None。

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

class mindflow.geometry.FixedPoint(name, coord, dtype=np.float32, sampling_config=None)[源代码]

HyperCube对象的定义。

参数:
  • name (str) - 定点的名称。

  • coord (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。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config, FixedPoint
>>> hypercube_random = dict({
...      'domain': dict({
...          'random_sampling': True,
...          'size': 1,
...          'sampler': 'uniform'
...         })
...  })
>>> sampling_config = generate_sampling_config(hypercube_random)
>>> point = FixedPoint("FixedPoint", [-1, 2, 1], sampling_config=sampling_config)
>>> domain = point.sampling(geom_type="domain")
>>> print(domain.shape)
(1, 3)
sampling(geom_type='domain')[源代码]

采样点。

参数:
  • geom_type (str) - 几何类型。默认值:’domain’。

返回:

Numpy.array,带或不带边界法向向量的二维numpy数组。

异常:
  • ValueError - 如果 config 为None。

  • KeyError - 如果 geom_typedomain ,但 config.domain 为None。

  • KeyError - 如果 geom_typeBC ,但 config.bc 为None。

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

class mindflow.geometry.Geometry(name, dim, coord_min, coord_max, dtype=np.float32, sampling_config=None)[源代码]

几何对象的定义。

参数:
  • name (str) - 几何体的名称。

  • dim (int) - 维数。

  • coord_min (Union[int, float, list[int, float], tuple[int, float], numpy.ndarray]) - 几何体的最小坐标。

  • coord_max (Union[int, float, list[int, float], tuple[int, float], numpy.ndarray]) - 几何体的最大坐标。

  • dtype (numpy.dtype) - 采样点数据类型的数据类型。默认值:numpy.float32。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config, Geometry
>>> geometry_config = dict({'domain' : dict({'random_sampling' : True, 'size' : 100}),
...                          'BC' : dict({'random_sampling' : True, 'size' : 100, 'sampler' : 'uniform',}),
...                          'random_merge' : True,})
>>> sampling_config = generate_sampling_config(geometry_config)
>>> geom = Geometry("geom", 1, 0.0, 1.0, sampling_config=sampling_config)
>>> geom.set_name("geom_name")
set_name(name)[源代码]

设置几何实例名称。

参数:
  • name (str) - 几何实例的名称。

异常:
  • TypeError - 如果 name 不是字符串。

样例:

>>> from mindflow.geometry import generate_sampling_config, Geometry
>>> geom = Geometry("geom", 1, 0.0, 1.0)
>>> geom.set_name("geom_name")
set_sampling_config(sampling_config: SamplingConfig)[源代码]

设置采样信息。

参数:
  • sampling_config (SamplingConfig) - 采样配置。

异常:
  • TypeError - 如果 sampling_config 不是SamplingConfig的实例。

样例:

>>> from sciai.geometry import generate_sampling_config, Geometry
>>> geometry_config = dict({'domain': dict({'random_sampling': True, 'size': 100}),
...                          'BC': dict({'random_sampling': True, 'size': 100, 'sampler': 'uniform',}),
...                          'random_merge': True,})
>>> sampling_config = generate_sampling_config(geometry_config)
>>> geom = Geometry("geom", 1, 0.0, 1.0)
>>> geom.set_sampling_config(sampling_config)
class mindflow.geometry.GeometryWithTime(geometry, timedomain, sampling_config=None)[源代码]

含时域几何体的定义。

参数:
  • geometry (Geometry) - 几何体。

  • timedomain (TimeDomain) - 时域。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

异常:
  • ValueError - 如果 sampling_config 不是None,但 sampling_config.time 是None。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config, Rectangle, TimeDomain, GeometryWithTime
>>> rect_with_time_config = dict({
...     'domain': dict({
...         'random_sampling': True,
...         'size': 200,
...     }),
...     'BC': dict({
...         'random_sampling': False,
...         'size': 100,
...         'with_normal': True,
...     }),
...     'IC': dict({
...         'random_sampling': False,
...         'size': [10, 10],
...     }),
...     'time': dict({
...         'random_sampling': True,
...         'size': 10,
...     })
... })
>>> rect = Rectangle("rect", [-1.0, -0.5], [1.0, 0.5])
>>> time = TimeDomain("time", 0.0, 1.0)
>>> rect_with_time = GeometryWithTime(rect, time)
>>> sampling_config = generate_sampling_config(rect_with_time_config)
>>> rect_with_time.set_sampling_config(sampling_config)
>>> bc, bc_normal = rect_with_time.sampling(geom_type="BC")
>>> domain = rect_with_time.sampling(geom_type="domain")
>>> ic = rect_with_time.sampling(geom_type="IC")
>>> print(domain.shape)
(200, 3)
>>> print(bc.shape)
(90, 3)
>>> print(ic.shape)
(100, 3)
sampling(geom_type='domain')[源代码]

采样点。

参数:
  • geom_type (str) - 几何类型,可以是”domain”或者”BC”或者”IC”。默认值:”domain”。

    • “domain”: 问题的可行域。

    • “BC”: 问题的边界条件。

    • “IC”: 问题的初始条件。

返回:

Numpy.array,如果配置选择包括法向向量,返回带边界法向向量的二维numpy数组。否则返回不带边界法向向量的二维numpy数组。

异常:
  • ValueError - 如果 config 为None。

  • KeyError - 如果 geom_typedomain,但 config.domain 为None。

  • KeyError - 如果 geom_typeBC,但 config.bc 为None。

  • KeyError - 如果 geom_typeIC,但 config.ic 为None。

  • ValueError - 如果 geom_type 不是 BCIC 也不是 domain

set_sampling_config(sampling_config: SamplingConfig)[源代码]

设置采样信息。

参数:
  • sampling_config (SamplingConfig) - 采样配置。

异常:
  • TypeError - 如果 sampling_config 不是SamplingConfig的实例。

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.array,如果配置选择包括法向向量,返回带边界法向向量的二维numpy数组。否则返回不带边界法向向量的二维numpy数组。

异常:
  • ValueError - 如果 config 为None。

  • KeyError - 如果 geom_typedomain,但 config.domain 为None。

  • KeyError - 如果 geom_typeBC,但 config.bc 为None。

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

class mindflow.geometry.Interval(name, coord_min, coord_max, dtype=np.float32, sampling_config=None)[源代码]

区间对象的定义。

参数:
  • name (str) - 区间的名称。

  • coord_min (Union[int, float]) - 区间左边界。

  • coord_max (Union[int, float]) - 区间右边界。

  • dtype (numpy.dtype) - 采样点数据类型的数据类型。默认值:numpy.float32。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

异常:
  • ValueError - 如果 coord_mincoord_max 既不是int也不是float。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config, Interval
>>> line_config = dict({'domain': dict({'random_sampling': True, 'size': 100, 'sampler': 'uniform'}),
...                      'BC': dict({'random_sampling': True, 'size': 10, 'sampler': 'uniform',}),})
>>> line = Interval("line", -1.0, 1.0, sampling_config=generate_sampling_config(line_config))
>>> domain = line.sampling(geom_type="domain")
>>> bc = line.sampling(geom_type="BC")
>>> print(bc.shape)
(10, 1)
class mindflow.geometry.PartSamplingConfig(size, random_sampling=True, sampler='uniform', random_merge=True, with_normal=False, with_sdf=False)[源代码]

部分采样配置的定义。

参数:
  • size (Union[int, tuple[int], list[int]) - 采样点数。

  • random_sampling (bool) - 指定是否随机采样点。默认值:True。

  • sampler (str) - 随机采样的方法。默认值:uniform。

  • random_merge (bool) - 是否随机合并不同维度的坐标。默认值:True。

  • with_normal (bool) - 是否生成边界的法向向量。默认值:False。

  • with_sdf (bool) - 是否返回域内点的符号距离函数结果。默认值:False。

异常:
  • TypeError - 采样点数不为int时。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import PartSamplingConfig
>>> partsampling = PartSamplingConfig(100, True, "uniform", True, True)
class mindflow.geometry.Pentagon(name, vertices, boundary_type='uniform', dtype=np.float32, sampling_config=None)[源代码]

五边形对象的定义。

参数:
  • name (str) - 五边形的名称。

  • vertices (numpy.ndarray) - 五边形的顶点,按逆时针顺序排列。

  • boundary_type (str) - 值可以是“uniform”或“unweighted”。默认值:“uniform”。

    • ‘uniform’,每个边界中的预期样本数与边界的面积(长度)成比例的。

    • ‘unweighted’,每个边界中的预期样本数相同。

  • dtype (numpy.dtype) - 采样点数据类型的数据类型。默认值:np.float32。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config, Pentagon
>>> pentagon_mesh = dict({'domain': dict({'random_sampling': True, 'size': 300}),
...                       'BC': dict({'random_sampling': True, 'size': 300, 'with_normal': False,}),})
>>> vertices = np.array([[0., .1], [.5, .1], [.9, .2], [.7, .6], [.2, .5]])
>>> pentagon = Pentagon("pentagon", vertices,
...                     sampling_config=generate_sampling_config(pentagon_mesh))
>>> domain = pentagon.sampling(geom_type="domain")
>>> bc = pentagon.sampling(geom_type="bc")
>>> print(domain.shape)
(300, 2)
class mindflow.geometry.Rectangle(name, coord_min, coord_max, dtype=np.float32, sampling_config=None)[源代码]

矩形对象的定义。

参数:
  • name (str) - 矩形的名称。

  • coord_min (Union[tuple[int, int], tuple[float, float], list[int, int], list[float, float], numpy.ndarray]) - 矩形的左底部的坐标。

  • coord_max (Union[tuple[int, int], tuple[float, float], list[int, int], list[float, float], numpy.ndarray]) - 矩形的右顶部的坐标。

  • dtype (numpy.dtype) - 采样点数据类型的数据类型。默认值:numpy.float32。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config, Rectangle
>>> rectangle_mesh = dict({'domain': dict({'random_sampling': False, 'size': [50, 25]}),
...                        'BC': dict({'random_sampling': False, 'size': 300, 'with_normal': True,}),})
>>> rectangle = Rectangle("rectangle", (-3.0, 1), (1, 2),
...                       sampling_config=generate_sampling_config(rectangle_mesh))
>>> domain = rectangle.sampling(geom_type="domain")
>>> bc, bc_normal = rectangle.sampling(geom_type="BC")
>>> print(domain.shape)
(1250, 2)
class mindflow.geometry.SamplingConfig(part_sampling_dict)[源代码]

全局采样配置定义。

参数:
  • part_sampling_dict (dict) - 采样配置。

异常:
  • ValueError - 如果 coord_mincoord_max 既不是int也不是float。

  • TypeError - 如果 part_sampling_dict 不是dict。

  • KeyError - 如果 geom_type 不是”domain”、”BC”、”IC”或”time”。

  • TypeError - 如果”config”不是PartSamplingConfig对象。

  • ValueError - 如果 self.domain.size 既不是list也不是tuple。

  • ValueError - 如果 self.ic.size 既不是list也不是tuple。

  • ValueError - 如果 self.time.size 既不是list也不是tuple。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import SamplingConfig, PartSamplingConfig
>>> part_sampling_config_dict = {"domain" : PartSamplingConfig([100, 100], False, True),
...                              "BC" : PartSamplingConfig(100, True, "uniform", True, True)}
>>> sampling_config = SamplingConfig(part_sampling_config_dict)
class mindflow.geometry.Tetrahedron(name, vertices, boundary_type='uniform', dtype=numpy.float32, sampling_config=None)[源代码]

四面体对象的定义。

参数:
  • name (str) - 四面体的名称。

  • vertices (numpy.ndarray) - 四面体的顶点。

  • boundary_type (str) - 值可以是“uniform”或“unweighted”。默认值:“uniform”。

    • ‘uniform’,每个边界中的预期样本数与边界的面积(长度)成比例的。

    • ‘unweighted’,每个边界中的预期样本数相同。

  • dtype (numpy.dtype) - 采样点数据类型的数据类型。默认值:np.float32。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

支持平台:

Ascend GPU

样例:

>>> import numpy as np
>>> from mindflow.geometry import generate_sampling_config, Tetrahedron
>>> tetrahedron_mesh = dict({'domain': dict({'random_sampling': True, 'size': 300}),
...                          'BC': dict({'random_sampling': True, 'size': 300, 'with_normal': False,}),})
>>> vertices = np.array([[0., .1, 0.], [.9, .2, .1], [.5, .6, 0.1], [.6, .5, .8]])
>>> tetrahedron = Tetrahedron("tetrahedron", vertices,
...                           sampling_config=generate_sampling_config(tetrahedron_mesh))
>>> domain = tetrahedron.sampling(geom_type="domain")
>>> bc = tetrahedron.sampling(geom_type="bc")
>>> print(domain.shape)
(300, 2)
class mindflow.geometry.TimeDomain(name, start=0.0, end=1.0, dtype=np.float32, sampling_config=None)[源代码]

时域的定义。

参数:
  • name (str) - 时域名称。

  • start (Union[int, float]) - 时域的开始。默认值:0.0。

  • end (Union[int, float]) - 时域结束。默认值:1.0。

  • dtype (numpy.dtype) - 采样点数据类型的数据类型。默认值:numpy.float32。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config, TimeDomain
>>> time_config = dict({
...     'domain': dict({
...         'random_sampling': True,
...         'size': 100,
...         'sampler': 'lhs'
...     })
... })
>>> time_domain = TimeDomain("time", 0.0, 1.0, sampling_config=generate_sampling_config(time_config))
>>> domain = time_domain.sampling(geom_type="domain")
>>> print(domain.shape)
(100, 1)
class mindflow.geometry.Triangle(name, vertices, boundary_type='uniform', dtype=np.float32, sampling_config=None)[源代码]

三角形对象的定义。

参数:
  • name (str) - 三角形的名称。

  • vertices (numpy.ndarray) - 三角形的顶点。

  • boundary_type (str) - 值可以是“uniform”或“unweighted”。默认值:“uniform”。

    • ‘uniform’,每个边界中的预期样本数与边界的面积(长度)成比例的。

    • ‘unweighted’,每个边界中的预期样本数相同。

  • dtype (numpy.dtype) - 采样点数据类型的数据类型。默认值:np.float32。

  • sampling_config (SamplingConfig) - 采样配置。默认值:None。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config, Triangle
>>> triangle_mesh = dict({'domain': dict({'random_sampling': True, 'size': 300}),
...                       'BC': dict({'random_sampling': True, 'size': 300, 'with_normal': False,}),})
>>> vertices = np.array([[0., .1], [.9, .2], [.5, .6]])
>>> triangle = Triangle("triangle", vertices,
...                     sampling_config=generate_sampling_config(triangle_mesh))
>>> domain = triangle.sampling(geom_type="domain")
>>> bc = triangle.sampling(geom_type="bc")
>>> print(domain.shape)
(300, 2)
mindflow.geometry.generate_sampling_config(dict_config)[源代码]

从dict转换为采样配置。

参数:
  • dict_config (dict) - 包含配置信息的dict。

返回:

geometry_base.SamplingConfig,采样配置。

异常:
  • ValueError - 如果无法从输入dict生成part_dict_config。

支持平台:

Ascend GPU

样例:

>>> from mindflow.geometry import generate_sampling_config
>>> rect_config = dict({
...     'domain': dict({
...         'random_sampling': True,
...         'size': 200,
...         'with_sdf': False,
...     }),
...     'BC': dict({
...         'random_sampling': True,
...         'size': 50,
...         'with_normal': True,
...     })
... })
>>> sampling_config = generate_sampling_config(rect_config)