torch_fem.mesh
Mesh
- class Mesh(mesh)[source]
Bases:
Module- Parameters:
mesh (
meshio.Mesh()) – a meshio mesh object
- points
2D tensor of shape \([|\mathcal V|, D]\), where \(|\mathcal V|\) is the number of points and \(D\) is the dimension of the space the coordinates of the points
- Type:
- cells
Each key is a
torch_fem.shape.element_type(), and for eachelement_type, there is a corresponding 2D tensor of shape \([|\mathcal V, B]\), where \(B\) is the number of basis functions the cells of the mesh- Type:
BufferDict[str, torch.Tensor]
- point_data
Each key is a
torch_fem.shape.element_type(), the point data- Type:
BufferDict[str, torch.Tensor], optional
- cell_data
Each key is a
torch_fem.shape.element_type(), the cell data- Type:
BufferDict[str, BufferDict[int, torch.Tensor]], optional
- field_data
Each key is a
torch_fem.shape.element_type(), the field data- Type:
BufferDict[str, torch.Tensor], optional
- dim2eletyp
Each key is a dimension, and the value is a list of element types of the dimension
- register_point_data(key, value)[source]
Add key-value pair to
point_databuffer, since thepoint_datais atorch_fem.nn.BufferDict, you are recommended to use this method instead of__setitem__- Parameters:
key (str) – the key of the value
value (torch.Tensor) – 1D tensor of shape \([|\mathcal V|,...]\), where \(\mathcal V\) is the number of nodes/vertices/points, the value to be registered
- Returns:
self will be returned
- Return type:
- save(file_name: str, file_format: str = None)[source]
- Parameters:
- Returns:
self will be returned
- Return type:
- to_file(file_name: str, file_format: str = None)[source]
- Parameters:
- Returns:
self will be returned
- Return type:
- node_adjacency(element_type=None)[source]
get the node adjacency matrix, inside each element, the nodes are considered fully connected
- Parameters:
element_type (str or Iterable[str] or None) – the type of the elements if
Noneis thedefault_element_typedefault :None- Returns:
the adjacency matrix of nodes \([|\mathcal V|,|\mathcal V|]\), where \(|\mathcal V|\) is the number of nodes
- Return type:
- element_adjacency(element_type=None)[source]
get the element adjacency matrix, the element are considered connected only if they share a boundary/facet
- Parameters:
element_type (str or Iterable[str] or None) – the type of the elements, should be of same dimension if
Noneis thedefault_element_typedefault :None- Returns:
the adjacency matrix of elements \([|\mathcal C|,|\mathcal C|]\), where \(|\mathcal C|\) is the number of elements
- Return type:
- elements(element_type=None)[source]
- Parameters:
element_type (str or Iterable[str] or None) – the type of the elements if None is the
default_eletypwill be used default : None- Returns:
if
element_typeisstr, return the corresponding elements connections of shape \([|\mathcal C|, B]\), where \(|\mathcal C|\) is the number of elements and \(B\) is the number of basis functions ifelement_typsisIterable[str], return the mapping of corresponding elements connections of shape \([|\mathcal C|, B]\), where \(|\mathcal C|\) is the number of elements and \(B\) is the number of basis functions ifelement_typeisNone, theelement_typewill be thedefault_element_typeand do as above- Return type:
torch.Tensor or Dict[str, torch.Tensor]
- clone()[source]
The gradient will vanish if you use
torch.Tensor.cloneto clone the mesh, so we provide this method to clone the mesh :returns: the cloned mesh :rtype: torch_fem.mesh.Mesh
- plot(values=None, save_path=None, backend='matplotlib', dt=None, show_mesh=False)[source]
- Parameters:
values (None or Dict[str, torch.Tensor] or Dict[str, List[torch.Tensor]]) – the values to plot, if None, only plot the mesh if
Dict[str, torch.Tensor], a static subplots will be plotted, the key is the name of the subplot, the value is of shape \([|\mathcal V|]\), where \(|\mathcal V|\) is the number of points ifDict[str, List[torch.Tensor]], a mp4/gif will be plotted, the key is the name of the subplot, each item in the list is of shape \([|\mathcal V|]\), where \(|\mathcal V|\) is the number of points default: Nonesave_path (str or None) – the path to save the plot, if None, it will not be saved if the
valuesis passed in asDict[str, List[torch.Tensor]], thesave_pathmust endswith ‘.mp4’ or ‘.gif’ default: Nonebackend (str) – the backend of the plot, must be one of [‘matplotlib’, ‘pyvista’] default: ‘matplotlib’
dt (float or None) – the time interval between each frame, only used when
valuesis passed in asDict[str, List[torch.Tensor]]default: Noneshow_mesh (bool) – whether to show the mesh, when
valuesis passed in asDict[str, List[torch.Tensor]]orDict[str, torch.Tensor]default: False
- property boundary_mask
- Returns:
1D tensor of shape \([|\mathcal V|]\), where \(|\mathcal V|\) is the number of points the mask of the boundary points,
"is_boundary"key or"boundary_mask"key is required inpoint_data- Return type:
- property default_element_type
- property dtype
- Returns:
the data type of the points, e.g., torch.float32, torch.float64
- Return type:
- property device
- Returns:
the device of the points, e.g., torch.device(“cpu”), torch.device(“cuda:0”)
- Return type:
- classmethod from_meshio(mesh)[source]
- Parameters:
mesh (meshio.Mesh) – a meshio mesh object
- Returns:
the mesh object
- Return type:
- classmethod read(file_name: str, file_format: str = None)[source]
- Parameters:
- Returns:
the mesh object
- Return type:
- classmethod from_file(file_name: str, file_format: str = None)[source]
- Parameters:
- Returns:
the mesh object
- Return type:
- static gen_rectangle(chara_length=0.1, order=1, element_type='tri', left=0.0, right=1.0, bottom=0.0, top=1.0, visualize=False, cache_path=None)[source]
- Parameters:
chara_length (float, optional) – the characteristic length of the mesh, default:
0.1order (int, optional) – the order of the basis function, default:
1element_type (str, optional) – the type of the element, default:
"tri"left (float, optional) – the left boundary of the rectangle, default:
0.0right (float, optional) – the right boundary of the rectangle, default:
1.0bottom (float, optional) – the bottom boundary of the rectangle, default:
0.0top (float, optional) – the top boundary of the rectangle, default:
1.0visualize (bool, optional) – whether to visualize the mesh, default:
Falsecache_path (str, optional) – the path to save the mesh, if
None, it will be decided bytorch_fem.dataset.mesh.gen_rectangle(), default:None
- Returns:
the mesh object
- Return type:
- static gen_hollow_rectangle(chara_length=0.1, order=1, element_type='quad', outer_left=0.0, outer_right=1.0, outer_bottom=0.0, outer_top=1.0, inner_left=0.25, inner_right=0.75, inner_bottom=0.25, inner_top=0.75, visualize=False, cache_path=None)[source]
- Parameters:
chara_length (float, optional) – the characteristic length of the mesh, default:
0.1order (int, optional) – the order of the basis function, default:
1element_type (str, optional) – the type of the element, default:
"quad"outer_left (float, optional) – the left boundary of the outer rectangle, default:
0.0outer_right (float, optional) – the right boundary of the outer rectangle, default:
1.0outer_bottom (float, optional) – the bottom boundary of the outer rectangle, default:
0.0outer_top (float, optional) – the top boundary of the outer rectangle, default:
1.0inner_left (float, optional) – the left boundary of the inner rectangle, default:
0.25inner_right (float, optional) – the right boundary of the inner rectangle, default:
0.75inner_bottom (float, optional) – the bottom boundary of the inner rectangle, default:
0.25inner_top (float, optional) – the top boundary of the inner rectangle, default:
0.75visualize (bool, optional) – whether to visualize the mesh, default:
Falsecache_path (str, optional) – the path to save the mesh, if
None, it will be decided bytorch_fem.dataset.mesh.gen_hollow_rectangle(), default:None
- Returns:
the mesh object
- Return type:
- static gen_circle(chara_length=0.1, order=1, element_type='tri', cx=0.0, cy=0.0, r=1.0, visualize=False, cache_path=None)[source]
- Parameters:
chara_length (float, optional) – the characteristic length of the mesh, default:
0.1order (int, optional) – the order of the basis function, default:
1element_type (str, optional) – the type of the element, default:
"tri"cx (float, optional) – the x coordinate of the center of the circle, default:
0.0cy (float, optional) – the y coordinate of the center of the circle, default:
0.0r (float, optional) – the radius of the circle, default:
1.0visualize (bool, optional) – whether to visualize the mesh, default:
Falsecache_path (str, optional) – the path to save the mesh, if
None, it will be decided bytorch_fem.dataset.mesh.gen_circle(), default:None
- Returns:
the mesh object
- Return type:
- static gen_hollow_circle(chara_length=0.1, order=1, element_type='quad', cx=0.0, cy=0.0, r_inner=1.0, r_outer=2.0, visualize=False, cache_path=None)[source]
- Parameters:
chara_length (float, optional) – the characteristic length of the mesh, default:
0.1order (int, optional) – the order of the basis function, default:
1element_type (str, optional) – the type of the element, default:
"quad"cx (float, optional) – the x coordinate of the center of the circle, default:
0.0cy (float, optional) – the y coordinate of the center of the circle, default:
0.0r_inner (float, optional) – the inner radius of the circle, default:
1.0r_outer (float, optional) – the outer radius of the circle, default:
2.0visualize (bool, optional) – whether to visualize the mesh, default:
Falsecache_path (str, optional) – the path to save the mesh, if
None, it will be decided bytorch_fem.dataset.mesh.gen_hollow_circle(), default:None
- Returns:
the mesh object
- Return type:
- static gen_L(chara_length=0.1, order=1, element_type='quad', left=0.0, right=1.0, bottom=0.0, top=1.0, top_inner=0.5, right_inner=0.5, visualize=False, cache_path=None)[source]
- Parameters:
chara_length (float, optional) – the characteristic length of the mesh, default:
0.1order (int, optional) – the order of the basis function, default:
1element_type (str, optional) – the type of the element, default:
"quad"left (float, optional) – the left boundary of the rectangle, default:
0.0right (float, optional) – the right boundary of the rectangle, default:
1.0bottom (float, optional) – the bottom boundary of the rectangle, default:
0.0top (float, optional) – the top boundary of the rectangle, default:
1.0top_inner (float, optional) – the top inner boundary of the rectangle, default:
0.5right_inner (float, optional) – the right inner boundary of the rectangle, default:
0.5visualize (bool, optional) – whether to visualize the mesh, default:
Falsecache_path (str, optional) – the path to save the mesh, if
None, it will be decided bytorch_fem.dataset.mesh.gen_L(), default:None
- Returns:
the mesh object
- Return type:
- static gen_cube(chara_length=0.1, order=1, left=0.0, right=1.0, bottom=0.0, top=1.0, front=0.0, back=1.0, visualize=False, cache_path=None)[source]
- Parameters:
chara_length (float, optional) – the characteristic length of the mesh, default:
0.1order (int, optional) – the order of the basis function, default:
1left (float, optional) – the left boundary of the cube, default:
0.0right (float, optional) – the right boundary of the cube, default:
1.0bottom (float, optional) – the bottom boundary of the cube, default:
0.0top (float, optional) – the top boundary of the cube, default:
1.0front (float, optional) – the front boundary of the cube, default:
0.0back (float, optional) – the back boundary of the cube, default:
1.0visualize (bool, optional) – whether to visualize the mesh, default:
Falsecache_path (str, optional) – the path to save the mesh, if
None, it will be decided bytorch_fem.dataset.mesh.gen_cube(), default:None
- Returns:
the mesh object
- Return type:
- static gen_hollow_cube(chara_length=0.1, order=1, outer_left=0.0, outer_right=1.0, outer_bottom=0.0, outer_top=1.0, outer_front=0.0, outer_back=1.0, inner_left=0.25, inner_right=0.75, inner_bottom=0.25, inner_top=0.75, inner_front=0.25, inner_back=0.75, visualize=False, cache_path='.gmsh_cache/tmp.msh')[source]
- Parameters:
chara_length (float, optional) – the characteristic length of the mesh, default:
0.1order (int, optional) – the order of the basis function, default:
1outer_left (float, optional) – the left boundary of the outer cube, default:
0.0outer_right (float, optional) – the right boundary of the outer cube, default:
1.0outer_bottom (float, optional) – the bottom boundary of the outer cube, default:
0.0outer_top (float, optional) – the top boundary of the outer cube, default:
1.0outer_front (float, optional) – the front boundary of the outer cube, default:
0.0outer_back (float, optional) – the back boundary of the outer cube, default:
1.0inner_left (float, optional) – the left boundary of the inner cube, default:
0.25inner_right (float, optional) – the right boundary of the inner cube, default:
0.75inner_bottom (float, optional) – the bottom boundary of the inner cube, default:
0.25inner_top (float, optional) – the top boundary of the inner cube, default:
0.75inner_front (float, optional) – the front boundary of the inner cube, default:
0.25inner_back (float, optional) – the back boundary of the inner cube, default:
0.75visualize (bool, optional) – whether to visualize the mesh, default:
Falsecache_path (str, optional) – the path to save the mesh, if
None, it will be decided bytorch_fem.dataset.mesh.gen_hollow_cube(), default:None
- Returns:
the mesh object
- Return type:
- static gen_sphere(chara_length=0.1, order=1, cx=0.0, cy=0.0, cz=0.0, r=1.0, visualize=False, cache_path=None)[source]
- Parameters:
chara_length (float, optional) – the characteristic length of the mesh, default:
0.1order (int, optional) – the order of the basis function, default:
1cx (float, optional) – the x coordinate of the center of the sphere, default:
0.0cy (float, optional) – the y coordinate of the center of the sphere, default:
0.0cz (float, optional) – the z coordinate of the center of the sphere, default:
0.0r (float, optional) – the radius of the sphere, default:
1.0visualize (bool, optional) – whether to visualize the mesh, default:
Falsecache_path (str, optional) – the path to save the mesh, if
None, it will be decided bytorch_fem.dataset.mesh.gen_sphere(), default:None
- Returns:
the mesh object
- Return type:
- static gen_hollow_sphere(chara_length=0.1, order=1, cx=0.0, cy=0.0, cz=0.0, r_inner=1.0, r_outer=2.0, visualize=False, cache_path=None)[source]
- Parameters:
chara_length (float, optional) – the characteristic length of the mesh, default:
0.1order (int, optional) – the order of the basis function, default:
1cx (float, optional) – the x coordinate of the center of the sphere, default:
0.0cy (float, optional) – the y coordinate of the center of the sphere, default:
0.0cz (float, optional) – the z coordinate of the center of the sphere, default:
0.0r_inner (float, optional) – the inner radius of the sphere, default:
1.0r_outer (float, optional) – the outer radius of the sphere, default:
2.0visualize (bool, optional) – whether to visualize the mesh, default:
Falsecache_path (str, optional) – the path to save the mesh, if
None, it will be decided bytorch_fem.dataset.mesh.gen_hollow_sphere(), default:None
- Returns:
the mesh object
- Return type: