def test_compare_placzek_implementation_intensities(testdir): """Intensities of different Placzek implementations should be similar""" atoms = H2Morse() name = 'placzek' rmc = ResonantRamanCalculator(atoms, H2MorseExcitedStatesCalculator, overlap=lambda x, y: x.overlap(y), name=name, txt='-') rmc.run() om = 1 gam = 0.1 pz = Placzek(atoms, H2MorseExcitedStates, name=name, txt=None) pzi = pz.get_absolute_intensities(omega=om, gamma=gam)[-1] print(pzi, 'Placzek') # Profeta using frozenset pr = Profeta(atoms, H2MorseExcitedStates, approximation='Placzek', name=name, txt=None) pri = pr.get_absolute_intensities(omega=om, gamma=gam)[-1] print(pri, 'Profeta using frozenset') assert pzi == pytest.approx(pri, 1e-3) # Profeta using overlap pr = Profeta(atoms, H2MorseExcitedStates, approximation='Placzek', overlap=True, name=name, txt=None) pro = pr.get_absolute_intensities(omega=om, gamma=gam)[-1] print(pro, 'Profeta using overlap') assert pro == pytest.approx(pri, 1e-3)
def test_overlap(): """Test equality with and without overlap""" atoms = H2Morse() name = 'profeta' name = 'rrmorse' nstates = 3 po = Profeta(atoms, H2MorseExcitedStatesAndCalculator, exkwargs={'nstates': nstates}, approximation='Placzek', overlap=lambda x, y: x.overlap(y), gsname=name, exname=name, txt='-') po.run() om = 1 poi = po.absolute_intensity(omega=om)[-1] pr = Profeta(atoms, H2MorseExcitedStatesAndCalculator, exkwargs={'nstates': nstates}, approximation='Placzek', gsname=name, exname=name, txt=None) pri = pr.absolute_intensity(omega=om)[-1] print('overlap', pri, poi, poi / pri) assert pri == pytest.approx(poi, 1e-4)
def test_compare_placzek_implementation_intensities(): """Intensities of different Placzek implementations should be similar""" atoms = H2Morse() name = 'placzek' pz = Placzek(atoms, H2MorseExcitedStatesAndCalculator, gsname=name, exname=name, txt=None) pz.run() om = 1 pzi = pz.absolute_intensity(omega=om)[-1] # Profeta using frozenset pr = Profeta(atoms, H2MorseExcitedStatesAndCalculator, approximation='Placzek', gsname=name, exname=name, txt=None) pri = pr.absolute_intensity(omega=om)[-1] assert pzi == pytest.approx(pri, 1e-3) # Profeta using overlap name = 'profeta' pr = Profeta(atoms, H2MorseExcitedStatesAndCalculator, approximation='Placzek', gsname=name, exname=name, overlap=lambda x, y: x.overlap(y), txt=None) pr.run() pro = pr.absolute_intensity(omega=om)[-1] assert pro == pytest.approx(pri, 1e-3)
def test_profeta_run(): atoms = H2Morse() name = 'profeta' pr = Profeta(atoms, H2MorseExcitedStatesAndCalculator, gsname=name, exname=name, txt='-') pr.run()
def test_placzek_run(): atoms = H2Morse() name = 'placzek' pz = Placzek(atoms, H2MorseExcitedStatesAndCalculator, gsname=name, exname=name, txt='-') pz.run()
def atoms(): return H2Morse()
from ase.calculators.h2morse import (H2Morse, H2MorseExcitedStatesCalculator) from ase.vibrations.resonant_raman import ResonantRamanCalculator atoms = H2Morse() rmc = ResonantRamanCalculator(atoms, H2MorseExcitedStatesCalculator, overlap=lambda x, y: x.overlap(y)) rmc.run()