iters = 3 # test restart td_rest = TDDFT('na2_td.gpw') td_rest.propagate(time_step, iters, 'na2_dmz2.dat', 'na2_td2.gpw') # test restart td_rest = TDDFT('na2_td.gpw', solver='BiCGStab') td_rest.propagate(time_step, iters, 'na2_dmz3.dat', 'na2_td3.gpw') # test absorbing boundary conditions # linear imaginary potential td_ipabs = TDDFT('na2_td.gpw') ip_abc = LinearAbsorbingBoundary(5.0, 0.01, atoms.positions) td_ipabs.set_absorbing_boundary(ip_abc) td_ipabs.propagate(time_step, iters, 'na2_dmz4.dat', 'na2_td4.gpw') # 4th order polynomial (1-(x^2-1)^2) imaginary potential td_ip4abs = TDDFT('na2_td.gpw') ip4_abc = P4AbsorbingBoundary(5.0, 0.03, atoms.positions, 3.0) td_ip4abs.set_absorbing_boundary(ip4_abc) td_ip4abs.propagate(time_step, iters, 'na2_dmz5.dat', 'na2_td5.gpw') # perfectly matched layers td_pmlabs = TDDFT('na2_td.gpw', solver='BiCGStab') pml_abc = PML(100.0, 0.1) td_pmlabs.set_absorbing_boundary(pml_abc) td_pmlabs.propagate(time_step, iters, 'na2_dmz6.dat', 'na2_td6.gpw') # photoabsorption_spectrum('na2_dmz2.dat', 'na2_spectrum_z2.dat', width=0.3)
import numpy as np from ase import Atoms from gpaw import GPAW from gpaw.tddft import TDDFT from gpaw.tddft.abc import LinearAbsorbingBoundary from gpaw.tddft.laser import CWField atoms = Atoms('Be', [(0, 0, 0)], pbc=False) atoms.center(vacuum=6) calc = GPAW(h=0.35) atoms.set_calculator(calc) atoms.get_potential_energy() calc.write('be_gs.gpw', 'all') td_calc = TDDFT('be_gs.gpw', td_potential=CWField(1e-3, 2.0 * np.pi / 50.0, 150.0)) td_calc.set_absorbing_boundary( LinearAbsorbingBoundary(5.0, 0.01, atoms.positions.copy())) td_calc.propagate(8.0, 5, 'be_nl_dmz_ipabs_1e-3.dat', 'be_nl_td.gpw') td_rest = TDDFT('be_nl_td.gpw', td_potential=CWField(1e-3, 2.0 * np.pi / 50.0, 150.0)) td_rest.set_absorbing_boundary( LinearAbsorbingBoundary(5.0, 0.01, atoms.positions.copy())) td_rest.propagate(8.0, 5, 'be_nl_dmz_ipabs_1e-3.dat', 'be_nl_td.gpw')
iters = 3 # test restart td_rest = TDDFT('na2_td.gpw') td_rest.propagate(time_step, iters, 'na2_dmz2.dat', 'na2_td2.gpw') # test restart td_rest = TDDFT('na2_td.gpw', solver='BiCGStab') td_rest.propagate(time_step, iters, 'na2_dmz3.dat', 'na2_td3.gpw') # test absorbing boundary conditions # linear imaginary potential td_ipabs = TDDFT('na2_td.gpw') ip_abc = LinearAbsorbingBoundary(5.0, 0.01, atoms.positions) td_ipabs.set_absorbing_boundary(ip_abc) td_ipabs.propagate(time_step, iters, 'na2_dmz4.dat', 'na2_td4.gpw') # 4th order polynomial (1-(x^2-1)^2) imaginary potential td_ip4abs = TDDFT('na2_td.gpw') ip4_abc = P4AbsorbingBoundary(5.0, 0.03, atoms.positions, 3.0) td_ip4abs.set_absorbing_boundary(ip4_abc) td_ip4abs.propagate(time_step, iters, 'na2_dmz5.dat', 'na2_td5.gpw') # perfectly matched layers td_pmlabs = TDDFT('na2_td.gpw', solver='BiCGStab') pml_abc = PML(100.0, 0.1) td_pmlabs.set_absorbing_boundary(pml_abc) td_pmlabs.propagate(time_step, iters, 'na2_dmz6.dat', 'na2_td6.gpw')
from ase import Atoms from gpaw import GPAW from gpaw.tddft import TDDFT from gpaw.tddft.abc import LinearAbsorbingBoundary from gpaw.tddft.laser import CWField atoms = Atoms('Be',[(0,0,0)], pbc=False) atoms.center(vacuum=6) calc = GPAW(h=0.35) atoms.set_calculator(calc) atoms.get_potential_energy() calc.write('be_gs.gpw', 'all') td_calc = TDDFT('be_gs.gpw', td_potential = CWField(1e-3, 2.0*np.pi/50.0, 150.0)) td_calc.set_absorbing_boundary(LinearAbsorbingBoundary(5.0, 0.01, atoms.positions.copy())) td_calc.propagate(8.0, 5, 'be_nl_dmz_ipabs_1e-3.dat', 'be_nl_td.gpw') td_rest = TDDFT('be_nl_td.gpw', td_potential = CWField(1e-3, 2.0*np.pi/50.0, 150.0)) td_rest.set_absorbing_boundary(LinearAbsorbingBoundary(5.0, 0.01, atoms.positions.copy())) td_rest.propagate(8.0, 5, 'be_nl_dmz_ipabs_1e-3.dat', 'be_nl_td.gpw')