From 59d7df55fbe9c2e7aa81bd225c9b5ea183fd0b90 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 07:01:12 +0000 Subject: [PATCH 1/2] Add combinatorial TCO/ETL/HTL device stacks and process-to-performance ML pipeline Adds three device-stack layer parameter sets for SnO2/AZO-style sputtered TCO/ETL/HTL layers (n-i-p glass/ITO or FTO/SnO2/perovskite/Spiro-OMeTAD/Au, and p-i-n glass/FTO/SAM/perovskite/C60/BCP/Ag), ready for DDfits (SIMsalabim) fitting against combinatorial-sputtering J-V data. Also adds a 3-stage pipeline built on top of the existing DDfits/axBOtorch machinery: - Stage 1 (scripts/fit_combinatorial_devices.py): per-device drift-diffusion fitting of the sputtered layer's physical parameters against measured J-V. - Stage 2 (optimpv/ml/process_correlation.py): a classical ML regressor (Random Forest/GBR/GP) correlating process conditions with the fitted physical parameters and device performance, with feature importance and partial dependence for interpretability. - Stage 3 (optimpv/ml/surrogate_agent.py, scripts/optimize_process_conditions.py): wraps the Stage 2 model as an optimpv Agent so axBOtorchOptimizer can search process-condition/thickness space for the conditions predicted to maximize device performance. optimpv/general/combinatorial_data.py provides the raw-J-V-curve-files + conditions-log loading/merging used by Stage 1, including a sign-convention- agnostic Voc/Jsc/FF/PCE extractor. combinatorial_data.py and the Stage 2/3 ML modules were tested against synthetic data; Stage 1 and the BO portion of Stage 3 could not be run end-to-end (no SIMsalabim binary or Ax/BoTorch/PyTorch in this environment) -- see docs/combinatorial_TCO_ML_workflow.md for details and known limitations. --- .../CombinatorialSAM_ETL/BCP.txt | 63 ++ .../CombinatorialSAM_ETL/C60.txt | 61 ++ .../CombinatorialSAM_ETL/Perovskite.txt | 69 ++ .../CombinatorialSAM_ETL/nk_Ag.txt | 92 ++ .../CombinatorialSAM_ETL/nk_BCPLiu.txt | 502 +++++++++++ .../CombinatorialSAM_ETL/nk_C60_1.txt | 802 ++++++++++++++++++ .../CombinatorialSAM_ETL/nk_ITO.txt | 182 ++++ .../CombinatorialSAM_ETL/nk_glass.txt | 602 +++++++++++++ .../nk_peroTripleCatMartin.txt | 552 ++++++++++++ .../simulation_setup_pinsam_FTO.txt | 86 ++ .../CombinatorialTCO_ETL_HTL/Perovskite.txt | 65 ++ .../CombinatorialTCO_ETL_HTL/SnO2.txt | 66 ++ .../CombinatorialTCO_ETL_HTL/SpiroOMeTAD.txt | 63 ++ .../CombinatorialTCO_ETL_HTL/nk_Au.txt | 602 +++++++++++++ .../CombinatorialTCO_ETL_HTL/nk_ITO.txt | 182 ++++ .../nk_SpiroOMeTAD.txt | 602 +++++++++++++ .../CombinatorialTCO_ETL_HTL/nk_glass.txt | 602 +++++++++++++ .../nk_peroTripleCatMartin.txt | 552 ++++++++++++ ...simulation_setup_niptco_FTO_passivated.txt | 84 ++ .../simulation_setup_niptco_ITO.txt | 84 ++ .../README_combinatorial_TCO_ETL_HTL_SAM.md | 24 + docs/combinatorial_TCO_ML_workflow.md | 93 ++ optimpv/general/combinatorial_data.py | 182 ++++ optimpv/ml/__init__.py | 4 + optimpv/ml/process_correlation.py | 192 +++++ optimpv/ml/surrogate_agent.py | 100 +++ requirements.txt | 1 + scripts/fit_combinatorial_devices.py | 200 +++++ scripts/optimize_process_conditions.py | 95 +++ setup.py | 1 + 30 files changed, 6805 insertions(+) create mode 100644 Data/simsalabim_test_inputs/CombinatorialSAM_ETL/BCP.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialSAM_ETL/C60.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialSAM_ETL/Perovskite.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_Ag.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_BCPLiu.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_C60_1.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_ITO.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_glass.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_peroTripleCatMartin.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialSAM_ETL/simulation_setup_pinsam_FTO.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/Perovskite.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/SnO2.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/SpiroOMeTAD.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_Au.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_ITO.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_SpiroOMeTAD.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_glass.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_peroTripleCatMartin.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/simulation_setup_niptco_FTO_passivated.txt create mode 100644 Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/simulation_setup_niptco_ITO.txt create mode 100644 Data/simsalabim_test_inputs/README_combinatorial_TCO_ETL_HTL_SAM.md create mode 100644 docs/combinatorial_TCO_ML_workflow.md create mode 100644 optimpv/general/combinatorial_data.py create mode 100644 optimpv/ml/__init__.py create mode 100644 optimpv/ml/process_correlation.py create mode 100644 optimpv/ml/surrogate_agent.py create mode 100644 scripts/fit_combinatorial_devices.py create mode 100644 scripts/optimize_process_conditions.py diff --git a/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/BCP.txt b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/BCP.txt new file mode 100644 index 0000000..e58830b --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/BCP.txt @@ -0,0 +1,63 @@ +** SIMsalabim Layer parameters: +** Don't change the order of the parameters, comments can be added anywhere, +** but only after an '*'. Use '**' if you want your comment to be left-justified. +** version: 5.30 +** LAYER: BCP (bathocuproine) hole-blocking buffer, l3, between C60 (ETL) and Ag. +** Thin (~6-8 nm), wide-gap, near-insulating except for electron tunneling/hopping +** transport -- typical literature starting values. + +**General*************************************************************************** +L = 6E-9 * m, device length/thickness -- override per condition (evaporated buffer, thin) +eps_r = 3 * relative dielectric constant +E_c = 3.5 * eV, conduction band edge +E_v = 7.0 * eV, valence band edge (wide gap -> hole-blocking) +N_c = 1E26 * m^-3, DOS of conduction and valence bands +N_D = 0 * m^-3, ionised n-doping +N_A = 0 * m^-3, ionised p-doping + +**Mobilities************************************************************************ +mu_n = 1E-8 * m^2/Vs, zero field mobility (electron, tunneling/hopping-limited, process-sensitive) +mu_p = 1E-12 * m^2/Vs, zero field mobility (hole, effectively blocked) +mobnDep = 0 * 0 : const. mob, 1 : field-dependent +mobpDep = 0 * 0 : const. mob, 1 : field-dependent +gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form +gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form + +**Interface-layer-to-right********************************************************** +nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right +nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right +N_t_int = 0E12 * m^-2, trap density at interface with layer to the right +E_t_int = 4.7 * eV, energy level of traps at interface +intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int +intTrapType = -1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor +C_n_int = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) +C_p_int = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) + +**Ions****************************************************************************** +N_anion = 0E21 * m^-3, concentration of negative ions +N_cation = 0E21 * m^-3, concentration of positive ions +mu_anion = 1E-11 * m^2/Vs, mobility of negative ions (take 0 if they don't move) +mu_cation = 1E-11 * m^2/Vs, mobility of positive ions (take 0 if they don't move) +ionsMayEnter = 0 * may ions enter from other layers? yes(1) or no(<>1) + +**Generation and recombination****************************************************** +G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer +layerGen = 0 * does this layer generate electron/hole pairs? yes(1) or no (0) +nkLayer = nk_BCPLiu.txt * name of file with n,k values of this layer +fieldDepG = 0 * field dependent generation yes (1) or no (0) +P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers +a = 1E-9 * m, charge separation distance, Braun model used +thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian + * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian +k_f = 1E6 * 1/s, decay rate +k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate +preLangevin = 1 * Langevin recombination prefactor +useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) + +**Bulk trapping************************************************************************** +N_t_bulk = 0E18 * m^-3, trap density (in bulk) +C_n_bulk = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) +C_p_bulk = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) +E_t_bulk = 4.7 * eV, energy level of all traps +bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk +bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor diff --git a/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/C60.txt b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/C60.txt new file mode 100644 index 0000000..9b4649f --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/C60.txt @@ -0,0 +1,61 @@ +** LAYER: C60 (ETL, l2, p-i-n / inverted stack). Reused verbatim from Data/simsalabim_test_inputs/fakePerovskite/C60.txt. +** SIMsalabim Layer parameters: +** Don't change the order of the parameters, comments can be added anywhere, +** but only after an '*'. Use '**' if you want your comment to be left-justified. +** version: 5.30 + +**General*************************************************************************** +L = 25E-9 * m, device length/thickness +eps_r = 5 * relative dielectric constant +E_c = 4 * eV, conduction band edge +E_v = 5.9 * eV, valence band edge +N_c = 1E26 * m^-3, DOS of conduction and valence bands +N_D = 0 * m^-3, ionised n-doping +N_A = 0 * m^-3, ionised p-doping + +**Mobilities************************************************************************ +mu_n = 1E-6 * m^2/Vs, zero field mobility +mu_p = 1E-8 * m^2/Vs, zero field mobility +mobnDep = 0 * 0 : const. mob, 1 : field-dependent +mobpDep = 0 * 0 : const. mob, 1 : field-dependent +gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form +gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form + +**Interface-layer-to-right********************************************************** +nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right +nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right +N_t_int = 0E12 * m^-2, trap density at interface with layer to the right +E_t_int = 4.7 * eV, energy level of traps at interface +intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int +intTrapType = -1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor +C_n_int = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) +C_p_int = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) + +**Ions****************************************************************************** +N_anion = 0E21 * m^-3, concentration of negative ions +N_cation = 0E21 * m^-3, concentration of positive ions +mu_anion = 5.7E-12 * m^2/Vs, mobility of negative ions (take 0 if they don't move) +mu_cation = 5.7E-12 * m^2/Vs, mobility of positive ions (take 0 if they don't move) +ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) + +**Generation and recombination****************************************************** +G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer +layerGen = 0 * does this layer generate electron/hole pairs? yes(1) or no (0) +nkLayer = nk_C60_1.txt * name of file with n,k values of this layer +fieldDepG = 0 * field dependent generation yes (1) or no (0) +P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers +a = 1E-9 * m, charge separation distance, Braun model used +thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian + * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian +k_f = 1E6 * 1/s, decay rate +k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate +preLangevin = 1 * Langevin recombination prefactor +useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) + +**Bulk trapping********************************************************************* +N_t_bulk = 0E18 * m^-3, trap density (in bulk) +C_n_bulk = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) +C_p_bulk = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) +E_t_bulk = 4.7 * eV, energy level of all traps +bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk +bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor diff --git a/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/Perovskite.txt b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/Perovskite.txt new file mode 100644 index 0000000..8df0901 --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/Perovskite.txt @@ -0,0 +1,69 @@ +** SIMsalabim Layer parameters: +** Don't change the order of the parameters, comments can be added anywhere, +** but only after an '*'. Use '**' if you want your comment to be left-justified. +** version: 5.30 +** LAYER: perovskite absorber (l1, p-i-n / inverted stack). The SAM HTL (e.g. +** MeO-2PACz / Me-4PACz) is a sub-2nm molecular monolayer and is NOT modeled as its +** own bulk transport layer here -- it is represented at the device level via the +** left-contact work function W_L and the offset_W_L.E_v FitParam (injection barrier +** tuning), see simulation_setup_pinsam_FTO.txt and the Stage 1 fitting script. If you +** later want an explicit ultrathin SAM layer instead, add an l0 layer file the same +** way SnO2/SpiroOMeTAD are handled in the n-i-p stack. + +**General*************************************************************************** +L = 550E-9 * m, device length/thickness -- override per condition +eps_r = 35 * relative dielectric constant +E_c = 3.9 * eV, conduction band edge +E_v = 5.53 * eV, valence band edge +N_c = 2.2E24 * m^-3, DOS of conduction and valence bands +N_D = 0 * m^-3, ionised n-doping +N_A = 0 * m^-3, ionised p-doping + +**Mobilities************************************************************************ +mu_n = 8E-5 * m^2/Vs, zero field mobility +mu_p = 8E-5 * m^2/Vs, zero field mobility +mobnDep = 0 * 0 : const. mob, 1 : field-dependent +mobpDep = 0 * 0 : const. mob, 1 : field-dependent +gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form +gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form + +**Interface-layer-to-right********************************************************** +** perovskite / C60 (ETL) interface -- lower N_t_int here to represent a passivation +** treatment (e.g. from ~4E12 unpassivated down to ~3E11-1E12 passivated) +nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right +nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right +N_t_int = 4E12 * m^-2, trap density at interface with layer to the right -- process/passivation-sensitive +E_t_int = 4.7 * eV, energy level of traps at interface +intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int +intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor +C_n_int = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) +C_p_int = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) + +**Ions****************************************************************************** +N_anion = 3.5E21 * m^-3, concentration of negative ions +N_cation = 3.5E21 * m^-3, concentration of positive ions +mu_anion = 5.7E-12 * m^2/Vs, mobility of negative ions (take 0 if they don't move) +mu_cation = 5.7E-12 * m^2/Vs, mobility of positive ions (take 0 if they don't move) +ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) + +**Generation and recombination****************************************************** +G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer -- set/calibrated from measured Jsc if genProfile=none +layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) +nkLayer = nk_peroTripleCatMartin.txt * name of file with n,k values of this layer +fieldDepG = 0 * field dependent generation yes (1) or no (0) +P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers +a = 1E-9 * m, charge separation distance, Braun model used +thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian + * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian +k_f = 1E6 * 1/s, decay rate +k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate +preLangevin = 1 * Langevin recombination prefactor +useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) + +**Bulk trapping************************************************************************** +N_t_bulk = 3E20 * m^-3, trap density (in bulk) +C_n_bulk = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) +C_p_bulk = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) +E_t_bulk = 4.7 * eV, energy level of all traps +bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk +bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor diff --git a/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_Ag.txt b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_Ag.txt new file mode 100644 index 0000000..8e81682 --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_Ag.txt @@ -0,0 +1,92 @@ +lambda n k +300e-9 1.512923 0.9560123 +310e-9 1.323 0.647 +320e-9 0.7939 0.5327573 +330e-9 0.3898391 0.7905753 +340e-9 0.2574524 1.127982 +350e-9 0.2198475 1.357565 +360e-9 0.1953887 1.536074 +370e-9 0.1928416 1.63918 +380e-9 0.1967876 1.722297 +390e-9 0.1878861 1.838805 +400e-9 0.173 1.95 +410e-9 0.1729044 2.071446 +420e-9 0.1665478 2.182026 +430e-9 0.159444 2.283458 +440e-9 0.157482 2.374991 +450e-9 0.1510089 2.471494 +460e-9 0.1434135 2.567443 +470e-9 0.1364482 2.658754 +480e-9 0.1316274 2.746739 +490e-9 0.1305523 2.831281 +500e-9 0.1299563 2.918614 +510e-9 0.1299439 3.01072 +520e-9 0.1298134 3.097869 +530e-9 0.1293409 3.178425 +540e-9 0.1286413 3.257563 +550e-9 0.1248079 3.340449 +560e-9 0.1212307 3.42134 +570e-9 0.1202104 3.501293 +580e-9 0.1205766 3.579969 +590e-9 0.120983 3.656954 +600e-9 0.1243362 3.733016 +610e-9 0.1277254 3.807587 +620e-9 0.1310285 3.880854 +630e-9 0.1338444 3.965357 +640e-9 0.1366023 4.048097 +650e-9 0.1393057 4.129178 +660e-9 0.1399461 4.210904 +670e-9 0.1399203 4.291836 +680e-9 0.1399434 4.371271 +690e-9 0.1402434 4.44918 +700e-9 0.1422559 4.524953 +710e-9 0.1442413 4.599478 +720e-9 0.1462005 4.672815 +730e-9 0.1479116 4.745567 +740e-9 0.1466923 4.824403 +750e-9 0.1455498 4.901974 +760e-9 0.1444779 4.978338 +770e-9 0.1434711 5.053551 +780e-9 0.1431709 5.131901 +790e-9 0.1435249 5.213082 +800e-9 0.1439018 5.293018 +810e-9 0.1442995 5.371766 +820e-9 0.1447158 5.449377 +830e-9 0.1460906 5.526927 +840e-9 0.1492574 5.605374 +850e-9 0.1523659 5.682739 +860e-9 0.1554189 5.759065 +870e-9 0.1584191 5.834392 +880e-9 0.1613691 5.90876 +890e-9 0.165399 5.982174 +900e-9 0.1707744 6.054665 +910e-9 0.1760472 6.126299 +920e-9 0.1812223 6.197106 +930e-9 0.1863042 6.267116 +940e-9 0.1912971 6.336353 +950e-9 0.1962049 6.404843 +960e-9 0.2003468 6.476259 +970e-9 0.2040247 6.549017 +980e-9 0.2076468 6.620975 +990e-9 0.2112155 6.692159 +1000e-9 0.2147328 6.762595 +1010e-9 0.2182008 6.832304 +1020e-9 0.2216213 6.90131 +1030e-9 0.2249962 6.969633 +1040e-9 0.2279549 7.042901 +1050e-9 0.2307192 7.117792 +1060e-9 0.2334513 7.191903 +1070e-9 0.2361522 7.265259 +1080e-9 0.238823 7.337881 +1090e-9 0.2414647 7.409791 +1100e-9 0.2440781 7.481011 +1110e-9 0.2466641 7.551558 +1120e-9 0.2492237 7.621453 +1130e-9 0.2532486 7.692895 +1140e-9 0.2606647 7.768727 +1150e-9 0.2679623 7.843828 +1160e-9 0.2751462 7.91822 +1170e-9 0.2822207 7.991922 +1180e-9 0.28919 8.064953 +1190e-9 0.2960579 8.137331 +1200e-9 0.3028282 8.209073 diff --git a/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_BCPLiu.txt b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_BCPLiu.txt new file mode 100644 index 0000000..db72d61 --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_BCPLiu.txt @@ -0,0 +1,502 @@ +lambda n k +300e-9 1.88212 1.60599 +301e-9 1.88212 1.60599 +302e-9 1.88271 1.59468 +303e-9 1.88329 1.58336 +304e-9 1.88388 1.57205 +305e-9 1.88447 1.562 +306e-9 1.88506 1.55357 +307e-9 1.88565 1.54635 +308e-9 1.88624 1.54574 +309e-9 1.88682 1.54514 +310e-9 1.88741 1.54453 +311e-9 1.888 1.54393 +312e-9 1.88859 1.54332 +313e-9 1.88918 1.54272 +314e-9 1.88977 1.54211 +315e-9 1.89036 1.54151 +316e-9 1.89491 1.5409 +317e-9 1.90042 1.5403 +318e-9 1.90593 1.53969 +319e-9 1.91191 1.53877 +320e-9 1.92227 1.53603 +321e-9 1.93263 1.53329 +322e-9 1.94299 1.53055 +323e-9 1.95335 1.52781 +324e-9 1.95975 1.52507 +325e-9 1.96434 1.51954 +326e-9 1.96892 1.51362 +327e-9 1.97351 1.5077 +328e-9 1.97757 1.50178 +329e-9 1.97987 1.49586 +330e-9 1.98217 1.48995 +331e-9 1.98447 1.48403 +332e-9 1.98677 1.47811 +333e-9 1.98906 1.47027 +334e-9 1.98779 1.46081 +335e-9 1.98653 1.45134 +336e-9 1.98527 1.44188 +337e-9 1.98401 1.43241 +338e-9 1.98275 1.42206 +339e-9 1.98149 1.41167 +340e-9 1.98022 1.40128 +341e-9 1.97896 1.39151 +342e-9 1.9777 1.38559 +343e-9 1.97644 1.37967 +344e-9 1.97439 1.37375 +345e-9 1.97152 1.36783 +346e-9 1.96864 1.36191 +347e-9 1.96576 1.35599 +348e-9 1.963 1.35007 +349e-9 1.96028 1.34415 +350e-9 1.95756 1.34127 +351e-9 1.95484 1.33914 +352e-9 1.95212 1.337 +353e-9 1.9494 1.33487 +354e-9 1.94669 1.33273 +355e-9 1.9439 1.3306 +356e-9 1.94084 1.32846 +357e-9 1.93778 1.32633 +358e-9 1.93472 1.32419 +359e-9 1.93165 1.32206 +360e-9 1.92859 1.31992 +361e-9 1.92553 1.31779 +362e-9 1.92247 1.31565 +363e-9 1.9194 1.31352 +364e-9 1.91645 1.31138 +365e-9 1.91417 1.30925 +366e-9 1.9119 1.30838 +367e-9 1.90962 1.30751 +368e-9 1.90734 1.30664 +369e-9 1.90506 1.30577 +370e-9 1.90278 1.3049 +371e-9 1.90051 1.30404 +372e-9 1.89823 1.30317 +373e-9 1.89595 1.3023 +374e-9 1.89367 1.30143 +375e-9 1.89139 1.30056 +376e-9 1.88912 1.29969 +377e-9 1.88684 1.29882 +378e-9 1.88456 1.29795 +379e-9 1.88228 1.29709 +380e-9 1.88 1.29622 +381e-9 1.87773 1.29535 +382e-9 1.87545 1.29448 +383e-9 1.87317 1.29361 +384e-9 1.87111 1.29274 +385e-9 1.8692 1.29187 +386e-9 1.8673 1.291 +387e-9 1.8654 1.29014 +388e-9 1.8635 1.28927 +389e-9 1.8616 1.2884 +390e-9 1.85969 1.28753 +391e-9 1.85779 1.28666 +392e-9 1.85589 1.28579 +393e-9 1.85399 1.28492 +394e-9 1.85209 1.28405 +395e-9 1.85018 1.28318 +396e-9 1.84857 1.28232 +397e-9 1.8472 1.28145 +398e-9 1.84583 1.28058 +399e-9 1.84447 1.27971 +400e-9 1.8431 1.27884 +401e-9 1.84173 1.27797 +402e-9 1.84036 1.2771 +403e-9 1.839 1.27653 +404e-9 1.83763 1.2763 +405e-9 1.83626 1.27607 +406e-9 1.83489 1.27583 +407e-9 1.83353 1.2756 +408e-9 1.83216 1.27537 +409e-9 1.83079 1.27514 +410e-9 1.82942 1.2749 +411e-9 1.82806 1.27467 +412e-9 1.82669 1.27444 +413e-9 1.82532 1.2742 +414e-9 1.82396 1.27397 +415e-9 1.82259 1.27374 +416e-9 1.82129 1.27351 +417e-9 1.82019 1.27327 +418e-9 1.81909 1.27304 +419e-9 1.81799 1.27281 +420e-9 1.81689 1.27258 +421e-9 1.81579 1.27234 +422e-9 1.81469 1.27211 +423e-9 1.81359 1.27188 +424e-9 1.81249 1.27164 +425e-9 1.81139 1.27141 +426e-9 1.81029 1.27118 +427e-9 1.80919 1.27095 +428e-9 1.80809 1.27071 +429e-9 1.80699 1.27048 +430e-9 1.80589 1.27025 +431e-9 1.80501 1.27002 +432e-9 1.80412 1.26978 +433e-9 1.80324 1.26955 +434e-9 1.80236 1.26932 +435e-9 1.80148 1.26909 +436e-9 1.8006 1.26885 +437e-9 1.79971 1.26862 +438e-9 1.79883 1.26839 +439e-9 1.79795 1.26815 +440e-9 1.79707 1.26792 +441e-9 1.79618 1.26769 +442e-9 1.7953 1.26746 +443e-9 1.79442 1.26722 +444e-9 1.79354 1.26699 +445e-9 1.79266 1.26681 +446e-9 1.79177 1.26669 +447e-9 1.79089 1.26656 +448e-9 1.79001 1.26644 +449e-9 1.78913 1.26631 +450e-9 1.78825 1.26619 +451e-9 1.78736 1.26606 +452e-9 1.78648 1.26594 +453e-9 1.7856 1.26581 +454e-9 1.78484 1.26569 +455e-9 1.78414 1.26556 +456e-9 1.78343 1.26544 +457e-9 1.78273 1.26531 +458e-9 1.78202 1.26519 +459e-9 1.78132 1.26506 +460e-9 1.78061 1.26494 +461e-9 1.77991 1.26481 +462e-9 1.77921 1.26469 +463e-9 1.7785 1.26456 +464e-9 1.7778 1.26444 +465e-9 1.77709 1.26431 +466e-9 1.77643 1.26419 +467e-9 1.77578 1.26406 +468e-9 1.77514 1.26394 +469e-9 1.77449 1.26381 +470e-9 1.77385 1.26369 +471e-9 1.7732 1.26356 +472e-9 1.77256 1.26344 +473e-9 1.77191 1.26331 +474e-9 1.77127 1.26319 +475e-9 1.77062 1.26306 +476e-9 1.76998 1.26294 +477e-9 1.76933 1.26281 +478e-9 1.76869 1.26269 +479e-9 1.76804 1.26256 +480e-9 1.7674 1.26244 +481e-9 1.76675 1.26231 +482e-9 1.76611 1.26219 +483e-9 1.76546 1.26206 +484e-9 1.76482 1.26194 +485e-9 1.76417 1.26181 +486e-9 1.76353 1.26169 +487e-9 1.76288 1.26156 +488e-9 1.76224 1.26144 +489e-9 1.76159 1.26131 +490e-9 1.76095 1.26119 +491e-9 1.7603 1.26106 +492e-9 1.75976 1.26094 +493e-9 1.75933 1.26081 +494e-9 1.75891 1.26069 +495e-9 1.75849 1.26062 +496e-9 1.75807 1.26055 +497e-9 1.75765 1.26048 +498e-9 1.75723 1.26041 +499e-9 1.7568 1.26034 +500e-9 1.75638 1.26027 +501e-9 1.75596 1.2602 +502e-9 1.75554 1.26013 +503e-9 1.75512 1.26006 +504e-9 1.7547 1.25999 +505e-9 1.75427 1.25992 +506e-9 1.75385 1.25985 +507e-9 1.75343 1.25978 +508e-9 1.75301 1.25971 +509e-9 1.75259 1.25964 +510e-9 1.75217 1.25956 +511e-9 1.75174 1.25949 +512e-9 1.75132 1.25942 +513e-9 1.7509 1.25935 +514e-9 1.75048 1.25928 +515e-9 1.75006 1.25921 +516e-9 1.74963 1.25914 +517e-9 1.74921 1.25907 +518e-9 1.74879 1.259 +519e-9 1.74837 1.25893 +520e-9 1.74795 1.25886 +521e-9 1.74753 1.25879 +522e-9 1.7471 1.25872 +523e-9 1.74668 1.25865 +524e-9 1.74626 1.25858 +525e-9 1.74584 1.25851 +526e-9 1.74542 1.25844 +527e-9 1.74506 1.25837 +528e-9 1.74471 1.2583 +529e-9 1.74436 1.25823 +530e-9 1.744 1.25816 +531e-9 1.74365 1.25809 +532e-9 1.7433 1.25802 +533e-9 1.74295 1.25795 +534e-9 1.7426 1.25788 +535e-9 1.74224 1.25781 +536e-9 1.74189 1.25774 +537e-9 1.74154 1.25767 +538e-9 1.74119 1.2576 +539e-9 1.74083 1.25753 +540e-9 1.74048 1.25746 +541e-9 1.74013 1.25738 +542e-9 1.73978 1.25731 +543e-9 1.73943 1.25724 +544e-9 1.73907 1.25717 +545e-9 1.73872 1.2571 +546e-9 1.73837 1.25703 +547e-9 1.73802 1.25696 +548e-9 1.73766 1.25689 +549e-9 1.73731 1.25682 +550e-9 1.73696 1.25675 +551e-9 1.73661 1.25668 +552e-9 1.73626 1.25661 +553e-9 1.7359 1.25654 +554e-9 1.73555 1.25647 +555e-9 1.7352 1.2564 +556e-9 1.73485 1.25633 +557e-9 1.7345 1.25626 +558e-9 1.73414 1.25619 +559e-9 1.73379 1.25612 +560e-9 1.73344 1.25605 +561e-9 1.73311 1.25598 +562e-9 1.73283 1.25591 +563e-9 1.73254 1.25584 +564e-9 1.73225 1.25577 +565e-9 1.73196 1.2557 +566e-9 1.73167 1.25563 +567e-9 1.73138 1.25561 +568e-9 1.73109 1.25559 +569e-9 1.73081 1.25557 +570e-9 1.73052 1.25554 +571e-9 1.73023 1.25552 +572e-9 1.72994 1.2555 +573e-9 1.72965 1.25548 +574e-9 1.72936 1.25546 +575e-9 1.72907 1.25544 +576e-9 1.72878 1.25542 +577e-9 1.7285 1.25539 +578e-9 1.72821 1.25537 +579e-9 1.72792 1.25535 +580e-9 1.72763 1.25533 +581e-9 1.72734 1.25531 +582e-9 1.72705 1.25529 +583e-9 1.72676 1.25527 +584e-9 1.72648 1.25524 +585e-9 1.72619 1.25522 +586e-9 1.7259 1.2552 +587e-9 1.72561 1.25518 +588e-9 1.72532 1.25516 +589e-9 1.72503 1.25514 +590e-9 1.72474 1.25512 +591e-9 1.72445 1.2551 +592e-9 1.72417 1.25507 +593e-9 1.72388 1.25505 +594e-9 1.72359 1.25503 +595e-9 1.72335 1.25501 +596e-9 1.72312 1.25499 +597e-9 1.7229 1.25497 +598e-9 1.72268 1.25495 +599e-9 1.72246 1.25492 +600e-9 1.72224 1.2549 +601e-9 1.72201 1.25488 +602e-9 1.72179 1.25486 +603e-9 1.72157 1.25484 +604e-9 1.72135 1.25482 +605e-9 1.72112 1.2548 +606e-9 1.7209 1.25478 +607e-9 1.72068 1.25475 +608e-9 1.72046 1.25473 +609e-9 1.72024 1.25471 +610e-9 1.72001 1.25469 +611e-9 1.71979 1.25467 +612e-9 1.71957 1.25465 +613e-9 1.71935 1.25463 +614e-9 1.71912 1.2546 +615e-9 1.7189 1.25458 +616e-9 1.71868 1.25456 +617e-9 1.71846 1.25454 +618e-9 1.71824 1.25452 +619e-9 1.71801 1.2545 +620e-9 1.71779 1.25448 +621e-9 1.71757 1.25445 +622e-9 1.71735 1.25443 +623e-9 1.71713 1.25441 +624e-9 1.7169 1.25439 +625e-9 1.71668 1.25437 +626e-9 1.71646 1.25435 +627e-9 1.71624 1.25433 +628e-9 1.71602 1.25431 +629e-9 1.71582 1.25428 +630e-9 1.71561 1.25426 +631e-9 1.7154 1.25424 +632e-9 1.71519 1.25422 +633e-9 1.71498 1.2542 +634e-9 1.71477 1.2542 +635e-9 1.71457 1.25422 +636e-9 1.71436 1.25423 +637e-9 1.71415 1.25425 +638e-9 1.71394 1.25427 +639e-9 1.71373 1.25428 +640e-9 1.71352 1.2543 +641e-9 1.71332 1.25432 +642e-9 1.71311 1.25433 +643e-9 1.7129 1.25435 +644e-9 1.71269 1.25437 +645e-9 1.71248 1.25438 +646e-9 1.71227 1.2544 +647e-9 1.71207 1.25442 +648e-9 1.71186 1.25443 +649e-9 1.71165 1.25445 +650e-9 1.71144 1.25447 +651e-9 1.71123 1.25448 +652e-9 1.71102 1.2545 +653e-9 1.71082 1.25452 +654e-9 1.71061 1.25453 +655e-9 1.7104 1.25455 +656e-9 1.71019 1.25457 +657e-9 1.70998 1.25458 +658e-9 1.70978 1.2546 +659e-9 1.70957 1.25462 +660e-9 1.70936 1.25463 +661e-9 1.70915 1.25465 +662e-9 1.70894 1.25467 +663e-9 1.70876 1.25468 +664e-9 1.70861 1.2547 +665e-9 1.70845 1.25472 +666e-9 1.7083 1.25473 +667e-9 1.70815 1.25475 +668e-9 1.708 1.25477 +669e-9 1.70784 1.25478 +670e-9 1.70769 1.2548 +671e-9 1.70754 1.25482 +672e-9 1.70739 1.25483 +673e-9 1.70723 1.25485 +674e-9 1.70708 1.25487 +675e-9 1.70693 1.25488 +676e-9 1.70678 1.2549 +677e-9 1.70662 1.25492 +678e-9 1.70647 1.25493 +679e-9 1.70632 1.25495 +680e-9 1.70616 1.25497 +681e-9 1.70601 1.25498 +682e-9 1.70586 1.255 +683e-9 1.70571 1.25502 +684e-9 1.70555 1.25503 +685e-9 1.7054 1.25505 +686e-9 1.70525 1.25507 +687e-9 1.7051 1.25508 +688e-9 1.70494 1.2551 +689e-9 1.70479 1.25512 +690e-9 1.70464 1.25513 +691e-9 1.70449 1.25515 +692e-9 1.70433 1.25517 +693e-9 1.70418 1.25518 +694e-9 1.70403 1.25518 +695e-9 1.70389 1.25516 +696e-9 1.70378 1.25514 +697e-9 1.70367 1.25512 +698e-9 1.70356 1.2551 +699e-9 1.70345 1.25508 +700e-9 1.70334 1.25506 +701e-9 1.70324 1.25504 +702e-9 1.70313 1.25502 +703e-9 1.70302 1.255 +704e-9 1.70291 1.25498 +705e-9 1.7028 1.25496 +706e-9 1.7027 1.25494 +707e-9 1.70259 1.25492 +708e-9 1.70248 1.2549 +709e-9 1.70237 1.25488 +710e-9 1.70226 1.25486 +711e-9 1.70215 1.25484 +712e-9 1.70205 1.25482 +713e-9 1.70194 1.2548 +714e-9 1.70183 1.25478 +715e-9 1.70172 1.25476 +716e-9 1.70161 1.25474 +717e-9 1.70151 1.25472 +718e-9 1.7014 1.2547 +719e-9 1.70129 1.25468 +720e-9 1.70118 1.25466 +721e-9 1.70107 1.25464 +722e-9 1.70096 1.25462 +723e-9 1.70086 1.2546 +724e-9 1.70075 1.25458 +725e-9 1.70064 1.25456 +726e-9 1.70053 1.25454 +727e-9 1.70042 1.25452 +728e-9 1.70032 1.2545 +729e-9 1.70021 1.25448 +730e-9 1.70008 1.25446 +731e-9 1.69994 1.25444 +732e-9 1.6998 1.25442 +733e-9 1.69967 1.2544 +734e-9 1.69953 1.25438 +735e-9 1.69939 1.25436 +736e-9 1.69925 1.25434 +737e-9 1.69912 1.25432 +738e-9 1.69898 1.2543 +739e-9 1.69884 1.25428 +740e-9 1.6987 1.25426 +741e-9 1.69857 1.25424 +742e-9 1.69843 1.25422 +743e-9 1.69829 1.2542 +744e-9 1.69816 1.25418 +745e-9 1.69802 1.25416 +746e-9 1.69788 1.25414 +747e-9 1.69774 1.25412 +748e-9 1.69761 1.2541 +749e-9 1.69747 1.25408 +750e-9 1.69733 1.25406 +751e-9 1.69719 1.25404 +752e-9 1.69706 1.25402 +753e-9 1.69692 1.254 +754e-9 1.69678 1.25398 +755e-9 1.69665 1.25396 +756e-9 1.69651 1.25394 +757e-9 1.69637 1.25393 +758e-9 1.69623 1.25391 +759e-9 1.6961 1.25389 +760e-9 1.69596 1.25387 +761e-9 1.69582 1.25385 +762e-9 1.69568 1.25383 +763e-9 1.69555 1.25381 +764e-9 1.69541 1.25379 +765e-9 1.69527 1.25377 +766e-9 1.69518 1.25375 +767e-9 1.6951 1.25372 +768e-9 1.69502 1.2537 +769e-9 1.69494 1.25367 +770e-9 1.69486 1.25364 +771e-9 1.69478 1.25361 +772e-9 1.6947 1.25358 +773e-9 1.69462 1.25355 +774e-9 1.69454 1.25352 +775e-9 1.69446 1.25349 +776e-9 1.69438 1.25347 +777e-9 1.6943 1.25344 +778e-9 1.69422 1.25341 +779e-9 1.69414 1.25338 +780e-9 1.69406 1.25335 +781e-9 1.69398 1.25332 +782e-9 1.6939 1.25329 +783e-9 1.69382 1.25326 +784e-9 1.69374 1.25324 +785e-9 1.69366 1.25321 +786e-9 1.69358 1.25318 +787e-9 1.69351 1.25315 +788e-9 1.69343 1.25312 +789e-9 1.69335 1.25309 +790e-9 1.69327 1.25306 +791e-9 1.69319 1.25303 +792e-9 1.69311 1.253 +793e-9 1.69303 1.25298 +794e-9 1.69295 1.25295 +795e-9 1.69287 1.25292 +796e-9 1.69279 1.25289 +797e-9 1.6927 1.25286 +798e-9 1.6926 1.25283 +799e-9 1.69249 1.2528 +800e-9 1.69239 1.25277 diff --git a/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_C60_1.txt b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_C60_1.txt new file mode 100644 index 0000000..e20c2f5 --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_C60_1.txt @@ -0,0 +1,802 @@ +lambda n k +300E-9 2.23691 0.71264 +301E-9 2.22873 0.70124 +302E-9 2.22054 0.68985 +303E-9 2.21236 0.67845 +304E-9 2.20417 0.66706 +305E-9 2.19599 0.65566 +306E-9 2.18781 0.64426 +307E-9 2.17962 0.63287 +308E-9 2.17144 0.62147 +309E-9 2.16325 0.61008 +310E-9 2.15507 0.59868 +311E-9 2.14178 0.59685 +312E-9 2.12849 0.59501 +313E-9 2.1152 0.59318 +314E-9 2.10191 0.59135 +315E-9 2.08863 0.58952 +316E-9 2.07534 0.58768 +317E-9 2.06205 0.58585 +318E-9 2.04876 0.58402 +319E-9 2.03547 0.58218 +320E-9 2.02218 0.58035 +321E-9 2.01426 0.59391 +322E-9 2.00634 0.60746 +323E-9 1.99842 0.62102 +324E-9 1.9905 0.63457 +325E-9 1.98258 0.64813 +326E-9 1.97466 0.66169 +327E-9 1.96674 0.67524 +328E-9 1.95882 0.6888 +329E-9 1.9509 0.70235 +330E-9 1.94298 0.71591 +331E-9 1.95549 0.73231 +332E-9 1.96799 0.7487 +333E-9 1.9805 0.7651 +334E-9 1.993 0.7815 +335E-9 2.00551 0.7979 +336E-9 2.01802 0.81429 +337E-9 2.03052 0.83069 +338E-9 2.04303 0.84709 +339E-9 2.05553 0.86348 +340E-9 2.06804 0.87988 +341E-9 2.09163 0.87902 +342E-9 2.11522 0.87816 +343E-9 2.1388 0.87731 +344E-9 2.16239 0.87645 +345E-9 2.18598 0.87559 +346E-9 2.20957 0.87473 +347E-9 2.23316 0.87387 +348E-9 2.25674 0.87302 +349E-9 2.28033 0.87216 +350E-9 2.30392 0.8713 +351E-9 2.31988 0.85468 +352E-9 2.33584 0.83805 +353E-9 2.3518 0.82143 +354E-9 2.36776 0.8048 +355E-9 2.38372 0.78818 +356E-9 2.39968 0.77156 +357E-9 2.41564 0.75493 +358E-9 2.4316 0.73831 +359E-9 2.44756 0.72168 +360E-9 2.46352 0.70506 +361E-9 2.46579 0.68531 +362E-9 2.46805 0.66556 +363E-9 2.47032 0.64582 +364E-9 2.47258 0.62607 +365E-9 2.47485 0.60632 +366E-9 2.47712 0.58657 +367E-9 2.47938 0.56682 +368E-9 2.48165 0.54708 +369E-9 2.48391 0.52733 +370E-9 2.48618 0.50758 +371E-9 2.47945 0.49372 +372E-9 2.47272 0.47985 +373E-9 2.46599 0.46599 +374E-9 2.45926 0.45212 +375E-9 2.45254 0.43826 +376E-9 2.44581 0.42439 +377E-9 2.43908 0.41053 +378E-9 2.43235 0.39666 +379E-9 2.42562 0.3828 +380E-9 2.41889 0.36893 +381E-9 2.41011 0.36256 +382E-9 2.40133 0.35619 +383E-9 2.39254 0.34982 +384E-9 2.38376 0.34345 +385E-9 2.37498 0.33708 +386E-9 2.3662 0.3307 +387E-9 2.35742 0.32433 +388E-9 2.34863 0.31796 +389E-9 2.33985 0.31159 +390E-9 2.33107 0.30522 +391E-9 2.3242 0.30378 +392E-9 2.31733 0.30233 +393E-9 2.31046 0.30089 +394E-9 2.30359 0.29944 +395E-9 2.29673 0.298 +396E-9 2.28986 0.29655 +397E-9 2.28299 0.29511 +398E-9 2.27612 0.29366 +399E-9 2.26925 0.29222 +400E-9 2.26238 0.29077 +401E-9 2.25821 0.29146 +402E-9 2.25403 0.29214 +403E-9 2.24986 0.29283 +404E-9 2.24569 0.29351 +405E-9 2.24152 0.2942 +406E-9 2.23734 0.29488 +407E-9 2.23317 0.29557 +408E-9 2.229 0.29625 +409E-9 2.22482 0.29694 +410E-9 2.22065 0.29762 +411E-9 2.21864 0.29886 +412E-9 2.21662 0.30011 +413E-9 2.21461 0.30135 +414E-9 2.21259 0.3026 +415E-9 2.21058 0.30384 +416E-9 2.20856 0.30508 +417E-9 2.20655 0.30633 +418E-9 2.20453 0.30757 +419E-9 2.20252 0.30882 +420E-9 2.2005 0.31006 +421E-9 2.20001 0.31121 +422E-9 2.19952 0.31237 +423E-9 2.19903 0.31352 +424E-9 2.19854 0.31468 +425E-9 2.19805 0.31583 +426E-9 2.19755 0.31698 +427E-9 2.19706 0.31814 +428E-9 2.19657 0.31929 +429E-9 2.19608 0.32045 +430E-9 2.19559 0.3216 +431E-9 2.1962 0.32239 +432E-9 2.19681 0.32318 +433E-9 2.19742 0.32397 +434E-9 2.19803 0.32476 +435E-9 2.19864 0.32556 +436E-9 2.19925 0.32635 +437E-9 2.19986 0.32714 +438E-9 2.20047 0.32793 +439E-9 2.20108 0.32872 +440E-9 2.20169 0.32951 +441E-9 2.20311 0.32977 +442E-9 2.20454 0.33002 +443E-9 2.20596 0.33028 +444E-9 2.20739 0.33053 +445E-9 2.20881 0.33079 +446E-9 2.21023 0.33105 +447E-9 2.21166 0.3313 +448E-9 2.21308 0.33156 +449E-9 2.21451 0.33181 +450E-9 2.21593 0.33207 +451E-9 2.21793 0.33164 +452E-9 2.21993 0.33121 +453E-9 2.22193 0.33078 +454E-9 2.22393 0.33035 +455E-9 2.22593 0.32992 +456E-9 2.22792 0.32949 +457E-9 2.22992 0.32906 +458E-9 2.23192 0.32863 +459E-9 2.23392 0.3282 +460E-9 2.23592 0.32777 +461E-9 2.23823 0.32652 +462E-9 2.24054 0.32527 +463E-9 2.24286 0.32402 +464E-9 2.24517 0.32277 +465E-9 2.24748 0.32153 +466E-9 2.24979 0.32028 +467E-9 2.2521 0.31903 +468E-9 2.25442 0.31778 +469E-9 2.25673 0.31653 +470E-9 2.25904 0.31528 +471E-9 2.26136 0.31314 +472E-9 2.26367 0.311 +473E-9 2.26599 0.30885 +474E-9 2.2683 0.30671 +475E-9 2.27062 0.30457 +476E-9 2.27294 0.30243 +477E-9 2.27525 0.30029 +478E-9 2.27757 0.29814 +479E-9 2.27988 0.296 +480E-9 2.2822 0.29386 +481E-9 2.28417 0.29085 +482E-9 2.28614 0.28783 +483E-9 2.28811 0.28482 +484E-9 2.29008 0.28181 +485E-9 2.29205 0.2788 +486E-9 2.29402 0.27578 +487E-9 2.29599 0.27277 +488E-9 2.29796 0.26976 +489E-9 2.29993 0.26674 +490E-9 2.3019 0.26373 +491E-9 2.30318 0.26001 +492E-9 2.30446 0.2563 +493E-9 2.30574 0.25258 +494E-9 2.30702 0.24887 +495E-9 2.3083 0.24515 +496E-9 2.30957 0.24143 +497E-9 2.31085 0.23772 +498E-9 2.31213 0.234 +499E-9 2.31341 0.23029 +500E-9 2.31469 0.22657 +501E-9 2.31501 0.22247 +502E-9 2.31534 0.21836 +503E-9 2.31566 0.21426 +504E-9 2.31598 0.21016 +505E-9 2.31631 0.20606 +506E-9 2.31663 0.20195 +507E-9 2.31695 0.19785 +508E-9 2.31727 0.19375 +509E-9 2.3176 0.18964 +510E-9 2.31792 0.18554 +511E-9 2.31719 0.18147 +512E-9 2.31646 0.1774 +513E-9 2.31573 0.17332 +514E-9 2.315 0.16925 +515E-9 2.31427 0.16518 +516E-9 2.31353 0.16111 +517E-9 2.3128 0.15704 +518E-9 2.31207 0.15296 +519E-9 2.31134 0.14889 +520E-9 2.31061 0.14482 +521E-9 2.30893 0.1412 +522E-9 2.30724 0.13758 +523E-9 2.30556 0.13395 +524E-9 2.30388 0.13033 +525E-9 2.3022 0.12671 +526E-9 2.30051 0.12309 +527E-9 2.29883 0.11947 +528E-9 2.29715 0.11584 +529E-9 2.29546 0.11222 +530E-9 2.29378 0.1086 +531E-9 2.29143 0.10574 +532E-9 2.28908 0.10289 +533E-9 2.28672 0.10003 +534E-9 2.28437 0.09718 +535E-9 2.28202 0.09432 +536E-9 2.27967 0.09146 +537E-9 2.27732 0.08861 +538E-9 2.27496 0.08575 +539E-9 2.27261 0.0829 +540E-9 2.27026 0.08004 +541E-9 2.26761 0.07809 +542E-9 2.26496 0.07615 +543E-9 2.26231 0.0742 +544E-9 2.25966 0.07226 +545E-9 2.25702 0.07031 +546E-9 2.25437 0.06836 +547E-9 2.25172 0.06642 +548E-9 2.24907 0.06447 +549E-9 2.24642 0.06253 +550E-9 2.24377 0.06058 +551E-9 2.24119 0.05951 +552E-9 2.23861 0.05844 +553E-9 2.23603 0.05736 +554E-9 2.23345 0.05629 +555E-9 2.23087 0.05522 +556E-9 2.22828 0.05415 +557E-9 2.2257 0.05308 +558E-9 2.22312 0.052 +559E-9 2.22054 0.05093 +560E-9 2.21796 0.04986 +561E-9 2.21573 0.0495 +562E-9 2.21351 0.04914 +563E-9 2.21128 0.04878 +564E-9 2.20906 0.04842 +565E-9 2.20683 0.04807 +566E-9 2.2046 0.04771 +567E-9 2.20238 0.04735 +568E-9 2.20015 0.04699 +569E-9 2.19793 0.04663 +570E-9 2.1957 0.04627 +571E-9 2.19404 0.04641 +572E-9 2.19238 0.04654 +573E-9 2.19072 0.04668 +574E-9 2.18906 0.04682 +575E-9 2.1874 0.04696 +576E-9 2.18574 0.04709 +577E-9 2.18408 0.04723 +578E-9 2.18242 0.04737 +579E-9 2.18076 0.0475 +580E-9 2.1791 0.04764 +581E-9 2.17818 0.04782 +582E-9 2.17727 0.04801 +583E-9 2.17635 0.04819 +584E-9 2.17544 0.04837 +585E-9 2.17452 0.04856 +586E-9 2.1736 0.04874 +587E-9 2.17269 0.04892 +588E-9 2.17177 0.0491 +589E-9 2.17086 0.04929 +590E-9 2.16994 0.04947 +591E-9 2.16938 0.04936 +592E-9 2.16881 0.04925 +593E-9 2.16825 0.04914 +594E-9 2.16768 0.04903 +595E-9 2.16712 0.04893 +596E-9 2.16655 0.04882 +597E-9 2.16599 0.04871 +598E-9 2.16542 0.0486 +599E-9 2.16486 0.04849 +600E-9 2.16429 0.04838 +601E-9 2.16384 0.04803 +602E-9 2.16338 0.04767 +603E-9 2.16293 0.04732 +604E-9 2.16247 0.04696 +605E-9 2.16202 0.04661 +606E-9 2.16157 0.04626 +607E-9 2.16111 0.0459 +608E-9 2.16066 0.04555 +609E-9 2.1602 0.04519 +610E-9 2.15975 0.04484 +611E-9 2.15928 0.04432 +612E-9 2.15881 0.0438 +613E-9 2.15834 0.04327 +614E-9 2.15787 0.04275 +615E-9 2.15741 0.04223 +616E-9 2.15694 0.04171 +617E-9 2.15647 0.04119 +618E-9 2.156 0.04066 +619E-9 2.15553 0.04014 +620E-9 2.15506 0.03962 +621E-9 2.15452 0.03901 +622E-9 2.15398 0.0384 +623E-9 2.15343 0.03779 +624E-9 2.15289 0.03718 +625E-9 2.15235 0.03658 +626E-9 2.15181 0.03597 +627E-9 2.15127 0.03536 +628E-9 2.15072 0.03475 +629E-9 2.15018 0.03414 +630E-9 2.14964 0.03353 +631E-9 2.14901 0.03291 +632E-9 2.14838 0.03229 +633E-9 2.14775 0.03166 +634E-9 2.14712 0.03104 +635E-9 2.14649 0.03042 +636E-9 2.14585 0.0298 +637E-9 2.14522 0.02918 +638E-9 2.14459 0.02855 +639E-9 2.14396 0.02793 +640E-9 2.14333 0.02731 +641E-9 2.14262 0.02673 +642E-9 2.14192 0.02614 +643E-9 2.14121 0.02556 +644E-9 2.14051 0.02497 +645E-9 2.1398 0.02439 +646E-9 2.13909 0.02381 +647E-9 2.13839 0.02322 +648E-9 2.13768 0.02264 +649E-9 2.13698 0.02205 +650E-9 2.13627 0.02147 +651E-9 2.13551 0.02096 +652E-9 2.13476 0.02045 +653E-9 2.134 0.01994 +654E-9 2.13324 0.01943 +655E-9 2.13249 0.01892 +656E-9 2.13173 0.0184 +657E-9 2.13097 0.01789 +658E-9 2.13021 0.01738 +659E-9 2.12946 0.01687 +660E-9 2.1287 0.01636 +661E-9 2.12792 0.01594 +662E-9 2.12715 0.01551 +663E-9 2.12637 0.01509 +664E-9 2.1256 0.01466 +665E-9 2.12482 0.01424 +666E-9 2.12404 0.01382 +667E-9 2.12327 0.01339 +668E-9 2.12249 0.01297 +669E-9 2.12172 0.01254 +670E-9 2.12094 0.01212 +671E-9 2.12017 0.01178 +672E-9 2.1194 0.01145 +673E-9 2.11863 0.01111 +674E-9 2.11786 0.01077 +675E-9 2.11709 0.01044 +676E-9 2.11631 0.0101 +677E-9 2.11554 0.00976 +678E-9 2.11477 0.00942 +679E-9 2.114 0.00909 +680E-9 2.11323 0.00875 +681E-9 2.11249 0.00849 +682E-9 2.11174 0.00823 +683E-9 2.111 0.00798 +684E-9 2.11025 0.00772 +685E-9 2.10951 0.00746 +686E-9 2.10876 0.0072 +687E-9 2.10802 0.00694 +688E-9 2.10727 0.00669 +689E-9 2.10653 0.00643 +690E-9 2.10578 0.00617 +691E-9 2.10508 0.00598 +692E-9 2.10437 0.00579 +693E-9 2.10367 0.0056 +694E-9 2.10296 0.00541 +695E-9 2.10226 0.00522 +696E-9 2.10155 0.00502 +697E-9 2.10085 0.00483 +698E-9 2.10014 0.00464 +699E-9 2.09944 0.00445 +700E-9 2.09873 0.00426 +701E-9 2.09807 0.00412 +702E-9 2.09741 0.00399 +703E-9 2.09675 0.00385 +704E-9 2.09609 0.00371 +705E-9 2.09544 0.00358 +706E-9 2.09478 0.00344 +707E-9 2.09412 0.0033 +708E-9 2.09346 0.00316 +709E-9 2.0928 0.00303 +710E-9 2.09214 0.00289 +711E-9 2.09153 0.00279 +712E-9 2.09092 0.0027 +713E-9 2.09031 0.0026 +714E-9 2.0897 0.0025 +715E-9 2.08909 0.00241 +716E-9 2.08848 0.00231 +717E-9 2.08787 0.00221 +718E-9 2.08726 0.00211 +719E-9 2.08665 0.00202 +720E-9 2.08604 0.00192 +721E-9 2.08548 0.00185 +722E-9 2.08491 0.00179 +723E-9 2.08435 0.00172 +724E-9 2.08379 0.00166 +725E-9 2.08323 0.00159 +726E-9 2.08266 0.00152 +727E-9 2.0821 0.00146 +728E-9 2.08154 0.00139 +729E-9 2.08097 0.00133 +730E-9 2.08041 0.00126 +731E-9 2.07989 0.00122 +732E-9 2.07938 0.00117 +733E-9 2.07886 0.00113 +734E-9 2.07834 0.00108 +735E-9 2.07783 0.00104 +736E-9 2.07731 9.94139E-4 +737E-9 2.07679 9.49829E-4 +738E-9 2.07627 9.05518E-4 +739E-9 2.07576 8.61208E-4 +740E-9 2.07524 8.16898E-4 +741E-9 2.07476 7.87481E-4 +742E-9 2.07429 7.58064E-4 +743E-9 2.07381 7.28647E-4 +744E-9 2.07334 6.9923E-4 +745E-9 2.07286 6.69813E-4 +746E-9 2.07238 6.40395E-4 +747E-9 2.07191 6.10978E-4 +748E-9 2.07143 5.81561E-4 +749E-9 2.07096 5.52144E-4 +750E-9 2.07048 5.22727E-4 +751E-9 2.07004 5.03554E-4 +752E-9 2.0696 4.84381E-4 +753E-9 2.06917 4.65207E-4 +754E-9 2.06873 4.46034E-4 +755E-9 2.06829 4.26861E-4 +756E-9 2.06785 4.07688E-4 +757E-9 2.06741 3.88515E-4 +758E-9 2.06698 3.69341E-4 +759E-9 2.06654 3.50168E-4 +760E-9 2.0661 3.30995E-4 +761E-9 2.06569 3.18662E-4 +762E-9 2.06529 3.06329E-4 +763E-9 2.06488 2.93996E-4 +764E-9 2.06448 2.81663E-4 +765E-9 2.06407 2.6933E-4 +766E-9 2.06366 2.56996E-4 +767E-9 2.06326 2.44663E-4 +768E-9 2.06285 2.3233E-4 +769E-9 2.06245 2.19997E-4 +770E-9 2.06204 2.07664E-4 +771E-9 2.06166 1.99822E-4 +772E-9 2.06129 1.91979E-4 +773E-9 2.06091 1.84137E-4 +774E-9 2.06053 1.76295E-4 +775E-9 2.06016 1.68453E-4 +776E-9 2.05978 1.6061E-4 +777E-9 2.0594 1.52768E-4 +778E-9 2.05902 1.44926E-4 +779E-9 2.05865 1.37083E-4 +780E-9 2.05827 1.29241E-4 +781E-9 2.05792 1.24304E-4 +782E-9 2.05757 1.19368E-4 +783E-9 2.05722 1.14431E-4 +784E-9 2.05687 1.09494E-4 +785E-9 2.05652 1.04557E-4 +786E-9 2.05617 9.96207E-5 +787E-9 2.05582 9.4684E-5 +788E-9 2.05547 8.97472E-5 +789E-9 2.05512 8.48105E-5 +790E-9 2.05477 7.98738E-5 +791E-9 2.05444 7.67932E-5 +792E-9 2.05411 7.37126E-5 +793E-9 2.05379 7.0632E-5 +794E-9 2.05346 6.75514E-5 +795E-9 2.05313 6.44708E-5 +796E-9 2.0528 6.13902E-5 +797E-9 2.05247 5.83096E-5 +798E-9 2.05215 5.5229E-5 +799E-9 2.05182 5.21484E-5 +800E-9 2.05149 4.90678E-5 +801E-9 2.05118 4.716E-5 +802E-9 2.05088 4.52521E-5 +803E-9 2.05057 4.33443E-5 +804E-9 2.05026 4.14364E-5 +805E-9 2.04996 3.95286E-5 +806E-9 2.04965 3.76207E-5 +807E-9 2.04934 3.57129E-5 +808E-9 2.04903 3.3805E-5 +809E-9 2.04873 3.18972E-5 +810E-9 2.04842 2.99893E-5 +811E-9 2.04813 2.88154E-5 +812E-9 2.04784 2.76415E-5 +813E-9 2.04756 2.64676E-5 +814E-9 2.04727 2.52937E-5 +815E-9 2.04698 2.41198E-5 +816E-9 2.04669 2.29459E-5 +817E-9 2.0464 2.1772E-5 +818E-9 2.04612 2.05981E-5 +819E-9 2.04583 1.94242E-5 +820E-9 2.04554 1.82503E-5 +821E-9 2.04527 1.7532E-5 +822E-9 2.045 1.68137E-5 +823E-9 2.04472 1.60954E-5 +824E-9 2.04445 1.53771E-5 +825E-9 2.04418 1.46588E-5 +826E-9 2.04391 1.39404E-5 +827E-9 2.04364 1.32221E-5 +828E-9 2.04336 1.25038E-5 +829E-9 2.04309 1.17855E-5 +830E-9 2.04282 1.10672E-5 +831E-9 2.04256 1.06297E-5 +832E-9 2.04231 1.01922E-5 +833E-9 2.04205 9.75474E-6 +834E-9 2.0418 9.31725E-6 +835E-9 2.04154 8.87976E-6 +836E-9 2.04128 8.44227E-6 +837E-9 2.04103 8.00478E-6 +838E-9 2.04077 7.5673E-6 +839E-9 2.04052 7.12981E-6 +840E-9 2.04026 6.69232E-6 +841E-9 2.04002 6.42689E-6 +842E-9 2.03977 6.16145E-6 +843E-9 2.03953 5.89602E-6 +844E-9 2.03929 5.63058E-6 +845E-9 2.03905 5.36515E-6 +846E-9 2.0388 5.09972E-6 +847E-9 2.03856 4.83428E-6 +848E-9 2.03832 4.56885E-6 +849E-9 2.03807 4.30341E-6 +850E-9 2.03783 4.03798E-6 +851E-9 2.0376 3.87744E-6 +852E-9 2.03737 3.7169E-6 +853E-9 2.03714 3.55636E-6 +854E-9 2.03691 3.39582E-6 +855E-9 2.03668 3.23528E-6 +856E-9 2.03645 3.07473E-6 +857E-9 2.03622 2.91419E-6 +858E-9 2.03599 2.75365E-6 +859E-9 2.03576 2.59311E-6 +860E-9 2.03553 2.43257E-6 +861E-9 2.03531 2.33571E-6 +862E-9 2.03509 2.23885E-6 +863E-9 2.03487 2.14199E-6 +864E-9 2.03465 2.04513E-6 +865E-9 2.03444 1.94827E-6 +866E-9 2.03422 1.8514E-6 +867E-9 2.034 1.75454E-6 +868E-9 2.03378 1.65768E-6 +869E-9 2.03356 1.56082E-6 +870E-9 2.03334 1.46396E-6 +871E-9 2.03313 1.40563E-6 +872E-9 2.03292 1.3473E-6 +873E-9 2.03272 1.28896E-6 +874E-9 2.03251 1.23063E-6 +875E-9 2.0323 1.1723E-6 +876E-9 2.03209 1.11397E-6 +877E-9 2.03188 1.05563E-6 +878E-9 2.03168 9.97302E-7 +879E-9 2.03147 9.3897E-7 +880E-9 2.03126 8.80638E-7 +881E-9 2.03106 8.45553E-7 +882E-9 2.03086 8.10468E-7 +883E-9 2.03067 7.75383E-7 +884E-9 2.03047 7.40298E-7 +885E-9 2.03027 7.05213E-7 +886E-9 2.03007 6.70127E-7 +887E-9 2.02987 6.35042E-7 +888E-9 2.02968 5.99957E-7 +889E-9 2.02948 5.64872E-7 +890E-9 2.02928 5.29787E-7 +891E-9 2.02909 5.087E-7 +892E-9 2.0289 4.87613E-7 +893E-9 2.02871 4.66527E-7 +894E-9 2.02852 4.4544E-7 +895E-9 2.02834 4.24353E-7 +896E-9 2.02815 4.03266E-7 +897E-9 2.02796 3.82179E-7 +898E-9 2.02777 3.61093E-7 +899E-9 2.02758 3.40006E-7 +900E-9 2.02739 3.18919E-7 +901E-9 2.02721 3.06248E-7 +902E-9 2.02703 2.93577E-7 +903E-9 2.02685 2.80907E-7 +904E-9 2.02667 2.68236E-7 +905E-9 2.02649 2.55565E-7 +906E-9 2.02631 2.42894E-7 +907E-9 2.02613 2.30223E-7 +908E-9 2.02595 2.17553E-7 +909E-9 2.02577 2.04882E-7 +910E-9 2.02559 1.92211E-7 +911E-9 2.02542 1.84596E-7 +912E-9 2.02525 1.7698E-7 +913E-9 2.02507 1.69365E-7 +914E-9 2.0249 1.61749E-7 +915E-9 2.02473 1.54134E-7 +916E-9 2.02456 1.46518E-7 +917E-9 2.02439 1.38903E-7 +918E-9 2.02421 1.31287E-7 +919E-9 2.02404 1.23672E-7 +920E-9 2.02387 1.16056E-7 +921E-9 2.02371 1.11475E-7 +922E-9 2.02354 1.06895E-7 +923E-9 2.02338 1.02314E-7 +924E-9 2.02321 9.77338E-8 +925E-9 2.02305 9.31532E-8 +926E-9 2.02288 8.85726E-8 +927E-9 2.02272 8.39921E-8 +928E-9 2.02255 7.94115E-8 +929E-9 2.02239 7.4831E-8 +930E-9 2.02222 7.02504E-8 +931E-9 2.02206 6.7492E-8 +932E-9 2.0219 6.47335E-8 +933E-9 2.02175 6.19751E-8 +934E-9 2.02159 5.92166E-8 +935E-9 2.02143 5.64582E-8 +936E-9 2.02127 5.36997E-8 +937E-9 2.02111 5.09413E-8 +938E-9 2.02096 4.81828E-8 +939E-9 2.0208 4.54244E-8 +940E-9 2.02064 4.26659E-8 +941E-9 2.02049 4.10019E-8 +942E-9 2.02034 3.93378E-8 +943E-9 2.02018 3.76738E-8 +944E-9 2.02003 3.60097E-8 +945E-9 2.01988 3.43457E-8 +946E-9 2.01973 3.26817E-8 +947E-9 2.01958 3.10176E-8 +948E-9 2.01942 2.93536E-8 +949E-9 2.01927 2.76895E-8 +950E-9 2.01912 2.60255E-8 +951E-9 2.01898 2.50194E-8 +952E-9 2.01883 2.40132E-8 +953E-9 2.01869 2.30071E-8 +954E-9 2.01854 2.20009E-8 +955E-9 2.0184 2.09948E-8 +956E-9 2.01825 1.99886E-8 +957E-9 2.01811 1.89825E-8 +958E-9 2.01796 1.79763E-8 +959E-9 2.01782 1.69702E-8 +960E-9 2.01767 1.5964E-8 +961E-9 2.01753 1.53539E-8 +962E-9 2.01739 1.47437E-8 +963E-9 2.01725 1.41336E-8 +964E-9 2.01711 1.35234E-8 +965E-9 2.01698 1.29133E-8 +966E-9 2.01684 1.23031E-8 +967E-9 2.0167 1.1693E-8 +968E-9 2.01656 1.10828E-8 +969E-9 2.01642 1.04727E-8 +970E-9 2.01628 9.86256E-9 +971E-9 2.01615 9.49119E-9 +972E-9 2.01601 9.11981E-9 +973E-9 2.01588 8.74844E-9 +974E-9 2.01574 8.37706E-9 +975E-9 2.01561 8.00569E-9 +976E-9 2.01548 7.63432E-9 +977E-9 2.01534 7.26294E-9 +978E-9 2.01521 6.89157E-9 +979E-9 2.01507 6.52019E-9 +980E-9 2.01494 6.14882E-9 +981E-9 2.01481 5.92173E-9 +982E-9 2.01468 5.69465E-9 +983E-9 2.01455 5.46756E-9 +984E-9 2.01442 5.24047E-9 +985E-9 2.0143 5.01339E-9 +986E-9 2.01417 4.7863E-9 +987E-9 2.01404 4.55921E-9 +988E-9 2.01391 4.33212E-9 +989E-9 2.01378 4.10504E-9 +990E-9 2.01365 3.87795E-9 +991E-9 2.01353 3.73829E-9 +992E-9 2.0134 3.59863E-9 +993E-9 2.01328 3.45896E-9 +994E-9 2.01315 3.3193E-9 +995E-9 2.01303 3.17964E-9 +996E-9 2.01291 3.03998E-9 +997E-9 2.01278 2.90032E-9 +998E-9 2.01266 2.76065E-9 +999E-9 2.01253 2.62099E-9 +1000E-9 2.01241 2.48133E-9 +1001E-9 2.01229 2.39482E-9 +1002E-9 2.01217 2.30831E-9 +1003E-9 2.01205 2.22179E-9 +1004E-9 2.01193 2.13528E-9 +1005E-9 2.01182 2.04877E-9 +1006E-9 2.0117 1.96226E-9 +1007E-9 2.01158 1.87575E-9 +1008E-9 2.01146 1.78923E-9 +1009E-9 2.01134 1.70272E-9 +1010E-9 2.01122 1.61621E-9 +1011E-9 2.01111 1.56214E-9 +1012E-9 2.01099 1.50807E-9 +1013E-9 2.01088 1.454E-9 +1014E-9 2.01076 1.39993E-9 +1015E-9 2.01065 1.34586E-9 +1016E-9 2.01053 1.29178E-9 +1017E-9 2.01042 1.23771E-9 +1018E-9 2.0103 1.18364E-9 +1019E-9 2.01019 1.12957E-9 +1020E-9 2.01007 1.0755E-9 +1021E-9 2.00996 1.04133E-9 +1022E-9 2.00985 1.00715E-9 +1023E-9 2.00974 9.72979E-10 +1024E-9 2.00963 9.38805E-10 +1025E-9 2.00952 9.04632E-10 +1026E-9 2.0094 8.70458E-10 +1027E-9 2.00929 8.36284E-10 +1028E-9 2.00918 8.0211E-10 +1029E-9 2.00907 7.67937E-10 +1030E-9 2.00896 7.33763E-10 +1031E-9 2.00885 7.11866E-10 +1032E-9 2.00875 6.8997E-10 +1033E-9 2.00864 6.68073E-10 +1034E-9 2.00853 6.46176E-10 +1035E-9 2.00843 6.2428E-10 +1036E-9 2.00832 6.02383E-10 +1037E-9 2.00821 5.80486E-10 +1038E-9 2.0081 5.58589E-10 +1039E-9 2.008 5.36693E-10 +1040E-9 2.00789 5.14796E-10 +1041E-9 2.00779 5.00529E-10 +1042E-9 2.00768 4.86263E-10 +1043E-9 2.00758 4.71996E-10 +1044E-9 2.00748 4.57729E-10 +1045E-9 2.00738 4.43463E-10 +1046E-9 2.00727 4.29196E-10 +1047E-9 2.00717 4.14929E-10 +1048E-9 2.00707 4.00662E-10 +1049E-9 2.00696 3.86396E-10 +1050E-9 2.00686 3.72129E-10 +1051E-9 2.00676 3.62647E-10 +1052E-9 2.00666 3.53165E-10 +1053E-9 2.00656 3.43682E-10 +1054E-9 2.00646 3.342E-10 +1055E-9 2.00636 3.24718E-10 +1056E-9 2.00626 3.15236E-10 +1057E-9 2.00616 3.05754E-10 +1058E-9 2.00606 2.96271E-10 +1059E-9 2.00596 2.86789E-10 +1060E-9 2.00586 2.77307E-10 +1061E-9 2.00576 2.70858E-10 +1062E-9 2.00567 2.64408E-10 +1063E-9 2.00557 2.57959E-10 +1064E-9 2.00548 2.51509E-10 +1065E-9 2.00538 2.4506E-10 +1066E-9 2.00528 2.38611E-10 +1067E-9 2.00519 2.32161E-10 +1068E-9 2.00509 2.25712E-10 +1069E-9 2.005 2.19262E-10 +1070E-9 2.0049 2.12813E-10 +1071E-9 2.00481 2.08312E-10 +1072E-9 2.00471 2.0381E-10 +1073E-9 2.00462 1.99309E-10 +1074E-9 2.00453 1.94807E-10 +1075E-9 2.00444 1.90306E-10 +1076E-9 2.00434 1.85805E-10 +1077E-9 2.00425 1.81303E-10 +1078E-9 2.00416 1.76802E-10 +1079E-9 2.00406 1.723E-10 +1080E-9 2.00397 1.67799E-10 +1081E-9 2.00388 1.64569E-10 +1082E-9 2.00379 1.61339E-10 +1083E-9 2.0037 1.58109E-10 +1084E-9 2.00361 1.54879E-10 +1085E-9 2.00352 1.51649E-10 +1086E-9 2.00343 1.48418E-10 +1087E-9 2.00334 1.45188E-10 +1088E-9 2.00325 1.41958E-10 +1089E-9 2.00316 1.38728E-10 +1090E-9 2.00307 1.35498E-10 +1091E-9 2.00298 1.33113E-10 +1092E-9 2.0029 1.30729E-10 +1093E-9 2.00281 1.28344E-10 +1094E-9 2.00272 1.2596E-10 +1095E-9 2.00264 1.23575E-10 +1096E-9 2.00255 1.2119E-10 +1097E-9 2.00246 1.18806E-10 +1098E-9 2.00237 1.16421E-10 +1099E-9 2.00229 1.14037E-10 +1100E-9 2.0022 1.11652E-10 diff --git a/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_ITO.txt b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_ITO.txt new file mode 100644 index 0000000..81f32f0 --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_ITO.txt @@ -0,0 +1,182 @@ +lambda n k +300e-9 2.2 0.3003 +305e-9 2.19 0.243 +310e-9 2.17 0.1855 +315e-9 2.16 0.1442 +320e-9 2.14 0.1102 +325e-9 2.13 0.085 +330e-9 2.12 0.0682 +335e-9 2.1 0.0546 +340e-9 2.09 0.0443 +345e-9 2.08 0.036 +350e-9 2.07 0.0302 +355e-9 2.06 0.0247 +360e-9 2.04 0.0213 +365e-9 2.03 0.0182 +370e-9 2.02 0.0157 +375e-9 2.01 0.0135 +380e-9 2.0 0.0117 +385e-9 1.99 0.01 +390e-9 1.98 0.0087747 +395e-9 1.97 0.0075628 +400e-9 1.96 0.0068915 +405e-9 1.95 0.0061998 +410e-9 1.95 0.0056509 +415e-9 1.94 0.0051933 +420e-9 1.93 0.0047273 +425e-9 1.92 0.0044087 +430e-9 1.91 0.004066 +435e-9 1.91 0.0038322 +440e-9 1.9 0.0036079 +445e-9 1.89 0.0034165 +450e-9 1.88 0.0032522 +455e-9 1.88 0.0031077 +460e-9 1.87 0.0030083 +465e-9 1.86 0.0029183 +470e-9 1.86 0.0028414 +475e-9 1.85 0.002793 +480e-9 1.84 0.0027537 +485e-9 1.84 0.0027158 +490e-9 1.83 0.0027085 +495e-9 1.83 0.0027093 +500e-9 1.82 0.0027315 +505e-9 1.82 0.0027698 +510e-9 1.81 0.0028206 +515e-9 1.8 0.0028705 +520e-9 1.8 0.0029643 +525e-9 1.79 0.0030433 +530e-9 1.79 0.0031263 +535e-9 1.79 0.0032089 +540e-9 1.78 0.0032916 +545e-9 1.78 0.0033792 +550e-9 1.77 0.0034668 +555e-9 1.77 0.0035545 +560e-9 1.76 0.0036421 +565e-9 1.76 0.0037297 +570e-9 1.76 0.0039156 +575e-9 1.75 0.0040252 +580e-9 1.75 0.0041416 +585e-9 1.74 0.0042578 +590e-9 1.74 0.0043738 +595e-9 1.74 0.0045439 +600e-9 1.73 0.0046807 +605e-9 1.73 0.0048175 +610e-9 1.73 0.0049631 +615e-9 1.72 0.0051104 +620e-9 1.72 0.0052574 +625e-9 1.72 0.0054041 +630e-9 1.72 0.0056196 +635e-9 1.71 0.0057982 +640e-9 1.71 0.0059768 +645e-9 1.71 0.0061607 +650e-9 1.7 0.0063529 +655e-9 1.7 0.0065452 +660e-9 1.7 0.0067929 +665e-9 1.7 0.0070359 +670e-9 1.69 0.0072781 +675e-9 1.69 0.0075193 +680e-9 1.69 0.007771 +685e-9 1.69 0.0080392 +690e-9 1.69 0.0083078 +695e-9 1.68 0.0085257 +700e-9 1.68 0.0088558 +705e-9 1.68 0.0091851 +710e-9 1.68 0.0095138 +715e-9 1.68 0.0098619 +720e-9 1.67 0.0102 +725e-9 1.67 0.0106 +730e-9 1.67 0.0108 +735e-9 1.67 0.0113 +740e-9 1.67 0.0117 +745e-9 1.66 0.0122 +750e-9 1.66 0.0126 +755e-9 1.66 0.0131 +760e-9 1.66 0.0136 +765e-9 1.66 0.014 +770e-9 1.66 0.0145 +775e-9 1.66 0.0151 +780e-9 1.65 0.0156 +785e-9 1.65 0.0161 +790e-9 1.65 0.0166 +795e-9 1.65 0.0171 +800e-9 1.65 0.0176 +805e-9 1.65 0.0181 +810e-9 1.65 0.0186 +815e-9 1.65 0.0191 +820e-9 1.64 0.0196 +825e-9 1.64 0.0201 +830e-9 1.64 0.0207 +835e-9 1.64 0.0212 +840e-9 1.64 0.0217 +845e-9 1.64 0.0222 +850e-9 1.64 0.0227 +855e-9 1.64 0.0232 +860e-9 1.64 0.0239 +865e-9 1.64 0.0245 +870e-9 1.63 0.025 +875e-9 1.63 0.0255 +880e-9 1.63 0.0261 +885e-9 1.63 0.0266 +890e-9 1.63 0.0272 +895e-9 1.63 0.0277 +900e-9 1.63 0.0283 +905e-9 1.63 0.0288 +910e-9 1.63 0.0294 +915e-9 1.63 0.0299 +920e-9 1.63 0.0305 +925e-9 1.63 0.0311 +930e-9 1.63 0.0317 +935e-9 1.63 0.0322 +940e-9 1.62 0.0328 +945e-9 1.62 0.0334 +950e-9 1.62 0.034 +955e-9 1.62 0.0347 +960e-9 1.62 0.0353 +965e-9 1.62 0.0359 +970e-9 1.62 0.0366 +975e-9 1.62 0.0373 +980e-9 1.62 0.0379 +985e-9 1.62 0.0386 +990e-9 1.62 0.0393 +995e-9 1.62 0.04 +1000e-9 1.62 0.0408 +1005e-9 1.62 0.0416 +1010e-9 1.62 0.0423 +1015e-9 1.62 0.0431 +1020e-9 1.62 0.0439 +1025e-9 1.62 0.0447 +1030e-9 1.62 0.0455 +1035e-9 1.62 0.0463 +1040e-9 1.61 0.0472 +1045e-9 1.61 0.0482 +1050e-9 1.61 0.0492 +1055e-9 1.61 0.0501 +1060e-9 1.61 0.0511 +1065e-9 1.61 0.0521 +1070e-9 1.61 0.0532 +1075e-9 1.61 0.0539 +1080e-9 1.61 0.0552 +1085e-9 1.61 0.0565 +1090e-9 1.61 0.0578 +1095e-9 1.61 0.0591 +1100e-9 1.61 0.0603 +1105e-9 1.61 0.0617 +1110e-9 1.61 0.0631 +1115e-9 1.61 0.0641 +1120e-9 1.61 0.0657 +1125e-9 1.61 0.0674 +1130e-9 1.61 0.069 +1135e-9 1.61 0.0708 +1140e-9 1.61 0.0726 +1145e-9 1.61 0.0735 +1150e-9 1.61 0.0756 +1155e-9 1.61 0.0776 +1160e-9 1.61 0.0796 +1165e-9 1.61 0.0817 +1170e-9 1.61 0.0837 +1175e-9 1.61 0.0858 +1180e-9 1.61 0.0878 +1185e-9 1.61 0.0899 +1190e-9 1.61 0.0919 +1195e-9 1.61 0.094 +1200e-9 1.61 0.096 diff --git a/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_glass.txt b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_glass.txt new file mode 100644 index 0000000..1c9a547 --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_glass.txt @@ -0,0 +1,602 @@ +lambda n k +300e-9 1.5522 0 +301e-9 1.55191 0 +302e-9 1.55162 0 +303e-9 1.55133 0 +304e-9 1.55105 0 +305e-9 1.55076 0 +306e-9 1.55047 0 +307e-9 1.55018 0 +308e-9 1.54989 0 +309e-9 1.54961 0 +310e-9 1.54932 0 +311e-9 1.54903 0 +312e-9 1.54874 0 +313e-9 1.54845 0 +314e-9 1.54819 0 +315e-9 1.54788 0 +316e-9 1.54759 0 +317e-9 1.54729 0 +318e-9 1.547 0 +319e-9 1.54671 0 +320e-9 1.54643 0 +321e-9 1.54615 0 +322e-9 1.54587 0 +323e-9 1.54559 0 +324e-9 1.54532 0 +325e-9 1.54505 0 +326e-9 1.54479 0 +327e-9 1.54453 0 +328e-9 1.54427 0 +329e-9 1.54401 0 +330e-9 1.54375 0 +331e-9 1.5435 0 +332e-9 1.54325 0 +333e-9 1.54301 0 +334e-9 1.54276 0 +335e-9 1.54252 0 +336e-9 1.54228 0 +337e-9 1.54204 0 +338e-9 1.54181 0 +339e-9 1.54157 0 +340e-9 1.54134 0 +341e-9 1.54111 0 +342e-9 1.54089 0 +343e-9 1.54067 0 +344e-9 1.54045 0 +345e-9 1.54023 0 +346e-9 1.54001 0 +347e-9 1.5398 0 +348e-9 1.53959 0 +349e-9 1.53937 0 +350e-9 1.53916 0 +351e-9 1.53896 0 +352e-9 1.53875 0 +353e-9 1.53855 0 +354e-9 1.53835 0 +355e-9 1.53815 0 +356e-9 1.53796 0 +357e-9 1.53776 0 +358e-9 1.53757 0 +359e-9 1.53738 0 +360e-9 1.53719 0 +361e-9 1.53701 0 +362e-9 1.53682 0 +363e-9 1.53664 0 +364e-9 1.53645 0 +365e-9 1.53627 0 +366e-9 1.53609 0 +367e-9 1.53591 0 +368e-9 1.53573 0 +369e-9 1.53556 0 +370e-9 1.53539 0 +371e-9 1.53522 0 +372e-9 1.53506 0 +373e-9 1.53488 0 +374e-9 1.53472 0 +375e-9 1.53455 0 +376e-9 1.53438 0 +377e-9 1.53422 0 +378e-9 1.53406 0 +379e-9 1.53391 0 +380e-9 1.53375 0 +381e-9 1.53359 0 +382e-9 1.53343 0 +383e-9 1.53328 0 +384e-9 1.53312 0 +385e-9 1.53297 0 +386e-9 1.53283 0 +387e-9 1.53268 0 +388e-9 1.53253 0 +389e-9 1.53238 0 +390e-9 1.53224 0 +391e-9 1.53209 0 +392e-9 1.53195 0 +393e-9 1.53181 0 +394e-9 1.53167 0 +395e-9 1.53153 0 +396e-9 1.53139 0 +397e-9 1.53125 0 +398e-9 1.53112 0 +399e-9 1.53099 0 +400e-9 1.53085 0 +401e-9 1.53072 0 +402e-9 1.53059 0 +403e-9 1.53045 0 +404e-9 1.53033 0 +405e-9 1.5302 0 +406e-9 1.53007 0 +407e-9 1.52994 0 +408e-9 1.52981 0 +409e-9 1.52969 0 +410e-9 1.52957 0 +411e-9 1.52945 0 +412e-9 1.52933 0 +413e-9 1.52921 0 +414e-9 1.52908 0 +415e-9 1.52896 0 +416e-9 1.52884 0 +417e-9 1.52873 0 +418e-9 1.52862 0 +419e-9 1.5285 0 +420e-9 1.52839 0 +421e-9 1.52827 0 +422e-9 1.52816 0 +423e-9 1.52804 0 +424e-9 1.52793 0 +425e-9 1.52782 0 +426e-9 1.52772 0 +427e-9 1.52761 0 +428e-9 1.5275 0 +429e-9 1.5274 0 +430e-9 1.52729 0 +431e-9 1.52718 0 +432e-9 1.52708 0 +433e-9 1.52698 0 +434e-9 1.52687 0 +435e-9 1.52677 0 +436e-9 1.52667 0 +437e-9 1.52656 0 +438e-9 1.52647 0 +439e-9 1.52637 0 +440e-9 1.52627 0 +441e-9 1.52617 0 +442e-9 1.52607 0 +443e-9 1.52598 0 +444e-9 1.52588 0 +445e-9 1.52578 0 +446e-9 1.52569 0 +447e-9 1.5256 0 +448e-9 1.52551 0 +449e-9 1.52541 0 +450e-9 1.52532 0 +451e-9 1.52523 0 +452e-9 1.52513 0 +453e-9 1.52504 0 +454e-9 1.52496 0 +455e-9 1.52487 0 +456e-9 1.52478 0 +457e-9 1.52469 0 +458e-9 1.52461 0 +459e-9 1.52452 0 +460e-9 1.52443 0 +461e-9 1.52435 0 +462e-9 1.52426 0 +463e-9 1.52418 0 +464e-9 1.5241 0 +465e-9 1.52401 0 +466e-9 1.52393 0 +467e-9 1.52385 0 +468e-9 1.52376 0 +469e-9 1.52368 0 +470e-9 1.5236 0 +471e-9 1.52353 0 +472e-9 1.52345 0 +473e-9 1.52337 0 +474e-9 1.52329 0 +475e-9 1.52322 0 +476e-9 1.52313 0 +477e-9 1.52306 0 +478e-9 1.52298 0 +479e-9 1.5229 0 +480e-9 1.52283 0 +481e-9 1.52275 0 +482e-9 1.52268 0 +483e-9 1.5226 0 +484e-9 1.52253 0 +485e-9 1.52246 0 +486e-9 1.52238 0 +487e-9 1.52232 0 +488e-9 1.52225 0 +489e-9 1.52217 0 +490e-9 1.5221 0 +491e-9 1.52203 0 +492e-9 1.52196 0 +493e-9 1.52189 0 +494e-9 1.52182 0 +495e-9 1.52176 0 +496e-9 1.52169 0 +497e-9 1.52161 0 +498e-9 1.52155 0 +499e-9 1.52148 0 +500e-9 1.52141 0 +501e-9 1.52135 0 +502e-9 1.52128 0 +503e-9 1.52121 0 +504e-9 1.52115 0 +505e-9 1.52109 0 +506e-9 1.52103 0 +507e-9 1.52096 0 +508e-9 1.5209 0 +509e-9 1.52084 0 +510e-9 1.52077 0 +511e-9 1.52071 0 +512e-9 1.52065 0 +513e-9 1.52058 0 +514e-9 1.52052 0 +515e-9 1.52046 0 +516e-9 1.5204 0 +517e-9 1.52033 0 +518e-9 1.52028 0 +519e-9 1.52022 0 +520e-9 1.52016 0 +521e-9 1.5201 0 +522e-9 1.52004 0 +523e-9 1.51998 0 +524e-9 1.51992 0 +525e-9 1.51987 0 +526e-9 1.51981 0 +527e-9 1.51975 0 +528e-9 1.5197 0 +529e-9 1.51964 0 +530e-9 1.51959 0 +531e-9 1.51953 0 +532e-9 1.51947 0 +533e-9 1.51942 0 +534e-9 1.51937 0 +535e-9 1.51931 0 +536e-9 1.51925 0 +537e-9 1.5192 0 +538e-9 1.51914 0 +539e-9 1.51909 0 +540e-9 1.51904 0 +541e-9 1.51898 0 +542e-9 1.51893 0 +543e-9 1.51888 0 +544e-9 1.51883 0 +545e-9 1.51878 0 +546e-9 1.51873 0 +547e-9 1.51867 0 +548e-9 1.51862 0 +549e-9 1.51857 0 +550e-9 1.51852 0 +551e-9 1.51848 0 +552e-9 1.51843 0 +553e-9 1.51837 0 +554e-9 1.51832 0 +555e-9 1.51827 0 +556e-9 1.51823 0 +557e-9 1.51818 0 +558e-9 1.51813 0 +559e-9 1.51808 0 +560e-9 1.51803 0 +561e-9 1.51798 0 +562e-9 1.51794 0 +563e-9 1.51789 0 +564e-9 1.51784 0 +565e-9 1.5178 0 +566e-9 1.51775 0 +567e-9 1.5177 0 +568e-9 1.51765 0 +569e-9 1.51761 0 +570e-9 1.51757 0 +571e-9 1.51752 0 +572e-9 1.51748 0 +573e-9 1.51743 0 +574e-9 1.51739 0 +575e-9 1.51735 0 +576e-9 1.5173 0 +577e-9 1.51726 0 +578e-9 1.51721 0 +579e-9 1.51717 0 +580e-9 1.51712 0 +581e-9 1.51708 0 +582e-9 1.51703 0 +583e-9 1.51699 0 +584e-9 1.51695 0 +585e-9 1.5169 0 +586e-9 1.51687 0 +587e-9 1.51682 0 +588e-9 1.51678 0 +589e-9 1.51675 0 +590e-9 1.5167 0 +591e-9 1.51666 0 +592e-9 1.51662 0 +593e-9 1.51658 0 +594e-9 1.51653 0 +595e-9 1.51649 0 +596e-9 1.51646 0 +597e-9 1.51641 0 +598e-9 1.51637 0 +599e-9 1.51634 0 +600e-9 1.5163 0 +601e-9 1.51625 0 +602e-9 1.51622 0 +603e-9 1.51618 0 +604e-9 1.51614 0 +605e-9 1.5161 0 +606e-9 1.51606 0 +607e-9 1.51602 0 +608e-9 1.51598 0 +609e-9 1.51595 0 +610e-9 1.51591 0 +611e-9 1.51587 0 +612e-9 1.51584 0 +613e-9 1.5158 0 +614e-9 1.51576 0 +615e-9 1.51573 0 +616e-9 1.51569 0 +617e-9 1.51565 0 +618e-9 1.51562 0 +619e-9 1.51558 0 +620e-9 1.51554 0 +621e-9 1.51551 0 +622e-9 1.51547 0 +623e-9 1.51543 0 +624e-9 1.51539 0 +625e-9 1.51536 0 +626e-9 1.51532 0 +627e-9 1.51529 0 +628e-9 1.51526 0 +629e-9 1.51522 0 +630e-9 1.51519 0 +631e-9 1.51516 0 +632e-9 1.51512 0 +633e-9 1.51508 0 +634e-9 1.51505 0 +635e-9 1.51502 0 +636e-9 1.51498 0 +637e-9 1.51494 0 +638e-9 1.51491 0 +639e-9 1.51488 0 +640e-9 1.51484 0 +641e-9 1.51481 0 +642e-9 1.51478 0 +643e-9 1.51474 0 +644e-9 1.51471 0 +645e-9 1.51468 0 +646e-9 1.51465 0 +647e-9 1.51462 0 +648e-9 1.51459 0 +649e-9 1.51456 0 +650e-9 1.51452 0 +651e-9 1.51449 0 +652e-9 1.51446 0 +653e-9 1.51443 0 +654e-9 1.5144 0 +655e-9 1.51436 0 +656e-9 1.51433 0 +657e-9 1.5143 0 +658e-9 1.51427 0 +659e-9 1.51424 0 +660e-9 1.51421 0 +661e-9 1.51417 0 +662e-9 1.51414 0 +663e-9 1.51411 0 +664e-9 1.51408 0 +665e-9 1.51405 0 +666e-9 1.51402 0 +667e-9 1.51399 0 +668e-9 1.51396 0 +669e-9 1.51394 0 +670e-9 1.51391 0 +671e-9 1.51388 0 +672e-9 1.51385 0 +673e-9 1.51382 0 +674e-9 1.51379 0 +675e-9 1.51376 0 +676e-9 1.51373 0 +677e-9 1.5137 0 +678e-9 1.51367 0 +679e-9 1.51364 0 +680e-9 1.51361 0 +681e-9 1.51359 0 +682e-9 1.51356 0 +683e-9 1.51353 0 +684e-9 1.5135 0 +685e-9 1.51347 0 +686e-9 1.51344 0 +687e-9 1.51341 0 +688e-9 1.51339 0 +689e-9 1.51336 0 +690e-9 1.51334 0 +691e-9 1.51331 0 +692e-9 1.51328 0 +693e-9 1.51325 0 +694e-9 1.51323 0 +695e-9 1.5132 0 +696e-9 1.51317 0 +697e-9 1.51315 0 +698e-9 1.51312 0 +699e-9 1.51309 0 +700e-9 1.51306 0 +701e-9 1.51303 0 +702e-9 1.51301 0 +703e-9 1.51298 0 +704e-9 1.51296 0 +705e-9 1.51293 0 +706e-9 1.5129 0 +707e-9 1.51288 0 +708e-9 1.51286 0 +709e-9 1.51284 0 +710e-9 1.51282 0 +711e-9 1.51279 0 +712e-9 1.51277 0 +713e-9 1.51275 0 +714e-9 1.51273 0 +715e-9 1.51271 0 +716e-9 1.51269 0 +717e-9 1.51267 0 +718e-9 1.51265 0 +719e-9 1.51262 0 +720e-9 1.5126 0 +721e-9 1.51258 0 +722e-9 1.51256 0 +723e-9 1.51254 0 +724e-9 1.51252 0 +725e-9 1.5125 0 +726e-9 1.51248 0 +727e-9 1.51245 0 +728e-9 1.51243 0 +729e-9 1.51241 0 +730e-9 1.51239 0 +731e-9 1.51237 0 +732e-9 1.51235 0 +733e-9 1.51233 0 +734e-9 1.51231 0 +735e-9 1.51229 0 +736e-9 1.51226 0 +737e-9 1.51224 0 +738e-9 1.51222 0 +739e-9 1.5122 0 +740e-9 1.51218 0 +741e-9 1.51216 0 +742e-9 1.51214 0 +743e-9 1.51212 0 +744e-9 1.51209 0 +745e-9 1.51207 0 +746e-9 1.51205 0 +747e-9 1.51203 0 +748e-9 1.51201 0 +749e-9 1.51199 0 +750e-9 1.51197 0 +751e-9 1.51195 0 +752e-9 1.51192 0 +753e-9 1.5119 0 +754e-9 1.51188 0 +755e-9 1.51186 0 +756e-9 1.51184 0 +757e-9 1.51182 0 +758e-9 1.5118 0 +759e-9 1.51178 0 +760e-9 1.51175 0 +761e-9 1.51173 0 +762e-9 1.51171 0 +763e-9 1.51169 0 +764e-9 1.51167 0 +765e-9 1.51165 0 +766e-9 1.51163 0 +767e-9 1.51161 0 +768e-9 1.51158 0 +769e-9 1.51156 0 +770e-9 1.51154 0 +771e-9 1.51152 0 +772e-9 1.5115 0 +773e-9 1.51148 0 +774e-9 1.51146 0 +775e-9 1.51144 0 +776e-9 1.51142 0 +777e-9 1.51139 0 +778e-9 1.51137 0 +779e-9 1.51135 0 +780e-9 1.51133 0 +781e-9 1.51131 0 +782e-9 1.51129 0 +783e-9 1.51127 0 +784e-9 1.51125 0 +785e-9 1.51122 0 +786e-9 1.5112 0 +787e-9 1.51118 0 +788e-9 1.51116 0 +789e-9 1.51114 0 +790e-9 1.51112 0 +791e-9 1.5111 0 +792e-9 1.51108 0 +793e-9 1.51105 0 +794e-9 1.51103 0 +795e-9 1.51101 0 +796e-9 1.51099 0 +797e-9 1.51097 0 +798e-9 1.51095 0 +799e-9 1.51093 0 +800e-9 1.51091 0 +801e-9 1.51088 0 +802e-9 1.51086 0 +803e-9 1.51084 0 +804e-9 1.51082 0 +805e-9 1.5108 0 +806e-9 1.51078 0 +807e-9 1.51076 0 +808e-9 1.51074 0 +809e-9 1.51071 0 +810e-9 1.51069 0 +811e-9 1.51067 0 +812e-9 1.51065 0 +813e-9 1.51063 0 +814e-9 1.51061 0 +815e-9 1.51059 0 +816e-9 1.51057 0 +817e-9 1.51054 0 +818e-9 1.51052 0 +819e-9 1.5105 0 +820e-9 1.51048 0 +821e-9 1.51046 0 +822e-9 1.51044 0 +823e-9 1.51042 0 +824e-9 1.5104 0 +825e-9 1.51038 0 +826e-9 1.51035 0 +827e-9 1.51033 0 +828e-9 1.51031 0 +829e-9 1.51029 0 +830e-9 1.51027 0 +831e-9 1.51025 0 +832e-9 1.51023 0 +833e-9 1.51021 0 +834e-9 1.51018 0 +835e-9 1.51016 0 +836e-9 1.51014 0 +837e-9 1.51012 0 +838e-9 1.5101 0 +839e-9 1.51008 0 +840e-9 1.51006 0 +841e-9 1.51004 0 +842e-9 1.51001 0 +843e-9 1.50999 0 +844e-9 1.50997 0 +845e-9 1.50995 0 +846e-9 1.50993 0 +847e-9 1.50991 0 +848e-9 1.50989 0 +849e-9 1.50987 0 +850e-9 1.50984 0 +851e-9 1.50982 0 +852e-9 1.5098 0 +853e-9 1.50979 0 +854e-9 1.50977 0 +855e-9 1.50976 0 +856e-9 1.50974 0 +857e-9 1.50972 0 +858e-9 1.50971 0 +859e-9 1.50969 0 +860e-9 1.50968 0 +861e-9 1.50966 0 +862e-9 1.50965 0 +863e-9 1.50963 0 +864e-9 1.50962 0 +865e-9 1.5096 0 +866e-9 1.50959 0 +867e-9 1.50957 0 +868e-9 1.50956 0 +869e-9 1.50954 0 +870e-9 1.50952 0 +871e-9 1.50951 0 +872e-9 1.50949 0 +873e-9 1.50948 0 +874e-9 1.50946 0 +875e-9 1.50945 0 +876e-9 1.50943 0 +877e-9 1.50942 0 +878e-9 1.5094 0 +879e-9 1.50939 0 +880e-9 1.50937 0 +881e-9 1.50936 0 +882e-9 1.50934 0 +883e-9 1.50932 0 +884e-9 1.50931 0 +885e-9 1.50929 0 +886e-9 1.50928 0 +887e-9 1.50926 0 +888e-9 1.50925 0 +889e-9 1.50923 0 +890e-9 1.50922 0 +891e-9 1.5092 0 +892e-9 1.50919 0 +893e-9 1.50917 0 +894e-9 1.50916 0 +895e-9 1.50914 0 +896e-9 1.50912 0 +897e-9 1.50911 0 +898e-9 1.50909 0 +899e-9 1.50908 0 +900e-9 1.50906 0 diff --git a/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_peroTripleCatMartin.txt b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_peroTripleCatMartin.txt new file mode 100644 index 0000000..dd81b7c --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/nk_peroTripleCatMartin.txt @@ -0,0 +1,552 @@ +lambda n k +300e-9 1.58878 0.87048 +301e-9 1.58909 0.87575 +302e-9 1.58575 0.88511 +303e-9 1.58309 0.89428 +304e-9 1.58111 0.90261 +305e-9 1.58134 0.90806 +306e-9 1.58224 0.91345 +307e-9 1.58403 0.91986 +308e-9 1.58727 0.92515 +309e-9 1.58785 0.93202 +310e-9 1.58674 0.94222 +311e-9 1.59048 0.94659 +312e-9 1.59818 0.948 +313e-9 1.60556 0.94895 +314e-9 1.60792 0.95726 +315e-9 1.60695 0.96838 +316e-9 1.60625 0.97991 +317e-9 1.61477 0.9831 +318e-9 1.62501 0.98438 +319e-9 1.63105 0.98951 +320e-9 1.62862 1.00388 +321e-9 1.62763 1.01916 +322e-9 1.63097 1.03039 +323e-9 1.63881 1.03473 +324e-9 1.64602 1.03986 +325e-9 1.65061 1.05068 +326e-9 1.65441 1.06151 +327e-9 1.66113 1.06903 +328e-9 1.66751 1.07663 +329e-9 1.67439 1.08545 +330e-9 1.68216 1.09305 +331e-9 1.68749 1.10112 +332e-9 1.70075 1.10217 +333e-9 1.71728 1.09954 +334e-9 1.72329 1.10782 +335e-9 1.72577 1.11998 +336e-9 1.73282 1.12854 +337e-9 1.74596 1.12942 +338e-9 1.76379 1.12469 +339e-9 1.78179 1.1188 +340e-9 1.7928 1.12276 +341e-9 1.79343 1.13696 +342e-9 1.79617 1.14927 +343e-9 1.80584 1.15385 +344e-9 1.81939 1.15268 +345e-9 1.84336 1.14125 +346e-9 1.85818 1.13897 +347e-9 1.86298 1.14699 +348e-9 1.8585 1.16942 +349e-9 1.86812 1.17323 +350e-9 1.88153 1.17266 +351e-9 1.89287 1.17242 +352e-9 1.91225 1.16472 +353e-9 1.92306 1.16584 +354e-9 1.92771 1.17546 +355e-9 1.93282 1.18264 +356e-9 1.94472 1.18184 +357e-9 1.95172 1.18487 +358e-9 1.96046 1.18816 +359e-9 1.97283 1.18581 +360e-9 1.98683 1.1806 +361e-9 1.99602 1.18519 +362e-9 2.00498 1.18663 +363e-9 2.01995 1.17862 +364e-9 2.0346 1.17421 +365e-9 2.04314 1.17332 +366e-9 2.04785 1.1789 +367e-9 2.05821 1.17712 +368e-9 2.06779 1.17655 +369e-9 2.07841 1.17076 +370e-9 2.09209 1.16587 +371e-9 2.11255 1.14803 +372e-9 2.12715 1.14092 +373e-9 2.1291 1.14491 +374e-9 2.13242 1.14896 +375e-9 2.13679 1.15265 +376e-9 2.14724 1.14831 +377e-9 2.16393 1.13608 +378e-9 2.17804 1.11902 +379e-9 2.19816 1.09986 +380e-9 2.20869 1.08884 +381e-9 2.21062 1.09334 +382e-9 2.21216 1.09973 +383e-9 2.21425 1.10144 +384e-9 2.2209 1.0967 +385e-9 2.23234 1.08621 +386e-9 2.24379 1.07868 +387e-9 2.25961 1.05456 +388e-9 2.27024 1.04229 +389e-9 2.27543 1.03803 +390e-9 2.27742 1.04108 +391e-9 2.27639 1.04506 +392e-9 2.27673 1.04795 +393e-9 2.28507 1.03721 +394e-9 2.2914 1.02499 +395e-9 2.30118 1.01172 +396e-9 2.30854 0.99717 +397e-9 2.31683 0.9832 +398e-9 2.32051 0.97947 +399e-9 2.31895 0.98074 +400e-9 2.31913 0.97833 +401e-9 2.3202 0.97529 +402e-9 2.32253 0.96862 +403e-9 2.32763 0.95779 +404e-9 2.32937 0.94934 +405e-9 2.33198 0.94146 +406e-9 2.33635 0.93176 +407e-9 2.33761 0.92574 +408e-9 2.33838 0.92091 +409e-9 2.33713 0.91872 +410e-9 2.33685 0.9144 +411e-9 2.33832 0.90783 +412e-9 2.33953 0.90299 +413e-9 2.3401 0.89767 +414e-9 2.34046 0.8927 +415e-9 2.34026 0.88686 +416e-9 2.34044 0.88081 +417e-9 2.34021 0.87674 +418e-9 2.3402 0.87343 +419e-9 2.34009 0.87023 +420e-9 2.33914 0.86684 +421e-9 2.33799 0.86315 +422e-9 2.33771 0.85998 +423e-9 2.33745 0.85725 +424e-9 2.33724 0.85393 +425e-9 2.33696 0.85115 +426e-9 2.33653 0.84833 +427e-9 2.33637 0.84566 +428e-9 2.33641 0.84278 +429e-9 2.33645 0.84068 +430e-9 2.33646 0.83903 +431e-9 2.33685 0.83767 +432e-9 2.33664 0.83578 +433e-9 2.337 0.83416 +434e-9 2.33735 0.83261 +435e-9 2.33706 0.83108 +436e-9 2.33683 0.82979 +437e-9 2.33682 0.82848 +438e-9 2.33686 0.82726 +439e-9 2.33664 0.82589 +440e-9 2.3367 0.82524 +441e-9 2.337 0.82513 +442e-9 2.33746 0.82512 +443e-9 2.33797 0.8246 +444e-9 2.33909 0.82447 +445e-9 2.34024 0.82442 +446e-9 2.34122 0.82487 +447e-9 2.34268 0.82513 +448e-9 2.34437 0.82524 +449e-9 2.34611 0.82513 +450e-9 2.34815 0.82495 +451e-9 2.35056 0.82513 +452e-9 2.35314 0.82526 +453e-9 2.35562 0.82514 +454e-9 2.35829 0.82497 +455e-9 2.36107 0.82485 +456e-9 2.36421 0.82488 +457e-9 2.36736 0.8251 +458e-9 2.37051 0.82515 +459e-9 2.3736 0.82512 +460e-9 2.37715 0.82466 +461e-9 2.38069 0.82446 +462e-9 2.38395 0.82493 +463e-9 2.38764 0.82485 +464e-9 2.39125 0.82431 +465e-9 2.39519 0.82345 +466e-9 2.39935 0.82248 +467e-9 2.40383 0.82177 +468e-9 2.40824 0.82074 +469e-9 2.41254 0.81953 +470e-9 2.41685 0.81813 +471e-9 2.42095 0.81654 +472e-9 2.42514 0.81526 +473e-9 2.42919 0.81372 +474e-9 2.43339 0.81166 +475e-9 2.43782 0.80912 +476e-9 2.44273 0.8066 +477e-9 2.44763 0.8042 +478e-9 2.4525 0.80182 +479e-9 2.45733 0.79933 +480e-9 2.46195 0.79675 +481e-9 2.46653 0.79352 +482e-9 2.47082 0.79053 +483e-9 2.47523 0.7882 +484e-9 2.47954 0.78496 +485e-9 2.4835 0.78184 +486e-9 2.48773 0.77842 +487e-9 2.49234 0.77501 +488e-9 2.49688 0.77145 +489e-9 2.50146 0.76785 +490e-9 2.50585 0.76437 +491e-9 2.51019 0.7606 +492e-9 2.51484 0.75624 +493e-9 2.51942 0.75235 +494e-9 2.52392 0.74863 +495e-9 2.52853 0.74442 +496e-9 2.53306 0.73985 +497e-9 2.53772 0.73506 +498e-9 2.54235 0.73004 +499e-9 2.54664 0.72499 +500e-9 2.551 0.72003 +501e-9 2.55474 0.71457 +502e-9 2.55818 0.70882 +503e-9 2.5615 0.70256 +504e-9 2.56449 0.69646 +505e-9 2.56723 0.69014 +506e-9 2.56987 0.68393 +507e-9 2.5726 0.67714 +508e-9 2.57481 0.67047 +509e-9 2.5766 0.66402 +510e-9 2.57822 0.65772 +511e-9 2.57972 0.65194 +512e-9 2.58078 0.64548 +513e-9 2.58154 0.63934 +514e-9 2.58208 0.63362 +515e-9 2.58269 0.62796 +516e-9 2.58309 0.62237 +517e-9 2.58362 0.6168 +518e-9 2.58432 0.61086 +519e-9 2.58468 0.60549 +520e-9 2.58483 0.60035 +521e-9 2.58524 0.59506 +522e-9 2.58537 0.59008 +523e-9 2.58543 0.58478 +524e-9 2.58545 0.57987 +525e-9 2.58536 0.57511 +526e-9 2.58526 0.56994 +527e-9 2.58502 0.5649 +528e-9 2.58497 0.55989 +529e-9 2.58485 0.5549 +530e-9 2.58455 0.55009 +531e-9 2.58401 0.5452 +532e-9 2.58341 0.54041 +533e-9 2.58247 0.53617 +534e-9 2.58148 0.53194 +535e-9 2.58061 0.52797 +536e-9 2.57946 0.52347 +537e-9 2.57846 0.51896 +538e-9 2.57757 0.51472 +539e-9 2.57656 0.51049 +540e-9 2.57528 0.50624 +541e-9 2.57396 0.50195 +542e-9 2.57234 0.49794 +543e-9 2.57058 0.49432 +544e-9 2.56898 0.4909 +545e-9 2.56725 0.48743 +546e-9 2.56561 0.48413 +547e-9 2.56368 0.4808 +548e-9 2.56208 0.47789 +549e-9 2.56047 0.47476 +550e-9 2.55853 0.47171 +551e-9 2.55659 0.46892 +552e-9 2.55483 0.4659 +553e-9 2.55283 0.46311 +554e-9 2.55099 0.46061 +555e-9 2.54915 0.45843 +556e-9 2.54743 0.45631 +557e-9 2.54552 0.45427 +558e-9 2.54348 0.45238 +559e-9 2.54163 0.4511 +560e-9 2.53987 0.44941 +561e-9 2.53807 0.4482 +562e-9 2.53648 0.44689 +563e-9 2.53518 0.4456 +564e-9 2.53396 0.44443 +565e-9 2.53292 0.44311 +566e-9 2.53193 0.44158 +567e-9 2.53103 0.44034 +568e-9 2.53012 0.439 +569e-9 2.52937 0.43802 +570e-9 2.52868 0.43716 +571e-9 2.52822 0.43638 +572e-9 2.52766 0.43499 +573e-9 2.52742 0.43395 +574e-9 2.52747 0.4331 +575e-9 2.52751 0.43222 +576e-9 2.52757 0.43057 +577e-9 2.52758 0.42905 +578e-9 2.5276 0.42794 +579e-9 2.52787 0.42657 +580e-9 2.52803 0.42513 +581e-9 2.5282 0.42363 +582e-9 2.52855 0.42213 +583e-9 2.52888 0.42077 +584e-9 2.52923 0.41903 +585e-9 2.52987 0.41758 +586e-9 2.53046 0.41586 +587e-9 2.53131 0.4139 +588e-9 2.53202 0.41191 +589e-9 2.53276 0.4098 +590e-9 2.53355 0.40739 +591e-9 2.53438 0.40534 +592e-9 2.5352 0.4035 +593e-9 2.53581 0.40131 +594e-9 2.53636 0.39928 +595e-9 2.53681 0.39679 +596e-9 2.53743 0.39409 +597e-9 2.53797 0.39151 +598e-9 2.53837 0.38866 +599e-9 2.53871 0.38623 +600e-9 2.53902 0.38338 +601e-9 2.53946 0.38078 +602e-9 2.53991 0.37829 +603e-9 2.54017 0.37512 +604e-9 2.54032 0.37235 +605e-9 2.54042 0.36976 +606e-9 2.54056 0.36731 +607e-9 2.5406 0.36425 +608e-9 2.54057 0.36086 +609e-9 2.54047 0.35847 +610e-9 2.54016 0.35559 +611e-9 2.53976 0.35302 +612e-9 2.53941 0.35018 +613e-9 2.53894 0.3474 +614e-9 2.53853 0.3449 +615e-9 2.53805 0.34247 +616e-9 2.53759 0.33987 +617e-9 2.53723 0.33742 +618e-9 2.53699 0.33523 +619e-9 2.53658 0.33267 +620e-9 2.53607 0.33059 +621e-9 2.53543 0.32829 +622e-9 2.53465 0.32554 +623e-9 2.5339 0.32318 +624e-9 2.53298 0.32079 +625e-9 2.53215 0.31861 +626e-9 2.53113 0.31634 +627e-9 2.53014 0.31425 +628e-9 2.52926 0.31253 +629e-9 2.5284 0.31027 +630e-9 2.5273 0.30794 +631e-9 2.52637 0.30625 +632e-9 2.5253 0.3036 +633e-9 2.52431 0.3023 +634e-9 2.5234 0.30095 +635e-9 2.52234 0.29914 +636e-9 2.5212 0.29754 +637e-9 2.52006 0.29603 +638e-9 2.51887 0.2942 +639e-9 2.51783 0.29321 +640e-9 2.51683 0.29175 +641e-9 2.51591 0.29078 +642e-9 2.51486 0.28886 +643e-9 2.51392 0.28749 +644e-9 2.51295 0.28595 +645e-9 2.51185 0.28429 +646e-9 2.51081 0.28327 +647e-9 2.50987 0.28244 +648e-9 2.50883 0.28193 +649e-9 2.50755 0.28053 +650e-9 2.50644 0.27923 +651e-9 2.50541 0.27862 +652e-9 2.50394 0.27709 +653e-9 2.50237 0.27592 +654e-9 2.5008 0.2752 +655e-9 2.49937 0.27465 +656e-9 2.49803 0.27431 +657e-9 2.49716 0.27385 +658e-9 2.49621 0.27303 +659e-9 2.49503 0.27107 +660e-9 2.49428 0.2697 +661e-9 2.49368 0.26934 +662e-9 2.49268 0.26847 +663e-9 2.49128 0.26745 +664e-9 2.48946 0.26714 +665e-9 2.48798 0.26634 +666e-9 2.48677 0.2658 +667e-9 2.48536 0.26481 +668e-9 2.48441 0.26469 +669e-9 2.48296 0.26556 +670e-9 2.48155 0.26514 +671e-9 2.48044 0.26408 +672e-9 2.47946 0.26285 +673e-9 2.47832 0.26241 +674e-9 2.47666 0.26167 +675e-9 2.47487 0.26096 +676e-9 2.47387 0.26053 +677e-9 2.47251 0.26 +678e-9 2.47025 0.25992 +679e-9 2.46865 0.25935 +680e-9 2.46606 0.25868 +681e-9 2.46355 0.25823 +682e-9 2.46244 0.25786 +683e-9 2.4623 0.25751 +684e-9 2.46265 0.25683 +685e-9 2.46272 0.25538 +686e-9 2.46368 0.25415 +687e-9 2.46438 0.25339 +688e-9 2.464 0.25286 +689e-9 2.46259 0.25286 +690e-9 2.46245 0.25238 +691e-9 2.46284 0.2522 +692e-9 2.46392 0.25079 +693e-9 2.46496 0.24954 +694e-9 2.46554 0.24966 +695e-9 2.46571 0.24954 +696e-9 2.46554 0.24876 +697e-9 2.46496 0.24742 +698e-9 2.46448 0.24758 +699e-9 2.46383 0.24766 +700e-9 2.46293 0.24666 +701e-9 2.46215 0.24619 +702e-9 2.46138 0.24582 +703e-9 2.46068 0.24572 +704e-9 2.46008 0.24534 +705e-9 2.45912 0.24431 +706e-9 2.45836 0.24365 +707e-9 2.45795 0.24355 +708e-9 2.45769 0.24402 +709e-9 2.45678 0.24293 +710e-9 2.45598 0.24262 +711e-9 2.45523 0.24266 +712e-9 2.45461 0.24157 +713e-9 2.4542 0.24133 +714e-9 2.45383 0.24104 +715e-9 2.45334 0.23981 +716e-9 2.45263 0.23945 +717e-9 2.4525 0.23932 +718e-9 2.45265 0.23901 +719e-9 2.45275 0.23928 +720e-9 2.45334 0.23839 +721e-9 2.45426 0.23701 +722e-9 2.45535 0.23671 +723e-9 2.45678 0.23672 +724e-9 2.45826 0.23631 +725e-9 2.45981 0.23483 +726e-9 2.46137 0.23269 +727e-9 2.46287 0.23187 +728e-9 2.46451 0.23145 +729e-9 2.46623 0.23088 +730e-9 2.46818 0.22916 +731e-9 2.471 0.22721 +732e-9 2.47409 0.22477 +733e-9 2.47744 0.22228 +734e-9 2.48106 0.22056 +735e-9 2.48514 0.21763 +736e-9 2.4896 0.21329 +737e-9 2.49402 0.20889 +738e-9 2.49841 0.20421 +739e-9 2.50264 0.20006 +740e-9 2.50696 0.19515 +741e-9 2.51118 0.18993 +742e-9 2.51532 0.18491 +743e-9 2.51899 0.17834 +744e-9 2.52207 0.17173 +745e-9 2.52464 0.16487 +746e-9 2.52654 0.15756 +747e-9 2.52774 0.14966 +748e-9 2.52814 0.14149 +749e-9 2.52775 0.13302 +750e-9 2.52647 0.12546 +751e-9 2.52452 0.11794 +752e-9 2.52198 0.11041 +753e-9 2.51863 0.10292 +754e-9 2.51458 0.09551 +755e-9 2.51001 0.08823 +756e-9 2.5052 0.08114 +757e-9 2.50009 0.07427 +758e-9 2.4946 0.06767 +759e-9 2.48874 0.06137 +760e-9 2.48271 0.05544 +761e-9 2.4765 0.04987 +762e-9 2.47023 0.04465 +763e-9 2.46387 0.03986 +764e-9 2.45713 0.03547 +765e-9 2.45011 0.03144 +766e-9 2.44315 0.02778 +767e-9 2.43643 0.02451 +768e-9 2.42993 0.02157 +769e-9 2.42354 0.01893 +770e-9 2.41709 0.01659 +771e-9 2.41086 0.01452 +772e-9 2.40475 0.01269 +773e-9 2.39887 0.01106 +774e-9 2.39297 0.00966 +775e-9 2.38702 0.00842 +776e-9 2.38124 0.00732 +777e-9 2.37555 0.00637 +778e-9 2.36996 0.00555 +779e-9 2.3645 0.00482 +780e-9 2.35924 0.00419 +781e-9 2.35418 0.00364 +782e-9 2.3491 0.00317 +783e-9 2.34439 0.00275 +784e-9 2.33963 0.00239 +785e-9 2.3348 0.00208 +786e-9 2.3301 0.00181 +787e-9 2.32557 0.00157 +788e-9 2.32089 0.00137 +789e-9 2.31687 0.00119 +790e-9 2.3127 0.00104 +791e-9 2.30877 0.000900504 +792e-9 2.30443 0.000784796 +793e-9 2.30001 0.000683508 +794e-9 2.29605 0.00059488 +795e-9 2.29238 0.000518266 +796e-9 2.28828 0.00045197 +797e-9 2.28449 0.000393905 +798e-9 2.28059 0.000343078 +799e-9 2.27658 0.000299596 +800e-9 2.27236 0.000261472 +801e-9 2.26852 0.000228058 +802e-9 2.26536 0.000199107 +803e-9 2.2615 0.000174014 +804e-9 2.25785 0.000151996 +805e-9 2.25506 0.00013268 +806e-9 2.25086 0.000116118 +807e-9 2.24703 0.00010157 +808e-9 2.24291 8.87934e-05 +809e-9 2.23861 7.76947e-05 +810e-9 2.23469 6.80566e-05 +811e-9 2.23073 5.95813e-05 +812e-9 2.22653 5.21306e-05 +813e-9 2.22293 4.57241e-05 +814e-9 2.21863 4.00866e-05 +815e-9 2.21402 3.51246e-05 +816e-9 2.20973 3.08031e-05 +817e-9 2.20522 2.70427e-05 +818e-9 2.20087 2.3729e-05 +819e-9 2.19638 2.08096e-05 +820e-9 2.19193 1.82921e-05 +821e-9 2.18736 1.60728e-05 +822e-9 2.18305 1.41153e-05 +823e-9 2.17874 1.2406e-05 +824e-9 2.17424 1.09156e-05 +825e-9 2.16991 9.60109e-06 +826e-9 2.16576 8.44202e-06 +827e-9 2.1617 7.43453e-06 +828e-9 2.15729 6.54819e-06 +829e-9 2.15302 5.76336e-06 +830e-9 2.14847 5.07782e-06 +831e-9 2.14412 4.47282e-06 +832e-9 2.13988 3.94113e-06 +833e-9 2.13553 3.47618e-06 +834e-9 2.13107 3.06244e-06 +835e-9 2.12649 2.70539e-06 +836e-9 2.12201 2.38609e-06 +837e-9 2.11778 2.11138e-06 +838e-9 2.11332 1.86142e-06 +839e-9 2.10871 1.6432e-06 +840e-9 2.10418 1.44695e-06 +841e-9 2.1002 1.28197e-06 +842e-9 2.09584 1.13286e-06 +843e-9 2.09166 1.00324e-06 +844e-9 2.08762 8.87825e-07 +845e-9 2.08374 7.85688e-07 +846e-9 2.0801 6.95462e-07 +847e-9 2.0765 6.15654e-07 +848e-9 2.07308 5.45447e-07 +849e-9 2.06988 4.83432e-07 +850e-9 2.06692 4.27766e-07 diff --git a/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/simulation_setup_pinsam_FTO.txt b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/simulation_setup_pinsam_FTO.txt new file mode 100644 index 0000000..0ffa61b --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialSAM_ETL/simulation_setup_pinsam_FTO.txt @@ -0,0 +1,86 @@ +** SimSS Simulation Setup: +** Don't change the order of the parameters, comments can be added anywhere, +** but only after an '*'. Use '**' if you want your comment to be left-justified. +** version: 5.30 +** STACK 3 (p-i-n / inverted): glass / FTO / SAM / perovskite / passivation / C60 / BCP / Ag +** SAM (e.g. MeO-2PACz) is modeled as a left-contact work-function/injection-barrier +** tuning (W_L, offset_W_L.E_v) rather than an explicit bulk layer -- see Perovskite.txt. + +**General*************************************************************************** +T = 295 * K, absolute temperature + +**Layers**************************************************************************** +l1 = Perovskite.txt * parameter file for layer 1, mandatory (absorber, SAM/FTO/anode side) +l2 = C60.txt * parameter file for layer 2 (ETL) +l3 = BCP.txt * parameter file for layer 3 (hole-blocking buffer, Ag/cathode side) + +**Contacts************************************************************************** +leftElec = 1 * left electrode is the cathode (-1) or the anode (1) -- p-i-n: SAM/FTO side is anode +W_L = 5.3 * eV, work function left electrode -- SAM-tuned effective work function (fit via offset_W_L.E_v) +W_R = 4.2 * eV, work function right electrode -- Ag through BCP buffer +S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode +S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode +S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode +S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode + * nb: use negative values if Sn/pR/L should be infinite +R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt -- fit per device +R_series = 0 * Ohms m2, series resistance. -- fit per device + +**Optics**************************************************************************** +G_frac = 1 * fraction of Gmax used in solar cell +genProfile = none * electrical-only JV fit (as in JV_realPerovskite.ipynb): set l1.G_ehp from measured Jsc instead of full optics +L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used +L_BE = 1E-7 * m, thickness of back electrode, must be >0 +nkSubstrate = nk_glass.txt * name of file with n,k values of substrate +nkTCO = nk_ITO.txt * PLACEHOLDER for FTO (no measured FTO nk shipped) -- unused while genProfile=none; replace if genProfile=calc +nkBE = nk_Ag.txt * name of file with n,k values of back electrode +spectrum = ../Data/AM15G.txt * name of file that contains the spectrum +lambda_min = 3.5E-7 * m, lower bound wavelength +lambda_max = 8E-7 * m, upper bound wavelength + +**Numerical Parameters************************************************************** +NP = 250 * integer, number of grid points, must be at least 5 per layer. +tolPois = 0.00001 * V, abs. tolerance of iterative Poisson solver +maxDelV = 10 * maximum change (in Vt) of the potential per loop +maxItPois = 1000 * max. number it. Poisson loop +maxItSS = 1000 * max. number it. main loop +currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression +tolCurr = 1E-3 * relative tolerance on current density +tolDens = 1E-3 * relative tolerance of density solver +couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations +minAcc = 0.05 * >0, min. acceleration parameter +maxAcc = 0.95 * <2, max. acceleration parameter +ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities +convVar = 4 * integer 1-4, selects which variable to monitor for convergence + * 1: densities, 2: current, 3: densities OR current, 4: densities AND current +failureMode = 2 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip +grad = 4 * determines shape of exp. grid, increase grad for smaller h[1] + +**Voltage range of simulation******************************************************* +Vdist = 1 * 1 for uniform (specified by Vstep), 2 for logarithmic (specified by Vacc and NJV) +preCond = 0 * pre-conditioning, yes(1)/no(0) +Vpre = 0 * V, pre-conditioned voltage +fixIons = 0 * fix ions at first applied voltage? yes(1) or no (0). +Vscan = 1 * integer, 1 for forward sweep direction, -1 for reverse sweep +Vmin = -0.05 * V -- adjust to match your measured JV sweep range +Vmax = 1.3 * V +Vstep = 0.01 * V +Vacc = 0 * V, point of accumulation of row of V's, note: Vacc should be + * slightly larger than Vmax or slightly lower than Vmin +NJV = 100 * number of JV points in logarithmic distribution +untilVoc = 0 * if 1 then SimSS will stop at Voc + +**User interface******************************************************************** +timeout = 300 * s, max run time, use negative value for unlimited run time. +pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) +autoTidy = 1 * if 1, then the program will always tidy up this file +useExpData = 0 * if 1, SimSS will try to read JV_Exp and use it +expJV = expJV.csv * name of file with experimental JV characteristics +fitMode = lin * lin or log: use J or log(J) in calc. of fit error +fitThreshold = 0.8 * threshold of fraction converged points in calc. fit error +JVFile = JV.dat * name of the file with simulated JV characteristics +varFile = none * name of the file with (x,V,n,p,Jn,etc) or none for no file. +limitDigits = 1 * if 1, then number of digits in output is limited +outputRatio = 0 * Output to varFile every outputRatio voltages +scParsFile = scPars.dat * name of file with solar cell parameters +logFile = log.txt * name of log file diff --git a/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/Perovskite.txt b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/Perovskite.txt new file mode 100644 index 0000000..b7f3ef1 --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/Perovskite.txt @@ -0,0 +1,65 @@ +** SIMsalabim Layer parameters: +** Don't change the order of the parameters, comments can be added anywhere, +** but only after an '*'. Use '**' if you want your comment to be left-justified. +** version: 5.30 +** LAYER: perovskite absorber (l2). Generic triple-cation-like starting values, +** adapted from this repo's fakePerovskite.txt / MAPI_K.txt examples. Calibrate +** N_t_bulk, N_t_int (both interfaces), N_anion/N_cation via Stage 1 fitting. + +**General*************************************************************************** +L = 550E-9 * m, device length/thickness -- override per condition +eps_r = 35 * relative dielectric constant +E_c = 3.9 * eV, conduction band edge +E_v = 5.53 * eV, valence band edge +N_c = 2.2E24 * m^-3, DOS of conduction and valence bands +N_D = 0 * m^-3, ionised n-doping +N_A = 0 * m^-3, ionised p-doping + +**Mobilities************************************************************************ +mu_n = 8E-5 * m^2/Vs, zero field mobility +mu_p = 8E-5 * m^2/Vs, zero field mobility +mobnDep = 0 * 0 : const. mob, 1 : field-dependent +mobpDep = 0 * 0 : const. mob, 1 : field-dependent +gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form +gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form + +**Interface-layer-to-right********************************************************** +** perovskite / Spiro-OMeTAD (HTL) interface -- lower N_t_int here to represent a +** passivation treatment (e.g. from ~4E12 unpassivated down to ~3E11-1E12 passivated) +nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right +nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right +N_t_int = 4E12 * m^-2, trap density at interface with layer to the right -- process/passivation-sensitive +E_t_int = 4.7 * eV, energy level of traps at interface +intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int +intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor +C_n_int = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) +C_p_int = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) + +**Ions****************************************************************************** +N_anion = 3.5E21 * m^-3, concentration of negative ions +N_cation = 3.5E21 * m^-3, concentration of positive ions +mu_anion = 5.7E-12 * m^2/Vs, mobility of negative ions (take 0 if they don't move) +mu_cation = 5.7E-12 * m^2/Vs, mobility of positive ions (take 0 if they don't move) +ionsMayEnter = 1 * may ions enter from other layers? yes(1) or no(<>1) + +**Generation and recombination****************************************************** +G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer -- set/calibrated from measured Jsc if genProfile=none +layerGen = 1 * does this layer generate electron/hole pairs? yes(1) or no (0) +nkLayer = nk_peroTripleCatMartin.txt * name of file with n,k values of this layer +fieldDepG = 0 * field dependent generation yes (1) or no (0) +P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers +a = 1E-9 * m, charge separation distance, Braun model used +thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian + * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian +k_f = 1E6 * 1/s, decay rate +k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate +preLangevin = 1 * Langevin recombination prefactor +useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) + +**Bulk trapping************************************************************************** +N_t_bulk = 3E20 * m^-3, trap density (in bulk) +C_n_bulk = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) +C_p_bulk = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) +E_t_bulk = 4.7 * eV, energy level of all traps +bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk +bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor diff --git a/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/SnO2.txt b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/SnO2.txt new file mode 100644 index 0000000..a8c5cb0 --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/SnO2.txt @@ -0,0 +1,66 @@ +** SIMsalabim Layer parameters: +** Don't change the order of the parameters, comments can be added anywhere, +** but only after an '*'. Use '**' if you want your comment to be left-justified. +** version: 5.30 +** LAYER: sputtered SnO2 (electron transport layer, n-i-p stack, l1 / TCO side) +** Starting values are typical literature values for sputtered/solution SnO2 ETLs in +** n-i-p perovskite solar cells (see e.g. Anaya et al., Correa-Baena et al., Le Corre +** et al. parameter tables). They are NOT fitted to your films -- treat them as priors +** and calibrate mu_n, N_D, N_t_bulk, N_t_int via Stage 1 (DDfits) fitting against your +** own combinatorial-sputtering J-V data. + +**General*************************************************************************** +L = 30E-9 * m, device length/thickness -- override per condition from sputter run (deposition time/rate) +eps_r = 9 * relative dielectric constant +E_c = 4.0 * eV, conduction band edge (electron affinity) +E_v = 7.6 * eV, valence band edge (E_c + ~3.6 eV optical gap) +N_c = 2.2E24 * m^-3, DOS of conduction and valence bands +N_D = 1E23 * m^-3, ionised n-doping (unintentional n-type doping typical of sputtered SnO2) +N_A = 0 * m^-3, ionised p-doping + +**Mobilities************************************************************************ +mu_n = 1E-5 * m^2/Vs, zero field mobility -- KEY process-sensitive parameter (RF power/pressure/O2:Ar) +mu_p = 1E-7 * m^2/Vs, zero field mobility (minority carrier, low) +mobnDep = 0 * 0 : const. mob, 1 : field-dependent +mobpDep = 0 * 0 : const. mob, 1 : field-dependent +gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form +gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form + +**Interface-layer-to-right********************************************************** +nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right +nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right +N_t_int = 5E12 * m^-2, trap density at SnO2/perovskite interface -- process-sensitive +E_t_int = 4.9 * eV, energy level of traps at interface +intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int +intTrapType = 1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor +C_n_int = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) +C_p_int = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) + +**Ions****************************************************************************** +N_anion = 0E21 * m^-3, concentration of negative ions +N_cation = 0E21 * m^-3, concentration of positive ions +mu_anion = 1E-11 * m^2/Vs, mobility of negative ions (take 0 if they don't move) +mu_cation = 1E-11 * m^2/Vs, mobility of positive ions (take 0 if they don't move) +ionsMayEnter = 0 * may ions enter from other layers? yes(1) or no(<>1) -- oxide ETL, keep ions out + +**Generation and recombination****************************************************** +G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer +layerGen = 0 * does this layer generate electron/hole pairs? yes(1) or no (0) +nkLayer = nk_ITO.txt * PLACEHOLDER n,k file (no measured SnO2 nk shipped) -- unused while genProfile=none; replace if you switch to genProfile=calc +fieldDepG = 0 * field dependent generation yes (1) or no (0) +P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers +a = 1E-9 * m, charge separation distance, Braun model used +thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian + * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian +k_f = 1E6 * 1/s, decay rate +k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate +preLangevin = 1 * Langevin recombination prefactor +useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) + +**Bulk trapping************************************************************************** +N_t_bulk = 1E20 * m^-3, trap density (in bulk) -- process-sensitive (O2:Ar ratio -> oxygen vacancies) +C_n_bulk = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) +C_p_bulk = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) +E_t_bulk = 5.8 * eV, energy level of all traps (mid-gap) +bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk +bulkTrapType = 1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor diff --git a/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/SpiroOMeTAD.txt b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/SpiroOMeTAD.txt new file mode 100644 index 0000000..373595a --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/SpiroOMeTAD.txt @@ -0,0 +1,63 @@ +** SIMsalabim Layer parameters: +** Don't change the order of the parameters, comments can be added anywhere, +** but only after an '*'. Use '**' if you want your comment to be left-justified. +** version: 5.30 +** LAYER: Spiro-OMeTAD (hole transport layer, l3 / back-electrode side). +** Doped (Li-TFSI/tBP/Co-complex) HTL starting values from typical literature ranges. + +**General*************************************************************************** +L = 200E-9 * m, device length/thickness -- override per condition +eps_r = 3 * relative dielectric constant +E_c = 2.05 * eV, conduction band edge (LUMO) +E_v = 5.22 * eV, valence band edge (HOMO) +N_c = 1E26 * m^-3, DOS of conduction and valence bands +N_D = 0 * m^-3, ionised n-doping +N_A = 1E24 * m^-3, ionised p-doping (dopant-induced, e.g. Li-TFSI/Co-complex) + +**Mobilities************************************************************************ +mu_n = 2E-10 * m^2/Vs, zero field mobility (electron, minority carrier, very low) +mu_p = 2E-8 * m^2/Vs, zero field mobility (hole, doping/process-sensitive) +mobnDep = 0 * 0 : const. mob, 1 : field-dependent +mobpDep = 0 * 0 : const. mob, 1 : field-dependent +gamma_n = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form +gamma_p = 0 * (m/V)^0.5, field dependence of mob, Poole-Frenkel form + +**Interface-layer-to-right********************************************************** +** Spiro-OMeTAD / Au interface (ohmic-ish, not usually process-critical) +nu_int_n = 1E3 * m/s, interface transfer velocity, to layer to the right +nu_int_p = 1E3 * m/s, interface transfer velocity, to layer to the right +N_t_int = 0E12 * m^-2, trap density at interface with layer to the right +E_t_int = 4.7 * eV, energy level of traps at interface +intTrapFile = none * name of file with interface trap energy profile (or 'none'). If specified, overrides E_t_int +intTrapType = -1 * Trap type for the right interface: -1: acceptor, 0: neutral, 1: donor +C_n_int = 1E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) +C_p_int = 1E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) + +**Ions****************************************************************************** +N_anion = 0E21 * m^-3, concentration of negative ions +N_cation = 0E21 * m^-3, concentration of positive ions +mu_anion = 1E-11 * m^2/Vs, mobility of negative ions (take 0 if they don't move) +mu_cation = 1E-11 * m^2/Vs, mobility of positive ions (take 0 if they don't move) +ionsMayEnter = 0 * may ions enter from other layers? yes(1) or no(<>1) + +**Generation and recombination****************************************************** +G_ehp = 0 * m^-3 s^-1, generation rate of electron-hole pairs in this layer +layerGen = 0 * does this layer generate electron/hole pairs? yes(1) or no (0) +nkLayer = nk_SpiroOMeTAD.txt * name of file with n,k values of this layer +fieldDepG = 0 * field dependent generation yes (1) or no (0) +P0 = 0 * 0<=P0<1, fraction of quenched excitons that direcltly yield free carriers +a = 1E-9 * m, charge separation distance, Braun model used +thermLengDist = 2 * distribution of a, 1 for delta function, 2 for Gaussian + * 3 for exponential and 4 for r^2 exponential 5 for r^4 Gaussian +k_f = 1E6 * 1/s, decay rate +k_direct = 1E-17 * m3/s, direct (band-to-band, bimolecular) recombination rate +preLangevin = 1 * Langevin recombination prefactor +useLangevin = 0 * (1) use Langevin to calc. recombination or not (<>1, kdirect is used) + +**Bulk trapping************************************************************************** +N_t_bulk = 1E20 * m^-3, trap density (in bulk) +C_n_bulk = 2E-14 * m^3/s, capture coefficient for electrons (put to 0 to exclude capture from and emission to the conduction band) +C_p_bulk = 2E-14 * m^3/s, capture coefficient for holes (put to 0 to exclude capture from and emission to the valence band) +E_t_bulk = 4.6 * eV, energy level of all traps +bulkTrapFile = none * name of file with bulk trap energy profile (or 'none'). If specified, overrides E_t_bulk +bulkTrapType = -1 * Trap type of bulk traps: -1: acceptor, 0: neutral, 1: donor diff --git a/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_Au.txt b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_Au.txt new file mode 100644 index 0000000..418f048 --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_Au.txt @@ -0,0 +1,602 @@ +lambda n k +300e-9 1.80004 1.9193 +301e-9 1.80304 1.91897 +302e-9 1.80603 1.91864 +303e-9 1.80903 1.91831 +304e-9 1.81203 1.91798 +305e-9 1.81502 1.91765 +306e-9 1.81802 1.91732 +307e-9 1.82101 1.91699 +308e-9 1.82401 1.91666 +309e-9 1.827 1.91633 +310e-9 1.83 1.916 +311e-9 1.8306 1.91415 +312e-9 1.8312 1.91231 +313e-9 1.8318 1.91046 +314e-9 1.8324 1.90861 +315e-9 1.83301 1.90677 +316e-9 1.83361 1.90492 +317e-9 1.83421 1.90307 +318e-9 1.83481 1.90122 +319e-9 1.83541 1.89938 +320e-9 1.83601 1.89753 +321e-9 1.83372 1.89482 +322e-9 1.83143 1.89211 +323e-9 1.82914 1.88941 +324e-9 1.82685 1.8867 +325e-9 1.82456 1.88399 +326e-9 1.82227 1.88128 +327e-9 1.81998 1.87857 +328e-9 1.81769 1.87587 +329e-9 1.8154 1.87316 +330e-9 1.81311 1.87045 +331e-9 1.80992 1.86867 +332e-9 1.80673 1.86689 +333e-9 1.80354 1.8651 +334e-9 1.80035 1.86332 +335e-9 1.79716 1.86154 +336e-9 1.79396 1.85976 +337e-9 1.79077 1.85797 +338e-9 1.78758 1.85619 +339e-9 1.78439 1.85441 +340e-9 1.7812 1.85263 +341e-9 1.7782 1.85207 +342e-9 1.77519 1.85152 +343e-9 1.77219 1.85097 +344e-9 1.76918 1.85042 +345e-9 1.76618 1.84987 +346e-9 1.76318 1.84932 +347e-9 1.76017 1.84877 +348e-9 1.75717 1.84822 +349e-9 1.75416 1.84767 +350e-9 1.75116 1.84712 +351e-9 1.74872 1.84797 +352e-9 1.74628 1.84883 +353e-9 1.74383 1.84969 +354e-9 1.74139 1.85055 +355e-9 1.73895 1.85141 +356e-9 1.7365 1.85226 +357e-9 1.73406 1.85312 +358e-9 1.73162 1.85398 +359e-9 1.72917 1.85484 +360e-9 1.72673 1.8557 +361e-9 1.72468 1.85845 +362e-9 1.72263 1.8612 +363e-9 1.72059 1.86395 +364e-9 1.71854 1.8667 +365e-9 1.71649 1.86945 +366e-9 1.71444 1.8722 +367e-9 1.71239 1.87495 +368e-9 1.71035 1.8777 +369e-9 1.7083 1.88045 +370e-9 1.70625 1.8832 +371e-9 1.70442 1.88657 +372e-9 1.70258 1.88994 +373e-9 1.70075 1.89331 +374e-9 1.69892 1.89668 +375e-9 1.69709 1.90005 +376e-9 1.69526 1.90342 +377e-9 1.69342 1.90679 +378e-9 1.69159 1.91017 +379e-9 1.68976 1.91354 +380e-9 1.68793 1.91691 +381e-9 1.68621 1.91922 +382e-9 1.6845 1.92152 +383e-9 1.68278 1.92383 +384e-9 1.68107 1.92614 +385e-9 1.67935 1.92845 +386e-9 1.67764 1.93076 +387e-9 1.67593 1.93307 +388e-9 1.67421 1.93537 +389e-9 1.6725 1.93768 +390e-9 1.67078 1.93999 +391e-9 1.6695 1.94159 +392e-9 1.66823 1.94319 +393e-9 1.66695 1.94479 +394e-9 1.66567 1.94639 +395e-9 1.66439 1.948 +396e-9 1.66311 1.9496 +397e-9 1.66183 1.9512 +398e-9 1.66056 1.9528 +399e-9 1.65928 1.9544 +400e-9 1.658 1.956 +401e-9 1.65635 1.95615 +402e-9 1.65469 1.9563 +403e-9 1.65304 1.95645 +404e-9 1.65139 1.9566 +405e-9 1.64973 1.95674 +406e-9 1.64808 1.95689 +407e-9 1.64643 1.95704 +408e-9 1.64477 1.95719 +409e-9 1.64312 1.95734 +410e-9 1.64147 1.95749 +411e-9 1.63998 1.95669 +412e-9 1.63849 1.9559 +413e-9 1.637 1.9551 +414e-9 1.63552 1.9543 +415e-9 1.63403 1.95351 +416e-9 1.63254 1.95271 +417e-9 1.63106 1.95192 +418e-9 1.62957 1.95112 +419e-9 1.62808 1.95032 +420e-9 1.62659 1.94953 +421e-9 1.62466 1.94799 +422e-9 1.62273 1.94645 +423e-9 1.6208 1.94491 +424e-9 1.61887 1.94338 +425e-9 1.61694 1.94184 +426e-9 1.61501 1.9403 +427e-9 1.61308 1.93876 +428e-9 1.61115 1.93723 +429e-9 1.60922 1.93569 +430e-9 1.60729 1.93415 +431e-9 1.60376 1.9318 +432e-9 1.60023 1.92945 +433e-9 1.5967 1.92709 +434e-9 1.59317 1.92474 +435e-9 1.58965 1.92239 +436e-9 1.58612 1.92004 +437e-9 1.58259 1.91768 +438e-9 1.57906 1.91533 +439e-9 1.57553 1.91298 +440e-9 1.572 1.91063 +441e-9 1.56514 1.90741 +442e-9 1.55828 1.90419 +443e-9 1.55142 1.90097 +444e-9 1.54457 1.89775 +445e-9 1.53771 1.89453 +446e-9 1.53085 1.89131 +447e-9 1.52399 1.88809 +448e-9 1.51713 1.88487 +449e-9 1.51027 1.88165 +450e-9 1.50341 1.87844 +451e-9 1.49487 1.87495 +452e-9 1.48632 1.87147 +453e-9 1.47778 1.86799 +454e-9 1.46924 1.86451 +455e-9 1.4607 1.86103 +456e-9 1.45216 1.85754 +457e-9 1.44362 1.85406 +458e-9 1.43508 1.85058 +459e-9 1.42654 1.8471 +460e-9 1.418 1.84361 +461e-9 1.40775 1.84072 +462e-9 1.3975 1.83783 +463e-9 1.38725 1.83494 +464e-9 1.377 1.83206 +465e-9 1.36675 1.82917 +466e-9 1.3565 1.82628 +467e-9 1.34625 1.82339 +468e-9 1.336 1.8205 +469e-9 1.32575 1.81761 +470e-9 1.3155 1.81472 +471e-9 1.30293 1.81324 +472e-9 1.29037 1.81176 +473e-9 1.27781 1.81028 +474e-9 1.26525 1.8088 +475e-9 1.25268 1.80732 +476e-9 1.24012 1.80584 +477e-9 1.22756 1.80436 +478e-9 1.215 1.80288 +479e-9 1.20243 1.8014 +480e-9 1.18987 1.79993 +481e-9 1.17274 1.80203 +482e-9 1.15561 1.80413 +483e-9 1.13848 1.80623 +484e-9 1.12134 1.80834 +485e-9 1.10421 1.81044 +486e-9 1.08708 1.81254 +487e-9 1.06995 1.81464 +488e-9 1.05282 1.81675 +489e-9 1.03569 1.81885 +490e-9 1.01855 1.82095 +491e-9 1.00162 1.82807 +492e-9 0.98469 1.8352 +493e-9 0.96776 1.84232 +494e-9 0.95083 1.84944 +495e-9 0.9339 1.85656 +496e-9 0.91696 1.86369 +497e-9 0.90003 1.87081 +498e-9 0.8831 1.87793 +499e-9 0.86617 1.88506 +500e-9 0.84924 1.89218 +501e-9 0.83414 1.90567 +502e-9 0.81904 1.91916 +503e-9 0.80394 1.93265 +504e-9 0.78884 1.94614 +505e-9 0.77373 1.95963 +506e-9 0.75863 1.97312 +507e-9 0.74353 1.98661 +508e-9 0.72843 2.0001 +509e-9 0.71333 2.01359 +510e-9 0.69823 2.02708 +511e-9 0.68552 2.04297 +512e-9 0.67282 2.05885 +513e-9 0.66011 2.07473 +514e-9 0.6474 2.09061 +515e-9 0.63469 2.10649 +516e-9 0.62198 2.12237 +517e-9 0.60928 2.13825 +518e-9 0.59657 2.15413 +519e-9 0.58386 2.17002 +520e-9 0.57115 2.1859 +521e-9 0.56159 2.2048 +522e-9 0.55203 2.22371 +523e-9 0.54247 2.24262 +524e-9 0.53291 2.26152 +525e-9 0.52335 2.28043 +526e-9 0.51379 2.29933 +527e-9 0.50423 2.31824 +528e-9 0.49467 2.33715 +529e-9 0.48511 2.35605 +530e-9 0.47555 2.37496 +531e-9 0.46779 2.39278 +532e-9 0.46003 2.41059 +533e-9 0.45226 2.42841 +534e-9 0.4445 2.44623 +535e-9 0.43674 2.46405 +536e-9 0.42897 2.48187 +537e-9 0.42121 2.49969 +538e-9 0.41345 2.5175 +539e-9 0.40568 2.53532 +540e-9 0.39792 2.55314 +541e-9 0.3937 2.56739 +542e-9 0.38948 2.58165 +543e-9 0.38526 2.5959 +544e-9 0.38104 2.61015 +545e-9 0.37682 2.6244 +546e-9 0.3726 2.63866 +547e-9 0.36837 2.65291 +548e-9 0.36415 2.66716 +549e-9 0.35993 2.68142 +550e-9 0.35571 2.69567 +551e-9 0.35198 2.70932 +552e-9 0.34825 2.72298 +553e-9 0.34452 2.73663 +554e-9 0.34079 2.75028 +555e-9 0.33706 2.76394 +556e-9 0.33334 2.77759 +557e-9 0.32961 2.79124 +558e-9 0.32588 2.8049 +559e-9 0.32215 2.81855 +560e-9 0.31842 2.83221 +561e-9 0.31608 2.83898 +562e-9 0.31374 2.84575 +563e-9 0.31139 2.85252 +564e-9 0.30905 2.8593 +565e-9 0.30671 2.86607 +566e-9 0.30437 2.87284 +567e-9 0.30203 2.87962 +568e-9 0.29969 2.88639 +569e-9 0.29735 2.89316 +570e-9 0.29501 2.89994 +571e-9 0.29332 2.90303 +572e-9 0.29164 2.90613 +573e-9 0.28995 2.90923 +574e-9 0.28827 2.91233 +575e-9 0.28658 2.91543 +576e-9 0.28489 2.91853 +577e-9 0.28321 2.92163 +578e-9 0.28152 2.92473 +579e-9 0.27984 2.92783 +580e-9 0.27815 2.93093 +581e-9 0.2765 2.934 +582e-9 0.27485 2.93708 +583e-9 0.27321 2.94016 +584e-9 0.27156 2.94324 +585e-9 0.26991 2.94632 +586e-9 0.26826 2.9494 +587e-9 0.26661 2.95248 +588e-9 0.26496 2.95556 +589e-9 0.26331 2.95864 +590e-9 0.26166 2.96172 +591e-9 0.26005 2.96478 +592e-9 0.25844 2.96784 +593e-9 0.25682 2.9709 +594e-9 0.25521 2.97396 +595e-9 0.2536 2.97702 +596e-9 0.25198 2.98008 +597e-9 0.25037 2.98314 +598e-9 0.24876 2.9862 +599e-9 0.24714 2.98926 +600e-9 0.24553 2.99232 +601e-9 0.24395 2.99535 +602e-9 0.24237 2.99839 +603e-9 0.24079 3.00143 +604e-9 0.23921 3.00447 +605e-9 0.23764 3.00751 +606e-9 0.23606 3.01055 +607e-9 0.23448 3.01359 +608e-9 0.2329 3.01663 +609e-9 0.23132 3.01967 +610e-9 0.22974 3.02271 +611e-9 0.22819 3.02573 +612e-9 0.22665 3.02875 +613e-9 0.2251 3.03177 +614e-9 0.22356 3.03479 +615e-9 0.22201 3.03782 +616e-9 0.22046 3.04084 +617e-9 0.21892 3.04386 +618e-9 0.21737 3.04688 +619e-9 0.21582 3.0499 +620e-9 0.21428 3.05292 +621e-9 0.21276 3.05592 +622e-9 0.21125 3.05892 +623e-9 0.20973 3.06192 +624e-9 0.20822 3.06492 +625e-9 0.2067 3.06792 +626e-9 0.20519 3.07092 +627e-9 0.20367 3.07392 +628e-9 0.20216 3.07692 +629e-9 0.20065 3.07992 +630e-9 0.19913 3.08292 +631e-9 0.19765 3.0859 +632e-9 0.19616 3.08888 +633e-9 0.19468 3.09186 +634e-9 0.19319 3.09484 +635e-9 0.19171 3.09782 +636e-9 0.19022 3.1008 +637e-9 0.18874 3.10378 +638e-9 0.18726 3.10676 +639e-9 0.18577 3.10974 +640e-9 0.18429 3.11273 +641e-9 0.18283 3.11569 +642e-9 0.18138 3.11865 +643e-9 0.17992 3.12161 +644e-9 0.17847 3.12457 +645e-9 0.17701 3.12753 +646e-9 0.17556 3.13049 +647e-9 0.1741 3.13345 +648e-9 0.17265 3.13641 +649e-9 0.17119 3.13937 +650e-9 0.16974 3.14233 +651e-9 0.16917 3.15743 +652e-9 0.1686 3.17252 +653e-9 0.16803 3.18762 +654e-9 0.16747 3.20271 +655e-9 0.1669 3.21781 +656e-9 0.16633 3.2329 +657e-9 0.16576 3.248 +658e-9 0.1652 3.26309 +659e-9 0.16463 3.27819 +660e-9 0.16406 3.29329 +661e-9 0.16387 3.31171 +662e-9 0.16367 3.33014 +663e-9 0.16348 3.34857 +664e-9 0.16329 3.367 +665e-9 0.16309 3.38543 +666e-9 0.1629 3.40386 +667e-9 0.16271 3.42229 +668e-9 0.16251 3.44072 +669e-9 0.16232 3.45915 +670e-9 0.16213 3.47758 +671e-9 0.16199 3.49508 +672e-9 0.16186 3.51259 +673e-9 0.16173 3.53009 +674e-9 0.16159 3.54759 +675e-9 0.16146 3.5651 +676e-9 0.16133 3.5826 +677e-9 0.16119 3.60011 +678e-9 0.16106 3.61761 +679e-9 0.16093 3.63511 +680e-9 0.16079 3.65262 +681e-9 0.16072 3.6691 +682e-9 0.16065 3.68558 +683e-9 0.16058 3.70206 +684e-9 0.16051 3.71854 +685e-9 0.16044 3.73503 +686e-9 0.16037 3.75151 +687e-9 0.1603 3.76799 +688e-9 0.16023 3.78447 +689e-9 0.16016 3.80095 +690e-9 0.16009 3.81743 +691e-9 0.16017 3.83166 +692e-9 0.16025 3.8459 +693e-9 0.16033 3.86013 +694e-9 0.16042 3.87436 +695e-9 0.1605 3.88859 +696e-9 0.16058 3.90282 +697e-9 0.16066 3.91705 +698e-9 0.16074 3.93128 +699e-9 0.16082 3.94551 +700e-9 0.16091 3.95974 +701e-9 0.161 3.97348 +702e-9 0.1611 3.98721 +703e-9 0.16119 4.00095 +704e-9 0.16129 4.01469 +705e-9 0.16138 4.02843 +706e-9 0.16148 4.04216 +707e-9 0.16158 4.0559 +708e-9 0.16167 4.06964 +709e-9 0.16177 4.08337 +710e-9 0.16186 4.09711 +711e-9 0.16197 4.1104 +712e-9 0.16208 4.12369 +713e-9 0.16218 4.13699 +714e-9 0.16229 4.15028 +715e-9 0.1624 4.16357 +716e-9 0.1625 4.17686 +717e-9 0.16261 4.19015 +718e-9 0.16272 4.20344 +719e-9 0.16282 4.21674 +720e-9 0.16293 4.23003 +721e-9 0.16305 4.24285 +722e-9 0.16317 4.25568 +723e-9 0.1633 4.2685 +724e-9 0.16342 4.28133 +725e-9 0.16354 4.29415 +726e-9 0.16366 4.30698 +727e-9 0.16379 4.3198 +728e-9 0.16391 4.33263 +729e-9 0.16403 4.34545 +730e-9 0.16415 4.35828 +731e-9 0.16437 4.36994 +732e-9 0.16459 4.3816 +733e-9 0.16482 4.39326 +734e-9 0.16504 4.40492 +735e-9 0.16526 4.41659 +736e-9 0.16548 4.42825 +737e-9 0.1657 4.43991 +738e-9 0.16592 4.45157 +739e-9 0.16614 4.46323 +740e-9 0.16636 4.47489 +741e-9 0.16658 4.48626 +742e-9 0.1668 4.49762 +743e-9 0.16702 4.50899 +744e-9 0.16724 4.52035 +745e-9 0.16746 4.53172 +746e-9 0.16768 4.54308 +747e-9 0.1679 4.55445 +748e-9 0.16812 4.56581 +749e-9 0.16834 4.57718 +750e-9 0.16856 4.58854 +751e-9 0.16878 4.59963 +752e-9 0.169 4.61072 +753e-9 0.16921 4.62181 +754e-9 0.16943 4.6329 +755e-9 0.16965 4.64399 +756e-9 0.16987 4.65508 +757e-9 0.17009 4.66617 +758e-9 0.17031 4.67726 +759e-9 0.17053 4.68835 +760e-9 0.17075 4.69945 +761e-9 0.17097 4.71028 +762e-9 0.17119 4.72111 +763e-9 0.17141 4.73195 +764e-9 0.17162 4.74278 +765e-9 0.17184 4.75362 +766e-9 0.17206 4.76445 +767e-9 0.17228 4.77529 +768e-9 0.1725 4.78612 +769e-9 0.17272 4.79696 +770e-9 0.17293 4.80779 +771e-9 0.17318 4.8185 +772e-9 0.17343 4.8292 +773e-9 0.17368 4.8399 +774e-9 0.17393 4.8506 +775e-9 0.17418 4.86131 +776e-9 0.17443 4.87201 +777e-9 0.17468 4.88271 +778e-9 0.17493 4.89342 +779e-9 0.17518 4.90412 +780e-9 0.17542 4.91482 +781e-9 0.1757 4.9254 +782e-9 0.17598 4.93598 +783e-9 0.17625 4.94655 +784e-9 0.17653 4.95713 +785e-9 0.17681 4.9677 +786e-9 0.17708 4.97828 +787e-9 0.17736 4.98886 +788e-9 0.17764 4.99943 +789e-9 0.17791 5.01001 +790e-9 0.17819 5.02058 +791e-9 0.17846 5.03094 +792e-9 0.17873 5.0413 +793e-9 0.17901 5.05166 +794e-9 0.17928 5.06202 +795e-9 0.17955 5.07237 +796e-9 0.17983 5.08273 +797e-9 0.1801 5.09309 +798e-9 0.18037 5.10345 +799e-9 0.18064 5.1138 +800e-9 0.18092 5.12416 +801e-9 0.18119 5.13431 +802e-9 0.18146 5.14447 +803e-9 0.18172 5.15462 +804e-9 0.18199 5.16477 +805e-9 0.18226 5.17493 +806e-9 0.18253 5.18508 +807e-9 0.1828 5.19523 +808e-9 0.18307 5.20538 +809e-9 0.18334 5.21554 +810e-9 0.18361 5.22569 +811e-9 0.18387 5.23565 +812e-9 0.18414 5.24561 +813e-9 0.18441 5.25557 +814e-9 0.18467 5.26552 +815e-9 0.18494 5.27548 +816e-9 0.1852 5.28544 +817e-9 0.18547 5.2954 +818e-9 0.18573 5.30536 +819e-9 0.186 5.31532 +820e-9 0.18627 5.32528 +821e-9 0.18657 5.33469 +822e-9 0.18688 5.34411 +823e-9 0.18719 5.35353 +824e-9 0.18749 5.36294 +825e-9 0.1878 5.37236 +826e-9 0.18811 5.38178 +827e-9 0.18841 5.39119 +828e-9 0.18872 5.40061 +829e-9 0.18903 5.41002 +830e-9 0.18933 5.41944 +831e-9 0.18972 5.42801 +832e-9 0.19011 5.43658 +833e-9 0.1905 5.44514 +834e-9 0.19088 5.45371 +835e-9 0.19127 5.46228 +836e-9 0.19166 5.47085 +837e-9 0.19204 5.47941 +838e-9 0.19243 5.48798 +839e-9 0.19282 5.49655 +840e-9 0.19321 5.50512 +841e-9 0.19359 5.51355 +842e-9 0.19397 5.52199 +843e-9 0.19435 5.53043 +844e-9 0.19473 5.53886 +845e-9 0.19511 5.5473 +846e-9 0.19549 5.55574 +847e-9 0.19587 5.56417 +848e-9 0.19625 5.57261 +849e-9 0.19663 5.58104 +850e-9 0.19701 5.58948 +851e-9 0.19738 5.59779 +852e-9 0.19775 5.6061 +853e-9 0.19813 5.61441 +854e-9 0.1985 5.62272 +855e-9 0.19887 5.63104 +856e-9 0.19924 5.63935 +857e-9 0.19962 5.64766 +858e-9 0.19999 5.65597 +859e-9 0.20036 5.66428 +860e-9 0.20074 5.67259 +861e-9 0.2011 5.68078 +862e-9 0.20147 5.68897 +863e-9 0.20184 5.69716 +864e-9 0.2022 5.70535 +865e-9 0.20257 5.71354 +866e-9 0.20294 5.72174 +867e-9 0.2033 5.72993 +868e-9 0.20367 5.73812 +869e-9 0.20404 5.74631 +870e-9 0.2044 5.7545 +871e-9 0.20476 5.76258 +872e-9 0.20512 5.77065 +873e-9 0.20548 5.77873 +874e-9 0.20585 5.7868 +875e-9 0.20621 5.79488 +876e-9 0.20657 5.80296 +877e-9 0.20693 5.81103 +878e-9 0.20729 5.81911 +879e-9 0.20765 5.82718 +880e-9 0.20801 5.83526 +881e-9 0.20838 5.84372 +882e-9 0.20876 5.85219 +883e-9 0.20914 5.86065 +884e-9 0.20951 5.86911 +885e-9 0.20989 5.87758 +886e-9 0.21027 5.88604 +887e-9 0.21064 5.89451 +888e-9 0.21102 5.90297 +889e-9 0.2114 5.91143 +890e-9 0.21177 5.9199 +891e-9 0.21217 5.92887 +892e-9 0.21257 5.93784 +893e-9 0.21297 5.9468 +894e-9 0.21336 5.95577 +895e-9 0.21376 5.96474 +896e-9 0.21416 5.97371 +897e-9 0.21456 5.98268 +898e-9 0.21495 5.99165 +899e-9 0.21535 6.00062 +900e-9 0.21575 6.00959 diff --git a/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_ITO.txt b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_ITO.txt new file mode 100644 index 0000000..81f32f0 --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_ITO.txt @@ -0,0 +1,182 @@ +lambda n k +300e-9 2.2 0.3003 +305e-9 2.19 0.243 +310e-9 2.17 0.1855 +315e-9 2.16 0.1442 +320e-9 2.14 0.1102 +325e-9 2.13 0.085 +330e-9 2.12 0.0682 +335e-9 2.1 0.0546 +340e-9 2.09 0.0443 +345e-9 2.08 0.036 +350e-9 2.07 0.0302 +355e-9 2.06 0.0247 +360e-9 2.04 0.0213 +365e-9 2.03 0.0182 +370e-9 2.02 0.0157 +375e-9 2.01 0.0135 +380e-9 2.0 0.0117 +385e-9 1.99 0.01 +390e-9 1.98 0.0087747 +395e-9 1.97 0.0075628 +400e-9 1.96 0.0068915 +405e-9 1.95 0.0061998 +410e-9 1.95 0.0056509 +415e-9 1.94 0.0051933 +420e-9 1.93 0.0047273 +425e-9 1.92 0.0044087 +430e-9 1.91 0.004066 +435e-9 1.91 0.0038322 +440e-9 1.9 0.0036079 +445e-9 1.89 0.0034165 +450e-9 1.88 0.0032522 +455e-9 1.88 0.0031077 +460e-9 1.87 0.0030083 +465e-9 1.86 0.0029183 +470e-9 1.86 0.0028414 +475e-9 1.85 0.002793 +480e-9 1.84 0.0027537 +485e-9 1.84 0.0027158 +490e-9 1.83 0.0027085 +495e-9 1.83 0.0027093 +500e-9 1.82 0.0027315 +505e-9 1.82 0.0027698 +510e-9 1.81 0.0028206 +515e-9 1.8 0.0028705 +520e-9 1.8 0.0029643 +525e-9 1.79 0.0030433 +530e-9 1.79 0.0031263 +535e-9 1.79 0.0032089 +540e-9 1.78 0.0032916 +545e-9 1.78 0.0033792 +550e-9 1.77 0.0034668 +555e-9 1.77 0.0035545 +560e-9 1.76 0.0036421 +565e-9 1.76 0.0037297 +570e-9 1.76 0.0039156 +575e-9 1.75 0.0040252 +580e-9 1.75 0.0041416 +585e-9 1.74 0.0042578 +590e-9 1.74 0.0043738 +595e-9 1.74 0.0045439 +600e-9 1.73 0.0046807 +605e-9 1.73 0.0048175 +610e-9 1.73 0.0049631 +615e-9 1.72 0.0051104 +620e-9 1.72 0.0052574 +625e-9 1.72 0.0054041 +630e-9 1.72 0.0056196 +635e-9 1.71 0.0057982 +640e-9 1.71 0.0059768 +645e-9 1.71 0.0061607 +650e-9 1.7 0.0063529 +655e-9 1.7 0.0065452 +660e-9 1.7 0.0067929 +665e-9 1.7 0.0070359 +670e-9 1.69 0.0072781 +675e-9 1.69 0.0075193 +680e-9 1.69 0.007771 +685e-9 1.69 0.0080392 +690e-9 1.69 0.0083078 +695e-9 1.68 0.0085257 +700e-9 1.68 0.0088558 +705e-9 1.68 0.0091851 +710e-9 1.68 0.0095138 +715e-9 1.68 0.0098619 +720e-9 1.67 0.0102 +725e-9 1.67 0.0106 +730e-9 1.67 0.0108 +735e-9 1.67 0.0113 +740e-9 1.67 0.0117 +745e-9 1.66 0.0122 +750e-9 1.66 0.0126 +755e-9 1.66 0.0131 +760e-9 1.66 0.0136 +765e-9 1.66 0.014 +770e-9 1.66 0.0145 +775e-9 1.66 0.0151 +780e-9 1.65 0.0156 +785e-9 1.65 0.0161 +790e-9 1.65 0.0166 +795e-9 1.65 0.0171 +800e-9 1.65 0.0176 +805e-9 1.65 0.0181 +810e-9 1.65 0.0186 +815e-9 1.65 0.0191 +820e-9 1.64 0.0196 +825e-9 1.64 0.0201 +830e-9 1.64 0.0207 +835e-9 1.64 0.0212 +840e-9 1.64 0.0217 +845e-9 1.64 0.0222 +850e-9 1.64 0.0227 +855e-9 1.64 0.0232 +860e-9 1.64 0.0239 +865e-9 1.64 0.0245 +870e-9 1.63 0.025 +875e-9 1.63 0.0255 +880e-9 1.63 0.0261 +885e-9 1.63 0.0266 +890e-9 1.63 0.0272 +895e-9 1.63 0.0277 +900e-9 1.63 0.0283 +905e-9 1.63 0.0288 +910e-9 1.63 0.0294 +915e-9 1.63 0.0299 +920e-9 1.63 0.0305 +925e-9 1.63 0.0311 +930e-9 1.63 0.0317 +935e-9 1.63 0.0322 +940e-9 1.62 0.0328 +945e-9 1.62 0.0334 +950e-9 1.62 0.034 +955e-9 1.62 0.0347 +960e-9 1.62 0.0353 +965e-9 1.62 0.0359 +970e-9 1.62 0.0366 +975e-9 1.62 0.0373 +980e-9 1.62 0.0379 +985e-9 1.62 0.0386 +990e-9 1.62 0.0393 +995e-9 1.62 0.04 +1000e-9 1.62 0.0408 +1005e-9 1.62 0.0416 +1010e-9 1.62 0.0423 +1015e-9 1.62 0.0431 +1020e-9 1.62 0.0439 +1025e-9 1.62 0.0447 +1030e-9 1.62 0.0455 +1035e-9 1.62 0.0463 +1040e-9 1.61 0.0472 +1045e-9 1.61 0.0482 +1050e-9 1.61 0.0492 +1055e-9 1.61 0.0501 +1060e-9 1.61 0.0511 +1065e-9 1.61 0.0521 +1070e-9 1.61 0.0532 +1075e-9 1.61 0.0539 +1080e-9 1.61 0.0552 +1085e-9 1.61 0.0565 +1090e-9 1.61 0.0578 +1095e-9 1.61 0.0591 +1100e-9 1.61 0.0603 +1105e-9 1.61 0.0617 +1110e-9 1.61 0.0631 +1115e-9 1.61 0.0641 +1120e-9 1.61 0.0657 +1125e-9 1.61 0.0674 +1130e-9 1.61 0.069 +1135e-9 1.61 0.0708 +1140e-9 1.61 0.0726 +1145e-9 1.61 0.0735 +1150e-9 1.61 0.0756 +1155e-9 1.61 0.0776 +1160e-9 1.61 0.0796 +1165e-9 1.61 0.0817 +1170e-9 1.61 0.0837 +1175e-9 1.61 0.0858 +1180e-9 1.61 0.0878 +1185e-9 1.61 0.0899 +1190e-9 1.61 0.0919 +1195e-9 1.61 0.094 +1200e-9 1.61 0.096 diff --git a/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_SpiroOMeTAD.txt b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_SpiroOMeTAD.txt new file mode 100644 index 0000000..ffddfa2 --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_SpiroOMeTAD.txt @@ -0,0 +1,602 @@ +lambda n k +300e-9 1.43138 0.32976 +301e-9 1.43503 0.32975 +302e-9 1.43869 0.32973 +303e-9 1.44235 0.32972 +304e-9 1.446 0.32971 +305e-9 1.44966 0.3297 +306e-9 1.45332 0.32969 +307e-9 1.45697 0.32968 +308e-9 1.46063 0.32966 +309e-9 1.46429 0.32965 +310e-9 1.46794 0.32964 +311e-9 1.4716 0.32963 +312e-9 1.47526 0.32962 +313e-9 1.47891 0.3296 +314e-9 1.48257 0.32959 +315e-9 1.48623 0.32958 +316e-9 1.48988 0.32957 +317e-9 1.49354 0.32956 +318e-9 1.4972 0.32955 +319e-9 1.50085 0.32953 +320e-9 1.50451 0.32952 +321e-9 1.50817 0.32951 +322e-9 1.51182 0.3295 +323e-9 1.51548 0.32949 +324e-9 1.51914 0.32948 +325e-9 1.52279 0.32946 +326e-9 1.52645 0.32945 +327e-9 1.53011 0.32944 +328e-9 1.53376 0.32943 +329e-9 1.53742 0.32942 +330e-9 1.54108 0.3294 +331e-9 1.54473 0.32939 +332e-9 1.54839 0.32938 +333e-9 1.55205 0.32937 +334e-9 1.5557 0.32936 +335e-9 1.55936 0.32935 +336e-9 1.56302 0.32933 +337e-9 1.56667 0.32932 +338e-9 1.57033 0.32931 +339e-9 1.57399 0.3293 +340e-9 1.57764 0.32929 +341e-9 1.5813 0.32928 +342e-9 1.58496 0.32926 +343e-9 1.58861 0.32925 +344e-9 1.59227 0.32924 +345e-9 1.59593 0.32923 +346e-9 1.59958 0.32922 +347e-9 1.60324 0.3292 +348e-9 1.6069 0.32919 +349e-9 1.61055 0.32918 +350e-9 1.61421 0.32917 +351e-9 1.61816 0.29237 +352e-9 1.62172 0.29639 +353e-9 1.62528 0.3004 +354e-9 1.62884 0.30442 +355e-9 1.6324 0.30844 +356e-9 1.63596 0.31245 +357e-9 1.63952 0.31647 +358e-9 1.64308 0.32048 +359e-9 1.64664 0.3245 +360e-9 1.6502 0.32852 +361e-9 1.65587 0.33094 +362e-9 1.6616 0.33332 +363e-9 1.66732 0.33571 +364e-9 1.67305 0.33809 +365e-9 1.67877 0.34047 +366e-9 1.68449 0.34286 +367e-9 1.69022 0.34524 +368e-9 1.69594 0.34763 +369e-9 1.70166 0.35001 +370e-9 1.70739 0.35239 +371e-9 1.71456 0.35212 +372e-9 1.72176 0.35178 +373e-9 1.72897 0.35145 +374e-9 1.73617 0.35111 +375e-9 1.74338 0.35077 +376e-9 1.75058 0.35043 +377e-9 1.75779 0.35009 +378e-9 1.76499 0.34975 +379e-9 1.7722 0.34941 +380e-9 1.7794 0.34908 +381e-9 1.7867 0.34528 +382e-9 1.794 0.34139 +383e-9 1.80131 0.33751 +384e-9 1.80861 0.33362 +385e-9 1.81591 0.32973 +386e-9 1.82321 0.32584 +387e-9 1.83051 0.32196 +388e-9 1.83781 0.31807 +389e-9 1.84511 0.31418 +390e-9 1.85241 0.31029 +391e-9 1.85781 0.30291 +392e-9 1.86315 0.29544 +393e-9 1.86849 0.28796 +394e-9 1.87384 0.28049 +395e-9 1.87918 0.27301 +396e-9 1.88452 0.26554 +397e-9 1.88987 0.25806 +398e-9 1.89521 0.25059 +399e-9 1.90055 0.24311 +400e-9 1.90589 0.23564 +401e-9 1.90719 0.22611 +402e-9 1.90837 0.21653 +403e-9 1.90955 0.20695 +404e-9 1.91073 0.19736 +405e-9 1.91191 0.18778 +406e-9 1.91309 0.17819 +407e-9 1.91427 0.16861 +408e-9 1.91545 0.15903 +409e-9 1.91663 0.14944 +410e-9 1.91782 0.13986 +411e-9 1.91419 0.13138 +412e-9 1.91043 0.12294 +413e-9 1.90668 0.11449 +414e-9 1.90292 0.10605 +415e-9 1.89916 0.0976 +416e-9 1.8954 0.08916 +417e-9 1.89164 0.08071 +418e-9 1.88788 0.07227 +419e-9 1.88412 0.06383 +420e-9 1.88037 0.05538 +421e-9 1.87403 0.05098 +422e-9 1.86762 0.04669 +423e-9 1.86121 0.04241 +424e-9 1.8548 0.03812 +425e-9 1.8484 0.03384 +426e-9 1.84199 0.02956 +427e-9 1.83558 0.02527 +428e-9 1.82917 0.02099 +429e-9 1.82276 0.0167 +430e-9 1.81635 0.01242 +431e-9 1.81089 0.012 +432e-9 1.80546 0.0117 +433e-9 1.80003 0.01139 +434e-9 1.7946 0.01109 +435e-9 1.78917 0.01079 +436e-9 1.78374 0.01049 +437e-9 1.77831 0.01018 +438e-9 1.77288 0.00988 +439e-9 1.76744 0.00958 +440e-9 1.76201 0.00928 +441e-9 1.75896 0.01045 +442e-9 1.75598 0.01167 +443e-9 1.75301 0.01289 +444e-9 1.75003 0.01411 +445e-9 1.74705 0.01533 +446e-9 1.74407 0.01656 +447e-9 1.74109 0.01778 +448e-9 1.73812 0.019 +449e-9 1.73514 0.02022 +450e-9 1.73216 0.02144 +451e-9 1.73088 0.02242 +452e-9 1.72966 0.0234 +453e-9 1.72844 0.02438 +454e-9 1.72722 0.02536 +455e-9 1.72599 0.02634 +456e-9 1.72477 0.02732 +457e-9 1.72355 0.02829 +458e-9 1.72232 0.02927 +459e-9 1.7211 0.03025 +460e-9 1.71988 0.03123 +461e-9 1.71936 0.03156 +462e-9 1.71887 0.03188 +463e-9 1.71837 0.03219 +464e-9 1.71788 0.0325 +465e-9 1.71739 0.03282 +466e-9 1.71689 0.03313 +467e-9 1.7164 0.03344 +468e-9 1.71591 0.03376 +469e-9 1.71541 0.03407 +470e-9 1.71492 0.03438 +471e-9 1.71456 0.03422 +472e-9 1.71422 0.03404 +473e-9 1.71387 0.03387 +474e-9 1.71352 0.03369 +475e-9 1.71317 0.03351 +476e-9 1.71282 0.03333 +477e-9 1.71247 0.03316 +478e-9 1.71213 0.03298 +479e-9 1.71178 0.0328 +480e-9 1.71143 0.03262 +481e-9 1.71102 0.03222 +482e-9 1.7106 0.0318 +483e-9 1.71019 0.03138 +484e-9 1.70978 0.03096 +485e-9 1.70936 0.03055 +486e-9 1.70895 0.03013 +487e-9 1.70853 0.02971 +488e-9 1.70812 0.0293 +489e-9 1.70771 0.02888 +490e-9 1.70729 0.02846 +491e-9 1.70678 0.02798 +492e-9 1.70627 0.0275 +493e-9 1.70576 0.02702 +494e-9 1.70525 0.02654 +495e-9 1.70474 0.02605 +496e-9 1.70423 0.02557 +497e-9 1.70372 0.02509 +498e-9 1.70321 0.02461 +499e-9 1.70269 0.02413 +500e-9 1.70218 0.02364 +501e-9 1.70161 0.02319 +502e-9 1.70103 0.02274 +503e-9 1.70045 0.02228 +504e-9 1.69987 0.02183 +505e-9 1.69929 0.02138 +506e-9 1.69871 0.02093 +507e-9 1.69813 0.02047 +508e-9 1.69755 0.02002 +509e-9 1.69697 0.01957 +510e-9 1.69639 0.01911 +511e-9 1.69578 0.01873 +512e-9 1.69517 0.01834 +513e-9 1.69457 0.01796 +514e-9 1.69396 0.01757 +515e-9 1.69335 0.01719 +516e-9 1.69274 0.01681 +517e-9 1.69213 0.01642 +518e-9 1.69153 0.01604 +519e-9 1.69092 0.01565 +520e-9 1.69031 0.01527 +521e-9 1.68971 0.01496 +522e-9 1.6891 0.01465 +523e-9 1.6885 0.01435 +524e-9 1.6879 0.01404 +525e-9 1.68729 0.01373 +526e-9 1.68669 0.01343 +527e-9 1.68609 0.01312 +528e-9 1.68548 0.01281 +529e-9 1.68488 0.01251 +530e-9 1.68427 0.0122 +531e-9 1.6837 0.01196 +532e-9 1.68312 0.01173 +533e-9 1.68254 0.0115 +534e-9 1.68196 0.01126 +535e-9 1.68139 0.01103 +536e-9 1.68081 0.0108 +537e-9 1.68023 0.01056 +538e-9 1.67966 0.01033 +539e-9 1.67908 0.01009 +540e-9 1.6785 0.00986 +541e-9 1.67796 0.00969 +542e-9 1.67742 0.00951 +543e-9 1.67688 0.00934 +544e-9 1.67635 0.00917 +545e-9 1.67581 0.009 +546e-9 1.67527 0.00883 +547e-9 1.67473 0.00866 +548e-9 1.67419 0.00848 +549e-9 1.67365 0.00831 +550e-9 1.67312 0.00814 +551e-9 1.67262 0.00802 +552e-9 1.67213 0.00789 +553e-9 1.67163 0.00777 +554e-9 1.67114 0.00765 +555e-9 1.67064 0.00753 +556e-9 1.67015 0.00741 +557e-9 1.66966 0.00729 +558e-9 1.66916 0.00716 +559e-9 1.66867 0.00704 +560e-9 1.66817 0.00692 +561e-9 1.66772 0.00684 +562e-9 1.66728 0.00675 +563e-9 1.66683 0.00667 +564e-9 1.66638 0.00659 +565e-9 1.66593 0.0065 +566e-9 1.66548 0.00642 +567e-9 1.66504 0.00634 +568e-9 1.66459 0.00625 +569e-9 1.66414 0.00617 +570e-9 1.66369 0.00609 +571e-9 1.66329 0.00603 +572e-9 1.66288 0.00598 +573e-9 1.66248 0.00593 +574e-9 1.66208 0.00587 +575e-9 1.66167 0.00582 +576e-9 1.66127 0.00576 +577e-9 1.66086 0.00571 +578e-9 1.66046 0.00566 +579e-9 1.66006 0.0056 +580e-9 1.65965 0.00555 +581e-9 1.65929 0.00552 +582e-9 1.65893 0.00549 +583e-9 1.65856 0.00545 +584e-9 1.6582 0.00542 +585e-9 1.65784 0.00539 +586e-9 1.65748 0.00536 +587e-9 1.65711 0.00533 +588e-9 1.65675 0.0053 +589e-9 1.65639 0.00526 +590e-9 1.65603 0.00523 +591e-9 1.6557 0.00522 +592e-9 1.65538 0.0052 +593e-9 1.65505 0.00519 +594e-9 1.65473 0.00517 +595e-9 1.6544 0.00516 +596e-9 1.65408 0.00514 +597e-9 1.65375 0.00512 +598e-9 1.65343 0.00511 +599e-9 1.6531 0.00509 +600e-9 1.65278 0.00508 +601e-9 1.65248 0.00507 +602e-9 1.65219 0.00507 +603e-9 1.6519 0.00507 +604e-9 1.65161 0.00506 +605e-9 1.65132 0.00506 +606e-9 1.65103 0.00505 +607e-9 1.65073 0.00505 +608e-9 1.65044 0.00505 +609e-9 1.65015 0.00504 +610e-9 1.64986 0.00504 +611e-9 1.6496 0.00504 +612e-9 1.64934 0.00505 +613e-9 1.64908 0.00505 +614e-9 1.64881 0.00506 +615e-9 1.64855 0.00506 +616e-9 1.64829 0.00507 +617e-9 1.64803 0.00507 +618e-9 1.64777 0.00507 +619e-9 1.64751 0.00508 +620e-9 1.64725 0.00508 +621e-9 1.64701 0.00509 +622e-9 1.64677 0.0051 +623e-9 1.64654 0.00511 +624e-9 1.6463 0.00512 +625e-9 1.64607 0.00513 +626e-9 1.64583 0.00514 +627e-9 1.6456 0.00515 +628e-9 1.64536 0.00516 +629e-9 1.64513 0.00517 +630e-9 1.6449 0.00518 +631e-9 1.64468 0.0052 +632e-9 1.64447 0.00521 +633e-9 1.64426 0.00523 +634e-9 1.64405 0.00524 +635e-9 1.64383 0.00525 +636e-9 1.64362 0.00527 +637e-9 1.64341 0.00528 +638e-9 1.6432 0.0053 +639e-9 1.64299 0.00531 +640e-9 1.64278 0.00533 +641e-9 1.64258 0.00534 +642e-9 1.64239 0.00536 +643e-9 1.6422 0.00538 +644e-9 1.64201 0.00539 +645e-9 1.64182 0.00541 +646e-9 1.64162 0.00543 +647e-9 1.64143 0.00544 +648e-9 1.64124 0.00546 +649e-9 1.64105 0.00548 +650e-9 1.64086 0.00549 +651e-9 1.64068 0.00551 +652e-9 1.64051 0.00553 +653e-9 1.64033 0.00555 +654e-9 1.64016 0.00557 +655e-9 1.63998 0.00558 +656e-9 1.63981 0.0056 +657e-9 1.63964 0.00562 +658e-9 1.63946 0.00564 +659e-9 1.63929 0.00566 +660e-9 1.63911 0.00568 +661e-9 1.63895 0.0057 +662e-9 1.6388 0.00571 +663e-9 1.63864 0.00573 +664e-9 1.63848 0.00575 +665e-9 1.63832 0.00577 +666e-9 1.63816 0.00579 +667e-9 1.638 0.00581 +668e-9 1.63784 0.00583 +669e-9 1.63768 0.00585 +670e-9 1.63753 0.00587 +671e-9 1.63738 0.00589 +672e-9 1.63723 0.00591 +673e-9 1.63709 0.00593 +674e-9 1.63694 0.00595 +675e-9 1.6368 0.00597 +676e-9 1.63665 0.00599 +677e-9 1.63651 0.00601 +678e-9 1.63636 0.00603 +679e-9 1.63622 0.00605 +680e-9 1.63607 0.00607 +681e-9 1.63594 0.00609 +682e-9 1.6358 0.00611 +683e-9 1.63567 0.00613 +684e-9 1.63553 0.00615 +685e-9 1.6354 0.00617 +686e-9 1.63527 0.00619 +687e-9 1.63513 0.00621 +688e-9 1.635 0.00623 +689e-9 1.63487 0.00625 +690e-9 1.63473 0.00627 +691e-9 1.63461 0.00629 +692e-9 1.63448 0.00631 +693e-9 1.63436 0.00633 +694e-9 1.63424 0.00635 +695e-9 1.63411 0.00637 +696e-9 1.63399 0.00639 +697e-9 1.63387 0.00641 +698e-9 1.63374 0.00643 +699e-9 1.63362 0.00645 +700e-9 1.6335 0.00647 +701e-9 1.63338 0.00649 +702e-9 1.63327 0.00651 +703e-9 1.63315 0.00653 +704e-9 1.63304 0.00655 +705e-9 1.63292 0.00657 +706e-9 1.63281 0.00659 +707e-9 1.63269 0.00661 +708e-9 1.63258 0.00663 +709e-9 1.63246 0.00665 +710e-9 1.63235 0.00667 +711e-9 1.63224 0.00669 +712e-9 1.63213 0.00671 +713e-9 1.63203 0.00673 +714e-9 1.63192 0.00675 +715e-9 1.63181 0.00677 +716e-9 1.6317 0.00679 +717e-9 1.6316 0.00681 +718e-9 1.63149 0.00683 +719e-9 1.63138 0.00685 +720e-9 1.63128 0.00687 +721e-9 1.63118 0.00688 +722e-9 1.63107 0.0069 +723e-9 1.63097 0.00692 +724e-9 1.63087 0.00694 +725e-9 1.63077 0.00696 +726e-9 1.63067 0.00698 +727e-9 1.63057 0.007 +728e-9 1.63047 0.00702 +729e-9 1.63037 0.00704 +730e-9 1.63027 0.00706 +731e-9 1.63018 0.00708 +732e-9 1.63008 0.0071 +733e-9 1.62999 0.00712 +734e-9 1.62989 0.00714 +735e-9 1.6298 0.00716 +736e-9 1.6297 0.00718 +737e-9 1.62961 0.0072 +738e-9 1.62951 0.00722 +739e-9 1.62942 0.00724 +740e-9 1.62932 0.00726 +741e-9 1.62923 0.00728 +742e-9 1.62914 0.0073 +743e-9 1.62905 0.00731 +744e-9 1.62896 0.00733 +745e-9 1.62888 0.00735 +746e-9 1.62879 0.00737 +747e-9 1.6287 0.00739 +748e-9 1.62861 0.00741 +749e-9 1.62852 0.00743 +750e-9 1.62843 0.00745 +751e-9 1.62834 0.00747 +752e-9 1.62826 0.00749 +753e-9 1.62817 0.00751 +754e-9 1.62808 0.00753 +755e-9 1.628 0.00755 +756e-9 1.62791 0.00757 +757e-9 1.62783 0.00759 +758e-9 1.62774 0.00761 +759e-9 1.62766 0.00762 +760e-9 1.62757 0.00764 +761e-9 1.62749 0.00766 +762e-9 1.62741 0.00768 +763e-9 1.62733 0.0077 +764e-9 1.62725 0.00772 +765e-9 1.62716 0.00774 +766e-9 1.62708 0.00776 +767e-9 1.627 0.00778 +768e-9 1.62692 0.0078 +769e-9 1.62684 0.00782 +770e-9 1.62676 0.00784 +771e-9 1.62668 0.00786 +772e-9 1.6266 0.00788 +773e-9 1.62652 0.0079 +774e-9 1.62644 0.00792 +775e-9 1.62636 0.00794 +776e-9 1.62628 0.00796 +777e-9 1.62621 0.00798 +778e-9 1.62613 0.00799 +779e-9 1.62605 0.00801 +780e-9 1.62597 0.00803 +781e-9 1.62589 0.00805 +782e-9 1.62582 0.00807 +783e-9 1.62574 0.00809 +784e-9 1.62567 0.00811 +785e-9 1.62559 0.00813 +786e-9 1.62552 0.00815 +787e-9 1.62544 0.00817 +788e-9 1.62536 0.00819 +789e-9 1.62529 0.00821 +790e-9 1.62521 0.00823 +791e-9 1.62514 0.00825 +792e-9 1.62506 0.00827 +793e-9 1.62499 0.00829 +794e-9 1.62492 0.00831 +795e-9 1.62484 0.00833 +796e-9 1.62477 0.00835 +797e-9 1.6247 0.00837 +798e-9 1.62462 0.00839 +799e-9 1.62455 0.00841 +800e-9 1.62448 0.00843 +801e-9 1.62441 0.00845 +802e-9 1.62433 0.00847 +803e-9 1.62426 0.00849 +804e-9 1.62419 0.00851 +805e-9 1.62412 0.00853 +806e-9 1.62405 0.00855 +807e-9 1.62398 0.00857 +808e-9 1.6239 0.00859 +809e-9 1.62383 0.00861 +810e-9 1.62376 0.00863 +811e-9 1.62369 0.00865 +812e-9 1.62362 0.00868 +813e-9 1.62355 0.0087 +814e-9 1.62348 0.00872 +815e-9 1.62341 0.00874 +816e-9 1.62334 0.00876 +817e-9 1.62327 0.00878 +818e-9 1.6232 0.0088 +819e-9 1.62313 0.00882 +820e-9 1.62306 0.00884 +821e-9 1.62299 0.00886 +822e-9 1.62292 0.00889 +823e-9 1.62285 0.00891 +824e-9 1.62279 0.00893 +825e-9 1.62272 0.00895 +826e-9 1.62265 0.00897 +827e-9 1.62258 0.00899 +828e-9 1.62251 0.00901 +829e-9 1.62244 0.00903 +830e-9 1.62237 0.00906 +831e-9 1.62231 0.00908 +832e-9 1.62224 0.0091 +833e-9 1.62217 0.00912 +834e-9 1.6221 0.00914 +835e-9 1.62203 0.00917 +836e-9 1.62197 0.00919 +837e-9 1.6219 0.00921 +838e-9 1.62183 0.00923 +839e-9 1.62176 0.00925 +840e-9 1.62169 0.00928 +841e-9 1.62163 0.0093 +842e-9 1.62156 0.00932 +843e-9 1.62149 0.00934 +844e-9 1.62143 0.00937 +845e-9 1.62136 0.00939 +846e-9 1.62129 0.00941 +847e-9 1.62123 0.00944 +848e-9 1.62116 0.00946 +849e-9 1.62109 0.00948 +850e-9 1.62102 0.0095 +851e-9 1.62096 0.00953 +852e-9 1.62089 0.00955 +853e-9 1.62082 0.00957 +854e-9 1.62076 0.0096 +855e-9 1.62069 0.00962 +856e-9 1.62062 0.00964 +857e-9 1.62056 0.00967 +858e-9 1.62049 0.00969 +859e-9 1.62042 0.00972 +860e-9 1.62036 0.00974 +861e-9 1.62029 0.00976 +862e-9 1.62023 0.00979 +863e-9 1.62016 0.00981 +864e-9 1.62009 0.00984 +865e-9 1.62003 0.00986 +866e-9 1.61996 0.00989 +867e-9 1.61989 0.00991 +868e-9 1.61983 0.00993 +869e-9 1.61976 0.00996 +870e-9 1.6197 0.00998 +871e-9 1.61963 0.01001 +872e-9 1.61956 0.01003 +873e-9 1.6195 0.01006 +874e-9 1.61943 0.01009 +875e-9 1.61936 0.01011 +876e-9 1.6193 0.01014 +877e-9 1.61923 0.01016 +878e-9 1.61917 0.01019 +879e-9 1.6191 0.01021 +880e-9 1.61903 0.01024 +881e-9 1.61897 0.01026 +882e-9 1.6189 0.01029 +883e-9 1.61884 0.01032 +884e-9 1.61877 0.01034 +885e-9 1.6187 0.01037 +886e-9 1.61864 0.0104 +887e-9 1.61857 0.01042 +888e-9 1.61851 0.01045 +889e-9 1.61844 0.01048 +890e-9 1.61837 0.0105 +891e-9 1.61831 0.01053 +892e-9 1.61824 0.01056 +893e-9 1.61817 0.01059 +894e-9 1.61811 0.01061 +895e-9 1.61804 0.01064 +896e-9 1.61797 0.01067 +897e-9 1.61791 0.0107 +898e-9 1.61784 0.01073 +899e-9 1.61778 0.01075 +900e-9 1.61771 0.01078 diff --git a/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_glass.txt b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_glass.txt new file mode 100644 index 0000000..1c9a547 --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_glass.txt @@ -0,0 +1,602 @@ +lambda n k +300e-9 1.5522 0 +301e-9 1.55191 0 +302e-9 1.55162 0 +303e-9 1.55133 0 +304e-9 1.55105 0 +305e-9 1.55076 0 +306e-9 1.55047 0 +307e-9 1.55018 0 +308e-9 1.54989 0 +309e-9 1.54961 0 +310e-9 1.54932 0 +311e-9 1.54903 0 +312e-9 1.54874 0 +313e-9 1.54845 0 +314e-9 1.54819 0 +315e-9 1.54788 0 +316e-9 1.54759 0 +317e-9 1.54729 0 +318e-9 1.547 0 +319e-9 1.54671 0 +320e-9 1.54643 0 +321e-9 1.54615 0 +322e-9 1.54587 0 +323e-9 1.54559 0 +324e-9 1.54532 0 +325e-9 1.54505 0 +326e-9 1.54479 0 +327e-9 1.54453 0 +328e-9 1.54427 0 +329e-9 1.54401 0 +330e-9 1.54375 0 +331e-9 1.5435 0 +332e-9 1.54325 0 +333e-9 1.54301 0 +334e-9 1.54276 0 +335e-9 1.54252 0 +336e-9 1.54228 0 +337e-9 1.54204 0 +338e-9 1.54181 0 +339e-9 1.54157 0 +340e-9 1.54134 0 +341e-9 1.54111 0 +342e-9 1.54089 0 +343e-9 1.54067 0 +344e-9 1.54045 0 +345e-9 1.54023 0 +346e-9 1.54001 0 +347e-9 1.5398 0 +348e-9 1.53959 0 +349e-9 1.53937 0 +350e-9 1.53916 0 +351e-9 1.53896 0 +352e-9 1.53875 0 +353e-9 1.53855 0 +354e-9 1.53835 0 +355e-9 1.53815 0 +356e-9 1.53796 0 +357e-9 1.53776 0 +358e-9 1.53757 0 +359e-9 1.53738 0 +360e-9 1.53719 0 +361e-9 1.53701 0 +362e-9 1.53682 0 +363e-9 1.53664 0 +364e-9 1.53645 0 +365e-9 1.53627 0 +366e-9 1.53609 0 +367e-9 1.53591 0 +368e-9 1.53573 0 +369e-9 1.53556 0 +370e-9 1.53539 0 +371e-9 1.53522 0 +372e-9 1.53506 0 +373e-9 1.53488 0 +374e-9 1.53472 0 +375e-9 1.53455 0 +376e-9 1.53438 0 +377e-9 1.53422 0 +378e-9 1.53406 0 +379e-9 1.53391 0 +380e-9 1.53375 0 +381e-9 1.53359 0 +382e-9 1.53343 0 +383e-9 1.53328 0 +384e-9 1.53312 0 +385e-9 1.53297 0 +386e-9 1.53283 0 +387e-9 1.53268 0 +388e-9 1.53253 0 +389e-9 1.53238 0 +390e-9 1.53224 0 +391e-9 1.53209 0 +392e-9 1.53195 0 +393e-9 1.53181 0 +394e-9 1.53167 0 +395e-9 1.53153 0 +396e-9 1.53139 0 +397e-9 1.53125 0 +398e-9 1.53112 0 +399e-9 1.53099 0 +400e-9 1.53085 0 +401e-9 1.53072 0 +402e-9 1.53059 0 +403e-9 1.53045 0 +404e-9 1.53033 0 +405e-9 1.5302 0 +406e-9 1.53007 0 +407e-9 1.52994 0 +408e-9 1.52981 0 +409e-9 1.52969 0 +410e-9 1.52957 0 +411e-9 1.52945 0 +412e-9 1.52933 0 +413e-9 1.52921 0 +414e-9 1.52908 0 +415e-9 1.52896 0 +416e-9 1.52884 0 +417e-9 1.52873 0 +418e-9 1.52862 0 +419e-9 1.5285 0 +420e-9 1.52839 0 +421e-9 1.52827 0 +422e-9 1.52816 0 +423e-9 1.52804 0 +424e-9 1.52793 0 +425e-9 1.52782 0 +426e-9 1.52772 0 +427e-9 1.52761 0 +428e-9 1.5275 0 +429e-9 1.5274 0 +430e-9 1.52729 0 +431e-9 1.52718 0 +432e-9 1.52708 0 +433e-9 1.52698 0 +434e-9 1.52687 0 +435e-9 1.52677 0 +436e-9 1.52667 0 +437e-9 1.52656 0 +438e-9 1.52647 0 +439e-9 1.52637 0 +440e-9 1.52627 0 +441e-9 1.52617 0 +442e-9 1.52607 0 +443e-9 1.52598 0 +444e-9 1.52588 0 +445e-9 1.52578 0 +446e-9 1.52569 0 +447e-9 1.5256 0 +448e-9 1.52551 0 +449e-9 1.52541 0 +450e-9 1.52532 0 +451e-9 1.52523 0 +452e-9 1.52513 0 +453e-9 1.52504 0 +454e-9 1.52496 0 +455e-9 1.52487 0 +456e-9 1.52478 0 +457e-9 1.52469 0 +458e-9 1.52461 0 +459e-9 1.52452 0 +460e-9 1.52443 0 +461e-9 1.52435 0 +462e-9 1.52426 0 +463e-9 1.52418 0 +464e-9 1.5241 0 +465e-9 1.52401 0 +466e-9 1.52393 0 +467e-9 1.52385 0 +468e-9 1.52376 0 +469e-9 1.52368 0 +470e-9 1.5236 0 +471e-9 1.52353 0 +472e-9 1.52345 0 +473e-9 1.52337 0 +474e-9 1.52329 0 +475e-9 1.52322 0 +476e-9 1.52313 0 +477e-9 1.52306 0 +478e-9 1.52298 0 +479e-9 1.5229 0 +480e-9 1.52283 0 +481e-9 1.52275 0 +482e-9 1.52268 0 +483e-9 1.5226 0 +484e-9 1.52253 0 +485e-9 1.52246 0 +486e-9 1.52238 0 +487e-9 1.52232 0 +488e-9 1.52225 0 +489e-9 1.52217 0 +490e-9 1.5221 0 +491e-9 1.52203 0 +492e-9 1.52196 0 +493e-9 1.52189 0 +494e-9 1.52182 0 +495e-9 1.52176 0 +496e-9 1.52169 0 +497e-9 1.52161 0 +498e-9 1.52155 0 +499e-9 1.52148 0 +500e-9 1.52141 0 +501e-9 1.52135 0 +502e-9 1.52128 0 +503e-9 1.52121 0 +504e-9 1.52115 0 +505e-9 1.52109 0 +506e-9 1.52103 0 +507e-9 1.52096 0 +508e-9 1.5209 0 +509e-9 1.52084 0 +510e-9 1.52077 0 +511e-9 1.52071 0 +512e-9 1.52065 0 +513e-9 1.52058 0 +514e-9 1.52052 0 +515e-9 1.52046 0 +516e-9 1.5204 0 +517e-9 1.52033 0 +518e-9 1.52028 0 +519e-9 1.52022 0 +520e-9 1.52016 0 +521e-9 1.5201 0 +522e-9 1.52004 0 +523e-9 1.51998 0 +524e-9 1.51992 0 +525e-9 1.51987 0 +526e-9 1.51981 0 +527e-9 1.51975 0 +528e-9 1.5197 0 +529e-9 1.51964 0 +530e-9 1.51959 0 +531e-9 1.51953 0 +532e-9 1.51947 0 +533e-9 1.51942 0 +534e-9 1.51937 0 +535e-9 1.51931 0 +536e-9 1.51925 0 +537e-9 1.5192 0 +538e-9 1.51914 0 +539e-9 1.51909 0 +540e-9 1.51904 0 +541e-9 1.51898 0 +542e-9 1.51893 0 +543e-9 1.51888 0 +544e-9 1.51883 0 +545e-9 1.51878 0 +546e-9 1.51873 0 +547e-9 1.51867 0 +548e-9 1.51862 0 +549e-9 1.51857 0 +550e-9 1.51852 0 +551e-9 1.51848 0 +552e-9 1.51843 0 +553e-9 1.51837 0 +554e-9 1.51832 0 +555e-9 1.51827 0 +556e-9 1.51823 0 +557e-9 1.51818 0 +558e-9 1.51813 0 +559e-9 1.51808 0 +560e-9 1.51803 0 +561e-9 1.51798 0 +562e-9 1.51794 0 +563e-9 1.51789 0 +564e-9 1.51784 0 +565e-9 1.5178 0 +566e-9 1.51775 0 +567e-9 1.5177 0 +568e-9 1.51765 0 +569e-9 1.51761 0 +570e-9 1.51757 0 +571e-9 1.51752 0 +572e-9 1.51748 0 +573e-9 1.51743 0 +574e-9 1.51739 0 +575e-9 1.51735 0 +576e-9 1.5173 0 +577e-9 1.51726 0 +578e-9 1.51721 0 +579e-9 1.51717 0 +580e-9 1.51712 0 +581e-9 1.51708 0 +582e-9 1.51703 0 +583e-9 1.51699 0 +584e-9 1.51695 0 +585e-9 1.5169 0 +586e-9 1.51687 0 +587e-9 1.51682 0 +588e-9 1.51678 0 +589e-9 1.51675 0 +590e-9 1.5167 0 +591e-9 1.51666 0 +592e-9 1.51662 0 +593e-9 1.51658 0 +594e-9 1.51653 0 +595e-9 1.51649 0 +596e-9 1.51646 0 +597e-9 1.51641 0 +598e-9 1.51637 0 +599e-9 1.51634 0 +600e-9 1.5163 0 +601e-9 1.51625 0 +602e-9 1.51622 0 +603e-9 1.51618 0 +604e-9 1.51614 0 +605e-9 1.5161 0 +606e-9 1.51606 0 +607e-9 1.51602 0 +608e-9 1.51598 0 +609e-9 1.51595 0 +610e-9 1.51591 0 +611e-9 1.51587 0 +612e-9 1.51584 0 +613e-9 1.5158 0 +614e-9 1.51576 0 +615e-9 1.51573 0 +616e-9 1.51569 0 +617e-9 1.51565 0 +618e-9 1.51562 0 +619e-9 1.51558 0 +620e-9 1.51554 0 +621e-9 1.51551 0 +622e-9 1.51547 0 +623e-9 1.51543 0 +624e-9 1.51539 0 +625e-9 1.51536 0 +626e-9 1.51532 0 +627e-9 1.51529 0 +628e-9 1.51526 0 +629e-9 1.51522 0 +630e-9 1.51519 0 +631e-9 1.51516 0 +632e-9 1.51512 0 +633e-9 1.51508 0 +634e-9 1.51505 0 +635e-9 1.51502 0 +636e-9 1.51498 0 +637e-9 1.51494 0 +638e-9 1.51491 0 +639e-9 1.51488 0 +640e-9 1.51484 0 +641e-9 1.51481 0 +642e-9 1.51478 0 +643e-9 1.51474 0 +644e-9 1.51471 0 +645e-9 1.51468 0 +646e-9 1.51465 0 +647e-9 1.51462 0 +648e-9 1.51459 0 +649e-9 1.51456 0 +650e-9 1.51452 0 +651e-9 1.51449 0 +652e-9 1.51446 0 +653e-9 1.51443 0 +654e-9 1.5144 0 +655e-9 1.51436 0 +656e-9 1.51433 0 +657e-9 1.5143 0 +658e-9 1.51427 0 +659e-9 1.51424 0 +660e-9 1.51421 0 +661e-9 1.51417 0 +662e-9 1.51414 0 +663e-9 1.51411 0 +664e-9 1.51408 0 +665e-9 1.51405 0 +666e-9 1.51402 0 +667e-9 1.51399 0 +668e-9 1.51396 0 +669e-9 1.51394 0 +670e-9 1.51391 0 +671e-9 1.51388 0 +672e-9 1.51385 0 +673e-9 1.51382 0 +674e-9 1.51379 0 +675e-9 1.51376 0 +676e-9 1.51373 0 +677e-9 1.5137 0 +678e-9 1.51367 0 +679e-9 1.51364 0 +680e-9 1.51361 0 +681e-9 1.51359 0 +682e-9 1.51356 0 +683e-9 1.51353 0 +684e-9 1.5135 0 +685e-9 1.51347 0 +686e-9 1.51344 0 +687e-9 1.51341 0 +688e-9 1.51339 0 +689e-9 1.51336 0 +690e-9 1.51334 0 +691e-9 1.51331 0 +692e-9 1.51328 0 +693e-9 1.51325 0 +694e-9 1.51323 0 +695e-9 1.5132 0 +696e-9 1.51317 0 +697e-9 1.51315 0 +698e-9 1.51312 0 +699e-9 1.51309 0 +700e-9 1.51306 0 +701e-9 1.51303 0 +702e-9 1.51301 0 +703e-9 1.51298 0 +704e-9 1.51296 0 +705e-9 1.51293 0 +706e-9 1.5129 0 +707e-9 1.51288 0 +708e-9 1.51286 0 +709e-9 1.51284 0 +710e-9 1.51282 0 +711e-9 1.51279 0 +712e-9 1.51277 0 +713e-9 1.51275 0 +714e-9 1.51273 0 +715e-9 1.51271 0 +716e-9 1.51269 0 +717e-9 1.51267 0 +718e-9 1.51265 0 +719e-9 1.51262 0 +720e-9 1.5126 0 +721e-9 1.51258 0 +722e-9 1.51256 0 +723e-9 1.51254 0 +724e-9 1.51252 0 +725e-9 1.5125 0 +726e-9 1.51248 0 +727e-9 1.51245 0 +728e-9 1.51243 0 +729e-9 1.51241 0 +730e-9 1.51239 0 +731e-9 1.51237 0 +732e-9 1.51235 0 +733e-9 1.51233 0 +734e-9 1.51231 0 +735e-9 1.51229 0 +736e-9 1.51226 0 +737e-9 1.51224 0 +738e-9 1.51222 0 +739e-9 1.5122 0 +740e-9 1.51218 0 +741e-9 1.51216 0 +742e-9 1.51214 0 +743e-9 1.51212 0 +744e-9 1.51209 0 +745e-9 1.51207 0 +746e-9 1.51205 0 +747e-9 1.51203 0 +748e-9 1.51201 0 +749e-9 1.51199 0 +750e-9 1.51197 0 +751e-9 1.51195 0 +752e-9 1.51192 0 +753e-9 1.5119 0 +754e-9 1.51188 0 +755e-9 1.51186 0 +756e-9 1.51184 0 +757e-9 1.51182 0 +758e-9 1.5118 0 +759e-9 1.51178 0 +760e-9 1.51175 0 +761e-9 1.51173 0 +762e-9 1.51171 0 +763e-9 1.51169 0 +764e-9 1.51167 0 +765e-9 1.51165 0 +766e-9 1.51163 0 +767e-9 1.51161 0 +768e-9 1.51158 0 +769e-9 1.51156 0 +770e-9 1.51154 0 +771e-9 1.51152 0 +772e-9 1.5115 0 +773e-9 1.51148 0 +774e-9 1.51146 0 +775e-9 1.51144 0 +776e-9 1.51142 0 +777e-9 1.51139 0 +778e-9 1.51137 0 +779e-9 1.51135 0 +780e-9 1.51133 0 +781e-9 1.51131 0 +782e-9 1.51129 0 +783e-9 1.51127 0 +784e-9 1.51125 0 +785e-9 1.51122 0 +786e-9 1.5112 0 +787e-9 1.51118 0 +788e-9 1.51116 0 +789e-9 1.51114 0 +790e-9 1.51112 0 +791e-9 1.5111 0 +792e-9 1.51108 0 +793e-9 1.51105 0 +794e-9 1.51103 0 +795e-9 1.51101 0 +796e-9 1.51099 0 +797e-9 1.51097 0 +798e-9 1.51095 0 +799e-9 1.51093 0 +800e-9 1.51091 0 +801e-9 1.51088 0 +802e-9 1.51086 0 +803e-9 1.51084 0 +804e-9 1.51082 0 +805e-9 1.5108 0 +806e-9 1.51078 0 +807e-9 1.51076 0 +808e-9 1.51074 0 +809e-9 1.51071 0 +810e-9 1.51069 0 +811e-9 1.51067 0 +812e-9 1.51065 0 +813e-9 1.51063 0 +814e-9 1.51061 0 +815e-9 1.51059 0 +816e-9 1.51057 0 +817e-9 1.51054 0 +818e-9 1.51052 0 +819e-9 1.5105 0 +820e-9 1.51048 0 +821e-9 1.51046 0 +822e-9 1.51044 0 +823e-9 1.51042 0 +824e-9 1.5104 0 +825e-9 1.51038 0 +826e-9 1.51035 0 +827e-9 1.51033 0 +828e-9 1.51031 0 +829e-9 1.51029 0 +830e-9 1.51027 0 +831e-9 1.51025 0 +832e-9 1.51023 0 +833e-9 1.51021 0 +834e-9 1.51018 0 +835e-9 1.51016 0 +836e-9 1.51014 0 +837e-9 1.51012 0 +838e-9 1.5101 0 +839e-9 1.51008 0 +840e-9 1.51006 0 +841e-9 1.51004 0 +842e-9 1.51001 0 +843e-9 1.50999 0 +844e-9 1.50997 0 +845e-9 1.50995 0 +846e-9 1.50993 0 +847e-9 1.50991 0 +848e-9 1.50989 0 +849e-9 1.50987 0 +850e-9 1.50984 0 +851e-9 1.50982 0 +852e-9 1.5098 0 +853e-9 1.50979 0 +854e-9 1.50977 0 +855e-9 1.50976 0 +856e-9 1.50974 0 +857e-9 1.50972 0 +858e-9 1.50971 0 +859e-9 1.50969 0 +860e-9 1.50968 0 +861e-9 1.50966 0 +862e-9 1.50965 0 +863e-9 1.50963 0 +864e-9 1.50962 0 +865e-9 1.5096 0 +866e-9 1.50959 0 +867e-9 1.50957 0 +868e-9 1.50956 0 +869e-9 1.50954 0 +870e-9 1.50952 0 +871e-9 1.50951 0 +872e-9 1.50949 0 +873e-9 1.50948 0 +874e-9 1.50946 0 +875e-9 1.50945 0 +876e-9 1.50943 0 +877e-9 1.50942 0 +878e-9 1.5094 0 +879e-9 1.50939 0 +880e-9 1.50937 0 +881e-9 1.50936 0 +882e-9 1.50934 0 +883e-9 1.50932 0 +884e-9 1.50931 0 +885e-9 1.50929 0 +886e-9 1.50928 0 +887e-9 1.50926 0 +888e-9 1.50925 0 +889e-9 1.50923 0 +890e-9 1.50922 0 +891e-9 1.5092 0 +892e-9 1.50919 0 +893e-9 1.50917 0 +894e-9 1.50916 0 +895e-9 1.50914 0 +896e-9 1.50912 0 +897e-9 1.50911 0 +898e-9 1.50909 0 +899e-9 1.50908 0 +900e-9 1.50906 0 diff --git a/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_peroTripleCatMartin.txt b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_peroTripleCatMartin.txt new file mode 100644 index 0000000..dd81b7c --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/nk_peroTripleCatMartin.txt @@ -0,0 +1,552 @@ +lambda n k +300e-9 1.58878 0.87048 +301e-9 1.58909 0.87575 +302e-9 1.58575 0.88511 +303e-9 1.58309 0.89428 +304e-9 1.58111 0.90261 +305e-9 1.58134 0.90806 +306e-9 1.58224 0.91345 +307e-9 1.58403 0.91986 +308e-9 1.58727 0.92515 +309e-9 1.58785 0.93202 +310e-9 1.58674 0.94222 +311e-9 1.59048 0.94659 +312e-9 1.59818 0.948 +313e-9 1.60556 0.94895 +314e-9 1.60792 0.95726 +315e-9 1.60695 0.96838 +316e-9 1.60625 0.97991 +317e-9 1.61477 0.9831 +318e-9 1.62501 0.98438 +319e-9 1.63105 0.98951 +320e-9 1.62862 1.00388 +321e-9 1.62763 1.01916 +322e-9 1.63097 1.03039 +323e-9 1.63881 1.03473 +324e-9 1.64602 1.03986 +325e-9 1.65061 1.05068 +326e-9 1.65441 1.06151 +327e-9 1.66113 1.06903 +328e-9 1.66751 1.07663 +329e-9 1.67439 1.08545 +330e-9 1.68216 1.09305 +331e-9 1.68749 1.10112 +332e-9 1.70075 1.10217 +333e-9 1.71728 1.09954 +334e-9 1.72329 1.10782 +335e-9 1.72577 1.11998 +336e-9 1.73282 1.12854 +337e-9 1.74596 1.12942 +338e-9 1.76379 1.12469 +339e-9 1.78179 1.1188 +340e-9 1.7928 1.12276 +341e-9 1.79343 1.13696 +342e-9 1.79617 1.14927 +343e-9 1.80584 1.15385 +344e-9 1.81939 1.15268 +345e-9 1.84336 1.14125 +346e-9 1.85818 1.13897 +347e-9 1.86298 1.14699 +348e-9 1.8585 1.16942 +349e-9 1.86812 1.17323 +350e-9 1.88153 1.17266 +351e-9 1.89287 1.17242 +352e-9 1.91225 1.16472 +353e-9 1.92306 1.16584 +354e-9 1.92771 1.17546 +355e-9 1.93282 1.18264 +356e-9 1.94472 1.18184 +357e-9 1.95172 1.18487 +358e-9 1.96046 1.18816 +359e-9 1.97283 1.18581 +360e-9 1.98683 1.1806 +361e-9 1.99602 1.18519 +362e-9 2.00498 1.18663 +363e-9 2.01995 1.17862 +364e-9 2.0346 1.17421 +365e-9 2.04314 1.17332 +366e-9 2.04785 1.1789 +367e-9 2.05821 1.17712 +368e-9 2.06779 1.17655 +369e-9 2.07841 1.17076 +370e-9 2.09209 1.16587 +371e-9 2.11255 1.14803 +372e-9 2.12715 1.14092 +373e-9 2.1291 1.14491 +374e-9 2.13242 1.14896 +375e-9 2.13679 1.15265 +376e-9 2.14724 1.14831 +377e-9 2.16393 1.13608 +378e-9 2.17804 1.11902 +379e-9 2.19816 1.09986 +380e-9 2.20869 1.08884 +381e-9 2.21062 1.09334 +382e-9 2.21216 1.09973 +383e-9 2.21425 1.10144 +384e-9 2.2209 1.0967 +385e-9 2.23234 1.08621 +386e-9 2.24379 1.07868 +387e-9 2.25961 1.05456 +388e-9 2.27024 1.04229 +389e-9 2.27543 1.03803 +390e-9 2.27742 1.04108 +391e-9 2.27639 1.04506 +392e-9 2.27673 1.04795 +393e-9 2.28507 1.03721 +394e-9 2.2914 1.02499 +395e-9 2.30118 1.01172 +396e-9 2.30854 0.99717 +397e-9 2.31683 0.9832 +398e-9 2.32051 0.97947 +399e-9 2.31895 0.98074 +400e-9 2.31913 0.97833 +401e-9 2.3202 0.97529 +402e-9 2.32253 0.96862 +403e-9 2.32763 0.95779 +404e-9 2.32937 0.94934 +405e-9 2.33198 0.94146 +406e-9 2.33635 0.93176 +407e-9 2.33761 0.92574 +408e-9 2.33838 0.92091 +409e-9 2.33713 0.91872 +410e-9 2.33685 0.9144 +411e-9 2.33832 0.90783 +412e-9 2.33953 0.90299 +413e-9 2.3401 0.89767 +414e-9 2.34046 0.8927 +415e-9 2.34026 0.88686 +416e-9 2.34044 0.88081 +417e-9 2.34021 0.87674 +418e-9 2.3402 0.87343 +419e-9 2.34009 0.87023 +420e-9 2.33914 0.86684 +421e-9 2.33799 0.86315 +422e-9 2.33771 0.85998 +423e-9 2.33745 0.85725 +424e-9 2.33724 0.85393 +425e-9 2.33696 0.85115 +426e-9 2.33653 0.84833 +427e-9 2.33637 0.84566 +428e-9 2.33641 0.84278 +429e-9 2.33645 0.84068 +430e-9 2.33646 0.83903 +431e-9 2.33685 0.83767 +432e-9 2.33664 0.83578 +433e-9 2.337 0.83416 +434e-9 2.33735 0.83261 +435e-9 2.33706 0.83108 +436e-9 2.33683 0.82979 +437e-9 2.33682 0.82848 +438e-9 2.33686 0.82726 +439e-9 2.33664 0.82589 +440e-9 2.3367 0.82524 +441e-9 2.337 0.82513 +442e-9 2.33746 0.82512 +443e-9 2.33797 0.8246 +444e-9 2.33909 0.82447 +445e-9 2.34024 0.82442 +446e-9 2.34122 0.82487 +447e-9 2.34268 0.82513 +448e-9 2.34437 0.82524 +449e-9 2.34611 0.82513 +450e-9 2.34815 0.82495 +451e-9 2.35056 0.82513 +452e-9 2.35314 0.82526 +453e-9 2.35562 0.82514 +454e-9 2.35829 0.82497 +455e-9 2.36107 0.82485 +456e-9 2.36421 0.82488 +457e-9 2.36736 0.8251 +458e-9 2.37051 0.82515 +459e-9 2.3736 0.82512 +460e-9 2.37715 0.82466 +461e-9 2.38069 0.82446 +462e-9 2.38395 0.82493 +463e-9 2.38764 0.82485 +464e-9 2.39125 0.82431 +465e-9 2.39519 0.82345 +466e-9 2.39935 0.82248 +467e-9 2.40383 0.82177 +468e-9 2.40824 0.82074 +469e-9 2.41254 0.81953 +470e-9 2.41685 0.81813 +471e-9 2.42095 0.81654 +472e-9 2.42514 0.81526 +473e-9 2.42919 0.81372 +474e-9 2.43339 0.81166 +475e-9 2.43782 0.80912 +476e-9 2.44273 0.8066 +477e-9 2.44763 0.8042 +478e-9 2.4525 0.80182 +479e-9 2.45733 0.79933 +480e-9 2.46195 0.79675 +481e-9 2.46653 0.79352 +482e-9 2.47082 0.79053 +483e-9 2.47523 0.7882 +484e-9 2.47954 0.78496 +485e-9 2.4835 0.78184 +486e-9 2.48773 0.77842 +487e-9 2.49234 0.77501 +488e-9 2.49688 0.77145 +489e-9 2.50146 0.76785 +490e-9 2.50585 0.76437 +491e-9 2.51019 0.7606 +492e-9 2.51484 0.75624 +493e-9 2.51942 0.75235 +494e-9 2.52392 0.74863 +495e-9 2.52853 0.74442 +496e-9 2.53306 0.73985 +497e-9 2.53772 0.73506 +498e-9 2.54235 0.73004 +499e-9 2.54664 0.72499 +500e-9 2.551 0.72003 +501e-9 2.55474 0.71457 +502e-9 2.55818 0.70882 +503e-9 2.5615 0.70256 +504e-9 2.56449 0.69646 +505e-9 2.56723 0.69014 +506e-9 2.56987 0.68393 +507e-9 2.5726 0.67714 +508e-9 2.57481 0.67047 +509e-9 2.5766 0.66402 +510e-9 2.57822 0.65772 +511e-9 2.57972 0.65194 +512e-9 2.58078 0.64548 +513e-9 2.58154 0.63934 +514e-9 2.58208 0.63362 +515e-9 2.58269 0.62796 +516e-9 2.58309 0.62237 +517e-9 2.58362 0.6168 +518e-9 2.58432 0.61086 +519e-9 2.58468 0.60549 +520e-9 2.58483 0.60035 +521e-9 2.58524 0.59506 +522e-9 2.58537 0.59008 +523e-9 2.58543 0.58478 +524e-9 2.58545 0.57987 +525e-9 2.58536 0.57511 +526e-9 2.58526 0.56994 +527e-9 2.58502 0.5649 +528e-9 2.58497 0.55989 +529e-9 2.58485 0.5549 +530e-9 2.58455 0.55009 +531e-9 2.58401 0.5452 +532e-9 2.58341 0.54041 +533e-9 2.58247 0.53617 +534e-9 2.58148 0.53194 +535e-9 2.58061 0.52797 +536e-9 2.57946 0.52347 +537e-9 2.57846 0.51896 +538e-9 2.57757 0.51472 +539e-9 2.57656 0.51049 +540e-9 2.57528 0.50624 +541e-9 2.57396 0.50195 +542e-9 2.57234 0.49794 +543e-9 2.57058 0.49432 +544e-9 2.56898 0.4909 +545e-9 2.56725 0.48743 +546e-9 2.56561 0.48413 +547e-9 2.56368 0.4808 +548e-9 2.56208 0.47789 +549e-9 2.56047 0.47476 +550e-9 2.55853 0.47171 +551e-9 2.55659 0.46892 +552e-9 2.55483 0.4659 +553e-9 2.55283 0.46311 +554e-9 2.55099 0.46061 +555e-9 2.54915 0.45843 +556e-9 2.54743 0.45631 +557e-9 2.54552 0.45427 +558e-9 2.54348 0.45238 +559e-9 2.54163 0.4511 +560e-9 2.53987 0.44941 +561e-9 2.53807 0.4482 +562e-9 2.53648 0.44689 +563e-9 2.53518 0.4456 +564e-9 2.53396 0.44443 +565e-9 2.53292 0.44311 +566e-9 2.53193 0.44158 +567e-9 2.53103 0.44034 +568e-9 2.53012 0.439 +569e-9 2.52937 0.43802 +570e-9 2.52868 0.43716 +571e-9 2.52822 0.43638 +572e-9 2.52766 0.43499 +573e-9 2.52742 0.43395 +574e-9 2.52747 0.4331 +575e-9 2.52751 0.43222 +576e-9 2.52757 0.43057 +577e-9 2.52758 0.42905 +578e-9 2.5276 0.42794 +579e-9 2.52787 0.42657 +580e-9 2.52803 0.42513 +581e-9 2.5282 0.42363 +582e-9 2.52855 0.42213 +583e-9 2.52888 0.42077 +584e-9 2.52923 0.41903 +585e-9 2.52987 0.41758 +586e-9 2.53046 0.41586 +587e-9 2.53131 0.4139 +588e-9 2.53202 0.41191 +589e-9 2.53276 0.4098 +590e-9 2.53355 0.40739 +591e-9 2.53438 0.40534 +592e-9 2.5352 0.4035 +593e-9 2.53581 0.40131 +594e-9 2.53636 0.39928 +595e-9 2.53681 0.39679 +596e-9 2.53743 0.39409 +597e-9 2.53797 0.39151 +598e-9 2.53837 0.38866 +599e-9 2.53871 0.38623 +600e-9 2.53902 0.38338 +601e-9 2.53946 0.38078 +602e-9 2.53991 0.37829 +603e-9 2.54017 0.37512 +604e-9 2.54032 0.37235 +605e-9 2.54042 0.36976 +606e-9 2.54056 0.36731 +607e-9 2.5406 0.36425 +608e-9 2.54057 0.36086 +609e-9 2.54047 0.35847 +610e-9 2.54016 0.35559 +611e-9 2.53976 0.35302 +612e-9 2.53941 0.35018 +613e-9 2.53894 0.3474 +614e-9 2.53853 0.3449 +615e-9 2.53805 0.34247 +616e-9 2.53759 0.33987 +617e-9 2.53723 0.33742 +618e-9 2.53699 0.33523 +619e-9 2.53658 0.33267 +620e-9 2.53607 0.33059 +621e-9 2.53543 0.32829 +622e-9 2.53465 0.32554 +623e-9 2.5339 0.32318 +624e-9 2.53298 0.32079 +625e-9 2.53215 0.31861 +626e-9 2.53113 0.31634 +627e-9 2.53014 0.31425 +628e-9 2.52926 0.31253 +629e-9 2.5284 0.31027 +630e-9 2.5273 0.30794 +631e-9 2.52637 0.30625 +632e-9 2.5253 0.3036 +633e-9 2.52431 0.3023 +634e-9 2.5234 0.30095 +635e-9 2.52234 0.29914 +636e-9 2.5212 0.29754 +637e-9 2.52006 0.29603 +638e-9 2.51887 0.2942 +639e-9 2.51783 0.29321 +640e-9 2.51683 0.29175 +641e-9 2.51591 0.29078 +642e-9 2.51486 0.28886 +643e-9 2.51392 0.28749 +644e-9 2.51295 0.28595 +645e-9 2.51185 0.28429 +646e-9 2.51081 0.28327 +647e-9 2.50987 0.28244 +648e-9 2.50883 0.28193 +649e-9 2.50755 0.28053 +650e-9 2.50644 0.27923 +651e-9 2.50541 0.27862 +652e-9 2.50394 0.27709 +653e-9 2.50237 0.27592 +654e-9 2.5008 0.2752 +655e-9 2.49937 0.27465 +656e-9 2.49803 0.27431 +657e-9 2.49716 0.27385 +658e-9 2.49621 0.27303 +659e-9 2.49503 0.27107 +660e-9 2.49428 0.2697 +661e-9 2.49368 0.26934 +662e-9 2.49268 0.26847 +663e-9 2.49128 0.26745 +664e-9 2.48946 0.26714 +665e-9 2.48798 0.26634 +666e-9 2.48677 0.2658 +667e-9 2.48536 0.26481 +668e-9 2.48441 0.26469 +669e-9 2.48296 0.26556 +670e-9 2.48155 0.26514 +671e-9 2.48044 0.26408 +672e-9 2.47946 0.26285 +673e-9 2.47832 0.26241 +674e-9 2.47666 0.26167 +675e-9 2.47487 0.26096 +676e-9 2.47387 0.26053 +677e-9 2.47251 0.26 +678e-9 2.47025 0.25992 +679e-9 2.46865 0.25935 +680e-9 2.46606 0.25868 +681e-9 2.46355 0.25823 +682e-9 2.46244 0.25786 +683e-9 2.4623 0.25751 +684e-9 2.46265 0.25683 +685e-9 2.46272 0.25538 +686e-9 2.46368 0.25415 +687e-9 2.46438 0.25339 +688e-9 2.464 0.25286 +689e-9 2.46259 0.25286 +690e-9 2.46245 0.25238 +691e-9 2.46284 0.2522 +692e-9 2.46392 0.25079 +693e-9 2.46496 0.24954 +694e-9 2.46554 0.24966 +695e-9 2.46571 0.24954 +696e-9 2.46554 0.24876 +697e-9 2.46496 0.24742 +698e-9 2.46448 0.24758 +699e-9 2.46383 0.24766 +700e-9 2.46293 0.24666 +701e-9 2.46215 0.24619 +702e-9 2.46138 0.24582 +703e-9 2.46068 0.24572 +704e-9 2.46008 0.24534 +705e-9 2.45912 0.24431 +706e-9 2.45836 0.24365 +707e-9 2.45795 0.24355 +708e-9 2.45769 0.24402 +709e-9 2.45678 0.24293 +710e-9 2.45598 0.24262 +711e-9 2.45523 0.24266 +712e-9 2.45461 0.24157 +713e-9 2.4542 0.24133 +714e-9 2.45383 0.24104 +715e-9 2.45334 0.23981 +716e-9 2.45263 0.23945 +717e-9 2.4525 0.23932 +718e-9 2.45265 0.23901 +719e-9 2.45275 0.23928 +720e-9 2.45334 0.23839 +721e-9 2.45426 0.23701 +722e-9 2.45535 0.23671 +723e-9 2.45678 0.23672 +724e-9 2.45826 0.23631 +725e-9 2.45981 0.23483 +726e-9 2.46137 0.23269 +727e-9 2.46287 0.23187 +728e-9 2.46451 0.23145 +729e-9 2.46623 0.23088 +730e-9 2.46818 0.22916 +731e-9 2.471 0.22721 +732e-9 2.47409 0.22477 +733e-9 2.47744 0.22228 +734e-9 2.48106 0.22056 +735e-9 2.48514 0.21763 +736e-9 2.4896 0.21329 +737e-9 2.49402 0.20889 +738e-9 2.49841 0.20421 +739e-9 2.50264 0.20006 +740e-9 2.50696 0.19515 +741e-9 2.51118 0.18993 +742e-9 2.51532 0.18491 +743e-9 2.51899 0.17834 +744e-9 2.52207 0.17173 +745e-9 2.52464 0.16487 +746e-9 2.52654 0.15756 +747e-9 2.52774 0.14966 +748e-9 2.52814 0.14149 +749e-9 2.52775 0.13302 +750e-9 2.52647 0.12546 +751e-9 2.52452 0.11794 +752e-9 2.52198 0.11041 +753e-9 2.51863 0.10292 +754e-9 2.51458 0.09551 +755e-9 2.51001 0.08823 +756e-9 2.5052 0.08114 +757e-9 2.50009 0.07427 +758e-9 2.4946 0.06767 +759e-9 2.48874 0.06137 +760e-9 2.48271 0.05544 +761e-9 2.4765 0.04987 +762e-9 2.47023 0.04465 +763e-9 2.46387 0.03986 +764e-9 2.45713 0.03547 +765e-9 2.45011 0.03144 +766e-9 2.44315 0.02778 +767e-9 2.43643 0.02451 +768e-9 2.42993 0.02157 +769e-9 2.42354 0.01893 +770e-9 2.41709 0.01659 +771e-9 2.41086 0.01452 +772e-9 2.40475 0.01269 +773e-9 2.39887 0.01106 +774e-9 2.39297 0.00966 +775e-9 2.38702 0.00842 +776e-9 2.38124 0.00732 +777e-9 2.37555 0.00637 +778e-9 2.36996 0.00555 +779e-9 2.3645 0.00482 +780e-9 2.35924 0.00419 +781e-9 2.35418 0.00364 +782e-9 2.3491 0.00317 +783e-9 2.34439 0.00275 +784e-9 2.33963 0.00239 +785e-9 2.3348 0.00208 +786e-9 2.3301 0.00181 +787e-9 2.32557 0.00157 +788e-9 2.32089 0.00137 +789e-9 2.31687 0.00119 +790e-9 2.3127 0.00104 +791e-9 2.30877 0.000900504 +792e-9 2.30443 0.000784796 +793e-9 2.30001 0.000683508 +794e-9 2.29605 0.00059488 +795e-9 2.29238 0.000518266 +796e-9 2.28828 0.00045197 +797e-9 2.28449 0.000393905 +798e-9 2.28059 0.000343078 +799e-9 2.27658 0.000299596 +800e-9 2.27236 0.000261472 +801e-9 2.26852 0.000228058 +802e-9 2.26536 0.000199107 +803e-9 2.2615 0.000174014 +804e-9 2.25785 0.000151996 +805e-9 2.25506 0.00013268 +806e-9 2.25086 0.000116118 +807e-9 2.24703 0.00010157 +808e-9 2.24291 8.87934e-05 +809e-9 2.23861 7.76947e-05 +810e-9 2.23469 6.80566e-05 +811e-9 2.23073 5.95813e-05 +812e-9 2.22653 5.21306e-05 +813e-9 2.22293 4.57241e-05 +814e-9 2.21863 4.00866e-05 +815e-9 2.21402 3.51246e-05 +816e-9 2.20973 3.08031e-05 +817e-9 2.20522 2.70427e-05 +818e-9 2.20087 2.3729e-05 +819e-9 2.19638 2.08096e-05 +820e-9 2.19193 1.82921e-05 +821e-9 2.18736 1.60728e-05 +822e-9 2.18305 1.41153e-05 +823e-9 2.17874 1.2406e-05 +824e-9 2.17424 1.09156e-05 +825e-9 2.16991 9.60109e-06 +826e-9 2.16576 8.44202e-06 +827e-9 2.1617 7.43453e-06 +828e-9 2.15729 6.54819e-06 +829e-9 2.15302 5.76336e-06 +830e-9 2.14847 5.07782e-06 +831e-9 2.14412 4.47282e-06 +832e-9 2.13988 3.94113e-06 +833e-9 2.13553 3.47618e-06 +834e-9 2.13107 3.06244e-06 +835e-9 2.12649 2.70539e-06 +836e-9 2.12201 2.38609e-06 +837e-9 2.11778 2.11138e-06 +838e-9 2.11332 1.86142e-06 +839e-9 2.10871 1.6432e-06 +840e-9 2.10418 1.44695e-06 +841e-9 2.1002 1.28197e-06 +842e-9 2.09584 1.13286e-06 +843e-9 2.09166 1.00324e-06 +844e-9 2.08762 8.87825e-07 +845e-9 2.08374 7.85688e-07 +846e-9 2.0801 6.95462e-07 +847e-9 2.0765 6.15654e-07 +848e-9 2.07308 5.45447e-07 +849e-9 2.06988 4.83432e-07 +850e-9 2.06692 4.27766e-07 diff --git a/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/simulation_setup_niptco_FTO_passivated.txt b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/simulation_setup_niptco_FTO_passivated.txt new file mode 100644 index 0000000..8c50aae --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/simulation_setup_niptco_FTO_passivated.txt @@ -0,0 +1,84 @@ +** SimSS Simulation Setup: +** Don't change the order of the parameters, comments can be added anywhere, +** but only after an '*'. Use '**' if you want your comment to be left-justified. +** version: 5.30 +** STACK 2 (n-i-p, passivated): glass / FTO / SnO2 / perovskite / passivation / Spiro-OMeTAD / Au + +**General*************************************************************************** +T = 295 * K, absolute temperature + +**Layers**************************************************************************** +l1 = SnO2.txt * parameter file for layer 1, mandatory (ETL, TCO/cathode side) +l2 = Perovskite.txt * parameter file for layer 2 (absorber) +l3 = SpiroOMeTAD.txt * parameter file for layer 3 (HTL, back-electrode/anode side) + +**Contacts************************************************************************** +leftElec = -1 * left electrode is the cathode (-1) or the anode (1) -- n-i-p: TCO/ETL side is cathode +W_L = 4.0 * eV, work function left electrode, or 'sfb' -- matches SnO2 electron affinity (ohmic) +W_R = 5.1 * eV, work function right electrode -- Au anode +S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode +S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode +S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode +S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode + * nb: use negative values if Sn/pR/L should be infinite +R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt -- fit per device +R_series = 0 * Ohms m2, series resistance. -- fit per device + +**Optics**************************************************************************** +G_frac = 1 * fraction of Gmax used in solar cell +genProfile = none * electrical-only JV fit (as in JV_realPerovskite.ipynb): set l2.G_ehp from measured Jsc instead of full optics +L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used +L_BE = 1E-7 * m, thickness of back electrode, must be >0 +nkSubstrate = nk_glass.txt * name of file with n,k values of substrate +nkTCO = nk_ITO.txt * PLACEHOLDER for FTO (no measured FTO nk shipped) -- unused while genProfile=none; replace if genProfile=calc +nkBE = nk_Au.txt * name of file with n,k values of back electrode +spectrum = ../Data/AM15G.txt * name of file that contains the spectrum +lambda_min = 3.5E-7 * m, lower bound wavelength +lambda_max = 8E-7 * m, upper bound wavelength + +**Numerical Parameters************************************************************** +NP = 250 * integer, number of grid points, must be at least 5 per layer. +tolPois = 0.00001 * V, abs. tolerance of iterative Poisson solver +maxDelV = 10 * maximum change (in Vt) of the potential per loop +maxItPois = 1000 * max. number it. Poisson loop +maxItSS = 1000 * max. number it. main loop +currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression +tolCurr = 1E-3 * relative tolerance on current density +tolDens = 1E-3 * relative tolerance of density solver +couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations +minAcc = 0.05 * >0, min. acceleration parameter +maxAcc = 0.95 * <2, max. acceleration parameter +ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities +convVar = 4 * integer 1-4, selects which variable to monitor for convergence + * 1: densities, 2: current, 3: densities OR current, 4: densities AND current +failureMode = 2 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip +grad = 4 * determines shape of exp. grid, increase grad for smaller h[1] + +**Voltage range of simulation******************************************************* +Vdist = 1 * 1 for uniform (specified by Vstep), 2 for logarithmic (specified by Vacc and NJV) +preCond = 0 * pre-conditioning, yes(1)/no(0) +Vpre = 0 * V, pre-conditioned voltage +fixIons = 0 * fix ions at first applied voltage? yes(1) or no (0). +Vscan = 1 * integer, 1 for forward sweep direction, -1 for reverse sweep +Vmin = -0.05 * V -- adjust to match your measured JV sweep range +Vmax = 1.3 * V +Vstep = 0.01 * V +Vacc = 0 * V, point of accumulation of row of V's, note: Vacc should be + * slightly larger than Vmax or slightly lower than Vmin +NJV = 100 * number of JV points in logarithmic distribution +untilVoc = 0 * if 1 then SimSS will stop at Voc + +**User interface******************************************************************** +timeout = 300 * s, max run time, use negative value for unlimited run time. +pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) +autoTidy = 1 * if 1, then the program will always tidy up this file +useExpData = 0 * if 1, SimSS will try to read JV_Exp and use it +expJV = expJV.csv * name of file with experimental JV characteristics +fitMode = lin * lin or log: use J or log(J) in calc. of fit error +fitThreshold = 0.8 * threshold of fraction converged points in calc. fit error +JVFile = JV.dat * name of the file with simulated JV characteristics +varFile = none * name of the file with (x,V,n,p,Jn,etc) or none for no file. +limitDigits = 1 * if 1, then number of digits in output is limited +outputRatio = 0 * Output to varFile every outputRatio voltages +scParsFile = scPars.dat * name of file with solar cell parameters +logFile = log.txt * name of log file diff --git a/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/simulation_setup_niptco_ITO.txt b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/simulation_setup_niptco_ITO.txt new file mode 100644 index 0000000..f56b72a --- /dev/null +++ b/Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/simulation_setup_niptco_ITO.txt @@ -0,0 +1,84 @@ +** SimSS Simulation Setup: +** Don't change the order of the parameters, comments can be added anywhere, +** but only after an '*'. Use '**' if you want your comment to be left-justified. +** version: 5.30 +** STACK 1 (n-i-p): glass / ITO / SnO2 / perovskite / Spiro-OMeTAD / Au + +**General*************************************************************************** +T = 295 * K, absolute temperature + +**Layers**************************************************************************** +l1 = SnO2.txt * parameter file for layer 1, mandatory (ETL, TCO/cathode side) +l2 = Perovskite.txt * parameter file for layer 2 (absorber) +l3 = SpiroOMeTAD.txt * parameter file for layer 3 (HTL, back-electrode/anode side) + +**Contacts************************************************************************** +leftElec = -1 * left electrode is the cathode (-1) or the anode (1) -- n-i-p: TCO/ETL side is cathode +W_L = 4.0 * eV, work function left electrode, or 'sfb' -- matches SnO2 electron affinity (ohmic) +W_R = 5.1 * eV, work function right electrode -- Au anode +S_n_L = -1E-7 * m/s, surface recombination of electrons at the left electrode +S_p_L = -1E-7 * m/s, surface recombination of holes at the left electrode +S_n_R = -1E-7 * m/s, surface recombination of electrons at the right electrode +S_p_R = -1E-7 * m/s, surface recombination of holes at the right electrode + * nb: use negative values if Sn/pR/L should be infinite +R_shunt = -1 * Ohms m2, shunt resistance. Use negative value for infinite R_shunt -- fit per device +R_series = 0 * Ohms m2, series resistance. -- fit per device + +**Optics**************************************************************************** +G_frac = 1 * fraction of Gmax used in solar cell +genProfile = none * electrical-only JV fit (as in JV_realPerovskite.ipynb): set l2.G_ehp from measured Jsc instead of full optics +L_TCO = 1.1E-7 * m, thickness of the TCO. Set to 0 if layer is not used +L_BE = 1E-7 * m, thickness of back electrode, must be >0 +nkSubstrate = nk_glass.txt * name of file with n,k values of substrate +nkTCO = nk_ITO.txt * name of file with n,k values of TCO +nkBE = nk_Au.txt * name of file with n,k values of back electrode +spectrum = ../Data/AM15G.txt * name of file that contains the spectrum +lambda_min = 3.5E-7 * m, lower bound wavelength +lambda_max = 8E-7 * m, upper bound wavelength + +**Numerical Parameters************************************************************** +NP = 250 * integer, number of grid points, must be at least 5 per layer. +tolPois = 0.00001 * V, abs. tolerance of iterative Poisson solver +maxDelV = 10 * maximum change (in Vt) of the potential per loop +maxItPois = 1000 * max. number it. Poisson loop +maxItSS = 1000 * max. number it. main loop +currDiffInt = 2 * Calc. current from differential (1) or integral (2) expression +tolCurr = 1E-3 * relative tolerance on current density +tolDens = 1E-3 * relative tolerance of density solver +couplePC = 4 * >= 0, coupling between Poisson equation and continuity equations +minAcc = 0.05 * >0, min. acceleration parameter +maxAcc = 0.95 * <2, max. acceleration parameter +ignoreNegDens = 1 * whether(1) or not(<>1) to ignore negative densities +convVar = 4 * integer 1-4, selects which variable to monitor for convergence + * 1: densities, 2: current, 3: densities OR current, 4: densities AND current +failureMode = 2 * how treat failed (t,V,G) points: 0: stop, 1: ignore, 2: skip +grad = 4 * determines shape of exp. grid, increase grad for smaller h[1] + +**Voltage range of simulation******************************************************* +Vdist = 1 * 1 for uniform (specified by Vstep), 2 for logarithmic (specified by Vacc and NJV) +preCond = 0 * pre-conditioning, yes(1)/no(0) +Vpre = 0 * V, pre-conditioned voltage +fixIons = 0 * fix ions at first applied voltage? yes(1) or no (0). +Vscan = 1 * integer, 1 for forward sweep direction, -1 for reverse sweep +Vmin = -0.05 * V -- adjust to match your measured JV sweep range +Vmax = 1.3 * V +Vstep = 0.01 * V +Vacc = 0 * V, point of accumulation of row of V's, note: Vacc should be + * slightly larger than Vmax or slightly lower than Vmin +NJV = 100 * number of JV points in logarithmic distribution +untilVoc = 0 * if 1 then SimSS will stop at Voc + +**User interface******************************************************************** +timeout = 300 * s, max run time, use negative value for unlimited run time. +pauseAtEnd = 0 * pause at the end of the simulation yes(1) or no (0) +autoTidy = 1 * if 1, then the program will always tidy up this file +useExpData = 0 * if 1, SimSS will try to read JV_Exp and use it +expJV = expJV.csv * name of file with experimental JV characteristics +fitMode = lin * lin or log: use J or log(J) in calc. of fit error +fitThreshold = 0.8 * threshold of fraction converged points in calc. fit error +JVFile = JV.dat * name of the file with simulated JV characteristics +varFile = none * name of the file with (x,V,n,p,Jn,etc) or none for no file. +limitDigits = 1 * if 1, then number of digits in output is limited +outputRatio = 0 * Output to varFile every outputRatio voltages +scParsFile = scPars.dat * name of file with solar cell parameters +logFile = log.txt * name of log file diff --git a/Data/simsalabim_test_inputs/README_combinatorial_TCO_ETL_HTL_SAM.md b/Data/simsalabim_test_inputs/README_combinatorial_TCO_ETL_HTL_SAM.md new file mode 100644 index 0000000..4e4a6b7 --- /dev/null +++ b/Data/simsalabim_test_inputs/README_combinatorial_TCO_ETL_HTL_SAM.md @@ -0,0 +1,24 @@ +# Combinatorial-sputtering device stacks + +Two `optimpv` DDfits-ready device stacks, matching the three architectures in use: + +- **`CombinatorialTCO_ETL_HTL/`** -- n-i-p architecture, covers: + - Stack 1: `glass / ITO / SnO2 / perovskite / Spiro-OMeTAD / Au` -> use `simulation_setup_niptco_ITO.txt` + - Stack 2: `glass / FTO / SnO2 / perovskite / passivation / Spiro-OMeTAD / Au` -> use `simulation_setup_niptco_FTO_passivated.txt` + - Both point at the same three layer files (`SnO2.txt` = l1/ETL, `Perovskite.txt` = l2, `SpiroOMeTAD.txt` = l3/HTL). They differ only in `nkTCO` (ITO vs. FTO placeholder) and are meant to differ in `l2.N_t_int` (perovskite/HTL interface trap density) to represent the passivation treatment in stack 2 -- treat `l2.N_t_int` as a `FitParam` you optimize/fit per device rather than two hard-coded values. + +- **`CombinatorialSAM_ETL/`** -- p-i-n (inverted) architecture, covers: + - Stack 3: `glass / FTO / SAMs / perovskite / passivation / C60 / BCP / Ag` -> use `simulation_setup_pinsam_FTO.txt` + - Layer files: `Perovskite.txt` = l1 (absorber, SAM/FTO side), `C60.txt` = l2 (ETL, reused verbatim from `fakePerovskite/C60.txt`), `BCP.txt` = l3 (hole-blocking buffer). + - **The SAM is not modeled as its own bulk layer.** At <2 nm it is a molecular monolayer, not a transport medium with a meaningful mobility/DOS -- the literature convention (and what SIMsalabim supports directly) is to represent it as a contact work-function / injection-barrier modifier: `W_L` in the simulation setup plus the composite `offset_W_L.E_v` `FitParam` (see `SIMsalabimAgent.py`'s `offset_W_*` handling). If you want an explicit ultrathin SAM layer instead, add it the same way `SnO2.txt`/`SpiroOMeTAD.txt` are wired into the n-i-p stack, at your own numerical-stability risk (sub-nm layers can be hard for the mesh). + - Passivation (perovskite/C60 interface) is represented the same way as stack 2: `l1.N_t_int` in `Perovskite.txt`. + +## Provenance of the starting parameter values + +All numeric values in the new layer files (`SnO2.txt`, `SpiroOMeTAD.txt`, `BCP.txt`, `Perovskite.txt`) are **typical literature starting points** for these very commonly studied PV materials (SnO2/Spiro-OMeTAD/BCP/triple-cation perovskite), not measurements of your specific sputtered films. They exist so Stage 1 (DDfits) has a reasonable prior to start optimizing from -- the entire point of the fitting loop is that `axBOtorchOptimizer`/`scipyOpti` calibrates the process-sensitive parameters (mobility, doping, bulk/interface trap density, thickness) against each of your actual combinatorial-sputtering devices' measured J-V. Do not treat these numbers as ground truth. + +Parameters flagged in-file as "process-sensitive" or "KEY process-sensitive parameter" (mainly `l1.mu_n`, `l1.N_D`, `l1.N_t_bulk`, `l1.N_t_int` for the SnO2 ETL; `L`/thickness on any layer) are the ones most likely to actually respond to your RF power / pressure / O2:Ar / deposition-time knobs -- those are the natural `FitParam(type='range', ...)` candidates in the Stage 1 fitting script, with everything else left `type='fixed'` unless a given fit is poorly constrained. + +## Missing optical (n,k) data + +No measured n,k files exist in this repo for FTO or SnO2, so both use `nk_ITO.txt` as a placeholder (flagged inline as `PLACEHOLDER` in each file). This is harmless for the electrical-only J-V fitting workflow used here (`genProfile = none`, matching `Notebooks/Drift_Diffusion/JV_realPerovskite.ipynb`'s approach of calibrating `G_ehp` directly from measured Jsc instead of a full optical generation profile). If you later want full optical/transfer-matrix modeling (`genProfile = calc`), supply real FTO and SnO2 n,k data first. diff --git a/docs/combinatorial_TCO_ML_workflow.md b/docs/combinatorial_TCO_ML_workflow.md new file mode 100644 index 0000000..2bf2f2f --- /dev/null +++ b/docs/combinatorial_TCO_ML_workflow.md @@ -0,0 +1,93 @@ +# Combinatorial sputtering -> device physics -> ML: end-to-end workflow + +This documents the 3-stage pipeline added for correlating combinatorially-sputtered +TCO/ETL/HTL conditions with device performance, understanding *why* a given condition +performs the way it does (drift-diffusion fitting), and predicting the best conditions +or layer thicknesses (ML surrogate + BO search). It targets the three device stacks: + +1. `glass / ITO / SnO2 / perovskite / Spiro-OMeTAD / Au` (n-i-p) +2. `glass / FTO / SnO2 / perovskite / passivation / Spiro-OMeTAD / Au` (n-i-p, passivated) +3. `glass / FTO / SAMs / perovskite / passivation / C60 / BCP / Ag` (p-i-n, inverted) + +See `Data/simsalabim_test_inputs/README_combinatorial_TCO_ETL_HTL_SAM.md` for the +layer parameter files, their provenance, and modeling choices (in particular: SAM is +represented as a contact work-function/injection-barrier tuning, not a bulk layer). + +## Stage 1 -- physical understanding (drift-diffusion fitting per device) + +`scripts/fit_combinatorial_devices.py` loops over every device in your combinatorial +run, loads its raw J-V curve, builds the matching stack's `JVAgent`, and fits the +process-sensitive physical parameters (ETL/HTL/buffer mobility, doping, bulk/interface +trap density, thickness, series/shunt resistance) against the measured curve using +either a fast local fit (`--method scipy`) or Bayesian optimization with TuRBO +(`--method bo`, slower, more robust to local minima -- prefer this for a subset of +devices that don't fit well with scipy). + +Input: a conditions log CSV (one row per device, with a J-V filename column and a +stack-type column) plus a directory of raw J-V curve files. Output: one CSV row per +device with process conditions + fitted physical parameters + measured/fitted +Voc/Jsc/FF/PCE. This is the answer to "what is the TCO/ETL layer's physical role" -- +e.g. plot fitted `l1.mu_n` or `l1.N_t_bulk` against `o2_ar_ratio` to see whether more +oxygen improves or degrades electron transport in your sputtered SnO2. + +## Stage 2 -- correlate process conditions with physics and performance + +`optimpv.ml.ProcessCorrelationModel` fits a Random Forest / Gradient Boosting / GP +regressor from process conditions to the Stage 1 fitted parameters and/or measured +performance, and exposes: + +- `.cross_val_r2()` -- sanity-check the fit before trusting anything downstream +- `.feature_importance()` / `.plot_feature_importance()` -- ranked answer to "which + process knob controls which physical parameter or performance metric" +- `.plot_partial_dependence(feature, target)` -- the shape of that relationship + (monotonic? has an optimum? saturates?) + +```python +from optimpv.ml import ProcessCorrelationModel +model = ProcessCorrelationModel(model='rf').fit( + stage1_df, + feature_cols=['rf_power_W', 'pressure_mTorr', 'o2_ar_ratio', 'thickness_nm'], + target_cols=['l1.mu_n', 'l1.N_t_bulk', 'PCE'], +) +model.plot_feature_importance() +``` + +## Stage 3 -- predict/search for the best conditions or thickness + +`scripts/optimize_process_conditions.py` trains a Stage 2 model on your Stage 1 table, +wraps it as `optimpv.ml.MLSurrogateAgent`, and runs `axBOtorchOptimizer` over the +process-condition space to find the conditions predicted to maximize PCE (or whichever +target(s) you choose). Because each "evaluation" is an instant regressor call, this +converges in seconds -- treat the output as a ranked shortlist of conditions to +actually run next (active learning: suggest -> sputter -> measure -> re-fit -> re-run +Stage 1-3), not a guaranteed optimum. It is only as trustworthy as Stage 1/2's data +coverage; the script prints cross-validated R^2 and warns if it's too low to trust the +search. + +## What's genuinely new here vs. what already existed + +- Device stack files (`Data/simsalabim_test_inputs/CombinatorialTCO_ETL_HTL/`, + `CombinatorialSAM_ETL/`): new, built on the existing DDfits/SIMsalabim conventions + (same format as `fakePerovskite`/`JVrealPerovskite`). +- `optimpv/general/combinatorial_data.py`: new data-loading/merging utility. +- `optimpv/ml/` (`ProcessCorrelationModel`, `MLSurrogateAgent`): new -- this is the + actual "add ML beyond Bayesian optimization" piece. Everything else in `optimpv` + (Ax/BoTorch GP surrogates, emcee/UltraNest Bayesian inference) stays untouched; + `MLSurrogateAgent` simply lets a classical ML regressor plug into the same + `axBOtorchOptimizer` machinery that `JVAgent`/`DiodeAgent` already use. +- `scripts/fit_combinatorial_devices.py`, `scripts/optimize_process_conditions.py`: + new orchestration scripts tying Stage 1/2/3 together. + +## Known limitations / what still needs your input + +- The layer parameter starting values are literature priors, not measurements of your + films -- Stage 1 fitting is what calibrates them to your actual devices. +- No SIMsalabim binary or Ax/BoTorch/PyTorch were available in the environment this + was built in, so Stage 1 (`fit_combinatorial_devices.py`) and the BO portion of + Stage 3 (`optimize_process_conditions.py`) could not be run end-to-end here. The + data-loading (`combinatorial_data.py`) and ML modules (`optimpv/ml/`) were verified + against synthetic data. Run Stage 1 on a handful of real devices first and sanity + check the fitted curves/parameters before scaling to the full combinatorial set. +- FTO and SnO2 optical (n,k) data are not shipped (ITO is reused as a placeholder, + flagged inline) -- irrelevant for the electrical-only J-V fitting workflow used + here (`genProfile = none`), but needed if you switch to full optical modeling. diff --git a/optimpv/general/combinatorial_data.py b/optimpv/general/combinatorial_data.py new file mode 100644 index 0000000..395994b --- /dev/null +++ b/optimpv/general/combinatorial_data.py @@ -0,0 +1,182 @@ +"""Helpers for combinatorial-sputtering datasets: loading a conditions log plus a +directory of raw per-device J-V curve files, computing solar cell figures of merit +(Voc, Jsc, FF, PCE) from a raw curve, and merging everything into one table that +Stage 1 (DDfits fitting) and Stage 2 (process-correlation ML) can consume. +""" +######### Package Imports ######################################################################### + +import os +import numpy as np +import pandas as pd + +######### Function Definitions ##################################################################### + + +def load_conditions_log(path, **read_csv_kwargs): + """Load a combinatorial-sputtering conditions log (one row per device/condition). + + Parameters + ---------- + path : str + Path to the conditions log (CSV, or any format pandas.read_csv/read_excel can open). + **read_csv_kwargs : dict + Additional keyword arguments passed to pandas.read_csv (or read_excel if the + file extension is .xls/.xlsx). + + Returns + ------- + DataFrame + The conditions log. + """ + if str(path).lower().endswith(('.xls', '.xlsx')): + return pd.read_excel(path, **read_csv_kwargs) + return pd.read_csv(path, **read_csv_kwargs) + + +def load_jv_curve(path, voltage_col=None, current_col=None, sep=None, skiprows=0): + """Load a single raw J-V curve file into (V, J) arrays. + + Tries to be forgiving about common export formats: whitespace- or comma-separated, + with or without a header row. If voltage_col/current_col are given (as column + names or integer positions) they are used directly; otherwise the function + guesses the voltage column as the one that is monotonic-ish and bounded roughly + within [-2, 2] V, and the current column as the other numeric column. + + Parameters + ---------- + path : str + Path to the raw J-V curve file. + voltage_col : str or int, optional + Column name or position holding the applied voltage [V], by default None (auto-detect). + current_col : str or int, optional + Column name or position holding the current density [A/m^2] (or current, if + you rescale afterward), by default None (auto-detect). + sep : str, optional + Column separator, by default None (pandas infers whitespace/comma). + skiprows : int, optional + Number of header/metadata rows to skip before the data starts, by default 0. + + Returns + ------- + (np.ndarray, np.ndarray) + Voltage array, current(-density) array, sorted by ascending voltage. + """ + try: + df = pd.read_csv(path, sep=sep, engine='python', skiprows=skiprows) + except Exception: + df = pd.read_csv(path, sep=r'\s+', engine='python', skiprows=skiprows, header=None) + + if voltage_col is None or current_col is None: + numeric_cols = [c for c in df.columns if pd.api.types.is_numeric_dtype(df[c])] + if len(numeric_cols) < 2: + raise ValueError(f'Could not find two numeric columns in {path}; pass voltage_col/current_col explicitly.') + if voltage_col is None: + # heuristic: the voltage column has the smallest range and straddles/starts near 0 + ranges = {c: (df[c].max() - df[c].min()) for c in numeric_cols} + voltage_col = min(ranges, key=lambda c: abs(ranges[c] - 1.2)) # typical JV sweep spans ~1-1.5 V + if current_col is None: + current_col = [c for c in numeric_cols if c != voltage_col][0] + + V = df[voltage_col].to_numpy(dtype=float) + J = df[current_col].to_numpy(dtype=float) + order = np.argsort(V) + return V[order], J[order] + + +def extract_jv_metrics(V, J, Pin=1000.0): + """Compute Voc, Jsc, FF and PCE from a J-V curve. + + Sign-convention agnostic: works whether photocurrent is stored as positive or + negative, by locating the power-generating quadrant directly. + + Parameters + ---------- + V : array-like + Voltage [V]. + J : array-like + Current density [A/m^2]. + Pin : float, optional + Incident power density [W/m^2], by default 1000.0 (1 sun, AM1.5G). + + Returns + ------- + dict + {'Voc': V, 'Jsc': A/m^2, 'FF': fraction, 'PCE': percent} + """ + V = np.asarray(V, dtype=float) + J = np.asarray(J, dtype=float) + order = np.argsort(V) + V, J = V[order], J[order] + + Jsc = np.interp(0.0, V, J) + # Voc: voltage where J crosses zero (linear interpolation between bracketing points) + sign_change = np.where(np.diff(np.sign(J)) != 0)[0] + if len(sign_change) == 0: + Voc = np.nan + else: + i = sign_change[0] + Voc = V[i] - J[i] * (V[i + 1] - V[i]) / (J[i + 1] - J[i]) + + # Restrict the search for the max power point to between short-circuit and + # open-circuit -- outside that window forward-bias diode current can blow up and + # dominate |V*J| without corresponding to a physically meaningful operating point. + if Voc == Voc: # not NaN + mask = (V >= 0) & (V <= Voc) + else: + mask = np.ones_like(V, dtype=bool) + Pmax = np.max(np.abs(V[mask] * J[mask])) if mask.any() else np.nan + if Voc == Voc and Jsc == Jsc and Voc * abs(Jsc) > 0: # not NaN + FF = Pmax / (Voc * abs(Jsc)) + else: + FF = np.nan + PCE = 100 * Pmax / Pin + + return {'Voc': float(Voc), 'Jsc': float(abs(Jsc)), 'FF': float(FF), 'PCE': float(PCE)} + + +def build_combinatorial_table(conditions_df, jv_dir, jv_filename_col, id_col=None, + voltage_col=None, current_col=None, Pin=1000.0): + """Merge a conditions log with per-device raw J-V files into one table. + + For every row of `conditions_df`, loads `jv_dir/`, computes + Voc/Jsc/FF/PCE, and appends them as new columns alongside the process conditions. + + Parameters + ---------- + conditions_df : DataFrame + Conditions log, e.g. from load_conditions_log(). + jv_dir : str + Directory containing the raw per-device J-V curve files. + jv_filename_col : str + Column in conditions_df giving each device's J-V filename (relative to jv_dir). + id_col : str, optional + Column to use as a device identifier in the returned table, by default None + (uses jv_filename_col). + voltage_col, current_col : str or int, optional + Passed through to load_jv_curve for each file. + Pin : float, optional + Incident power density [W/m^2], by default 1000.0. + + Returns + ------- + DataFrame + conditions_df with 'Voc', 'Jsc', 'FF', 'PCE' columns appended, plus a + 'jv_voltage'/'jv_current' object column holding the raw curve arrays (so + Stage 1 fitting doesn't need to re-read the files from disk). + """ + rows = [] + for _, row in conditions_df.iterrows(): + jv_path = os.path.join(jv_dir, row[jv_filename_col]) + V, J = load_jv_curve(jv_path, voltage_col=voltage_col, current_col=current_col) + metrics = extract_jv_metrics(V, J, Pin=Pin) + out = row.to_dict() + out.update(metrics) + out['jv_voltage'] = V + out['jv_current'] = J + rows.append(out) + + table = pd.DataFrame(rows) + if id_col is None: + id_col = jv_filename_col + table = table.set_index(id_col, drop=False) + return table diff --git a/optimpv/ml/__init__.py b/optimpv/ml/__init__.py new file mode 100644 index 0000000..6df0148 --- /dev/null +++ b/optimpv/ml/__init__.py @@ -0,0 +1,4 @@ +from .process_correlation import ProcessCorrelationModel +from .surrogate_agent import MLSurrogateAgent + +__all__ = ["ProcessCorrelationModel", "MLSurrogateAgent"] diff --git a/optimpv/ml/process_correlation.py b/optimpv/ml/process_correlation.py new file mode 100644 index 0000000..060c4e9 --- /dev/null +++ b/optimpv/ml/process_correlation.py @@ -0,0 +1,192 @@ +"""Stage 2 of the combinatorial-sputtering -> device-physics -> ML pipeline. + +ProcessCorrelationModel learns the mapping from sputtering process conditions +(RF power, pressure, O2:Ar ratio, thickness, ...) to whatever targets you give it -- +typically the Stage 1 drift-diffusion fitted physical parameters (mobility, doping, +trap density, ...) and/or the measured device performance (Voc, Jsc, FF, PCE). This +is deliberately a classical regressor (Random Forest / Gradient Boosting by default, +with a Gaussian Process option for small datasets with calibrated uncertainty) rather +than a deep net: combinatorial-sputtering campaigns typically produce tens to a few +hundred devices, not the thousands a neural network needs, and tree-based models give +directly interpretable feature importances -- i.e. an actual, ranked answer to "which +knob controls what". +""" +######### Package Imports ######################################################################### + +import numpy as np +import pandas as pd + +from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor +from sklearn.gaussian_process import GaussianProcessRegressor +from sklearn.gaussian_process.kernels import Matern, WhiteKernel +from sklearn.inspection import permutation_importance, partial_dependence +from sklearn.model_selection import cross_val_score +from sklearn.multioutput import MultiOutputRegressor +from sklearn.preprocessing import StandardScaler + +######### Class Definition ##################################################################### + + +class ProcessCorrelationModel: + """Fit process-conditions -> target(s) regressors and expose feature importance / + partial dependence for interpreting which process parameter drives which physical + parameter or performance metric. + + Parameters + ---------- + model : str, optional + One of 'rf' (RandomForestRegressor), 'gbr' (GradientBoostingRegressor), or + 'gp' (GaussianProcessRegressor, gives predictive uncertainty -- best for + small datasets, e.g. < ~50 devices), by default 'rf'. + model_kwargs : dict, optional + Extra keyword arguments passed to the underlying sklearn estimator. + random_state : int, optional + Random seed, by default 0. + """ + + def __init__(self, model='rf', model_kwargs=None, random_state=0): + self.model_name = model + self.model_kwargs = model_kwargs or {} + self.random_state = random_state + self.feature_cols = None + self.target_cols = None + self.scaler_X = None + self.estimator = None + + def _build_estimator(self): + if self.model_name == 'rf': + base = RandomForestRegressor(n_estimators=300, random_state=self.random_state, **self.model_kwargs) + elif self.model_name == 'gbr': + base = GradientBoostingRegressor(random_state=self.random_state, **self.model_kwargs) + elif self.model_name == 'gp': + kernel = Matern(nu=2.5) + WhiteKernel() + base = GaussianProcessRegressor(kernel=kernel, normalize_y=True, random_state=self.random_state, + **self.model_kwargs) + else: + raise ValueError("model must be 'rf', 'gbr' or 'gp'") + return base + + def fit(self, df, feature_cols, target_cols): + """Fit the model. + + Parameters + ---------- + df : DataFrame + One row per device, with process-condition columns and target columns + (e.g. the Stage 1 output of scripts/fit_combinatorial_devices.py). + feature_cols : list of str + Process-condition columns to use as inputs (e.g. ['rf_power_W', + 'pressure_mTorr', 'o2_ar_ratio', 'thickness_nm']). + target_cols : list of str + Target columns to predict (e.g. ['l1.mu_n', 'l1.N_t_bulk', 'PCE']). + + Returns + ------- + self + """ + self.feature_cols = list(feature_cols) + self.target_cols = list(target_cols) + + X = df[self.feature_cols].to_numpy(dtype=float) + Y = df[self.target_cols].to_numpy(dtype=float) + + self.scaler_X = StandardScaler().fit(X) + Xs = self.scaler_X.transform(X) + + base = self._build_estimator() + self.estimator = MultiOutputRegressor(base) if len(self.target_cols) > 1 else base + self.estimator.fit(Xs, Y if len(self.target_cols) > 1 else Y.ravel()) + self._X_train, self._Y_train = Xs, Y + return self + + def predict(self, df): + """Predict target(s) for new process conditions. + + Parameters + ---------- + df : DataFrame + Must contain self.feature_cols. + + Returns + ------- + DataFrame + Predictions, one column per target. + """ + X = df[self.feature_cols].to_numpy(dtype=float) + Xs = self.scaler_X.transform(X) + preds = self.estimator.predict(Xs) + preds = np.atleast_2d(preds.T).T if preds.ndim == 1 else preds + return pd.DataFrame(preds, columns=self.target_cols, index=df.index) + + def cross_val_r2(self, cv=5): + """Leave-some-out cross-validated R^2 per target, to sanity-check the fit + before trusting feature importances or using the model as a BO surrogate. + + Returns + ------- + dict + {target_name: mean_cv_r2} + """ + scores = {} + for i, target in enumerate(self.target_cols): + y = self._Y_train[:, i] if self._Y_train.ndim > 1 else self._Y_train + est = self._build_estimator() + cv_n = min(cv, len(y)) + scores[target] = float(np.mean(cross_val_score(est, self._X_train, y, cv=cv_n, scoring='r2'))) + return scores + + def feature_importance(self, n_repeats=20): + """Permutation feature importance per target -- answers "which process knob + controls which physical parameter / performance metric", ranked. + + Returns + ------- + DataFrame + Rows = feature_cols, columns = target_cols, values = mean importance. + """ + importances = pd.DataFrame(index=self.feature_cols, columns=self.target_cols, dtype=float) + estimators = self.estimator.estimators_ if hasattr(self.estimator, 'estimators_') else [self.estimator] + for i, target in enumerate(self.target_cols): + est = estimators[i] if len(self.target_cols) > 1 else self.estimator + y = self._Y_train[:, i] if self._Y_train.ndim > 1 else self._Y_train + r = permutation_importance(est, self._X_train, y, n_repeats=n_repeats, random_state=self.random_state) + importances[target] = r.importances_mean + return importances + + def plot_feature_importance(self, ax=None): + """Bar plot of feature_importance(), one group of bars per target.""" + import matplotlib.pyplot as plt + importances = self.feature_importance() + if ax is None: + fig, ax = plt.subplots(figsize=(max(6, 1.2 * len(self.feature_cols)), 4)) + importances.plot(kind='bar', ax=ax) + ax.set_ylabel('Permutation importance') + ax.set_title('Process condition -> target importance') + ax.legend(title='target') + return ax + + def plot_partial_dependence(self, feature, target, ax=None): + """1D partial dependence of `target` on process-condition `feature`, holding + other features at their observed distribution -- shows the shape (not just + strength) of a process/physics relationship, e.g. "does mu_n increase or + decrease with O2:Ar ratio, and is it monotonic". + """ + import matplotlib.pyplot as plt + target_idx = self.target_cols.index(target) + estimators = self.estimator.estimators_ if hasattr(self.estimator, 'estimators_') else [self.estimator] + est = estimators[target_idx] if len(self.target_cols) > 1 else self.estimator + feat_idx = self.feature_cols.index(feature) + + pd_result = partial_dependence(est, self._X_train, [feat_idx], kind='average') + xs_scaled = pd_result['grid_values'][0] + ys = pd_result['average'][0] + xs = xs_scaled * self.scaler_X.scale_[feat_idx] + self.scaler_X.mean_[feat_idx] + + if ax is None: + fig, ax = plt.subplots(figsize=(5, 4)) + ax.plot(xs, ys) + ax.set_xlabel(feature) + ax.set_ylabel(target) + ax.set_title(f'Partial dependence of {target} on {feature}') + ax.grid(alpha=0.3) + return ax diff --git a/optimpv/ml/surrogate_agent.py b/optimpv/ml/surrogate_agent.py new file mode 100644 index 0000000..243d0e7 --- /dev/null +++ b/optimpv/ml/surrogate_agent.py @@ -0,0 +1,100 @@ +"""Stage 3 of the combinatorial-sputtering -> device-physics -> ML pipeline. + +MLSurrogateAgent wraps a fitted Stage 2 model (ProcessCorrelationModel, or any object +exposing .predict(df) -> DataFrame of target columns) as an optimpv Agent, so it can be +handed to axBOtorchOptimizer exactly like JVAgent/DiodeAgent -- except each "simulation" +is an instant regressor prediction instead of an external SIMsalabim call. This is what +turns Stage 2's process<->performance correlation into an actual search: propose/predict +the ETL/HTL/PVK/TCO process conditions (or thicknesses) expected to maximize PCE (or +whichever targets you trained on). +""" +######### Package Imports ######################################################################### + +import numpy as np +import pandas as pd + +from optimpv.general.BaseAgent import BaseAgent + +######### Agent Definition ####################################################################### + + +class MLSurrogateAgent(BaseAgent): + """Agent that evaluates a trained ML surrogate instead of running a simulator. + + Parameters + ---------- + params : list of Fitparam() objects + The process-condition parameters being optimized (e.g. RF power, pressure, + O2:Ar ratio, thickness for ETL/HTL/TCO/PVK) -- these must match + `model.feature_cols`. + model : object + A fitted model exposing .predict(df) -> DataFrame with one column per target + (e.g. a fitted optimpv.ml.ProcessCorrelationModel). Column names must match + `targets`. + targets : list of str + Which of the model's output columns to expose as optimization objectives. + minimize : bool or list of bool, optional + Whether each target should be minimized (e.g. a defect density) or maximized + (e.g. PCE), by default False (maximize) for every target. + name : str, optional + Name of the agent, by default 'ml_surrogate'. + **kwargs : dict + Additional keyword arguments (stored, unused by this agent). + """ + + def __init__(self, params, model, targets, minimize=False, name='ml_surrogate', **kwargs): + self.params = params + self.model = model + self.name = name + self.kwargs = kwargs + + self.exp_format = list(targets) + self.metric = [None] * len(self.exp_format) + self.loss = [None] * len(self.exp_format) + self.threshold = [None] * len(self.exp_format) + self.minimize = [minimize] * len(self.exp_format) if isinstance(minimize, bool) else list(minimize) + if len(self.minimize) != len(self.exp_format): + raise ValueError('minimize must be a bool or a list the same length as targets') + + self.tracking_metric = None + self.tracking_loss = None + self.tracking_exp_format = None + + self.all_agent_metrics = self.exp_format # one metric per target, named after the target itself + + def run(self, parameters): + """Predict the target(s) for a given process-condition point. + + Parameters + ---------- + parameters : dict + Dictionary of parameter names (matching self.model.feature_cols) and + values. If empty, uses the current self.params values (mirrors the + JVAgent/DiodeAgent convention of `run(parameters={})` after fitting). + + Returns + ------- + dict + {target_name: predicted_value} + """ + if parameters: + row = {} + for p in self.params: + row[p.name] = parameters.get(p.name, p.value) + else: + row = {p.name: p.value for p in self.params} + + df = pd.DataFrame([row]) + pred = self.model.predict(df) + return {t: float(pred[t].iloc[0]) for t in self.exp_format} + + def run_Ax(self, parameters): + """Return the predicted target(s), keyed by metric name, for Ax/BoTorch. + + Note there is no loss/metric transform here (unlike JVAgent/DiodeAgent, which + compare a simulation to measured data): the surrogate's raw prediction *is* + the objective, and `self.minimize` controls whether axBOtorchOptimizer treats + it as something to minimize or maximize. + """ + preds = self.run(parameters) + return {self.all_agent_metrics[i]: preds[t] for i, t in enumerate(self.exp_format)} diff --git a/requirements.txt b/requirements.txt index a60002e..1f966f9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ pySIMsalabim>=1.3 scikit-optimize +scikit-learn>=1.0 ax-platform[fully_bayesian]>=1.3.1 torch torchvision diff --git a/scripts/fit_combinatorial_devices.py b/scripts/fit_combinatorial_devices.py new file mode 100644 index 0000000..0d08057 --- /dev/null +++ b/scripts/fit_combinatorial_devices.py @@ -0,0 +1,200 @@ +"""Stage 1 of the combinatorial-sputtering -> device-physics -> ML pipeline. + +For every device in a combinatorial-sputtering run (conditions log + raw J-V curve +files), fits the drift-diffusion (SIMsalabim) layer parameters of the sputtered +TCO/ETL/HTL layer against that device's measured J-V curve, using the appropriate +device stack (n-i-p TCO/SnO2/perovskite/Spiro-OMeTAD, or p-i-n SAM/perovskite/C60/BCP) +from Data/simsalabim_test_inputs/. The output is one row per device with process +conditions + fitted physical parameters + measured performance (Voc/Jsc/FF/PCE) -- +the bridge table Stage 2 (process<->physics<->performance correlation) consumes. + +This script cannot be validated end-to-end in this environment (no SIMsalabim binary +and no real data available here) -- review the FitParam bounds/fixed choices against +your actual process window before running, and treat the layer parameter starting +values as literature priors, not calibrated truth (see +Data/simsalabim_test_inputs/README_combinatorial_TCO_ETL_HTL_SAM.md). + +Usage +----- +python scripts/fit_combinatorial_devices.py \\ + --conditions Data/my_run/conditions_log.csv \\ + --jv-dir Data/my_run/jv_curves \\ + --jv-filename-col jv_file \\ + --stack-col stack_type \\ + --out Data/my_run/stage1_fitted_devices.csv \\ + --method scipy +""" +######### Package Imports ######################################################################### + +import argparse +import copy +import os +import shutil +import sys + +import numpy as np +import pandas as pd + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) + +from optimpv import FitParam +from optimpv.general.combinatorial_data import load_conditions_log, build_combinatorial_table, extract_jv_metrics +from optimpv.models.DDfits.JVAgent import JVAgent + +REPO_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) +NIPTCO_DIR = os.path.join(REPO_ROOT, 'Data', 'simsalabim_test_inputs', 'CombinatorialTCO_ETL_HTL') +PINSAM_DIR = os.path.join(REPO_ROOT, 'Data', 'simsalabim_test_inputs', 'CombinatorialSAM_ETL') + +######### Stack definitions ##################################################################### +# Each stack defines: which simulation_setup file to use, the layer files to stage into the +# session directory, and the FitParam list to optimize. Only the process-sensitive parameters +# (thickness + the sputtered oxide's mobility/doping/traps) are free by default -- widen this +# list once you have enough devices per condition to constrain more parameters. + +STACKS = { + 'niptco_ITO': { + 'setup': os.path.join(NIPTCO_DIR, 'simulation_setup_niptco_ITO.txt'), + 'files': ['SnO2.txt', 'Perovskite.txt', 'SpiroOMeTAD.txt', 'nk_glass.txt', 'nk_ITO.txt', + 'nk_Au.txt', 'nk_SpiroOMeTAD.txt', 'nk_peroTripleCatMartin.txt'], + 'src_dir': NIPTCO_DIR, + }, + 'niptco_FTO_passivated': { + 'setup': os.path.join(NIPTCO_DIR, 'simulation_setup_niptco_FTO_passivated.txt'), + 'files': ['SnO2.txt', 'Perovskite.txt', 'SpiroOMeTAD.txt', 'nk_glass.txt', 'nk_ITO.txt', + 'nk_Au.txt', 'nk_SpiroOMeTAD.txt', 'nk_peroTripleCatMartin.txt'], + 'src_dir': NIPTCO_DIR, + }, + 'pinsam_FTO': { + 'setup': os.path.join(PINSAM_DIR, 'simulation_setup_pinsam_FTO.txt'), + 'files': ['Perovskite.txt', 'C60.txt', 'BCP.txt', 'nk_glass.txt', 'nk_ITO.txt', + 'nk_Ag.txt', 'nk_peroTripleCatMartin.txt', 'nk_BCPLiu.txt', 'nk_C60_1.txt'], + 'src_dir': PINSAM_DIR, + }, +} + + +def build_fit_params(stack_name): + """Free (process-sensitive) parameters per stack. Extend/trim as your data supports.""" + if stack_name.startswith('niptco'): + return [ + FitParam(name='l1.L', type='range', value=30e-9, bounds=[10e-9, 60e-9], log_scale=False, + display_name='SnO2 thickness', unit='m'), + FitParam(name='l1.mu_n', type='range', value=1e-5, bounds=[1e-7, 1e-3], log_scale=True, + display_name='SnO2 mu_n', unit='m2/Vs'), + FitParam(name='l1.N_D', type='range', value=1e23, bounds=[1e21, 1e25], log_scale=True, + display_name='SnO2 N_D', unit='m-3'), + FitParam(name='l1.N_t_bulk', type='range', value=1e20, bounds=[1e18, 1e22], log_scale=True, + display_name='SnO2 N_t_bulk', unit='m-3'), + FitParam(name='l2.N_t_int', type='range', value=4e12, bounds=[3e11, 5e13], log_scale=True, + display_name='perovskite/HTL N_t_int (passivation)', unit='m-2'), + FitParam(name='R_series', type='range', value=1e-4, bounds=[1e-6, 1e-2], log_scale=True, + display_name='R_series', unit='Ohm m2'), + FitParam(name='R_shunt', type='range', value=1e1, bounds=[1e-2, 1e3], log_scale=True, + display_name='R_shunt', unit='Ohm m2'), + ] + elif stack_name == 'pinsam_FTO': + return [ + FitParam(name='offset_W_L.E_v', type='range', value=0.1, bounds=[-0.1, 0.5], + display_name='SAM injection barrier', unit='eV'), + FitParam(name='l2.L', type='range', value=25e-9, bounds=[10e-9, 60e-9], + display_name='C60 thickness', unit='m'), + FitParam(name='l2.mu_n', type='range', value=1e-6, bounds=[1e-8, 1e-4], log_scale=True, + display_name='C60 mu_n', unit='m2/Vs'), + FitParam(name='l3.L', type='range', value=6e-9, bounds=[3e-9, 12e-9], + display_name='BCP thickness', unit='m'), + FitParam(name='l3.mu_n', type='range', value=1e-8, bounds=[1e-10, 1e-6], log_scale=True, + display_name='BCP mu_n', unit='m2/Vs'), + FitParam(name='l1.N_t_int', type='range', value=4e12, bounds=[3e11, 5e13], log_scale=True, + display_name='perovskite/C60 N_t_int (passivation)', unit='m-2'), + FitParam(name='R_series', type='range', value=1e-4, bounds=[1e-6, 1e-2], log_scale=True, + display_name='R_series', unit='Ohm m2'), + FitParam(name='R_shunt', type='range', value=1e1, bounds=[1e-2, 1e3], log_scale=True, + display_name='R_shunt', unit='Ohm m2'), + ] + else: + raise ValueError(f'Unknown stack: {stack_name}') + + +def stage_session(session_path, stack_name): + """Copy the stack's layer/setup files into a fresh session directory.""" + stack = STACKS[stack_name] + os.makedirs(session_path, exist_ok=True) + for fname in stack['files']: + shutil.copyfile(os.path.join(stack['src_dir'], fname), os.path.join(session_path, os.path.basename(fname))) + setup_dst = os.path.join(session_path, os.path.basename(stack['setup'])) + shutil.copyfile(stack['setup'], setup_dst) + return setup_dst + + +def fit_one_device(row, stack_name, session_root, metric='nrmse', loss='linear', method='scipy'): + """Fit one device's J-V curve, return {fit_param_name: value, ...} plus fitted metrics.""" + V, J = row['jv_voltage'], row['jv_current'] + session_path = os.path.join(session_root, str(row.name)) + simulation_setup = stage_session(session_path, stack_name) + params = build_fit_params(stack_name) + + jv = JVAgent(params, V, J, session_path, simulation_setup, parallel=False, max_jobs=1, + metric=metric, loss=loss) + + if method == 'scipy': + from optimpv.optimizers.scipyOpti.scipyOptimizer import ScipyOptimizer + optimizer = ScipyOptimizer(params=params, agents=jv, method='L-BFGS-B') + optimizer.optimize() + elif method == 'bo': + from optimpv.optimizers.axBOtorch.axBOtorchOptimizer import axBOtorchOptimizer + num_free = len([p for p in params if p.type != 'fixed']) + optimizer = axBOtorchOptimizer(params=params, agents=jv, models=['SOBOL', 'BOTORCH_MODULAR'], + n_batches=[1, 20], batch_size=[10, 2]) + optimizer.optimize_turbo() + else: + raise ValueError("method must be 'scipy' or 'bo'") + + optimizer.update_params_with_best_balance() + jv.params = optimizer.params + + fitted = {p.name: p.value for p in optimizer.params} + yfit = jv.run(parameters={}) + fitted_metrics = extract_jv_metrics(V, yfit) + fitted.update({f'fit_{k}': v for k, v in fitted_metrics.items()}) + return fitted + + +def main(): + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument('--conditions', required=True, help='Path to the conditions log CSV') + ap.add_argument('--jv-dir', required=True, help='Directory of raw per-device J-V curve files') + ap.add_argument('--jv-filename-col', required=True, help='Column in the conditions log giving each J-V filename') + ap.add_argument('--stack-col', required=True, + help="Column in the conditions log giving the stack name (one of: %s)" % ', '.join(STACKS)) + ap.add_argument('--session-root', default='SIMsalabim_sessions', help='Where to stage per-device SIMsalabim runs') + ap.add_argument('--out', required=True, help='Output CSV path for the merged Stage 1 table') + ap.add_argument('--method', default='scipy', choices=['scipy', 'bo'], + help="Per-device fit method: 'scipy' (fast local fit, default) or 'bo' (axBOtorchOptimizer+TuRBO, slower/more robust)") + ap.add_argument('--metric', default='nrmse') + ap.add_argument('--loss', default='linear') + args = ap.parse_args() + + conditions = load_conditions_log(args.conditions) + table = build_combinatorial_table(conditions, args.jv_dir, args.jv_filename_col) + + results = [] + for idx, row in table.iterrows(): + stack_name = row[args.stack_col] + print(f'[{idx}] fitting stack={stack_name} ...') + try: + fitted = fit_one_device(row, stack_name, args.session_root, metric=args.metric, + loss=args.loss, method=args.method) + except Exception as e: + print(f'[{idx}] FAILED: {e}') + fitted = {} + out_row = row.drop(labels=['jv_voltage', 'jv_current']).to_dict() + out_row.update(fitted) + results.append(out_row) + + out_df = pd.DataFrame(results) + out_df.to_csv(args.out, index=False) + print(f'Wrote {len(out_df)} fitted device(s) to {args.out}') + + +if __name__ == '__main__': + main() diff --git a/scripts/optimize_process_conditions.py b/scripts/optimize_process_conditions.py new file mode 100644 index 0000000..03e99d9 --- /dev/null +++ b/scripts/optimize_process_conditions.py @@ -0,0 +1,95 @@ +"""Stage 3 of the combinatorial-sputtering -> device-physics -> ML pipeline. + +Trains a Stage 2 ProcessCorrelationModel on the Stage 1 output table (process +conditions + fitted physical parameters + measured performance, one row per device), +wraps it as an MLSurrogateAgent, and runs axBOtorchOptimizer over the *process* +parameter space (RF power, pressure, O2:Ar ratio, thickness for ETL/HTL/TCO/PVK) to +predict which conditions maximize PCE (or whichever target(s) you choose). Since each +"evaluation" is an instant regressor call rather than a real sputter-and-measure cycle, +this is cheap to run to convergence -- treat its output as a ranked shortlist of +conditions to actually run next (active learning), not a guaranteed optimum: it is +only as good as Stage 1/2's data coverage and the regressor's extrapolation. + +Usage +----- +python scripts/optimize_process_conditions.py \\ + --stage1-csv Data/my_run/stage1_fitted_devices.csv \\ + --feature-cols rf_power_W pressure_mTorr o2_ar_ratio thickness_nm \\ + --feature-bounds 50 300 5 50 0.0 0.5 10 60 \\ + --targets PCE \\ + --out Data/my_run/suggested_next_conditions.csv \\ + --n-suggestions 8 +""" +######### Package Imports ######################################################################### + +import argparse +import os +import sys + +import pandas as pd + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) + +from optimpv import FitParam +from optimpv.ml import ProcessCorrelationModel, MLSurrogateAgent +from optimpv.optimizers.axBOtorch.axBOtorchOptimizer import axBOtorchOptimizer + + +def main(): + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument('--stage1-csv', required=True, help='Stage 1 output CSV (from fit_combinatorial_devices.py)') + ap.add_argument('--feature-cols', nargs='+', required=True, help='Process-condition columns, e.g. rf_power_W pressure_mTorr o2_ar_ratio thickness_nm') + ap.add_argument('--feature-bounds', nargs='+', type=float, required=True, + help='Lower/upper bound pairs, in the same order as --feature-cols, e.g. lo1 hi1 lo2 hi2 ...') + ap.add_argument('--targets', nargs='+', required=True, help='Target column(s) to optimize, e.g. PCE or PCE Voc FF') + ap.add_argument('--minimize', nargs='+', default=None, + help="Per-target minimize flag ('true'/'false'); default maximize (false) for every target") + ap.add_argument('--model', default='rf', choices=['rf', 'gbr', 'gp']) + ap.add_argument('--n-suggestions', type=int, default=8, help='How many top process-condition points to report') + ap.add_argument('--out', required=True, help='Output CSV path for the suggested conditions') + args = ap.parse_args() + + if len(args.feature_bounds) != 2 * len(args.feature_cols): + raise ValueError('--feature-bounds must give exactly 2 values (lo, hi) per --feature-cols entry') + bounds = {col: (args.feature_bounds[2 * i], args.feature_bounds[2 * i + 1]) + for i, col in enumerate(args.feature_cols)} + + minimize = [False] * len(args.targets) if args.minimize is None else [m.lower() == 'true' for m in args.minimize] + + df = pd.read_csv(args.stage1_csv) + missing = [c for c in args.feature_cols + args.targets if c not in df.columns] + if missing: + raise ValueError(f'Columns missing from {args.stage1_csv}: {missing}') + df = df.dropna(subset=args.feature_cols + args.targets) + + model = ProcessCorrelationModel(model=args.model).fit(df, args.feature_cols, args.targets) + cv_r2 = model.cross_val_r2() + print('Cross-validated R^2 per target (sanity-check before trusting the search below):') + for t, r2 in cv_r2.items(): + print(f' {t}: {r2:.3f}') + if r2 < 0.3: + print(f' WARNING: low R^2 for {t} -- the surrogate search below may not be reliable yet; ' + f'collect more Stage 1 devices or narrow the process window.') + + params = [FitParam(name=col, type='range', value=float(df[col].mean()), bounds=list(bounds[col]), + display_name=col) for col in args.feature_cols] + + agent = MLSurrogateAgent(params, model, targets=args.targets, minimize=minimize) + + num_free = len(params) + optimizer = axBOtorchOptimizer(params=params, agents=agent, models=['SOBOL', 'BOTORCH_MODULAR'], + n_batches=[max(10, 2 * num_free), 30], batch_size=[1, 1]) + optimizer.optimize() + + data = optimizer.ax_client.summarize() + sort_col = optimizer.all_metrics[0] + ascending = agent.minimize[0] + top = data.sort_values(sort_col, ascending=ascending).head(args.n_suggestions) + top = top[args.feature_cols + optimizer.all_metrics] + top.to_csv(args.out, index=False) + print(f'\nWrote top {len(top)} suggested process condition(s) to {args.out}') + print(top.to_string(index=False)) + + +if __name__ == '__main__': + main() diff --git a/setup.py b/setup.py index 74e708f..072c4b3 100644 --- a/setup.py +++ b/setup.py @@ -35,6 +35,7 @@ 'openpyxl>=3.0', 'pyodbc>=4.0', 'scikit-optimize>=0.9', + 'scikit-learn>=1.0', 'pySIMsalabim>=1.3', 'tk', 'torch>=2.0', From 149f6b6aba3d2a0c50abba731e91e1f545437005 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 07:33:33 +0000 Subject: [PATCH 2/2] Add Streamlit GUI for process correlation and condition search Adds gui/app.py, a browser-based GUI covering Stage 2 (process correlation) and Stage 3 (condition search) of the combinatorial pipeline, launched via run_gui.sh/run_gui.bat. Deliberately does not integrate SIMsalabim/DDfits (Stage 1 stays a separate script, scripts/fit_combinatorial_devices.py) -- the GUI only needs scikit-learn plus ax-platform/torch for the search, and takes any table of process conditions + performance (optionally including Stage 1 fitted physical parameters) as input. Refactored scripts/optimize_process_conditions.py to expose a reusable run_search() function so the GUI and CLI share the same code path instead of duplicating logic. Verified: gui/app.py boots cleanly under `streamlit run` and passes streamlit.testing.v1.AppTest with no exceptions in this environment (scikit-learn installed; ax-platform/torch not installed here, so the Stage 3 search itself could not be exercised end-to-end -- the GUI detects and reports missing dependencies rather than crashing). --- docs/combinatorial_TCO_ML_workflow.md | 22 +++ gui/app.py | 221 +++++++++++++++++++++++++ requirements.txt | 2 + run_gui.bat | 4 + run_gui.sh | 6 + scripts/optimize_process_conditions.py | 110 ++++++++---- setup.py | 2 + 7 files changed, 339 insertions(+), 28 deletions(-) create mode 100644 gui/app.py create mode 100644 run_gui.bat create mode 100755 run_gui.sh diff --git a/docs/combinatorial_TCO_ML_workflow.md b/docs/combinatorial_TCO_ML_workflow.md index 2bf2f2f..d2cbe25 100644 --- a/docs/combinatorial_TCO_ML_workflow.md +++ b/docs/combinatorial_TCO_ML_workflow.md @@ -13,6 +13,26 @@ See `Data/simsalabim_test_inputs/README_combinatorial_TCO_ETL_HTL_SAM.md` for th layer parameter files, their provenance, and modeling choices (in particular: SAM is represented as a contact work-function/injection-barrier tuning, not a bulk layer). +## GUI + +`gui/app.py` is a Streamlit GUI covering **Stage 2 and Stage 3 only** (process +correlation + condition search) -- it deliberately does not call SIMsalabim/DDfits, so +it has no dependency on the SIMsalabim binary and works with just `scikit-learn` (plus +`ax-platform`/`torch` for the Stage 3 search). It takes as input any table with one row +per device: process-condition columns and target columns (performance, and/or Stage 1 +fitted physical parameters if you produced them separately). Launch it with: + +```bash +./run_gui.sh # Linux/Mac +run_gui.bat # Windows +# or directly: +streamlit run gui/app.py +``` + +Stage 1 (drift-diffusion fitting) stays a script you run separately +(`scripts/fit_combinatorial_devices.py`) -- its output CSV is exactly the kind of +table the GUI expects as input. + ## Stage 1 -- physical understanding (drift-diffusion fitting per device) `scripts/fit_combinatorial_devices.py` loops over every device in your combinatorial @@ -77,6 +97,8 @@ search. `axBOtorchOptimizer` machinery that `JVAgent`/`DiodeAgent` already use. - `scripts/fit_combinatorial_devices.py`, `scripts/optimize_process_conditions.py`: new orchestration scripts tying Stage 1/2/3 together. +- `gui/app.py`, `run_gui.sh`/`run_gui.bat`: new Streamlit GUI for Stage 2/3 (see + "GUI" section above). ## Known limitations / what still needs your input diff --git a/gui/app.py b/gui/app.py new file mode 100644 index 0000000..42bc8ee --- /dev/null +++ b/gui/app.py @@ -0,0 +1,221 @@ +"""GUI for the process-correlation + condition-search part of the combinatorial- +sputtering pipeline (optimpv/ml/, scripts/optimize_process_conditions.py). + +Run with: + streamlit run gui/app.py +or use the launcher: ./run_gui.sh (Linux/Mac) / run_gui.bat (Windows) + +Scope: this GUI intentionally does NOT call SIMsalabim/DDfits (Stage 1 drift- +diffusion fitting) -- it starts from a table you already have (process conditions + +performance, optionally including Stage 1 fitted physical parameters if you produced +them separately with scripts/fit_combinatorial_devices.py) and covers: + + Stage 2 -- Process Correlation: which process knob controls which physical + parameter / performance metric, and how (feature importance + partial dependence). + Stage 3 -- Condition Search: Bayesian-optimization search over process conditions + using the Stage 2 model as a fast surrogate, for a ranked shortlist of conditions + to try next. + +This is a thin UI over optimpv/ml/process_correlation.py and +scripts/optimize_process_conditions.py's run_search() -- it does not duplicate any +fitting/ML/search logic. +""" +######### Package Imports ######################################################################### + +import os +import sys + +import pandas as pd +import streamlit as st + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'scripts')) + +from optimpv.ml.process_correlation import ProcessCorrelationModel + +st.set_page_config(page_title="optimPV -- Process Correlation & Condition Search", layout="wide") + +######### Helpers ##################################################################### + + +def _check_import(module_name): + try: + __import__(module_name) + return True + except ImportError: + return False + + +######### Sidebar: environment status ##################################################################### + +with st.sidebar: + st.title("optimPV") + st.caption("Process correlation & condition search") + st.markdown("---") + st.subheader("Environment") + has_ax = _check_import('ax') + has_sklearn = _check_import('sklearn') + st.write("scikit-learn (Stage 2/3 ML): " + ("available" if has_sklearn else "MISSING")) + st.write("Ax/BoTorch (Stage 3 search): " + ("available" if has_ax else "MISSING")) + if not has_ax: + st.info("Install `ax-platform`/`torch` to run the Stage 3 search.") + st.markdown("---") + st.caption("Drift-diffusion (SIMsalabim) device fitting is intentionally not part of this GUI -- " + "run scripts/fit_combinatorial_devices.py separately if you want physically-resolved " + "layer parameters, or just bring a table with process conditions + measured performance.") + st.caption("See docs/combinatorial_TCO_ML_workflow.md for the full pipeline write-up.") + +######### Main tabs ##################################################################### + +tab_home, tab2, tab3 = st.tabs(["Overview", "Stage 2: Process Correlation", "Stage 3: Condition Search"]) + +with tab_home: + st.header("Process correlation -> ML condition search") + st.markdown( + """ +Bring a table with **one row per combinatorial device**: process-condition columns +(RF power, pressure, O2:Ar ratio, thickness, ...) plus performance and/or physical +parameter columns (PCE, Voc, FF, Jsc, and optionally drift-diffusion fitted +parameters like mobility or trap density if you ran those separately). + +1. **Stage 2 -- Process Correlation**: fits a Random Forest/GBR/GP regressor from + process conditions to your chosen target column(s), and shows feature importance + (which knob controls what) and partial dependence (the shape of that relationship). +2. **Stage 3 -- Condition Search**: wraps the Stage 2 model as a fast surrogate and + runs a Bayesian-optimization search over your process-condition ranges for the + conditions predicted to maximize (or minimize) your target(s) -- a ranked + shortlist of conditions to actually try next, not a guaranteed optimum. + """ + ) + st.info("Physically understanding *why* a condition performs the way it does (fitted mobility, " + "doping, trap density of your sputtered layer) requires the separate drift-diffusion " + "fitting step -- run `python scripts/fit_combinatorial_devices.py ...` outside this app " + "and bring its output CSV in here as your starting table.") + +######### Stage 2 ##################################################################### + +with tab2: + st.header("Stage 2: correlate process conditions with performance") + + f2 = st.file_uploader("Device table (CSV) -- process conditions + performance (+ optional fitted physics)", + type=["csv"], key="s2_upload") + df2 = pd.read_csv(f2) if f2 is not None else None + + if df2 is not None: + st.dataframe(df2, use_container_width=True, height=200) + numeric_cols = [c for c in df2.columns if pd.api.types.is_numeric_dtype(df2[c])] + + c1, c2, c3 = st.columns([2, 2, 1]) + with c1: + feature_cols = st.multiselect("Process-condition columns (features)", numeric_cols, key="s2_features") + with c2: + target_cols = st.multiselect("Target column(s)", [c for c in numeric_cols if c not in feature_cols], key="s2_targets") + with c3: + model_kind = st.selectbox("Model", ["rf", "gbr", "gp"], key="s2_model") + + if st.button("Fit correlation model", type="primary", disabled=(not feature_cols or not target_cols or not has_sklearn)): + model = ProcessCorrelationModel(model=model_kind).fit(df2.dropna(subset=feature_cols + target_cols), feature_cols, target_cols) + st.session_state['stage2_model'] = model + st.session_state['stage2_df'] = df2 + st.session_state['stage2_feature_cols'] = feature_cols + st.session_state['stage2_target_cols'] = target_cols + + cv_r2 = model.cross_val_r2() + st.subheader("Cross-validated R^2 (sanity-check before trusting importances/search)") + r2_cols = st.columns(len(cv_r2)) + for col, (t, r2) in zip(r2_cols, cv_r2.items()): + col.metric(t, f"{r2:.2f}") + if r2 < 0.3: + col.caption(":warning: low R^2 -- collect more devices") + + st.subheader("Feature importance (which process knob controls what)") + fig = model.plot_feature_importance() + st.pyplot(fig.figure) + + if 'stage2_model' in st.session_state: + st.subheader("Partial dependence") + model = st.session_state['stage2_model'] + c1, c2 = st.columns(2) + with c1: + pd_feature = st.selectbox("Feature", st.session_state['stage2_feature_cols'], key="s2_pd_feature") + with c2: + pd_target = st.selectbox("Target", st.session_state['stage2_target_cols'], key="s2_pd_target") + fig = model.plot_partial_dependence(pd_feature, pd_target) + st.pyplot(fig.figure) + + st.caption("Reuse this table directly in the Stage 3 tab, or upload a fresh one there.") + +######### Stage 3 ##################################################################### + +with tab3: + st.header("Stage 3: search process conditions for the best predicted performance") + + if not has_ax: + st.warning("ax-platform/torch are not installed in this environment -- the search below will fail until they are.") + + source3 = st.radio("Data source", ["Use table from Stage 2 tab", "Upload a CSV"], key="s3_source") + if source3 == "Use table from Stage 2 tab": + df3 = st.session_state.get('stage2_df') + if df3 is None: + st.info("No table loaded in Stage 2 yet -- fit a correlation model there first, or upload a CSV here instead.") + else: + f3 = st.file_uploader("Device table (CSV)", type=["csv"], key="s3_upload") + df3 = pd.read_csv(f3) if f3 is not None else None + + if df3 is not None: + numeric_cols3 = [c for c in df3.columns if pd.api.types.is_numeric_dtype(df3[c])] + feature_cols3 = st.multiselect("Process-condition columns to search over", numeric_cols3, key="s3_features") + + bounds = {} + if feature_cols3: + st.caption("Search bounds (defaults from the data's observed range -- widen with caution, " + "the surrogate extrapolates poorly outside the training range)") + for col in feature_cols3: + lo_default, hi_default = float(df3[col].min()), float(df3[col].max()) + c1, c2 = st.columns(2) + lo = c1.number_input(f"{col} min", value=lo_default, key=f"s3_lo_{col}") + hi = c2.number_input(f"{col} max", value=hi_default, key=f"s3_hi_{col}") + bounds[col] = (lo, hi) + + target_cols3 = st.multiselect("Target(s) to optimize", [c for c in numeric_cols3 if c not in feature_cols3], key="s3_targets") + minimize_flags = [] + if target_cols3: + st.caption("Direction per target") + for t in target_cols3: + minimize_flags.append(st.checkbox(f"minimize {t} (unchecked = maximize)", value=False, key=f"s3_min_{t}")) + + c1, c2, c3 = st.columns(3) + with c1: + model_kind3 = st.selectbox("Surrogate model", ["rf", "gbr", "gp"], key="s3_model") + with c2: + n_suggestions = st.slider("Top suggestions to return", 1, 20, 8, key="s3_n") + with c3: + run_disabled = not (feature_cols3 and target_cols3 and has_ax) + + if st.button("Run search", type="primary", disabled=run_disabled): + from optimize_process_conditions import run_search # noqa: E402 + + status = st.empty() + log_lines = [] + + def _cb(msg): + log_lines.append(msg) + status.write("\n".join(log_lines)) + + try: + top, cv_r2, _ = run_search(df3.dropna(subset=feature_cols3 + target_cols3), feature_cols3, bounds, + target_cols3, minimize=minimize_flags, model=model_kind3, + n_suggestions=n_suggestions, progress_callback=_cb) + st.subheader("Cross-validated R^2 (surrogate reliability)") + st.write({t: round(r2, 3) for t, r2 in cv_r2.items()}) + for t, r2 in cv_r2.items(): + if r2 < 0.3: + st.warning(f"Low R^2 for {t} ({r2:.2f}) -- treat the suggestions below as exploratory, " + f"not confident predictions.") + + st.subheader("Suggested next conditions") + st.dataframe(top, use_container_width=True) + st.download_button("Download suggestions (CSV)", top.to_csv(index=False).encode(), + file_name="suggested_next_conditions.csv") + except Exception as e: + st.error(f"Search failed: {e}") diff --git a/requirements.txt b/requirements.txt index 1f966f9..0d3abcd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,8 @@ pySIMsalabim>=1.3 scikit-optimize scikit-learn>=1.0 +streamlit>=1.28 +matplotlib ax-platform[fully_bayesian]>=1.3.1 torch torchvision diff --git a/run_gui.bat b/run_gui.bat new file mode 100644 index 0000000..ad712d6 --- /dev/null +++ b/run_gui.bat @@ -0,0 +1,4 @@ +@echo off +REM Launches the optimPV process-correlation / condition-search GUI in your browser. +cd /d "%~dp0" +python -m streamlit run gui\app.py diff --git a/run_gui.sh b/run_gui.sh new file mode 100755 index 0000000..4fb82ae --- /dev/null +++ b/run_gui.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +# Launches the optimPV process-correlation / condition-search GUI in your browser. +# Usage: ./run_gui.sh +set -e +cd "$(dirname "$0")" +python3 -m streamlit run gui/app.py diff --git a/scripts/optimize_process_conditions.py b/scripts/optimize_process_conditions.py index 03e99d9..b5e4f23 100644 --- a/scripts/optimize_process_conditions.py +++ b/scripts/optimize_process_conditions.py @@ -10,8 +10,9 @@ conditions to actually run next (active learning), not a guaranteed optimum: it is only as good as Stage 1/2's data coverage and the regressor's extrapolation. -Usage ------ +The reusable logic lives in `run_search()` so both the CLI below and the GUI +(gui/app.py) call the same code path. Usage as a CLI: + python scripts/optimize_process_conditions.py \\ --stage1-csv Data/my_run/stage1_fitted_devices.csv \\ --feature-cols rf_power_W pressure_mTorr o2_ar_ratio thickness_nm \\ @@ -32,7 +33,81 @@ from optimpv import FitParam from optimpv.ml import ProcessCorrelationModel, MLSurrogateAgent -from optimpv.optimizers.axBOtorch.axBOtorchOptimizer import axBOtorchOptimizer + + +def run_search(df, feature_cols, bounds, targets, minimize=None, model='rf', n_suggestions=8, + n_batches=None, batch_size=None, progress_callback=None): + """Fit a Stage 2 model and search process-condition space for the best predicted targets. + + Parameters + ---------- + df : DataFrame + Stage 1 output table (or anything with feature_cols + targets columns). + feature_cols : list of str + Process-condition columns to search over. + bounds : dict + {feature_col: (low, high)} search bounds for each feature. + targets : list of str + Target column(s) to optimize. + minimize : list of bool, optional + Per-target minimize flag, by default None (maximize every target). + model : str, optional + 'rf', 'gbr' or 'gp', by default 'rf'. + n_suggestions : int, optional + How many top process-condition points to return, by default 8. + n_batches, batch_size : list of int, optional + Passed to axBOtorchOptimizer; sensible defaults are used if None. + progress_callback : callable, optional + If given, called as progress_callback(message: str) at each major step + (useful for streaming status into a GUI). + + Returns + ------- + (DataFrame, dict, ProcessCorrelationModel) + (top suggested conditions + predicted metrics, cross-validated R^2 per + target, the fitted Stage 2 model) + """ + def log(msg): + if progress_callback is not None: + progress_callback(msg) + + missing = [c for c in feature_cols + targets if c not in df.columns] + if missing: + raise ValueError(f'Columns missing from input table: {missing}') + df = df.dropna(subset=feature_cols + targets) + if len(df) < 5: + raise ValueError(f'Only {len(df)} usable row(s) after dropping missing values -- need at least a handful of devices to fit a surrogate.') + + if minimize is None: + minimize = [False] * len(targets) + + log('Fitting Stage 2 process-correlation model...') + corr_model = ProcessCorrelationModel(model=model).fit(df, feature_cols, targets) + cv_r2 = corr_model.cross_val_r2() + log('Cross-validated R^2: ' + ', '.join(f'{t}={r2:.3f}' for t, r2 in cv_r2.items())) + + params = [FitParam(name=col, type='range', value=float(df[col].mean()), bounds=list(bounds[col]), + display_name=col) for col in feature_cols] + + agent = MLSurrogateAgent(params, corr_model, targets=targets, minimize=minimize) + + from optimpv.optimizers.axBOtorch.axBOtorchOptimizer import axBOtorchOptimizer + + num_free = len(params) + n_batches = n_batches or [max(10, 2 * num_free), 30] + batch_size = batch_size or [1, 1] + log(f'Running BO search over {num_free} process parameter(s)...') + optimizer = axBOtorchOptimizer(params=params, agents=agent, models=['SOBOL', 'BOTORCH_MODULAR'], + n_batches=n_batches, batch_size=batch_size) + optimizer.optimize() + + data = optimizer.ax_client.summarize() + sort_col = optimizer.all_metrics[0] + ascending = agent.minimize[0] + top = data.sort_values(sort_col, ascending=ascending).head(n_suggestions) + top = top[feature_cols + optimizer.all_metrics].reset_index(drop=True) + log(f'Done. Top {len(top)} suggested condition(s) ready.') + return top, cv_r2, corr_model def main(): @@ -53,39 +128,18 @@ def main(): raise ValueError('--feature-bounds must give exactly 2 values (lo, hi) per --feature-cols entry') bounds = {col: (args.feature_bounds[2 * i], args.feature_bounds[2 * i + 1]) for i, col in enumerate(args.feature_cols)} - minimize = [False] * len(args.targets) if args.minimize is None else [m.lower() == 'true' for m in args.minimize] df = pd.read_csv(args.stage1_csv) - missing = [c for c in args.feature_cols + args.targets if c not in df.columns] - if missing: - raise ValueError(f'Columns missing from {args.stage1_csv}: {missing}') - df = df.dropna(subset=args.feature_cols + args.targets) + top, cv_r2, _ = run_search(df, args.feature_cols, bounds, args.targets, minimize=minimize, + model=args.model, n_suggestions=args.n_suggestions, progress_callback=print) - model = ProcessCorrelationModel(model=args.model).fit(df, args.feature_cols, args.targets) - cv_r2 = model.cross_val_r2() - print('Cross-validated R^2 per target (sanity-check before trusting the search below):') + print('\nCross-validated R^2 per target (sanity-check before trusting the search above):') for t, r2 in cv_r2.items(): print(f' {t}: {r2:.3f}') if r2 < 0.3: - print(f' WARNING: low R^2 for {t} -- the surrogate search below may not be reliable yet; ' - f'collect more Stage 1 devices or narrow the process window.') - - params = [FitParam(name=col, type='range', value=float(df[col].mean()), bounds=list(bounds[col]), - display_name=col) for col in args.feature_cols] - - agent = MLSurrogateAgent(params, model, targets=args.targets, minimize=minimize) + print(f' WARNING: low R^2 for {t} -- collect more Stage 1 devices or narrow the process window.') - num_free = len(params) - optimizer = axBOtorchOptimizer(params=params, agents=agent, models=['SOBOL', 'BOTORCH_MODULAR'], - n_batches=[max(10, 2 * num_free), 30], batch_size=[1, 1]) - optimizer.optimize() - - data = optimizer.ax_client.summarize() - sort_col = optimizer.all_metrics[0] - ascending = agent.minimize[0] - top = data.sort_values(sort_col, ascending=ascending).head(args.n_suggestions) - top = top[args.feature_cols + optimizer.all_metrics] top.to_csv(args.out, index=False) print(f'\nWrote top {len(top)} suggested process condition(s) to {args.out}') print(top.to_string(index=False)) diff --git a/setup.py b/setup.py index 072c4b3..d17de21 100644 --- a/setup.py +++ b/setup.py @@ -36,6 +36,8 @@ 'pyodbc>=4.0', 'scikit-optimize>=0.9', 'scikit-learn>=1.0', + 'streamlit>=1.28', + 'matplotlib', 'pySIMsalabim>=1.3', 'tk', 'torch>=2.0',