48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
|
|
import pynucastro as pyna
|
||
|
|
|
||
|
|
from gridfire.engine import GraphEngine, MultiscalePartitioningEngineView, AdaptiveEngineView
|
||
|
|
from gridfire.solver import DirectNetworkSolver
|
||
|
|
from gridfire.type import NetIn
|
||
|
|
|
||
|
|
from fourdst.composition import Composition
|
||
|
|
|
||
|
|
symbols : list[str] = ["H-1", "He-3", "He-4", "C-12", "N-14", "O-16", "Ne-20", "Mg-24"]
|
||
|
|
X : list[float] = [0.708, 2.94e-5, 0.276, 0.003, 0.0011, 9.62e-3, 1.62e-3, 5.16e-4]
|
||
|
|
|
||
|
|
|
||
|
|
comp = Composition()
|
||
|
|
comp.registerSymbol(symbols)
|
||
|
|
comp.setMassFraction(symbols, X)
|
||
|
|
comp.finalize(True)
|
||
|
|
|
||
|
|
print(f"Initial H-1 mass fraction {comp.getMassFraction("H-1")}")
|
||
|
|
|
||
|
|
netIn = NetIn()
|
||
|
|
netIn.composition = comp
|
||
|
|
netIn.temperature = 1.5e7
|
||
|
|
netIn.density = 1.6e2
|
||
|
|
netIn.tMax = 1e-9
|
||
|
|
netIn.dt0 = 1e-12
|
||
|
|
|
||
|
|
baseEngine = GraphEngine(netIn.composition, 2)
|
||
|
|
|
||
|
|
equiv_species = baseEngine.getNetworkSpecies()
|
||
|
|
equiv_species = [x.name().replace("-","").lower() for x in equiv_species]
|
||
|
|
|
||
|
|
equiv_species = [x if x != 'h1' else 'p' for x in equiv_species]
|
||
|
|
equiv_species = [x if x != 'n1' else 'n' for x in equiv_species]
|
||
|
|
|
||
|
|
rl = pyna.ReacLibLibrary()
|
||
|
|
|
||
|
|
# equiv_species = ['p', 'd', 'he3', 'he4', 'c12', 'n14', 'o16', 'ne20', 'mg24']
|
||
|
|
full_lib = rl.linking_nuclei(equiv_species)
|
||
|
|
|
||
|
|
print(f"\nFound {len(full_lib.get_rates())} rates.")
|
||
|
|
|
||
|
|
net = pyna.PythonNetwork(libraries=[full_lib])
|
||
|
|
|
||
|
|
output_filename = "pp_chain_robust.py"
|
||
|
|
net.write_network(output_filename)
|
||
|
|
|
||
|
|
print(f"\nSuccessfully wrote robust PP-chain network to: {output_filename}")
|