td_calc.hamiltonian.poisson.set_kick(kick) # Attach InducedFields to the calculation frequencies = [2.05, 4.0] width = 0.15 cl_ind = FDTDInducedField(paw=td_calc, frequencies=frequencies, width=width) qm_ind = TDDFTInducedField(paw=td_calc, frequencies=frequencies, width=width) # Propagate TDDFT and FDTD td_calc.propagate(time_step, iterations // 2, 'dm.dat', 'td.gpw') td_calc.write('td.gpw', 'all') cl_ind.write('cl.ind') qm_ind.write('qm.ind') td_calc = None cl_ind.paw = None qm_ind.paw = None cl_ind = None qm_ind = None # Restart td_calc = TDDFT('td.gpw') cl_ind = FDTDInducedField(filename='cl.ind', paw=td_calc) qm_ind = TDDFTInducedField(filename='qm.ind', paw=td_calc) td_calc.propagate(time_step, iterations // 2, 'dm.dat', 'td.gpw') td_calc.write('td.gpw', 'all') cl_ind.write('cl.ind') qm_ind.write('qm.ind') # Test ref_cl_dipole_moment = [5.25374117e-14, 5.75811267e-14, 3.08349334e-02] ref_qm_dipole_moment = [1.78620337e-11, -1.57782578e-11, 5.21368300e-01]
frequencies = [1.0, 2.08] # Frequencies of interest in eV folding = 'Gauss' # Folding function width = 0.1 # Line width for folding in eV ind = TDDFTInducedField(paw=td_calc, frequencies=frequencies, folding=folding, width=width, restart_file='na2_td.ind') # Propagate as usual td_calc.propagate(time_step, iterations // 2, 'na2_td_dm.dat', 'na2_td.gpw') # Save TDDFT and InducedField objects td_calc.write('na2_td.gpw', mode='all') ind.write('na2_td.ind') ind.paw = None # Restart and continue td_calc = TDDFT('na2_td.gpw') # Load and attach InducedField object ind = TDDFTInducedField(filename='na2_td.ind', paw=td_calc, restart_file='na2_td.ind') # Continue propagation as usual td_calc.propagate(time_step, iterations // 2, 'na2_td_dm.dat', 'na2_td.gpw') # Calculate induced electric field ind.calculate_induced_field(gridrefinement=2, from_density='comp',
folding = 'Gauss' # Folding function width = 0.1 # Line width for folding in eV ind = TDDFTInducedField(paw=td_calc, frequencies=frequencies, folding=folding, width=width, restart_file='na2_td.ind') # Propagate as usual td_calc.propagate(time_step, iterations/2, 'na2_td_dm.dat', 'na2_td.gpw') # Save TDDFT and InducedField objects td_calc.write('na2_td.gpw', mode='all') ind.write('na2_td.ind') ind.paw = None # Restart and continue td_calc = TDDFT('na2_td.gpw') # Load and attach InducedField object ind = TDDFTInducedField(filename='na2_td.ind', paw=td_calc, restart_file='na2_td.ind') # Continue propagation as usual td_calc.propagate(time_step, iterations/2, 'na2_td_dm.dat', 'na2_td.gpw') # Calculate induced electric field ind.calculate_induced_field(gridrefinement=2, from_density='comp')