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]]