def test_of_correlation_function_addition(self):
        """(CorrelationFunction) Testing addition of CorrelationFunction objects """
        
        t = TimeAxis(0.0, 1000, 1.0)
        params1 = dict(ftype="OverdampedBrownian",
                       reorg = 30.0,
                       cortime = 100.0,
                       T = 300.0)
        params2 = dict(ftype="OverdampedBrownian",
                       reorg = 40.0,
                       cortime = 100.0,
                       T = 300.0)
        
        with energy_units("1/cm"):
            f1 = CorrelationFunction(t, params1)
            f2 = CorrelationFunction(t, params2)
        
        #
        # normal addition
        #
        f = f1 + f2
        
        sum_data = f1.data + f2.data
        sum_lamb = f1.lamb + f2.lamb
        sum_cutoff = max(f1.cutoff_time, f2.cutoff_time)
        sum_temp = f1.temperature
        
        self.assertEqual(f.lamb, sum_lamb)
        numpy.testing.assert_allclose(f.data, sum_data)
        self.assertEqual(f.cutoff_time, sum_cutoff)
        self.assertEqual(f.temperature, sum_temp)
        
        #self.assertFalse(f.is_analytical())
        self.assertTrue(f._is_composed)
        self.assertFalse(f._is_empty)
        
        
        #
        # inplace addition by function
        #
        f1.add_to_data(f2)
        
        self.assertEqual(f1.lamb, sum_lamb)
        numpy.testing.assert_allclose(f1.data, sum_data)       
        self.assertEqual(f1.cutoff_time, sum_cutoff)  
        self.assertEqual(f1.temperature, sum_temp)

        #self.assertFalse(f1.is_analytical())
        self.assertTrue(f1._is_composed)
        self.assertFalse(f1._is_empty)
        
        #
        # inplace addition by += operator
        #
        with energy_units("1/cm"):        
            f1 = CorrelationFunction(t, params1) # new object  
        fs = f1
        f1 += f2

        self.assertEqual(f1.lamb, sum_lamb)
        numpy.testing.assert_allclose(f1.data, sum_data)
        self.assertEqual(f1.cutoff_time, sum_cutoff)
        self.assertEqual(f1.temperature, sum_temp)  
        
        #self.assertFalse(f1.is_analytical())
        self.assertTrue(f1._is_composed)
        self.assertFalse(f1._is_empty)
        
        # test if inplace addition really happend
        self.assertEqual(fs, f1)
Пример #2
0
# System-bath interaction
#
tsbi = TimeAxis(0.0, 3 * Nr, 2.0)
params = dict(ftype="OverdampedBrownian", T=300, reorg=70.0, cortime=100.0)
with energy_units('1/cm'):
    cf = CorrelationFunction(tsbi, params)

params2 = dict(ftype="UnderdampedBrownian",
               T=300,
               reorg=10.0,
               freq=150.0,
               gamma=1.0 / 10000.0)
with energy_units('1/cm'):
    cf2 = CorrelationFunction(tsbi, params2)

cf.add_to_data(cf2)

#
# Set system-bath interaction
#
mol1.set_transition_environment((0, 1), cf)
mol2.set_transition_environment((0, 1), cf)

#
# Creating aggregate
#
agg = Aggregate("Dimer", molecules=[mol1, mol2])
agg.set_coupling_by_dipole_dipole()
with energy_units("1/cm"):
    print(agg.get_resonance_coupling(0, 1))
agg.build(mult=2)
Пример #3
0
lab.set_laser_polarizations(a_0,a_0,a_0,a_0)

#
# System-bath interaction
#      
tsbi = TimeAxis(0.0, 3*Nr, 2.0)
params = dict(ftype="OverdampedBrownian", T=300, reorg=70.0, cortime=100.0)
with energy_units('1/cm'):
    cf = CorrelationFunction(tsbi, params)
    
params2 = dict(ftype="UnderdampedBrownian", T=300, reorg=10.0, freq=150.0,
               gamma=1.0/10000.0)
with energy_units('1/cm'):
    cf2 = CorrelationFunction(tsbi, params2)
    
cf.add_to_data(cf2)

#
# Set system-bath interaction
#
mol1.set_transition_environment((0,1),cf)
mol2.set_transition_environment((0,1),cf)

#
# Creating aggregate
#      
agg = Aggregate(name="Dimer", molecules=[mol1, mol2])
agg.set_coupling_by_dipole_dipole()
with energy_units("1/cm"):
    print(agg.get_resonance_coupling(0,1))
agg.build(mult=2)