ogs5py.fileclasses.msh

Class for the ogs MESH file.

Subpackages

The generators can be called with MSH.generate

generator Generators for the ogs MESH file.

File Class

MSH([mesh_list]) Class for a multi layer mesh file that contains multiple ‘#FEM_MSH’ Blocks.

class MSH(mesh_list=None, **OGS_Config)[source]

Bases: ogs5py.fileclasses.msh.core.MSHsgl

Class for a multi layer mesh file that contains multiple ‘#FEM_MSH’ Blocks.

Parameters:
  • mesh_list (list of dict or None, optional) –

    each dictionary contains one ‘#FEM_MSH’ block of the mesh file with with the following information (sorted by keys):

    mesh_data : dict
    dictionary containing information about
    • AXISYMMETRY (bool)
    • CROSS_SECTION (bool)
    • PCS_TYPE (str)
    • GEO_TYPE (str)
    • GEO_NAME (str)
    • LAYER (int)
    nodes : ndarray
    Array with all node postions
    elements : dict
    contains nodelists for elements sorted by element types
    material_id : dict
    contains material ids for each element sorted by element types
    element_id : dict
    contains element ids for each element sorted by element types
  • task_root (str, optional) – Path to the destiny model folder. Default: cwd+”ogs5model”
  • task_id (str, optional) – Name for the ogs task. Default: “model”
Attributes:
AXISYMMETRY

bool: AXISYMMETRY attribute.

CROSS_SECTION

bool: CROSS_SECTION attribute.

ELEMENTS

Get and set the ELEMENTS of the mesh.

ELEMENT_ID

Get and set the ELEMENT_IDs of the mesh.

ELEMENT_NO

int: number of ELEMENTS.

ELEMENT_TYPES

set: ELEMENT types of the mesh.

GEO_NAME

str: GEO_NAME.

GEO_TYPE

str: GEO_TYPE.

LAYER

int: LAYER.

MATERIAL_ID

Get and set the MATERIAL_IDs of the mesh.

MATERIAL_ID_flat

Get flat version of the MATERIAL_IDs of the mesh.

NODES

ndarray: (n,3) NODES of the mesh by its xyz-coordinates.

NODE_NO

int: number of NODES.

PCS_TYPE

str: PCS_TYPE.

block

int: The actual block to access in the file.

block_no

int: The number of blocks in the file.

center

Get the mesh center.

centroids

Get the centroids of the mesh.

centroids_flat

Get flat version of the centroids of the mesh.

file_name

str: base name of the file with extension.

file_path

str: save path of the file.

force_writing

bool: state if the file is written even if empty.

is_empty

State if file is empty.

name

str: name of the file without extension.

node_centroids

Get the node centroids of the mesh.

node_centroids_flat

Get flat version of the node centroids of the mesh.

volumes

Get the volumes of the mesh-elements.

volumes_flat

Get flat version of the volumes of the mesh-elements.

Methods

__call__(self) Get a copy of the underlying dictionary.
add_copy_link(self, path[, symlink]) Add a link to copy a file instead of writing.
check(self[, verbose]) Check if the mesh is valid.
combine_mesh(self, ext_mesh, \*\*kwargs) Combine this mesh with an external mesh.
del_copy_link(self) Remove a former given link to an external file.
export_mesh(self, filepath[, verbose]) Export the mesh to an unstructured mesh in diffrent file-formats.
generate(self[, generator]) Use a mesh-generator from the generator module.
get_file_type(self) Get the OGS file class name.
import_mesh(self, filepath, \*\*kwargs) Import an external unstructured mesh from diffrent file-formats.
load(self, filepath, \*\*kwargs) Load an OGS5 mesh from file.
read_file(self, path[, encoding, verbose]) Load an OGS5 mesh from file.
remove_dim(self, remove) Remove elements by given dimensions from a mesh.
reset(self) Delete every content.
rotate(self, angle[, rotation_axis, …]) Rotate a given mesh around a given rotation axis with a given angle.
save(self, path, \*\*kwargs) Save the mesh to an OGS5 mesh file.
set_dict(self, mesh_dict) Set an mesh as returned by tools methods or generators.
set_material_id(self[, material_id, …]) Set material IDs by the corresponding element IDs.
shift(self, vector) Shift a given mesh with a given vector.
show(self[, show_cell_data, …]) Display the mesh colored by its material ID.
swap_axis(self[, axis1, axis2]) Swap axis of the coordinate system.
transform(self, xyz_func, \*\*kwargs) Transform a given mesh with a given function “xyz_func”.
write_file(self) Write the actual OGS input file to the given folder.
__call__(self)

