Menu

Commit [r24301]  Maximize  Restore  History

Got rid of the inner evolution of the magnetization.

If the looping over the number of CPMG elements is given by the index l, and the initial magnetization has
been formed, then the number of times for propagation of magnetization is l = power_si_mi_di-1.
If the magnetization matrix "Mint" has the index Mint_(i,k) and the evolution matrix has the index Evol_(k,j), i=1, k=7, j=7
then the dot product is given by: Sum_{k=1}^{k} Mint_(1,k) * Evol_(k,j) = D_(1, j).
The numpy einsum formula for this would be: einsum('ik,kj -> ij', Mint, Evol)

Following evolution will be: Sum_{k=1}^{k} D_(1, j) * Evol_(k,j) = Mint_(1,k) * Evol_(k,j) * Evol_(k,j).
We can then realize, that the evolution matrix can be raised to the power l. Evol_P = Evol**l.
It will then be: einsum('ik,kj -> ij', Mint, Evol_P)

- Get which power to raise the matrix to.
l = power_si_mi_di-1

- Raise the square evolution matrix to the power l.
evolution_matrix_T_pwer_i = matrix_power(evolution_matrix_T_i, l)

Mint_T_i = dot(Mint_T_i, evolution_matrix_T_pwer_i)
or
Mint_T_i = einsum('ik,kj -> ij', Mint_T_i, evolution_matrix_T_pwer_i)

Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis.

tlinnet 2014-06-25

changed /branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py
/branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py Diff Switch to side-by-side view
Loading...
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.