pyEQL 1.1.5__py3-none-any.whl → 1.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyEQL/database/pyeql_db.json +128 -326
- pyEQL/functions.py +28 -14
- pyEQL/presets/Ringers lactate.yaml +3 -3
- pyEQL/presets/normal saline.yaml +3 -3
- pyEQL/presets/rainwater.yaml +3 -3
- pyEQL/presets/seawater.yaml +3 -3
- pyEQL/presets/urine.yaml +3 -3
- pyEQL/presets/wastewater.yaml +3 -3
- pyEQL/solution.py +4 -5
- pyEQL/utils.py +24 -9
- {pyEQL-1.1.5.dist-info → pyEQL-1.2.0.dist-info}/AUTHORS.md +7 -4
- {pyEQL-1.1.5.dist-info → pyEQL-1.2.0.dist-info}/METADATA +16 -16
- pyEQL-1.2.0.dist-info/RECORD +26 -0
- {pyEQL-1.1.5.dist-info → pyEQL-1.2.0.dist-info}/WHEEL +1 -1
- pyEQL-1.1.5.dist-info/RECORD +0 -26
- {pyEQL-1.1.5.dist-info → pyEQL-1.2.0.dist-info}/COPYING +0 -0
- {pyEQL-1.1.5.dist-info → pyEQL-1.2.0.dist-info}/LICENSE.txt +0 -0
- {pyEQL-1.1.5.dist-info → pyEQL-1.2.0.dist-info}/top_level.txt +0 -0
pyEQL/database/pyeql_db.json
CHANGED
|
@@ -3366,92 +3366,6 @@
|
|
|
3366
3366
|
}
|
|
3367
3367
|
}
|
|
3368
3368
|
},
|
|
3369
|
-
{
|
|
3370
|
-
"formula": "CO32[-1]",
|
|
3371
|
-
"charge": -1,
|
|
3372
|
-
"molecular_weight": "523.9915 g/mol",
|
|
3373
|
-
"elements": [
|
|
3374
|
-
"C",
|
|
3375
|
-
"O"
|
|
3376
|
-
],
|
|
3377
|
-
"chemsys": "C-O",
|
|
3378
|
-
"pmg_ion": {
|
|
3379
|
-
"C": 1,
|
|
3380
|
-
"O": 32,
|
|
3381
|
-
"charge": -1,
|
|
3382
|
-
"@module": "pymatgen.core.ion",
|
|
3383
|
-
"@class": "Ion",
|
|
3384
|
-
"@version": null
|
|
3385
|
-
},
|
|
3386
|
-
"formula_html": "CO<sub>32</sub><sup>-1</sup>",
|
|
3387
|
-
"formula_latex": "CO$_{32}$$^{-1}$",
|
|
3388
|
-
"formula_hill": "C O32",
|
|
3389
|
-
"formula_pretty": "CO32^-1",
|
|
3390
|
-
"oxi_state_guesses": {
|
|
3391
|
-
"C": 4,
|
|
3392
|
-
"O": -0.15625
|
|
3393
|
-
},
|
|
3394
|
-
"n_atoms": 33,
|
|
3395
|
-
"n_elements": 2,
|
|
3396
|
-
"size": {
|
|
3397
|
-
"radius_ionic": {
|
|
3398
|
-
"value": "None",
|
|
3399
|
-
"reference": "pymatgen",
|
|
3400
|
-
"data_type": "experimental"
|
|
3401
|
-
},
|
|
3402
|
-
"radius_hydrated": null,
|
|
3403
|
-
"radius_vdw": {
|
|
3404
|
-
"value": "1.7 Å",
|
|
3405
|
-
"reference": "pymatgen",
|
|
3406
|
-
"data_type": "experimental"
|
|
3407
|
-
},
|
|
3408
|
-
"molar_volume": null
|
|
3409
|
-
},
|
|
3410
|
-
"thermo": {
|
|
3411
|
-
"ΔG_hydration": null,
|
|
3412
|
-
"ΔG_formation": null
|
|
3413
|
-
},
|
|
3414
|
-
"transport": {
|
|
3415
|
-
"diffusion_coefficient": null
|
|
3416
|
-
},
|
|
3417
|
-
"model_parameters": {
|
|
3418
|
-
"activity_pitzer": {
|
|
3419
|
-
"Beta0": null,
|
|
3420
|
-
"Beta1": null,
|
|
3421
|
-
"Beta2": null,
|
|
3422
|
-
"Cphi": null,
|
|
3423
|
-
"Max_C": null
|
|
3424
|
-
},
|
|
3425
|
-
"molar_volume_pitzer": {
|
|
3426
|
-
"Beta0": null,
|
|
3427
|
-
"Beta1": null,
|
|
3428
|
-
"Beta2": null,
|
|
3429
|
-
"Cphi": null,
|
|
3430
|
-
"V_o": null,
|
|
3431
|
-
"Max_C": null
|
|
3432
|
-
},
|
|
3433
|
-
"viscosity_jones_dole": {
|
|
3434
|
-
"B": null
|
|
3435
|
-
},
|
|
3436
|
-
"diffusion_temp_smolyakov": {
|
|
3437
|
-
"a1": {
|
|
3438
|
-
"value": "1.12 dimensionless",
|
|
3439
|
-
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
3440
|
-
"data_type": "fitted"
|
|
3441
|
-
},
|
|
3442
|
-
"a2": {
|
|
3443
|
-
"value": "2.84 dimensionless",
|
|
3444
|
-
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
3445
|
-
"data_type": "fitted"
|
|
3446
|
-
},
|
|
3447
|
-
"d": {
|
|
3448
|
-
"value": "0 dimensionless",
|
|
3449
|
-
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
3450
|
-
"data_type": "fitted"
|
|
3451
|
-
}
|
|
3452
|
-
}
|
|
3453
|
-
}
|
|
3454
|
-
},
|
|
3455
3369
|
{
|
|
3456
3370
|
"formula": "CO3[-2]",
|
|
3457
3371
|
"charge": -2,
|
|
@@ -3545,14 +3459,26 @@
|
|
|
3545
3459
|
}
|
|
3546
3460
|
},
|
|
3547
3461
|
"diffusion_temp_smolyakov": {
|
|
3548
|
-
"a1":
|
|
3549
|
-
|
|
3550
|
-
|
|
3462
|
+
"a1": {
|
|
3463
|
+
"value": "1.12 dimensionless",
|
|
3464
|
+
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
3465
|
+
"data_type": "fitted"
|
|
3466
|
+
},
|
|
3467
|
+
"a2": {
|
|
3468
|
+
"value": "2.84 dimensionless",
|
|
3469
|
+
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
3470
|
+
"data_type": "fitted"
|
|
3471
|
+
},
|
|
3472
|
+
"d": {
|
|
3473
|
+
"value": "0 dimensionless",
|
|
3474
|
+
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
3475
|
+
"data_type": "fitted"
|
|
3476
|
+
}
|
|
3551
3477
|
}
|
|
3552
3478
|
}
|
|
3553
3479
|
},
|
|
3554
3480
|
{
|
|
3555
|
-
"formula": "
|
|
3481
|
+
"formula": "SCN[-1]",
|
|
3556
3482
|
"charge": -1,
|
|
3557
3483
|
"molecular_weight": "58.0824 g/mol",
|
|
3558
3484
|
"elements": [
|
|
@@ -3570,10 +3496,10 @@
|
|
|
3570
3496
|
"@class": "Ion",
|
|
3571
3497
|
"@version": null
|
|
3572
3498
|
},
|
|
3573
|
-
"formula_html": "
|
|
3574
|
-
"formula_latex": "
|
|
3499
|
+
"formula_html": "SCN<sup>-1</sup>",
|
|
3500
|
+
"formula_latex": "SCN$^{-1}$",
|
|
3575
3501
|
"formula_hill": "C N S",
|
|
3576
|
-
"formula_pretty": "
|
|
3502
|
+
"formula_pretty": "SCN^-1",
|
|
3577
3503
|
"oxi_state_guesses": {
|
|
3578
3504
|
"S": -2,
|
|
3579
3505
|
"C": 4,
|
|
@@ -4364,9 +4290,21 @@
|
|
|
4364
4290
|
}
|
|
4365
4291
|
},
|
|
4366
4292
|
"diffusion_temp_smolyakov": {
|
|
4367
|
-
"a1":
|
|
4368
|
-
|
|
4369
|
-
|
|
4293
|
+
"a1": {
|
|
4294
|
+
"value": "3.4 dimensionless",
|
|
4295
|
+
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
4296
|
+
"data_type": "fitted"
|
|
4297
|
+
},
|
|
4298
|
+
"a2": {
|
|
4299
|
+
"value": "24.6 dimensionless",
|
|
4300
|
+
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
4301
|
+
"data_type": "fitted"
|
|
4302
|
+
},
|
|
4303
|
+
"d": {
|
|
4304
|
+
"value": "97 dimensionless",
|
|
4305
|
+
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
4306
|
+
"data_type": "fitted"
|
|
4307
|
+
}
|
|
4370
4308
|
},
|
|
4371
4309
|
"dielectric_zuber": {
|
|
4372
4310
|
"value": "-0.53 dimensionless",
|
|
@@ -11394,7 +11332,7 @@
|
|
|
11394
11332
|
}
|
|
11395
11333
|
},
|
|
11396
11334
|
{
|
|
11397
|
-
"formula": "
|
|
11335
|
+
"formula": "NH4NO3(aq)",
|
|
11398
11336
|
"charge": 0,
|
|
11399
11337
|
"molecular_weight": "80.04336 g/mol",
|
|
11400
11338
|
"elements": [
|
|
@@ -11413,9 +11351,9 @@
|
|
|
11413
11351
|
"@version": null
|
|
11414
11352
|
},
|
|
11415
11353
|
"formula_html": "H<sub>4</sub>N<sub>2</sub>O<sub>3</sub>",
|
|
11416
|
-
"formula_latex": "
|
|
11354
|
+
"formula_latex": "NH$_{4}$NO$_{3}$",
|
|
11417
11355
|
"formula_hill": "H4 N2 O3",
|
|
11418
|
-
"formula_pretty": "
|
|
11356
|
+
"formula_pretty": "NH4NO3",
|
|
11419
11357
|
"oxi_state_guesses": {
|
|
11420
11358
|
"N": 1,
|
|
11421
11359
|
"H": 1,
|
|
@@ -11515,7 +11453,7 @@
|
|
|
11515
11453
|
}
|
|
11516
11454
|
},
|
|
11517
11455
|
{
|
|
11518
|
-
"formula": "
|
|
11456
|
+
"formula": "NH4Cl(aq)",
|
|
11519
11457
|
"charge": 0,
|
|
11520
11458
|
"molecular_weight": "53.491460000000004 g/mol",
|
|
11521
11459
|
"elements": [
|
|
@@ -11533,10 +11471,10 @@
|
|
|
11533
11471
|
"@class": "Ion",
|
|
11534
11472
|
"@version": null
|
|
11535
11473
|
},
|
|
11536
|
-
"formula_html": "
|
|
11537
|
-
"formula_latex": "
|
|
11474
|
+
"formula_html": "NH<sub>4</sub>Cl",
|
|
11475
|
+
"formula_latex": "NH$_{4}$Cl",
|
|
11538
11476
|
"formula_hill": "Cl H4 N",
|
|
11539
|
-
"formula_pretty": "
|
|
11477
|
+
"formula_pretty": "NH4Cl",
|
|
11540
11478
|
"oxi_state_guesses": {
|
|
11541
11479
|
"N": -3,
|
|
11542
11480
|
"H": 1,
|
|
@@ -11636,7 +11574,7 @@
|
|
|
11636
11574
|
}
|
|
11637
11575
|
},
|
|
11638
11576
|
{
|
|
11639
|
-
"formula": "
|
|
11577
|
+
"formula": "NH4ClO4(aq)",
|
|
11640
11578
|
"charge": 0,
|
|
11641
11579
|
"molecular_weight": "117.48906 g/mol",
|
|
11642
11580
|
"elements": [
|
|
@@ -11656,14 +11594,14 @@
|
|
|
11656
11594
|
"@class": "Ion",
|
|
11657
11595
|
"@version": null
|
|
11658
11596
|
},
|
|
11659
|
-
"formula_html": "
|
|
11660
|
-
"formula_latex": "
|
|
11597
|
+
"formula_html": "NH<sub>4</sub>ClO<sub>4</sub>",
|
|
11598
|
+
"formula_latex": "NH$_{4}$ClO$_{4}$",
|
|
11661
11599
|
"formula_hill": "Cl H4 N O4",
|
|
11662
|
-
"formula_pretty": "
|
|
11600
|
+
"formula_pretty": "NH4ClO4",
|
|
11663
11601
|
"oxi_state_guesses": {
|
|
11664
11602
|
"N": 5,
|
|
11665
11603
|
"H": 1,
|
|
11666
|
-
"Cl":
|
|
11604
|
+
"Cl": 7,
|
|
11667
11605
|
"O": -2
|
|
11668
11606
|
},
|
|
11669
11607
|
"n_atoms": 10,
|
|
@@ -11760,7 +11698,7 @@
|
|
|
11760
11698
|
}
|
|
11761
11699
|
},
|
|
11762
11700
|
{
|
|
11763
|
-
"formula": "
|
|
11701
|
+
"formula": "NH4[+1]",
|
|
11764
11702
|
"charge": 1,
|
|
11765
11703
|
"molecular_weight": "18.03846 g/mol",
|
|
11766
11704
|
"elements": [
|
|
@@ -11779,7 +11717,7 @@
|
|
|
11779
11717
|
"formula_html": "H<sub>4</sub>N<sup>+1</sup>",
|
|
11780
11718
|
"formula_latex": "H$_{4}$N$^{+1}$",
|
|
11781
11719
|
"formula_hill": "H4 N",
|
|
11782
|
-
"formula_pretty": "
|
|
11720
|
+
"formula_pretty": "NH4^+1",
|
|
11783
11721
|
"oxi_state_guesses": {
|
|
11784
11722
|
"N": -3,
|
|
11785
11723
|
"H": 1
|
|
@@ -12134,7 +12072,7 @@
|
|
|
12134
12072
|
}
|
|
12135
12073
|
},
|
|
12136
12074
|
{
|
|
12137
|
-
"formula": "
|
|
12075
|
+
"formula": "(NH4)2SO4(aq)",
|
|
12138
12076
|
"charge": 0,
|
|
12139
12077
|
"molecular_weight": "132.13952 g/mol",
|
|
12140
12078
|
"elements": [
|
|
@@ -12157,7 +12095,7 @@
|
|
|
12157
12095
|
"formula_html": "H<sub>8</sub>S(NO<sub>2</sub>)<sub>2</sub>",
|
|
12158
12096
|
"formula_latex": "H$_{8}$S(NO$_{2}$)$_{2}$",
|
|
12159
12097
|
"formula_hill": "H8 N2 O4 S",
|
|
12160
|
-
"formula_pretty": "
|
|
12098
|
+
"formula_pretty": "(NH4)2SO4",
|
|
12161
12099
|
"oxi_state_guesses": {
|
|
12162
12100
|
"N": 1,
|
|
12163
12101
|
"H": 1,
|
|
@@ -14744,7 +14682,7 @@
|
|
|
14744
14682
|
}
|
|
14745
14683
|
},
|
|
14746
14684
|
{
|
|
14747
|
-
"formula": "
|
|
14685
|
+
"formula": "K2HPO4(aq)",
|
|
14748
14686
|
"charge": 0,
|
|
14749
14687
|
"molecular_weight": "174.175902 g/mol",
|
|
14750
14688
|
"elements": [
|
|
@@ -14764,10 +14702,10 @@
|
|
|
14764
14702
|
"@class": "Ion",
|
|
14765
14703
|
"@version": null
|
|
14766
14704
|
},
|
|
14767
|
-
"formula_html": "K<sub>2</sub>
|
|
14768
|
-
"formula_latex": "K$_{2}$
|
|
14705
|
+
"formula_html": "K<sub>2</sub>HPO<sub>4</sub>",
|
|
14706
|
+
"formula_latex": "K$_{2}$HPO$_{4}$",
|
|
14769
14707
|
"formula_hill": "H K2 O4 P",
|
|
14770
|
-
"formula_pretty": "
|
|
14708
|
+
"formula_pretty": "K2HPO4",
|
|
14771
14709
|
"oxi_state_guesses": {
|
|
14772
14710
|
"K": 1,
|
|
14773
14711
|
"H": 1,
|
|
@@ -15658,7 +15596,7 @@
|
|
|
15658
15596
|
}
|
|
15659
15597
|
},
|
|
15660
15598
|
{
|
|
15661
|
-
"formula": "
|
|
15599
|
+
"formula": "KSCN(aq)",
|
|
15662
15600
|
"charge": 0,
|
|
15663
15601
|
"molecular_weight": "97.18069999999999 g/mol",
|
|
15664
15602
|
"elements": [
|
|
@@ -15678,10 +15616,10 @@
|
|
|
15678
15616
|
"@class": "Ion",
|
|
15679
15617
|
"@version": null
|
|
15680
15618
|
},
|
|
15681
|
-
"formula_html": "
|
|
15682
|
-
"formula_latex": "
|
|
15619
|
+
"formula_html": "KSCN",
|
|
15620
|
+
"formula_latex": "KSCN",
|
|
15683
15621
|
"formula_hill": "C K N S",
|
|
15684
|
-
"formula_pretty": "
|
|
15622
|
+
"formula_pretty": "KSCN",
|
|
15685
15623
|
"oxi_state_guesses": {
|
|
15686
15624
|
"K": 1,
|
|
15687
15625
|
"S": -2,
|
|
@@ -17042,7 +16980,7 @@
|
|
|
17042
16980
|
}
|
|
17043
16981
|
},
|
|
17044
16982
|
{
|
|
17045
|
-
"formula": "
|
|
16983
|
+
"formula": "KH2PO4(aq)",
|
|
17046
16984
|
"charge": 0,
|
|
17047
16985
|
"molecular_weight": "136.085542 g/mol",
|
|
17048
16986
|
"elements": [
|
|
@@ -17065,7 +17003,7 @@
|
|
|
17065
17003
|
"formula_html": "KP(HO<sub>2</sub>)<sub>2</sub>",
|
|
17066
17004
|
"formula_latex": "KP(HO$_{2}$)$_{2}$",
|
|
17067
17005
|
"formula_hill": "H2 K O4 P",
|
|
17068
|
-
"formula_pretty": "
|
|
17006
|
+
"formula_pretty": "KH2PO4",
|
|
17069
17007
|
"oxi_state_guesses": {
|
|
17070
17008
|
"K": 1,
|
|
17071
17009
|
"H": 1,
|
|
@@ -19849,9 +19787,21 @@
|
|
|
19849
19787
|
}
|
|
19850
19788
|
},
|
|
19851
19789
|
"diffusion_temp_smolyakov": {
|
|
19852
|
-
"a1":
|
|
19853
|
-
|
|
19854
|
-
|
|
19790
|
+
"a1": {
|
|
19791
|
+
"value": "2.4 dimensionless",
|
|
19792
|
+
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
19793
|
+
"data_type": "fitted"
|
|
19794
|
+
},
|
|
19795
|
+
"a2": {
|
|
19796
|
+
"value": "13.7 dimensionless",
|
|
19797
|
+
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
19798
|
+
"data_type": "fitted"
|
|
19799
|
+
},
|
|
19800
|
+
"d": {
|
|
19801
|
+
"value": "111 dimensionless",
|
|
19802
|
+
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
19803
|
+
"data_type": "fitted"
|
|
19804
|
+
}
|
|
19855
19805
|
},
|
|
19856
19806
|
"dielectric_zuber": {
|
|
19857
19807
|
"value": "6.69 dimensionless",
|
|
@@ -20831,7 +20781,7 @@
|
|
|
20831
20781
|
}
|
|
20832
20782
|
},
|
|
20833
20783
|
{
|
|
20834
|
-
"formula": "
|
|
20784
|
+
"formula": "N3[-1]",
|
|
20835
20785
|
"charge": -1,
|
|
20836
20786
|
"molecular_weight": "14.0067 g/mol",
|
|
20837
20787
|
"elements": [
|
|
@@ -20846,9 +20796,9 @@
|
|
|
20846
20796
|
"@version": null
|
|
20847
20797
|
},
|
|
20848
20798
|
"formula_html": "N<sup>-1</sup>",
|
|
20849
|
-
"formula_latex": "N
|
|
20799
|
+
"formula_latex": "N$_3^{-1}$",
|
|
20850
20800
|
"formula_hill": "N3",
|
|
20851
|
-
"formula_pretty": "
|
|
20801
|
+
"formula_pretty": "N_3^-1",
|
|
20852
20802
|
"oxi_state_guesses": {
|
|
20853
20803
|
"N": -0.3333333333333333
|
|
20854
20804
|
},
|
|
@@ -21031,7 +20981,7 @@
|
|
|
21031
20981
|
}
|
|
21032
20982
|
},
|
|
21033
20983
|
{
|
|
21034
|
-
"formula": "
|
|
20984
|
+
"formula": "Na2HPO4(aq)",
|
|
21035
20985
|
"charge": 0,
|
|
21036
20986
|
"molecular_weight": "141.95884056 g/mol",
|
|
21037
20987
|
"elements": [
|
|
@@ -21051,10 +21001,10 @@
|
|
|
21051
21001
|
"@class": "Ion",
|
|
21052
21002
|
"@version": null
|
|
21053
21003
|
},
|
|
21054
|
-
"formula_html": "Na<sub>2</sub>
|
|
21055
|
-
"formula_latex": "Na$_{2}$
|
|
21004
|
+
"formula_html": "Na<sub>2</sub>HPO<sub>4</sub>",
|
|
21005
|
+
"formula_latex": "Na$_{2}$HPO$_{4}$",
|
|
21056
21006
|
"formula_hill": "H Na2 O4 P",
|
|
21057
|
-
"formula_pretty": "
|
|
21007
|
+
"formula_pretty": "Na2HPO4",
|
|
21058
21008
|
"oxi_state_guesses": {
|
|
21059
21009
|
"Na": 1,
|
|
21060
21010
|
"H": 1,
|
|
@@ -21846,7 +21796,7 @@
|
|
|
21846
21796
|
}
|
|
21847
21797
|
},
|
|
21848
21798
|
{
|
|
21849
|
-
"formula": "
|
|
21799
|
+
"formula": "NaSCN(aq)",
|
|
21850
21800
|
"charge": 0,
|
|
21851
21801
|
"molecular_weight": "81.07216928 g/mol",
|
|
21852
21802
|
"elements": [
|
|
@@ -21866,10 +21816,10 @@
|
|
|
21866
21816
|
"@class": "Ion",
|
|
21867
21817
|
"@version": null
|
|
21868
21818
|
},
|
|
21869
|
-
"formula_html": "
|
|
21870
|
-
"formula_latex": "
|
|
21819
|
+
"formula_html": "NaSCN",
|
|
21820
|
+
"formula_latex": "NaSCN",
|
|
21871
21821
|
"formula_hill": "C N Na S",
|
|
21872
|
-
"formula_pretty": "
|
|
21822
|
+
"formula_pretty": "NaSCN",
|
|
21873
21823
|
"oxi_state_guesses": {
|
|
21874
21824
|
"Na": 1,
|
|
21875
21825
|
"S": -2,
|
|
@@ -23499,7 +23449,7 @@
|
|
|
23499
23449
|
}
|
|
23500
23450
|
},
|
|
23501
23451
|
{
|
|
23502
|
-
"formula": "
|
|
23452
|
+
"formula": "NaH2PO4(aq)",
|
|
23503
23453
|
"charge": 0,
|
|
23504
23454
|
"molecular_weight": "119.97701128 g/mol",
|
|
23505
23455
|
"elements": [
|
|
@@ -23522,7 +23472,7 @@
|
|
|
23522
23472
|
"formula_html": "NaP(HO<sub>2</sub>)<sub>2</sub>",
|
|
23523
23473
|
"formula_latex": "NaP(HO$_{2}$)$_{2}$",
|
|
23524
23474
|
"formula_hill": "H2 Na O4 P",
|
|
23525
|
-
"formula_pretty": "
|
|
23475
|
+
"formula_pretty": "NaH2PO4",
|
|
23526
23476
|
"oxi_state_guesses": {
|
|
23527
23477
|
"Na": 1,
|
|
23528
23478
|
"H": 1,
|
|
@@ -25151,7 +25101,7 @@
|
|
|
25151
25101
|
}
|
|
25152
25102
|
},
|
|
25153
25103
|
{
|
|
25154
|
-
"formula": "
|
|
25104
|
+
"formula": "H2PO4[-1]",
|
|
25155
25105
|
"charge": -1,
|
|
25156
25106
|
"molecular_weight": "96.98724200000001 g/mol",
|
|
25157
25107
|
"elements": [
|
|
@@ -25172,7 +25122,7 @@
|
|
|
25172
25122
|
"formula_html": "P(HO<sub>2</sub>)<sub>2</sub><sup>-1</sup>",
|
|
25173
25123
|
"formula_latex": "P(HO$_{2}$)$_{2}$$^{-1}$",
|
|
25174
25124
|
"formula_hill": "H2 O4 P",
|
|
25175
|
-
"formula_pretty": "
|
|
25125
|
+
"formula_pretty": "H2PO4^-1",
|
|
25176
25126
|
"oxi_state_guesses": {
|
|
25177
25127
|
"H": 1,
|
|
25178
25128
|
"P": 5,
|
|
@@ -25236,7 +25186,7 @@
|
|
|
25236
25186
|
}
|
|
25237
25187
|
},
|
|
25238
25188
|
{
|
|
25239
|
-
"formula": "
|
|
25189
|
+
"formula": "H2PO4[-1]",
|
|
25240
25190
|
"charge": -1,
|
|
25241
25191
|
"molecular_weight": "96.98724200000001 g/mol",
|
|
25242
25192
|
"elements": [
|
|
@@ -25257,7 +25207,7 @@
|
|
|
25257
25207
|
"formula_html": "P(HO<sub>2</sub>)<sub>2</sub><sup>-1</sup>",
|
|
25258
25208
|
"formula_latex": "P(HO$_{2}$)$_{2}$$^{-1}$",
|
|
25259
25209
|
"formula_hill": "H2 O4 P",
|
|
25260
|
-
"formula_pretty": "
|
|
25210
|
+
"formula_pretty": "H2PO4^-1",
|
|
25261
25211
|
"oxi_state_guesses": {
|
|
25262
25212
|
"H": 1,
|
|
25263
25213
|
"P": 5,
|
|
@@ -25737,7 +25687,7 @@
|
|
|
25737
25687
|
}
|
|
25738
25688
|
},
|
|
25739
25689
|
{
|
|
25740
|
-
"formula": "
|
|
25690
|
+
"formula": "HPO4[-2]",
|
|
25741
25691
|
"charge": -2,
|
|
25742
25692
|
"molecular_weight": "95.979302 g/mol",
|
|
25743
25693
|
"elements": [
|
|
@@ -25755,10 +25705,10 @@
|
|
|
25755
25705
|
"@class": "Ion",
|
|
25756
25706
|
"@version": null
|
|
25757
25707
|
},
|
|
25758
|
-
"formula_html": "
|
|
25759
|
-
"formula_latex": "
|
|
25708
|
+
"formula_html": "HPO<sub>4</sub><sup>-2</sup>",
|
|
25709
|
+
"formula_latex": "HPO$_{4}$$^{-2}$",
|
|
25760
25710
|
"formula_hill": "H O4 P",
|
|
25761
|
-
"formula_pretty": "
|
|
25711
|
+
"formula_pretty": "HPO4^-2",
|
|
25762
25712
|
"oxi_state_guesses": {
|
|
25763
25713
|
"H": 1,
|
|
25764
25714
|
"P": 5,
|
|
@@ -29250,9 +29200,9 @@
|
|
|
29250
29200
|
}
|
|
29251
29201
|
},
|
|
29252
29202
|
{
|
|
29253
|
-
"formula": "
|
|
29203
|
+
"formula": "S2O6[-2]",
|
|
29254
29204
|
"charge": -2,
|
|
29255
|
-
"molecular_weight": "
|
|
29205
|
+
"molecular_weight": "160.12 g/mol",
|
|
29256
29206
|
"elements": [
|
|
29257
29207
|
"S",
|
|
29258
29208
|
"O"
|
|
@@ -29266,10 +29216,10 @@
|
|
|
29266
29216
|
"@class": "Ion",
|
|
29267
29217
|
"@version": null
|
|
29268
29218
|
},
|
|
29269
|
-
"formula_html": "
|
|
29270
|
-
"formula_latex": "
|
|
29219
|
+
"formula_html": "S<sub>2</sub>O<sub>6</sub><sup>-2</sup>",
|
|
29220
|
+
"formula_latex": "S$_{2}$O$_{6}$$^{-2}$",
|
|
29271
29221
|
"formula_hill": "O6 S2",
|
|
29272
|
-
"formula_pretty": "
|
|
29222
|
+
"formula_pretty": "S2O6^-2",
|
|
29273
29223
|
"oxi_state_guesses": {
|
|
29274
29224
|
"S": 5,
|
|
29275
29225
|
"O": -2
|
|
@@ -29419,95 +29369,9 @@
|
|
|
29419
29369
|
}
|
|
29420
29370
|
},
|
|
29421
29371
|
{
|
|
29422
|
-
"formula": "
|
|
29423
|
-
"charge": -1,
|
|
29424
|
-
"molecular_weight": "704.0398 g/mol",
|
|
29425
|
-
"elements": [
|
|
29426
|
-
"S",
|
|
29427
|
-
"O"
|
|
29428
|
-
],
|
|
29429
|
-
"chemsys": "O-S",
|
|
29430
|
-
"pmg_ion": {
|
|
29431
|
-
"S": 1,
|
|
29432
|
-
"O": 42,
|
|
29433
|
-
"charge": -1,
|
|
29434
|
-
"@module": "pymatgen.core.ion",
|
|
29435
|
-
"@class": "Ion",
|
|
29436
|
-
"@version": null
|
|
29437
|
-
},
|
|
29438
|
-
"formula_html": "SO<sub>42</sub><sup>-1</sup>",
|
|
29439
|
-
"formula_latex": "SO$_{42}$$^{-1}$",
|
|
29440
|
-
"formula_hill": "O42 S",
|
|
29441
|
-
"formula_pretty": "SO42^-1",
|
|
29442
|
-
"oxi_state_guesses": {
|
|
29443
|
-
"S": 6,
|
|
29444
|
-
"O": -0.16666666666666666
|
|
29445
|
-
},
|
|
29446
|
-
"n_atoms": 43,
|
|
29447
|
-
"n_elements": 2,
|
|
29448
|
-
"size": {
|
|
29449
|
-
"radius_ionic": {
|
|
29450
|
-
"value": "None",
|
|
29451
|
-
"reference": "pymatgen",
|
|
29452
|
-
"data_type": "experimental"
|
|
29453
|
-
},
|
|
29454
|
-
"radius_hydrated": null,
|
|
29455
|
-
"radius_vdw": {
|
|
29456
|
-
"value": "1.8 Å",
|
|
29457
|
-
"reference": "pymatgen",
|
|
29458
|
-
"data_type": "experimental"
|
|
29459
|
-
},
|
|
29460
|
-
"molar_volume": null
|
|
29461
|
-
},
|
|
29462
|
-
"thermo": {
|
|
29463
|
-
"ΔG_hydration": null,
|
|
29464
|
-
"ΔG_formation": null
|
|
29465
|
-
},
|
|
29466
|
-
"transport": {
|
|
29467
|
-
"diffusion_coefficient": null
|
|
29468
|
-
},
|
|
29469
|
-
"model_parameters": {
|
|
29470
|
-
"activity_pitzer": {
|
|
29471
|
-
"Beta0": null,
|
|
29472
|
-
"Beta1": null,
|
|
29473
|
-
"Beta2": null,
|
|
29474
|
-
"Cphi": null,
|
|
29475
|
-
"Max_C": null
|
|
29476
|
-
},
|
|
29477
|
-
"molar_volume_pitzer": {
|
|
29478
|
-
"Beta0": null,
|
|
29479
|
-
"Beta1": null,
|
|
29480
|
-
"Beta2": null,
|
|
29481
|
-
"Cphi": null,
|
|
29482
|
-
"V_o": null,
|
|
29483
|
-
"Max_C": null
|
|
29484
|
-
},
|
|
29485
|
-
"viscosity_jones_dole": {
|
|
29486
|
-
"B": null
|
|
29487
|
-
},
|
|
29488
|
-
"diffusion_temp_smolyakov": {
|
|
29489
|
-
"a1": {
|
|
29490
|
-
"value": "2.08 dimensionless",
|
|
29491
|
-
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
29492
|
-
"data_type": "fitted"
|
|
29493
|
-
},
|
|
29494
|
-
"a2": {
|
|
29495
|
-
"value": "13.4 dimensionless",
|
|
29496
|
-
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
29497
|
-
"data_type": "fitted"
|
|
29498
|
-
},
|
|
29499
|
-
"d": {
|
|
29500
|
-
"value": "34 dimensionless",
|
|
29501
|
-
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
29502
|
-
"data_type": "fitted"
|
|
29503
|
-
}
|
|
29504
|
-
}
|
|
29505
|
-
}
|
|
29506
|
-
},
|
|
29507
|
-
{
|
|
29508
|
-
"formula": "SO4[-1]",
|
|
29372
|
+
"formula": "S2O8[-2]",
|
|
29509
29373
|
"charge": -2,
|
|
29510
|
-
"molecular_weight": "
|
|
29374
|
+
"molecular_weight": "192.1252 g/mol",
|
|
29511
29375
|
"elements": [
|
|
29512
29376
|
"S",
|
|
29513
29377
|
"O"
|
|
@@ -29521,10 +29385,10 @@
|
|
|
29521
29385
|
"@class": "Ion",
|
|
29522
29386
|
"@version": null
|
|
29523
29387
|
},
|
|
29524
|
-
"formula_html": "
|
|
29525
|
-
"formula_latex": "
|
|
29388
|
+
"formula_html": "S<sub>2</sub>O<sub>8</sub><sup>-2</sup>",
|
|
29389
|
+
"formula_latex": "S$_{2}$O$_{8}$$^{-2}$",
|
|
29526
29390
|
"formula_hill": "O8 S2",
|
|
29527
|
-
"formula_pretty": "
|
|
29391
|
+
"formula_pretty": "S2O8^-2",
|
|
29528
29392
|
"oxi_state_guesses": {
|
|
29529
29393
|
"S": 5,
|
|
29530
29394
|
"O": -1.5
|
|
@@ -29675,9 +29539,21 @@
|
|
|
29675
29539
|
}
|
|
29676
29540
|
},
|
|
29677
29541
|
"diffusion_temp_smolyakov": {
|
|
29678
|
-
"a1":
|
|
29679
|
-
|
|
29680
|
-
|
|
29542
|
+
"a1": {
|
|
29543
|
+
"value": "2.08 dimensionless",
|
|
29544
|
+
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
29545
|
+
"data_type": "fitted"
|
|
29546
|
+
},
|
|
29547
|
+
"a2": {
|
|
29548
|
+
"value": "13.4 dimensionless",
|
|
29549
|
+
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
29550
|
+
"data_type": "fitted"
|
|
29551
|
+
},
|
|
29552
|
+
"d": {
|
|
29553
|
+
"value": "34 dimensionless",
|
|
29554
|
+
"reference": "https://doi.org/10.1016/j.cemconres.2017.08.030",
|
|
29555
|
+
"data_type": "fitted"
|
|
29556
|
+
}
|
|
29681
29557
|
},
|
|
29682
29558
|
"dielectric_zuber": {
|
|
29683
29559
|
"value": "-0.66 dimensionless",
|
|
@@ -34281,8 +34157,8 @@
|
|
|
34281
34157
|
}
|
|
34282
34158
|
},
|
|
34283
34159
|
{
|
|
34284
|
-
"formula": "WO4[-
|
|
34285
|
-
"charge": -
|
|
34160
|
+
"formula": "WO4[-2]",
|
|
34161
|
+
"charge": -2,
|
|
34286
34162
|
"molecular_weight": "247.8376 g/mol",
|
|
34287
34163
|
"elements": [
|
|
34288
34164
|
"W",
|
|
@@ -34292,18 +34168,18 @@
|
|
|
34292
34168
|
"pmg_ion": {
|
|
34293
34169
|
"W": 1,
|
|
34294
34170
|
"O": 4,
|
|
34295
|
-
"charge": -
|
|
34171
|
+
"charge": -2,
|
|
34296
34172
|
"@module": "pymatgen.core.ion",
|
|
34297
34173
|
"@class": "Ion",
|
|
34298
34174
|
"@version": null
|
|
34299
34175
|
},
|
|
34300
|
-
"formula_html": "WO<sub>4</sub><sup>-
|
|
34301
|
-
"formula_latex": "WO$_{4}$$^{-
|
|
34176
|
+
"formula_html": "WO<sub>4</sub><sup>-2</sup>",
|
|
34177
|
+
"formula_latex": "WO$_{4}$$^{-2}$",
|
|
34302
34178
|
"formula_hill": "O4 W",
|
|
34303
|
-
"formula_pretty": "WO4^-
|
|
34179
|
+
"formula_pretty": "WO4^-2",
|
|
34304
34180
|
"oxi_state_guesses": {
|
|
34305
34181
|
"W": 6,
|
|
34306
|
-
"O": -
|
|
34182
|
+
"O": -2
|
|
34307
34183
|
},
|
|
34308
34184
|
"n_atoms": 5,
|
|
34309
34185
|
"n_elements": 2,
|
|
@@ -34330,80 +34206,6 @@
|
|
|
34330
34206
|
"data_type": "experimental"
|
|
34331
34207
|
}
|
|
34332
34208
|
},
|
|
34333
|
-
"thermo": {
|
|
34334
|
-
"ΔG_hydration": null,
|
|
34335
|
-
"ΔG_formation": null
|
|
34336
|
-
},
|
|
34337
|
-
"transport": {
|
|
34338
|
-
"diffusion_coefficient": null
|
|
34339
|
-
},
|
|
34340
|
-
"model_parameters": {
|
|
34341
|
-
"activity_pitzer": {
|
|
34342
|
-
"Beta0": null,
|
|
34343
|
-
"Beta1": null,
|
|
34344
|
-
"Beta2": null,
|
|
34345
|
-
"Cphi": null,
|
|
34346
|
-
"Max_C": null
|
|
34347
|
-
},
|
|
34348
|
-
"molar_volume_pitzer": {
|
|
34349
|
-
"Beta0": null,
|
|
34350
|
-
"Beta1": null,
|
|
34351
|
-
"Beta2": null,
|
|
34352
|
-
"Cphi": null,
|
|
34353
|
-
"V_o": null,
|
|
34354
|
-
"Max_C": null
|
|
34355
|
-
},
|
|
34356
|
-
"viscosity_jones_dole": {
|
|
34357
|
-
"B": null
|
|
34358
|
-
},
|
|
34359
|
-
"diffusion_temp_smolyakov": {
|
|
34360
|
-
"a1": null,
|
|
34361
|
-
"a2": null,
|
|
34362
|
-
"d": null
|
|
34363
|
-
}
|
|
34364
|
-
}
|
|
34365
|
-
},
|
|
34366
|
-
{
|
|
34367
|
-
"formula": "WO4[-2]",
|
|
34368
|
-
"charge": -2,
|
|
34369
|
-
"molecular_weight": "247.8376 g/mol",
|
|
34370
|
-
"elements": [
|
|
34371
|
-
"W",
|
|
34372
|
-
"O"
|
|
34373
|
-
],
|
|
34374
|
-
"chemsys": "O-W",
|
|
34375
|
-
"pmg_ion": {
|
|
34376
|
-
"W": 1,
|
|
34377
|
-
"O": 4,
|
|
34378
|
-
"charge": -2,
|
|
34379
|
-
"@module": "pymatgen.core.ion",
|
|
34380
|
-
"@class": "Ion",
|
|
34381
|
-
"@version": null
|
|
34382
|
-
},
|
|
34383
|
-
"formula_html": "WO<sub>4</sub><sup>-2</sup>",
|
|
34384
|
-
"formula_latex": "WO$_{4}$$^{-2}$",
|
|
34385
|
-
"formula_hill": "O4 W",
|
|
34386
|
-
"formula_pretty": "WO4^-2",
|
|
34387
|
-
"oxi_state_guesses": {
|
|
34388
|
-
"W": 6,
|
|
34389
|
-
"O": -2
|
|
34390
|
-
},
|
|
34391
|
-
"n_atoms": 5,
|
|
34392
|
-
"n_elements": 2,
|
|
34393
|
-
"size": {
|
|
34394
|
-
"radius_ionic": {
|
|
34395
|
-
"value": "None",
|
|
34396
|
-
"reference": "pymatgen",
|
|
34397
|
-
"data_type": "experimental"
|
|
34398
|
-
},
|
|
34399
|
-
"radius_hydrated": null,
|
|
34400
|
-
"radius_vdw": {
|
|
34401
|
-
"value": "2.18 Å",
|
|
34402
|
-
"reference": "pymatgen",
|
|
34403
|
-
"data_type": "experimental"
|
|
34404
|
-
},
|
|
34405
|
-
"molar_volume": null
|
|
34406
|
-
},
|
|
34407
34209
|
"thermo": {
|
|
34408
34210
|
"ΔG_hydration": {
|
|
34409
34211
|
"value": "-1318.0 ± 30 kJ/mol",
|
pyEQL/functions.py
CHANGED
|
@@ -15,13 +15,17 @@ from pyEQL import Solution, ureg
|
|
|
15
15
|
logger = logging.getLogger(__name__)
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
def gibbs_mix(solution1: Solution, solution2: Solution):
|
|
18
|
+
def gibbs_mix(solution1: Solution, solution2: Solution, activity_correction: bool = True):
|
|
19
19
|
r"""
|
|
20
20
|
Return the Gibbs energy change associated with mixing two solutions.
|
|
21
21
|
|
|
22
22
|
Args:
|
|
23
23
|
solution1: a solution to be mixed.
|
|
24
24
|
solution2: a solution to be mixed.
|
|
25
|
+
activity_correction : bool, optional
|
|
26
|
+
If True, activities will be used to calculate the true energy of
|
|
27
|
+
mixing. If False, mole fraction will be used, resulting in a
|
|
28
|
+
calculation of the ideal energy of mixing (i.e., :math:`\Delta_{mix} S \times T` )
|
|
25
29
|
|
|
26
30
|
Returns:
|
|
27
31
|
The change in Gibbs energy associated with complete mixing of the
|
|
@@ -32,10 +36,17 @@ def gibbs_mix(solution1: Solution, solution2: Solution):
|
|
|
32
36
|
|
|
33
37
|
.. math::
|
|
34
38
|
|
|
35
|
-
\Delta_{mix}
|
|
39
|
+
\Delta_{mix} G_{true} = \sum_i {(n_c + n_d) R T \ln a_b} - \sum_i {n_c R T \ln a_c} - \sum_i {n_d R T \ln a_d}
|
|
36
40
|
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
or
|
|
42
|
+
|
|
43
|
+
.. math::
|
|
44
|
+
|
|
45
|
+
\Delta_{mix} G_{ideal} = \sum_i {(n_c + n_d) R T \ln x_b} - \sum_i {n_c R T \ln x_c} - \sum_i {n_d R T \ln x_d}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
Where :math:`n` is the number of moles of substance, :math:`T` is the temperature in kelvin, :math:`a` is the activity of solute :math:`i`,
|
|
49
|
+
:math:`x` is the mole fraction of solute :math:`i`, and subscripts :math:`b`, :math:`c`, and :math:`d` refer to the concentrated, dilute, and blended
|
|
39
50
|
Solutions, respectively.
|
|
40
51
|
|
|
41
52
|
Note that dissociated ions must be counted as separate components,
|
|
@@ -56,7 +67,12 @@ def gibbs_mix(solution1: Solution, solution2: Solution):
|
|
|
56
67
|
for solution in term_list:
|
|
57
68
|
for solute in solution.components:
|
|
58
69
|
if solution.get_amount(solute, "fraction") != 0:
|
|
59
|
-
|
|
70
|
+
if activity_correction is True:
|
|
71
|
+
term_list[solution] += solution.get_amount(solute, "mol") * np.log(solution.get_activity(solute))
|
|
72
|
+
else:
|
|
73
|
+
term_list[solution] += solution.get_amount(solute, "mol") * np.log(
|
|
74
|
+
solution.get_amount(solute, "fraction")
|
|
75
|
+
)
|
|
60
76
|
|
|
61
77
|
return (ureg.R * blend.temperature.to("K") * (term_list[blend] - term_list[concentrate] - term_list[dilute])).to(
|
|
62
78
|
"J"
|
|
@@ -72,16 +88,16 @@ def entropy_mix(solution1: Solution, solution2: Solution):
|
|
|
72
88
|
|
|
73
89
|
Returns:
|
|
74
90
|
The ideal mixing entropy associated with complete mixing of the
|
|
75
|
-
Solutions, in Joules.
|
|
91
|
+
Solutions, in Joules per Kelvin.
|
|
76
92
|
|
|
77
93
|
Notes:
|
|
78
94
|
The ideal entropy of mixing is calculated as follows
|
|
79
95
|
|
|
80
96
|
.. math::
|
|
81
97
|
|
|
82
|
-
\Delta_{mix} S = \sum_i {(n_c + n_d) R
|
|
98
|
+
\Delta_{mix} S = \sum_i {(n_c + n_d) R \ln x_b} - \sum_i {n_c R \ln x_c} - \sum_i {n_d R \ln x_d}
|
|
83
99
|
|
|
84
|
-
Where :math:`n` is the number of moles of substance, :math:`T` is the temperature in kelvin,
|
|
100
|
+
Where :math:`n` is the number of moles of substance, :math:`T` is the temperature in kelvin, :math:`x` is the mole fraction of solute :math:`i`,
|
|
85
101
|
and subscripts :math:`b`, :math:`c`, and :math:`d` refer to the concentrated, dilute, and blended
|
|
86
102
|
Solutions, respectively.
|
|
87
103
|
|
|
@@ -107,9 +123,7 @@ def entropy_mix(solution1: Solution, solution2: Solution):
|
|
|
107
123
|
solution.get_amount(solute, "fraction")
|
|
108
124
|
)
|
|
109
125
|
|
|
110
|
-
return (ureg.R *
|
|
111
|
-
"J"
|
|
112
|
-
)
|
|
126
|
+
return (ureg.R * (term_list[blend] - term_list[concentrate] - term_list[dilute])).to("J/K")
|
|
113
127
|
|
|
114
128
|
|
|
115
129
|
def donnan_eql(solution: Solution, fixed_charge: str):
|
|
@@ -135,9 +149,9 @@ def donnan_eql(solution: Solution, fixed_charge: str):
|
|
|
135
149
|
|
|
136
150
|
.. math::
|
|
137
151
|
|
|
138
|
-
\big(\frac{a_{-}}{\bar a_{-}} \big)^(\frac{1}{z_{-})
|
|
139
|
-
\big(\frac{\bar a_{+}}{a_{+}}\big)^(\frac{1}{z_{+})
|
|
140
|
-
\
|
|
152
|
+
\big(\frac{a_{-}}{\bar a_{-}} \big)^{(\frac{1}{z_{-}})}
|
|
153
|
+
\big(\frac{\bar a_{+}}{a_{+}}\big)^{(\frac{1}{z_{+}})}
|
|
154
|
+
=\exp \big(\frac{\Delta \pi \bar V}{RT z_{+} \nu_{+}}\big)
|
|
141
155
|
|
|
142
156
|
Where subscripts :math:`+` and :math:`-` indicate the cation and anion, respectively,
|
|
143
157
|
the overbar indicates the membrane phase,
|
pyEQL/presets/normal saline.yaml
CHANGED
pyEQL/presets/rainwater.yaml
CHANGED
pyEQL/presets/seawater.yaml
CHANGED
pyEQL/presets/urine.yaml
CHANGED
pyEQL/presets/wastewater.yaml
CHANGED
pyEQL/solution.py
CHANGED
|
@@ -1161,7 +1161,8 @@ class Solution(MSONable):
|
|
|
1161
1161
|
:meth:`get_amount`
|
|
1162
1162
|
:func:`pyEQL.utils.interpret_units`
|
|
1163
1163
|
"""
|
|
1164
|
-
|
|
1164
|
+
_units = interpret_units(units)
|
|
1165
|
+
TOT: Quantity = ureg.Quantity(0, _units)
|
|
1165
1166
|
|
|
1166
1167
|
# standardize the element formula and units
|
|
1167
1168
|
el = str(Element(element.split("(")[0]))
|
|
@@ -1178,7 +1179,7 @@ class Solution(MSONable):
|
|
|
1178
1179
|
else:
|
|
1179
1180
|
species = []
|
|
1180
1181
|
for k, v in comp_by_element.items():
|
|
1181
|
-
if
|
|
1182
|
+
if k.split("(")[0] == el:
|
|
1182
1183
|
species.extend(v)
|
|
1183
1184
|
|
|
1184
1185
|
# loop through the species of interest, adding moles of element
|
|
@@ -2294,9 +2295,7 @@ class Solution(MSONable):
|
|
|
2294
2295
|
self.logger.info("balance_charge is None, so no charge balancing will be performed.")
|
|
2295
2296
|
return
|
|
2296
2297
|
|
|
2297
|
-
self.logger.info(
|
|
2298
|
-
f"Solution is not electroneutral (C.B. = {cb} eq/L). Adjusting {self._cb_species} to compensate."
|
|
2299
|
-
)
|
|
2298
|
+
self.logger.info(f"Adjusting {self._cb_species} to compensate.")
|
|
2300
2299
|
|
|
2301
2300
|
if self.balance_charge == "pH":
|
|
2302
2301
|
# the charge imbalance associated with the H+ / OH- system can be expressed
|
pyEQL/utils.py
CHANGED
|
@@ -61,15 +61,15 @@ def standardize_formula(formula: str):
|
|
|
61
61
|
'Na+1', and 'Na[+]' will all standardize to "Na[+1]"
|
|
62
62
|
"""
|
|
63
63
|
# fix permuted sign and charge number (e.g. Co2+)
|
|
64
|
-
for str, rep in zip(["²⁺", "³⁺", "⁴⁺", "²⁻", "³⁻", "⁴⁻"], ["+2", "+3", "+4", "-2", "-3", "-4"]):
|
|
64
|
+
for str, rep in zip(["²⁺", "³⁺", "⁴⁺", "²⁻", "³⁻", "⁴⁻"], ["+2", "+3", "+4", "-2", "-3", "-4"], strict=False):
|
|
65
65
|
formula = formula.replace(str, rep)
|
|
66
66
|
|
|
67
67
|
# replace superscripts with non superscripts
|
|
68
|
-
for char, rep in zip("⁻⁺⁰¹²³⁴⁵⁶⁷⁸⁹", "-+0123456789"):
|
|
68
|
+
for char, rep in zip("⁻⁺⁰¹²³⁴⁵⁶⁷⁸⁹", "-+0123456789", strict=False):
|
|
69
69
|
formula = formula.replace(char, rep)
|
|
70
70
|
|
|
71
71
|
# replace subscripts with non subscripts
|
|
72
|
-
for char, rep in zip("₀₁₂₃₄₅₆₇₈₉", "0123456789"):
|
|
72
|
+
for char, rep in zip("₀₁₂₃₄₅₆₇₈₉", "0123456789", strict=False):
|
|
73
73
|
formula = formula.replace(char, rep)
|
|
74
74
|
|
|
75
75
|
sform = Ion.from_formula(formula).reduced_formula
|
|
@@ -81,18 +81,24 @@ def standardize_formula(formula: str):
|
|
|
81
81
|
# ammonia
|
|
82
82
|
if sform == "H4N[+1]":
|
|
83
83
|
sform = "NH4[+1]"
|
|
84
|
+
elif "H4NCl" in sform:
|
|
85
|
+
sform = sform.replace("H4NCl", "NH4Cl")
|
|
86
|
+
elif sform == "SO3[-1]":
|
|
87
|
+
sform = "S2O6[-2]"
|
|
88
|
+
elif sform == "SO4[-1]":
|
|
89
|
+
sform = "S2O8[-2]"
|
|
84
90
|
elif sform == "H3N(aq)":
|
|
85
91
|
sform = "NH3(aq)"
|
|
86
92
|
# phosphoric acid system
|
|
87
93
|
elif sform == "PH3O4(aq)":
|
|
88
94
|
sform = "H3PO4(aq)"
|
|
89
|
-
elif
|
|
90
|
-
sform = "HPO4
|
|
91
|
-
elif
|
|
92
|
-
sform = "H2PO4
|
|
95
|
+
elif "PHO4" in sform:
|
|
96
|
+
sform = sform.replace("PHO4", "HPO4")
|
|
97
|
+
elif "P(HO2)2" in sform:
|
|
98
|
+
sform = sform.replace("P(HO2)2", "H2PO4")
|
|
93
99
|
# thiocyanate
|
|
94
|
-
elif
|
|
95
|
-
sform = "SCN
|
|
100
|
+
elif "CSN" in sform:
|
|
101
|
+
sform = sform.replace("CSN", "SCN")
|
|
96
102
|
# triiodide, nitride, an phosphide
|
|
97
103
|
elif sform == "I[-0.33333333]":
|
|
98
104
|
sform = "I3[-1]"
|
|
@@ -137,6 +143,15 @@ def standardize_formula(formula: str):
|
|
|
137
143
|
elif sform == "C2I2ClO2[-1]":
|
|
138
144
|
sform = "CI2ClCOO[-1]"
|
|
139
145
|
|
|
146
|
+
# ammonium nitrate salts
|
|
147
|
+
elif sform == "H4N2O3(aq)":
|
|
148
|
+
sform = "NH4NO3(aq)"
|
|
149
|
+
# ammonium sulfate salts
|
|
150
|
+
elif sform == "H8S(NO2)2(aq)":
|
|
151
|
+
sform = "(NH4)2SO4(aq)"
|
|
152
|
+
elif sform == "H4SNO4[-1]":
|
|
153
|
+
sform = "NH4SO4[-1]"
|
|
154
|
+
|
|
140
155
|
# TODO - consider adding recognition of special formulas like MeOH for methanol or Cit for citrate
|
|
141
156
|
return sform
|
|
142
157
|
|
|
@@ -5,9 +5,12 @@ developed and maintained by the Kingsbury Lab at Princeton University.
|
|
|
5
5
|
|
|
6
6
|
Other contributors, listed alphabetically, are:
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
- Arpit Bhardwaj (@abhardwaj73)
|
|
9
|
+
- Dhruv Duseja (@DhruvDuseja)
|
|
10
|
+
- Hernan Grecco (@hgrecco)
|
|
11
|
+
- Jaebeom Park (@Jaebeom-P)
|
|
12
|
+
- Kirill Pushkarev (@kirill-push)
|
|
13
|
+
- Andrew Rosen (@arosen93)
|
|
14
|
+
- Sui Xiong Tay (@SuixiongTay)
|
|
12
15
|
|
|
13
16
|
(If you think that your name belongs here, please let the maintainer know)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pyEQL
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: A python interface for solution chemistry
|
|
5
5
|
Author-email: Ryan Kingsbury <kingsbury@princeton.edu>
|
|
6
6
|
Project-URL: Docs, https://pyeql.readthedocs.io/
|
|
@@ -15,19 +15,19 @@ Classifier: Development Status :: 4 - Beta
|
|
|
15
15
|
Classifier: Intended Audience :: Science/Research
|
|
16
16
|
Classifier: Operating System :: OS Independent
|
|
17
17
|
Classifier: Topic :: Scientific/Engineering
|
|
18
|
-
Requires-Python: >=3.
|
|
18
|
+
Requires-Python: >=3.10
|
|
19
19
|
Description-Content-Type: text/markdown
|
|
20
20
|
License-File: LICENSE.txt
|
|
21
21
|
License-File: COPYING
|
|
22
22
|
License-File: AUTHORS.md
|
|
23
23
|
Requires-Dist: pint >=0.19
|
|
24
|
-
Requires-Dist: numpy <2
|
|
25
|
-
Requires-Dist: scipy
|
|
26
|
-
Requires-Dist: pymatgen
|
|
27
|
-
Requires-Dist: iapws
|
|
24
|
+
Requires-Dist: numpy <2,>1.26
|
|
25
|
+
Requires-Dist: scipy >=1.12
|
|
26
|
+
Requires-Dist: pymatgen >=2024.9.10
|
|
27
|
+
Requires-Dist: iapws >=1.5.3
|
|
28
28
|
Requires-Dist: monty >=2024.7.12
|
|
29
29
|
Requires-Dist: maggma >=0.67.0
|
|
30
|
-
Requires-Dist: phreeqpython
|
|
30
|
+
Requires-Dist: phreeqpython >=1.5.2
|
|
31
31
|
Provides-Extra: docs
|
|
32
32
|
Requires-Dist: sphinx >=3.2.1 ; extra == 'docs'
|
|
33
33
|
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
|
|
@@ -35,20 +35,20 @@ Requires-Dist: myst-parser[linkify] ; extra == 'docs'
|
|
|
35
35
|
Provides-Extra: full
|
|
36
36
|
Requires-Dist: rich ; extra == 'full'
|
|
37
37
|
Provides-Extra: testing
|
|
38
|
-
Requires-Dist: setuptools ; extra == 'testing'
|
|
39
|
-
Requires-Dist: pre-commit ; extra == 'testing'
|
|
40
|
-
Requires-Dist: pytest ; extra == 'testing'
|
|
41
|
-
Requires-Dist: pytest-cov ; extra == 'testing'
|
|
42
|
-
Requires-Dist: pytest-xdist ; extra == 'testing'
|
|
38
|
+
Requires-Dist: setuptools >=68 ; extra == 'testing'
|
|
39
|
+
Requires-Dist: pre-commit >=2 ; extra == 'testing'
|
|
40
|
+
Requires-Dist: pytest >=7 ; extra == 'testing'
|
|
41
|
+
Requires-Dist: pytest-cov >=2.11 ; extra == 'testing'
|
|
42
|
+
Requires-Dist: pytest-xdist >2 ; extra == 'testing'
|
|
43
43
|
Requires-Dist: black ; extra == 'testing'
|
|
44
|
-
Requires-Dist: mypy ; extra == 'testing'
|
|
45
|
-
Requires-Dist: ruff ; extra == 'testing'
|
|
44
|
+
Requires-Dist: mypy >1 ; extra == 'testing'
|
|
45
|
+
Requires-Dist: ruff >0.0.100 ; extra == 'testing'
|
|
46
46
|
Requires-Dist: tox <4 ; extra == 'testing'
|
|
47
47
|
|
|
48
48
|
[](https://pyeql.readthedocs.io/en/latest/)
|
|
49
49
|
[](https://github.com/KingsburyLab/pyeql/actions?query=workflow%3Atesting)
|
|
50
50
|
[](https://codecov.io/gh/KingsburyLab/pyeql)
|
|
51
|
-

|
|
52
52
|
[](https://doi.org/10.5281/zenodo.8332915)
|
|
53
53
|
[](https://badge.fury.io/py/pyEQL)
|
|
54
54
|
[](https://joss.theoj.org/papers/bdd9e247ea9736a0fdbbd5fe12bef7a6)
|
|
@@ -112,7 +112,7 @@ Detailed documentation is available at [https://pyeql.readthedocs.io/](https://p
|
|
|
112
112
|
|
|
113
113
|
### Dependencies
|
|
114
114
|
|
|
115
|
-
- Python 3.
|
|
115
|
+
- Python 3.10+. This project will attempt to adhere to NumPy's
|
|
116
116
|
[NEP 29](https://numpy.org/neps/nep-0029-deprecation_policy.html) deprecation policy
|
|
117
117
|
for older version of Python.
|
|
118
118
|
- [pint](https://github.com/hgrecco/pint) - for units-aware calculations
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
pyEQL/__init__.py,sha256=OCp_PiQEPyVoi1VX0ursBzHJWN6nDS1Id6bTBOgqCYs,1999
|
|
2
|
+
pyEQL/activity_correction.py,sha256=eOixjgTd5hTrTRD5s6aPCCG12lAIH7-lRN0Z1qHu678,37151
|
|
3
|
+
pyEQL/engines.py,sha256=VbdQSPKlNehW96U1XxWYwjTy6k6WDpZZEx_Y4l3qZv4,34686
|
|
4
|
+
pyEQL/equilibrium.py,sha256=YCtoAJSgn1WC9NJnc3H4FTJdKQvogsvCuj7HqlKMtww,8307
|
|
5
|
+
pyEQL/functions.py,sha256=8TePRHfOWsDnFsmBA-twv5XZyhrkMQI6VroDLouckho,11452
|
|
6
|
+
pyEQL/salt_ion_match.py,sha256=0nCZXmeo67VqcyYWQpPx-81hjSvnsg8HFB3fIyfjW_k,4070
|
|
7
|
+
pyEQL/solute.py,sha256=no00Rc3tRfHmyht4wm2UXA1KZhKC45tWMO5QEkZY6yg,5140
|
|
8
|
+
pyEQL/solution.py,sha256=3hvtqeu5KzfFKzeOdKlzS_aIFPTNgUfhjIwBurfuGJw,115754
|
|
9
|
+
pyEQL/utils.py,sha256=dXXM7_Mv0-8MWDjoPfNl9qoFmRgV0eVt_iSEhu1JYSc,7194
|
|
10
|
+
pyEQL/database/geothermal.dat,sha256=kksnfcBtWdOTpNn4CLXU1Mz16cwas2WuVKpuMU8CaVI,234230
|
|
11
|
+
pyEQL/database/llnl.dat,sha256=jN-a0kfUFbQlYMn2shTVRg1JX_ZhLa-tJ0lLw2YSpLU,751462
|
|
12
|
+
pyEQL/database/phreeqc_license.txt,sha256=8W1r8VxC2kVptIMSU9sDFNASYqN7MdwKEtIWWfjTQuM,2906
|
|
13
|
+
pyEQL/database/pyeql_db.json,sha256=OFUwq3KjbSzmpUE9kkn17TXF4aszs-2ki5N0VKX8E0o,1075941
|
|
14
|
+
pyEQL/presets/Ringers lactate.yaml,sha256=kaGiBbg_JFrmOm8xZqb_EMVqeQYxll7pOOvXcmxAJ5I,413
|
|
15
|
+
pyEQL/presets/normal saline.yaml,sha256=eT5MZKgc0uW-TrQOiX87ZoTwlMO-OEhTvQyQAXoIa80,318
|
|
16
|
+
pyEQL/presets/rainwater.yaml,sha256=QG3aol2Z5HwLj-s6frN7hYNQr01qw_HR2h5f4BdAvVc,337
|
|
17
|
+
pyEQL/presets/seawater.yaml,sha256=Kts0vAmXSPvPzy_PJpx0RR2uSt40izxp-687Qi02oro,843
|
|
18
|
+
pyEQL/presets/urine.yaml,sha256=Zpcr2Dp7xZrlLqzYk4UcMyWXlNrd2AFUexWpb8k9FEg,679
|
|
19
|
+
pyEQL/presets/wastewater.yaml,sha256=zJcpp9Ye4hIw6iInsdV5bgjTNuJ8oAUVimsUgZXlG-w,502
|
|
20
|
+
pyEQL-1.2.0.dist-info/AUTHORS.md,sha256=Ukdh6f3jO6jdgl2k_r_xdNOuzmjXcISMQqUTSH39QVw,506
|
|
21
|
+
pyEQL-1.2.0.dist-info/COPYING,sha256=Ww2oUywfFTn242v9ksCgQdIVSpcMXJiKKePn0GFm25E,7649
|
|
22
|
+
pyEQL-1.2.0.dist-info/LICENSE.txt,sha256=2Zf1F7RzbpeposgIxUydpurqNCMoMgDi2gAB65_GjwQ,969
|
|
23
|
+
pyEQL-1.2.0.dist-info/METADATA,sha256=okvLJvrb90RHE5Y3GoTDeXbvY0i_b4oP9MPa6TgIn5A,6151
|
|
24
|
+
pyEQL-1.2.0.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
|
25
|
+
pyEQL-1.2.0.dist-info/top_level.txt,sha256=QMOaZjCAm_lS4Njsjh4L0B5aWnJFGQMYKhuH88CG1co,6
|
|
26
|
+
pyEQL-1.2.0.dist-info/RECORD,,
|
pyEQL-1.1.5.dist-info/RECORD
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
pyEQL/__init__.py,sha256=OCp_PiQEPyVoi1VX0ursBzHJWN6nDS1Id6bTBOgqCYs,1999
|
|
2
|
-
pyEQL/activity_correction.py,sha256=eOixjgTd5hTrTRD5s6aPCCG12lAIH7-lRN0Z1qHu678,37151
|
|
3
|
-
pyEQL/engines.py,sha256=VbdQSPKlNehW96U1XxWYwjTy6k6WDpZZEx_Y4l3qZv4,34686
|
|
4
|
-
pyEQL/equilibrium.py,sha256=YCtoAJSgn1WC9NJnc3H4FTJdKQvogsvCuj7HqlKMtww,8307
|
|
5
|
-
pyEQL/functions.py,sha256=nc-Hc61MmW-ELBR1PByJvQnELxM7PZexMHbU_O5-Bnw,10584
|
|
6
|
-
pyEQL/salt_ion_match.py,sha256=0nCZXmeo67VqcyYWQpPx-81hjSvnsg8HFB3fIyfjW_k,4070
|
|
7
|
-
pyEQL/solute.py,sha256=no00Rc3tRfHmyht4wm2UXA1KZhKC45tWMO5QEkZY6yg,5140
|
|
8
|
-
pyEQL/solution.py,sha256=0eaPmI3bm_ipGyXtZCcQQ5kuA8Bv_0DBYZeZZ3eWXYk,115758
|
|
9
|
-
pyEQL/utils.py,sha256=DWLtNm71qw5j4-jqBp5v3LssEjWgJnVvI6a_H60c5ic,6670
|
|
10
|
-
pyEQL/database/geothermal.dat,sha256=kksnfcBtWdOTpNn4CLXU1Mz16cwas2WuVKpuMU8CaVI,234230
|
|
11
|
-
pyEQL/database/llnl.dat,sha256=jN-a0kfUFbQlYMn2shTVRg1JX_ZhLa-tJ0lLw2YSpLU,751462
|
|
12
|
-
pyEQL/database/phreeqc_license.txt,sha256=8W1r8VxC2kVptIMSU9sDFNASYqN7MdwKEtIWWfjTQuM,2906
|
|
13
|
-
pyEQL/database/pyeql_db.json,sha256=-7Z8tpAddXhPlvpxms7cFQKL_DSSbemzOzxm6L5vaVk,1080801
|
|
14
|
-
pyEQL/presets/Ringers lactate.yaml,sha256=vtSnuvgALHR27XEjpDzC0xyw5-E6b2FSsF1EUEBiWpw,413
|
|
15
|
-
pyEQL/presets/normal saline.yaml,sha256=i2znhnIeXfNx1iMFFSif7crMRCFRP6xN1m7Wp7USduM,318
|
|
16
|
-
pyEQL/presets/rainwater.yaml,sha256=S0WHZNDfCJyjSSFxNFdkypjn2s3P0jJGCiYIxvi1ibA,337
|
|
17
|
-
pyEQL/presets/seawater.yaml,sha256=oryc1CkhRz20RpWE6uiGiT93HoZnqlB0s-0PmBWr3-U,843
|
|
18
|
-
pyEQL/presets/urine.yaml,sha256=0Njtc-H1fFRo7UhquHdiSTT4z-8VZJ1utDCk02qk28M,679
|
|
19
|
-
pyEQL/presets/wastewater.yaml,sha256=jTTFBpmKxczaEtkCZb0xUULIPZt7wfC8eAJ6rthGnmw,502
|
|
20
|
-
pyEQL-1.1.5.dist-info/AUTHORS.md,sha256=K9ZLhKFwZ2zLlFXwN62VuUYCpr5T6n4mOUCUHlytTUs,415
|
|
21
|
-
pyEQL-1.1.5.dist-info/COPYING,sha256=Ww2oUywfFTn242v9ksCgQdIVSpcMXJiKKePn0GFm25E,7649
|
|
22
|
-
pyEQL-1.1.5.dist-info/LICENSE.txt,sha256=2Zf1F7RzbpeposgIxUydpurqNCMoMgDi2gAB65_GjwQ,969
|
|
23
|
-
pyEQL-1.1.5.dist-info/METADATA,sha256=TXDkdGyqFqh4LJfyOFtcqlbRnNh87kySnIPAKzUE1k8,6096
|
|
24
|
-
pyEQL-1.1.5.dist-info/WHEEL,sha256=Rp8gFpivVLXx-k3U95ozHnQw8yDcPxmhOpn_Gx8d5nc,91
|
|
25
|
-
pyEQL-1.1.5.dist-info/top_level.txt,sha256=QMOaZjCAm_lS4Njsjh4L0B5aWnJFGQMYKhuH88CG1co,6
|
|
26
|
-
pyEQL-1.1.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|