Skip to content

Commit 283fe4a

Browse files
Updates in Mesh_Class
Adding meshPointerDeallocate method to deallocate array of meshPointer.
1 parent 882bad0 commit 283fe4a

File tree

2 files changed

+54
-18
lines changed

2 files changed

+54
-18
lines changed

src/modules/Mesh/src/Mesh_Class.F90

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ MODULE Mesh_Class
4747
PUBLIC :: MeshPointer_
4848
PUBLIC :: Mesh_Pointer
4949
PUBLIC :: DEALLOCATE
50+
PUBLIC :: meshPointerDeallocate
5051
PUBLIC :: MeshDisplay
5152

5253
CHARACTER(*), PARAMETER :: modName = "Mesh_Class"
@@ -91,7 +92,7 @@ MODULE Mesh_Class
9192
!! Read mesh from hdf5 file
9293
PROCEDURE, PUBLIC, PASS(obj) :: ExportToVTK => obj_ExportToVTK
9394
!! Export mesh to a VTKfile
94-
PROCEDURE, PUBLIC, PASS(obj) :: Display => obj_display
95+
PROCEDURE, PUBLIC, PASS(obj) :: Display => obj_Display
9596
!! Display the mesh
9697
PROCEDURE, PUBLIC, PASS(obj) :: DisplayFacetElements => &
9798
& obj_DisplayFacetElements
@@ -170,7 +171,7 @@ MODULE Mesh_Class
170171
! Mesh_
171172
!----------------------------------------------------------------------------
172173

173-
! TYPE( Mesh_ ), PARAMETER, PUBLIC :: TypeMesh = Mesh_( )
174+
! TYPE(Mesh_), PARAMETER, PUBLIC :: TypeMesh = Mesh_( )
174175

175176
!----------------------------------------------------------------------------
176177
!
@@ -181,7 +182,7 @@ MODULE Mesh_Class
181182
! summary: Userdefine datatype which contains the pointer to a mesh
182183

183184
TYPE :: MeshPointer_
184-
TYPE(Mesh_), POINTER :: Ptr => NULL()
185+
TYPE(Mesh_), POINTER :: ptr => NULL()
185186
END TYPE MeshPointer_
186187

187188
!----------------------------------------------------------------------------
@@ -211,7 +212,7 @@ END SUBROUTINE obj_Final
211212
END INTERFACE
212213

213214
!----------------------------------------------------------------------------
214-
! Deallocate@Constructor
215+
! Deallocate@ConstructorMethods
215216
!----------------------------------------------------------------------------
216217

217218
!> authors: Vikas Sharma, Ph. D.
@@ -225,6 +226,21 @@ MODULE SUBROUTINE obj_Deallocate(obj)
225226
END SUBROUTINE obj_Deallocate
226227
END INTERFACE DEALLOCATE
227228

229+
!----------------------------------------------------------------------------
230+
! Deallocate@ConstructorMethods
231+
!----------------------------------------------------------------------------
232+
233+
!> authors: Vikas Sharma, Ph. D.
234+
! date: 25 March 2021
235+
! update: 2024-01-27
236+
! summary: Free up the memory stored in [[obj_]]
237+
238+
INTERFACE DEALLOCATE
239+
MODULE SUBROUTINE meshPointerDeallocate(obj)
240+
TYPE(MeshPointer_), ALLOCATABLE, INTENT(INOUT) :: obj(:)
241+
END SUBROUTINE meshPointerDeallocate
242+
END INTERFACE DEALLOCATE
243+
228244
!----------------------------------------------------------------------------
229245
! Import@IOMethods
230246
!----------------------------------------------------------------------------
@@ -489,7 +505,7 @@ END FUNCTION obj_GetFacetConnectivity2
489505
END INTERFACE
490506

491507
!----------------------------------------------------------------------------
492-
! GetQuery@GetMethods
508+
! GetQuery@GetMethods
493509
!----------------------------------------------------------------------------
494510

495511
INTERFACE
@@ -661,7 +677,7 @@ END SUBROUTINE obj_InitiateFacetElements
661677
END INTERFACE
662678

663679
!----------------------------------------------------------------------------
664-
! SetSparsity@setMethod
680+
! SetSparsity@SetMethod
665681
!----------------------------------------------------------------------------
666682

667683
!> authors: Vikas Sharma, Ph. D.
@@ -704,16 +720,12 @@ END SUBROUTINE obj_SetSparsity2
704720
END INTERFACE
705721

706722
!----------------------------------------------------------------------------
707-
! SetSparsity@setMethod
723+
! SetSparsity@SetMethods
708724
!----------------------------------------------------------------------------
709725

710726
!> authors: Vikas Sharma, Ph. D.
711727
! date: 12 Oct 2021
712728
! summary: This routine Set the sparsity pattern in [[CSRMatrix_]] object
713-
!
714-
!# Introduction
715-
!
716-
! This routine Sets the sparsity pattern in [[CSRMatrix_]] object.
717729

718730
INTERFACE
719731
MODULE SUBROUTINE obj_SetSparsity3(obj, colMesh, nodeToNode, mat, &
@@ -732,16 +744,12 @@ END SUBROUTINE obj_SetSparsity3
732744
END INTERFACE
733745

734746
!----------------------------------------------------------------------------
735-
! SetSparsity@setMethod
747+
! SetSparsity@SetMethods
736748
!----------------------------------------------------------------------------
737749

738750
!> authors: Vikas Sharma, Ph. D.
739751
! date: 12 Oct 2021
740752
! summary: This routine Set the sparsity pattern in [[CSRMatrix_]] object
741-
!
742-
!# Introduction
743-
!
744-
! This routine Sets the sparsity pattern in [[CSRMatrix_]] object.
745753

746754
INTERFACE
747755
MODULE SUBROUTINE obj_SetSparsity4(obj, colMesh, nodeToNode, mat, &
@@ -774,7 +782,7 @@ END SUBROUTINE obj_SetSparsity4
774782
!----------------------------------------------------------------------------
775783

776784
!> authors: Vikas Sharma, Ph. D.
777-
! date: 14 April 2022
785+
! date: 2022-04-14
778786
! summary: Set the facet element type of a given cell number
779787

780788
INTERFACE

src/submodules/Mesh/src/[email protected]

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
END PROCEDURE obj_Constructor_1
3939

4040
!----------------------------------------------------------------------------
41-
! Deallocate
41+
! Deallocate
4242
!----------------------------------------------------------------------------
4343

4444
MODULE PROCEDURE obj_Deallocate
@@ -58,4 +58,32 @@
5858
obj%refelem => NULL()
5959
END PROCEDURE obj_Deallocate
6060

61+
!----------------------------------------------------------------------------
62+
! meshPointerDeallocate
63+
!----------------------------------------------------------------------------
64+
65+
MODULE PROCEDURE meshPointerDeallocate
66+
CLASS(Mesh_), POINTER :: meshObj
67+
INTEGER(I4B) :: ii, tsize
68+
LOGICAL(LGT) :: isok
69+
70+
meshObj => NULL()
71+
IF (ALLOCATED(obj)) THEN
72+
tsize = SIZE(obj)
73+
74+
DO ii = 1, tsize
75+
76+
meshObj => obj(ii)%ptr
77+
isok = ASSOCIATED(meshObj)
78+
IF (isok) THEN
79+
CALL meshobj%DEALLOCATE()
80+
meshObj => NULL()
81+
END IF
82+
83+
END DO
84+
85+
DEALLOCATE (obj)
86+
END IF
87+
END PROCEDURE meshPointerDeallocate
88+
6189
END SUBMODULE ConstructorMethods

0 commit comments

Comments
 (0)