Get a copy of the underlying dictionary.

Add a link to copy a file instead of writing.

Instead of writing a file, you can give a path to an existing file, that will be copied/linked to the target folder.

Parameters:
  • path (str) – path to the existing file that should be copied
  • symlink (bool, optional) – on UNIX systems it is possible to use a symbolic link to save time if the file is big. Default: False
check(self, verbose=True)

Check if the mesh is valid.

Checked in the sence, that the contained data is consistent. Checks for correct element definitions or Node duplicates are not carried out.

Parameters:verbose (bool, optional) – Print information for the executed checks. Default: True
Returns:result – Validity of the given mesh.
Return type:bool
combine_mesh(self, ext_mesh, **kwargs)

Combine this mesh with an external mesh.

The node list will be updated to eliminate duplicates. Element intersections are not checked. kwargs will be forwarded to “tools.combine”

Parameters:
  • ext_mesh (mesh, dict or file) – This is the mesh that should be added to the existing one.
  • decimals (int, optional) – Number of decimal places to round the nodes to (default: 3). This will not round the output, it is just for comparison of the node vectors.
  • fast (bool, optional) – If fast is True, the vector comparison is executed by a decimal comparison. If fast is False, all pairwise distances are calculated. Default: False

Remove a former given link to an external file.

export_mesh(self, filepath, verbose=False, **kwargs)

Export the mesh to an unstructured mesh in diffrent file-formats.

kwargs will be forwarded to “tools.export_mesh”

Parameters:
  • filepath (string) – path to the file to export
  • file_format (str, optional) – Here you can specify the fileformat. If ‘None’ it will be determined by file extension. Default: None
  • export_material_id (bool, optional) – Here you can specify if the material_id should be exported. Default: True
  • export_element_id (bool, optional) – Here you can specify if the element_id should be exported. Default: True
  • cell_data_by_id (ndarray or dict, optional) – Here you can specify additional element data sorted by their IDs. It can be a dictionary with data-name as key and the ndarray as value. Default: None
  • point_data (ndarray or dict, optional) – Here you can specify additional point data sorted by their IDs. It can be a dictionary with data-name as key and the ndarray as value. Default: None
  • field_data (ndarray or dict, optional) – Here you can specify additional field data of the mesh. It can be a dictionary with data-name as key and the ndarray as value. Default: None

Notes

