feat(validation): added more of the scripts to make paper figures
This commit is contained in:
20
validation/ManuscriptFigures/Stiffness/R.np.dat
Normal file
20
validation/ManuscriptFigures/Stiffness/R.np.dat
Normal file
@@ -0,0 +1,20 @@
|
||||
1.000000000000000000e+02
|
||||
1.623776739188720910e+02
|
||||
2.636650898730358108e+02
|
||||
4.281332398719395655e+02
|
||||
6.951927961775605809e+02
|
||||
1.128837891684688429e+03
|
||||
1.832980710832435534e+03
|
||||
2.976351441631319176e+03
|
||||
4.832930238571751943e+03
|
||||
7.847599703514606517e+03
|
||||
1.274274985703132188e+04
|
||||
2.069138081114790111e+04
|
||||
3.359818286283781345e+04
|
||||
5.455594781168514601e+04
|
||||
8.858667904100831947e+04
|
||||
1.438449888287663052e+05
|
||||
2.335721469090121391e+05
|
||||
3.792690190732246265e+05
|
||||
6.158482110660254257e+05
|
||||
1.000000000000000000e+06
|
||||
20
validation/ManuscriptFigures/Stiffness/SS.np.dat
Normal file
20
validation/ManuscriptFigures/Stiffness/SS.np.dat
Normal file
@@ -0,0 +1,20 @@
|
||||
7.516506915568591296e+01 7.495454650010640307e+01 7.474402243846603255e+01 7.453349751089608333e+01 7.432297205004131513e+01 7.411244626076269526e+01 7.390192026922430557e+01 7.369139415312440633e+01 7.348086796031343226e+01 7.327034172026007752e+01 7.305981545111255571e+01 7.284928916404744825e+01 7.263876286594782528e+01 7.242823656105262842e+01 7.221771025197236327e+01 7.200718394031474645e+01 7.179665762706986243e+01 7.158613131284748476e+01 7.137560499802309266e+01 7.116507868282796778e+01
|
||||
2.411108827502363994e+01 2.390056655264294605e+01 2.369004306572022500e+01 2.347951849209244912e+01 2.326899324921361867e+01 2.305846759417556413e+01 2.284794168530916991e+01 2.263741562012273434e+01 2.242688945866676775e+01 2.221636323792333556e+01 2.200583698066780514e+01 2.179531070092636114e+01 2.158478440733700054e+01 2.137425810521942893e+01 2.116373179784977410e+01 2.095320548724562926e+01 2.074267917464953115e+01 2.053215286082669166e+01 2.032162654624836762e+01 2.011110023120477663e+01
|
||||
1.588134936422530075e+01 1.567082305245526186e+01 1.546029673914114788e+01 1.524977042487612167e+01 1.503924411002547501e+01 1.482871779481417640e+01 1.461819147938077101e+01 1.440766516381058082e+01 1.419713884815615401e+01 1.398661253244984870e+01 1.377608621671159383e+01 1.356555990095366226e+01 1.335503358518361416e+01 1.314450726940610359e+01 1.293398095362399758e+01 1.272345463783906006e+01 1.251292832205238170e+01 1.230240200626462865e+01 1.209187569047621480e+01 1.188134937468739416e+01
|
||||
1.240141625353471788e+01 1.219088993828025025e+01 1.198036362282025813e+01 1.176983730723369170e+01 1.155931099156918407e+01 1.134878467585666861e+01 1.131773574219467626e+01 1.131773344868713060e+01 1.131772427641642054e+01 1.131773274314408440e+01 1.131774381739029423e+01 1.131774099106536724e+01 1.131772792426291652e+01 1.131772001429877506e+01 1.131772477191268145e+01 1.131772951612228795e+01 1.131773269504887658e+01 1.131771867785366759e+01 1.131773274806228891e+01 1.131773618945088700e+01
|
||||
1.221441707845048441e+01 1.221443092438587996e+01 1.221449268621868711e+01 1.221444340127185413e+01 1.221450447820550878e+01 1.221450450550565847e+01 1.221462299546512753e+01 1.221450541184946736e+01 1.221449741948761059e+01 1.221437937238299476e+01 1.221452600508989228e+01 1.221450974355266439e+01 1.221454206060290382e+01 1.221449405571979696e+01 1.221450465229765392e+01 1.221445641451824571e+01 1.221439900705651915e+01 1.221450373335646056e+01 1.221440168392089554e+01 1.221457855378897328e+01
|
||||
1.285007977945194213e+01 1.285045003815560705e+01 1.284971632467318692e+01 1.284966729479870828e+01 1.284988825100139920e+01 1.284989877979216288e+01 1.284993556983961582e+01 1.284999283899156453e+01 1.285004027052133146e+01 1.285010185143070771e+01 1.284956549615072419e+01 1.285026985045980297e+01 1.285030607530261904e+01 1.284995107080426280e+01 1.285014040334820606e+01 1.284998296697936659e+01 1.285007370919554859e+01 1.284984313025256419e+01 1.285062579528359450e+01 1.284971304845847762e+01
|
||||
1.332742493047810584e+01 1.332742517211232247e+01 1.332742546286364416e+01 1.332742938067791094e+01 1.332742349532839476e+01 1.332742474050093406e+01 1.332742419644821119e+01 1.332742815605684683e+01 1.332742784332937092e+01 1.332742638395014367e+01 1.332742810591535942e+01 1.332742545889716723e+01 1.332742617301116894e+01 1.332742856994030056e+01 1.332742872162519987e+01 1.332742428558021075e+01 1.332742647766768229e+01 1.332742921111014844e+01 1.332742941333290076e+01 1.332742293601148376e+01
|
||||
1.347856888607090298e+01 1.347852064818079398e+01 1.347848605530894872e+01 1.347847130758353629e+01 1.347845366742022044e+01 1.347844421325814146e+01 1.347843780579964879e+01 1.347843881361396789e+01 1.347843249086560036e+01 1.347843051734689368e+01 1.347843088633933917e+01 1.347842621749463632e+01 1.347842953219780249e+01 1.347843032361080340e+01 1.347843437616470652e+01 1.347842800930953722e+01 1.347843104180701168e+01 1.347842687171626075e+01 1.347843078062061473e+01 1.347842862739984149e+01
|
||||
1.278613012830484585e+01 1.278496693040220045e+01 1.278424783677001919e+01 1.278380390835387814e+01 1.278353105351237318e+01 1.278336397571877470e+01 1.278326064906533155e+01 1.278319580429599078e+01 1.278315656532500455e+01 1.278313425351781696e+01 1.278311894450724751e+01 1.278310725590280583e+01 1.278310351000193812e+01 1.278310038295341933e+01 1.278309778527155416e+01 1.278309542126202025e+01 1.278309502060797875e+01 1.278309434390479637e+01 1.278309469349433591e+01 1.278309355867858166e+01
|
||||
1.203164561346398997e+01 1.202454099764239892e+01 1.202011655316218430e+01 1.201737235620566580e+01 1.201567535052035218e+01 1.201462713041880193e+01 1.201398075487848693e+01 1.201358208920642667e+01 1.201333643079369473e+01 1.201318530620892489e+01 1.201309211797299881e+01 1.201303460578686177e+01 1.201299925517803402e+01 1.201297778500763513e+01 1.201296402629015425e+01 1.201295602514885807e+01 1.201295092007369192e+01 1.201294776572451539e+01 1.201294578156225334e+01 1.201294445669623023e+01
|
||||
1.147182662670111952e+01 1.144367788592245461e+01 1.142551981827195284e+01 1.141400530026558080e+01 1.140678324875124972e+01 1.140228496986332551e+01 1.139949510693226387e+01 1.139776944147619631e+01 1.139670393632033907e+01 1.139604667634546864e+01 1.139564144923076228e+01 1.139539174325708260e+01 1.139523790399952752e+01 1.139514313577533322e+01 1.139508469291570592e+01 1.139504883737335206e+01 1.139502665112581603e+01 1.139501305044587021e+01 1.139500464491563037e+01 1.139499946776214934e+01
|
||||
1.112437351439633382e+01 1.104983178380758879e+01 1.099728149037341218e+01 1.096183216558747553e+01 1.093866818437858335e+01 1.092385480067567372e+01 1.091451366605461715e+01 1.090867559087929806e+01 1.090504724352872223e+01 1.090280005986856615e+01 1.090141130887915644e+01 1.090055422303433375e+01 1.090002569902901897e+01 1.089969993641441270e+01 1.089949919024657987e+01 1.089937554186619906e+01 1.089929936996127857e+01 1.089925246542425796e+01 1.089922356951065829e+01 1.089920576898874138e+01
|
||||
1.097211035219207176e+01 1.084134486646048501e+01 1.073647503072117892e+01 1.065745474258099712e+01 1.060122323076019768e+01 1.056302031110026540e+01 1.053793274514885958e+01 1.052183628790108649e+01 1.051166454889254531e+01 1.050529886706545035e+01 1.050133929659283893e+01 1.049888572075516890e+01 1.049736892822251733e+01 1.049643262007837308e+01 1.049585516448912514e+01 1.049549921954909593e+01 1.049527988180654248e+01 1.049514477454431649e+01 1.049506154264506641e+01 1.049501027963316524e+01
|
||||
1.094468724003418458e+01 1.077450225810061291e+01 1.062302102545175941e+01 1.049487461738804051e+01 1.039277793053667942e+01 1.031633777833742727e+01 1.026223795135402028e+01 1.022563538542393147e+01 1.020166848316140573e+01 1.018632073935404847e+01 1.017663415868663179e+01 1.017057683358957298e+01 1.016681091859345010e+01 1.016447806019511191e+01 1.016303616604842475e+01 1.016214619362716221e+01 1.016159734987274454e+01 1.016125906067995643e+01 1.016105061769337148e+01 1.016092220613375474e+01
|
||||
1.097651335571714704e+01 1.078588796262477167e+01 1.060606838834930521e+01 1.044162196127209086e+01 1.029755509438241390e+01 1.017803438345032419e+01 1.008480316539240995e+01 1.001638286170760672e+01 9.968755779276024853e+00 9.936928619742690927e+00 9.916266013536175095e+00 9.903108546512575217e+00 9.894834222328734441e+00 9.889671762689555834e+00 9.886466743915320876e+00 9.884483084019732857e+00 9.883257691494989672e+00 9.882501603001433210e+00 9.882035421372110662e+00 9.881748119644676365e+00
|
||||
1.103372098422792646e+01 1.083337479287353844e+01 1.063895056067691236e+01 1.045351601851197820e+01 1.028119637274276243e+01 1.012690577382375245e+01 9.995405386723385632e+00 9.889757307003176123e+00 9.810009639387388347e+00 9.753173954964635683e+00 9.714515406752507687e+00 9.689107699410834940e+00 9.672796915308628840e+00 9.662486085923703172e+00 9.656031896506101830e+00 9.652016722703004703e+00 9.649528481194510121e+00 9.647990171985121322e+00 9.647040550101658951e+00 9.646454868275412764e+00
|
||||
1.110184168148390071e+01 1.089681287389299413e+01 1.069508339268978858e+01 1.049852259320839565e+01 1.030987990205894178e+01 1.013295385171165996e+01 9.972476778158801736e+00 9.833404330024478668e+00 9.719506474267035401e+00 9.631851532036685981e+00 9.568308558091725757e+00 9.524510461234727998e+00 9.495451254290198762e+00 9.476677471525505325e+00 9.464760761499684705e+00 9.457281885088901774e+00 9.452621649844495266e+00 9.449730720772761217e+00 9.447942336862459101e+00 9.446837908757437674e+00
|
||||
1.117465294371354645e+01 1.096726403921578807e+01 1.076178538409097385e+01 1.055934766635116695e+01 1.036168711930753439e+01 1.017137900705320064e+01 9.992030295576467935e+00 9.828237222646533766e+00 9.685001477264883363e+00 9.566427510509075915e+00 9.474146500757882450e+00 9.406566347274901929e+00 9.359604550897161701e+00 9.328261330384671979e+00 9.307930342276915070e+00 9.294991305454903596e+00 9.286857258004600268e+00 9.281783457841839891e+00 9.278633925233053859e+00 9.276684775049567122e+00
|
||||
1.124926881688630687e+01 1.104062677480477817e+01 1.083313911549921293e+01 1.062750533454747170e+01 1.042482367952639954e+01 1.022678380690943456e+01 1.003589927307875307e+01 9.855707138075906926e+00 9.690749489446384146e+00 9.546033914635952300e+00 9.425773144805688730e+00 9.331796860392312709e+00 9.262715545169019293e+00 9.214563489601520274e+00 9.182353621157208323e+00 9.161428359629866236e+00 9.148097719226344182e+00 9.139712116369935302e+00 9.134479294651772108e+00 9.131230233292356502e+00
|
||||
1.132422755411165838e+01 1.111488579882806782e+01 1.090627085960638532e+01 1.069882940676268213e+01 1.049327112144276519e+01 1.029070998272206161e+01 1.009285865446117292e+01 9.902261421692060139e+00 9.722490357852789700e+00 9.558114979716174631e+00 9.414140564492795349e+00 9.294726311310403943e+00 9.201602599594787435e+00 9.133277722187754577e+00 9.085726396385924275e+00 9.053954438477180844e+00 9.033329695930307324e+00 9.020197187298318653e+00 9.011938899484631449e+00 9.006786577439486408e+00
|
||||
20
validation/ManuscriptFigures/Stiffness/T.np.dat
Normal file
20
validation/ManuscriptFigures/Stiffness/T.np.dat
Normal file
@@ -0,0 +1,20 @@
|
||||
4.000000000000000000e+06
|
||||
5.642105263157894462e+07
|
||||
1.088421052631578892e+08
|
||||
1.612631578947368264e+08
|
||||
2.136842105263157785e+08
|
||||
2.661052631578947306e+08
|
||||
3.185263157894736528e+08
|
||||
3.709473684210526347e+08
|
||||
4.233684210526315570e+08
|
||||
4.757894736842104793e+08
|
||||
5.282105263157894611e+08
|
||||
5.806315789473683834e+08
|
||||
6.330526315789473057e+08
|
||||
6.854736842105262280e+08
|
||||
7.378947368421052694e+08
|
||||
7.903157894736841917e+08
|
||||
8.427368421052631140e+08
|
||||
8.951578947368420362e+08
|
||||
9.475789473684209585e+08
|
||||
1.000000000000000000e+09
|
||||
@@ -0,0 +1,143 @@
|
||||
import os.path
|
||||
|
||||
from gridfire.engine import GraphEngine, NetworkJacobian
|
||||
from fourdst.composition import Composition
|
||||
from gridfire._gridfire.engine.scratchpads import StateBlob
|
||||
from gridfire._gridfire.engine.scratchpads import ScratchPadType
|
||||
import gridfire
|
||||
import numpy as np
|
||||
|
||||
from typing import Tuple
|
||||
from tqdm import tqdm
|
||||
|
||||
def get_stiffness_ratio_and_eigs(J: NetworkJacobian) -> Tuple[float, np.ndarray]:
|
||||
jac = J.to_numpy()
|
||||
eigenvalues = np.linalg.eigvals(jac)
|
||||
abs_real_eigvals = np.abs(np.real(eigenvalues))
|
||||
non_zero_eigenvalues = abs_real_eigvals[abs_real_eigvals > 0]
|
||||
|
||||
if len(non_zero_eigenvalues) == 0:
|
||||
return 1.0, eigenvalues
|
||||
|
||||
min_lambda = np.min(non_zero_eigenvalues)
|
||||
max_lambda = np.max(non_zero_eigenvalues)
|
||||
|
||||
if (min_lambda) == 0:
|
||||
return np.inf, eigenvalues
|
||||
|
||||
stiffness_ratio = max_lambda / min_lambda
|
||||
return stiffness_ratio, eigenvalues
|
||||
|
||||
def setup() -> Tuple[Composition, GraphEngine, StateBlob]:
|
||||
baseComposition : Composition = Composition({"H-1": 0.702, "He-4": 0.06, "O-16": 1e-5})
|
||||
engine: GraphEngine = GraphEngine(baseComposition, 4)
|
||||
blob = StateBlob()
|
||||
blob.enroll(ScratchPadType.GRAPH_ENGINE_SCRATCHPAD)
|
||||
|
||||
graph_ctx = blob.get(ScratchPadType.GRAPH_ENGINE_SCRATCHPAD)
|
||||
graph_ctx.initialize(engine)
|
||||
return baseComposition, engine, blob
|
||||
|
||||
def format_grid_point_stiff_data(J: NetworkJacobian, engine: GraphEngine, blob: StateBlob, T9: float, density: float) -> str:
|
||||
species = engine.getNetworkSpecies(blob)
|
||||
result = []
|
||||
for sp_row in species:
|
||||
for sp_col in species:
|
||||
Jij = J[sp_row, sp_col]
|
||||
if Jij != 0:
|
||||
result.append(f"J[{sp_row},{sp_col}](T9={T9},rho={density}) = {Jij}")
|
||||
return "\n".join(result)
|
||||
|
||||
def get_stiff(engine: GraphEngine, blob: StateBlob, comp: Composition, T9: float, density: float) -> Tuple[float, np.ndarray]:
|
||||
J = engine.generateJacobianMatrix(blob, comp, T9, density)
|
||||
S, eigs = get_stiffness_ratio_and_eigs(J)
|
||||
return S, eigs
|
||||
|
||||
if __name__ == "__main__":
|
||||
import matplotlib.pyplot as plt
|
||||
comp, engine, blob = setup()
|
||||
|
||||
if os.path.exists("stiff_species.dat"):
|
||||
os.remove("stiff_species.dat")
|
||||
|
||||
T = np.linspace(4e6, 1e9, 20)
|
||||
R = np.logspace(2, 6, 20)
|
||||
|
||||
TT, RR = np.meshgrid(T, R)
|
||||
|
||||
print(f"Stiffness for a T9=0.015: {get_stiff(engine, blob, comp, 0.015, 160)[0]}")
|
||||
print(f"Stiffness for a T9=0.040: {get_stiff(engine, blob, comp, 0.040, 160)[0]}")
|
||||
|
||||
# Generate the global stiffness map
|
||||
SS = np.zeros_like(TT)
|
||||
for tid, t in tqdm(enumerate(T), total=len(T), desc="Temperature Grid"):
|
||||
for rid, r in tqdm(enumerate(R), total=len(R), desc=f"Density Grid at T={t:5.3e}", leave=False):
|
||||
stiffness, _ = get_stiff(engine, blob, comp, t/1e9, r)
|
||||
SS[tid, rid] = np.log10(stiffness)
|
||||
|
||||
np.savetxt("SS.np.dat", SS)
|
||||
np.savetxt("T.np.dat", T)
|
||||
np.savetxt("R.np.dat", R)
|
||||
with open("metadata.txt", "w") as f:
|
||||
f.write(f"SS - Stiffness ratio for jacobian matrix generated from a fully constructed GraphEngine with gridfire version: {gridfire.__version__}\n")
|
||||
f.write("T - Temperature [K], first axis (rows)\n")
|
||||
f.write("R - Log10 Density [log (g cm^-3)], second axis (cols)\n")
|
||||
|
||||
# Generate data specific to the requested T9 histograms
|
||||
target_T9s = [0.015, 0.02, 0.1]
|
||||
hist_data_reals = []
|
||||
valid_mins, valid_maxs = [], []
|
||||
|
||||
for t9 in target_T9s:
|
||||
eigs_for_t9 = []
|
||||
for r in R:
|
||||
_, eigs = get_stiff(engine, blob, comp, t9, r)
|
||||
eigs_for_t9.append(eigs)
|
||||
|
||||
flat_eigs = np.concatenate(eigs_for_t9)
|
||||
real_eigs = np.real(flat_eigs)
|
||||
non_zero_reals = real_eigs[real_eigs != 0]
|
||||
abs_reals = np.abs(non_zero_reals)
|
||||
hist_data_reals.append(abs_reals)
|
||||
|
||||
if len(abs_reals) > 0:
|
||||
valid_mins.append(np.min(abs_reals))
|
||||
valid_maxs.append(np.max(abs_reals))
|
||||
|
||||
# ------------------ Plotting ------------------
|
||||
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 7))
|
||||
|
||||
# Plot 1: Stiffness Ratio Contour
|
||||
img = ax1.contourf(T, R, SS)
|
||||
ax1.set_yscale('log')
|
||||
ax1.set_xscale('log')
|
||||
|
||||
cbar = plt.colorbar(img, ax=ax1)
|
||||
cbar.ax.invert_yaxis()
|
||||
ax1.set_xlabel("Temperature [K]")
|
||||
ax1.set_ylabel("Density [g cm$^{-3}$]")
|
||||
ax1.set_title("Log10 Stiffness Ratio")
|
||||
|
||||
# Plot 2: Overlaid Log-Spaced Histograms for specific T9 values
|
||||
if valid_mins and valid_maxs:
|
||||
global_min = np.min(valid_mins)
|
||||
global_max = np.max(valid_maxs)
|
||||
# Create global bins so the histograms align perfectly
|
||||
bins = np.logspace(np.log10(global_min), np.log10(global_max), 50)
|
||||
|
||||
colors = ['#1f77b4', '#ff7f0e', '#2ca02c'] # Blue, Orange, Green
|
||||
|
||||
for i, t9 in enumerate(target_T9s):
|
||||
ax2.hist(hist_data_reals[i], bins=bins, alpha=0.6, label=f"T9 = {t9}",
|
||||
color=colors[i], edgecolor='black', linewidth=0.5)
|
||||
|
||||
ax2.set_xscale('log')
|
||||
ax2.legend()
|
||||
|
||||
ax2.grid(True, linestyle='--', alpha=0.6, axis='y')
|
||||
ax2.set_xlabel(r"Absolute Real Part $|Re(\lambda)|$")
|
||||
ax2.set_ylabel("Frequency")
|
||||
ax2.set_title("Eigenvalue Distribution at Selected Temperatures")
|
||||
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
3
validation/ManuscriptFigures/Stiffness/metadata.txt
Normal file
3
validation/ManuscriptFigures/Stiffness/metadata.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
SS - Stiffness ratio for jacobian matrix generated from a fully constructed GraphEngine with gridfire version: 0.7.5rc3
|
||||
T - Temperature [K], first axis (rows)
|
||||
R - Log10 Density [log (g cm^-3)], second axis (cols)
|
||||
Reference in New Issue
Block a user