Skip to content

Commit 4423912

Browse files
adding more tests
1 parent e7d57f6 commit 4423912

20 files changed

+513
-86
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
PROGRAM main
2+
USE easifemBase
3+
IMPLICIT NONE
4+
INTEGER(I4B), ALLOCATABLE :: intvec1(:)
5+
REAL(DFP), ALLOCATABLE :: realvec1(:)
6+
7+
CALL Append(intvec1, 1)
8+
CALL OK(ALL(intvec1 .EQ. [1]), "Append single ENTRY")
9+
10+
CALL Append(intvec1, [2, 3])
11+
CALL OK(ALL(intvec1 .EQ. [1, 2, 3]), "Append a vector")
12+
13+
CALL Append(realvec1, 1.0_DFP)
14+
CALL OK(ALL(realvec1 .EQ. [1.0_DFP]), "Append single ENTRY")
15+
16+
CALL Append(realvec1, [2.0_DFP, 3.0_DFP])
17+
CALL OK(ALL(realvec1 .EQ. [1.0_DFP, 2.0_DFP, 3.0_DFP]), "Append a vector")
18+
19+
DEALLOCATE (intvec1, realvec1)
20+
END PROGRAM main

docs/docs-api/AppendUtility/examples/_Append_test_1.md

+10-8
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
<!-- markdownlint-disable MD041 MD013 MD033 -->
2+
13
```fortran
24
PROGRAM main
35
USE easifemBase
@@ -9,29 +11,29 @@ PROGRAM main
911
Now lets us append a single ENTRY to a vector of integers.
1012

1113
```fortran
12-
CALL Append(intvec1, 1)
13-
CALL OK( ALL(intvec1 .EQ. [1]), "Append single ENTRY" )
14+
CALL Append(intvec1, 1)
15+
CALL OK( ALL(intvec1 .EQ. [1]), "Append single ENTRY" )
1416
```
1517

1618
Appending a vector to a vector.
1719

1820
```fortran
19-
CALL Append(intvec1, [2,3])
20-
CALL OK( ALL(intvec1 .EQ. [1,2,3]), "Append a vector" )
21+
CALL Append(intvec1, [2,3])
22+
CALL OK( ALL(intvec1 .EQ. [1,2,3]), "Append a vector" )
2123
```
2224

2325
Now lets us append a single real value to realvec.
2426

2527
```fortran
26-
CALL Append(realvec1, 1.0_DFP)
27-
CALL OK( ALL(realvec1 .EQ. [1.0_DFP]), "Append single ENTRY" )
28+
CALL Append(realvec1, 1.0_DFP)
29+
CALL OK( ALL(realvec1 .EQ. [1.0_DFP]), "Append single ENTRY" )
2830
```
2931

3032
Appending vector to a vector.
3133

3234
```fortran
33-
CALL Append(realvec1, [2.0_DFP,3.0_DFP])
34-
CALL OK( ALL(realvec1 .EQ. [1.0_DFP,2.0_DFP,3.0_DFP]), "Append a vector" )
35+
CALL Append(realvec1, [2.0_DFP,3.0_DFP])
36+
CALL OK( ALL(realvec1 .EQ. [1.0_DFP,2.0_DFP,3.0_DFP]), "Append a vector" )
3537
```
3638

3739
Cleanup

docs/docs-api/Domain/examples/_Initiate_test_1.F90

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ PROGRAM main
66
TYPE(Domain_) :: dom
77
TYPE(HDF5File_) :: meshfile
88
CHARACTER(*), PARAMETER :: filename= &
9-
& "../../Mesh/examples/meshdata/small_mesh_3d.h5"
9+
"../../Mesh/examples/meshdata/small_mesh_3d.h5"
1010
CALL meshfile%Initiate(filename, mode="READ")
1111
CALL meshfile%Open()
1212
CALL dom%Initiate(meshfile, '')

docs/docs-api/Domain/examples/_Initiate_test_1.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1+
<!-- markdownlint-disable MD041 MD013 MD033 -->
2+
13
```fortran
24
PROGRAM main
35
USE easifemBase
46
USE easifemClasses
7+
58
IMPLICIT NONE
9+
610
TYPE(Domain_) :: dom
711
TYPE(HDF5File_) :: meshfile
812
CHARACTER(*), PARAMETER :: filename= &
9-
& "../../Mesh/examples/meshdata/small_mesh_3d.h5"
13+
"../../Mesh/examples/meshdata/small_mesh_3d.h5"
1014
1115
CALL meshfile%Initiate(filename, mode="READ")
1216
CALL meshfile%Open()
+37
Original file line numberDiff line numberDiff line change
@@ -1 +1,38 @@
11
# GetMeshPointer
2+
3+
<!-- markdownlint-disable MD041 MD013 MD033 -->
4+
5+
This function returns the mesh pointer stored in the domain.
6+
7+
## Interface
8+
9+
<Tabs>
10+
<TabItem value="interface" label="Interface" default>
11+
12+
```fortran
13+
INTERFACE
14+
MODULE FUNCTION Domain_GetMeshPointer1(obj, dim, entityNum) RESULT(Ans)
15+
CLASS(Domain_), INTENT(IN) :: obj
16+
INTEGER(I4B), INTENT(IN) :: dim
17+
!! dimension of mesh entity
18+
INTEGER(I4B), INTENT(IN) :: entityNum
19+
!! entity number
20+
CLASS(Mesh_), POINTER :: ans
21+
END FUNCTION Domain_GetMeshPointer1
22+
END INTERFACE
23+
```
24+
25+
</TabItem>
26+
27+
<TabItem value="example" label="example">
28+
29+
import EXAMPLE10 from "./examples/_GetMeshPointer_test_1.md";
30+
31+
<EXAMPLE10 />
32+
33+
</TabItem>
34+
35+
<TabItem value="close" label="↢ close">
36+
37+
</TabItem>
38+
</Tabs>

