Integrate random planar FODF with numerical averager
[1]:
import planarfibers
import pandas as pd
import numpy as np
[2]:
pd.set_option("display.max_columns", 100)
pd.set_option("display.width", 1000)
np.set_printoptions(linewidth=400)
[3]:
# Select random FODF: choose exact closre FODF, see equation (77) in "Fiber orientation distributions based on planar fiber orientation tensors of fourth order. Math. Mech. Solids (to appear 2022)"".
la1 = 5 / 6
odf_func = lambda phi: ((1.0 - la1) * la1) / (
2.0 * np.pi * (la1**2 + (1.0 - 2.0 * la1) * np.cos(phi) ** 2)
)
[4]:
# Select quantity which is to be averaged
quantity = planarfibers.approximation.calc_MT_UD()
print(quantity)
[[24.52696446 4.87908133 4.87908133 0. 0. 0. ]
[ 4.87908133 9.12135685 5.36895671 0. 0. 0. ]
[ 4.87908133 5.36895671 9.12135685 0. 0. 0. ]
[ 0. 0. 0. 3.75240015 0. 0. ]
[ 0. 0. 0. 0. 3.97000178 0. ]
[ 0. 0. 0. 0. 0. 3.97000178]]
[5]:
# Average
averager = planarfibers.averager.AveragerPlanar(odf_planar=odf_func)
average = averager.average(quantity)
print(average)
[[ 2.08517135e+01 5.98673099e+00 4.96072722e+00 0.00000000e+00 0.00000000e+00 8.54110020e-16]
[ 5.98673099e+00 1.05813085e+01 5.28731081e+00 0.00000000e+00 0.00000000e+00 -6.43671067e-17]
[ 4.96072722e+00 5.28731081e+00 9.12135685e+00 0.00000000e+00 0.00000000e+00 -8.74005141e-18]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.78866709e+00 1.53209539e-17 0.00000000e+00]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 5.77997479e-18 3.93373484e+00 0.00000000e+00]
[ 1.01914811e-15 -1.51996602e-16 -1.44620409e-17 0.00000000e+00 0.00000000e+00 6.18530110e+00]]