@@ -55,11 +55,11 @@ class SCFSampler(SCFSamplerBase):
5555
5656 """
5757
58- def __init__ (self , pot : SCFPotential , ** kw : T .Any ) -> None :
59- self ._rsampler = SCFRSampler (pot )
58+ def __init__ (self , potential : SCFPotential , ** kw : T .Any ) -> None :
59+ self ._rsampler = SCFRSampler (potential )
6060 # not fixed r, theta. slower!
61- self ._thetasampler = SCFThetaSampler_of_r (pot , r = None )
62- self ._phisampler = SCFPhiSampler_of_rtheta (pot , r = None , theta = None )
61+ self ._thetasampler = SCFThetaSampler_of_r (potential ) # r=None
62+ self ._phisampler = SCFPhiSampler_of_rtheta (potential ) # r=None, theta=None
6363
6464 # /def
6565
@@ -89,7 +89,7 @@ def __init__(self, potential: SCFPotential, **kw: T.Any) -> None:
8989 # /def
9090
9191 def _cdf (self , r : npt .ArrayLike , * args : T .Any , ** kw : T .Any ) -> NDArray64 :
92- mass : NDArray64 = self ._pot ._mass (r )
92+ mass : NDArray64 = self ._potential ._mass (r )
9393 # (self._scfmass(zeta) - self._mi) / (self._mf - self._mi)
9494 # TODO! is this normalization even necessary?
9595 return mass
@@ -139,7 +139,7 @@ def Qls(self, r: float) -> NDArray64:
139139 Ql : ndarray
140140
141141 """
142- Qls : NDArray64 = thetaQls (self ._pot , r )
142+ Qls : NDArray64 = thetaQls (self ._potential , r )
143143 return Qls
144144
145145 # /def
@@ -212,9 +212,10 @@ def _cdf(self, theta: npt.ArrayLike, *args: T.Any) -> NDArray64:
212212
213213
214214class SCFThetaSampler_of_r (SCFThetaSamplerBase ):
215- def _cdf (self , theta : NDArray64 , * args : T .Any , r : float ) -> NDArray64 :
215+
216+ def _cdf (self , theta : NDArray64 , * args : T .Any , r : T .Optional [float ] = None ) -> NDArray64 :
216217 x = x_of_theta (theta )
217- Qlsatr = self .Qls (r )
218+ Qlsatr = self .Qls (T . cast ( float , r ) )
218219
219220 # l = 0
220221 term0 = (1.0 + x ) / 2.0
@@ -276,7 +277,26 @@ def __init__(self, potential: SCFPotential, **kw: T.Any) -> None:
276277
277278 # @functools.lru_cache()
278279 def RSms (self , r : float , theta : float ) -> T .Tuple [NDArray64 , NDArray64 ]:
279- return phiRSms (self ._pot , r , theta )
280+ return phiRSms (self ._potential , r , theta )
281+
282+ # /def
283+
284+ def _cdf (self , phi : NDArray64 , * args : T .Any , ** kw : T .Any ) -> NDArray64 :
285+ Rm = self ._Rm
286+ Sm = self ._Sm
287+
288+ # l = 0
289+ term0 : NDArray64 = phi / (2 * np .pi )
290+
291+ # l = 1+
292+ factor = 1 / Rm [0 ] # R0
293+ ms = np .arange (1 , Rm .shape [1 ] if len (Rm .shape ) > 1 else 2 )
294+ term1p = np .sum (
295+ (Rm [1 :] * np .sin (ms * phi ) + Sm [1 :] * (1 - np .cos (ms * phi ))) / (2 * np .pi * ms ),
296+ )
297+
298+ cdf : NDArray64 = term0 + factor * term1p
299+ return cdf
280300
281301 # /def
282302
@@ -302,22 +322,6 @@ def __init__(self, potential: SCFPotential, r: float, theta: float, **kw: T.Any)
302322
303323 # /def
304324
305- def _cdf (self , phi : NDArray64 , * args : T .Any , ** kw : T .Any ) -> NDArray64 :
306- Rm , Sm = self ._Rm , self ._Sm
307-
308- # l = 0
309- term0 : NDArray64 = phi / (2 * np .pi )
310-
311- # l = 1+
312- factor = 1 / Rm [0 ] # R0
313- ms = np .arange (1 , Rm .shape [1 ])
314- term1p = np .sum (
315- (Rm [1 :] * np .sin (ms * phi ) + Sm [1 :] * (1 - np .cos (ms * phi ))) / (2 * np .pi * ms ),
316- )
317-
318- cdf : NDArray64 = term0 + factor * term1p
319- return cdf
320-
321325 def cdf (self , phi : NDArray64 , * args : T .Any , ** kw : T .Any ) -> NDArray64 :
322326 return self ._cdf (phi , * args , ** kw )
323327
@@ -331,8 +335,8 @@ class SCFPhiSampler_of_rtheta(SCFPhiSamplerBase):
331335 _Rm : T .Optional [NDArray64 ]
332336 _Sm : T .Optional [NDArray64 ]
333337
334- def _cdf (self , phi : npt .ArrayLike , * args : T .Any , r : float , theta : float ) -> NDArray64 :
335- self ._Rm , self ._Sm = self .RSms (float ( r ), float ( theta ))
338+ def _cdf (self , phi : npt .ArrayLike , * args : T .Any , r : T . Optional [ float ] = None , theta : T . Optional [ float ] = None ) -> NDArray64 :
339+ self ._Rm , self ._Sm = self .RSms (T . cast ( float , r ), T . cast ( float , theta ))
336340 cdf : NDArray64 = super ()._cdf (phi , * args )
337341 self ._Rm , self ._Sm = None , None
338342 return cdf
0 commit comments