You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I was checking the compute for the dielectric constant and I figure it out that implementation is only for a epsilon where εReaction Field =∞. According to Neumann theory (1983), this way to compute is missing +1. I think for large values like in liquid water is a good approximation.
However, what about other values? For example when εRF tends to 1 or another value.
I think we can add more cases without a lot of work. For example, dipole fluctuations could come from calc_eps0 function in a general way like this: dipoleFluctuations = calc_eps0(None,**{'d_':Dips, 'v_':V})/3.0
or modify calc_eps0 function to something like this: name and return.
dipoleFluctuations = calc_dipFluc(None,**{'d_':Dips, 'v_':V})
where return prefactor*D2/bzavg(v_,b)/T/3.0
Thus we can add three cases: εRF = ∞, εRF = 1 and εRF = ε .
Case 1: Eps0 = dipoleFluctuations*3.0 + 1.0
Case 2: Eps0 = (dipoleFluctuations*2.0 + 1.0)/(1.0-dipoleFluctuations)
Case 3: .....
Dear all,
I was checking the compute for the dielectric constant and I figure it out that implementation is only for a epsilon where εReaction Field =∞. According to Neumann theory (1983), this way to compute is missing +1. I think for large values like in liquid water is a good approximation.
https://github.com/leeping/forcebalance/blob/master/src/data/npt.py#L686:
However, what about other values? For example when εRF tends to 1 or another value.
I think we can add more cases without a lot of work. For example, dipole fluctuations could come from
calc_eps0
function in a general way like this:dipoleFluctuations = calc_eps0(None,**{'d_':Dips, 'v_':V})/3.0
or modify
calc_eps0
function to something like this: name and return.dipoleFluctuations = calc_dipFluc(None,**{'d_':Dips, 'v_':V})
where
return prefactor*D2/bzavg(v_,b)/T/3.0
Thus we can add three cases: εRF = ∞, εRF = 1 and εRF = ε .
Case 1:
Eps0 = dipoleFluctuations*3.0 + 1.0
Case 2:
Eps0 = (dipoleFluctuations*2.0 + 1.0)/(1.0-dipoleFluctuations)
Case 3: .....
And this line calls the case selected:
https://github.com/leeping/forcebalance/blob/master/src/data/npt.py#L691
But I don't know if Eps0_err will change and analytic derivative too.
https://github.com/leeping/forcebalance/blob/master/src/data/npt.py#L693
https://github.com/leeping/forcebalance/blob/master/src/data/npt.py#L703
Thank you in advance,
Anthoni
The text was updated successfully, but these errors were encountered: