Line data Source code
1 : ! ***********************************************************************
2 : !
3 : ! Copyright (C) 2011-2019 Aaron Dotter, Ed Brown & The MESA Team
4 : !
5 : ! This program is free software: you can redistribute it and/or modify
6 : ! it under the terms of the GNU Lesser General Public License
7 : ! as published by the Free Software Foundation,
8 : ! either version 3 of the License, or (at your option) any later version.
9 : !
10 : ! This program is distributed in the hope that it will be useful,
11 : ! but WITHOUT ANY WARRANTY; without even the implied warranty of
12 : ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 : ! See the GNU Lesser General Public License for more details.
14 : !
15 : ! You should have received a copy of the GNU Lesser General Public License
16 : ! along with this program. If not, see <https://www.gnu.org/licenses/>.
17 : !
18 : ! ***********************************************************************
19 :
20 : module chem_def
21 :
22 : use utils_def, only: integer_dict
23 : use const_def, only: dp
24 : use math_lib, only: exp10
25 : use utils_lib, only: mesa_error
26 :
27 : implicit none
28 :
29 : ! Some notes on solar abundance scales:
30 : !
31 : ! published tabulations typically include both photospheric (spectroscopic)
32 : ! and meteoritic abundance measurements. many elements can be measured
33 : ! in both. some elements can only be measured one way (or the other). The
34 : ! following table, compiled by Frank Timmes, gives the breakdown of the
35 : ! elemental abundances for each of the solar abundance patterns included in
36 : ! MESA.
37 : !
38 : ! m = meteoritic, generally chondrites
39 : ! s = spectroscopic photosphere
40 : ! a = average of m and s
41 : ! r = recommended
42 : !
43 : !name what it is what mesa adopts
44 : !AG89 m,s m, with some s
45 : !GS98 m,s m, with some s
46 : !L03 m,s,a as tabulated
47 : !AGS05 m,s s, with some m
48 : !AGSS09 m,s s, with some m
49 : !L09 m,s,r r
50 : !A09_Prz modified AGSS09 - he, c, n, o, ne, mg, al, si, s, ar, fe.
51 : !MB22 m,s s, with some m, supplemented with agss09
52 : !AAG21 m,s s, with some m
53 :
54 : ! storage for Lodders (2003) isotopic percentages
55 : type isotopic_abundance_table_type
56 : type (integer_dict), pointer :: name_dict
57 : real(dp), dimension(:), allocatable :: isotopic_percent
58 : end type isotopic_abundance_table_type
59 :
60 : type(isotopic_abundance_table_type) :: lodders03_tab6
61 :
62 :
63 : integer, parameter :: iso_name_length = 8 ! no. characters in an nuclide name
64 : ! 2 for element, 3 for A, and 3 for isomeric state as '_' + 1 or 2 digit integer 0 to 99)
65 : integer, parameter :: long_name_length = 16 ! no. characters in a long name
66 : integer, parameter :: npart = 24 ! no. entries in partition fcn table
67 : integer, parameter :: max_el_z = 112 ! max. Z in the winvn database
68 : integer, parameter :: nhname = 3 ! no. isotopes for h in the winvn database
69 :
70 : logical, parameter :: convert_mass_excess_to_binding_energy = .true.
71 : integer, parameter :: nuclide_not_found = -1 ! warning flag
72 :
73 : integer, dimension(0:max_el_z) :: element_min_N, element_max_N
74 : ! for isos included in chem_isos
75 :
76 : ! element names
77 : character(len=iso_name_length), dimension(0:max_el_z) :: &
78 : el_name = [character(len=iso_name_length) :: &
79 : 'neut','h','he','li','be','b','c','n','o','f','ne', &
80 : 'na','mg','al','si','p','s','cl','ar','k','ca', &
81 : 'sc','ti','v','cr','mn','fe','co','ni','cu','zn', &
82 : 'ga','ge','as','se','br','kr','rb','sr','y','zr', &
83 : 'nb','mo','tc','ru','rh','pd','ag','cd','in','sn', &
84 : 'sb','te','i','xe','cs','ba','la','ce','pr','nd', &
85 : 'pm','sm','eu','gd','tb','dy','ho','er','tm','yb', &
86 : 'lu','hf','ta','w','re','os','ir','pt','au','hg', &
87 : 'tl','pb','bi','po','at','rn','fr','ra','ac','th', &
88 : 'pa','u','np','pu','am','cm','bk','cf','es','fm','md', &
89 : 'no','lr','rf','db','sg','bh','hs','mt','ds','rg','cn']
90 :
91 : character(len=long_name_length), dimension(0:max_el_z) :: &
92 : el_long_name = [character(len=long_name_length) :: &
93 : 'neutron','hydrogen','helium','lithium','beryllium', &
94 : 'boron','carbon','nitrogen','oxygen','fluorine','neon', &
95 : 'sodium','magnesium','aluminum','silicon','phosphorus', &
96 : 'sulfur','chlorine','argon','potassium','calcium', &
97 : 'scandium','titanium','vanadium','chromium','manganese', &
98 : 'iron','cobalt','nickel','copper','zinc','gallium', &
99 : 'germanium','arsenic','selenium','bromine','krypton', &
100 : 'rubidium','strontium','yttrium','zirconium','niobium', &
101 : 'molybdenum','technetium','ruthenium','rhodium', &
102 : 'palladium','silver','cadmium','indium','tin','antimony', &
103 : 'tellurium','iodine','xenon','cesium','barium', &
104 : 'lanthanum','cerium','praseodymium','neodymium','promethium', &
105 : 'samarium','europium','gadolinium','terbium','dysprosium', &
106 : 'holmium','erbium','thulium','ytterbium','lutetium', &
107 : 'hafnium','tantalum','tungsten','rhenium','osmium', &
108 : 'iridium','platinum','gold','mercury','thallium','lead', &
109 : 'bisumth','polonium','astatine','radon','francium', &
110 : 'radium','actinium','thorium','protactinium','uranium', &
111 : 'neptunium','plutonium','americium','curium','berkelium', &
112 : 'californium','einsteinium','fermium','mendelevium', &
113 : 'nobelium','lawrencium','rutherfordium','dubnium', &
114 : 'seaborgium','bohrium','hassium','meitnerium','darmstadtium', &
115 : 'roentgenium','copernicium' ]
116 :
117 : ! aluminum isomers
118 : character(len=iso_name_length), dimension(2:3) :: &
119 : al_isomers = [character(len=iso_name_length) ::'al-6','al*6']
120 : character(len=long_name_length), dimension(2:3) :: &
121 : long_al_isomers = [character(len=long_name_length) :: &
122 : 'Aluminum-gs','Aluminum-ex']
123 :
124 :
125 : ! chem element id numbers (up to Cn)
126 : ! note: for isotope i, the element id number = chem_Z(i)
127 :
128 : !periodic table, row 1
129 : integer, parameter :: e_h = 1
130 : integer, parameter :: e_he = 2
131 :
132 : !periodic table, row 2
133 : integer, parameter :: e_li = 3
134 : integer, parameter :: e_be = 4
135 : integer, parameter :: e_b = 5
136 : integer, parameter :: e_c = 6
137 : integer, parameter :: e_n = 7
138 : integer, parameter :: e_o = 8
139 : integer, parameter :: e_f = 9
140 : integer, parameter :: e_ne = 10
141 :
142 : !periodic table, row 3
143 : integer, parameter :: e_na = 11
144 : integer, parameter :: e_mg = 12
145 : integer, parameter :: e_al = 13
146 : integer, parameter :: e_si = 14
147 : integer, parameter :: e_p = 15
148 : integer, parameter :: e_s = 16
149 : integer, parameter :: e_cl = 17
150 : integer, parameter :: e_ar = 18
151 :
152 : !periodic table, row 4
153 : integer, parameter :: e_k = 19
154 : integer, parameter :: e_ca = 20
155 : integer, parameter :: e_sc = 21
156 : integer, parameter :: e_ti = 22
157 : integer, parameter :: e_v = 23
158 : integer, parameter :: e_cr = 24
159 : integer, parameter :: e_mn = 25
160 : integer, parameter :: e_fe = 26
161 : integer, parameter :: e_co = 27
162 : integer, parameter :: e_ni = 28
163 : integer, parameter :: e_cu = 29
164 : integer, parameter :: e_zn = 30
165 : integer, parameter :: e_ga = 31
166 : integer, parameter :: e_ge = 32
167 : integer, parameter :: e_as = 33
168 : integer, parameter :: e_se = 34
169 : integer, parameter :: e_br = 35
170 : integer, parameter :: e_kr = 36
171 :
172 : !periodic table, row 5
173 : integer, parameter :: e_rb = 37
174 : integer, parameter :: e_sr = 38
175 : integer, parameter :: e_y = 39
176 : integer, parameter :: e_zr = 40
177 : integer, parameter :: e_nb = 41
178 : integer, parameter :: e_mo = 42
179 : integer, parameter :: e_tc = 43
180 : integer, parameter :: e_ru = 44
181 : integer, parameter :: e_rh = 45
182 : integer, parameter :: e_pd = 46
183 : integer, parameter :: e_ag = 47
184 : integer, parameter :: e_cd = 48
185 : integer, parameter :: e_in = 49
186 : integer, parameter :: e_sn = 50
187 : integer, parameter :: e_sb = 51
188 : integer, parameter :: e_te = 52
189 : integer, parameter :: e_i = 53
190 : integer, parameter :: e_xe = 54
191 :
192 : !periodic table, row 6
193 : integer, parameter :: e_cs = 55
194 : integer, parameter :: e_ba = 56
195 : integer, parameter :: e_la = 57
196 : integer, parameter :: e_ce = 58
197 : integer, parameter :: e_pr = 59
198 : integer, parameter :: e_nd = 60
199 : integer, parameter :: e_pm = 61
200 : integer, parameter :: e_sm = 62
201 : integer, parameter :: e_eu = 63
202 : integer, parameter :: e_gd = 64
203 : integer, parameter :: e_tb = 65
204 : integer, parameter :: e_dy = 66
205 : integer, parameter :: e_ho = 67
206 : integer, parameter :: e_er = 68
207 : integer, parameter :: e_tm = 69
208 : integer, parameter :: e_yb = 70
209 : integer, parameter :: e_lu = 71
210 : integer, parameter :: e_hf = 72
211 : integer, parameter :: e_ta = 73
212 : integer, parameter :: e_w = 74
213 : integer, parameter :: e_re = 75
214 : integer, parameter :: e_os = 76
215 : integer, parameter :: e_ir = 77
216 : integer, parameter :: e_pt = 78
217 : integer, parameter :: e_au = 79
218 : integer, parameter :: e_hg = 80
219 : integer, parameter :: e_tl = 81
220 : integer, parameter :: e_pb = 82
221 : integer, parameter :: e_bi = 83
222 : integer, parameter :: e_po = 84
223 : integer, parameter :: e_at = 85
224 : integer, parameter :: e_rn = 86
225 :
226 : !periodic table, row 7
227 : integer, parameter :: e_fr = 87
228 : integer, parameter :: e_ra = 88
229 : integer, parameter :: e_ac = 89
230 : integer, parameter :: e_th = 90
231 : integer, parameter :: e_pa = 91
232 : integer, parameter :: e_u = 92
233 : integer, parameter :: e_np = 93
234 : integer, parameter :: e_pu = 94
235 : integer, parameter :: e_am = 95
236 : integer, parameter :: e_cm = 96
237 : integer, parameter :: e_bk = 97
238 : integer, parameter :: e_cf = 98
239 : integer, parameter :: e_es = 99
240 : integer, parameter :: e_fm = 100
241 : integer, parameter :: e_md = 101
242 : integer, parameter :: e_no = 102
243 : integer, parameter :: e_lr = 103
244 : integer, parameter :: e_rf = 104
245 : integer, parameter :: e_db = 105
246 : integer, parameter :: e_sg = 106
247 : integer, parameter :: e_bh = 107
248 : integer, parameter :: e_hs = 108
249 : integer, parameter :: e_mt = 109
250 : integer, parameter :: e_ds = 110
251 : integer, parameter :: e_rg = 111
252 : integer, parameter :: e_cn = 112
253 :
254 : integer, parameter :: num_chem_elements = max_el_z
255 :
256 :
257 : ! anders & grevesse 1989
258 : integer, parameter :: solsiz = 286
259 : integer, parameter :: solnamelen = 5
260 : character (len=solnamelen) :: namsol(solsiz)
261 : integer :: izsol(solsiz),iasol(solsiz),jcode(solsiz)
262 : real(dp) :: solx(solsiz), zsol, yesol ! according to AG89
263 : type (integer_dict), pointer :: Xsol_names_dict
264 :
265 :
266 : ! various values for current solar Z and Y (at photosphere)
267 : ! note that these have been reduced by diffusion from pre-MS values.
268 : ! values updated from Asplund et al. ARAA, 2009, 47, 481
269 :
270 : real(dp), parameter :: AG89_zsol = 0.0201d0
271 : real(dp), parameter :: GN93_zsol = 0.0179d0
272 : real(dp), parameter :: GS98_zsol = 0.0169d0
273 : real(dp), parameter :: L03_zsol = 0.0133d0
274 : real(dp), parameter :: AGS05_zsol = 0.0122d0
275 : real(dp), parameter :: AGSS09_zsol = 0.0134d0
276 : real(dp), parameter :: L09_zsol = 0.0154d0
277 : real(dp), parameter :: A09_Prz_zsol = 0.014d0
278 : real(dp), parameter :: MB22_photospheric_zsol = 0.0169d0
279 : real(dp), parameter :: AAG21_photospheric_zsol = 0.0139d0
280 :
281 : real(dp), parameter :: AG89_ysol = 0.2485d0
282 : real(dp), parameter :: GN93_ysol = 0.2485d0
283 : real(dp), parameter :: GS98_ysol = 0.2485d0
284 : real(dp), parameter :: L03_ysol = 0.2377d0
285 : real(dp), parameter :: AGS05_ysol = 0.2485d0
286 : real(dp), parameter :: AGSS09_ysol = 0.2485d0
287 : real(dp), parameter :: L09_ysol = 0.2751d0
288 : real(dp), parameter :: A09_Prz_ysol = 0.276d0
289 : real(dp), parameter :: MB22_photospheric_ysol = 0.2485d0
290 : real(dp), parameter :: AAG21_photospheric_ysol = 0.2485d0
291 :
292 : character(len=iso_name_length) :: chem_element_main_iso_name(num_chem_elements)
293 : integer, parameter :: chem_element_name_len = iso_name_length
294 : character (len=chem_element_name_len) :: chem_element_Name(num_chem_elements)
295 : ! names for elements
296 :
297 :
298 : ! identifiers for different Z fractions.
299 : integer, parameter :: Custom_zfracs = 0
300 : integer, parameter :: AG89_zfracs = 1
301 : integer, parameter :: GN93_zfracs = 2
302 : integer, parameter :: GS98_zfracs = 3
303 : integer, parameter :: L03_zfracs = 4
304 : integer, parameter :: AGS05_zfracs = 5
305 : integer, parameter :: AGSS09_zfracs = 6
306 : integer, parameter :: L09_zfracs = 7
307 : integer, parameter :: A09_Prz_zfracs = 8
308 : integer, parameter :: MB22_photospheric_zfracs = 9
309 : integer, parameter :: AAG21_photospheric_zfracs = 10
310 :
311 :
312 : real(dp) :: AG89_element_zfrac(num_chem_elements) ! fraction by mass of total Z
313 : ! Anders & Grevesse 1989
314 :
315 : real(dp) :: GN93_element_zfrac(num_chem_elements) ! fraction by mass of total Z
316 : ! Grevesse and Noels 1993 abundances
317 :
318 : real(dp) :: GS98_element_zfrac(num_chem_elements) ! fraction by mass of total Z
319 : ! Grevesse and Sauval 1998 abundances
320 :
321 : real(dp) :: L03_element_zfrac(num_chem_elements) ! fraction by mass of total Z
322 : ! Lodders 2003 abundances
323 :
324 : real(dp) :: AGS05_element_zfrac(num_chem_elements) ! fraction by mass of total Z
325 : ! Asplund, Grevesse, and Sauval 2005 abundances
326 :
327 : real(dp) :: AGSS09_element_zfrac(num_chem_elements) ! fraction by mass of total Z
328 : ! Asplund, Grevesse, Sauval, and Scott 2009 abundances
329 : ! Annu. Rev. Astron. Astrophys. 2009. 47:481–522
330 :
331 : real(dp) :: L09_element_zfrac(num_chem_elements) ! fraction by mass of total Z
332 : ! Lodders and Palme, 2009. (http://adsabs.harvard.edu/abs/2009M%26PSA..72.5154L)
333 :
334 : real(dp) :: A09_Prz_zfrac(num_chem_elements) ! fraction by mass of the total Z
335 : ! Abundances are abased on Asplund, Grevesse, Sauval, and Scott 2009, ARA&A, 47:481–522
336 : ! but that of the some key elements are updated based on:
337 : ! "Present-day cosmic abundances ..."
338 : ! by Nieva, M.-F. & Przybilla, N. 2012, A&A, 539, 143
339 : ! and the proceeding paper
340 : ! "Hot Stars and Cosmic Abundances" by
341 : ! Przybilla N. Nieva M. F., Irrgang A. and Butler K. 2013, EAS Publ. Ser.
342 : ! in preparation
343 : ! The modified abundances w.r.t. A09 are (eps_El = log(El/H)+12.0)
344 : ! eps_He = 10.99
345 : ! eps_C = 8.33
346 : ! eps_N = 7.79
347 : ! eps_O = 8.76
348 : ! eps_Ne = 8.09 ! Cunha et al. (2006) give 8.11
349 : ! eps_Mg = 7.56
350 : ! eps_Al = 6.30
351 : ! eps_Si = 7.50
352 : ! eps_S = 7.14
353 : ! eps_Ar = 6.50
354 : ! eps_Fe = 7.52
355 :
356 : real(dp) :: MB22_photospheric_element_zfrac(num_chem_elements) ! fraction by mass of total Z
357 : ! Ekaterina Magg et al. , A&A 661, A140 (2022) photospheric abundance.
358 :
359 : real(dp) :: AAG21_photospheric_element_zfrac(num_chem_elements) ! fraction by mass of total Z
360 : ! Asplund et al. A&A 653, A141 (2021) photospheric abundance.
361 :
362 : type (integer_dict), pointer :: chem_element_names_dict
363 :
364 :
365 : real(dp) :: element_atomic_weight(num_chem_elements)
366 : ! de Laeter et al, Pure and Applied Chemistry 75(6), 683–799, 2003.
367 : ! (IUPAC Technical Report)
368 :
369 :
370 : ! temperature values at which partition function is defined
371 : real(dp), dimension(npart) :: Tpart
372 :
373 :
374 : ! mass excess of proton, neutron in MeV (for calculating binding energies)
375 : ! should be consistent with the mass excess of the prot and neut from the isotopes.data file
376 : ! Set in chem_isos_io.f90
377 : real(dp) :: del_Mp, del_Mn
378 :
379 : type nuclide_data
380 : integer :: nnuclides
381 : character(len=iso_name_length), dimension(:), pointer :: name ! name of nuclide
382 : integer, dimension(:), pointer :: chem_id ! (nnuclides)
383 : ! gives chem_id for member of nuclide_data
384 : integer, dimension(:), pointer :: nuclide ! (num_chem_isos)
385 : ! gives index in nuclide_data 1 .. nnuclides or 0 if not included
386 : real(dp), dimension(:), pointer :: W ! atomic weight (mass in amu units)
387 : integer, dimension(:), pointer :: Z ! number of protons
388 : integer, dimension(:), pointer :: N ! number of neutrons
389 : integer, dimension(:), pointer :: Z_plus_N ! number of baryons
390 : integer, dimension(:), pointer :: isomeric_state ! 0 is default
391 : real(dp), dimension(:), pointer :: spin ! ground-state spin
392 : real(dp), dimension(:), pointer :: binding_energy
393 : ! the binding energy is B = Z*del_Mp + N*del_Mn - mass_excess
394 : real(dp), dimension(:,:), pointer :: pfcn ! table of partition function
395 : real(dp), dimension(:), pointer :: mass_excess
396 : real(dp), dimension(:), pointer :: Z53 ! cache expensive Z^5/3 result
397 : end type nuclide_data
398 :
399 : type (nuclide_data) :: chem_isos ! from winvn
400 : type (integer_dict), pointer :: chem_isos_dict
401 : integer :: num_chem_isos ! no. entries in isotopes database
402 :
403 : ! storage container for a set of nuclides,
404 : ! used for extracting a subset of the full winvn database
405 : ! a set of nuclides is actually an array of these items
406 : type nuclide_set
407 : character(len=iso_name_length) :: nuclide
408 : integer :: rank
409 : end type nuclide_set
410 :
411 :
412 : ! reaction categories
413 :
414 : integer, parameter :: ipp = 1 ! pp chains
415 : integer, parameter :: icno = 2 ! cno cycles
416 : integer, parameter :: i3alf = 3 ! triple alpha
417 :
418 : ! "burn" in the following means decays or captures of protons, alphas, or neutrons
419 : integer, parameter :: i_burn_c = 4
420 : integer, parameter :: i_burn_n = 5
421 : integer, parameter :: i_burn_o = 6
422 : integer, parameter :: i_burn_ne = 7
423 : integer, parameter :: i_burn_na = 8
424 : integer, parameter :: i_burn_mg = 9
425 : integer, parameter :: i_burn_si = 10
426 : integer, parameter :: i_burn_s = 11
427 : integer, parameter :: i_burn_ar = 12
428 : integer, parameter :: i_burn_ca = 13
429 : integer, parameter :: i_burn_ti = 14
430 : integer, parameter :: i_burn_cr = 15
431 : integer, parameter :: i_burn_fe = 16
432 :
433 : integer, parameter :: icc = 17 ! c12 + c12
434 : integer, parameter :: ico = 18 ! c12 + o16
435 : integer, parameter :: ioo = 19 ! o16 + o16
436 :
437 : integer, parameter :: ipnhe4 = 20 ! 2prot + 2neut -> he4
438 :
439 : integer, parameter :: iphoto = 21 ! photodisintegration
440 : ! note: for photodisintegrations, eps_nuc will be negative.
441 :
442 : integer, parameter :: i_ni56_co56 = 22 ! ni56 -> co56
443 : integer, parameter :: i_co56_fe56 = 23 ! co56 -> fe56
444 : integer, parameter :: iother = 24 ! misc.
445 :
446 : integer, parameter :: num_categories = iother
447 :
448 : integer, parameter :: maxlen_category_name = 16
449 : character (len=maxlen_category_name) :: category_name(num_categories)
450 : type (integer_dict), pointer :: category_names_dict
451 :
452 :
453 : ! some commonly used values of get_nuclide_index
454 : integer :: &
455 : ih1, ih2, ih3, &
456 : ihe3, ihe4, &
457 : ili6, ili7, ili8, &
458 : ibe7, ibe8, ibe9, ibe10, ibe11, &
459 : ib8, ib10, ib11, ib12, ib13, ib14, &
460 : ic9, ic10, ic11, ic12, ic13, ic14, ic15, ic16, &
461 : in12, in13, in14, in15, in16, in17, in18, in19, in20, &
462 : io13, io14, io15, io16, io17, io18, io19, io20, &
463 : if15, if16, if17, if18, if19, if20, if21, if22, if23, if24, &
464 : ine17, ine18, ine19, ine20, ine21, ine22, ine23, ine24, ine25, &
465 : ine26, ine27, ine28, &
466 : ina20, ina21, ina22, ina23, ina24, ina25, ina26, ina27, ina28, &
467 : ina29, ina30, ina31, &
468 : img20, img21, img22, img23, img24, img25, img26, img27, img28, &
469 : img29, img30, img31, img32, img33, &
470 : ial22, ial23, ial24, ial25, ial26, ial27, ial28, ial29, ial30, &
471 : ial31, ial32, ial33, ial34, ial35, &
472 : isi22, isi23, isi24, isi25, isi26, isi27, isi28, isi29, isi30, &
473 : isi31, isi32, isi33, isi34, isi35, isi36, isi37, isi38, &
474 : ip26, ip27, ip28, ip29, ip30, ip31, ip32, ip33, ip34, ip35, &
475 : ip36, ip37, ip38, ip39, ip40, &
476 : is27, is28, is29, is30, is31, is32, is33, is34, is35, is36, &
477 : is37, is38, is39, is40, is41, is42, &
478 : icl31, icl32, icl33, icl34, icl35, icl36, icl37, icl38, icl39, &
479 : icl40, icl41, icl42, icl43, icl44, &
480 : iar31, iar32, iar33, iar34, iar35, iar36, iar37, iar38, iar39, &
481 : iar40, iar41, iar42, iar43, iar44, iar45, iar46, iar47, &
482 : ik35, ik36, ik37, ik38, ik39, ik40, ik41, ik42, ik43, ik44, ik45, ik46, ik47, &
483 : ica35, ica36, ica37, ica38, ica39, ica40, ica41, ica42, ica43, &
484 : ica44, ica45, ica46, ica47, ica48, ica49, ica50, ica51, ica52, ica53, &
485 : isc40, isc41, isc42, isc43, isc44, isc45, isc46, isc47, isc48, &
486 : isc49, isc50, isc51, isc52, isc53, &
487 : iti39, iti40, iti41, iti42, iti43, iti44, iti45, iti46, iti47, &
488 : iti48, iti49, iti50, iti51, iti52, iti53, iti54, iti55, &
489 : iv43, iv44, iv45, iv46, iv47, iv48, iv49, iv50, iv51, iv52, iv53, &
490 : iv54, iv55, iv56, iv57, &
491 : icr43, icr44, icr45, icr46, icr47, icr48, icr49, icr50, icr51, &
492 : icr52, icr53, icr54, icr55, icr56, icr57, icr58, icr59, &
493 : icr60, icr61, icr62, icr63, icr64, icr65, icr66, &
494 : imn46, imn47, imn48, imn49, imn50, imn51, imn52, imn53, imn54, &
495 : imn55, imn56, imn57, imn58, imn59, imn60, imn61, imn62, imn63, &
496 : ife46, ife47, ife48, ife49, ife50, ife51, ife52, ife53, ife54, ife55, ife56, &
497 : ife57, ife58, ife59, ife60, ife61, ife62, ife63, ife64, ife65, ife66, ife68, &
498 : ico50, ico51, ico52, ico53, ico54, ico55, ico56, ico57, ico58, &
499 : ico59, ico60, ico61, ico62, ico63, ico64, ico65, ico66, ico67, &
500 : ini50, ini51, ini52, ini53, ini54, ini55, ini56, ini57, ini58, &
501 : ini59, ini60, ini61, ini62, ini63, ini64, ini65, ini66, ini67, &
502 : ini68, ini69, ini70, ini71, ini72, ini73, &
503 : icu56, icu57, icu58, icu59, icu60, icu61, icu62, icu63, icu64, &
504 : icu65, icu66, icu67, icu68, icu69, icu70, icu71, icu72, &
505 : izn55, izn56, izn57, izn58, izn59, izn60, izn61, izn62, izn63, izn64, &
506 : izn65, izn66, izn67, izn68, izn69, izn70, izn71, izn72, izn73, izn74, &
507 : iga60, iga61, iga62, iga63, iga64, iga65, iga66, iga67, iga68, &
508 : iga69, iga70, iga71, iga72, iga73, iga74, iga75, &
509 : ige59, ige60, ige61, ige62, ige63, ige64, ige65, ige66, ige67, &
510 : ige68, ige69, ige70, ige71, ige72, ige73, ige74, ige75, ige76, &
511 : ias71,ias72, ias73, ias74, ias75, ias76, ias77, ias78, ias79, &
512 : ise68, ise69, ise70, ise71, ise72, ise73, ise74, ise75, ise76, &
513 : ikr70, ikr72, isr74, isr75, isr76, izr77, izr80, imo82, imo84, &
514 : iru86, iru87, iru88, ipd89, ipd91, ipd92, icd93, icd96, &
515 : isn98, isn100, isn102, isn104, &
516 : ineut, iprot
517 :
518 :
519 : logical :: chem_has_been_initialized = .false.
520 :
521 :
522 : contains
523 :
524 :
525 8 : subroutine init_chem_tables
526 : use utils_lib, only: integer_dict_define, integer_dict_create_hash
527 :
528 : integer :: i, ierr
529 :
530 : Tpart = [ &
531 : 0.10d0, 0.15d0, 0.20d0, 0.30d0, 0.40d0, 0.50d0, &
532 : 0.60d0, 0.70d0, 0.80d0, 0.90d0, 1.00d0, 1.50d0, &
533 : 2.00d0, 2.50d0, 3.00d0, 3.50d0, 4.00d0, 4.50d0, &
534 8 : 5.00d0, 6.00d0, 7.00d0, 8.00d0, 9.00d0, 10.0d0 ]
535 :
536 8 : call init_ag_data
537 :
538 8 : call init_chem_element_names
539 :
540 8 : call init_chem_element_main_iso_names
541 :
542 8 : call init_element_atomic_weights
543 :
544 8 : call init_AG89_data
545 :
546 8 : call init_GN93_data
547 :
548 8 : call init_GS98_data
549 :
550 8 : call init_L03_data
551 :
552 8 : call init_AGS05_data
553 :
554 8 : call init_AGSS09_data
555 :
556 8 : call init_A09_Przybilla_data
557 :
558 8 : call init_MB22_photospheric_data
559 :
560 8 : call init_AAG21_photospheric_data
561 :
562 8 : call init_L09_data
563 :
564 8 : nullify(chem_element_names_dict)
565 904 : do i=1,num_chem_elements
566 896 : call integer_dict_define(chem_element_names_dict, chem_element_Name(i), i, ierr)
567 904 : if (ierr /= 0) then
568 0 : write(*,*) 'FATAL ERROR: init_chem_tables failed in integer_dict_define'
569 0 : flush(6)
570 0 : call mesa_error(__FILE__,__LINE__)
571 : end if
572 : end do
573 8 : call integer_dict_create_hash(chem_element_names_dict, ierr)
574 8 : if (ierr /= 0) then
575 0 : write(*,*) 'FATAL ERROR: init_chem_tables failed in integer_dict_create_hash'
576 0 : flush(6)
577 0 : call mesa_error(__FILE__,__LINE__)
578 : end if
579 :
580 8 : call set_category_names
581 8 : nullify(category_names_dict)
582 200 : do i=1,num_categories
583 192 : call integer_dict_define(category_names_dict, category_name(i), i, ierr)
584 200 : if (ierr /= 0) then
585 0 : write(*,*) 'FATAL ERROR: rates_def_init failed in integer_dict_define'
586 0 : flush(6)
587 0 : call mesa_error(__FILE__,__LINE__)
588 : end if
589 : end do
590 8 : call integer_dict_create_hash(category_names_dict, ierr)
591 8 : if (ierr /= 0) then
592 0 : write(*,*) 'FATAL ERROR: rates_def_init failed in integer_dict_create_hash'
593 0 : flush(6)
594 0 : call mesa_error(__FILE__,__LINE__)
595 : end if
596 :
597 16 : end subroutine init_chem_tables
598 :
599 :
600 8 : subroutine init_ag_data
601 : use utils_lib
602 :
603 : real(dp) :: sum
604 : integer :: i, j, ierr
605 :
606 : !..names of the stable isotopes
607 : namsol(1:120) = [ &
608 : 'h1 ','h2 ','he3 ','he4 ','li6 ','li7 ','be9 ','b10 ', &
609 : 'b11 ','c12 ','c13 ','n14 ','n15 ','o16 ','o17 ','o18 ', &
610 : 'f19 ','ne20 ','ne21 ','ne22 ','na23 ','mg24 ','mg25 ','mg26 ', &
611 : 'al27 ','si28 ','si29 ','si30 ','p31 ','s32 ','s33 ','s34 ', &
612 : 's36 ','cl35 ','cl37 ','ar36 ','ar38 ','ar40 ','k39 ','k40 ', &
613 : 'k41 ','ca40 ','ca42 ','ca43 ','ca44 ','ca46 ','ca48 ','sc45 ', &
614 : 'ti46 ','ti47 ','ti48 ','ti49 ','ti50 ','v50 ','v51 ','cr50 ', &
615 : 'cr52 ','cr53 ','cr54 ','mn55 ','fe54 ','fe56 ','fe57 ','fe58 ', &
616 : 'co59 ','ni58 ','ni60 ','ni61 ','ni62 ','ni64 ','cu63 ','cu65 ', &
617 : 'zn64 ','zn66 ','zn67 ','zn68 ','zn70 ','ga69 ','ga71 ','ge70 ', &
618 : 'ge72 ','ge73 ','ge74 ','ge76 ','as75 ','se74 ','se76 ','se77 ', &
619 : 'se78 ','se80 ','se82 ','br79 ','br81 ','kr78 ','kr80 ','kr82 ', &
620 : 'kr83 ','kr84 ','kr86 ','rb85 ','rb87 ','sr84 ','sr86 ','sr87 ', &
621 : 'sr88 ','y89 ','zr90 ','zr91 ','zr92 ','zr94 ','zr96 ','nb93 ', &
622 968 : 'mo92 ','mo94 ','mo95 ','mo96 ','mo97 ','mo98 ','mo100','ru96 ' ]
623 :
624 : namsol(121:240) = [ &
625 : 'ru98 ','ru99 ','ru100','ru101','ru102','ru104','rh103','pd102', &
626 : 'pd104','pd105','pd106','pd108','pd110','ag107','ag109','cd106', &
627 : 'cd108','cd110','cd111','cd112','cd113','cd114','cd116','in113', &
628 : 'in115','sn112','sn114','sn115','sn116','sn117','sn118','sn119', &
629 : 'sn120','sn122','sn124','sb121','sb123','te120','te122','te123', &
630 : 'te124','te125','te126','te128','te130','i127 ','xe124','xe126', &
631 : 'xe128','xe129','xe130','xe131','xe132','xe134','xe136','cs133', &
632 : 'ba130','ba132','ba134','ba135','ba136','ba137','ba138','la138', &
633 : 'la139','ce136','ce138','ce140','ce142','pr141','nd142','nd143', &
634 : 'nd144','nd145','nd146','nd148','nd150','sm144','sm147','sm148', &
635 : 'sm149','sm150','sm152','sm154','eu151','eu153','gd152','gd154', &
636 : 'gd155','gd156','gd157','gd158','gd160','tb159','dy156','dy158', &
637 : 'dy160','dy161','dy162','dy163','dy164','ho165','er162','er164', &
638 : 'er166','er167','er168','er170','tm169','yb168','yb170','yb171', &
639 968 : 'yb172','yb173','yb174','yb176','lu175','lu176','hf174','hf176' ]
640 :
641 : namsol(241:286) = [ &
642 : 'hf177','hf178','hf179','hf180','ta180','ta181','w180 ','w182 ', &
643 : 'w183 ','w184 ','w186 ','re185','re187','os184','os186','os187', &
644 : 'os188','os189','os190','os192','ir191','ir193','pt190','pt192', &
645 : 'pt194','pt195','pt196','pt198','au197','hg196','hg198','hg199', &
646 : 'hg200','hg201','hg202','hg204','tl203','tl205','pb204','pb206', &
647 376 : 'pb207','pb208','bi209','th232','u235 ','u238 ' ]
648 :
649 :
650 : !..anders & grevesse 1989 solar mass fractions
651 : solx(1:45) = [ &
652 : 7.0573D-01, 4.8010D-05, 2.9291D-05, 2.7521D-01, 6.4957D-10, &
653 : 9.3490D-09, 1.6619D-10, 1.0674D-09, 4.7301D-09, 3.0324D-03, &
654 : 3.6501D-05, 1.1049D-03, 4.3634D-06, 9.5918D-03, 3.8873D-06, &
655 : 2.1673D-05, 4.0515D-07, 1.6189D-03, 4.1274D-06, 1.3022D-04, &
656 : 3.3394D-05, 5.1480D-04, 6.7664D-05, 7.7605D-05, 5.8052D-05, &
657 : 6.5301D-04, 3.4257D-05, 2.3524D-05, 8.1551D-06, 3.9581D-04, &
658 : 3.2221D-06, 1.8663D-05, 9.3793D-08, 2.5320D-06, 8.5449D-07, &
659 : 7.7402D-05, 1.5379D-05, 2.6307D-08, 3.4725D-06, 4.4519D-10, &
660 368 : 2.6342D-07, 5.9898D-05, 4.1964D-07, 8.9734D-07, 1.4135D-06 ]
661 :
662 : solx(46:90) = [ &
663 : 2.7926D-09, 1.3841D-07, 3.8929D-08, 2.2340D-07, 2.0805D-07, &
664 : 2.1491D-06, 1.6361D-07, 1.6442D-07, 9.2579D-10, 3.7669D-07, &
665 : 7.4240D-07, 1.4863D-05, 1.7160D-06, 4.3573D-07, 1.3286D-05, &
666 : 7.1301D-05, 1.1686D-03, 2.8548D-05, 3.6971D-06, 3.3579D-06, &
667 : 4.9441D-05, 1.9578D-05, 8.5944D-07, 2.7759D-06, 7.2687D-07, &
668 : 5.7528D-07, 2.6471D-07, 9.9237D-07, 5.8765D-07, 8.7619D-08, &
669 : 4.0593D-07, 1.3811D-08, 3.9619D-08, 2.7119D-08, 4.3204D-08, &
670 : 5.9372D-08, 1.7136D-08, 8.1237D-08, 1.7840D-08, 1.2445D-08, &
671 368 : 1.0295D-09, 1.0766D-08, 9.1542D-09, 2.9003D-08, 6.2529D-08 ]
672 :
673 : solx(91:135) = [ &
674 : 1.1823D-08, 1.1950D-08, 1.2006D-08, 3.0187D-10, 2.0216D-09, &
675 : 1.0682D-08, 1.0833D-08, 5.4607D-08, 1.7055D-08, 1.1008D-08, &
676 : 4.3353D-09, 2.8047D-10, 5.0468D-09, 3.6091D-09, 4.3183D-08, &
677 : 1.0446D-08, 1.3363D-08, 2.9463D-09, 4.5612D-09, 4.7079D-09, &
678 : 7.7706D-10, 1.6420D-09, 8.7966D-10, 5.6114D-10, 9.7562D-10, &
679 : 1.0320D-09, 5.9868D-10, 1.5245D-09, 6.2225D-10, 2.5012D-10, &
680 : 8.6761D-11, 5.9099D-10, 5.9190D-10, 8.0731D-10, 1.5171D-09, &
681 : 9.1547D-10, 8.9625D-10, 3.6637D-11, 4.0775D-10, 8.2335D-10, &
682 368 : 1.0189D-09, 1.0053D-09, 4.5354D-10, 6.8205D-10, 6.4517D-10 ]
683 :
684 : solx(136:180) = [ &
685 : 5.3893D-11, 3.9065D-11, 5.5927D-10, 5.7839D-10, 1.0992D-09, &
686 : 5.6309D-10, 1.3351D-09, 3.5504D-10, 2.2581D-11, 5.1197D-10, &
687 : 1.0539D-10, 7.1802D-11, 3.9852D-11, 1.6285D-09, 8.6713D-10, &
688 : 2.7609D-09, 9.8731D-10, 3.7639D-09, 5.4622D-10, 6.9318D-10, &
689 : 5.4174D-10, 4.1069D-10, 1.3052D-11, 3.8266D-10, 1.3316D-10, &
690 : 7.1827D-10, 1.0814D-09, 3.1553D-09, 4.9538D-09, 5.3600D-09, &
691 : 2.8912D-09, 1.7910D-11, 1.6223D-11, 3.3349D-10, 4.1767D-09, &
692 : 6.7411D-10, 3.3799D-09, 4.1403D-09, 1.5558D-09, 1.2832D-09, &
693 368 : 1.2515D-09, 1.5652D-11, 1.5125D-11, 3.6946D-10, 1.0108D-09 ]
694 :
695 : solx(181:225) = [ &
696 : 1.2144D-09, 1.7466D-09, 1.1240D-08, 1.3858D-12, 1.5681D-09, &
697 : 7.4306D-12, 9.9136D-12, 3.5767D-09, 4.5258D-10, 5.9562D-10, &
698 : 8.0817D-10, 3.6533D-10, 7.1757D-10, 2.5198D-10, 5.2441D-10, &
699 : 1.7857D-10, 1.7719D-10, 2.9140D-11, 1.4390D-10, 1.0931D-10, &
700 : 1.3417D-10, 7.2470D-11, 2.6491D-10, 2.2827D-10, 1.7761D-10, &
701 : 1.9660D-10, 2.5376D-12, 2.8008D-11, 1.9133D-10, 2.6675D-10, &
702 : 2.0492D-10, 3.2772D-10, 2.9180D-10, 2.8274D-10, 8.6812D-13, &
703 : 1.4787D-12, 3.7315D-11, 3.0340D-10, 4.1387D-10, 4.0489D-10, &
704 368 : 4.6047D-10, 3.7104D-10, 1.4342D-12, 1.6759D-11, 3.5397D-10 ]
705 :
706 : solx(226:270) = [ &
707 : 2.4332D-10, 2.8557D-10, 1.6082D-10, 1.6159D-10, 1.3599D-12, &
708 : 3.2509D-11, 1.5312D-10, 2.3624D-10, 1.7504D-10, 3.4682D-10, &
709 : 1.4023D-10, 1.5803D-10, 4.2293D-12, 1.0783D-12, 3.4992D-11, &
710 : 1.2581D-10, 1.8550D-10, 9.3272D-11, 2.4131D-10, 1.1292D-14, &
711 : 9.4772D-11, 7.8768D-13, 1.6113D-10, 8.7950D-11, 1.8989D-10, &
712 : 1.7878D-10, 9.0315D-11, 1.5326D-10, 5.6782D-13, 5.0342D-11, &
713 : 5.1086D-11, 4.2704D-10, 5.2110D-10, 8.5547D-10, 1.3453D-09, &
714 : 1.1933D-09, 2.0211D-09, 8.1702D-13, 5.0994D-11, 2.1641D-09, &
715 368 : 2.2344D-09, 1.6757D-09, 4.8231D-10, 9.3184D-10, 2.3797D-12 ]
716 :
717 : solx(271:286) = [ &
718 : 1.7079D-10, 2.8843D-10, 3.9764D-10, 2.2828D-10, 5.1607D-10, &
719 : 1.2023D-10, 2.7882D-10, 6.7411D-10, 3.1529D-10, 3.1369D-09, &
720 : 3.4034D-09, 9.6809D-09, 7.6127D-10, 1.9659D-10, 3.8519D-13, &
721 136 : 5.3760D-11 ]
722 :
723 :
724 : !..charge of the stable isotopes
725 :
726 : izsol(1:117) = [ &
727 : 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, &
728 : 8, 8, 8, 9, 10, 10, 10, 11, 12, 12, 12, 13, 14, &
729 : 14, 14, 15, 16, 16, 16, 16, 17, 17, 18, 18, 18, 19, &
730 : 19, 19, 20, 20, 20, 20, 20, 20, 21, 22, 22, 22, 22, &
731 : 22, 23, 23, 24, 24, 24, 24, 25, 26, 26, 26, 26, 27, &
732 : 28, 28, 28, 28, 28, 29, 29, 30, 30, 30, 30, 30, 31, &
733 : 31, 32, 32, 32, 32, 32, 33, 34, 34, 34, 34, 34, 34, &
734 : 35, 35, 36, 36, 36, 36, 36, 36, 37, 37, 38, 38, 38, &
735 944 : 38, 39, 40, 40, 40, 40, 40, 41, 42, 42, 42, 42, 42 ]
736 :
737 : izsol(118:234) = [ &
738 : 42, 42, 44, 44, 44, 44, 44, 44, 44, 45, 46, 46, 46, &
739 : 46, 46, 46, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, &
740 : 49, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, &
741 : 51, 52, 52, 52, 52, 52, 52, 52, 52, 53, 54, 54, 54, &
742 : 54, 54, 54, 54, 54, 54, 55, 56, 56, 56, 56, 56, 56, &
743 : 56, 57, 57, 58, 58, 58, 58, 59, 60, 60, 60, 60, 60, &
744 : 60, 60, 62, 62, 62, 62, 62, 62, 62, 63, 63, 64, 64, &
745 : 64, 64, 64, 64, 64, 65, 66, 66, 66, 66, 66, 66, 66, &
746 944 : 67, 68, 68, 68, 68, 68, 68, 69, 70, 70, 70, 70, 70 ]
747 :
748 : izsol(235:286) = [ &
749 : 70, 70, 71, 71, 72, 72, 72, 72, 72, 72, 73, 73, 74, &
750 : 74, 74, 74, 74, 75, 75, 76, 76, 76, 76, 76, 76, 76, &
751 : 77, 77, 78, 78, 78, 78, 78, 78, 79, 80, 80, 80, 80, &
752 424 : 80, 80, 80, 81, 81, 82, 82, 82, 82, 83, 90, 92, 92 ]
753 :
754 :
755 : !..number of nucleons (protons and neutrons) in the stable isotopes
756 :
757 : iasol(1:117) = [ &
758 : 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, &
759 : 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, &
760 : 29, 30, 31, 32, 33, 34, 36, 35, 37, 36, 38, 40, 39, &
761 : 40, 41, 40, 42, 43, 44, 46, 48, 45, 46, 47, 48, 49, &
762 : 50, 50, 51, 50, 52, 53, 54, 55, 54, 56, 57, 58, 59, &
763 : 58, 60, 61, 62, 64, 63, 65, 64, 66, 67, 68, 70, 69, &
764 : 71, 70, 72, 73, 74, 76, 75, 74, 76, 77, 78, 80, 82, &
765 : 79, 81, 78, 80, 82, 83, 84, 86, 85, 87, 84, 86, 87, &
766 944 : 88, 89, 90, 91, 92, 94, 96, 93, 92, 94, 95, 96, 97 ]
767 :
768 : iasol(118:234) = [ &
769 : 98, 100, 96, 98, 99, 100, 101, 102, 104, 103, 102, 104, 105, &
770 : 106, 108, 110, 107, 109, 106, 108, 110, 111, 112, 113, 114, 116, &
771 : 113, 115, 112, 114, 115, 116, 117, 118, 119, 120, 122, 124, 121, &
772 : 123, 120, 122, 123, 124, 125, 126, 128, 130, 127, 124, 126, 128, &
773 : 129, 130, 131, 132, 134, 136, 133, 130, 132, 134, 135, 136, 137, &
774 : 138, 138, 139, 136, 138, 140, 142, 141, 142, 143, 144, 145, 146, &
775 : 148, 150, 144, 147, 148, 149, 150, 152, 154, 151, 153, 152, 154, &
776 : 155, 156, 157, 158, 160, 159, 156, 158, 160, 161, 162, 163, 164, &
777 944 : 165, 162, 164, 166, 167, 168, 170, 169, 168, 170, 171, 172, 173 ]
778 :
779 : iasol(235:286) = [ &
780 : 174, 176, 175, 176, 174, 176, 177, 178, 179, 180, 180, 181, 180, &
781 : 182, 183, 184, 186, 185, 187, 184, 186, 187, 188, 189, 190, 192, &
782 : 191, 193, 190, 192, 194, 195, 196, 198, 197, 196, 198, 199, 200, &
783 424 : 201, 202, 204, 203, 205, 204, 206, 207, 208, 209, 232, 235, 238 ]
784 :
785 :
786 : ! jcode tells the type progenitors each stable species can have.
787 : ! jcode = 0 if the species is the only stable one of that a
788 : ! = 1 if the species can have proton-rich progenitors
789 : ! = 2 if the species can have neutron-rich progenitors
790 : ! = 3 if the species can only be made as itself (eg k40)
791 :
792 : jcode(1:286) = [ &
793 : 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, &
794 : 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, &
795 : 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 2, 0, &
796 : 3, 0, 1, 0, 0, 0, 2, 2, 0, 1, 0, 1, 0, &
797 : 2, 3, 0, 1, 0, 0, 2, 0, 1, 0, 0, 2, 0, &
798 : 1, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 2, 0, &
799 : 0, 1, 0, 0, 2, 2, 0, 1, 1, 0, 2, 2, 2, &
800 : 0, 0, 1, 1, 1, 0, 2, 2, 0, 2, 1, 1, 1, &
801 : 0, 0, 0, 0, 2, 2, 2, 0, 1, 1, 0, 3, 0, &
802 : 2, 2, 1, 1, 0, 1, 0, 2, 2, 0, 1, 1, 0, &
803 : 2, 2, 2, 0, 0, 1, 1, 1, 0, 2, 2, 2, 2, &
804 : 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 2, 2, 0, &
805 : 2, 1, 1, 1, 3, 0, 2, 2, 2, 0, 1, 1, 1, &
806 : 0, 3, 0, 2, 2, 2, 0, 1, 1, 1, 0, 3, 0, &
807 : 2, 3, 0, 1, 1, 0, 2, 0, 1, 0, 2, 0, 0, &
808 : 2, 2, 1, 0, 1, 0, 1, 2, 2, 0, 0, 1, 1, &
809 : 0, 2, 0, 2, 2, 0, 1, 1, 1, 0, 2, 0, 2, &
810 : 0, 1, 1, 0, 0, 2, 2, 0, 1, 1, 0, 0, 0, &
811 : 2, 2, 0, 3, 1, 1, 0, 0, 0, 2, 3, 0, 1, &
812 : 0, 0, 2, 2, 0, 2, 1, 1, 1, 0, 0, 2, 2, &
813 : 0, 0, 1, 1, 0, 0, 2, 2, 0, 1, 1, 0, 0, &
814 8 : 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
815 :
816 :
817 : ! get sum and stuff residual into hydrogen
818 8 : sum = 0.0d0
819 2296 : do j=1,solsiz
820 2296 : sum = sum + solx(j)
821 : end do
822 8 : sum = 1.0d0 - sum
823 8 : solx(1) = solx(1) + sum
824 :
825 8 : sum = 0.0d0
826 2296 : do j=1,solsiz
827 2296 : if (izsol(j) >= 3) then
828 2256 : sum = sum + solx(j)
829 : end if
830 : end do
831 8 : zsol = sum
832 :
833 8 : sum = 0.0d0
834 2296 : do j=1,solsiz
835 2296 : sum = sum + dble(izsol(j))/dble(iasol(j))*solx(j)
836 : end do
837 8 : yesol = sum
838 :
839 8 : nullify(Xsol_names_dict)
840 : ierr = 0
841 2296 : do i=1,solsiz
842 2288 : call integer_dict_define(Xsol_names_dict, namsol(i), i, ierr)
843 2296 : if (ierr /= 0) then
844 0 : write(*,*) 'FATAL ERROR: chem_init, init_ag_data failed in integer_dict_define'
845 0 : flush(6)
846 0 : call mesa_error(__FILE__,__LINE__)
847 : end if
848 : end do
849 8 : call integer_dict_define(Xsol_names_dict, 'p', 1, ierr)
850 8 : if (ierr /= 0) then
851 0 : write(*,*) 'FATAL ERROR: chem_init, init_ag_data failed in integer_dict_define'
852 0 : flush(6)
853 0 : call mesa_error(__FILE__,__LINE__)
854 : end if
855 8 : call integer_dict_define(Xsol_names_dict, 'd', 2, ierr)
856 8 : if (ierr /= 0) then
857 0 : write(*,*) 'FATAL ERROR: chem_init, init_ag_data failed in integer_dict_define'
858 0 : flush(6)
859 0 : call mesa_error(__FILE__,__LINE__)
860 : end if
861 8 : call integer_dict_create_hash(Xsol_names_dict, ierr)
862 8 : if (ierr /= 0) then
863 0 : write(*,*) 'FATAL ERROR: chem_init, init_ag_data failed in integer_dict_create_hash'
864 0 : flush(6)
865 0 : call mesa_error(__FILE__,__LINE__)
866 : end if
867 :
868 8 : end subroutine init_ag_data
869 :
870 :
871 8 : subroutine init_chem_element_names
872 : integer :: i
873 904 : chem_element_name(:) = ''
874 :
875 904 : chem_element_name(1:num_chem_elements) = el_name(1:num_chem_elements)
876 :
877 904 : do i=1,num_chem_elements
878 904 : if (len_trim(chem_element_name(i)) == 0) then
879 0 : write(*,*)'missing chem_element_name(i)', i
880 0 : flush(6)
881 0 : call mesa_error(__FILE__,__LINE__)
882 : end if
883 : end do
884 :
885 8 : end subroutine init_chem_element_names
886 :
887 :
888 8 : subroutine init_chem_element_main_iso_names
889 : ! the iso with the largest number abundance according to Lodders03
890 : integer :: i
891 904 : chem_element_main_iso_name(:) = ''
892 :
893 : !periodic table, row 1
894 8 : chem_element_main_iso_name(e_h) = 'h1'
895 8 : chem_element_main_iso_name(e_he) = 'he4'
896 :
897 : !periodic table, row 2
898 8 : chem_element_main_iso_name(e_li) = 'li7'
899 8 : chem_element_main_iso_name(e_be) = 'be9'
900 8 : chem_element_main_iso_name(e_b) = 'b11'
901 8 : chem_element_main_iso_name(e_c) = 'c12'
902 8 : chem_element_main_iso_name(e_n) = 'n14'
903 8 : chem_element_main_iso_name(e_o) = 'o16'
904 8 : chem_element_main_iso_name(e_f) = 'f19'
905 8 : chem_element_main_iso_name(e_ne) = 'ne20'
906 :
907 : !periodic table, row 3
908 8 : chem_element_main_iso_name(e_na) = 'na23'
909 8 : chem_element_main_iso_name(e_mg) = 'mg24'
910 8 : chem_element_main_iso_name(e_al) = 'al27'
911 8 : chem_element_main_iso_name(e_si) = 'si28'
912 8 : chem_element_main_iso_name(e_p) = 'p31'
913 8 : chem_element_main_iso_name(e_s) = 's32'
914 8 : chem_element_main_iso_name(e_cl) = 'cl35'
915 8 : chem_element_main_iso_name(e_ar) = 'ar36'
916 :
917 : !periodic table, row 4
918 8 : chem_element_main_iso_name(e_k) = 'k39'
919 8 : chem_element_main_iso_name(e_ca) = 'ca40'
920 8 : chem_element_main_iso_name(e_sc) = 'sc45'
921 8 : chem_element_main_iso_name(e_ti) = 'ti48'
922 8 : chem_element_main_iso_name(e_v) = 'v51'
923 8 : chem_element_main_iso_name(e_cr) = 'cr52'
924 8 : chem_element_main_iso_name(e_mn) = 'mn55'
925 8 : chem_element_main_iso_name(e_fe) = 'fe56'
926 8 : chem_element_main_iso_name(e_co) = 'co59'
927 8 : chem_element_main_iso_name(e_ni) = 'ni58'
928 8 : chem_element_main_iso_name(e_cu) = 'cu63'
929 8 : chem_element_main_iso_name(e_zn) = 'zn64'
930 8 : chem_element_main_iso_name(e_ga) = 'ga69'
931 8 : chem_element_main_iso_name(e_ge) = 'ge74'
932 8 : chem_element_main_iso_name(e_as) = 'as75'
933 8 : chem_element_main_iso_name(e_se) = 'se80'
934 8 : chem_element_main_iso_name(e_br) = 'br79'
935 8 : chem_element_main_iso_name(e_kr) = 'kr84'
936 :
937 : !periodic table, row 5
938 8 : chem_element_main_iso_name(e_rb) = 'rb85'
939 8 : chem_element_main_iso_name(e_sr) = 'sr88'
940 8 : chem_element_main_iso_name(e_y) = 'y89'
941 8 : chem_element_main_iso_name(e_zr) = 'zr90'
942 8 : chem_element_main_iso_name(e_nb) = 'nb93'
943 8 : chem_element_main_iso_name(e_mo) = 'mo98'
944 8 : chem_element_main_iso_name(e_tc) = 'tc97'
945 8 : chem_element_main_iso_name(e_ru) = 'ru102'
946 8 : chem_element_main_iso_name(e_rh) = 'rh103'
947 8 : chem_element_main_iso_name(e_pd) = 'pd106'
948 8 : chem_element_main_iso_name(e_ag) = 'ag107'
949 8 : chem_element_main_iso_name(e_cd) = 'cd114'
950 8 : chem_element_main_iso_name(e_in) = 'in115'
951 8 : chem_element_main_iso_name(e_sn) = 'sn120'
952 8 : chem_element_main_iso_name(e_sb) = 'sb121'
953 8 : chem_element_main_iso_name(e_te) = 'te130'
954 8 : chem_element_main_iso_name(e_i ) = 'i127'
955 8 : chem_element_main_iso_name(e_xe) = 'xe132'
956 :
957 : !periodic table, row 6
958 8 : chem_element_main_iso_name(e_cs) = 'cs133'
959 8 : chem_element_main_iso_name(e_ba) = 'ba138'
960 8 : chem_element_main_iso_name(e_la) = 'la139'
961 8 : chem_element_main_iso_name(e_ce) = 'ce140'
962 8 : chem_element_main_iso_name(e_pr) = 'pr141'
963 8 : chem_element_main_iso_name(e_nd) = 'nd142'
964 8 : chem_element_main_iso_name(e_pm) = 'pm145'
965 8 : chem_element_main_iso_name(e_sm) = 'sm152'
966 8 : chem_element_main_iso_name(e_eu) = 'eu153'
967 8 : chem_element_main_iso_name(e_gd) = 'gd158'
968 8 : chem_element_main_iso_name(e_tb) = 'tb159'
969 8 : chem_element_main_iso_name(e_dy) = 'dy164'
970 8 : chem_element_main_iso_name(e_ho) = 'ho165'
971 8 : chem_element_main_iso_name(e_er) = 'er166'
972 8 : chem_element_main_iso_name(e_tm) = 'tm169'
973 8 : chem_element_main_iso_name(e_yb) = 'yb174'
974 8 : chem_element_main_iso_name(e_lu) = 'lu175'
975 8 : chem_element_main_iso_name(e_hf) = 'hf180'
976 8 : chem_element_main_iso_name(e_ta) = 'ta181'
977 8 : chem_element_main_iso_name(e_w ) = 'w184'
978 8 : chem_element_main_iso_name(e_re) = 're187'
979 8 : chem_element_main_iso_name(e_os) = 'os192'
980 8 : chem_element_main_iso_name(e_ir) = 'ir193'
981 8 : chem_element_main_iso_name(e_pt) = 'pt195'
982 8 : chem_element_main_iso_name(e_au) = 'au197'
983 8 : chem_element_main_iso_name(e_hg) = 'hg202'
984 8 : chem_element_main_iso_name(e_tl) = 'tl205'
985 8 : chem_element_main_iso_name(e_pb) = 'pb208'
986 8 : chem_element_main_iso_name(e_bi) = 'bi209'
987 8 : chem_element_main_iso_name(e_po) = 'po210'
988 8 : chem_element_main_iso_name(e_at) = 'at210'
989 : ! need a rule here to continue for the unstable nuclei -- longest half-life?
990 8 : chem_element_main_iso_name(e_rn) = 'rn222'
991 8 : chem_element_main_iso_name(e_fr) = 'fr223'
992 8 : chem_element_main_iso_name(e_ra) = 'ra226'
993 8 : chem_element_main_iso_name(e_ac) = 'ac227'
994 8 : chem_element_main_iso_name(e_th) = 'th232'
995 8 : chem_element_main_iso_name(e_pa) = 'pa231'
996 8 : chem_element_main_iso_name(e_u) = 'u238'
997 8 : chem_element_main_iso_name(e_np) = 'np237'
998 8 : chem_element_main_iso_name(e_pu) = 'pu244'
999 8 : chem_element_main_iso_name(e_am) = 'am243'
1000 8 : chem_element_main_iso_name(e_cm) = 'cm247'
1001 8 : chem_element_main_iso_name(e_bk) = 'bk247'
1002 8 : chem_element_main_iso_name(e_cf) = 'cf251'
1003 8 : chem_element_main_iso_name(e_es) = 'es252'
1004 8 : chem_element_main_iso_name(e_fm) = 'fm257'
1005 8 : chem_element_main_iso_name(e_md) = 'md258'
1006 8 : chem_element_main_iso_name(e_no) = 'no259'
1007 8 : chem_element_main_iso_name(e_lr) = 'lr262'
1008 8 : chem_element_main_iso_name(e_rf) = 'rf261'
1009 8 : chem_element_main_iso_name(e_db) = 'db268'
1010 8 : chem_element_main_iso_name(e_sg) = 'sg271'
1011 8 : chem_element_main_iso_name(e_bh) = 'bh274'
1012 8 : chem_element_main_iso_name(e_hs) = 'hs270'
1013 8 : chem_element_main_iso_name(e_mt) = 'mt278'
1014 8 : chem_element_main_iso_name(e_ds) = 'ds281'
1015 8 : chem_element_main_iso_name(e_rg) = 'rg281'
1016 8 : chem_element_main_iso_name(e_cn) = 'cn285'
1017 :
1018 :
1019 904 : do i=1,num_chem_elements
1020 904 : if (len_trim(chem_element_main_iso_name(i)) == 0) then
1021 0 : write(*,*)'missing chem_element_main_iso_name', i
1022 0 : flush(6)
1023 0 : call mesa_error(__FILE__,__LINE__)
1024 : end if
1025 : end do
1026 :
1027 8 : end subroutine init_chem_element_main_iso_names
1028 :
1029 :
1030 8 : subroutine init_element_atomic_weights
1031 : use utils_lib, only: integer_dict_lookup
1032 : integer :: i, isotope_index, ierr
1033 8 : element_atomic_weight(:) = 0d0
1034 :
1035 904 : do i = e_h, e_cn
1036 896 : call integer_dict_lookup(chem_isos_dict, chem_element_main_iso_name(i), isotope_index, ierr)
1037 896 : if (ierr /= 0) then
1038 0 : call mesa_error(__FILE__,__LINE__,'init_element_atomic_weights')
1039 0 : return
1040 : end if
1041 1800 : element_atomic_weight(i) = chem_isos% W(isotope_index)
1042 : end do
1043 : end subroutine init_element_atomic_weights
1044 :
1045 :
1046 8 : subroutine init_AG89_data ! fraction by mass of total Z
1047 : ! anders & grevesse 1989, paper not available on ADS
1048 : integer :: i
1049 : real(dp) :: z_sum
1050 :
1051 8 : AG89_element_zfrac(:) = 0d0
1052 :
1053 8 : AG89_element_zfrac(e_li) = 5.2663415161043120D-07
1054 8 : AG89_element_zfrac(e_be) = 8.7533846996258026D-09
1055 8 : AG89_element_zfrac(e_b) = 3.0535981584981396D-07
1056 8 : AG89_element_zfrac(e_c) = 1.6164192224602159D-01
1057 8 : AG89_element_zfrac(e_n) = 5.8425953868553440D-02
1058 8 : AG89_element_zfrac(e_o) = 5.0655547566525427D-01
1059 8 : AG89_element_zfrac(e_f) = 2.1339634220190109D-05
1060 8 : AG89_element_zfrac(e_ne) = 9.2345201069972446D-02
1061 8 : AG89_element_zfrac(e_na) = 1.7588936076737712D-03
1062 8 : AG89_element_zfrac(e_mg) = 3.4766459385626718D-02
1063 8 : AG89_element_zfrac(e_al) = 3.0576538214253392D-03
1064 8 : AG89_element_zfrac(e_si) = 3.7438035164761560D-02
1065 8 : AG89_element_zfrac(e_p) = 4.2953684074804963D-04
1066 8 : AG89_element_zfrac(e_s) = 2.2000396518735602D-02
1067 8 : AG89_element_zfrac(e_cl) = 1.7836963566662123D-04
1068 8 : AG89_element_zfrac(e_ar) = 4.8868631434862610D-03
1069 8 : AG89_element_zfrac(e_k) = 1.8289986382724957D-04
1070 8 : AG89_element_zfrac(e_ca) = 3.2987013574392004D-03
1071 8 : AG89_element_zfrac(e_sc) = 2.0504272999081344D-06
1072 8 : AG89_element_zfrac(e_ti) = 1.5319766333496369D-04
1073 8 : AG89_element_zfrac(e_v) = 1.9889381301661414D-05
1074 8 : AG89_element_zfrac(e_cr) = 9.3528485499287748D-04
1075 8 : AG89_element_zfrac(e_mn) = 6.9978620325668458D-04
1076 8 : AG89_element_zfrac(e_fe) = 6.7005139944813982D-02
1077 8 : AG89_element_zfrac(e_co) = 1.7686377328884702D-04
1078 8 : AG89_element_zfrac(e_ni) = 3.8650578305194534D-03
1079 8 : AG89_element_zfrac(e_cu) = 4.4243068859971588D-05
1080 8 : AG89_element_zfrac(e_zn) = 1.0994428157112287D-04
1081 :
1082 904 : z_sum = sum(AG89_element_zfrac(:))
1083 232 : do i = e_li, e_zn
1084 232 : AG89_element_zfrac(i) = AG89_element_zfrac(i) / z_sum
1085 : end do
1086 :
1087 8 : end subroutine init_AG89_data
1088 :
1089 :
1090 8 : subroutine init_GN93_data ! fraction by mass of total Z
1091 : ! Grevesse and Noels 1993
1092 : integer :: i
1093 : real(dp) :: z_sum
1094 : include 'formats'
1095 :
1096 904 : GN93_element_zfrac(:) = -20.0d0
1097 :
1098 : !GN93_element_zfrac(e_H)=12.00d0
1099 : !GN93_element_zfrac(e_He)=10.99d0
1100 8 : GN93_element_zfrac(e_Li)=3.31d0 !meteor
1101 8 : GN93_element_zfrac(e_Be)=1.42d0 !meteor
1102 8 : GN93_element_zfrac(e_B )=2.79d0 !meteor
1103 8 : GN93_element_zfrac(e_C )=8.55d0
1104 8 : GN93_element_zfrac(e_N )=7.97d0
1105 8 : GN93_element_zfrac(e_O )=8.87d0
1106 8 : GN93_element_zfrac(e_F )=4.48d0
1107 8 : GN93_element_zfrac(e_Ne)=8.08d0
1108 8 : GN93_element_zfrac(e_Na)=6.33d0
1109 8 : GN93_element_zfrac(e_Mg)=7.58d0
1110 8 : GN93_element_zfrac(e_Al)=6.47d0
1111 8 : GN93_element_zfrac(e_Si)=7.55d0
1112 8 : GN93_element_zfrac(e_P )=5.45d0
1113 8 : GN93_element_zfrac(e_S )=7.20d0
1114 8 : GN93_element_zfrac(e_Cl)=5.28d0
1115 8 : GN93_element_zfrac(e_Ar)=6.52d0
1116 8 : GN93_element_zfrac(e_K )=5.12d0
1117 8 : GN93_element_zfrac(e_Ca)=6.36d0
1118 8 : GN93_element_zfrac(e_Sc)=3.17d0
1119 8 : GN93_element_zfrac(e_Ti)=5.02d0
1120 8 : GN93_element_zfrac(e_V )=4.00d0
1121 8 : GN93_element_zfrac(e_Cr)=5.67d0
1122 8 : GN93_element_zfrac(e_Mn)=5.39d0
1123 8 : GN93_element_zfrac(e_Fe)=7.50d0
1124 8 : GN93_element_zfrac(e_Co)=4.92d0
1125 8 : GN93_element_zfrac(e_Ni)=6.25d0
1126 8 : GN93_element_zfrac(e_Cu)=4.21d0
1127 8 : GN93_element_zfrac(e_Zn)=4.60d0
1128 8 : GN93_element_zfrac(e_Ga)=3.13d0
1129 8 : GN93_element_zfrac(e_Ge)=3.41d0
1130 8 : GN93_element_zfrac(e_As)=2.37d0
1131 8 : GN93_element_zfrac(e_Se)=3.38d0
1132 8 : GN93_element_zfrac(e_Br)=2.63d0
1133 8 : GN93_element_zfrac(e_Kr)=3.23d0
1134 8 : GN93_element_zfrac(e_Rb)=2.41d0
1135 8 : GN93_element_zfrac(e_Sr)=2.97d0
1136 8 : GN93_element_zfrac(e_Y )=2.24d0
1137 8 : GN93_element_zfrac(e_Zr)=2.60d0
1138 8 : GN93_element_zfrac(e_Nb)=1.42d0
1139 8 : GN93_element_zfrac(e_Mo)=1.92d0
1140 8 : GN93_element_zfrac(e_Ru)=1.84d0
1141 8 : GN93_element_zfrac(e_Rh)=1.12d0
1142 8 : GN93_element_zfrac(e_Pd)=1.69d0
1143 8 : GN93_element_zfrac(e_Ag)=1.24d0
1144 8 : GN93_element_zfrac(e_Cd)=1.77d0
1145 8 : GN93_element_zfrac(e_In)=0.82d0
1146 8 : GN93_element_zfrac(e_Sn)=2.14d0
1147 8 : GN93_element_zfrac(e_Sb)=1.03d0
1148 8 : GN93_element_zfrac(e_Te)=2.24d0
1149 8 : GN93_element_zfrac(e_I )=1.51d0
1150 8 : GN93_element_zfrac(e_Xe)=2.23d0
1151 8 : GN93_element_zfrac(e_Cs)=1.13d0
1152 8 : GN93_element_zfrac(e_Ba)=2.13d0
1153 8 : GN93_element_zfrac(e_La)=1.17d0
1154 8 : GN93_element_zfrac(e_Ce)=1.58d0
1155 8 : GN93_element_zfrac(e_Pr)=0.71d0
1156 8 : GN93_element_zfrac(e_Nd)=1.50d0
1157 8 : GN93_element_zfrac(e_Sm)=1.01d0
1158 8 : GN93_element_zfrac(e_Eu)=0.51d0
1159 8 : GN93_element_zfrac(e_Gd)=1.12d0
1160 8 : GN93_element_zfrac(e_Tb)=0.35d0
1161 8 : GN93_element_zfrac(e_Dy)=1.14d0
1162 8 : GN93_element_zfrac(e_Ho)=0.51d0
1163 8 : GN93_element_zfrac(e_Er)=0.93d0
1164 8 : GN93_element_zfrac(e_Tm)=0.15d0
1165 8 : GN93_element_zfrac(e_Yb)=1.08d0
1166 8 : GN93_element_zfrac(e_Lu)=0.13d0
1167 8 : GN93_element_zfrac(e_Hf)=0.88d0
1168 8 : GN93_element_zfrac(e_Ta)=-0.13d0
1169 8 : GN93_element_zfrac(e_W )=0.69d0
1170 8 : GN93_element_zfrac(e_Re)=0.28d0
1171 8 : GN93_element_zfrac(e_Os)=1.45d0
1172 8 : GN93_element_zfrac(e_Ir)=1.37d0
1173 8 : GN93_element_zfrac(e_Pt)=1.69d0
1174 8 : GN93_element_zfrac(e_Au)=0.87d0
1175 8 : GN93_element_zfrac(e_Hg)=1.17d0
1176 8 : GN93_element_zfrac(e_Tl)=0.83d0
1177 8 : GN93_element_zfrac(e_Pb)=2.06d0
1178 8 : GN93_element_zfrac(e_Bi)=0.71d0
1179 8 : GN93_element_zfrac(e_Th)=0.09d0
1180 8 : GN93_element_zfrac(e_U)=-0.50d0
1181 :
1182 : ! convert to fraction of Z by mass
1183 8 : z_sum = 0
1184 728 : do i = e_li, e_u
1185 : GN93_element_zfrac(i) = &
1186 720 : exp10(GN93_element_zfrac(i))*element_atomic_weight(i)
1187 728 : z_sum = z_sum + GN93_element_zfrac(i)
1188 : end do
1189 728 : do i = e_li, e_u
1190 728 : GN93_element_zfrac(i) = GN93_element_zfrac(i) / z_sum
1191 : end do
1192 :
1193 8 : end subroutine init_GN93_data
1194 :
1195 :
1196 8 : subroutine init_GS98_data ! fraction by mass of total Z
1197 : ! Grevesse and Sauval 1998, Table 1
1198 : integer :: i
1199 : real(dp) :: z_sum
1200 : include 'formats'
1201 :
1202 904 : GS98_element_zfrac(:) = -20.0d0
1203 :
1204 : !GS98_element_zfrac(e_H)=12.00d0
1205 : !GS98_element_zfrac(e_He)=10.93d0
1206 8 : GS98_element_zfrac(e_Li)=3.31d0 !meteor
1207 8 : GS98_element_zfrac(e_Be)=1.42d0 !meteor
1208 8 : GS98_element_zfrac(e_B)=2.79d0 !meteor
1209 8 : GS98_element_zfrac(e_C)=8.52d0
1210 8 : GS98_element_zfrac(e_N)=7.92d0
1211 8 : GS98_element_zfrac(e_O)=8.83d0
1212 8 : GS98_element_zfrac(e_F)=4.48d0
1213 8 : GS98_element_zfrac(e_Ne)=8.08d0
1214 8 : GS98_element_zfrac(e_Na)=6.32d0
1215 8 : GS98_element_zfrac(e_Mg)=7.58d0
1216 8 : GS98_element_zfrac(e_Al)=6.49d0
1217 8 : GS98_element_zfrac(e_Si)=7.56d0
1218 8 : GS98_element_zfrac(e_P)=5.56d0
1219 8 : GS98_element_zfrac(e_S)=7.20d0
1220 8 : GS98_element_zfrac(e_Cl)=5.28d0
1221 8 : GS98_element_zfrac(e_Ar)=6.40d0
1222 8 : GS98_element_zfrac(e_K)=5.13d0
1223 8 : GS98_element_zfrac(e_Ca)=6.35d0
1224 8 : GS98_element_zfrac(e_Sc)=3.10d0
1225 8 : GS98_element_zfrac(e_Ti)=4.94d0
1226 8 : GS98_element_zfrac(e_V)=4.02d0
1227 8 : GS98_element_zfrac(e_Cr)=5.69d0
1228 8 : GS98_element_zfrac(e_Mn)=5.53d0
1229 8 : GS98_element_zfrac(e_Fe)=7.50d0
1230 8 : GS98_element_zfrac(e_Co)=4.91d0
1231 8 : GS98_element_zfrac(e_Ni)=6.25d0
1232 8 : GS98_element_zfrac(e_Cu)=4.29d0
1233 8 : GS98_element_zfrac(e_Zn)=4.67d0
1234 8 : GS98_element_zfrac(e_Ga)=3.13d0
1235 8 : GS98_element_zfrac(e_Ge)=3.63d0
1236 8 : GS98_element_zfrac(e_As)=2.37d0
1237 8 : GS98_element_zfrac(e_Se)=3.41d0
1238 8 : GS98_element_zfrac(e_Br)=2.63d0
1239 8 : GS98_element_zfrac(e_Kr)=3.31d0
1240 8 : GS98_element_zfrac(e_Rb)=2.41d0
1241 8 : GS98_element_zfrac(e_Sr)=2.92d0
1242 8 : GS98_element_zfrac(e_Y)=2.23d0
1243 8 : GS98_element_zfrac(e_Zr)=2.61d0
1244 8 : GS98_element_zfrac(e_Nb)=1.40d0
1245 8 : GS98_element_zfrac(e_Mo)=1.97d0
1246 8 : GS98_element_zfrac(e_Ru)=1.83d0
1247 8 : GS98_element_zfrac(e_Rh)=1.10d0
1248 8 : GS98_element_zfrac(e_Pd)=1.70d0
1249 8 : GS98_element_zfrac(e_Ag)=1.24d0
1250 8 : GS98_element_zfrac(e_Cd)=1.76d0
1251 8 : GS98_element_zfrac(e_In)=0.82d0
1252 8 : GS98_element_zfrac(e_Sn)=2.14d0
1253 8 : GS98_element_zfrac(e_Sb)=1.03d0
1254 8 : GS98_element_zfrac(e_Te)=2.24d0
1255 8 : GS98_element_zfrac(e_I)=1.51d0
1256 8 : GS98_element_zfrac(e_Xe)=2.17d0
1257 8 : GS98_element_zfrac(e_Cs)=1.13d0
1258 8 : GS98_element_zfrac(e_Ba)=2.22d0
1259 8 : GS98_element_zfrac(e_La)=1.22d0
1260 8 : GS98_element_zfrac(e_Ce)=1.63d0
1261 8 : GS98_element_zfrac(e_Pr)=0.80d0
1262 8 : GS98_element_zfrac(e_Nd)=1.49d0
1263 8 : GS98_element_zfrac(e_Sm)=0.98d0
1264 8 : GS98_element_zfrac(e_Eu)=0.55d0
1265 8 : GS98_element_zfrac(e_Gd)=1.09d0
1266 8 : GS98_element_zfrac(e_Tb)=0.35d0
1267 8 : GS98_element_zfrac(e_Dy)=1.17d0
1268 8 : GS98_element_zfrac(e_Ho)=0.51d0
1269 8 : GS98_element_zfrac(e_Er)=0.97d0
1270 8 : GS98_element_zfrac(e_Tm)=0.15d0
1271 8 : GS98_element_zfrac(e_Yb)=0.96d0
1272 8 : GS98_element_zfrac(e_Lu)=0.13d0
1273 8 : GS98_element_zfrac(e_Hf)=0.75d0
1274 8 : GS98_element_zfrac(e_Ta)=-0.13d0
1275 8 : GS98_element_zfrac(e_W)=0.69d0
1276 8 : GS98_element_zfrac(e_Re)=0.28d0
1277 8 : GS98_element_zfrac(e_Os)=1.39d0
1278 8 : GS98_element_zfrac(e_Ir)=1.37d0
1279 8 : GS98_element_zfrac(e_Pt)=1.69d0
1280 8 : GS98_element_zfrac(e_Au)=0.85d0
1281 8 : GS98_element_zfrac(e_Hg)=1.13d0
1282 8 : GS98_element_zfrac(e_Tl)=0.83d0
1283 8 : GS98_element_zfrac(e_Pb)=2.06d0
1284 8 : GS98_element_zfrac(e_Bi)=0.71d0
1285 8 : GS98_element_zfrac(e_Th)=0.09d0
1286 8 : GS98_element_zfrac(e_U)=-0.50d0
1287 :
1288 : ! convert to fraction of Z by mass
1289 8 : z_sum = 0d0
1290 728 : do i = e_li, e_u
1291 : GS98_element_zfrac(i) = &
1292 720 : exp10(GS98_element_zfrac(i))*element_atomic_weight(i)
1293 728 : z_sum = z_sum + GS98_element_zfrac(i)
1294 : end do
1295 728 : do i = e_li, e_u
1296 728 : GS98_element_zfrac(i) = GS98_element_zfrac(i) / z_sum
1297 : end do
1298 :
1299 8 : end subroutine init_GS98_data
1300 :
1301 8 : subroutine init_L03_data ! fraction by mass of total Z
1302 : ! Lodders 2003, ApJ, Table 1 recommended abundance
1303 : integer :: i
1304 : real(dp) :: z_sum
1305 : include 'formats'
1306 :
1307 904 : L03_element_zfrac(:) = -20.0d0
1308 :
1309 : !L03_element_zfrac(e_H)=12d0
1310 : !L03_element_zfrac(e_He)=10.89d0
1311 8 : L03_element_zfrac(e_Li)=3.28d0
1312 8 : L03_element_zfrac(e_Be)=1.41d0
1313 8 : L03_element_zfrac(e_B)=2.78d0
1314 8 : L03_element_zfrac(e_C)=8.39d0
1315 8 : L03_element_zfrac(e_N)=7.83d0
1316 8 : L03_element_zfrac(e_O)=8.69d0
1317 8 : L03_element_zfrac(e_F)=4.46d0
1318 8 : L03_element_zfrac(e_Ne)=7.87d0
1319 8 : L03_element_zfrac(e_Na)=6.30d0
1320 8 : L03_element_zfrac(e_Mg)=7.55d0
1321 8 : L03_element_zfrac(e_Al)=6.46d0
1322 8 : L03_element_zfrac(e_Si)=7.54d0
1323 8 : L03_element_zfrac(e_P)=5.46d0
1324 8 : L03_element_zfrac(e_S)=7.19d0
1325 8 : L03_element_zfrac(e_Cl)=5.26d0
1326 8 : L03_element_zfrac(e_Ar)=6.55d0
1327 8 : L03_element_zfrac(e_K)=5.11d0
1328 8 : L03_element_zfrac(e_Ca)=6.34d0
1329 8 : L03_element_zfrac(e_Sc)=3.07d0
1330 8 : L03_element_zfrac(e_Ti)=4.92d0
1331 8 : L03_element_zfrac(e_V)=4.00d0
1332 8 : L03_element_zfrac(e_Cr)=5.65d0
1333 8 : L03_element_zfrac(e_Mn)=5.50d0
1334 8 : L03_element_zfrac(e_Fe)=7.47d0
1335 8 : L03_element_zfrac(e_Co)=4.91d0
1336 8 : L03_element_zfrac(e_Ni)=6.22d0
1337 8 : L03_element_zfrac(e_Cu)=4.26d0
1338 8 : L03_element_zfrac(e_Zn)=4.63d0
1339 8 : L03_element_zfrac(e_Ga)=3.10d0
1340 8 : L03_element_zfrac(e_Ge)=3.62d0
1341 8 : L03_element_zfrac(e_As)=2.32d0
1342 8 : L03_element_zfrac(e_Se)=3.36d0
1343 8 : L03_element_zfrac(e_Br)=2.59d0
1344 8 : L03_element_zfrac(e_Kr)=3.28d0
1345 8 : L03_element_zfrac(e_Rb)=2.36d0
1346 8 : L03_element_zfrac(e_Sr)=2.91d0
1347 8 : L03_element_zfrac(e_Y)=2.20d0
1348 8 : L03_element_zfrac(e_Zr)=2.60d0
1349 8 : L03_element_zfrac(e_Nb)=1.42d0
1350 8 : L03_element_zfrac(e_Mo)=1.96d0
1351 8 : L03_element_zfrac(e_Ru)=1.82d0
1352 8 : L03_element_zfrac(e_Rh)=1.11d0
1353 8 : L03_element_zfrac(e_Pd)=1.70d0
1354 8 : L03_element_zfrac(e_Ag)=1.23d0
1355 8 : L03_element_zfrac(e_Cd)=1.74d0
1356 8 : L03_element_zfrac(e_In)=0.80d0
1357 8 : L03_element_zfrac(e_Sn)=2.11d0
1358 8 : L03_element_zfrac(e_Sb)=1.06d0
1359 8 : L03_element_zfrac(e_Te)=2.22d0
1360 8 : L03_element_zfrac(e_I)=1.54d0
1361 8 : L03_element_zfrac(e_Xe)=2.27d0
1362 8 : L03_element_zfrac(e_Cs)=1.10d0
1363 8 : L03_element_zfrac(e_Ba)=2.18d0
1364 8 : L03_element_zfrac(e_La)=1.18d0
1365 8 : L03_element_zfrac(e_Ce)=1.61d0
1366 8 : L03_element_zfrac(e_Pr)=0.78d0
1367 8 : L03_element_zfrac(e_Nd)=1.46d0
1368 8 : L03_element_zfrac(e_Sm)=0.95d0
1369 8 : L03_element_zfrac(e_Eu)=0.52d0
1370 8 : L03_element_zfrac(e_Gd)=1.06d0
1371 8 : L03_element_zfrac(e_Tb)=0.31d0
1372 8 : L03_element_zfrac(e_Dy)=1.13d0
1373 8 : L03_element_zfrac(e_Ho)=0.49d0
1374 8 : L03_element_zfrac(e_Er)=0.95d0
1375 8 : L03_element_zfrac(e_Tm)=0.11d0
1376 8 : L03_element_zfrac(e_Yb)=0.94d0
1377 8 : L03_element_zfrac(e_Lu)=0.09d0
1378 8 : L03_element_zfrac(e_Hf)=0.77d0
1379 8 : L03_element_zfrac(e_Ta)=-0.14d0
1380 8 : L03_element_zfrac(e_W)=0.65d0
1381 8 : L03_element_zfrac(e_Re)=0.26d0
1382 8 : L03_element_zfrac(e_Os)=1.37d0
1383 8 : L03_element_zfrac(e_Ir)=1.35d0
1384 8 : L03_element_zfrac(e_Pt)=1.67d0
1385 8 : L03_element_zfrac(e_Au)=0.83d0
1386 8 : L03_element_zfrac(e_Hg)=1.16d0
1387 8 : L03_element_zfrac(e_Tl)=0.81d0
1388 8 : L03_element_zfrac(e_Pb)=2.05d0
1389 8 : L03_element_zfrac(e_Bi)=0.68d0
1390 8 : L03_element_zfrac(e_Th)=0.09d0
1391 8 : L03_element_zfrac(e_U)=-0.49d0
1392 :
1393 : ! convert to fraction of Z by mass
1394 8 : z_sum = 0d0
1395 728 : do i = e_li, e_u
1396 : L03_element_zfrac(i) = &
1397 720 : exp10(L03_element_zfrac(i))*element_atomic_weight(i)
1398 728 : z_sum = z_sum + L03_element_zfrac(i)
1399 : end do
1400 728 : do i = e_li, e_u
1401 728 : L03_element_zfrac(i) = L03_element_zfrac(i) / z_sum
1402 : end do
1403 :
1404 8 : end subroutine init_L03_data
1405 :
1406 :
1407 8 : subroutine init_AGS05_data ! fraction by mass of total Z
1408 : ! Asplund, Grevesse and Sauval 2005
1409 : integer :: i
1410 : real(dp) :: z_sum
1411 : include 'formats'
1412 :
1413 904 : AGS05_element_zfrac(:) = -20.0d0
1414 :
1415 : ! first store log abundances from the paper (photosphere unless otherwise noted)
1416 : ! relative to log abundance of H = 12.00d0
1417 8 : AGS05_element_zfrac(e_li) = 3.25d0 !meteor
1418 8 : AGS05_element_zfrac(e_be) = 1.38d0
1419 8 : AGS05_element_zfrac(e_b ) = 2.70d0
1420 8 : AGS05_element_zfrac(e_c ) = 8.39d0
1421 8 : AGS05_element_zfrac(e_n ) = 7.78d0
1422 8 : AGS05_element_zfrac(e_o ) = 8.66d0
1423 8 : AGS05_element_zfrac(e_f ) = 4.56d0
1424 8 : AGS05_element_zfrac(e_ne) = 7.84d0 !indirect
1425 8 : AGS05_element_zfrac(e_na) = 6.17d0
1426 8 : AGS05_element_zfrac(e_mg) = 7.53d0
1427 8 : AGS05_element_zfrac(e_al) = 6.37d0
1428 8 : AGS05_element_zfrac(e_si) = 7.51d0
1429 8 : AGS05_element_zfrac(e_p ) = 5.36d0
1430 8 : AGS05_element_zfrac(e_s ) = 7.14d0
1431 8 : AGS05_element_zfrac(e_cl) = 5.50d0
1432 8 : AGS05_element_zfrac(e_ar) = 6.18d0 !indirect
1433 8 : AGS05_element_zfrac(e_k ) = 5.08d0
1434 8 : AGS05_element_zfrac(e_ca) = 6.31d0
1435 8 : AGS05_element_zfrac(e_sc) = 3.05d0
1436 8 : AGS05_element_zfrac(e_ti) = 4.90d0
1437 8 : AGS05_element_zfrac(e_v ) = 4.00d0
1438 8 : AGS05_element_zfrac(e_cr) = 5.64d0
1439 8 : AGS05_element_zfrac(e_mn) = 5.39d0
1440 8 : AGS05_element_zfrac(e_fe) = 7.45d0
1441 8 : AGS05_element_zfrac(e_co) = 4.92d0
1442 8 : AGS05_element_zfrac(e_ni) = 6.23d0
1443 8 : AGS05_element_zfrac(e_cu) = 4.21d0
1444 8 : AGS05_element_zfrac(e_zn) = 4.60d0
1445 8 : AGS05_element_zfrac(e_ga) = 2.88d0
1446 8 : AGS05_element_zfrac(e_ge) = 3.58d0
1447 8 : AGS05_element_zfrac(e_as) = 2.29d0 !meteor
1448 8 : AGS05_element_zfrac(e_se) = 3.33d0 !meteor
1449 8 : AGS05_element_zfrac(e_br) = 2.56d0 !meteor
1450 8 : AGS05_element_zfrac(e_kr) = 3.28d0 !indirect
1451 8 : AGS05_element_zfrac(e_rb) = 2.60d0
1452 8 : AGS05_element_zfrac(e_sr) = 2.92d0
1453 8 : AGS05_element_zfrac(e_y ) = 2.21d0
1454 8 : AGS05_element_zfrac(e_zr) = 2.59d0
1455 8 : AGS05_element_zfrac(e_nb) = 1.42d0
1456 8 : AGS05_element_zfrac(e_mo) = 1.92d0
1457 8 : AGS05_element_zfrac(e_Ru) = 1.84d0
1458 8 : AGS05_element_zfrac(e_Rh) = 1.12d0
1459 8 : AGS05_element_zfrac(e_Pd) = 1.69d0
1460 8 : AGS05_element_zfrac(e_Ag) = 0.94d0
1461 8 : AGS05_element_zfrac(e_Cd) = 1.77d0
1462 8 : AGS05_element_zfrac(e_In) = 1.60d0
1463 8 : AGS05_element_zfrac(e_Sn) = 2.00d0
1464 8 : AGS05_element_zfrac(e_Sb) = 1.00d0
1465 8 : AGS05_element_zfrac(e_Te) = 2.19d0 !meteor
1466 8 : AGS05_element_zfrac(e_I ) = 1.51d0 !meteor
1467 8 : AGS05_element_zfrac(e_Xe) = 2.27d0 !indirect
1468 8 : AGS05_element_zfrac(e_Cs) = 1.07d0 !meteor
1469 8 : AGS05_element_zfrac(e_Ba) = 2.17d0
1470 8 : AGS05_element_zfrac(e_La) = 1.13d0
1471 8 : AGS05_element_zfrac(e_Ce) = 1.58d0
1472 8 : AGS05_element_zfrac(e_Pr) = 0.71d0
1473 8 : AGS05_element_zfrac(e_Nd) = 1.45d0
1474 8 : AGS05_element_zfrac(e_Sm) = 1.01d0
1475 8 : AGS05_element_zfrac(e_Eu) = 0.52d0
1476 8 : AGS05_element_zfrac(e_Gd) = 1.12d0
1477 8 : AGS05_element_zfrac(e_Tb) = 0.28d0
1478 8 : AGS05_element_zfrac(e_Dy) = 1.14d0
1479 8 : AGS05_element_zfrac(e_Ho) = 0.51d0
1480 8 : AGS05_element_zfrac(e_Er) = 0.93d0
1481 8 : AGS05_element_zfrac(e_Tm) = 0.00d0
1482 8 : AGS05_element_zfrac(e_Yb) = 1.08d0
1483 8 : AGS05_element_zfrac(e_Lu) = 0.06d0
1484 8 : AGS05_element_zfrac(e_Hf) = 0.88d0
1485 8 : AGS05_element_zfrac(e_Ta) = -0.17d0 !meteor
1486 8 : AGS05_element_zfrac(e_W ) = 1.11d0
1487 8 : AGS05_element_zfrac(e_Re) = 0.23d0 !meteor
1488 8 : AGS05_element_zfrac(e_Os) = 1.45d0
1489 8 : AGS05_element_zfrac(e_Ir) = 1.38d0
1490 8 : AGS05_element_zfrac(e_Pt) = 1.64d0 !meteor
1491 8 : AGS05_element_zfrac(e_Au) = 1.01d0
1492 8 : AGS05_element_zfrac(e_Hg) = 1.13d0 !meteor
1493 8 : AGS05_element_zfrac(e_Tl) = 0.90d0
1494 8 : AGS05_element_zfrac(e_Pb) = 2.00d0
1495 8 : AGS05_element_zfrac(e_Bi) = 0.65d0 !meteor
1496 8 : AGS05_element_zfrac(e_Th) = 0.06d0 !meteor
1497 8 : AGS05_element_zfrac(e_U) = -0.52d0
1498 :
1499 : ! convert to fraction of Z by mass
1500 8 : z_sum = 0d0
1501 728 : do i = e_li, e_u
1502 : AGS05_element_zfrac(i) = &
1503 720 : exp10(AGS05_element_zfrac(i))*element_atomic_weight(i)
1504 728 : z_sum = z_sum + AGS05_element_zfrac(i)
1505 : end do
1506 728 : do i = e_li, e_u
1507 728 : AGS05_element_zfrac(i) = AGS05_element_zfrac(i) / z_sum
1508 : end do
1509 :
1510 8 : end subroutine init_AGS05_data
1511 :
1512 :
1513 8 : subroutine init_AGSS09_data ! fraction by mass of total Z
1514 : ! Asplund, Grevesse, Sauval, and Scott 2009 abundances
1515 : ! Annu. Rev. Astron. Astrophys. 2009. 47:481–522
1516 : integer :: i
1517 : real(dp) :: z_sum
1518 : include 'formats'
1519 :
1520 904 : AGSS09_element_zfrac(:) = -20.0d0
1521 :
1522 : ! first store log abundances from the paper
1523 8 : AGSS09_element_zfrac(e_li) = 3.26d0
1524 8 : AGSS09_element_zfrac(e_be) = 1.38d0
1525 8 : AGSS09_element_zfrac(e_b ) = 2.70d0
1526 8 : AGSS09_element_zfrac(e_c ) = 8.43d0
1527 8 : AGSS09_element_zfrac(e_n ) = 7.83d0
1528 8 : AGSS09_element_zfrac(e_o ) = 8.69d0
1529 8 : AGSS09_element_zfrac(e_f ) = 4.56d0
1530 8 : AGSS09_element_zfrac(e_ne) = 7.93d0
1531 8 : AGSS09_element_zfrac(e_na) = 6.24d0
1532 8 : AGSS09_element_zfrac(e_mg) = 7.60d0
1533 8 : AGSS09_element_zfrac(e_al) = 6.45d0
1534 8 : AGSS09_element_zfrac(e_si) = 7.51d0
1535 8 : AGSS09_element_zfrac(e_p ) = 5.41d0
1536 8 : AGSS09_element_zfrac(e_s ) = 7.12d0
1537 8 : AGSS09_element_zfrac(e_cl) = 5.50d0
1538 8 : AGSS09_element_zfrac(e_ar) = 6.40d0
1539 8 : AGSS09_element_zfrac(e_k ) = 5.03d0
1540 8 : AGSS09_element_zfrac(e_ca) = 6.34d0
1541 8 : AGSS09_element_zfrac(e_sc) = 3.15d0
1542 8 : AGSS09_element_zfrac(e_ti) = 4.95d0
1543 8 : AGSS09_element_zfrac(e_v ) = 3.93d0
1544 8 : AGSS09_element_zfrac(e_cr) = 5.64d0
1545 8 : AGSS09_element_zfrac(e_mn) = 5.43d0
1546 8 : AGSS09_element_zfrac(e_fe) = 7.50d0
1547 8 : AGSS09_element_zfrac(e_co) = 4.99d0
1548 8 : AGSS09_element_zfrac(e_ni) = 6.22d0
1549 8 : AGSS09_element_zfrac(e_cu) = 4.19d0
1550 8 : AGSS09_element_zfrac(e_zn) = 4.56d0
1551 8 : AGSS09_element_zfrac(e_ga) = 3.04d0
1552 8 : AGSS09_element_zfrac(e_ge) = 3.65d0
1553 8 : AGSS09_element_zfrac(e_as) = 2.30d0 !meteor
1554 8 : AGSS09_element_zfrac(e_se) = 3.34d0 !meteor
1555 8 : AGSS09_element_zfrac(e_br) = 2.54d0 !meteor
1556 8 : AGSS09_element_zfrac(e_kr) = 3.25d0 !indirect
1557 8 : AGSS09_element_zfrac(e_rb) = 2.52d0
1558 8 : AGSS09_element_zfrac(e_sr) = 2.87d0
1559 8 : AGSS09_element_zfrac(e_y ) = 2.21d0
1560 8 : AGSS09_element_zfrac(e_zr) = 2.58d0
1561 8 : AGSS09_element_zfrac(e_nb) = 1.46d0
1562 8 : AGSS09_element_zfrac(e_mo) = 1.88d0
1563 8 : AGSS09_element_zfrac(e_Ru) = 1.75d0
1564 8 : AGSS09_element_zfrac(e_Rh) = 0.91d0
1565 8 : AGSS09_element_zfrac(e_Pd) = 1.57d0
1566 8 : AGSS09_element_zfrac(e_Ag) = 0.94d0
1567 8 : AGSS09_element_zfrac(e_Cd) = 1.71d0
1568 8 : AGSS09_element_zfrac(e_In) = 0.80d0
1569 8 : AGSS09_element_zfrac(e_Sn) = 2.04d0
1570 8 : AGSS09_element_zfrac(e_Sb) = 1.01d0
1571 8 : AGSS09_element_zfrac(e_Te) = 2.18d0
1572 8 : AGSS09_element_zfrac(e_I ) = 1.55d0
1573 8 : AGSS09_element_zfrac(e_Xe) = 2.24d0
1574 8 : AGSS09_element_zfrac(e_Cs) = 1.08d0
1575 8 : AGSS09_element_zfrac(e_Ba) = 2.18d0
1576 8 : AGSS09_element_zfrac(e_La) = 1.10d0
1577 8 : AGSS09_element_zfrac(e_Ce) = 1.58d0
1578 8 : AGSS09_element_zfrac(e_Pr) = 0.72d0
1579 8 : AGSS09_element_zfrac(e_Nd) = 1.42d0
1580 8 : AGSS09_element_zfrac(e_Sm) = 0.96d0
1581 8 : AGSS09_element_zfrac(e_Eu) = 0.52d0
1582 8 : AGSS09_element_zfrac(e_Gd) = 1.07d0
1583 8 : AGSS09_element_zfrac(e_Tb) = 0.30d0
1584 8 : AGSS09_element_zfrac(e_Dy) = 1.10d0
1585 8 : AGSS09_element_zfrac(e_Ho) = 0.48d0
1586 8 : AGSS09_element_zfrac(e_Er) = 0.92d0
1587 8 : AGSS09_element_zfrac(e_Tm) = 0.10d0
1588 8 : AGSS09_element_zfrac(e_Yb) = 0.84d0
1589 8 : AGSS09_element_zfrac(e_Lu) = 0.10d0
1590 8 : AGSS09_element_zfrac(e_Hf) = 0.85d0
1591 8 : AGSS09_element_zfrac(e_Ta) = -0.12d0
1592 8 : AGSS09_element_zfrac(e_W ) = 0.85d0
1593 8 : AGSS09_element_zfrac(e_Re) = 0.26d0
1594 8 : AGSS09_element_zfrac(e_Os) = 1.40d0
1595 8 : AGSS09_element_zfrac(e_Ir) = 1.38d0
1596 8 : AGSS09_element_zfrac(e_Pt) = 1.62d0
1597 8 : AGSS09_element_zfrac(e_Au) = 0.92d0
1598 8 : AGSS09_element_zfrac(e_Hg) = 1.17d0
1599 8 : AGSS09_element_zfrac(e_Tl) = 0.90d0
1600 8 : AGSS09_element_zfrac(e_Pb) = 1.75d0
1601 8 : AGSS09_element_zfrac(e_Bi) = 0.65d0
1602 8 : AGSS09_element_zfrac(e_Th) = 0.02d0
1603 8 : AGSS09_element_zfrac(e_U) = -0.54d0
1604 :
1605 : ! convert to fraction of Z by mass
1606 8 : z_sum = 0
1607 728 : do i = e_li, e_u
1608 : AGSS09_element_zfrac(i) = &
1609 720 : exp10(AGSS09_element_zfrac(i))*element_atomic_weight(i)
1610 728 : z_sum = z_sum + AGSS09_element_zfrac(i)
1611 : end do
1612 728 : do i = e_li, e_u
1613 728 : AGSS09_element_zfrac(i) = AGSS09_element_zfrac(i) / z_sum
1614 : end do
1615 :
1616 8 : end subroutine init_AGSS09_data
1617 :
1618 :
1619 8 : subroutine init_A09_Przybilla_data ! fraction by mass of total Z
1620 : ! provided by Ehsan Moravveji, Oct 12, 2013.
1621 : ! The mass fraction is taken from Asplund et al. (2009), and modified by the
1622 : ! B-star measurement of Nieva & Przybilla 2012, A&A, 539, 143 and
1623 : ! Przybilla et al. (2013), EAS proceeding to be published
1624 : ! The modified elements are: he, c, n, o, ne, mg, al, si, s, ar, fe
1625 : integer :: i
1626 : real(dp) :: z_sum
1627 : include 'formats'
1628 :
1629 904 : A09_Prz_zfrac(:) = -20.0d0
1630 :
1631 : ! A09_Prz_zfrac(e_h ) = 12.00d0
1632 : ! A09_Prz_zfrac(e_he) = 10.99d0
1633 8 : A09_Prz_zfrac(e_li) = 3.26d0
1634 8 : A09_Prz_zfrac(e_be) = 1.38d0
1635 8 : A09_Prz_zfrac(e_b ) = 2.70d0
1636 8 : A09_Prz_zfrac(e_c ) = 8.33d0
1637 8 : A09_Prz_zfrac(e_n ) = 7.79d0
1638 8 : A09_Prz_zfrac(e_o ) = 8.76d0
1639 8 : A09_Prz_zfrac(e_f ) = 4.56d0
1640 8 : A09_Prz_zfrac(e_ne) = 8.09d0
1641 8 : A09_Prz_zfrac(e_na) = 6.24d0
1642 8 : A09_Prz_zfrac(e_mg) = 7.56d0
1643 8 : A09_Prz_zfrac(e_al) = 6.30d0
1644 8 : A09_Prz_zfrac(e_si) = 7.50d0
1645 8 : A09_Prz_zfrac(e_p ) = 5.41d0
1646 8 : A09_Prz_zfrac(e_s ) = 7.14d0
1647 8 : A09_Prz_zfrac(e_cl) = 5.50d0
1648 8 : A09_Prz_zfrac(e_ar) = 6.50d0
1649 8 : A09_Prz_zfrac(e_k ) = 5.03d0
1650 8 : A09_Prz_zfrac(e_ca) = 6.34d0
1651 8 : A09_Prz_zfrac(e_sc) = 3.15d0
1652 8 : A09_Prz_zfrac(e_ti) = 4.95d0
1653 8 : A09_Prz_zfrac(e_v ) = 3.93d0
1654 8 : A09_Prz_zfrac(e_cr) = 5.64d0
1655 8 : A09_Prz_zfrac(e_mn) = 5.43d0
1656 8 : A09_Prz_zfrac(e_fe) = 7.52d0
1657 8 : A09_Prz_zfrac(e_co) = 4.99d0
1658 8 : A09_Prz_zfrac(e_ni) = 6.22d0
1659 8 : A09_Prz_zfrac(e_cu) = 4.19d0
1660 8 : A09_Prz_zfrac(e_zn) = 4.56d0
1661 8 : A09_Prz_zfrac(e_ga) = 3.04d0
1662 8 : A09_Prz_zfrac(e_ge) = 3.65d0
1663 8 : A09_Prz_zfrac(e_as) = 2.30d0
1664 8 : A09_Prz_zfrac(e_se) = 3.34d0
1665 8 : A09_Prz_zfrac(e_br) = 2.54d0
1666 8 : A09_Prz_zfrac(e_kr) = 3.25d0
1667 8 : A09_Prz_zfrac(e_rb) = 2.52d0
1668 8 : A09_Prz_zfrac(e_sr) = 2.87d0
1669 8 : A09_Prz_zfrac(e_y ) = 2.21d0
1670 8 : A09_Prz_zfrac(e_zr) = 2.58d0
1671 8 : A09_Prz_zfrac(e_nb) = 1.46d0
1672 8 : A09_Prz_zfrac(e_mo) = 1.88d0
1673 8 : A09_Prz_zfrac(e_ru) = 1.75d0
1674 8 : A09_Prz_zfrac(e_rh) = 0.91d0
1675 8 : A09_Prz_zfrac(e_pd) = 1.57d0
1676 8 : A09_Prz_zfrac(e_ag) = 0.94d0
1677 8 : A09_Prz_zfrac(e_cd) = 1.71d0
1678 8 : A09_Prz_zfrac(e_in) = 0.80d0
1679 8 : A09_Prz_zfrac(e_sn) = 2.04d0
1680 8 : A09_Prz_zfrac(e_sb) = 1.01d0
1681 8 : A09_Prz_zfrac(e_te) = 2.18d0
1682 8 : A09_Prz_zfrac(e_i ) = 1.55d0
1683 8 : A09_Prz_zfrac(e_xe) = 2.24d0
1684 8 : A09_Prz_zfrac(e_cs) = 1.08d0
1685 8 : A09_Prz_zfrac(e_ba) = 2.18d0
1686 8 : A09_Prz_zfrac(e_la) = 1.10d0
1687 8 : A09_Prz_zfrac(e_ce) = 1.58d0
1688 8 : A09_Prz_zfrac(e_pr) = 0.72d0
1689 8 : A09_Prz_zfrac(e_nd) = 1.42d0
1690 8 : A09_Prz_zfrac(e_sm) = 0.96d0
1691 8 : A09_Prz_zfrac(e_eu) = 0.52d0
1692 8 : A09_Prz_zfrac(e_gd) = 1.07d0
1693 8 : A09_Prz_zfrac(e_tb) = 0.30d0
1694 8 : A09_Prz_zfrac(e_dy) = 1.10d0
1695 8 : A09_Prz_zfrac(e_ho) = 0.48d0
1696 8 : A09_Prz_zfrac(e_er) = 0.92d0
1697 8 : A09_Prz_zfrac(e_tm) = 0.10d0
1698 8 : A09_Prz_zfrac(e_yb) = 0.84d0
1699 8 : A09_Prz_zfrac(e_lu) = 0.10d0
1700 8 : A09_Prz_zfrac(e_hf) = 0.85d0
1701 8 : A09_Prz_zfrac(e_ta) = -0.12d0
1702 8 : A09_Prz_zfrac(e_w ) = 0.85d0
1703 8 : A09_Prz_zfrac(e_re) = 0.26d0
1704 8 : A09_Prz_zfrac(e_os) = 1.40d0
1705 8 : A09_Prz_zfrac(e_ir) = 1.38d0
1706 8 : A09_Prz_zfrac(e_pt) = 1.62d0
1707 8 : A09_Prz_zfrac(e_au) = 0.92d0
1708 8 : A09_Prz_zfrac(e_hg) = 1.17d0
1709 8 : A09_Prz_zfrac(e_tl) = 0.90d0
1710 8 : A09_Prz_zfrac(e_pb) = 1.75d0
1711 8 : A09_Prz_zfrac(e_bi) = 0.65d0
1712 8 : A09_Prz_zfrac(e_th) = 0.02d0
1713 8 : A09_Prz_zfrac(e_u ) = -0.54d0
1714 :
1715 : ! convert to fraction of Z by mass
1716 8 : z_sum = 0d0
1717 728 : do i = e_li, e_u
1718 : A09_Prz_zfrac(i) = &
1719 720 : exp10(A09_Prz_zfrac(i))*element_atomic_weight(i)
1720 728 : z_sum = z_sum + A09_Prz_zfrac(i)
1721 : end do
1722 728 : do i = e_li, e_u
1723 728 : A09_Prz_zfrac(i) = A09_Prz_zfrac(i) / z_sum
1724 : end do
1725 :
1726 8 : end subroutine init_A09_Przybilla_data
1727 :
1728 8 : subroutine init_MB22_photospheric_data ! fraction by mass of total Z
1729 : ! Ekaterina Magg et al. , A&A 661, A140 (2022) photospheric abundance.
1730 : ! supplemented with Asplund, Grevesse, Sauval, and Scott 2009 abundances
1731 : integer :: i
1732 : real(dp) :: z_sum
1733 : include 'formats'
1734 :
1735 904 : MB22_photospheric_element_zfrac(:) = -20.0d0
1736 :
1737 : ! first store log abundances from the paper
1738 8 : MB22_photospheric_element_zfrac(e_li) = 3.26d0 ! AGSS09
1739 8 : MB22_photospheric_element_zfrac(e_be) = 1.38d0 ! AGSS09
1740 8 : MB22_photospheric_element_zfrac(e_b ) = 2.70d0 ! AGSS09
1741 8 : MB22_photospheric_element_zfrac(e_c ) = 8.56d0
1742 8 : MB22_photospheric_element_zfrac(e_n ) = 7.98d0
1743 8 : MB22_photospheric_element_zfrac(e_o ) = 8.77d0
1744 8 : MB22_photospheric_element_zfrac(e_f ) = 4.40d0
1745 8 : MB22_photospheric_element_zfrac(e_ne) = 8.15d0
1746 8 : MB22_photospheric_element_zfrac(e_na) = 6.29d0
1747 8 : MB22_photospheric_element_zfrac(e_mg) = 7.55d0
1748 8 : MB22_photospheric_element_zfrac(e_al) = 6.43d0
1749 8 : MB22_photospheric_element_zfrac(e_si) = 7.59d0
1750 8 : MB22_photospheric_element_zfrac(e_p ) = 5.41d0
1751 8 : MB22_photospheric_element_zfrac(e_s ) = 7.16d0
1752 8 : MB22_photospheric_element_zfrac(e_cl) = 5.25d0
1753 8 : MB22_photospheric_element_zfrac(e_ar) = 6.50d0
1754 8 : MB22_photospheric_element_zfrac(e_k ) = 5.14d0
1755 8 : MB22_photospheric_element_zfrac(e_ca) = 6.37d0
1756 8 : MB22_photospheric_element_zfrac(e_sc) = 3.07d0
1757 8 : MB22_photospheric_element_zfrac(e_ti) = 4.94d0
1758 8 : MB22_photospheric_element_zfrac(e_v ) = 3.89d0
1759 8 : MB22_photospheric_element_zfrac(e_cr) = 5.74d0
1760 8 : MB22_photospheric_element_zfrac(e_mn) = 5.52d0
1761 8 : MB22_photospheric_element_zfrac(e_fe) = 7.50d0
1762 8 : MB22_photospheric_element_zfrac(e_co) = 4.95d0
1763 8 : MB22_photospheric_element_zfrac(e_ni) = 6.24d0
1764 8 : MB22_photospheric_element_zfrac(e_cu) = 4.19d0 ! AGSS09
1765 8 : MB22_photospheric_element_zfrac(e_zn) = 4.56d0 ! AGSS09
1766 8 : MB22_photospheric_element_zfrac(e_ga) = 3.04d0 ! AGSS09
1767 8 : MB22_photospheric_element_zfrac(e_ge) = 3.65d0 ! AGSS09
1768 8 : MB22_photospheric_element_zfrac(e_as) = 2.30d0 !meteor AGSS09
1769 8 : MB22_photospheric_element_zfrac(e_se) = 3.34d0 !meteor AGSS09
1770 8 : MB22_photospheric_element_zfrac(e_br) = 2.54d0 !meteor AGSS09
1771 8 : MB22_photospheric_element_zfrac(e_kr) = 3.25d0 !indirect AGSS09
1772 8 : MB22_photospheric_element_zfrac(e_rb) = 2.52d0 ! AGSS09
1773 8 : MB22_photospheric_element_zfrac(e_sr) = 2.87d0 ! AGSS09
1774 8 : MB22_photospheric_element_zfrac(e_y ) = 2.21d0 ! AGSS09
1775 8 : MB22_photospheric_element_zfrac(e_zr) = 2.58d0 ! AGSS09
1776 8 : MB22_photospheric_element_zfrac(e_nb) = 1.46d0 ! AGSS09
1777 8 : MB22_photospheric_element_zfrac(e_mo) = 1.88d0 ! AGSS09
1778 8 : MB22_photospheric_element_zfrac(e_Ru) = 1.75d0 ! AGSS09
1779 8 : MB22_photospheric_element_zfrac(e_Rh) = 0.91d0 ! AGSS09
1780 8 : MB22_photospheric_element_zfrac(e_Pd) = 1.57d0 ! AGSS09
1781 8 : MB22_photospheric_element_zfrac(e_Ag) = 0.94d0 ! AGSS09
1782 8 : MB22_photospheric_element_zfrac(e_Cd) = 1.71d0 ! AGSS09
1783 8 : MB22_photospheric_element_zfrac(e_In) = 0.80d0 ! AGSS09
1784 8 : MB22_photospheric_element_zfrac(e_Sn) = 2.04d0 ! AGSS09
1785 8 : MB22_photospheric_element_zfrac(e_Sb) = 1.01d0 ! AGSS09
1786 8 : MB22_photospheric_element_zfrac(e_Te) = 2.18d0 ! AGSS09
1787 8 : MB22_photospheric_element_zfrac(e_I ) = 1.55d0 ! AGSS09
1788 8 : MB22_photospheric_element_zfrac(e_Xe) = 2.24d0 ! AGSS09
1789 8 : MB22_photospheric_element_zfrac(e_Cs) = 1.08d0 ! AGSS09
1790 8 : MB22_photospheric_element_zfrac(e_Ba) = 2.18d0 ! AGSS09
1791 8 : MB22_photospheric_element_zfrac(e_La) = 1.10d0 ! AGSS09
1792 8 : MB22_photospheric_element_zfrac(e_Ce) = 1.58d0 ! AGSS09
1793 8 : MB22_photospheric_element_zfrac(e_Pr) = 0.72d0 ! AGSS09
1794 8 : MB22_photospheric_element_zfrac(e_Nd) = 1.42d0 ! AGSS09
1795 8 : MB22_photospheric_element_zfrac(e_Sm) = 0.96d0 ! AGSS09
1796 8 : MB22_photospheric_element_zfrac(e_Eu) = 0.52d0 ! AGSS09
1797 8 : MB22_photospheric_element_zfrac(e_Gd) = 1.07d0 ! AGSS09
1798 8 : MB22_photospheric_element_zfrac(e_Tb) = 0.30d0 ! AGSS09
1799 8 : MB22_photospheric_element_zfrac(e_Dy) = 1.10d0 ! AGSS09
1800 8 : MB22_photospheric_element_zfrac(e_Ho) = 0.48d0 ! AGSS09
1801 8 : MB22_photospheric_element_zfrac(e_Er) = 0.92d0 ! AGSS09
1802 8 : MB22_photospheric_element_zfrac(e_Tm) = 0.10d0 ! AGSS09
1803 8 : MB22_photospheric_element_zfrac(e_Yb) = 0.84d0 ! AGSS09
1804 8 : MB22_photospheric_element_zfrac(e_Lu) = 0.10d0 ! AGSS09
1805 8 : MB22_photospheric_element_zfrac(e_Hf) = 0.85d0 ! AGSS09
1806 8 : MB22_photospheric_element_zfrac(e_Ta) = -0.12d0 ! AGSS09
1807 8 : MB22_photospheric_element_zfrac(e_W ) = 0.85d0 ! AGSS09
1808 8 : MB22_photospheric_element_zfrac(e_Re) = 0.26d0 ! AGSS09
1809 8 : MB22_photospheric_element_zfrac(e_Os) = 1.40d0 ! AGSS09
1810 8 : MB22_photospheric_element_zfrac(e_Ir) = 1.38d0 ! AGSS09
1811 8 : MB22_photospheric_element_zfrac(e_Pt) = 1.62d0 ! AGSS09
1812 8 : MB22_photospheric_element_zfrac(e_Au) = 0.92d0 ! AGSS09
1813 8 : MB22_photospheric_element_zfrac(e_Hg) = 1.17d0 ! AGSS09
1814 8 : MB22_photospheric_element_zfrac(e_Tl) = 0.90d0 ! AGSS09
1815 8 : MB22_photospheric_element_zfrac(e_Pb) = 1.75d0 ! AGSS09
1816 8 : MB22_photospheric_element_zfrac(e_Bi) = 0.65d0 ! AGSS09
1817 8 : MB22_photospheric_element_zfrac(e_Th) = 0.02d0 ! AGSS09
1818 8 : MB22_photospheric_element_zfrac(e_U) = -0.54d0 ! AGSS09
1819 :
1820 : ! convert to fraction of Z by mass
1821 8 : z_sum = 0
1822 728 : do i = e_li, e_u
1823 : MB22_photospheric_element_zfrac(i) = &
1824 720 : exp10(MB22_photospheric_element_zfrac(i))*element_atomic_weight(i)
1825 728 : z_sum = z_sum + MB22_photospheric_element_zfrac(i)
1826 : end do
1827 728 : do i = e_li, e_u
1828 728 : MB22_photospheric_element_zfrac(i) = MB22_photospheric_element_zfrac(i) / z_sum
1829 : end do
1830 :
1831 8 : end subroutine init_MB22_photospheric_data
1832 :
1833 :
1834 8 : subroutine init_AAG21_photospheric_data ! fraction by mass of total Z
1835 : ! Asplund et al. A&A 653, A141 (2021) photospheric abundance.
1836 : ! Supplemented with meteoric values
1837 : integer :: i
1838 : real(dp) :: z_sum
1839 : include 'formats'
1840 :
1841 904 : AAG21_photospheric_element_zfrac(:) = -20.0d0
1842 :
1843 : ! first store log abundances from the paper
1844 8 : AAG21_photospheric_element_zfrac(e_li) = 0.96d0 !± 0.013
1845 8 : AAG21_photospheric_element_zfrac(e_be) = 1.38d0 !± 0.09
1846 8 : AAG21_photospheric_element_zfrac(e_b ) = 2.70d0 !± 0.20
1847 8 : AAG21_photospheric_element_zfrac(e_c ) = 8.46d0 !± 0.04
1848 8 : AAG21_photospheric_element_zfrac(e_n ) = 7.83d0 !± 0.07
1849 8 : AAG21_photospheric_element_zfrac(e_o ) = 8.69d0 !± 0.04
1850 8 : AAG21_photospheric_element_zfrac(e_f ) = 4.40d0 !± 0.25
1851 8 : AAG21_photospheric_element_zfrac(e_ne) = 8.06d0 !± 0.05
1852 8 : AAG21_photospheric_element_zfrac(e_na) = 6.22d0 !± 0.03
1853 8 : AAG21_photospheric_element_zfrac(e_mg) = 7.55d0 !± 0.03
1854 8 : AAG21_photospheric_element_zfrac(e_al) = 6.43d0 !± 0.03
1855 8 : AAG21_photospheric_element_zfrac(e_si) = 7.51d0 !± 0.03
1856 8 : AAG21_photospheric_element_zfrac(e_p ) = 5.41d0 !± 0.03
1857 8 : AAG21_photospheric_element_zfrac(e_s ) = 7.12d0 !± 0.03
1858 8 : AAG21_photospheric_element_zfrac(e_cl) = 5.31d0 !± 0.20
1859 8 : AAG21_photospheric_element_zfrac(e_ar) = 6.38d0 !± 0.10
1860 8 : AAG21_photospheric_element_zfrac(e_k ) = 5.07d0 !± 0.03
1861 8 : AAG21_photospheric_element_zfrac(e_ca) = 6.30d0 !± 0.03
1862 8 : AAG21_photospheric_element_zfrac(e_sc) = 3.14d0 !± 0.04
1863 8 : AAG21_photospheric_element_zfrac(e_ti) = 4.97d0 !± 0.05
1864 8 : AAG21_photospheric_element_zfrac(e_v ) = 3.90d0 !± 0.08
1865 8 : AAG21_photospheric_element_zfrac(e_cr) = 5.62d0 !± 0.04
1866 8 : AAG21_photospheric_element_zfrac(e_mn) = 5.42d0 !± 0.06
1867 8 : AAG21_photospheric_element_zfrac(e_fe) = 7.46d0 !± 0.04
1868 8 : AAG21_photospheric_element_zfrac(e_co) = 4.94d0 !± 0.05
1869 8 : AAG21_photospheric_element_zfrac(e_ni) = 6.20d0 !± 0.04
1870 8 : AAG21_photospheric_element_zfrac(e_cu) = 4.18d0 !± 0.05
1871 8 : AAG21_photospheric_element_zfrac(e_zn) = 4.56d0 !± 0.05
1872 8 : AAG21_photospheric_element_zfrac(e_ga) = 3.02d0 !± 0.05
1873 8 : AAG21_photospheric_element_zfrac(e_ge) = 3.62d0 !± 0.10
1874 8 : AAG21_photospheric_element_zfrac(e_as) = 2.30d0 !± 0.04 meteorites
1875 8 : AAG21_photospheric_element_zfrac(e_se) = 3.34d0 !± 0.03 meteorites
1876 8 : AAG21_photospheric_element_zfrac(e_br) = 2.54d0 !± 0.06 meteorites
1877 8 : AAG21_photospheric_element_zfrac(e_kr) = 3.12d0 !± 0.10
1878 8 : AAG21_photospheric_element_zfrac(e_rb) = 2.32d0 !± 0.08
1879 8 : AAG21_photospheric_element_zfrac(e_sr) = 2.83d0 !± 0.06
1880 8 : AAG21_photospheric_element_zfrac(e_y ) = 2.21d0 !± 0.05
1881 8 : AAG21_photospheric_element_zfrac(e_zr) = 2.59d0 !± 0.04
1882 8 : AAG21_photospheric_element_zfrac(e_nb) = 1.47d0 !± 0.06
1883 8 : AAG21_photospheric_element_zfrac(e_mo) = 1.88d0 !± 0.09
1884 8 : AAG21_photospheric_element_zfrac(e_Ru) = 1.75d0 !± 0.08
1885 8 : AAG21_photospheric_element_zfrac(e_Rh) = 0.78d0 !± 0.11
1886 8 : AAG21_photospheric_element_zfrac(e_Pd) = 1.57d0 !± 0.10
1887 8 : AAG21_photospheric_element_zfrac(e_Ag) = 0.96d0 !± 0.10
1888 8 : AAG21_photospheric_element_zfrac(e_Cd) = 1.71d0 !± 0.03 meteorites
1889 8 : AAG21_photospheric_element_zfrac(e_In) = 0.80d0 !± 0.20
1890 8 : AAG21_photospheric_element_zfrac(e_Sn) = 2.02d0 !± 0.10
1891 8 : AAG21_photospheric_element_zfrac(e_Sb) = 1.01d0 !± 0.06 meteorites
1892 8 : AAG21_photospheric_element_zfrac(e_Te) = 2.18d0 !± 0.03 meteorites
1893 8 : AAG21_photospheric_element_zfrac(e_I ) = 1.55d0 !± 0.08 meteorites
1894 8 : AAG21_photospheric_element_zfrac(e_Xe) = 2.22d0 !± 0.05
1895 8 : AAG21_photospheric_element_zfrac(e_Cs) = 1.08d0 !± 0.03 meteorites
1896 8 : AAG21_photospheric_element_zfrac(e_Ba) = 2.27d0 !± 0.05
1897 8 : AAG21_photospheric_element_zfrac(e_La) = 1.11d0 !± 0.04
1898 8 : AAG21_photospheric_element_zfrac(e_Ce) = 1.58d0 !± 0.04
1899 8 : AAG21_photospheric_element_zfrac(e_Pr) = 0.75d0 !± 0.05
1900 8 : AAG21_photospheric_element_zfrac(e_Nd) = 1.42d0 !± 0.04
1901 8 : AAG21_photospheric_element_zfrac(e_Sm) = 0.95d0 !± 0.04
1902 8 : AAG21_photospheric_element_zfrac(e_Eu) = 0.52d0 !± 0.04
1903 8 : AAG21_photospheric_element_zfrac(e_Gd) = 1.08d0 !± 0.04
1904 8 : AAG21_photospheric_element_zfrac(e_Tb) = 0.31d0 !± 0.10
1905 8 : AAG21_photospheric_element_zfrac(e_Dy) = 1.10d0 !± 0.04
1906 8 : AAG21_photospheric_element_zfrac(e_Ho) = 0.48d0 !± 0.11
1907 8 : AAG21_photospheric_element_zfrac(e_Er) = 0.93d0 !± 0.05
1908 8 : AAG21_photospheric_element_zfrac(e_Tm) = 0.11d0 !± 0.04
1909 8 : AAG21_photospheric_element_zfrac(e_Yb) = 0.85d0 !± 0.11
1910 8 : AAG21_photospheric_element_zfrac(e_Lu) = 0.10d0 !± 0.09
1911 8 : AAG21_photospheric_element_zfrac(e_Hf) = 0.85d0 !± 0.05
1912 8 : AAG21_photospheric_element_zfrac(e_Ta) =-0.15d0 !± 0.04 meteorites
1913 8 : AAG21_photospheric_element_zfrac(e_W ) = 0.79d0 !± 0.11
1914 8 : AAG21_photospheric_element_zfrac(e_Re) = 0.26d0 !± 0.02 meteorites
1915 8 : AAG21_photospheric_element_zfrac(e_Os) = 1.35d0 !± 0.12
1916 8 : AAG21_photospheric_element_zfrac(e_Ir) = 1.32d0 !± 0.02 meteorites
1917 8 : AAG21_photospheric_element_zfrac(e_Pt) = 1.61d0 !± 0.02 meteorites
1918 8 : AAG21_photospheric_element_zfrac(e_Au) = 0.91d0 !± 0.12
1919 8 : AAG21_photospheric_element_zfrac(e_Hg) = 1.17d0 !± 0.18 meteorites
1920 8 : AAG21_photospheric_element_zfrac(e_Tl) = 0.92d0 !± 0.17
1921 8 : AAG21_photospheric_element_zfrac(e_Pb) = 1.95d0 !± 0.08
1922 8 : AAG21_photospheric_element_zfrac(e_Bi) = 0.65d0 !± 0.04 meteorites
1923 8 : AAG21_photospheric_element_zfrac(e_Th) = 0.03d0 !± 0.10
1924 8 : AAG21_photospheric_element_zfrac(e_U) =-0.54d0 !± 0.03 meteorites
1925 :
1926 : ! convert to fraction of Z by mass
1927 8 : z_sum = 0
1928 728 : do i = e_li, e_u
1929 : AAG21_photospheric_element_zfrac(i) = &
1930 720 : exp10(AAG21_photospheric_element_zfrac(i))*element_atomic_weight(i)
1931 728 : z_sum = z_sum + AAG21_photospheric_element_zfrac(i)
1932 : end do
1933 728 : do i = e_li, e_u
1934 728 : AAG21_photospheric_element_zfrac(i) = AAG21_photospheric_element_zfrac(i) / z_sum
1935 : end do
1936 :
1937 8 : end subroutine init_AAG21_photospheric_data
1938 :
1939 8 : subroutine init_L09_data ! fraction by mass of total Z
1940 : ! Lodders 09
1941 : integer :: i
1942 : real(dp) :: z_sum
1943 : include 'formats'
1944 :
1945 8 : L09_element_zfrac(:) = 0
1946 :
1947 : ! mass fractions
1948 8 : L09_element_zfrac(e_li) = 1.054594933683d-08
1949 8 : L09_element_zfrac(e_be) = 1.5087555571d-10
1950 8 : L09_element_zfrac(e_b ) = 5.5633306761d-09
1951 8 : L09_element_zfrac(e_c ) = 0.002365544090848D0
1952 8 : L09_element_zfrac(e_n ) = 0.0008161934768925D0
1953 8 : L09_element_zfrac(e_o ) = 0.0068991682737478D0
1954 8 : L09_element_zfrac(e_f ) = 4.1844135602D-07
1955 8 : L09_element_zfrac(e_ne) = 0.0018162023028794D0
1956 8 : L09_element_zfrac(e_na) = 3.6352024324D-05
1957 8 : L09_element_zfrac(e_mg) = 0.000683514477408D0
1958 8 : L09_element_zfrac(e_al) = 6.2568980455D-05
1959 8 : L09_element_zfrac(e_si) = 0.000769722819625D0
1960 8 : L09_element_zfrac(e_p ) = 7.0479812061D-06
1961 8 : L09_element_zfrac(e_s ) = 0.000370123705833609D0
1962 8 : L09_element_zfrac(e_cl) = 5.0250763788D-06
1963 8 : L09_element_zfrac(e_ar) = 9.2220355099056D-05
1964 8 : L09_element_zfrac(e_k ) = 4.0297305059079D-06
1965 8 : L09_element_zfrac(e_ca) = 6.63135868398494D-05
1966 8 : L09_element_zfrac(e_sc) = 4.2402933957D-08
1967 8 : L09_element_zfrac(e_ti) = 3.24207135484D-06
1968 8 : L09_element_zfrac(e_v ) = 4.0049954611698D-07
1969 8 : L09_element_zfrac(e_cr) = 1.870484358513D-05
1970 8 : L09_element_zfrac(e_mn) = 1.3890521841D-05
1971 8 : L09_element_zfrac(e_fe) = 0.0012986862725768D0
1972 8 : L09_element_zfrac(e_co) = 3.7979113651D-06
1973 8 : L09_element_zfrac(e_ni) = 7.901833309378D-05
1974 8 : L09_element_zfrac(e_cu) = 9.4275308656D-07
1975 8 : L09_element_zfrac(e_zn) = 2.324135489336D-06
1976 8 : L09_element_zfrac(e_ga) = 6.9975797859D-08
1977 8 : L09_element_zfrac(e_ge) = 2.27918509226D-07
1978 8 : L09_element_zfrac(e_as) = 1.2531874861D-08
1979 8 : L09_element_zfrac(e_se) = 1.460613983153D-07
1980 8 : L09_element_zfrac(e_br) = 2.1909826069D-07
1981 8 : L09_element_zfrac(e_kr) = 1.2837104766341D-07
1982 8 : L09_element_zfrac(e_rb) = 1.69493949899D-08
1983 8 : L09_element_zfrac(e_sr) = 5.58119030984D-08
1984 8 : L09_element_zfrac(e_y ) = 1.1287452840D-08
1985 8 : L09_element_zfrac(e_zr) = 2.696974516888D-08
1986 8 : L09_element_zfrac(e_nb) = 1.9870212075D-09
1987 8 : L09_element_zfrac(e_mo) = 6.70675811282D-09
1988 8 : L09_element_zfrac(e_Ru) = 4.935148192679D-09
1989 8 : L09_element_zfrac(e_Rh) = 1.0439120240D-09
1990 8 : L09_element_zfrac(e_Pd) = 3.958834334296D-09
1991 8 : L09_element_zfrac(e_Ag) = 1.44909561511D-09
1992 8 : L09_element_zfrac(e_Cd) = 4.850725813727D-09
1993 8 : L09_element_zfrac(e_In) = 5.60277526584D-10
1994 8 : L09_element_zfrac(e_Sn) = 1.1748571050167D-08
1995 8 : L09_element_zfrac(e_Sb) = 1.04476117832D-09
1996 8 : L09_element_zfrac(e_Te) = 1.64381492798D-08
1997 8 : L09_element_zfrac(e_I ) = 3.8266730451D-09
1998 8 : L09_element_zfrac(e_Xe) = 1.9631791443838D-08
1999 8 : L09_element_zfrac(e_Cs) = 1.3516072159D-09
2000 8 : L09_element_zfrac(e_Ba) = 1.6848783894182D-08
2001 8 : L09_element_zfrac(e_La) = 1.7400268564D-09
2002 8 : L09_element_zfrac(e_Ce) = 4.5166246603333D-09
2003 8 : L09_element_zfrac(e_Pr) = 6.6431263199D-10
2004 8 : L09_element_zfrac(e_Nd) = 5.82366496835D-09
2005 8 : L09_element_zfrac(e_Sm) = 1.10017534847D-09
2006 8 : L09_element_zfrac(e_Eu) = 4.1023195079D-10
2007 8 : L09_element_zfrac(e_Gd) = 1.5505832574086D-09
2008 8 : L09_element_zfrac(e_Tb) = 2.7612856334D-10
2009 8 : L09_element_zfrac(e_Dy) = 1.79997715438722D-09
2010 8 : L09_element_zfrac(e_Ho) = 4.1129202414D-10
2011 8 : L09_element_zfrac(e_Er) = 1.2035968713737D-09
2012 8 : L09_element_zfrac(e_Tm) = 1.8794799164D-10
2013 8 : L09_element_zfrac(e_Yb) = 1.2153809425605D-09
2014 8 : L09_element_zfrac(e_Lu) = 1.826667993422D-10
2015 8 : L09_element_zfrac(e_Hf) = 7.619544268076D-10
2016 8 : L09_element_zfrac(e_Ta) = 1.04130101121661D-10
2017 8 : L09_element_zfrac(e_W ) = 6.9059258989518D-10
2018 8 : L09_element_zfrac(e_Re) = 2.9647265833D-10
2019 8 : L09_element_zfrac(e_Os) = 3.52828020217507D-09
2020 8 : L09_element_zfrac(e_Ir) = 3.5336600059D-09
2021 8 : L09_element_zfrac(e_Pt) = 6.8100262401586D-09
2022 8 : L09_element_zfrac(e_Au) = 1.0522666072D-09
2023 8 : L09_element_zfrac(e_Hg) = 2.5169209215851D-09
2024 8 : L09_element_zfrac(e_Tl) = 1.02465539439D-09
2025 8 : L09_element_zfrac(e_Pb) = 1.879940103275D-08
2026 8 : L09_element_zfrac(e_Bi) = 7.9004226175D-10
2027 8 : L09_element_zfrac(e_Th) = 2.7961831384D-10
2028 8 : L09_element_zfrac(e_U) = 1.546830543D-10
2029 :
2030 : ! convert from mass fraction to fraction of Z by mass
2031 728 : z_sum = sum(L09_element_zfrac(e_li:e_u))
2032 728 : do i = e_li, e_u
2033 728 : L09_element_zfrac(i) = L09_element_zfrac(i) / z_sum
2034 : end do
2035 :
2036 8 : end subroutine init_L09_data
2037 :
2038 :
2039 8 : subroutine allocate_nuclide_data(d,n,ierr)
2040 : type(nuclide_data), intent(out) :: d
2041 : integer, intent(in) :: n
2042 : integer, intent(out) :: ierr
2043 8 : ierr = 0
2044 : allocate(d% name(n), d% W(n), d% Z(n), d% N(n), d% Z_plus_N(n), &
2045 : d% spin(N), d% binding_energy(n), d% Z53(n), &
2046 : d% isomeric_state(n), d% mass_excess(n), d% pfcn(npart,n), &
2047 8 : d% chem_id(n), d% nuclide(n), stat=ierr)
2048 8 : if (ierr /= 0) return
2049 8 : d% nnuclides = n
2050 : end subroutine allocate_nuclide_data
2051 :
2052 :
2053 1 : subroutine free_nuclide_data(n)
2054 : type(nuclide_data), intent(inout) :: n
2055 1 : if (associated(n% name)) &
2056 : deallocate( &
2057 0 : n% name, n% W, n% Z, n% N, n% Z_plus_N, n% spin, n% binding_energy, n% Z53, &
2058 1 : n% isomeric_state, n% mass_excess, n% pfcn, n% chem_id, n% nuclide)
2059 1 : n% nnuclides = 0
2060 1 : end subroutine free_nuclide_data
2061 :
2062 :
2063 1 : subroutine free_lodders03_table()
2064 : use utils_lib, only : integer_dict_free
2065 1 : deallocate(lodders03_tab6% isotopic_percent)
2066 1 : call integer_dict_free(lodders03_tab6% name_dict)
2067 1 : nullify(lodders03_tab6% name_dict)
2068 1 : end subroutine free_lodders03_table
2069 :
2070 :
2071 : ! returns the index of a particular nuclide in the full chem_isos set
2072 : ! returns nuclide_not_found if name not found
2073 53152 : function get_nuclide_index(nuclei) result(indx)
2074 : use utils_lib, only: integer_dict_lookup
2075 : character(len=*), intent(in) :: nuclei
2076 : integer :: indx, ierr
2077 26576 : if (.not. chem_has_been_initialized) then
2078 0 : write(*,*) 'must call chem_init before calling any other routine in chem_lib'
2079 : indx = nuclide_not_found
2080 0 : return
2081 : end if
2082 : ierr = 0
2083 26576 : call integer_dict_lookup(chem_isos_dict, nuclei, indx, ierr)
2084 26576 : if (ierr /= 0) indx = nuclide_not_found
2085 26576 : end function get_nuclide_index
2086 :
2087 :
2088 8 : subroutine set_some_isos
2089 8 : ih1 = get_nuclide_index('h1')
2090 8 : ih2 = get_nuclide_index('h2')
2091 8 : ih3 = get_nuclide_index('h3')
2092 8 : ihe3 = get_nuclide_index('he3')
2093 8 : ihe4 = get_nuclide_index('he4')
2094 8 : ili6 = get_nuclide_index('li6')
2095 8 : ili7 = get_nuclide_index('li7')
2096 8 : ili8 = get_nuclide_index('li8')
2097 8 : ibe7 = get_nuclide_index('be7')
2098 8 : ibe8 = get_nuclide_index('be8')
2099 8 : ibe9 = get_nuclide_index('be9')
2100 8 : ibe10 = get_nuclide_index('be10')
2101 8 : ibe11 = get_nuclide_index('be11')
2102 8 : ib8 = get_nuclide_index('b8')
2103 8 : ib10 = get_nuclide_index('b10')
2104 8 : ib11 = get_nuclide_index('b11')
2105 8 : ib12 = get_nuclide_index('b12')
2106 8 : ib13 = get_nuclide_index('b13')
2107 8 : ib14 = get_nuclide_index('b14')
2108 8 : ic9 = get_nuclide_index('c9')
2109 8 : ic10 = get_nuclide_index('c10')
2110 8 : ic11 = get_nuclide_index('c11')
2111 8 : ic12 = get_nuclide_index('c12')
2112 8 : ic13 = get_nuclide_index('c13')
2113 8 : ic14 = get_nuclide_index('c14')
2114 8 : ic15 = get_nuclide_index('c15')
2115 8 : ic16 = get_nuclide_index('c16')
2116 8 : in12 = get_nuclide_index('n12')
2117 8 : in13 = get_nuclide_index('n13')
2118 8 : in14 = get_nuclide_index('n14')
2119 8 : in15 = get_nuclide_index('n15')
2120 8 : in16 = get_nuclide_index('n16')
2121 8 : in17 = get_nuclide_index('n17')
2122 8 : in18 = get_nuclide_index('n18')
2123 8 : in19 = get_nuclide_index('n19')
2124 8 : in20 = get_nuclide_index('n20')
2125 8 : io13 = get_nuclide_index('o13')
2126 8 : io14 = get_nuclide_index('o14')
2127 8 : io15 = get_nuclide_index('o15')
2128 8 : io16 = get_nuclide_index('o16')
2129 8 : io17 = get_nuclide_index('o17')
2130 8 : io18 = get_nuclide_index('o18')
2131 8 : io19 = get_nuclide_index('o19')
2132 8 : io20 = get_nuclide_index('o20')
2133 8 : if15 = get_nuclide_index('f15')
2134 8 : if16 = get_nuclide_index('f16')
2135 8 : if17 = get_nuclide_index('f17')
2136 8 : if18 = get_nuclide_index('f18')
2137 8 : if19 = get_nuclide_index('f19')
2138 8 : if20 = get_nuclide_index('f20')
2139 8 : if21 = get_nuclide_index('f21')
2140 8 : if22 = get_nuclide_index('f22')
2141 8 : if23 = get_nuclide_index('f23')
2142 8 : if24 = get_nuclide_index('f24')
2143 8 : ine17 = get_nuclide_index('ne17')
2144 8 : ine18 = get_nuclide_index('ne18')
2145 8 : ine19 = get_nuclide_index('ne19')
2146 8 : ine20 = get_nuclide_index('ne20')
2147 8 : ine21 = get_nuclide_index('ne21')
2148 8 : ine22 = get_nuclide_index('ne22')
2149 8 : ine23 = get_nuclide_index('ne23')
2150 8 : ine24 = get_nuclide_index('ne24')
2151 8 : ine25 = get_nuclide_index('ne25')
2152 8 : ine26 = get_nuclide_index('ne26')
2153 8 : ine27 = get_nuclide_index('ne27')
2154 8 : ine28 = get_nuclide_index('ne28')
2155 8 : ina20 = get_nuclide_index('na20')
2156 8 : ina21 = get_nuclide_index('na21')
2157 8 : ina22 = get_nuclide_index('na22')
2158 8 : ina23 = get_nuclide_index('na23')
2159 8 : ina24 = get_nuclide_index('na24')
2160 8 : ina25 = get_nuclide_index('na25')
2161 8 : ina26 = get_nuclide_index('na26')
2162 8 : ina27 = get_nuclide_index('na27')
2163 8 : ina28 = get_nuclide_index('na28')
2164 8 : ina29 = get_nuclide_index('na29')
2165 8 : ina30 = get_nuclide_index('na30')
2166 8 : ina31 = get_nuclide_index('na31')
2167 8 : img20 = get_nuclide_index('mg20')
2168 8 : img21 = get_nuclide_index('mg21')
2169 8 : img22 = get_nuclide_index('mg22')
2170 8 : img23 = get_nuclide_index('mg23')
2171 8 : img24 = get_nuclide_index('mg24')
2172 8 : img25 = get_nuclide_index('mg25')
2173 8 : img26 = get_nuclide_index('mg26')
2174 8 : img27 = get_nuclide_index('mg27')
2175 8 : img28 = get_nuclide_index('mg28')
2176 8 : img29 = get_nuclide_index('mg29')
2177 8 : img30 = get_nuclide_index('mg30')
2178 8 : img31 = get_nuclide_index('mg31')
2179 8 : img32 = get_nuclide_index('mg32')
2180 8 : img33 = get_nuclide_index('mg33')
2181 8 : ial22 = get_nuclide_index('al22')
2182 8 : ial23 = get_nuclide_index('al23')
2183 8 : ial24 = get_nuclide_index('al24')
2184 8 : ial25 = get_nuclide_index('al25')
2185 8 : ial26 = get_nuclide_index('al26')
2186 8 : ial27 = get_nuclide_index('al27')
2187 8 : ial28 = get_nuclide_index('al28')
2188 8 : ial29 = get_nuclide_index('al29')
2189 8 : ial30 = get_nuclide_index('al30')
2190 8 : ial31 = get_nuclide_index('al31')
2191 8 : ial32 = get_nuclide_index('al32')
2192 8 : ial33 = get_nuclide_index('al33')
2193 8 : ial34 = get_nuclide_index('al34')
2194 8 : ial35 = get_nuclide_index('al35')
2195 8 : isi22 = get_nuclide_index('si22')
2196 8 : isi23 = get_nuclide_index('si23')
2197 8 : isi24 = get_nuclide_index('si24')
2198 8 : isi25 = get_nuclide_index('si25')
2199 8 : isi26 = get_nuclide_index('si26')
2200 8 : isi27 = get_nuclide_index('si27')
2201 8 : isi28 = get_nuclide_index('si28')
2202 8 : isi29 = get_nuclide_index('si29')
2203 8 : isi30 = get_nuclide_index('si30')
2204 8 : isi31 = get_nuclide_index('si31')
2205 8 : isi32 = get_nuclide_index('si32')
2206 8 : isi33 = get_nuclide_index('si33')
2207 8 : isi34 = get_nuclide_index('si34')
2208 8 : isi35 = get_nuclide_index('si35')
2209 8 : isi36 = get_nuclide_index('si36')
2210 8 : isi37 = get_nuclide_index('si37')
2211 8 : isi38 = get_nuclide_index('si38')
2212 8 : ip26 = get_nuclide_index('p26')
2213 8 : ip27 = get_nuclide_index('p27')
2214 8 : ip28 = get_nuclide_index('p28')
2215 8 : ip29 = get_nuclide_index('p29')
2216 8 : ip30 = get_nuclide_index('p30')
2217 8 : ip31 = get_nuclide_index('p31')
2218 8 : ip32 = get_nuclide_index('p32')
2219 8 : ip33 = get_nuclide_index('p33')
2220 8 : ip34 = get_nuclide_index('p34')
2221 8 : ip35 = get_nuclide_index('p35')
2222 8 : ip36 = get_nuclide_index('p36')
2223 8 : ip37 = get_nuclide_index('p37')
2224 8 : ip38 = get_nuclide_index('p38')
2225 8 : ip39 = get_nuclide_index('p39')
2226 8 : ip40 = get_nuclide_index('p40')
2227 8 : is27 = get_nuclide_index('s27')
2228 8 : is28 = get_nuclide_index('s28')
2229 8 : is29 = get_nuclide_index('s29')
2230 8 : is30 = get_nuclide_index('s30')
2231 8 : is31 = get_nuclide_index('s31')
2232 8 : is32 = get_nuclide_index('s32')
2233 8 : is33 = get_nuclide_index('s33')
2234 8 : is34 = get_nuclide_index('s34')
2235 8 : is35 = get_nuclide_index('s35')
2236 8 : is36 = get_nuclide_index('s36')
2237 8 : is37 = get_nuclide_index('s37')
2238 8 : is38 = get_nuclide_index('s38')
2239 8 : is39 = get_nuclide_index('s39')
2240 8 : is40 = get_nuclide_index('s40')
2241 8 : is41 = get_nuclide_index('s41')
2242 8 : is42 = get_nuclide_index('s42')
2243 8 : icl31 = get_nuclide_index('cl31')
2244 8 : icl32 = get_nuclide_index('cl32')
2245 8 : icl33 = get_nuclide_index('cl33')
2246 8 : icl34 = get_nuclide_index('cl34')
2247 8 : icl35 = get_nuclide_index('cl35')
2248 8 : icl36 = get_nuclide_index('cl36')
2249 8 : icl37 = get_nuclide_index('cl37')
2250 8 : icl38 = get_nuclide_index('cl38')
2251 8 : icl39 = get_nuclide_index('cl39')
2252 8 : icl40 = get_nuclide_index('cl40')
2253 8 : icl41 = get_nuclide_index('cl41')
2254 8 : icl42 = get_nuclide_index('cl42')
2255 8 : icl43 = get_nuclide_index('cl43')
2256 8 : icl44 = get_nuclide_index('cl44')
2257 8 : iar31 = get_nuclide_index('ar31')
2258 8 : iar32 = get_nuclide_index('ar32')
2259 8 : iar33 = get_nuclide_index('ar33')
2260 8 : iar34 = get_nuclide_index('ar34')
2261 8 : iar35 = get_nuclide_index('ar35')
2262 8 : iar36 = get_nuclide_index('ar36')
2263 8 : iar37 = get_nuclide_index('ar37')
2264 8 : iar38 = get_nuclide_index('ar38')
2265 8 : iar39 = get_nuclide_index('ar39')
2266 8 : iar40 = get_nuclide_index('ar40')
2267 8 : iar41 = get_nuclide_index('ar41')
2268 8 : iar42 = get_nuclide_index('ar42')
2269 8 : iar43 = get_nuclide_index('ar43')
2270 8 : iar44 = get_nuclide_index('ar44')
2271 8 : iar45 = get_nuclide_index('ar45')
2272 8 : iar46 = get_nuclide_index('ar46')
2273 8 : iar47 = get_nuclide_index('ar47')
2274 8 : ik35 = get_nuclide_index('k35')
2275 8 : ik36 = get_nuclide_index('k36')
2276 8 : ik37 = get_nuclide_index('k37')
2277 8 : ik38 = get_nuclide_index('k38')
2278 8 : ik39 = get_nuclide_index('k39')
2279 8 : ik40 = get_nuclide_index('k40')
2280 8 : ik41 = get_nuclide_index('k41')
2281 8 : ik42 = get_nuclide_index('k42')
2282 8 : ik43 = get_nuclide_index('k43')
2283 8 : ik44 = get_nuclide_index('k44')
2284 8 : ik45 = get_nuclide_index('k45')
2285 8 : ik46 = get_nuclide_index('k46')
2286 8 : ik47 = get_nuclide_index('k47')
2287 8 : ica35 = get_nuclide_index('ca35')
2288 8 : ica36 = get_nuclide_index('ca36')
2289 8 : ica37 = get_nuclide_index('ca37')
2290 8 : ica38 = get_nuclide_index('ca38')
2291 8 : ica39 = get_nuclide_index('ca39')
2292 8 : ica40 = get_nuclide_index('ca40')
2293 8 : ica41 = get_nuclide_index('ca41')
2294 8 : ica42 = get_nuclide_index('ca42')
2295 8 : ica43 = get_nuclide_index('ca43')
2296 8 : ica44 = get_nuclide_index('ca44')
2297 8 : ica45 = get_nuclide_index('ca45')
2298 8 : ica46 = get_nuclide_index('ca46')
2299 8 : ica47 = get_nuclide_index('ca47')
2300 8 : ica48 = get_nuclide_index('ca48')
2301 8 : ica49 = get_nuclide_index('ca49')
2302 8 : ica50 = get_nuclide_index('ca50')
2303 8 : ica51 = get_nuclide_index('ca51')
2304 8 : ica52 = get_nuclide_index('ca52')
2305 8 : ica53 = get_nuclide_index('ca53')
2306 8 : isc40 = get_nuclide_index('sc40')
2307 8 : isc41 = get_nuclide_index('sc41')
2308 8 : isc42 = get_nuclide_index('sc42')
2309 8 : isc43 = get_nuclide_index('sc43')
2310 8 : isc44 = get_nuclide_index('sc44')
2311 8 : isc45 = get_nuclide_index('sc45')
2312 8 : isc46 = get_nuclide_index('sc46')
2313 8 : isc47 = get_nuclide_index('sc47')
2314 8 : isc48 = get_nuclide_index('sc48')
2315 8 : isc49 = get_nuclide_index('sc49')
2316 8 : isc50 = get_nuclide_index('sc50')
2317 8 : isc51 = get_nuclide_index('sc51')
2318 8 : isc52 = get_nuclide_index('sc52')
2319 8 : isc53 = get_nuclide_index('sc53')
2320 8 : iti39 = get_nuclide_index('ti39')
2321 8 : iti40 = get_nuclide_index('ti40')
2322 8 : iti41 = get_nuclide_index('ti41')
2323 8 : iti42 = get_nuclide_index('ti42')
2324 8 : iti43 = get_nuclide_index('ti43')
2325 8 : iti44 = get_nuclide_index('ti44')
2326 8 : iti45 = get_nuclide_index('ti45')
2327 8 : iti46 = get_nuclide_index('ti46')
2328 8 : iti47 = get_nuclide_index('ti47')
2329 8 : iti48 = get_nuclide_index('ti48')
2330 8 : iti49 = get_nuclide_index('ti49')
2331 8 : iti50 = get_nuclide_index('ti50')
2332 8 : iti51 = get_nuclide_index('ti51')
2333 8 : iti52 = get_nuclide_index('ti52')
2334 8 : iti53 = get_nuclide_index('ti53')
2335 8 : iti54 = get_nuclide_index('ti54')
2336 8 : iti55 = get_nuclide_index('ti55')
2337 8 : iv43 = get_nuclide_index('v43')
2338 8 : iv44 = get_nuclide_index('v44')
2339 8 : iv45 = get_nuclide_index('v45')
2340 8 : iv46 = get_nuclide_index('v46')
2341 8 : iv47 = get_nuclide_index('v47')
2342 8 : iv48 = get_nuclide_index('v48')
2343 8 : iv49 = get_nuclide_index('v49')
2344 8 : iv50 = get_nuclide_index('v50')
2345 8 : iv51 = get_nuclide_index('v51')
2346 8 : iv52 = get_nuclide_index('v52')
2347 8 : iv53 = get_nuclide_index('v53')
2348 8 : iv54 = get_nuclide_index('v54')
2349 8 : iv55 = get_nuclide_index('v55')
2350 8 : iv56 = get_nuclide_index('v56')
2351 8 : iv57 = get_nuclide_index('v57')
2352 8 : icr43 = get_nuclide_index('cr43')
2353 8 : icr44 = get_nuclide_index('cr44')
2354 8 : icr45 = get_nuclide_index('cr45')
2355 8 : icr46 = get_nuclide_index('cr46')
2356 8 : icr47 = get_nuclide_index('cr47')
2357 8 : icr48 = get_nuclide_index('cr48')
2358 8 : icr49 = get_nuclide_index('cr49')
2359 8 : icr50 = get_nuclide_index('cr50')
2360 8 : icr51 = get_nuclide_index('cr51')
2361 8 : icr52 = get_nuclide_index('cr52')
2362 8 : icr53 = get_nuclide_index('cr53')
2363 8 : icr54 = get_nuclide_index('cr54')
2364 8 : icr55 = get_nuclide_index('cr55')
2365 8 : icr56 = get_nuclide_index('cr56')
2366 8 : icr57 = get_nuclide_index('cr57')
2367 8 : icr58 = get_nuclide_index('cr58')
2368 8 : icr59 = get_nuclide_index('cr59')
2369 8 : icr60 = get_nuclide_index('cr60')
2370 8 : icr61 = get_nuclide_index('cr61')
2371 8 : icr62 = get_nuclide_index('cr62')
2372 8 : icr63 = get_nuclide_index('cr63')
2373 8 : icr64 = get_nuclide_index('cr64')
2374 8 : icr65 = get_nuclide_index('cr65')
2375 8 : icr66 = get_nuclide_index('cr66')
2376 8 : imn46 = get_nuclide_index('mn46')
2377 8 : imn47 = get_nuclide_index('mn47')
2378 8 : imn48 = get_nuclide_index('mn48')
2379 8 : imn49 = get_nuclide_index('mn49')
2380 8 : imn50 = get_nuclide_index('mn50')
2381 8 : imn51 = get_nuclide_index('mn51')
2382 8 : imn52 = get_nuclide_index('mn52')
2383 8 : imn53 = get_nuclide_index('mn53')
2384 8 : imn54 = get_nuclide_index('mn54')
2385 8 : imn55 = get_nuclide_index('mn55')
2386 8 : imn56 = get_nuclide_index('mn56')
2387 8 : imn57 = get_nuclide_index('mn57')
2388 8 : imn58 = get_nuclide_index('mn58')
2389 8 : imn59 = get_nuclide_index('mn59')
2390 8 : imn60 = get_nuclide_index('mn60')
2391 8 : imn61 = get_nuclide_index('mn61')
2392 8 : imn62 = get_nuclide_index('mn62')
2393 8 : imn63 = get_nuclide_index('mn63')
2394 8 : ife46 = get_nuclide_index('fe46')
2395 8 : ife47 = get_nuclide_index('fe47')
2396 8 : ife48 = get_nuclide_index('fe48')
2397 8 : ife49 = get_nuclide_index('fe49')
2398 8 : ife50 = get_nuclide_index('fe50')
2399 8 : ife51 = get_nuclide_index('fe51')
2400 8 : ife52 = get_nuclide_index('fe52')
2401 8 : ife53 = get_nuclide_index('fe53')
2402 8 : ife54 = get_nuclide_index('fe54')
2403 8 : ife55 = get_nuclide_index('fe55')
2404 8 : ife56 = get_nuclide_index('fe56')
2405 8 : ife57 = get_nuclide_index('fe57')
2406 8 : ife58 = get_nuclide_index('fe58')
2407 8 : ife59 = get_nuclide_index('fe59')
2408 8 : ife60 = get_nuclide_index('fe60')
2409 8 : ife61 = get_nuclide_index('fe61')
2410 8 : ife62 = get_nuclide_index('fe62')
2411 8 : ife63 = get_nuclide_index('fe63')
2412 8 : ife64 = get_nuclide_index('fe64')
2413 8 : ife65 = get_nuclide_index('fe65')
2414 8 : ife66 = get_nuclide_index('fe66')
2415 8 : ife68 = get_nuclide_index('fe68')
2416 8 : ico50 = get_nuclide_index('co50')
2417 8 : ico51 = get_nuclide_index('co51')
2418 8 : ico52 = get_nuclide_index('co52')
2419 8 : ico53 = get_nuclide_index('co53')
2420 8 : ico54 = get_nuclide_index('co54')
2421 8 : ico55 = get_nuclide_index('co55')
2422 8 : ico56 = get_nuclide_index('co56')
2423 8 : ico57 = get_nuclide_index('co57')
2424 8 : ico58 = get_nuclide_index('co58')
2425 8 : ico59 = get_nuclide_index('co59')
2426 8 : ico60 = get_nuclide_index('co60')
2427 8 : ico61 = get_nuclide_index('co61')
2428 8 : ico62 = get_nuclide_index('co62')
2429 8 : ico63 = get_nuclide_index('co63')
2430 8 : ico64 = get_nuclide_index('co64')
2431 8 : ico65 = get_nuclide_index('co65')
2432 8 : ico66 = get_nuclide_index('co66')
2433 8 : ico67 = get_nuclide_index('co67')
2434 8 : ini50 = get_nuclide_index('ni50')
2435 8 : ini51 = get_nuclide_index('ni51')
2436 8 : ini52 = get_nuclide_index('ni52')
2437 8 : ini53 = get_nuclide_index('ni53')
2438 8 : ini54 = get_nuclide_index('ni54')
2439 8 : ini55 = get_nuclide_index('ni55')
2440 8 : ini56 = get_nuclide_index('ni56')
2441 8 : ini57 = get_nuclide_index('ni57')
2442 8 : ini58 = get_nuclide_index('ni58')
2443 8 : ini59 = get_nuclide_index('ni59')
2444 8 : ini60 = get_nuclide_index('ni60')
2445 8 : ini61 = get_nuclide_index('ni61')
2446 8 : ini62 = get_nuclide_index('ni62')
2447 8 : ini63 = get_nuclide_index('ni63')
2448 8 : ini64 = get_nuclide_index('ni64')
2449 8 : ini65 = get_nuclide_index('ni65')
2450 8 : ini66 = get_nuclide_index('ni66')
2451 8 : ini67 = get_nuclide_index('ni67')
2452 8 : ini68 = get_nuclide_index('ni68')
2453 8 : ini69 = get_nuclide_index('ni69')
2454 8 : ini70 = get_nuclide_index('ni70')
2455 8 : ini71 = get_nuclide_index('ni71')
2456 8 : ini72 = get_nuclide_index('ni72')
2457 8 : ini73 = get_nuclide_index('ni73')
2458 8 : icu56 = get_nuclide_index('cu56')
2459 8 : icu57 = get_nuclide_index('cu57')
2460 8 : icu58 = get_nuclide_index('cu58')
2461 8 : icu59 = get_nuclide_index('cu59')
2462 8 : icu60 = get_nuclide_index('cu60')
2463 8 : icu61 = get_nuclide_index('cu61')
2464 8 : icu62 = get_nuclide_index('cu62')
2465 8 : icu63 = get_nuclide_index('cu63')
2466 8 : icu64 = get_nuclide_index('cu64')
2467 8 : icu65 = get_nuclide_index('cu65')
2468 8 : icu66 = get_nuclide_index('cu66')
2469 8 : icu67 = get_nuclide_index('cu67')
2470 8 : icu68 = get_nuclide_index('cu68')
2471 8 : icu69 = get_nuclide_index('cu69')
2472 8 : icu70 = get_nuclide_index('cu70')
2473 8 : icu71 = get_nuclide_index('cu71')
2474 8 : icu72 = get_nuclide_index('cu72')
2475 8 : izn55 = get_nuclide_index('zn55')
2476 8 : izn56 = get_nuclide_index('zn56')
2477 8 : izn57 = get_nuclide_index('zn57')
2478 8 : izn58 = get_nuclide_index('zn58')
2479 8 : izn59 = get_nuclide_index('zn59')
2480 8 : izn60 = get_nuclide_index('zn60')
2481 8 : izn61 = get_nuclide_index('zn61')
2482 8 : izn62 = get_nuclide_index('zn62')
2483 8 : izn63 = get_nuclide_index('zn63')
2484 8 : izn64 = get_nuclide_index('zn64')
2485 8 : izn65 = get_nuclide_index('zn65')
2486 8 : izn66 = get_nuclide_index('zn66')
2487 8 : izn67 = get_nuclide_index('zn67')
2488 8 : izn68 = get_nuclide_index('zn68')
2489 8 : izn69 = get_nuclide_index('zn69')
2490 8 : izn70 = get_nuclide_index('zn70')
2491 8 : izn71 = get_nuclide_index('zn71')
2492 8 : izn72 = get_nuclide_index('zn72')
2493 8 : izn73 = get_nuclide_index('zn73')
2494 8 : izn74 = get_nuclide_index('zn74')
2495 :
2496 8 : iga60 = get_nuclide_index('ga60')
2497 8 : iga61 = get_nuclide_index('ga61')
2498 8 : iga62 = get_nuclide_index('ga62')
2499 8 : iga63 = get_nuclide_index('ga63')
2500 8 : iga64 = get_nuclide_index('ga64')
2501 8 : iga65 = get_nuclide_index('ga65')
2502 8 : iga66 = get_nuclide_index('ga66')
2503 8 : iga67 = get_nuclide_index('ga67')
2504 8 : iga68 = get_nuclide_index('ga68')
2505 8 : iga69 = get_nuclide_index('ga69')
2506 8 : iga70 = get_nuclide_index('ga70')
2507 8 : iga71 = get_nuclide_index('ga71')
2508 8 : iga72 = get_nuclide_index('ga72')
2509 8 : iga73 = get_nuclide_index('ga73')
2510 8 : iga74 = get_nuclide_index('ga74')
2511 8 : iga75 = get_nuclide_index('ga75')
2512 :
2513 8 : ige59 = get_nuclide_index('ge59')
2514 8 : ige60 = get_nuclide_index('ge60')
2515 8 : ige61 = get_nuclide_index('ge61')
2516 8 : ige62 = get_nuclide_index('ge62')
2517 8 : ige63 = get_nuclide_index('ge63')
2518 8 : ige64 = get_nuclide_index('ge64')
2519 8 : ige65 = get_nuclide_index('ge65')
2520 8 : ige66 = get_nuclide_index('ge66')
2521 8 : ige67 = get_nuclide_index('ge67')
2522 8 : ige68 = get_nuclide_index('ge68')
2523 8 : ige69 = get_nuclide_index('ge69')
2524 8 : ige70 = get_nuclide_index('ge70')
2525 8 : ige71 = get_nuclide_index('ge71')
2526 8 : ige72 = get_nuclide_index('ge72')
2527 8 : ige73 = get_nuclide_index('ge73')
2528 8 : ige74 = get_nuclide_index('ge74')
2529 8 : ige75 = get_nuclide_index('ge75')
2530 8 : ige76 = get_nuclide_index('ge76')
2531 :
2532 8 : ias71 = get_nuclide_index('as71')
2533 8 : ias72 = get_nuclide_index('as72')
2534 8 : ias73 = get_nuclide_index('as73')
2535 8 : ias74 = get_nuclide_index('as74')
2536 8 : ias75 = get_nuclide_index('as75')
2537 8 : ias76 = get_nuclide_index('as76')
2538 8 : ias77 = get_nuclide_index('as77')
2539 8 : ias78 = get_nuclide_index('as78')
2540 8 : ias79 = get_nuclide_index('as79')
2541 :
2542 8 : ise68 = get_nuclide_index('se68')
2543 8 : ise69 = get_nuclide_index('se69')
2544 8 : ise70 = get_nuclide_index('se70')
2545 8 : ise71 = get_nuclide_index('se71')
2546 8 : ise72 = get_nuclide_index('se72')
2547 8 : ise73 = get_nuclide_index('se73')
2548 8 : ise74 = get_nuclide_index('se74')
2549 8 : ise75 = get_nuclide_index('se75')
2550 8 : ise76 = get_nuclide_index('se76')
2551 :
2552 8 : ikr70 = get_nuclide_index('kr70')
2553 8 : ikr72 = get_nuclide_index('kr72')
2554 8 : isr74 = get_nuclide_index('sr74')
2555 8 : isr76 = get_nuclide_index('sr76')
2556 8 : izr77 = get_nuclide_index('zr77')
2557 8 : izr80 = get_nuclide_index('zr80')
2558 8 : imo82 = get_nuclide_index('mo82')
2559 8 : imo84 = get_nuclide_index('mo84')
2560 8 : iru88 = get_nuclide_index('ru88')
2561 8 : ipd92 = get_nuclide_index('pd92')
2562 8 : isr75 = get_nuclide_index('sr75')
2563 8 : iru86 = get_nuclide_index('ru86')
2564 8 : iru87 = get_nuclide_index('ru87')
2565 8 : ipd89 = get_nuclide_index('pd89')
2566 8 : ipd91 = get_nuclide_index('pd91')
2567 8 : icd93 = get_nuclide_index('cd93')
2568 8 : icd96 = get_nuclide_index('cd96')
2569 8 : isn98 = get_nuclide_index('sn98')
2570 8 : isn100 = get_nuclide_index('sn100')
2571 8 : isn102 = get_nuclide_index('sn102')
2572 8 : isn104 = get_nuclide_index('sn104')
2573 8 : ineut = get_nuclide_index('neut')
2574 8 : iprot = get_nuclide_index('prot')
2575 :
2576 8 : end subroutine set_some_isos
2577 :
2578 :
2579 954 : integer function category_id(cname)
2580 : character (len=*), intent(in) :: cname
2581 : ! returns id for the category if there is a matching name
2582 : ! returns 0 otherwise.
2583 : integer :: i, len
2584 : character (len=maxlen_category_name) :: nam
2585 954 : len = len_trim(cname)
2586 16218 : do i = 1, maxlen_category_name
2587 16218 : if (i <= len) then
2588 5310 : nam(i:i) = cname(i:i)
2589 : else
2590 9954 : nam(i:i) = ' '
2591 : end if
2592 : end do
2593 13965 : do i = 1, num_categories
2594 13965 : if (category_name(i)==nam) then
2595 954 : category_id = i
2596 954 : return
2597 : end if
2598 : end do
2599 954 : category_id = 0
2600 : end function category_id
2601 :
2602 :
2603 8 : subroutine set_category_names
2604 : integer :: i
2605 200 : category_name(:) = ''
2606 :
2607 8 : category_name(ipp) = 'pp'
2608 8 : category_name(icno) = 'cno'
2609 8 : category_name(i3alf) = 'tri_alpha'
2610 :
2611 8 : category_name(i_burn_c) = 'c_alpha'
2612 8 : category_name(i_burn_n) = 'n_alpha'
2613 8 : category_name(i_burn_o) = 'o_alpha'
2614 8 : category_name(i_burn_ne) = 'ne_alpha'
2615 8 : category_name(i_burn_na) = 'na_alpha'
2616 8 : category_name(i_burn_mg) = 'mg_alpha'
2617 8 : category_name(i_burn_si) = 'si_alpha'
2618 8 : category_name(i_burn_s) = 's_alpha'
2619 8 : category_name(i_burn_ar) = 'ar_alpha'
2620 8 : category_name(i_burn_ca) = 'ca_alpha'
2621 8 : category_name(i_burn_ti) = 'ti_alpha'
2622 8 : category_name(i_burn_cr) = 'cr_alpha'
2623 8 : category_name(i_burn_fe) = 'fe_co_ni'
2624 :
2625 8 : category_name(icc) = 'c12_c12'
2626 8 : category_name(ico) = 'c12_o16'
2627 8 : category_name(ioo) = 'o16_o16'
2628 :
2629 8 : category_name(iphoto) = 'photo'
2630 8 : category_name(ipnhe4) = 'pnhe4'
2631 :
2632 8 : category_name(i_ni56_co56) = 'ni56_co56'
2633 8 : category_name(i_co56_fe56) = 'co56_fe56'
2634 :
2635 8 : category_name(iother) = 'other'
2636 :
2637 8 : i=1 ! write it this way to avoid stupid compiler warning.
2638 8 : if (len_trim(category_name(i)) == 0) then
2639 0 : write(*,*) 'missing name for category', i
2640 0 : flush(6)
2641 0 : call mesa_error(__FILE__,__LINE__,'set_category_names')
2642 : end if
2643 192 : do i=2,num_categories
2644 192 : if (len_trim(category_name(i)) == 0) then
2645 0 : write(*,*) 'missing name for category', i
2646 0 : write(*,*) 'following ' // trim(category_name(i-1))
2647 0 : flush(6)
2648 0 : call mesa_error(__FILE__,__LINE__,'set_category_names')
2649 : end if
2650 : end do
2651 :
2652 8 : end subroutine set_category_names
2653 :
2654 0 : end module chem_def
|