Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
c58c02b
refactor add to helper, support multiple jobs, remove func_kwarg
RDaxini Feb 18, 2026
f45bf35
Update test_scenario.py
RDaxini Feb 18, 2026
4d880d3
update notebooks/scripts
RDaxini Feb 18, 2026
3ea49b5
add example to addJob()
RDaxini Feb 18, 2026
9a3b1d0
test value errors
RDaxini Feb 18, 2026
59562b4
general test for addition to pipeline
RDaxini Feb 18, 2026
145d01e
update addjob to take material layer
RDaxini Mar 12, 2026
5c227b6
update examples
RDaxini Mar 12, 2026
fc06057
reinitialize pipeline to None
RDaxini Mar 12, 2026
f7c81d8
update/add tests
RDaxini Mar 12, 2026
8db541a
update gitignore
RDaxini Mar 12, 2026
dff78fc
update notebook and py file for scenario temperature
RDaxini Mar 12, 2026
1773662
allow callable only (no material layer) e.g. for standoff/solder fatigue
RDaxini Mar 12, 2026
c37d07e
Update test_scenario.py
RDaxini Mar 12, 2026
7832c01
rerun single location scenario
RDaxini Mar 12, 2026
97c24d0
update docstring
RDaxini Mar 12, 2026
63a2aa1
example
RDaxini Mar 14, 2026
6d73ee1
Update .gitignore
RDaxini Mar 14, 2026
1b045cf
Update scenario.py
RDaxini Mar 14, 2026
ebfdd54
Update test_scenario.py
RDaxini Mar 14, 2026
43bf84e
Update .gitignore
RDaxini Mar 17, 2026
711ad4f
update notebook and py
RDaxini Mar 17, 2026
60348f6
false positive flake8
RDaxini Mar 18, 2026
e48be05
test coverage (_resolve_material_params())
RDaxini Mar 18, 2026
3d04fcc
combine addjob instances
RDaxini Mar 18, 2026
50aa783
Merge pull request #318 from NatLabRockies/materials
RDaxini Mar 19, 2026
145b14a
validation nb
RDaxini Mar 19, 2026
fc427bc
Merge branch 'development_0800' into modify_run()
RDaxini Mar 19, 2026
339c946
nbval ignore output
RDaxini Mar 23, 2026
b1af826
try skip
RDaxini Mar 23, 2026
c3ef7d9
exclude problematic pvgis cell
RDaxini Mar 26, 2026
c844c2e
update env, rerun
RDaxini Mar 27, 2026
31ce3b2
Merge pull request #321 from NatLabRockies/modify_run()
RDaxini Mar 27, 2026
dc5dcbe
Update scenario.py
RDaxini Mar 27, 2026
49fb913
Bump aiohttp from 3.13.3 to 3.13.4
dependabot[bot] Apr 1, 2026
975d874
document name and depends on args
RDaxini Apr 10, 2026
22613b4
remove examples until we have an example
RDaxini Apr 10, 2026
c738d1a
update database variables to match paper
RDaxini Apr 10, 2026
05f5640
Merge pull request #323 from NatLabRockies/sequentialscenario
RDaxini Apr 13, 2026
8dc7e51
Create v0.7.2.rst
RDaxini Apr 13, 2026
8745e97
Merge pull request #324 from NatLabRockies/dependabot/pip/aiohttp-3.13.4
RDaxini Apr 13, 2026
ebb3fda
switch constant for R_GAS
RDaxini Apr 13, 2026
d0ad526
add perovskite_degradation()
RDaxini Apr 13, 2026
82a9c06
add tests
RDaxini Apr 13, 2026
dc04b8e
replace hardcoded values with json database call
RDaxini Apr 13, 2026
f3d62b6
add ph2o arg (for sequential analysis)
RDaxini Apr 14, 2026
3f6b7f0
add function for water vapor pressure (ph2o)
RDaxini Apr 14, 2026
818e070
Update scenario.py
RDaxini Apr 14, 2026
39061e3
create sequential perovskite degradation notebook
RDaxini Apr 14, 2026
da45689
Merge branch 'development_0800' into pvdjob
RDaxini May 10, 2026
a580b4f
Update config.py
RDaxini May 10, 2026
14726f7
Update scenario.py
RDaxini May 10, 2026
0a6bc71
Merge pull request #326 from NatLabRockies/pvdjob
RDaxini May 10, 2026
a1a474c
Merge branch 'pvdjob' into perovskite_degradation
RDaxini May 10, 2026
101d80f
Update .gitignore
RDaxini May 10, 2026
d699c86
D046 entry
RDaxini May 10, 2026
de93518
Delete temperature and degradation.json
RDaxini May 10, 2026
405a0cb
refine siegler notebook
RDaxini May 10, 2026
3f9392d
degradation functions, tests
RDaxini May 10, 2026
0988e7a
perovskite degradation -> ey
RDaxini May 10, 2026
6f6cbf2
hypothetical perovskite module stack
RDaxini May 10, 2026
80f8759
rerun notebooks that print new database entries
RDaxini May 10, 2026
31e9364
api, nbval
RDaxini May 10, 2026
8368df5
update requirements.txt and notebooks
RDaxini May 10, 2026
74ce05e
update module stack nb
RDaxini May 10, 2026
13a455c
Update nbval.yaml
RDaxini May 10, 2026
cd13fa3
Update 05_scenario_perovskite_sequential.ipynb
RDaxini May 10, 2026
fe01a62
nbval / nb update
RDaxini May 11, 2026
e9ea653
Update 07_scenario_module_stack.ipynb
RDaxini May 11, 2026
5c47673
based on copilot suggestions
RDaxini May 11, 2026
89fa30d
Update degradation.py
RDaxini May 11, 2026
8c093bd
Update test_degradation.py
RDaxini May 11, 2026
608adb3
Merge pull request #325 from NatLabRockies/perovskite_degradation
RDaxini May 11, 2026
3a15b29
add ff degradation, aa generation
RDaxini May 15, 2026
ff43fb9
AA(T) generation param in AApermeation.json
RDaxini May 15, 2026
227e6de
update module stack scenario example notebook
RDaxini May 15, 2026
77c9555
rh scaling
RDaxini May 15, 2026
50054d8
Update degradation.py
RDaxini May 19, 2026
875b088
clean up module stack notebook
RDaxini May 19, 2026
5a1d1d6
Update test_degradation.py
RDaxini May 19, 2026
ae6c1b6
Merge pull request #327 from NatLabRockies/aadegradation
RDaxini May 19, 2026
bddb1bd
(out of scope) change perovskite nb title
RDaxini May 19, 2026
5c08521
Update humidity.py as requested
RDaxini May 19, 2026
3c77e4c
add tests
RDaxini May 19, 2026
be416b5
create backsheet comparison example
RDaxini May 19, 2026
140d459
Update nbval.yaml
RDaxini May 19, 2026
aa20d26
Update humidity.py
RDaxini May 19, 2026
e8bc892
Update 05_letid_passivated_wafer.ipynb
RDaxini May 19, 2026
fcd16c6
Update nbval_sanitization_rules.cfg
RDaxini May 19, 2026
6db77c5
remove nbval ignore following improved sanitization rules
RDaxini May 19, 2026
5257907
remove printed job names
RDaxini May 19, 2026
b9dff5c
add eqn variable definitions
RDaxini May 20, 2026
15f1f51
Update humidity.py
RDaxini May 20, 2026
a8caf7b
Update DegradationDatabase.json
RDaxini May 22, 2026
90e5230
Merge pull request #328 from NatLabRockies/backsheet_comparison_example
RDaxini May 22, 2026
c50c704
formatting backsheet comparison nb
RDaxini Jun 1, 2026
4d72170
delete multimaterial test/validation notebooks
RDaxini Jun 1, 2026
a6b8a19
variable naming
RDaxini Jun 1, 2026
9221f4e
update notebooks
RDaxini Jun 1, 2026
b39eb59
unrelated notebooks clarity update
RDaxini Jun 2, 2026
a12a0b5
remove leftovers from rh scaling attempt
RDaxini Jun 2, 2026
89e204b
Merge pull request #343 from NatLabRockies/variablenames
RDaxini Jun 2, 2026
9f11ae6
Update pyproject.toml
RDaxini Jun 9, 2026
a8874e4
Bump aiohttp from 3.13.3 to 3.14.1
dependabot[bot] Jun 17, 2026
541e490
Update v0.7.2.rst
RDaxini Jun 17, 2026
1b812aa
add whatsnew entry for #344
RDaxini Jun 17, 2026
0d2e22f
Update v0.7.2.rst
RDaxini Jun 17, 2026
7729818
create geo build option, update whatsnew
RDaxini Jun 17, 2026
92c5bba
Revert "create geo build option, update whatsnew"
RDaxini Jun 18, 2026
554dd83
Merge branch 'development' into dependabot/pip/aiohttp-3.14.1
RDaxini Jun 25, 2026
e2e01f9
fix encoding
RDaxini Jun 25, 2026
0ca71f7
fix nb vailure 06 perov ey
RDaxini Jun 25, 2026
f69af91
trying to fix 0.1 degree error (rounding?)
RDaxini Jun 26, 2026
1fa3880
Merge pull request #346 from NatLabRockies/dependabot/pip/aiohttp-3.14.1
RDaxini Jun 26, 2026
f1703f0
Merge branch 'development' into development_0800
RDaxini Jun 26, 2026
46040c7
Merge branch 'development' into dependencies
RDaxini Jun 26, 2026
8a461fa
Merge pull request #347 from NatLabRockies/dependencies
martin-springer Jun 26, 2026
33612e9
weather database access nb use local file
RDaxini Jun 30, 2026
716699a
update astm live demo
RDaxini Jun 30, 2026
2c5d5d0
update failing notebooks custom and astm
RDaxini Jul 1, 2026
8671306
Update v0.7.2.rst
RDaxini Jul 1, 2026
b8a8db2
Fix scenario temp
RDaxini Jul 1, 2026
d93aca2
Merge pull request #350 from NatLabRockies/notebook_check
RDaxini Jul 10, 2026
6e1b5d7
Merge branch 'development' into development_0800
RDaxini Jul 10, 2026
ab0d99b
fix notebooks
RDaxini Jul 10, 2026
7e9abcf
nullify execution count on 06 scenario perovskite nb
RDaxini Jul 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/nbval_sanitization_rules.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,11 @@ replace: SCIPY-OPTIMIZATION-WARNING
[regex18]
regex: ^\s*C = A / \(A \+ B\)
replace:

