feat: Adds fast calc expressions
All checks were successful
gitea-physics/pdme/pipeline/head This commit looks good

This commit is contained in:
2022-03-06 13:38:07 -06:00
parent 2d773df725
commit 08559110be
2 changed files with 53 additions and 0 deletions

33
pdme/util/fast_v_calc.py Normal file
View File

@@ -0,0 +1,33 @@
import numpy
import logging
_logger = logging.getLogger(__name__)
def fast_vs_for_dipoles(dot_inputs: numpy.ndarray, dipoles: numpy.ndarray) -> numpy.ndarray:
'''
No error correction here baby.
'''
ps = dipoles[:, 0:3]
ss = dipoles[:, 3:6]
ws = dipoles[:, 6]
_logger.debug(f"ps: {ps}")
_logger.debug(f"ss: {ss}")
_logger.debug(f"ws: {ws}")
rs = dot_inputs[:, 0:3]
fs = dot_inputs[:, 3]
diffses = rs - ss[:, None]
_logger.debug(f"diffses: {diffses}")
norms = numpy.linalg.norm(diffses, axis=2)**3
_logger.debug(f"norms: {norms}")
ases = (numpy.einsum('...ji, ...i', diffses, ps) / norms)**2
_logger.debug(f"ases: {ases}")
bses = (1 / numpy.pi) * (ws[:, None] / (fs**2 + ws[:, None]**2))
_logger.debug(f"bses: {bses}")
return ases * bses