@@ -220,6 +220,30 @@ def apply_solvent_correction(self, solvent):
220220 from rmgpy .data .rmg import get_db
221221 solvation_database = get_db ('solvation' )
222222 solvent_data = solvation_database .get_solvent_data (solvent )
223+
224+
225+ if isinstance (self .kinetics , Marcus ):
226+ solvent_struct = solvation_database .get_solvent_structure (solvent )[0 ]
227+ solv_solute_data = solvation_database .get_solute_data (solvent_struct .copy (deep = True ))
228+ Rsolv = math .pow ((75 * solv_solute_data .V / constants .pi / constants .Na ),
229+ (1.0 / 3.0 )) / 100
230+ Rtot = 0.0
231+ Ner = 0
232+ Nep = 0
233+ for spc in self .reactants :
234+ spc_solute_data = solvation_database .get_solute_data (spc .copy (deep = True ))
235+ spc_solute_data .set_mcgowan_volume (spc )
236+ R = math .pow ((75 * spc_solute_data .V / constants .pi / constants .Na ),
237+ (1.0 / 3.0 )) / 100
238+ Rtot += R
239+ Ner += spc .get_net_charge ()
240+ for spc in self .products :
241+ Nep += spc .get_net_charge ()
242+
243+ Rtot += Rsolv #radius of reactants plus first solvation shell
244+ self .lmbd_o = constants .Na * (constants .e * (Nep - Ner ))** 2 / (8.0 * constants .pi * constants .epsilon_0 * Rtot )* (1.0 / solvent_data .n ** 2 - 1.0 / solvent_data .eps )
245+ return
246+
223247 site_data = to_soluteTSdata (self .kinetics .solute )
224248
225249 #compute x from gas phase
@@ -237,7 +261,10 @@ def apply_solvent_correction(self, solvent):
237261 except Exception :
238262 logging .error ("Problem with product {!r} in reaction {!s}" .format (reactant , self ))
239263 raise
264+
265+ GTS = self .kinetics .Ea .value_si + GR
240266
267+ #x = abs(GTS - GR) / (abs(GP - GTS) + abs(GR - GTS))
241268 dGrxn = GP - GR
242269 if dGrxn > 0 :
243270 x = 1.0
0 commit comments