[regex19]
regex: [Pp]vdeg version\s*:\s*.*
replace: pvdeg version : X.X.X

[regex20]
regex: ^\s*Named results:\s*\[.*\]$
replace: Named results: [NBVAL-SANITIZED]
4 changes: 4 additions & 0 deletions .github/workflows/nbval.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ jobs:
"02_degradation/06_vant_hoff_degradation_model.ipynb:5"
"03_monte_carlo/01_arrhenius.ipynb:180"
"03_monte_carlo/02_standoff.ipynb:30"
"04_scenario/05_scenario_perovskite_sequential.ipynb:15"
"04_scenario/06_scenario_perovskite_ey.ipynb:50"
"04_scenario/07_scenario_module_stack.ipynb:20"
"04_scenario/08_scenario_backsheet_comparison.ipynb:30"
"06_advanced/01_custom_functions_nopython.ipynb:30"
"10_workshop_demos/01_astm_live_demo.ipynb:10"
steps:
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -117,3 +117,9 @@ tests\data\h5_pytest.h5
tests/TEMP_test_addModule_materials.py
/tutorials_and_tools/tutorials_and_tools/pvd_job_temperature and degradation/pipeline_results
/tutorials/04_scenario/pvd_job_temperature and degradation/pipeline_results
/tutorials/04_scenario/pvd_job_temperature and degradation
/pipeline_results
/tutorials/04_scenario/pvd_job_two-material-demo/pipeline_results
/tutorials/04_scenario/pvd_job_two-material-demo
/tutorials/04_scenario/pvd_job_stack
/tutorials/04_scenario/pvd_job_perov-module-stack
4 changes: 0 additions & 4 deletions TEMP/.gitignore