This routine calls the ‘write’ function from the meshio package and converts the input (see here: https://github.com/nschloe/meshio)

generate(self, generator='rectangular', **kwargs)

Use a mesh-generator from the generator module.

See: ogs5py.fileclasses.msh.generator

Parameters:
  • generator (str) – set the generator from the generator module
  • **kwargs – kwargs will be forwarded to the generator in use

Notes

The following generators are available:

rectangular([dim, mesh_origin, element_no, …]) Generate a rectangular grid in 2D or 3D.
radial([dim, mesh_origin, angles, rad, z_arr]) Generate a radial grid in 2D or 3D.
grid_adapter2D([out_dim, in_dim, out_res, …]) Generate a grid adapter.
grid_adapter3D([out_dim, in_dim, z_dim, …]) Generate a grid adapter.
block_adapter3D([xy_dim, z_dim, in_res]) Generate a block adapter.
gmsh(geo_object[, import_dim]) Generate mesh from pygmsh Geometry instance, gmsh code or gmsh .geo file.
get_file_type(self)

Get the OGS file class name.

import_mesh(self, filepath, **kwargs)

Import an external unstructured mesh from diffrent file-formats.

kwargs will be forwarded to “tools.import_mesh”

Parameters:
  • filepath (string) – path to the mesh file to import
  • file_format (str, optional) – Here you can specify the fileformat. If ‘None’ it will be determined by file extension. Default: None
  • ignore_unknown (bool, optional) – Unknown data in the file will be ignored. Default: False
  • import_dim (iterable of int, optional) – State which elements should be imported by dimensionality. Can be used to sort out unneeded elements for example from gmsh. Default: (1, 2, 3)

Notes

This routine calls the ‘read’ function from the meshio package and converts the output (see here: https://github.com/nschloe/meshio) If there is any “vertex” (0D element) in the element data, it will be removed.

load(self, filepath, **kwargs)

Load an OGS5 mesh from file.

kwargs will be forwarded to “tools.load_ogs5msh”

Parameters:
  • filepath (string) – path to the ‘*.msh’ OGS5 mesh file to load
  • verbose (bool, optional) – Print information of the reading process. Default: True
  • ignore_unknown (bool, optional) – Unknown data in the file will be ignored. Default: False
  • max_node_no (int, optional) – If you know the maximal node number per elements in the mesh file, you can optimise the reading a bit. By default the algorithm will assume hexahedrons as ‘largest’ elements in the mesh. Default: 8
  • encoding (str or None, optional) – encoding of the given file. If None is given, the system standard is used. Default: None

Notes

The $AREA keyword within the Nodes definition is NOT supported and will violate the read data if present.

read_file(self, path, encoding=None, verbose=False)

Load an OGS5 mesh from file.

Parameters:
  • path (str) – path to the ‘*.msh’ OGS5 mesh file to load
  • encoding (str or None, optional) – encoding of the given file. If None is given, the system standard is used. Default: None
  • verbose (bool, optional) – Print information of the reading process. Default: True
remove_dim(self, remove)

Remove elements by given dimensions from a mesh.

Parameters:remove (iterable of int or single int) – State which elements should be removed by dimensionality (1, 2, 3).
reset(self)

Delete every content.

rotate(self, angle, rotation_axis=(0.0, 0.0, 1.0), rotation_point=(0.0, 0.0, 0.0))

Rotate a given mesh around a given rotation axis with a given angle.

Parameters:
  • angle (float) – rotation angle given in radial length
  • rotation_axis (array_like, optional) – Array containing the vector for ratation axis. Default: (0,0,1)
  • rotation_point (array_like, optional) – Vector of the ratation base point. Default:(0,0,0)
save(self, path, **kwargs)

Save the mesh to an OGS5 mesh file.

kwargs will be forwarded to “tools.save_ogs5msh”

Parameters:
  • path (string) – path to the ‘*.msh’ OGS5 mesh file to save
  • verbose (bool, optional) – Print information of the writing process. Default: True
set_dict(self, mesh_dict)

Set an mesh as returned by tools methods or generators.

Mesh will be checked for validity.

Parameters:mesh_dict (dict or None, optional) –

Contains one ‘#FEM_MSH’ block of an OGS5 mesh file with the following information (sorted by keys):

mesh_data : dict
dictionary containing information about
  • AXISYMMETRY (bool)
  • CROSS_SECTION (bool)
  • PCS_TYPE (str)
  • GEO_TYPE (str)
  • GEO_NAME (str)
  • LAYER (int)
nodes : ndarray
Array with all node postions
elements : dict
contains nodelists for elements sorted by element types
material_id : dict
contains material ids for each element sorted by types
element_id : dict
contains element ids for each element sorted by types
set_material_id(self, material_id=0, element_id=None, element_mask=None)

Set material IDs by the corresponding element IDs.

Parameters:
  • material_id (int or ndarray, optional) – The new material IDs. Either one value or an array. Default: 0
  • element_id (ndarray or None, optional) – The corresponding element IDs, where to set the material IDs. If None, all elements are assumed and the material IDs are added by their index. Default: None
  • element_mask (ndarray or None, optional) – Instead of the element IDs, one can specify a mask to select the element IDs. Default: None
shift(self, vector)

Shift a given mesh with a given vector.

Parameters:vector (ndarray) – array containing the shifting vector
show(self, show_cell_data=None, show_material_id=False, show_element_id=False, log_scale=False)

Display the mesh colored by its material ID.

Parameters:
  • show_cell_data (ndarray or dict, optional) – Here you can specify additional element/cell data sorted by their IDs. It can be a dictionary with data-name as key and the ndarray as value. Default: None
  • show_material_id (bool, optional) – Here you can specify if the material_id should be shown. Default: False
  • show_element_id (bool, optional) – Here you can specify if the element_id should be shown. Default: False
  • log_scale (bool, optional) – State if the cell_data should be shown in log scale. Default: False

Notes

This routine needs “mayavi” to display the mesh. (see here: https://github.com/enthought/mayavi)

swap_axis(self, axis1='y', axis2='z')

Swap axis of the coordinate system.

Parameters:
  • axis1 (str or int, optional) – First selected Axis. Either in [“x”, “y”, “z”] or in [0, 1, 2]. Default: “y”
  • axis2 (str or int, optional) – Second selected Axis. Either in [“x”, “y”, “z”] or in [0, 1, 2]. Default: “z”
transform(self, xyz_func, **kwargs)

Transform a given mesh with a given function “xyz_func”.

kwargs will be forwarded to “xyz_func”.

Parameters:xyz_func (function) – the function transforming the points: x_new, y_new, z_new = f(x_old, y_old, z_old, **kwargs)
write_file(self)

Write the actual OGS input file to the given folder.

Its path is given by “task_root+task_id+file_ext”.

AXISYMMETRY

AXISYMMETRY attribute.

Type:bool
CROSS_SECTION

CROSS_SECTION attribute.

Type:bool
ELEMENTS

Get and set the ELEMENTS of the mesh.

Notes

Type : dict of ndarrays

The elements are a dictionary sorted by their element-type

“line” : ndarray of shape (n_line,2)
1D element with 2 nodes
“tri” : ndarray of shape (n_tri,3)
2D element with 3 nodes
“quad” : ndarray of shape (n_quad,4)
2D element with 4 nodes
“tet” : ndarray of shape (n_tet,4)
3D element with 4 nodes
“pyra” : ndarray of shape (n_pyra,5)
3D element with 5 nodes
“pris” : ndarray of shape (n_pris,6)
3D element with 6 nodes
“hex” : ndarray of shape (n_hex,8)
3D element with 8 nodes
ELEMENT_ID

Get and set the ELEMENT_IDs of the mesh.

Standard element id order is given by:

“line” “tri” “quad” “tet” “pyra” “pris” “hex”

Notes

Type : dict of ndarrays

The element IDs are a dictionary containing ints sorted by their element-type

“line” : ndarray of shape (n_line,)
1D element with 2 nodes
“tri” : ndarray of shape (n_tri,)
2D element with 3 nodes
“quad” : ndarray of shape (n_quad,)
2D element with 4 nodes
“tet” : ndarray of shape (n_tet,)
3D element with 4 nodes
“pyra” : ndarray of shape (n_pyra,)
3D element with 5 nodes
“pris” : ndarray of shape (n_pris,)
3D element with 6 nodes
“hex” : ndarray of shape (n_hex,)
3D element with 8 nodes
ELEMENT_NO

number of ELEMENTS.

Type:int
ELEMENT_TYPES

ELEMENT types of the mesh.

Type:set
GEO_NAME

GEO_NAME.

Type:str
GEO_TYPE

GEO_TYPE.

Type:str
LAYER

LAYER.

Type:int
MATERIAL_ID

Get and set the MATERIAL_IDs of the mesh.

Notes

Type : dict of ndarrays

The material IDs are a dictionary containing ints sorted by their element-type

“line” : ndarray of shape (n_line,)
1D element with 2 nodes
“tri” : ndarray of shape (n_tri,)
2D element with 3 nodes
“quad” : ndarray of shape (n_quad,)
2D element with 4 nodes
“tet” : ndarray of shape (n_tet,)
3D element with 4 nodes
“pyra” : ndarray of shape (n_pyra,)
3D element with 5 nodes
“pris” : ndarray of shape (n_pris,)
3D element with 6 nodes
“hex” : ndarray of shape (n_hex,)
3D element with 8 nodes
MATERIAL_ID_flat

Get flat version of the MATERIAL_IDs of the mesh.

See “mesh.MATERIAL_ID” This flattend MATERIAL_IDs are a stacked version of MATERIAL_ID, to get one continous array. They are stacked in order of the ELEMENT_IDs. Standard stack order is given by:

“line” “tri” “quad” “tet” “pyra” “pris” “hex”

Notes

Type : ndarray
The centroids are a list containing xyz-coordiantes
NODES

(n,3) NODES of the mesh by its xyz-coordinates.

Type:ndarray
NODE_NO

number of NODES.

Type:int
PCS_TYPE

PCS_TYPE.

Type:str
block

The actual block to access in the file.

Type:int
block_no

The number of blocks in the file.

Type:int
center

Get the mesh center.

centroids

Get the centroids of the mesh.

Notes

Type : dict of ndarrays

The centroids are a dictionary containing xyz-coordiantes sorted by their element-type

“line” : ndarray of shape (n_line,3)
1D element with 2 nodes
“tri” : ndarray of shape (n_tri,3)
2D element with 3 nodes
“quad” : ndarray of shape (n_quad,3)
2D element with 4 nodes
“tet” : ndarray of shape (n_tet,3)
3D element with 4 nodes
“pyra” : ndarray of shape (n_pyra,3)
3D element with 5 nodes
“pris” : ndarray of shape (n_pris,3)
3D element with 6 nodes
“hex” : ndarray of shape (n_hex,3)
3D element with 8 nodes
centroids_flat

Get flat version of the centroids of the mesh.

See the “mesh.get_centroids” method. This flattend centroids are a stacked version of centroids, to get one continous array. They are stacked in order of the element ids. Standard stack order is given by:

“line” “tri” “quad” “tet” “pyra” “pris” “hex”

Notes

Type : ndarray
The centroids are a list containing xyz-coordiantes
file_name

base name of the file with extension.

Type:str
file_path

save path of the file.

Type:str
force_writing

state if the file is written even if empty.

Type:bool
is_empty

State if file is empty.

name

name of the file without extension.

Type:str
node_centroids

Get the node centroids of the mesh.

Notes

Type : dict of ndarrays

The centroids are a dictionary containing xyz-coordiantes sorted by their element-type

“line” : ndarray of shape (n_line,3)
1D element with 2 nodes
“tri” : ndarray of shape (n_tri,3)
2D element with 3 nodes
“quad” : ndarray of shape (n_quad,3)
2D element with 4 nodes
“tet” : ndarray of shape (n_tet,3)
3D element with 4 nodes
“pyra” : ndarray of shape (n_pyra,3)
3D element with 5 nodes
“pris” : ndarray of shape (n_pris,3)
3D element with 6 nodes
“hex” : ndarray of shape (n_hex,3)
3D element with 8 nodes
node_centroids_flat

Get flat version of the node centroids of the mesh.

See the “mesh.get_centroids” method. This flattend centroids are a stacked version of centroids, to get one continous array. They are stacked in order of the element ids. Standard stack order is given by:

“line” “tri” “quad” “tet” “pyra” “pris” “hex”

Notes

Type : ndarray
The centroids are a list containing xyz-coordiantes
volumes

Get the volumes of the mesh-elements.

Notes

Type : dict of ndarrays

The volumes are a dictionary containing the n-dimension volumes sorted by their element-type

“line” : ndarray of shape (n_line,3)
1D element with 2 nodes
“tri” : ndarray of shape (n_tri,3)
2D element with 3 nodes
“quad” : ndarray of shape (n_quad,3)
2D element with 4 nodes
“tet” : ndarray of shape (n_tet,3)
3D element with 4 nodes
“pyra” : ndarray of shape (n_pyra,3)
3D element with 5 nodes
“pris” : ndarray of shape (n_pris,3)
3D element with 6 nodes
“hex” : ndarray of shape (n_hex,3)
3D element with 8 nodes
volumes_flat

Get flat version of the volumes of the mesh-elements.

This flattend volumes are a stacked version of centroids, to get one continous array. They are stacked in order of the element ids. Standard stack order is given by:

“line” “tri” “quad” “tet” “pyra” “pris” “hex”

Notes

Type : ndarray
The volumes are a list containing the n-dimensional element volume