docs/docs-api/FEDomain/examples/_GetMeshPointer_test_1.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
<!-- markdownlint-disable MD041 MD013 MD033 -->
2+
13
```fortran
24
PROGRAM main
35
USE easifemBase
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
1-
21
PROGRAM main
3-
USE easifemBase
4-
USE easifemClasses
5-
IMPLICIT NONE
6-
TYPE( FEMesh_ ) :: obj
7-
TYPE( HDF5File_ ) :: meshfile
8-
INTEGER( I4B ), ALLOCATABLE :: nptrs( :, : )
2+
USE easifemBase
3+
USE easifemClasses
4+
IMPLICIT NONE
5+
TYPE(FEMesh_) :: obj
6+
TYPE(HDF5File_) :: meshfile
7+
INTEGER(I4B), ALLOCATABLE :: elem2elem(:, :)
98
CHARACTER(*), PARAMETER :: filename="../../Mesh/examples/meshdata/small_mesh.h5"
10-
! Initiate and open the mesh file which is in [[HDF5File_]] format. Then, create an instance of mesh.
11-
CALL meshfile%Initiate(filename, "READ" )
12-
CALL meshfile%Open()
13-
CALL obj%Initiate(hdf5=meshfile, group="/surfaceEntities_1" )
9+
! Initiate and open the mesh file which is in [[HDF5File_]] format. Then, create an instance of mesh.
10+
CALL meshfile%Initiate(filename, "READ")
11+
CALL meshfile%OPEN()
12+
CALL obj%Initiate(hdf5=meshfile, group="/surfaceEntities_1")
1413

15-
nptrs = obj%GetElementToElements( globalElement=23, onlyElements=.FALSE. )
16-
CALL Display( nptrs, "Element connected to iel=23")
14+
elem2elem = obj%GetElementToElements(globalElement=23, onlyElements=.FALSE.)
15+
CALL Display(elem2elem, "Element connected to iel=23")
1716

18-
nptrs = obj%GetElementToElements( globalElement=23, onlyElements=.TRUE. )
19-
CALL Display( nptrs, "Element connected to iel=23")
17+
elem2elem = obj%GetElementToElements(globalElement=23, onlyElements=.TRUE.)
18+
CALL Display(elem2elem, "Element connected to iel=23")
2019

21-
CALL obj%Deallocate()
22-
CALL meshfile%Close()
23-
CALL meshfile%Deallocate()
20+
CALL obj%DEALLOCATE()
21+
CALL meshfile%CLOSE()
22+
CALL meshfile%DEALLOCATE()
2423
END PROGRAM main
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
PROGRAM main
2+
USE easifemBase
3+
USE easifemClasses
4+
5+
IMPLICIT NONE
6+
7+
CHARACTER(*), PARAMETER :: filename = "./meshdata/small_mesh.h5"
8+
INTEGER(I4B), ALLOCATABLE :: elem2elem(:, :)
9+
INTEGER(I4B) :: globalElement, ii
10+
TYPE(ElemData_) :: elemdata1, elemdata2
11+
TYPE(FEMesh_) :: obj
12+
TYPE(HDF5File_) :: meshfile
13+
LOGICAL(LGT) :: isok
14+
15+
CALL e%setQuietMode(EXCEPTION_INFORMATION, .TRUE.)
16+
CALL meshfile%Initiate(filename, "READ")
17+
CALL meshfile%OPEN()
18+
CALL obj%Initiate(hdf5=meshfile, group="/surfaceEntities_1")
19+
20+
globalElement = 23
21+
elem2elem = obj%GetElementToElements(globalElement=globalElement, &
22+
onlyElements=.FALSE.)
23+
CALL Display(elem2elem, "Element connected to iel="//tostring(globalElement))
24+
CALL obj%GetElemData(globalElement=globalElement, elemdata=elemdata1, &
25+
islocal=.FALSE.)
26+
CALL Blanklines(nol=2)
27+
28+
CALL ElemData_Display(elemdata1, "elemdata: ")
29+
30+
DO ii = 1, SIZE(elem2elem, 1)
31+
32+
globalElement = elem2elem(ii, 1)
33+
CALL obj%GetElemData(globalElement=globalElement, elemdata=elemdata2, &
34+
islocal=.FALSE.)
35+
36+
isok = elemdata1%globalFaces(elem2elem(ii, 2)) &
37+
.EQ. elemdata2%globalFaces(elem2elem(ii, 3))
38+
CALL OK(isok, "GetElementToElements test-a : ")
39+
40+
isok = (elemdata1%faceOrient(1, elem2elem(ii, 2)) &
41+
+ elemdata2%faceOrient(1, elem2elem(ii, 3))) .EQ. 0
42+
CALL OK(isok, "GetElementToElements test-b : ")
43+
44+
END DO
45+
46+
CALL obj%DEALLOCATE()
47+
CALL meshfile%CLOSE()
48+
CALL meshfile%DEALLOCATE()
49+
END PROGRAM main
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
<!-- markdownlint-disable MD041 MD013 MD033 -->
2+
3+
```fortran
4+
PROGRAM main
5+
USE easifemBase
6+
USE easifemClasses
7+
IMPLICIT NONE
8+
CHARACTER(*), PARAMETER :: filename = "./meshdata/small_mesh.h5"
9+
INTEGER(I4B), ALLOCATABLE :: elem2elem(:, :)
10+
INTEGER(I4B) :: globalElement
11+
TYPE(ElemData_) :: elemdata
12+
TYPE(FEMesh_) :: obj
13+
TYPE(HDF5File_) :: meshfile
14+
15+
CALL e%setQuietMode(EXCEPTION_INFORMATION, .TRUE.)
16+
CALL meshfile%Initiate(filename, "READ")
17+
CALL meshfile%OPEN()
18+
CALL obj%Initiate(hdf5=meshfile, group="/surfaceEntities_1")
19+
20+
elem2elem = obj%GetElementToElements(globalElement=23, onlyElements=.FALSE.)
21+
CALL Display(elem2elem, "Element connected to iel=23")
22+
CALL obj%GetElemData(globalElement=23, elemdata=elemdata, islocal=.FALSE.)
23+
CALL ElemData_Display(elemdata, "elemdata: ")
24+
25+
CALL Blanklines(nol=2)
26+
globalElement = 22
27+
elem2elem = obj%GetElementToElements(globalElement=globalElement, &
28+
onlyElements=.FALSE.)
29+
CALL Display(elem2elem, "Element connected to iel="// &
30+
tostring(globalElement))
31+
CALL obj%GetElemData(globalElement=globalElement, elemdata=elemdata, &
32+
islocal=.FALSE.)
33+
CALL ElemData_Display(elemdata, "elemdata: ")
34+
35+
CALL obj%DEALLOCATE()
36+
CALL meshfile%CLOSE()
37+
CALL meshfile%DEALLOCATE()
38+
END PROGRAM main
39+
```
40+
41+
```bash title="results"
42+
Element connected to iel=23
43+
---------------------------
44+
22 1 2
45+
26 2 3
46+
25 3 1
47+
elemdata:
48+
isActive: TRUE
49+
globalElemNum: 23
50+
localElemNum: 11
51+
elementType:INTERNAL_ELEMENT
52+
elementName:Triangle3
53+
globalNodes:
54+
-------------
55+
9
56+
10
57+
11
58+
globalEdges:
59+
-------------
60+
22
61+
23
62+
24
63+
edgeOrient:
64+
------------
65+
1
66+
1
67+
1
68+
globalElements:
69+
----------------
70+
22
71+
1
72+
2
73+
26
74+
2
75+
3
76+
25
77+
3
78+
1
79+
boundaryData:
80+
--------------
81+
82+
83+
Element connected to iel=22
84+
---------------------------
85+
20 1 3
86+
23 2 1
87+
14 3 2
88+
elemdata:
89+
isActive: TRUE
90+
globalElemNum: 22
91+
localElemNum: 10
92+
elementType:INTERNAL_ELEMENT
93+
elementName:Triangle3
94+
globalNodes:
95+
-------------
96+
9
97+
8
98+
10
99+
globalEdges:
100+
-------------
101+
20
102+
22
103+
5
104+
edgeOrient:
105+
------------
106+
-1
107+
1
108+
1
109+
globalElements:
110+
----------------
111+
20
112+
1
113+
3
114+
23
115+
2
116+
1
117+
14
118+
3
119+
2
120+
boundaryData:
121+
--------------
122+
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
PROGRAM main
2+
USE easifemBase
3+
USE easifemClasses
4+
5+
IMPLICIT NONE
6+
7+
CHARACTER(*), PARAMETER :: filename = "./meshdata/small_mesh.h5"
8+
INTEGER(I4B), ALLOCATABLE :: elem2elem(:, :)
9+
INTEGER(I4B) :: globalElement
10+
TYPE(ElemData_) :: elemdata1, elemdata2
11+
TYPE(FEMesh_) :: obj
12+
TYPE(HDF5File_) :: meshfile
13+
14+
CALL e%setQuietMode(EXCEPTION_INFORMATION, .TRUE.)
15+
CALL meshfile%Initiate(filename, "READ")
16+
CALL meshfile%OPEN()
17+
CALL obj%Initiate(hdf5=meshfile, group="/surfaceEntities_1")
18+
19+
globalElement = 23
20+
elem2elem = obj%GetElementToElements(globalElement=globalElement, &
21+
onlyElements=.FALSE.)
22+
CALL Display(elem2elem, "Element connected to iel="//tostring(globalElement))
23+
CALL obj%GetElemData(globalElement=globalElement, elemdata=elemdata1, &
24+
islocal=.FALSE.)
25+
! CALL ElemData_Display(elemdata1, "elemdata: ")
26+
CALL Blanklines(nol=2)
27+
28+
DO ii = 1, SIZE(elem2elem, 1)
29+
30+
globalElement = elem2elem(1, ii)
31+
! elem2elem = obj%GetElementToElements(globalElement=globalElement, &
32+
! onlyElements=.FALSE.)
33+
! CALL Display(elem2elem, "Element connected to iel="// &
34+
! tostring(globalElement))
35+
CALL obj%GetElemData(globalElement=globalElement, elemdata=elemdata, &
36+
islocal=.FALSE.)
37+
! CALL ElemData_Display(elemdata, "elemdata: ")
38+
39+
END DO
40+
41+
CALL obj%DEALLOCATE()
42+
CALL meshfile%CLOSE()
43+
CALL meshfile%DEALLOCATE()
44+
END PROGRAM main

0 commit comments

Comments
 (0)