This file was deleted.

40 changes: 40 additions & 0 deletions docs/source/whatsnew/releases/v0.7.2.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
v0.7.2 (2026-XX-XX)
===================

Enhancements
------------


Documentation
-------------


Notebooks
---------
- Make the ASTM live demo and custom-functions tutorial notebooks reproducible
offline by loading cached NSRDB TMY data (with ``USE_LIVE_*`` toggle for the
live API path), fixing ``nbval`` failures caused by stale stored outputs and
the PVGIS API being unreachable from CI. (:issue:`342`, :pull:`350`)


Deprecations
-------------


Bug Fixes
---------


Dependencies
------------
- Move ``pre-commit`` from core install requirements to the optional development
extras (``dev = ["pre-commit"]``), reducing runtime dependency footprint.
(:issue:`341`, :pull:`347`)
- Bump aiohttp from 3.13.3 to 3.14.1. (:pull:`344`)



Contributors
------------
- Rajiv Daxini (:ghuser:`rdaxini`)

2 changes: 2 additions & 0 deletions pvdeg/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
# downloader target directory
METOROLOGICAL_DOWNLOAD_PATH = Path.home() / "PVDeg-Meteorological"

SCENARIO_OUTPUT_PATH = None

# DATA_LIBRARY = PVDEG_DIR.parent / "DataLibrary"
# if not os.path.isdir(DATA_LIBRARY):
# DATA_LIBRARY = os.path.join(sys.prefix, "DataLibrary")
Expand Down
14 changes: 14 additions & 0 deletions pvdeg/data/AApermeation.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,19 @@
"comment": "Extracted from Figure 10 of Weber et al. The activation energy does not exactly match that in the published work (35.0 kJ/mol). I did this because I wanted to include the prefactor.",
"Ead": { "name": "Diffusivity Activation Energy", "units": "kJ/mol", "value": 39.1970399216688 },
"Do": { "name": "Diffusivity Prefactor", "units": "cm²/s", "value": 0.190570685252167 }
},

