Initiate
Inheritence
This method is inherited from the AbstractMesh class.
Initiate
Initiate an instance of Mesh.
Interface
INTERFACE
MODULE SUBROUTINE obj_Initiate(obj, hdf5, group)
CLASS(Mesh_), INTENT(INOUT) :: obj
!! mesh object
TYPE(HDF5File_), INTENT(INOUT) :: hdf5
!! Mesh file in hdf5 file format
CHARACTER(*), INTENT(IN) :: group
!! location in HDF5 file
END SUBROUTINE obj_Initiate
END INTERFACE
Examples
Converting mesh from Gmsh to easifem format
Click here to see example
This example shows how to convert a mesh from Gmsh format to HDF5 format which is necessary to initiate the FEMesh object.
PROGRAM main
USE MSHFile_Class
USE HDF5File_Class
USE GlobalData
IMPLICIT NONE
TYPE(MSHFile_) :: mshFile
TYPE(HDF5File_) :: hdf5file
CHARACTER(*), PARAMETER :: filename = "./meshdata/small_tri3_mesh"
CALL mshFile%Initiate(filename=filename//".msh", STATUS="OLD", ACTION="READ")
CALL mshFile%OPEN()
CALL mshFile%READ()
CALL hdf5file%Initiate(filename//".h5", MODE="NEW")
CALL hdf5file%OPEN()
CALL mshFile%Export(hdf5=hdf5file, group="")
CALL mshFile%DEALLOCATE()
CALL hdf5file%DEALLOCATE()
END PROGRAM main
Initiate 2D mesh
Examples
Read a two dimensional mesh of quadrangle elements.
!> author: Vikas Sharma, Ph. D.
! date: 2025-05-30
! summary: Read a 2D quadrangle mesh with two regions from an HDF5 file
PROGRAM main
USE FEMesh_Class, only: FEMesh_
USE HDF5File_Class, only: HDF5File_
USE GlobalData, ONLY: I4B
USE Test_Method, ONLY: OK
IMPLICIT NONE
TYPE(FEMesh_) :: obj
TYPE(HDF5File_) :: meshfile
CHARACTER(LEN=*), PARAMETER :: filename = &
"./meshdata/very_small_quad4_mesh_two_region.h5"
INTEGER(I4B), PARAMETER :: nsd = 2
INTEGER(I4B), PARAMETER :: entities(2) = [1, 2]
CALL meshfile%Initiate(FileName=filename, MODE="READ")
CALL meshfile%OPEN()
CALL obj%Initiate(hdf5=meshfile, dim=nsd, entities=entities)
CALL OK(.TRUE., "Initiate")
CALL obj%DEALLOCATE()
CALL meshfile%DEALLOCATE()
END PROGRAM main
Initaite 3D mesh
Examples
In this example, we will read a 3D mesh of hexahedral elements with two regions.
PROGRAM main
USE FEMesh_Class
USE HDF5File_Class
USE GlobalData
USE Test_Method
IMPLICIT NONE
TYPE(FEMesh_) :: obj
TYPE(HDF5File_) :: meshfile
CHARACTER(LEN=*), PARAMETER :: filename = &
"./meshdata/very_small_hexa8_mesh_two_region.h5"
INTEGER(I4B), PARAMETER :: nsd = 3
CALL meshfile%Initiate(FileName=filename, MODE="READ")
CALL meshfile%OPEN()
CALL obj%Initiate(hdf5=meshfile, dim=nsd)
CALL obj%DisplayMeshInfo("Mesh information: ")
CALL OK(.TRUE., "Initiate_4")
CALL obj%DEALLOCATE()
CALL meshfile%DEALLOCATE()
END PROGRAM main
Additional examples
- Example 3
- Example 4
- Example 6
Read a 2D mesh of quadrangle elements with two regions.
!> author: Vikas Sharma, Ph. D.
! date: 2025-05-30
! summary: Read a 2D quadrangle mesh with two regions from an HDF5 file
!
!# Introduction
!
! This program reads a 2D quadrangle mesh with two regions from an HDF5 file.
! It will read all the entities of a given dimension (nsd) from the file.
PROGRAM main
USE FEMesh_Class
USE HDF5File_Class
USE GlobalData
USE Test_Method
IMPLICIT NONE
TYPE(FEMesh_) :: obj
TYPE(HDF5File_) :: meshfile
CHARACTER(LEN=*), PARAMETER :: filename = &
"./meshdata/very_small_quad4_mesh_two_region.h5"
INTEGER(I4B), PARAMETER :: nsd = 2
CALL meshfile%Initiate(FileName=filename, MODE="READ")
CALL meshfile%OPEN()
! Read all the entities of dim = nsd
CALL obj%Initiate(hdf5=meshfile, dim=nsd)
CALL obj%DisplayMeshInfo("Mesh information: ")
CALL OK(.TRUE., "Initiate")
! CALL obj%Display("")
CALL obj%DEALLOCATE()
CALL meshfile%DEALLOCATE()
END PROGRAM main
Read a 3D mesh with two regions from an HDF5 file. We specify the entities to be read from the file.
!> author: Vikas Sharma, Ph. D.
! date: 2025-05-30
! summary: Read a 3D mesh with two regions from an HDF5 file.
! We specify the entities to be read from the file.
PROGRAM main
USE FEMesh_Class
USE HDF5File_Class
USE GlobalData
USE Test_Method
IMPLICIT NONE
TYPE(FEMesh_) :: obj
TYPE(HDF5File_) :: meshfile
CHARACTER(LEN=*), PARAMETER :: filename = &
"./meshdata/very_small_hexa8_mesh_two_region.h5"
INTEGER(I4B), PARAMETER :: nsd = 3
INTEGER(I4B), PARAMETER :: entities(2) = [1, 2]
CALL meshfile%Initiate(FileName=filename, MODE="READ")
CALL meshfile%OPEN()
CALL obj%Initiate(hdf5=meshfile, dim=nsd, entities=entities)
CALL obj%DisplayMeshInfo("Mesh information: ")
! CALL obj%Display("")
CALL ok(.TRUE., "Initiate_5")
CALL obj%DEALLOCATE()
CALL meshfile%DEALLOCATE()
END PROGRAM main
Benchmarking for initiating the mesh.
!> author: Vikas Sharma, Ph. D.
! date: 2025-05-30
! summary: Benchmark the initiate methods
PROGRAM main
USE FEMesh_Class
USE HDF5File_Class
USE GlobalData
USE Test_Method
USE ExceptionHandler_Class, ONLY: e, EXCEPTION_INFORMATION
IMPLICIT NONE
TYPE(FEMesh_) :: obj
TYPE(HDF5File_) :: meshfile
CHARACTER(*), PARAMETER :: filename = "./meshdata/big_tri3_mesh.h5"
INTEGER(I4B), PARAMETER :: nsd = 2
CHARACTER(*), PARAMETER :: testname = "Benchmark Initiate Method"
CALL e%SetQuietMode(EXCEPTION_INFORMATION, .TRUE.)
CALL meshfile%Initiate(FileName=filename, MODE="READ")
!Open the mesh file
CALL meshfile%OPEN()
CALL obj%SetShowTime(.TRUE.)
!Initiate an instance of `Mesh_`
CALL obj%Initiate(hdf5=meshfile, dim=nsd)
!Display the content of mesh.
CALL obj%DisplayMeshInfo(filename)
CALL ok(.TRUE., testname)
CALL obj%DEALLOCATE()
CALL meshfile%DEALLOCATE()
END PROGRAM main