def test_tempo_bad_input(): start_time = -0.3 end_time = 0.84 correlation_function = lambda t: (np.cos(6.0*t)+1j*np.sin(6.0*t)) \ * np.exp(-12.0*t) correlations = tempo.CustomCorrelations(correlation_function, max_correlation_time=0.5) bath = tempo.Bath(0.5 * tempo.operators.sigma("z"), correlations) tempo_param = tempo.PtTempoParameters(0.1, 5, 1.0e-5, name="rough-A") tempo.PtTempo(bath=bath, parameters=tempo_param, start_time=start_time, end_time=end_time) with pytest.raises(AssertionError): tempo.PtTempo(bath=bath, parameters=tempo_param, start_time="bla", end_time=end_time) with pytest.raises(AssertionError): tempo.PtTempo(bath=bath, parameters=tempo_param, start_time=start_time, end_time="bla") with pytest.raises(AssertionError): tempo.PtTempo(bath=bath, parameters=tempo_param, start_time=0.0, end_time=0.0001)
def test_tempo_bad_input(): start_time = -0.3 end_time = 0.84 system = tempo.System(0.5 * tempo.operators.sigma("x")) correlation_function = lambda t: (np.cos(6.0*t)+1j*np.sin(6.0*t)) \ * np.exp(-12.0*t) correlations = tempo.CustomCorrelations(correlation_function, max_correlation_time=0.5) bath = tempo.Bath(0.5 * tempo.operators.sigma("z"), correlations) initial_state = tempo.operators.spin_dm("z+") tempo_param_A = tempo.TempoParameters(0.1, 5, 1.0e-5, name="rough-A") with pytest.raises(AssertionError): tempo_sys_A = tempo.Tempo(system=system, bath=bath, parameters=tempo_param_A, initial_state="bla", start_time=start_time) with pytest.raises(AssertionError): tempo_sys_A = tempo.Tempo(system=system, bath=bath, parameters=tempo_param_A, initial_state=initial_state, start_time="bla") tempo_sys_A = tempo.Tempo(system=system, bath=bath, parameters=tempo_param_A, initial_state=initial_state, start_time=start_time) with pytest.raises(AssertionError): tempo_sys_A.compute(end_time="bla", progress_type="bar")
def test_pt_tempo(): start_time = -0.3 end_time = 0.84 system = tempo.System(0.5 * tempo.operators.sigma("x")) correlation_function = lambda t: (np.cos(6.0*t)+1j*np.sin(6.0*t)) \ * np.exp(-12.0*t) correlations = tempo.CustomCorrelations(correlation_function, max_correlation_time=0.5) bath = tempo.Bath(0.5 * tempo.operators.sigma("z"), correlations) initial_state = tempo.operators.spin_dm("z+") tempo_param_A = tempo.PtTempoParameters(0.1, 5, 1.0e-5, name="rough-A") pt_tempo_sys_A = tempo.PtTempo(bath=bath, parameters=tempo_param_A, start_time=start_time, end_time=end_time) assert pt_tempo_sys_A.dimension == 2 pt_tempo_sys_A.compute() pt_A = pt_tempo_sys_A.get_process_tensor() assert len(pt_A.times) == 12 tempo_param_B = tempo.PtTempoParameters(0.1, None, 1.0e-5, name="rough-B") pt_tempo_sys_B = tempo.PtTempo(bath=bath, parameters=tempo_param_B, start_time=start_time, end_time=end_time) pt_B = pt_tempo_sys_B.get_process_tensor()
def test_tempo(): start_time = -0.3 end_time1 = 0.4 end_time2 = 0.6 end_time3 = 0.84 system = tempo.System(0.5 * tempo.operators.sigma("x")) correlation_function = lambda t: (np.cos(6.0*t)+1j*np.sin(6.0*t)) \ * np.exp(-12.0*t) correlations = tempo.CustomCorrelations(correlation_function, max_correlation_time=0.5) bath = tempo.Bath(0.5 * tempo.operators.sigma("z"), correlations) initial_state = tempo.operators.spin_dm("z+") tempo_param_A = tempo.TempoParameters(0.1, 5, 1.0e-5, name="rough-A") tempo_sys_A = tempo.Tempo(system=system, bath=bath, parameters=tempo_param_A, initial_state=initial_state, start_time=start_time) assert tempo_sys_A.dimension == 2 tempo_sys_A.compute(end_time=end_time1, progress_type="bar") tempo_sys_A.compute(end_time=end_time2, progress_type="silent") tempo_sys_A.compute(end_time=end_time3, progress_type="simple") dyn_A = tempo_sys_A.get_dynamics() assert len(dyn_A.times) == 13
def test_plot_correlations_with_parameters(): correlation_function = lambda t: (np.cos(t) + 1j * np.sin(6.0 * t) ) * np.exp(-2.0 * t) correlations = tempo.CustomCorrelations(correlation_function, max_correlation_time=10.0) param = tempo.TempoParameters(dt=0.1, dkmax=50, epsrel=3.9e-8) tempo.helpers.plot_correlations_with_parameters(correlations, param)
def test_guess_pt_tempo_parameters(): correlation_function = lambda t: (np.cos(t) + 1j * np.sin(6.0 * t) ) * np.exp(-2.0 * t) correlations = tempo.CustomCorrelations(correlation_function, max_correlation_time=10.0) bath = tempo.Bath(0.5 * tempo.operators.sigma("z"), correlations) with pytest.warns(UserWarning): param = tempo.guess_pt_tempo_parameters(bath=bath, start_time=0.0, end_time=15.0)
def test_tempo_compute(): start_time = -0.3 end_time = 0.84 correlation_function = lambda t: (np.cos(6.0*t)+1j*np.sin(6.0*t)) \ * np.exp(-12.0*t) correlations = tempo.CustomCorrelations(correlation_function, max_correlation_time=0.5) bath = tempo.Bath(0.5 * tempo.operators.sigma("z"), correlations) initial_state = tempo.operators.spin_dm("z+") with pytest.warns(UserWarning): pt_A = tempo.pt_tempo_compute(bath=bath, start_time=start_time, end_time=end_time)
def test_guess_tempo_parameters(): system = tempo.System(0.5 * tempo.operators.sigma("x")) correlation_function = lambda t: (np.cos(t) + 1j * np.sin(6.0 * t) ) * np.exp(-2.0 * t) correlations = tempo.CustomCorrelations(correlation_function, max_correlation_time=10.0) bath = tempo.Bath(0.5 * tempo.operators.sigma("z"), correlations) with pytest.warns(UserWarning): param = tempo.guess_tempo_parameters(bath=bath, start_time=0.0, end_time=15.0) with pytest.raises(AssertionError): # bad start time input param = tempo.guess_tempo_parameters(bath=bath, start_time="bla", end_time=15.0) with pytest.raises(AssertionError): # bad end time input param = tempo.guess_tempo_parameters(bath=bath, start_time=0.0, end_time="bla") with pytest.raises(ValueError): # bad start/end time (swapped) param = tempo.guess_tempo_parameters(bath=bath, start_time=10.0, end_time=0.0) with pytest.raises(AssertionError): # bad tollerance param = tempo.guess_tempo_parameters(bath=bath, start_time=0.0, end_time=15.0, tollerance="bla") with pytest.raises(AssertionError): # bad tollerance (negative) param = tempo.guess_tempo_parameters(bath=bath, start_time=0.0, end_time=15.0, tollerance=-0.2) with pytest.warns(UserWarning): # reach MAX_DKMAX param = tempo.guess_tempo_parameters(bath=bath, start_time=0.0, end_time=15.0, tollerance=1.0e-12)