"AA002": {
"name": "EVA-source-term",
"alias": "EVA-AA-generation",
"contributor": "Luca Gnocchi / Michael Kempe",
"source_generation": "Kempe, Michael D., et al. Acetic acid production and glass transition concerns with ethylene-vinyl acetate used in photovoltaic devices. Solar Energy Materials and Solar Cells 91.4 (2007): 315-329.",
"source_diffusion": "Kim, Namsu, and Changwoon Han. Experimental characterization and simulation of water vapor diffusion through various encapsulants used in PV modules. Solar Energy Materials and Solar Cells 116 (2013): 68-75.",
"source_validation": "Gnocchi, Luca, et al. Measuring and modelling the generation of acetic acid in aged ethylene-vinyl acetate-based encapsulants used in solar modules. EU PVSEC 2018.",
"comment": "Acetic acid (AA) generation source term and diffusion coefficient for FEM-type acetic acid production modeling in EVA. Source term at 27°C from Kempe 2007; diffusion coefficient at 50°C from Kim & Han 2013. Used in Gnocchi et al. Table I. Defines how fast AA is genearted inside the EVA encapsulant in PV modules. These parameters allow AA production calculation as a function of temperature, using an Arrhenius equation.",
"Ro": { "name": "Source Term Prefactor", "units": "ng/min/g", "value": 0.00331, "ref_temp_C": 27 },
"Ea_gen": { "name": "Generation Activation Energy", "units": "kJ/mol", "value": 90.0 },
"D_ref": { "name": "Diffusion Coefficient at Reference Temperature", "units": "m²/s", "value": 1e-11, "ref_temp_C": 50 },
"Ea_diff": { "name": "Diffusion Activation Energy", "units": "kJ/mol", "value": 35.0 }
}
}
38 changes: 29 additions & 9 deletions pvdeg/data/DegradationDatabase.json
Original file line number Diff line number Diff line change
Expand Up @@ -308,15 +308,15 @@
"Degradation": "Optical Transmittance In-Situ measurement",
"Comments": "LED Light at 550nm",
"EquationType": "Perovskite_1",
"Equation": "R_D=R_{0,WPO}\\cdot e^{ \\left( \\frac{-E_{a,WPO}}{R\\cdot T_K } \\right) } \\cdot \\left< \\frac{P_{O_2}\\cdot P_{H_2 O}\\cdot G_{550}^{0.7} }{ \\left[ 1+K_{2W}\\cdot P_{O_2} \\left(1+K_{3W}\\cdot G_{550}^{0.7} \\right) \\right]^2} \\right> +R_{0,DPO}\\cdot e^ {\\left( \\frac{-E_{a,DPO}}{R\\cdot T_K} \\right) } \\cdot \\frac{P_{O_2} \\cdot G_{550}^{0.7} }{1+K_{2D}\\cdot P_{O_2} \\cdot \\left( 1+K_3D\\cdot G_{550}^{0.7} \\right)} +R_{0,hum}\\cdot e^ { \\left( \\frac {-E_a^{hum}}{R\\cdot T_K } \\right) } \\cdot P_{H_2 O}\\cdot G_{550}^{0.7}+R_{0,therm}\\cdot e^{ \\left( \\frac{-E_a^{therm}}{R\\cdot T_K } \\right) }",
"Equation": "R_D=k_{0,WPO}\\cdot e^{ \\left( \\frac{-E_{A,WPO}}{R\\cdot T_K } \\right) } \\cdot \\frac{P_{O_2}\\cdot P_{H_2 O}\\cdot I_{in}^{0.7} }{ \\left[ 1+K_{2W}\\cdot P_{O_2} \\left(1+K_{3W}\\cdot I_{in}^{0.7} \\right) \\right]^2} +k_{0,DPO}\\cdot e^ {\\left( \\frac{-E_{A,DPO}}{R\\cdot T_K} \\right) } \\cdot \\frac{P_{O_2} \\cdot I_{in}^{0.7} }{1+K_{2D}\\cdot P_{O_2} \\cdot \\left( 1+K_{3D}\\cdot I_{in}^{0.7} \\right)} +k_{0,hum}\\cdot e^ { \\left( \\frac {-E_{A}^{hum}}{R\\cdot T_K } \\right) } \\cdot P_{H_2 O}\\cdot I_{in}^{0.7}+k_{0,therm}\\cdot e^{ \\left( \\frac{-E_{A}^{therm}}{R\\cdot T_K } \\right) }",
"R_D": {
"units": "mol/(m^2·s)"
},
"R_0,WPO": {
"k_0,WPO": {
"value": 3.16E-25,
"units": "mol/(m^2·s·kpa^2 )·(photons/(m^2·s))^(-0.7)"
},
"E_a,WPO": {
"E_A,WPO": {
"value": -8.6827,
"units": "kJ/mol"
},
Expand All @@ -328,11 +328,11 @@
"value": 4.32E-15,
"units": "(photons/(m^2·s))^(-0.7)"
},
"R_0,DPO": {
"k_0,DPO": {
"value": 5.45E-15,
"units": "mol/(m^2·s·kpa )·(photons/(m^2·s))^(-0.7)"
},
"E_a,DPO": {
"E_A,DPO": {
"value": 59.82,
"units": "kJ/mol"
},
Expand All @@ -344,19 +344,19 @@
"value": 6.97E-15,
"units": "(photons/(m^2·s))^(-0.7)"
},
"R_0,hum": {
"k_0,hum": {
"value": 9.2E-22,
"units": "mol/(m^2·s·kpa)·(photons/(m^2·s))^(-0.7)"
},
"E_a^hum": {
"E_A^hum": {
"value": 19.3,
"units": "kJ/mol"
},
"E_a^therm": {
"E_A^therm": {
"value": 43.42,
"units": "kJ/mol"
},
"R_0,therm": {
"k_0,therm": {
"value": 0.00041,
"units": "mol/(m^2·s)"
}
Expand Down Expand Up @@ -1178,5 +1178,25 @@
"srv_ab": {"value": 0, "units": ""},
"srv_bc": {"value": 0, "units": ""},
"comments": "Lit BO-LID + fit to Qcells destab"
},
"D046": {
"DataEntryPerson": "Rajiv (Dax) Daxini",
"DateEntered": "5/8/2026",
"doi": "10.1126/science.abn5679",
"SourceTitle": "Accelerated aging of all-inorganic, interface-stabilized perovskite solar cells",
"Authors": "Xiaoming Zhao, Tianran Liu, Quinn C. Burlingame, Tianjun Liu, Rudolph Holley III, Guangming Cheng, Nan Yao, Feng Gao, Yueh-Lin Loo",
"Reference": "Science 377, 307-310 (2022)",
"Material": "Halide Perovskite (CsPbI3, uncapped device)",
"EquationType": "Perovskite_biexponential",
"Comments": "Parameters for the uncapped CsPbI3 device from Zhao et al. 2022. Ea values read directly from the Arrhenius plot (Fig. 3C, uncapped fast/slow dashed lines). k0 values are calibrated to reproduce T90,Agg ~ 1440 h under ISOS-L2 (85 C, 1000 W/m^2) as reported by Orooji et al. 2026 (doi:10.1039/d6el00021e) using the same Zhao parameters. A1, A2, B are estimated from the biexponential shape in Fig. 3A (uncapped). Exact fitted coefficients are in the Zhao supplementary (doi:10.1126/science.abn5679); users should re-fit k0, A1, A2, B to their own device data for quantitative predictions.",
"Ea_fast": {"value": 0.248, "units": "eV"},
"Ea_slow": {"value": 0.243, "units": "eV"},
"k0_fast": {"value": 0.56, "units": "h^-1 (pre-exponential at reference irradiance I_ref)"},
"k0_slow": {"value": 0.48, "units": "h^-1 (pre-exponential at reference irradiance I_ref)"},
"A1": {"value": 0.25, "units": "dimensionless (fast-process amplitude, A1+A2+B=1)"},
"A2": {"value": 0.70, "units": "dimensionless (slow-process amplitude)"},
"B": {"value": 0.05, "units": "dimensionless (residual stable fraction)"},
"gamma": {"value": 1.0, "units": "dimensionless (light-intensity exponent)"},
"I_ref": {"value": 1200.0, "units": "W/m^2 (reference irradiance used in Zhao experiments)"}
}
}
Loading
Loading