File: XdmfFortranExampleTriMesh.f90

package info (click to toggle)
xdmf 3.0%2Bgit20160803-3
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 35,388 kB
  • ctags: 36,627
  • sloc: ansic: 265,382; cpp: 162,889; python: 10,976; f90: 1,378; yacc: 687; fortran: 464; xml: 200; java: 187; lex: 125; makefile: 82; sh: 28
file content (78 lines) | stat: -rw-r--r-- 2,733 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!
!!     AUTHOR: Kenneth Leiter (kenneth.leiter@arl.army.mil)
!!
!!     Use the Xdmf Fortran Bindings to write out a simple mesh consisting of
!!     two hexahedrons.  Link against the XdmfFortran library to compile.
!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

       PROGRAM XdmfFortranExample
       
       !DEC$ ATTRIBUTES DLLIMPORT, ALIAS:'_XdmfInit'::XdmfInit
       !DEC$ ATTRIBUTES DLLIMPORT, ALIAS:'_XdmfSetGridTopology'::XdmfSetGridTopology
       !DEC$ ATTRIBUTES DLLIMPORT, ALIAS:'_XdmfSetGridGeometry'::XdmfSetGridGeometry
       !DEC$ ATTRIBUTES DLLIMPORT, ALIAS:'_XdmfSetGridAttribute'::XdmfSetGridAttribute
       !DEC$ ATTRIBUTES DLLIMPORT, ALIAS:'_XdmfAddGridAttribute'::XdmfAddGridAttribute
       !DEC$ ATTRIBUTES DLLIMPORT, ALIAS:'_XdmfWriteGrid'::XdmfWriteGrid
       !DEC$ ATTRIBUTES DLLIMPORT, ALIAS:'_XdmfWriteToFile'::XdmfWriteToFile
       !DEC$ ATTRIBUTES DLLIMPORT, ALIAS:'_XdmfSerialize'::XdmfSerialize
       !DEC$ ATTRIBUTES DLLIMPORT, ALIAS:'_XdmfClose'::XdmfClose
       
       INTEGER*8 obj
       character*256 filename
       REAL*4 myPoints(3,5)
       INTEGER myConnections(3,3)
       REAL*8  myNodeAttribute(5)
       
       filename = 'my_output'//CHAR(0)
       
       myPoints(1,1) = 0
       myPoints(2,1) = 0
       myPoints(3,1) = 0

       myPoints(1,2) = 1
       myPoints(2,2) = 2
       myPoints(3,2) = 0

       myPoints(1,3) = 2
       myPoints(2,3) = 0
       myPoints(3,3) = 0

       myPoints(1,4) = 3
       myPoints(2,4) = 2
       myPoints(3,4) = 0

       myPoints(1,5) = 4
       myPoints(2,5) = 0
       myPoints(3,5) = 0

       myConnections(1,1) = 0
       myConnections(2,1) = 1
       myConnections(3,1) = 2

       myConnections(1,2) = 2
       myConnections(2,2) = 1
       myConnections(3,2) = 3

       myConnections(1,3) = 2
       myConnections(2,3) = 3
       myConnections(3,3) = 4

       myNodeAttribute(1) = 100
       myNodeAttribute(2) = 300
       myNodeAttribute(3) = 300
       myNodeAttribute(4) = 500
       myNodeAttribute(5) = 200

       CALL XDMFINIT(obj, filename)
       CALL XDMFSETGRIDTOPOLOGY(obj, 'Triangle'//CHAR(0), 3, myConnections)
       CALL XDMFSETGRIDGEOMETRY(obj, 'XYZ'//CHAR(0), 'XDMF_FLOAT32_TYPE'//CHAR(0), 5, myPoints)
       CALL XDMFADDGRIDATTRIBUTE(obj, 'NodeValues'//CHAR(0),'XDMF_FLOAT64_TYPE'//CHAR(0), 'NODE'//CHAR(0), &
       'SCALAR'//CHAR(0), 5, myNodeAttribute)
       CALL XDMFWRITEGRID(obj, 'TestGrid'//CHAR(0))
       CALL XDMFWRITETOFILE(obj)
       CALL XDMFSERIALIZE(obj)
       CALL XDMFCLOSE(obj)
       END