Scanning Electrochemical Microscopy (softpotato.analytical.secm)¶
The softpotato.analytical.secm module provides normalized approach curve models and feedback expressions for scanning electrochemical microscopy.
secm
¶
Analytical equations for Scanning Electrochemical Microscopy (SECM) approach curves.
This module provides closed-form analytical approximations for steady-state feedback approach curves at an inlaid circular microdisk ultramicroelectrode (UME) tip surrounded by an insulating sheath (insulator-to-electrode radius ratio \(RG = r_g / a\)).
The analytical approximations were developed by Christine Lefrou and Renaud Cornut and describe:
- Pure positive feedback over conductive substrates (diffusion-controlled mediator regeneration).
- Pure negative feedback over insulating substrates (hindered diffusion).
- Approach curves over substrates with finite/irreversible first-order redox kinetics (\(\kappa = \Lambda = k a / D\)), seamlessly interpolating between negative and positive feedback.
- Steady-state diffusion-limited current at infinite distance (\(i_{T,\infty}\)) and dimensional tip current (\(i_T\)) in Amperes.
Functions:
| Name | Description |
|---|---|
secm_approach_positive_feedback |
Normalized steady-state tip current over conductive substrates (positive feedback). |
secm_approach_negative_feedback |
Normalized steady-state tip current over insulating substrates (negative feedback). |
secm_approach_curve |
Normalized steady-state tip current for arbitrary substrate kinetics (\(\kappa \ge 0\)). |
secm_limiting_current_infinite |
Saito steady-state diffusion-limited current at infinite distance (\(i_{T,\infty}\)). |
secm_tip_current |
Dimensional steady-state tip current in Amperes (\(i_T = I_T \cdot i_{T,\infty}\)). |
Conventions & Units
- Normalized distance: \(L = d / a\) (\(L > 0\)), where \(d\) is the tip-substrate separation distance and \(a\) is the electroactive microdisk radius.
- Insulator ratio: \(RG = r_g / a\) (\(RG > 1\)), where \(r_g\) is the total radius including the surrounding glass insulator sheath.
- Normalized current: \(I_T = i_T / i_{T,\infty}\), where \(i_{T,\infty} = 4 n F D c^* a\) is the steady-state diffusion-limited current in bulk solution (\(L \to \infty\)).
- Substrate kinetics parameter: \(\kappa = \Lambda = \frac{k a}{D}\) (\(\kappa \ge 0\)), where \(k\) is the heterogeneous first-order rate constant at the substrate, \(a\) is the microdisk radius, and \(D\) is the diffusion coefficient of the mediator.
Standard IUPAC sign conventions are applied for dimensional current: - Cathodic (reduction) currents are negative (\(I < 0\)). - Anodic (oxidation) currents are positive (\(I > 0\)).
References
- R. Cornut, C. Lefrou, "New analytical approximation of feedback approach curves with a microdisk SECM tip and irreversible kinetic reaction at the substrate", J. Electroanal. Chem., 621 (2008) 178–184.
- R. Cornut, C. Lefrou, "A unified new analytical approximation for negative feedback currents with a microdisk SECM tip", J. Electroanal. Chem., 608 (2007) 59–66.
- C. Lefrou, "A unified new analytical approximation for positive feedback currents with a microdisk SECM tip", J. Electroanal. Chem., 592 (2006) 103–112.
- C. Lefrou, R. Cornut, "Analytical Expressions for Quantitative Scanning Electrochemical Microscopy (SECM)", ChemPhysChem, 11 (2010) 547–556.
- Y. Saito, "A theoretical study on the diffusion current at the stationary spherical and disc electrodes", Rev. Polarogr., 15 (1968) 177–187.
secm_approach_positive_feedback
¶
secm_approach_positive_feedback(L: float | ArrayLike, RG: float | ArrayLike = 10.0) -> float | np.ndarray
Compute normalized steady-state tip current for positive feedback SECM.
Calculates the normalized steady-state tip current \(I_T^{\text{cond}}(L, RG)\) at an inlaid microdisk ultramicroelectrode approaching a conductive substrate under pure diffusion-controlled mediator regeneration, using the analytical approximation of Cornut and Lefrou (2008):
where \(\alpha(RG)\) and \(\beta(RG)\) are geometric coefficients defined by:
As \(L \to \infty\), \(I_T^{\text{cond}} \to 1.0\) exactly for all \(RG\). As \(L \to 0\), \(I_T^{\text{cond}} \sim \frac{\pi}{4 \beta(RG) L} \to \infty\).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
L
|
float or array - like
|
Normalized tip-to-substrate distance \(L = d / a\) (\(L > 0\)). |
required |
RG
|
float or array - like
|
Insulator radius ratio \(RG = r_g / a\) (\(RG > 1\)). |
10.0
|
Returns:
| Type | Description |
|---|---|
float or ndarray
|
Normalized tip current \(I_T = i_T / i_{T,\infty}\) (dimensionless, \(I_T > 1\)). |
Raises:
| Type | Description |
|---|---|
ValueError
|
If any element of |
Examples:
>>> from softpotato.analytical.secm import secm_approach_positive_feedback
>>> # Normalized current at L = 1.0, RG = 10.0
>>> round(float(secm_approach_positive_feedback(1.0, RG=10.0)), 4)
1.5628
>>> # Asymptotic approach to bulk current at large L
>>> round(float(secm_approach_positive_feedback(100.0, RG=10.0)), 4)
1.0041
Source code in src/softpotato/analytical/secm.py
secm_approach_negative_feedback
¶
secm_approach_negative_feedback(L: float | ArrayLike, RG: float | ArrayLike = 10.0) -> float | np.ndarray
Compute normalized steady-state tip current for negative feedback SECM.
Calculates the normalized steady-state tip current \(I_T^{\text{ins}}(L, RG)\) at an inlaid microdisk ultramicroelectrode approaching an inert insulating substrate under hindered diffusion, using the analytical approximation of Cornut and Lefrou (2007, 2008):
As \(L \to \infty\), \(I_T^{\text{ins}} \to 1.0\) for all \(RG\). As \(L \to 0\), \(I_T^{\text{ins}} \to 0.0\).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
L
|
float or array - like
|
Normalized tip-to-substrate distance \(L = d / a\) (\(L > 0\)). |
required |
RG
|
float or array - like
|
Insulator radius ratio \(RG = r_g / a\) (\(RG > 1\)). |
10.0
|
Returns:
| Type | Description |
|---|---|
float or ndarray
|
Normalized tip current \(I_T = i_T / i_{T,\infty}\) (dimensionless, \(0 < I_T < 1\)). |
Raises:
| Type | Description |
|---|---|
ValueError
|
If any element of |
Examples:
>>> from softpotato.analytical.secm import secm_approach_negative_feedback
>>> # Normalized current at L = 1.0, RG = 10.0
>>> round(float(secm_approach_negative_feedback(1.0, RG=10.0)), 4)
0.4983
>>> # Strong hindered diffusion near substrate (L = 0.05)
>>> round(float(secm_approach_negative_feedback(0.05, RG=10.0)), 4)
0.0337
Source code in src/softpotato/analytical/secm.py
secm_approach_curve
¶
secm_approach_curve(L: float | ArrayLike, RG: float | ArrayLike = 10.0, kappa: float | ArrayLike = np.inf) -> float | np.ndarray
Compute normalized steady-state tip current for arbitrary substrate kinetics.
Calculates the normalized steady-state tip current \(I_T(L, RG, \kappa)\) at an inlaid microdisk ultramicroelectrode for first-order substrate reaction kinetics characterized by the dimensionless kinetic parameter \(\kappa = \Lambda = \frac{k a}{D}\), using the unified analytical approximation of Cornut and Lefrou (2008, Eq. 22):
Special limiting cases:
- Pure positive feedback (\(\kappa \to \infty\)): reduces to
secm_approach_positive_feedback(\(I_T^{\text{cond}}\)). - Pure negative feedback (\(\kappa = 0\)): reduces to
secm_approach_negative_feedback(\(I_T^{\text{ins}}\)). - Finite substrate kinetics (\(0 < \kappa < \infty\)): smoothly interpolates between the negative and positive feedback curves.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
L
|
float or array - like
|
Normalized tip-to-substrate distance \(L = d / a\) (\(L > 0\)). |
required |
RG
|
float or array - like
|
Insulator radius ratio \(RG = r_g / a\) (\(RG > 1\)). |
10.0
|
kappa
|
float or array - like
|
Dimensionless heterogeneous first-order substrate rate constant
\(\kappa = \Lambda = \frac{k a}{D}\) (\(\kappa \ge 0\)).
Set to |
np.inf
|
Returns:
| Type | Description |
|---|---|
float or ndarray
|
Normalized tip current \(I_T = i_T / i_{T,\infty}\) (dimensionless). |
Raises:
| Type | Description |
|---|---|
ValueError
|
If any element of |
Examples:
>>> from softpotato.analytical.secm import secm_approach_curve
>>> import numpy as np
>>> # Positive feedback (kappa = inf)
>>> round(float(secm_approach_curve(1.0, RG=10.0, kappa=np.inf)), 4)
1.5628
>>> # Negative feedback (kappa = 0)
>>> round(float(secm_approach_curve(1.0, RG=10.0, kappa=0.0)), 4)
0.4983
>>> # Intermediate substrate kinetics (kappa = 1.0)
>>> round(float(secm_approach_curve(1.0, RG=10.0, kappa=1.0)), 4)
1.2064
Source code in src/softpotato/analytical/secm.py
290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 | |
secm_limiting_current_infinite
¶
secm_limiting_current_infinite(radius: float | ArrayLike, n: float = 1, D: float = 1e-05, c_bulk: float = 0.001, F: float = FARADAY) -> float | np.ndarray
Compute steady-state diffusion-limited current at infinite distance from substrate.
Calculates the Saito steady-state diffusion-limited Faradaic current at an inlaid circular microdisk electrode of radius \(a\) in bulk solution (\(L \to \infty\)):
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
radius
|
float or array - like
|
Radius of the microdisk tip \(a\) in meters or cm (\(a > 0\)). |
required |
n
|
int or float
|
Number of electrons transferred per molecule (\(n > 0\)). |
1
|
D
|
float
|
Diffusion coefficient \(D\) in \(\text{m}^2/\text{s}\) or \(\text{cm}^2/\text{s}\) (\(D > 0\)). |
1e-5
|
c_bulk
|
float
|
Bulk concentration of mediator \(c^*\) in \(\text{mol}/\text{m}^3\) or \(\text{mol}/\text{cm}^3\) (\(c^* \ge 0\)). |
1e-3
|
F
|
float
|
Faraday constant in \(\text{C}/\text{mol}\) (\(F > 0\)). |
FARADAY
|
Returns:
| Type | Description |
|---|---|
float or ndarray
|
Steady-state limiting current \(i_{T,\infty}\) in Amperes (\(\text{A}\)). |
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
Source code in src/softpotato/analytical/secm.py
secm_tip_current
¶
secm_tip_current(L: float | ArrayLike, RG: float | ArrayLike = 10.0, kappa: float | ArrayLike = np.inf, radius: float = 1e-05, n: float = 1, D: float = 1e-05, c_bulk: float = 0.001, F: float = FARADAY, reduction: bool = True) -> float | np.ndarray
Compute dimensional steady-state tip current in Amperes.
Scales the normalized SECM approach curve \(I_T(L, RG, \kappa)\) by the Saito steady-state limiting current at infinite distance \(i_{T,\infty} = 4 n F D c^* a\):
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
L
|
float or array - like
|
Normalized tip-to-substrate distance \(L = d / a\) (\(L > 0\)). |
required |
RG
|
float or array - like
|
Insulator radius ratio \(RG = r_g / a\) (\(RG > 1\)). |
10.0
|
kappa
|
float or array - like
|
Dimensionless heterogeneous first-order substrate rate constant \(\kappa = \Lambda = \frac{k a}{D}\) (\(\kappa \ge 0\)). |
np.inf
|
radius
|
float
|
Active microdisk radius \(a\) in meters or cm (\(a > 0\)). |
1e-5
|
n
|
int or float
|
Number of electrons transferred per molecule (\(n > 0\)). |
1
|
D
|
float
|
Diffusion coefficient \(D\) in \(\text{m}^2/\text{s}\) or \(\text{cm}^2/\text{s}\) (\(D > 0\)). |
1e-5
|
c_bulk
|
float
|
Bulk concentration of mediator \(c^*\) in \(\text{mol}/\text{m}^3\) or \(\text{mol}/\text{cm}^3\) (\(c^* \ge 0\)). |
1e-3
|
F
|
float
|
Faraday constant in \(\text{C}/\text{mol}\) (\(F > 0\)). |
FARADAY
|
reduction
|
bool
|
Direction of reaction. Cathodic reduction (True) yields negative dimensional tip current (\(i_T < 0\)), while anodic oxidation (False) yields positive current (\(i_T > 0\)). |
True
|
Returns:
| Type | Description |
|---|---|
float or ndarray
|
Dimensional tip current \(i_T\) in Amperes (\(\text{A}\)). |
Raises:
| Type | Description |
|---|---|
ValueError
|
If any input parameter violates physical bounds. |