File: TestXdmfFunctionRead.py

package info (click to toggle)
xdmf 3.0%2Bgit20190531-14
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,796 kB
  • sloc: cpp: 67,089; ansic: 5,172; python: 4,566; f90: 1,247; java: 187; fortran: 173; makefile: 92; sh: 28
file content (82 lines) | stat: -rw-r--r-- 2,235 bytes parent folder | download | duplicates (6)
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
79
80
81
82
from Xdmf import *

def maximum(values):
	# Need to cast to the right data type
	values = ArrayVector(values)
	if values[0].getArrayType() == XdmfArrayType.String():
		returnArray = XdmfArray.New()
		returnArray.pushBackAsString(values[0].getValueAsString(0))
		return returnArray;
	else:
		maxVal = values[0].getValueAsFloat64(0)
		for i in range (0, values.size()):
			for j in range (0, values[i].getSize()):
				if maxVal < values[i].getValueAsFloat64(j):
					maxVal = values[i].getValueAsFloat64(j)
		returnArray = XdmfArray.New()
		returnArray.pushBackAsFloat64(maxVal)
		return returnArray

def prepend(val1, val2):
	# Need to cast to the right data type
	# Had to write a custom casting method to integrate it properly
	val1 = XdmfArray.XdmfArrayPtr(val1)
	val2 = XdmfArray.XdmfArrayPtr(val2)
	returnArray = XdmfArray.New()
	returnArray.insert(0, val2, 0, val2.getSize())
	returnArray.insert(val2.getSize(), val1, 0, val1.getSize())
	return returnArray

if __name__ == "__main__":
	functionExpression = "MAX(A,B)@(A#B)"

	numOperations = XdmfFunction.addOperation('@', prepend, 2)
	numFunctions = XdmfFunction.addFunction("MAX", maximum)

	functionVariables = ArrayMap()

	variable1 = XdmfArray.New()

	for i in range (0, 15):
		variable1.pushBackAsInt32(i*3)

	functionVariables["A"] = variable1

	variable2 = XdmfArray.New()

	for i in range (0, 15):
		variable2.pushBackAsInt32(i*5)

	functionVariables["B"] = variable2

	testFunction = XdmfFunction.New(functionExpression, functionVariables)

	functionHolder = XdmfAttribute.New()

	functionHolder.setReference(testFunction)

	functionHolder.setReadMode(XdmfArray.Reference)

	functionWriter = XdmfWriter.New("function.xmf")

	functionHolder.accept(functionWriter)

	functionHolder.readReference()

	print functionHolder.getValuesString()

	functionReader = XdmfReader.New()

	readItem = functionReader.read("function.xmf")

        print readItem.getItemTag() + " ?= Attribute"

	assert readItem.getItemTag() == "Attribute"

	readFunctionHolder = readItem

	readFunctionHolder.readReference()

        print readFunctionHolder.getValuesString() + " ?= " + functionHolder.getValuesString()

	assert readFunctionHolder.getValuesString() == functionHolder.getValuesString()