Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support and interface for anisotropic materials calculations #17

Open
2 tasks
lorisercole opened this issue May 7, 2020 · 0 comments
Open
2 tasks

Support and interface for anisotropic materials calculations #17

lorisercole opened this issue May 7, 2020 · 0 comments

Comments

@lorisercole
Copy link
Member

lorisercole commented May 7, 2020

There is interest in performing (thermal) conductivity calculations for anisotropic systems.
In general, one wants to compute the full 3x3 conductivity matrix:
equation
\begin{bmatrix} \kappa_{xx} & \kappa_{xy} & \kappa_{xz} \\ \kappa_{yx} & \kappa_{yy} & \kappa_{yz} \\ \kappa_{zx} & \kappa_{zy} & \kappa_{zz} \\ \end{bmatrix}
where
\kappa_{\alpha\beta} = \frac{1}{V k_B T} \int_0^\infty \langle J_{\alpha} (t) J_{\beta}(0) \rangle dt

Each Cartesian component (heat)-current component J_α (α=1,2,3) is not equivalent to the others, therefore one should define a HeatCurrent with one Cartesian component only.

Diagonal components

The diagonal components are readily estimated by defining a HeatCurrent for each Cartesian component, and performing cepstral analysis:

# Let's assume that a heat-current is contained in a (N, 3) numpy array (that here I define randomly for demonstration):
current = np.random.rand(N, 3)

# one should then create a HeatCurrent for each component, as they were different stochastic processes:
j1 = tc.HeatCurrent(current[:, 0], units, DT_FS, TEMPERATURE, VOLUME)
j2 = tc.HeatCurrent(current[:, 1], units, DT_FS, TEMPERATURE, VOLUME)
j3 = tc.HeatCurrent(current[:, 2], units, DT_FS, TEMPERATURE, VOLUME)
# and perform all the normal operations and cepstral analysis for each of them
j1f, ax1 = tc.heatcurrent.resample_current(j, fstar_THz=FSTAR_THZ, plot=True)
j2f, ax2 = tc.heatcurrent.resample_current(j, fstar_THz=FSTAR_THZ, plot=True)
j3f, ax3 = tc.heatcurrent.resample_current(j, fstar_THz=FSTAR_THZ, plot=True)
# ...
j1f.cepstral_analysis()
j2f.cepstral_analysis()
j3f.cepstral_analysis()

Off-diagonal components

Off-diagonal components are a more difficult subject. Similarly to the multi-component-fluid (aka multi-current) case, the distribution of the spectrum will not be a χ², but a Wishart distribution, and we have to deal with covariance matrices. This requires an extension of the theory...

Roadmap

  • Design an interface to streamline the calculation of the diagonal components of the conductivity matrix for the typical 3D anisotropic case. This interface just defines 3 HeatCurrent objects and offers its main methods.
  • Extend the theory to include off-diagonal components. The one-current case should be the easiest to deal with. The multi-current case might be quite convoluted.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant