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_type 是 domain,但 config.domain 是None。
KeyError - 如果 geom_type 为 BC,但 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_type 是 domain ,但 config.domain 为None。
KeyError - 如果 geom_type 为 BC ,但 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_type 是 domain,但 config.domain 为None。
KeyError - 如果 geom_type 为 BC,但 config.bc 为None。
KeyError - 如果 geom_type 为 IC,但 config.ic 为None。
ValueError - 如果 geom_type 不是 BC 、 IC 也不是 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_type 为 domain,但 config.domain 为None。
KeyError - 如果 geom_type 为 BC,但 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_min 或 coord_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_min 或 coord_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)