ogs5py.fileclasses.MSH

class ogs5py.fileclasses.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_datadict

    dictionary containing information about

    • AXISYMMETRY (bool)

    • CROSS_SECTION (bool)

    • PCS_TYPE (str)

    • GEO_TYPE (str)

    • GEO_NAME (str)

    • LAYER (int)

    nodesndarray

    Array with all node postions

    elementsdict

    contains nodelists for elements sorted by element types

    material_iddict

    contains material ids for each element sorted by element types

    element_iddict

    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__()

Get a copy of the underlying dictionary.

add_copy_link(path[, symlink])

Add a link to copy a file instead of writing.

check([verbose])

Check if the mesh is valid.

combine_mesh(ext_mesh, **kwargs)

Combine this mesh with an external mesh.

del_copy_link()

Remove a former given link to an external file.

export_mesh(filepath[, verbose])

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

generate([generator])

Use a mesh-generator from the generator module.

get_file_type()

Get the OGS file class name.

import_mesh(filepath, **kwargs)

Import an external unstructured mesh from diffrent file-formats.

load(filepath, **kwargs)

Load an OGS5 mesh from file.

read_file(path[, encoding, verbose])

Load an OGS5 mesh from file.

remove_dim(remove)

Remove elements by given dimensions from a mesh.

reset()

Delete every content.

rotate(angle[, rotation_axis, rotation_point])

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

save(path, **kwargs)

Save the mesh to an OGS5 mesh file.

set_dict(mesh_dict)

Set an mesh as returned by tools methods or generators.

set_material_id([material_id, element_id, ...])

Set material IDs by the corresponding element IDs.

shift(vector)

Shift a given mesh with a given vector.

show([show_cell_data, show_material_id, ...])

Display the mesh colored by its material ID.

swap_axis([axis1, axis2])

Swap axis of the coordinate system.

transform(xyz_func, **kwargs)

Transform a given mesh with a given function "xyz_func".

write_file()

Write the actual OGS input file to the given folder.

__call__()

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(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(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(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(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 gmsh code or gmsh .geo file.

get_file_type()

Get the OGS file class name.

import_mesh(filepath, **kwargs)

Import an external unstructured mesh from diffrent file-formats.

kwargs will be forwarded to “tools.import_mesh”

Parameters
  • filepath (string or meshio.Mesh instance) – mesh 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(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(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(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()

Delete every content.

rotate(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(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(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_datadict

dictionary containing information about

  • AXISYMMETRY (bool)

  • CROSS_SECTION (bool)

  • PCS_TYPE (str)

  • GEO_TYPE (str)

  • GEO_NAME (str)

  • LAYER (int)

nodesndarray

Array with all node postions

elementsdict

contains nodelists for elements sorted by element types

material_iddict

contains material ids for each element sorted by types

element_iddict

contains element ids for each element sorted by types

set_material_id(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(vector)

Shift a given mesh with a given vector.

Parameters

vector (ndarray) – array containing the shifting vector

show(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(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(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()

Write the actual OGS input file to the given folder.

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

property AXISYMMETRY

AXISYMMETRY attribute.

Type

bool

property CROSS_SECTION

CROSS_SECTION attribute.

Type

bool

property ELEMENTS

Get and set the ELEMENTS of the mesh.

Notes

Typedict 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

property 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

Typedict 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

property ELEMENT_NO

number of ELEMENTS.

Type

int

property ELEMENT_TYPES

ELEMENT types of the mesh.

Type

set

property GEO_NAME

GEO_NAME.

Type

str

property GEO_TYPE

GEO_TYPE.

Type

str

property LAYER

LAYER.

Type

int

property MATERIAL_ID

Get and set the MATERIAL_IDs of the mesh.

Notes

Typedict 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

property 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

Typendarray

The centroids are a list containing xyz-coordiantes

property NODES

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

Type

ndarray

property NODE_NO

number of NODES.

Type

int

property PCS_TYPE

PCS_TYPE.

Type

str

property block

The actual block to access in the file.

Type

int

property block_no

The number of blocks in the file.

Type

int

property center

Get the mesh center.

property centroids

Get the centroids of the mesh.

Notes

Typedict 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

property 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

Typendarray

The centroids are a list containing xyz-coordiantes

property file_name

base name of the file with extension.

Type

str

property file_path

save path of the file.

Type

str

property force_writing

state if the file is written even if empty.

Type

bool

property is_empty

State if file is empty.

property name

name of the file without extension.

Type

str

property node_centroids

Get the node centroids of the mesh.

Notes

Typedict 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

property 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

Typendarray

The centroids are a list containing xyz-coordiantes

property volumes

Get the volumes of the mesh-elements.

Notes

Typedict 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

property 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

Typendarray

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