Hydrodynamics & Convection Equations (softpotato.analytical.hydrodynamics)¶
The softpotato.analytical.hydrodynamics module provides models for hydrodynamic and convective electrochemical systems, including rotating disk (RDE) and rotating ring-disk electrode (RRDE) configurations.
hydrodynamics
¶
Analytical and empirical equations for hydrodynamic electrochemical systems.
This module provides closed-form solutions, asymptotic expansions, and empirical models for convective-diffusion mass transport at Rotating Disk Electrodes (RDE) and Rotating Ring-Disk Electrodes (RRDE).
Functions & Classes
rpm_to_rad_s Convert rotational speed from revolutions per minute (RPM) to angular velocity (rad/s). rad_s_to_rpm Convert angular velocity from rad/s to rotational speed in RPM. levich Levich equation for convective mass-transport limiting current at an RDE. levich_constant Compute the theoretical Levich slope parameter B. nernst_diffusion_layer Compute the hydrodynamic stagnant diffusion layer thickness delta. koutecky_levich Koutecký–Levich equation for mixed kinetic and mass-transfer limitation. koutecky_levich_analysis Perform linear regression on Koutecký–Levich data to extract kinetic and transport parameters. KouteckyLevichResult Container dataclass for extracted Koutecký–Levich diagnostic regression parameters. collection_efficiency Exact Albery–Bruckenstein theoretical collection efficiency N for an RRDE. ring_limiting_current Convective mass-transport limiting current at the ring electrode (unshielded or shielded). ring_collection_current Ring current resulting from collection of intermediate species generated at the disk. shielding_factor Theoretical geometric shielding factor for an RRDE. rotating_ring_disk Unified solver evaluating RRDE geometric parameters, collection efficiency, and limiting currents. RRDEResult Container dataclass for comprehensive RRDE hydrodynamic and geometric parameters.
Conventions & Units
All equations are dimensionally consistent in either standard SI or standard electrochemical CGS units:
- SI: \(D\) in \(\text{m}^2\cdot\text{s}^{-1}\), \(c^*\) in \(\text{mol}\cdot\text{m}^{-3}\), \(A\) in \(\text{m}^2\), \(\nu\) in \(\text{m}^2\cdot\text{s}^{-1}\) (water at 25 °C \(\approx 10^{-6}\)), \(\omega\) in \(\text{rad}\cdot\text{s}^{-1}\), \(F\) in \(\text{C}\cdot\text{mol}^{-1}\) \(\implies I\) in \(\text{A}\).
- CGS: \(D\) in \(\text{cm}^2\cdot\text{s}^{-1}\), \(c^*\) in \(\text{mol}\cdot\text{cm}^{-3}\), \(A\) in \(\text{cm}^2\), \(\nu\) in \(\text{cm}^2\cdot\text{s}^{-1}\) (water at 25 °C \(\approx 0.01\)), \(\omega\) in \(\text{rad}\cdot\text{s}^{-1}\), \(F\) in \(\text{C}\cdot\text{mol}^{-1}\) \(\implies I\) in \(\text{A}\).
Standard IUPAC sign conventions are applied: - Cathodic (reduction) currents are negative (\(I < 0\)). - Anodic (oxidation) currents are positive (\(I > 0\)).
References
- V. G. Levich, Physicochemical Hydrodynamics, Prentice-Hall, Englewood Cliffs, NJ, 1962.
- A. J. Bard, L. R. Faulkner, H. S. White, Electrochemical Methods: Fundamentals and Applications, 3rd ed., John Wiley & Sons, 2022, Chapter 9.
- W. J. Albery, S. Bruckenstein, "Ring-disc electrodes. Part 2.—Theoretical and experimental collection efficiencies", Trans. Faraday Soc., 62 (1966) 1920–1931.
KouteckyLevichResult
dataclass
¶
Diagnostic regression results from Koutecký–Levich analysis.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
i_k
|
float
|
Extracted kinetic current \(I_K\) in Amperes (A). |
required |
k_rate
|
float
|
Extracted apparent heterogeneous rate constant in \(\text{cm}\cdot\text{s}^{-1}\) or \(\text{m}\cdot\text{s}^{-1}\). |
required |
levich_constant
|
float
|
Extracted experimental Levich constant \(B\) in \(\text{A}\cdot\text{rad}^{-1/2}\cdot\text{s}^{1/2}\). |
required |
d_estimated
|
float
|
Diffusion coefficient estimated from the experimental slope \(B\). |
required |
slope
|
float
|
Regression slope \(m = 1 / B\) of \(I^{-1}\) vs. \(\omega^{-1/2}\). |
required |
intercept
|
float
|
Regression intercept \(q = 1 / I_K\) of \(I^{-1}\) vs. \(\omega^{-1/2}\). |
required |
r_squared
|
float
|
Coefficient of determination \(R^2\) of the linear regression fit. |
required |
Source code in src/softpotato/analytical/hydrodynamics.py
RRDEResult
dataclass
¶
Comprehensive parameters and limiting currents for an RRDE system.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
r1
|
float
|
Disk radius. |
required |
r2
|
float
|
Ring inner radius. |
required |
r3
|
float
|
Ring outer radius. |
required |
area_disk
|
float
|
Geometric area of disk electrode: \(\pi r_1^2\). |
required |
area_ring
|
float
|
Geometric area of ring electrode: \(\pi (r_3^2 - r_2^2)\). |
required |
N
|
float
|
Theoretical collection efficiency. |
required |
shielding_factor
|
float
|
Theoretical geometric shielding factor. |
required |
i_disk_lim
|
float or ndarray or None
|
Limiting current at the disk electrode (A). |
required |
i_ring_lim_unshielded
|
float or ndarray or None
|
Unshielded limiting current at the ring electrode (A). |
required |
i_ring_lim_shielded
|
float or ndarray or None
|
Shielded limiting current at the ring electrode (A). |
required |
Source code in src/softpotato/analytical/hydrodynamics.py
rpm_to_rad_s
¶
Convert rotational frequency in RPM to angular velocity in radians per second.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
rpm
|
float or array - like
|
Rotational frequency in revolutions per minute (\(\text{rpm} \ge 0\)). |
required |
Returns:
| Type | Description |
|---|---|
float or ndarray
|
Angular velocity \(\omega\) in \(\text{rad}\cdot\text{s}^{-1}\). |
Source code in src/softpotato/analytical/hydrodynamics.py
rad_s_to_rpm
¶
Convert angular velocity in radians per second to rotational frequency in RPM.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
omega
|
float or array - like
|
Angular velocity in \(\text{rad}\cdot\text{s}^{-1}\) (\(\omega \ge 0\)). |
required |
Returns:
| Type | Description |
|---|---|
float or ndarray
|
Rotational frequency in revolutions per minute (\(\text{rpm}\)). |
Source code in src/softpotato/analytical/hydrodynamics.py
levich
¶
levich(omega: float | ArrayLike | None = None, *, rpm: float | ArrayLike | None = None, n: float = 1, D: float = 1e-05, c_bulk: float = 0.001, area: float = 1.0, nu: float = 0.01, F: float = FARADAY) -> float | np.ndarray
Compute convective mass-transport limiting current at a Rotating Disk Electrode (RDE).
The Levich equation calculates the steady-state diffusion-limited Faradaic current at a planar disk electrode rotating in a Newtonian fluid under laminar hydrodynamic flow conditions:
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
omega
|
float or array - like
|
Angular rotation speed in \(\text{rad}\cdot\text{s}^{-1}\) (\(\omega \ge 0\)).
Either |
None
|
rpm
|
float or array - like
|
Rotational frequency in revolutions per minute (\(\text{rpm} \ge 0\)). |
None
|
n
|
float
|
Number of electrons transferred per molecule of electroactive species (\(n > 0\)). |
1
|
D
|
float
|
Diffusion coefficient of electroactive species (\(D > 0\), \(\text{cm}^2\cdot\text{s}^{-1}\) or \(\text{m}^2\cdot\text{s}^{-1}\)). |
1e-5
|
c_bulk
|
float
|
Bulk concentration of electroactive species (\(c^* \ge 0\), \(\text{mol}\cdot\text{cm}^{-3}\) or \(\text{mol}\cdot\text{m}^{-3}\)). |
1e-3
|
area
|
float
|
Geometric surface area of the disk electrode (\(A > 0\), \(\text{cm}^2\) or \(\text{m}^2\)). |
1.0
|
nu
|
float
|
Kinematic viscosity of the electrolyte solution (\(\nu > 0\), \(\text{cm}^2\cdot\text{s}^{-1}\) or \(\text{m}^2\cdot\text{s}^{-1}\)). Default is 0.01 \(\text{cm}^2\cdot\text{s}^{-1}\) (water at 20–25 °C in CGS). |
0.01
|
F
|
float
|
Faraday constant in \(\text{C}\cdot\text{mol}^{-1}\) (\(F > 0\)). |
FARADAY
|
Returns:
| Type | Description |
|---|---|
float or ndarray
|
Convective mass-transport limiting current \(I_L\) in Amperes (A). |
Raises:
| Type | Description |
|---|---|
ValueError
|
If both or neither |
Examples:
>>> import softpotato as sp
>>> # Standard 5 mm OD disk (area = 0.1963 cm^2) at 1600 rpm
>>> i_lim = sp.levich(rpm=1600, n=1, D=1e-5, c_bulk=1e-6, area=0.1963, nu=0.01)
>>> round(i_lim * 1e6, 2) # microamperes
152.0
Source code in src/softpotato/analytical/hydrodynamics.py
levich_constant
¶
levich_constant(n: float = 1, D: float = 1e-05, c_bulk: float = 0.001, area: float = 1.0, nu: float = 0.01, F: float = FARADAY) -> float
Compute the theoretical Levich constant (slope parameter) B.
such that the Levich limiting current is \(I_L = B \sqrt{\omega}\).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n
|
float
|
Number of electrons transferred (\(n > 0\)). |
1
|
D
|
float
|
Diffusion coefficient (\(D > 0\)). |
1e-5
|
c_bulk
|
float
|
Bulk concentration (\(c^* \ge 0\)). |
1e-3
|
area
|
float
|
Electrode geometric area (\(A > 0\)). |
1.0
|
nu
|
float
|
Kinematic viscosity (\(\nu > 0\)). |
0.01
|
F
|
float
|
Faraday constant (\(F > 0\)). |
FARADAY
|
Returns:
| Type | Description |
|---|---|
float
|
Levich slope constant \(B\) in \(\text{A}\cdot\text{rad}^{-1/2}\cdot\text{s}^{1/2}\). |
Source code in src/softpotato/analytical/hydrodynamics.py
nernst_diffusion_layer
¶
nernst_diffusion_layer(omega: float | ArrayLike | None = None, *, rpm: float | ArrayLike | None = None, D: float = 1e-05, nu: float = 0.01) -> float | np.ndarray
Compute the Nernst stagnant diffusion layer thickness delta for an RDE.
According to Levich hydrodynamic boundary layer theory:
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
omega
|
float or array - like
|
Angular rotation speed in \(\text{rad}\cdot\text{s}^{-1}\) (\(\omega > 0\)). |
None
|
rpm
|
float or array - like
|
Rotational frequency in revolutions per minute (\(\text{rpm} > 0\)). |
None
|
D
|
float
|
Diffusion coefficient (\(D > 0\), \(\text{cm}^2\cdot\text{s}^{-1}\) or \(\text{m}^2\cdot\text{s}^{-1}\)). |
1e-5
|
nu
|
float
|
Kinematic viscosity (\(\nu > 0\), \(\text{cm}^2\cdot\text{s}^{-1}\) or \(\text{m}^2\cdot\text{s}^{-1}\)). |
0.01
|
Returns:
| Type | Description |
|---|---|
float or ndarray
|
Diffusion boundary layer thickness \(\delta\) (\(\text{cm}\) or \(\text{m}\)). |
Source code in src/softpotato/analytical/hydrodynamics.py
koutecky_levich
¶
koutecky_levich(omega: float | ArrayLike | None = None, *, rpm: float | ArrayLike | None = None, i_k: float | ArrayLike | None = None, k: float | ArrayLike | None = None, i_lim: float | ArrayLike | None = None, n: float = 1, D: float = 1e-05, c_bulk: float = 0.001, area: float = 1.0, nu: float = 0.01, F: float = FARADAY) -> float | np.ndarray
Compute total current under mixed kinetic and convective mass-transfer control.
The Koutecký–Levich equation describes the steady-state current response in the presence of simultaneous interfacial charge-transfer and mass-transport limitations:
where \(I_K = n F A k(E) c^*\) is the potential-dependent kinetic current, and \(I_L = 0.620 \, n F A D^{2/3} \omega^{1/2} \nu^{-1/6} c^*\) is the convective mass-transport limiting current.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
omega
|
float or array - like
|
Angular rotation speed in \(\text{rad}\cdot\text{s}^{-1}\). |
None
|
rpm
|
float or array - like
|
Rotational frequency in revolutions per minute. |
None
|
i_k
|
float or array - like
|
Kinetic current \(I_K\) in Amperes (A). Either |
None
|
k
|
float or array - like
|
Heterogeneous charge-transfer rate constant (\(\text{cm}\cdot\text{s}^{-1}\) or \(\text{m}\cdot\text{s}^{-1}\)). If provided, \(I_K = n F A k c^*\). |
None
|
i_lim
|
float or array - like
|
Precomputed mass-transport limiting current \(I_L\) in Amperes (A).
If provided, rotation speed ( |
None
|
n
|
float
|
Number of electrons transferred (\(n > 0\)). |
1
|
D
|
float
|
Diffusion coefficient (\(D > 0\)). |
1e-5
|
c_bulk
|
float
|
Bulk concentration (\(c^* \ge 0\)). |
1e-3
|
area
|
float
|
Electrode area (\(A > 0\)). |
1.0
|
nu
|
float
|
Kinematic viscosity (\(\nu > 0\)). |
0.01
|
F
|
float
|
Faraday constant (\(F > 0\)). |
FARADAY
|
Returns:
| Type | Description |
|---|---|
float or ndarray
|
Observed total current \(I\) in Amperes (A). |
Raises:
| Type | Description |
|---|---|
ValueError
|
If neither |
Source code in src/softpotato/analytical/hydrodynamics.py
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 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 | |
koutecky_levich_analysis
¶
koutecky_levich_analysis(omega: float | ArrayLike | None = None, current: float | ArrayLike = 1.0, *, rpm: float | ArrayLike | None = None, area: float = 1.0, c_bulk: float = 0.001, n: float = 1, nu: float = 0.01, F: float = FARADAY) -> KouteckyLevichResult
Extract kinetic rate constant and Levich slope from experimental RDE series.
Performs an ordinary least-squares linear regression on the linearized Koutecký–Levich equation:
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
omega
|
array - like
|
Series of angular rotation velocities in \(\text{rad}\cdot\text{s}^{-1}\) (\(\omega > 0\)). |
None
|
current
|
array - like
|
Series of measured currents \(I\) in Amperes at the corresponding rotation speeds (\(I > 0\)). |
1.0
|
rpm
|
array - like
|
Series of rotation rates in RPM. Either |
None
|
area
|
float
|
Electrode area (\(A > 0\)). |
1.0
|
c_bulk
|
float
|
Bulk reactant concentration (\(c^* > 0\)). |
1e-3
|
n
|
float
|
Number of electrons transferred (\(n > 0\)). |
1
|
nu
|
float
|
Kinematic viscosity (\(\nu > 0\)). |
0.01
|
F
|
float
|
Faraday constant (\(F > 0\)). |
FARADAY
|
Returns:
| Type | Description |
|---|---|
KouteckyLevichResult
|
Regression analysis parameters including extracted \(I_K\), rate constant \(k\), Levich slope \(B\), estimated \(D\), and goodness of fit \(R^2\). |
Raises:
| Type | Description |
|---|---|
ValueError
|
If fewer than 2 data points are provided, if arrays have mismatched lengths, or if non-positive currents/rotation rates are given. |
Source code in src/softpotato/analytical/hydrodynamics.py
502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 | |
collection_efficiency
¶
Compute theoretical collection efficiency N for a Rotating Ring-Disk Electrode (RRDE).
The collection efficiency \(N\) is the fraction of an electroactive intermediate generated at the central disk that reaches and reacts at the concentric ring electrode under steady-state convective diffusion.
Evaluated using the exact closed-form solution derived by W. J. Albery and S. Bruckenstein (1966):
where:
and \(F(\theta)\) is the Albery hydrodynamic integral function.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
r1
|
float
|
Radius of the central disk electrode (\(r_1 > 0\)). |
required |
r2
|
float
|
Inner radius of the concentric ring electrode (\(r_2 > r_1\)). |
required |
r3
|
float
|
Outer radius of the concentric ring electrode (\(r_3 > r_2\)). |
required |
Returns:
| Type | Description |
|---|---|
float
|
Theoretical collection efficiency \(N \in (0, 1)\). |
Raises:
| Type | Description |
|---|---|
ValueError
|
If radii do not strictly satisfy \(0 < r_1 < r_2 < r_3\). |
Examples:
>>> import softpotato as sp
>>> # Standard Pine commercial tip (5.0 mm disk OD, 6.5 mm ring ID, 7.5 mm ring OD)
>>> n_eff = sp.collection_efficiency(r1=0.25, r2=0.325, r3=0.375)
>>> round(n_eff, 4)
0.2555
Source code in src/softpotato/analytical/hydrodynamics.py
656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 | |
ring_limiting_current
¶
ring_limiting_current(omega: float | ArrayLike | None = None, *, rpm: float | ArrayLike | None = None, r2: float, r3: float, r1: float | None = None, shielded: bool = False, n: float = 1, D: float = 1e-05, c_bulk: float = 0.001, nu: float = 0.01, F: float = FARADAY) -> float | np.ndarray
Compute convective mass-transport limiting current at an RRDE ring electrode.
Calculates either the unshielded limiting ring current (when the disk is at open-circuit potential) or the shielded limiting ring current (when the disk is simultaneously consuming the bulk reactant at its limiting plateau):
- Unshielded Limiting Current (\(I_{R, L}\)):
$$ I_{R, L} = 0.620 \, n F \pi (r_3^3 - r_2^3)^{2/3} D^{2/3} \omega^{1/2} \nu^{-1/6} c^* $$
- Shielded Limiting Current (\(I_{R, \text{sh}}\)):
$$ I_{R, \text{sh}} = I_{R, L} - N I_{D, L} $$
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
omega
|
float or array - like
|
Angular rotation speed in \(\text{rad}\cdot\text{s}^{-1}\). |
None
|
rpm
|
float or array - like
|
Rotational frequency in revolutions per minute. |
None
|
r2
|
float
|
Inner radius of the ring electrode (\(r_2 > 0\)). |
required |
r3
|
float
|
Outer radius of the ring electrode (\(r_3 > r_2\)). |
required |
r1
|
float
|
Radius of the central disk electrode (\(0 < r_1 < r_2\)).
Required if |
None
|
shielded
|
bool
|
If True, returns the shielded ring limiting current accounting for disk depletion. |
False
|
n
|
float
|
Number of electrons transferred (\(n > 0\)). |
1
|
D
|
float
|
Diffusion coefficient (\(D > 0\)). |
1e-5
|
c_bulk
|
float
|
Bulk concentration (\(c^* \ge 0\)). |
1e-3
|
nu
|
float
|
Kinematic viscosity (\(\nu > 0\)). |
0.01
|
F
|
float
|
Faraday constant (\(F > 0\)). |
FARADAY
|
Returns:
| Type | Description |
|---|---|
float or ndarray
|
Limiting ring current \(I_{R}\) in Amperes (A). |
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
Source code in src/softpotato/analytical/hydrodynamics.py
734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 | |
ring_collection_current
¶
ring_collection_current(i_disk: float | ArrayLike, N: float | None = None, *, r1: float | None = None, r2: float | None = None, r3: float | None = None, n_ring: float = 1, n_disk: float = 1) -> float | np.ndarray
Compute the ring current resulting from collection of species generated at the disk.
where \(I_D\) is the Faradaic current at the disk electrode, and \(N\) is the RRDE collection efficiency. The negative sign ensures that a cathodic disk reaction (\(I_D < 0\)) produces a positive anodic collection current at the ring (\(I_R > 0\)), and vice versa.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
i_disk
|
float or array - like
|
Current measured at the disk electrode in Amperes (A). |
required |
N
|
float
|
Collection efficiency (\(0 < N < 1\)). If not provided, computed from
geometric radii |
None
|
r1
|
float
|
Radius of disk electrode. |
None
|
r2
|
float
|
Inner radius of ring electrode. |
None
|
r3
|
float
|
Outer radius of ring electrode. |
None
|
n_ring
|
float
|
Number of electrons transferred in the ring reaction (\(n_R > 0\)). |
1
|
n_disk
|
float
|
Number of electrons transferred in the disk reaction (\(n_D > 0\)). |
1
|
Returns:
| Type | Description |
|---|---|
float or ndarray
|
Ring collection current \(I_R\) in Amperes (A). |
Source code in src/softpotato/analytical/hydrodynamics.py
shielding_factor
¶
Compute the theoretical geometric shielding factor S for an RRDE.
The shielding factor \(S\) characterizes the relative decrease in ring limiting current when the disk electrode is active:
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
r1
|
float
|
Radius of disk electrode (\(r_1 > 0\)). |
required |
r2
|
float
|
Inner radius of ring electrode (\(r_2 > r_1\)). |
required |
r3
|
float
|
Outer radius of ring electrode (\(r_3 > r_2\)). |
required |
N
|
float
|
Collection efficiency. If not provided, computed from |
None
|
Returns:
| Type | Description |
|---|---|
float
|
Geometric shielding factor \(S \in (0, 1)\). |
Source code in src/softpotato/analytical/hydrodynamics.py
rotating_ring_disk
¶
rotating_ring_disk(r1: float, r2: float, r3: float, *, omega: float | ArrayLike | None = None, rpm: float | ArrayLike | None = None, n_disk: float = 1, n_ring: float = 1, D: float = 1e-05, c_bulk: float = 0.001, nu: float = 0.01, F: float = FARADAY) -> RRDEResult
Evaluate geometric parameters, collection efficiency, and limiting currents for an RRDE.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
r1
|
float
|
Disk radius (\(r_1 > 0\)). |
required |
r2
|
float
|
Ring inner radius (\(r_2 > r_1\)). |
required |
r3
|
float
|
Ring outer radius (\(r_3 > r_2\)). |
required |
omega
|
float or array - like
|
Angular rotation speed in \(\text{rad}\cdot\text{s}^{-1}\). |
None
|
rpm
|
float or array - like
|
Rotational frequency in revolutions per minute. |
None
|
n_disk
|
float
|
Number of electrons transferred at the disk (\(n_D > 0\)). |
1
|
n_ring
|
float
|
Number of electrons transferred at the ring (\(n_R > 0\)). |
1
|
D
|
float
|
Diffusion coefficient (\(D > 0\)). |
1e-5
|
c_bulk
|
float
|
Bulk concentration (\(c^* \ge 0\)). |
1e-3
|
nu
|
float
|
Kinematic viscosity (\(\nu > 0\)). |
0.01
|
F
|
float
|
Faraday constant (\(F > 0\)). |
FARADAY
|
Returns:
| Type | Description |
|---|---|
RRDEResult
|
Container dataclass with collection efficiency, shielding factor, areas, and (if rotation speed was supplied) disk and ring limiting currents. |
Examples:
>>> import softpotato as sp
>>> res = sp.rotating_ring_disk(r1=0.25, r2=0.325, r3=0.375, rpm=1600, c_bulk=1e-6)
>>> round(res.N, 4)
0.2555
>>> round(res.shielding_factor, 4)
0.2291
Source code in src/softpotato/analytical/hydrodynamics.py
989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 | |