forked from gacevedobolton/myVTKPythonLibrary
-
Notifications
You must be signed in to change notification settings - Fork 0
/
computeSystolicStrainsFromEndDiastolicAndEndSystolicStates.py
65 lines (51 loc) · 2.4 KB
/
computeSystolicStrainsFromEndDiastolicAndEndSystolicStates.py
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
#coding=utf8
########################################################################
### ###
### Created by Martin Genet, 2012-2016 ###
### ###
### University of California at San Francisco (UCSF), USA ###
### Swiss Federal Institute of Technology (ETH), Zurich, Switzerland ###
### École Polytechnique, Palaiseau, France ###
### ###
########################################################################
import numpy
import myVTKPythonLibrary as myVTK
from mat_vec_tools import *
########################################################################
def computeSystolicStrainsFromEndDiastolicAndEndSystolicStates(
farray_F_dia,
farray_F_sys,
verbose=0):
myVTK.myPrint(verbose, "*** computeSystolicStrainsFromEndDiastolicAndEndSystolicStates ***")
n_tuples = farray_F_dia.GetNumberOfTuples()
assert (farray_F_sys.GetNumberOfTuples() == n_tuples)
farray_E_dia = myVTK.createFloatArray('E_dia', 6, n_tuples)
farray_E_sys = myVTK.createFloatArray('E_sys', 6, n_tuples)
farray_F_num = myVTK.createFloatArray('F_num', 6, n_tuples)
farray_E_num = myVTK.createFloatArray('E_num', 6, n_tuples)
I = numpy.eye(3)
E_vec = numpy.empty(6)
for k_tuple in xrange(n_tuples):
F_dia = numpy.reshape(farray_F_dia.GetTuple(k_tuple), (3,3), order='C')
F_sys = numpy.reshape(farray_F_sys.GetTuple(k_tuple), (3,3), order='C')
#print 'F_dia =', F_dia
#print 'F_sys =', F_sys
C = numpy.dot(numpy.transpose(F_dia), F_dia)
E = (C - I)/2
mat_sym33_to_vec_col6(E, E_vec)
farray_E_dia.SetTuple(k_tuple, E_vec)
C = numpy.dot(numpy.transpose(F_sys), F_sys)
E = (C - I)/2
mat_sym33_to_vec_col6(E, E_vec)
farray_E_sys.SetTuple(k_tuple, E_vec)
F = numpy.dot(F_sys, numpy.linalg.inv(F_dia))
farray_F_num.SetTuple(k_tuple, numpy.reshape(F, 9, order='C'))
#print 'F =', F
C = numpy.dot(numpy.transpose(F), F)
E = (C - I)/2
mat_sym33_to_vec_col6(E, E_vec)
farray_E_num.SetTuple(k_tuple, E_vec)
return (farray_E_dia,
farray_E_sys,
farray_F_num,
farray_E_num)