Below we will make all SSPs used in the ProGeny papers (Robotham
& Bellstedt, and the companion paper and Bellstedt & Robotham).
This covers the full grid of three isochrones (MIST, PARSEC, BaSTI);
four stellar atmospheres (C3K, PHOENIX, MILES, BaSeL); three IMFs
(Chabrier, Kroupa, Salpeter), i.e. 3 x 3 x 4 = 36 SSPs. Additionally
there are Kroupa age and Z evolving IMFs for all four stellar atmosphere
(MIST only), i.e. 2 x 4 = 8. And finally there is a Lacey age evolving
IMF (MIST and C3K only). This makes 45 variants in total. Running all of
the below on a modern machine with 8 cores will take about half an hour
and require about 16 GB of RAM if you do not delete objects as you go
along (to delete things you can run rm(PG_Ch_Mi_C3K)
or
similar after you have saved the relevant FITS output).
First we load the libraries. ProGeny and Rfits or available at GitHub/asgr.
Set some paths (these need to be correct for your system).
path_to_isochrone = 'ProGeny_isochrone/'
path_to_atmos = 'ProGeny_atmos/'
path_to_SSP = 'ProGeny_SSP/'
Now we load our isochrones. If you do not have one already, you can get them using the progenyIsoDownload function. Currently we provide MIST (preferred, for reasons we shall get to), PARSEC and BaSTI as base isochrones.
MistIso = read.fst(file.path(path_to_isochrone,'MistIso.fst'), as.data.table = TRUE)
ParIso = read.fst(file.path(path_to_isochrone,'ParsecIso.fst'), as.data.table = TRUE)
BasIso = read.fst(file.path(path_to_isochrone,'BastiIso_FSPS.fst'), as.data.table = TRUE)
Next we load four different base spectra options: C3K, PHOENIX (Husser), MILES and BaSeL (mostly referred to as BASEL below for simplicity). To get these locally you will need to run progenyAtmosDownload. The below might take about a minute to run (depending on the speed of your HDD or SSD).
Spec_PHOENIX = progenyAtmosLoad(path_to_atmos, base='combine_PHOENIX_husser')
Spec_C3K = progenyAtmosLoad(path_to_atmos, base='combine_C3K_conroy')
Spec_MILES = progenyAtmosLoad(path_to_atmos, base='combine_MILES_vazdekis')
Spec_BASEL = progenyAtmosLoad(path_to_atmos, base='combine_BASEL_wlbc')
Now we compute our weighted interpolation onto each isochrone grid for all atmospheres (so 3 x 4 = 12 combinations):
Interp_Mist_C3K = progenyInterpGrid_All(Iso = MistIso, Spec_combine = Spec_C3K)
Interp_Par_C3K = progenyInterpGrid_All(Iso = ParIso, Spec_combine = Spec_C3K)
Interp_Bas_C3K = progenyInterpGrid_All(Iso = BasIso, Spec_combine = Spec_C3K)
Interp_Mist_PHOENIX = progenyInterpGrid_All(Iso = MistIso, Spec_combine = Spec_PHOENIX)
Interp_Par_PHOENIX = progenyInterpGrid_All(Iso = ParIso, Spec_combine = Spec_PHOENIX)
Interp_Bas_PHOENIX = progenyInterpGrid_All(Iso = BasIso, Spec_combine = Spec_PHOENIX)
Interp_Mist_MILES = progenyInterpGrid_All(Iso = MistIso, Spec_combine = Spec_MILES)
Interp_Par_MILES = progenyInterpGrid_All(Iso = ParIso, Spec_combine = Spec_MILES)
Interp_Bas_MILES = progenyInterpGrid_All(Iso = BasIso, Spec_combine = Spec_MILES)
Interp_Mist_BASEL = progenyInterpGrid_All(Iso = MistIso, Spec_combine = Spec_BASEL)
Interp_Par_BASEL = progenyInterpGrid_All(Iso = ParIso, Spec_combine = Spec_BASEL)
Interp_Bas_BASEL = progenyInterpGrid_All(Iso = BasIso, Spec_combine = Spec_BASEL)
Now we find our preferred stellar atmosphere for C3K:
MistIso_C3K = progenyInterpBest(Iso = MistIso,
Interp_combine = Interp_Mist_C3K,
label_AGB = 4:5, #7:8 [PC] / 4:5 [Mist]
label_white = 6:8 # 9 [PC] / 6:8 [Mist]
)
ParIso_C3K = progenyInterpBest(Iso = ParIso,
Interp_combine = Interp_Par_C3K,
label_AGB = 7:8, #7:8 [PC] / 4:5 [Mist]
label_white = 9 # 9 [PC] / 6:8 [Mist]
)
BasIso_C3K = progenyInterpBest(Iso = BasIso,
Interp_combine = Interp_Bas_C3K,
label_AGB = 3:5 #7:8 [PC] / 4:5 [Mist]
)
Now we find our preferred stellar atmosphere for PHOENIX (Husser):
MistIso_PHOENIX = progenyInterpBest(Iso = MistIso,
Interp_combine = Interp_Mist_PHOENIX,
label_AGB = 4:5, #7:8 [PC] / 4:5 [Mist]
label_white = 6:8 # 9 [PC] / 6:8 [Mist]
)
ParIso_PHOENIX = progenyInterpBest(Iso = ParIso,
Interp_combine = Interp_Par_PHOENIX,
label_AGB = 7:8, #7:8 [PC] / 4:5 [Mist]
label_white = 9 # 9 [PC] / 6:8 [Mist]
)
BasIso_PHOENIX = progenyInterpBest(Iso = BasIso,
Interp_combine = Interp_Bas_PHOENIX,
label_AGB = 3:5 #7:8 [PC] / 4:5 [Mist]
)
Now we find our preferred stellar atmosphere for MILES:
MistIso_MILES = progenyInterpBest(Iso = MistIso,
Interp_combine = Interp_Mist_MILES,
label_AGB = 4:5, #7:8 [PC] / 4:5 [Mist]
label_white = 6:8 # 9 [PC] / 6:8 [Mist]
)
ParIso_MILES = progenyInterpBest(Iso = ParIso,
Interp_combine = Interp_Par_MILES,
label_AGB = 7:8, #7:8 [PC] / 4:5 [Mist]
label_white = 9 # 9 [PC] / 6:8 [Mist]
)
BasIso_MILES = progenyInterpBest(Iso = BasIso,
Interp_combine = Interp_Bas_MILES,
label_AGB = 3:5 #7:8 [PC] / 4:5 [Mist]
)
Now we find our preferred stellar atmosphere for BaSeL (Husser):
MistIso_BASEL = progenyInterpBest(Iso = MistIso,
Interp_combine = Interp_Mist_BASEL,
label_AGB = 4:5, #7:8 [PC] / 4:5 [Mist]
label_white = 6:8 # 9 [PC] / 6:8 [Mist]
)
ParIso_BASEL = progenyInterpBest(Iso = ParIso,
Interp_combine = Interp_Par_BASEL,
label_AGB = 7:8, #7:8 [PC] / 4:5 [Mist]
label_white = 9 # 9 [PC] / 6:8 [Mist]
)
BasIso_BASEL = progenyInterpBest(Iso = BasIso,
Interp_combine = Interp_Bas_BASEL,
label_AGB = 3:5 #7:8 [PC] / 4:5 [Mist]
)
PG_Ch_Mi_C3K = progenyMakeSSP(Iso = MistIso_C3K,
IMFfunc = IMF_Chabrier,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_C3K,
Interp_combine = Interp_Mist_C3K
)
PG_Ch_Mi_PHOENIX = progenyMakeSSP(Iso = MistIso_PHOENIX,
IMFfunc = IMF_Chabrier,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_PHOENIX,
Interp_combine = Interp_Mist_PHOENIX
)
PG_Ch_Mi_MILES = progenyMakeSSP(Iso = MistIso_MILES,
IMFfunc = IMF_Chabrier,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_MILES,
Interp_combine = Interp_Mist_MILES
)
PG_Ch_Mi_BASEL = progenyMakeSSP(Iso = MistIso_BASEL,
IMFfunc = IMF_Chabrier,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_BASEL,
Interp_combine = Interp_Mist_BASEL
)
You might also want to check each SSP with the ProSpect function speclib_check before writing it out.
As well as printing a bunch of diagnostic messages, this will return a logical output specifying whether all checks are passed (TRUE) or not (FALSE).
Assuming our checks are passed (the above should work!) then we can write them out. Below we save them in the correct FITS format (this can be loaded directly into ProSpect with speclib_FITSload).
Rfits_write(PG_Ch_Mi_C3K, file.path(path_to_SSP,'PG_Ch_Mi_C3K.fits'), flatten = T)
Rfits_write(PG_Ch_Mi_PHOENIX, file.path(path_to_SSP,'PG_Ch_Mi_PHOENIX.fits'), flatten = T)
Rfits_write(PG_Ch_Mi_MILES, file.path(path_to_SSP,'PG_Ch_Mi_MILES.fits'), flatten = T)
Rfits_write(PG_Ch_Mi_BASEL, file.path(path_to_SSP,'PG_Ch_Mi_BASEL.fits'), flatten = T)
PG_Kr_Mi_C3K = progenyMakeSSP(Iso = MistIso_C3K,
IMFfunc = IMF_Kroupa,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_C3K,
Interp_combine = Interp_Mist_C3K
)
PG_Kr_Mi_PHOENIX = progenyMakeSSP(Iso = MistIso_PHOENIX,
IMFfunc = IMF_Kroupa,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_PHOENIX,
Interp_combine = Interp_Mist_PHOENIX
)
PG_Kr_Mi_MILES = progenyMakeSSP(Iso = MistIso_MILES,
IMFfunc = IMF_Kroupa,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_MILES,
Interp_combine = Interp_Mist_MILES
)
PG_Kr_Mi_BASEL = progenyMakeSSP(Iso = MistIso_BASEL,
IMFfunc = IMF_Kroupa,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_BASEL,
Interp_combine = Interp_Mist_BASEL
)
Rfits_write(PG_Kr_Mi_C3K, file.path(path_to_SSP,'PG_Kr_Mi_C3K.fits'), flatten = T)
Rfits_write(PG_Kr_Mi_PHOENIX, file.path(path_to_SSP,'PG_Kr_Mi_PHOENIX.fits'), flatten = T)
Rfits_write(PG_Kr_Mi_MILES, file.path(path_to_SSP,'PG_Kr_Mi_MILES.fits'), flatten = T)
Rfits_write(PG_Kr_Mi_BASEL, file.path(path_to_SSP,'PG_Kr_Mi_BASEL.fits'), flatten = T)
PG_Sp_Mi_C3K = progenyMakeSSP(Iso = MistIso_C3K,
IMFfunc = IMF_Salpeter,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_C3K,
Interp_combine = Interp_Mist_C3K
)
PG_Sp_Mi_PHOENIX = progenyMakeSSP(Iso = MistIso_PHOENIX,
IMFfunc = IMF_Salpeter,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_PHOENIX,
Interp_combine = Interp_Mist_PHOENIX
)
PG_Sp_Mi_MILES = progenyMakeSSP(Iso = MistIso_MILES,
IMFfunc = IMF_Salpeter,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_MILES,
Interp_combine = Interp_Mist_MILES
)
PG_Sp_Mi_BASEL = progenyMakeSSP(Iso = MistIso_BASEL,
IMFfunc = IMF_Salpeter,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_BASEL,
Interp_combine = Interp_Mist_BASEL
)
Rfits_write(PG_Sp_Mi_C3K, file.path(path_to_SSP,'PG_Sp_Mi_C3K.fits'), flatten = T)
Rfits_write(PG_Sp_Mi_PHOENIX, file.path(path_to_SSP,'PG_Sp_Mi_PHOENIX.fits'), flatten = T)
Rfits_write(PG_Sp_Mi_MILES, file.path(path_to_SSP,'PG_Sp_Mi_MILES.fits'), flatten = T)
Rfits_write(PG_Sp_Mi_BASEL, file.path(path_to_SSP,'PG_Sp_Mi_BASEL.fits'), flatten = T)
PG_Ch_PC_C3K = progenyMakeSSP(Iso = ParIso_C3K,
IMFfunc = IMF_Chabrier,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_C3K,
Interp_combine = Interp_Par_C3K
)
PG_Ch_PC_PHOENIX = progenyMakeSSP(Iso = ParIso_PHOENIX,
IMFfunc = IMF_Chabrier,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_PHOENIX,
Interp_combine = Interp_Par_PHOENIX
)
PG_Ch_PC_MILES = progenyMakeSSP(Iso = ParIso_MILES,
IMFfunc = IMF_Chabrier,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_MILES,
Interp_combine = Interp_Par_MILES
)
PG_Ch_PC_BASEL = progenyMakeSSP(Iso = ParIso_BASEL,
IMFfunc = IMF_Chabrier,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_BASEL,
Interp_combine = Interp_Par_BASEL
)
Rfits_write(PG_Ch_PC_C3K, file.path(path_to_SSP,'PG_Ch_PC_C3K.fits'), flatten = T)
Rfits_write(PG_Ch_PC_PHOENIX, file.path(path_to_SSP,'PG_Ch_PC_PHOENIX.fits'), flatten = T)
Rfits_write(PG_Ch_PC_MILES, file.path(path_to_SSP,'PG_Ch_PC_MILES.fits'), flatten = T)
Rfits_write(PG_Ch_PC_BASEL, file.path(path_to_SSP,'PG_Ch_PC_BASEL.fits'), flatten = T)
PG_Kr_PC_C3K = progenyMakeSSP(Iso = ParIso_C3K,
IMFfunc = IMF_Kroupa,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_C3K,
Interp_combine = Interp_Par_C3K
)
PG_Kr_PC_PHOENIX = progenyMakeSSP(Iso = ParIso_PHOENIX,
IMFfunc = IMF_Kroupa,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_PHOENIX,
Interp_combine = Interp_Par_PHOENIX
)
PG_Kr_PC_MILES = progenyMakeSSP(Iso = ParIso_MILES,
IMFfunc = IMF_Kroupa,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_MILES,
Interp_combine = Interp_Par_MILES
)
PG_Kr_PC_BASEL = progenyMakeSSP(Iso = ParIso_BASEL,
IMFfunc = IMF_Kroupa,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_BASEL,
Interp_combine = Interp_Par_BASEL
)
Rfits_write(PG_Kr_PC_C3K, file.path(path_to_SSP,'PG_Kr_PC_C3K.fits'), flatten = T)
Rfits_write(PG_Kr_PC_PHOENIX, file.path(path_to_SSP,'PG_Kr_PC_PHOENIX.fits'), flatten = T)
Rfits_write(PG_Kr_PC_MILES, file.path(path_to_SSP,'PG_Kr_PC_MILES.fits'), flatten = T)
Rfits_write(PG_Kr_PC_BASEL, file.path(path_to_SSP,'PG_Kr_PC_BASEL.fits'), flatten = T)
PG_Sp_PC_C3K = progenyMakeSSP(Iso = ParIso_C3K,
IMFfunc = IMF_Salpeter,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_C3K,
Interp_combine = Interp_Par_C3K
)
PG_Sp_PC_PHOENIX = progenyMakeSSP(Iso = ParIso_PHOENIX,
IMFfunc = IMF_Salpeter,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_PHOENIX,
Interp_combine = Interp_Par_PHOENIX
)
PG_Sp_PC_MILES = progenyMakeSSP(Iso = ParIso_MILES,
IMFfunc = IMF_Salpeter,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_MILES,
Interp_combine = Interp_Par_MILES
)
PG_Sp_PC_BASEL = progenyMakeSSP(Iso = ParIso_BASEL,
IMFfunc = IMF_Salpeter,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_BASEL,
Interp_combine = Interp_Par_BASEL
)
Rfits_write(PG_Sp_PC_C3K, file.path(path_to_SSP,'PG_Sp_PC_C3K.fits'), flatten = T)
Rfits_write(PG_Sp_PC_PHOENIX, file.path(path_to_SSP,'PG_Sp_PC_PHOENIX.fits'), flatten = T)
Rfits_write(PG_Sp_PC_MILES, file.path(path_to_SSP,'PG_Sp_PC_MILES.fits'), flatten = T)
Rfits_write(PG_Sp_PC_BASEL, file.path(path_to_SSP,'PG_Sp_PC_BASEL.fits'), flatten = T)
PG_Ch_Ba_C3K = progenyMakeSSP(Iso = BasIso_C3K,
IMFfunc = IMF_Chabrier,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_C3K,
Interp_combine = Interp_Bas_C3K
)
PG_Ch_Ba_PHOENIX = progenyMakeSSP(Iso = BasIso_PHOENIX,
IMFfunc = IMF_Chabrier,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_PHOENIX,
Interp_combine = Interp_Bas_PHOENIX
)
PG_Ch_Ba_MILES = progenyMakeSSP(Iso = BasIso_MILES,
IMFfunc = IMF_Chabrier,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_MILES,
Interp_combine = Interp_Bas_MILES
)
PG_Ch_Ba_BASEL = progenyMakeSSP(Iso = BasIso_BASEL,
IMFfunc = IMF_Chabrier,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_BASEL,
Interp_combine = Interp_Bas_BASEL
)
Rfits_write(PG_Ch_Ba_C3K, file.path(path_to_SSP,'PG_Ch_Ba_C3K.fits'), flatten = T)
Rfits_write(PG_Ch_Ba_PHOENIX, file.path(path_to_SSP,'PG_Ch_Ba_PHOENIX.fits'), flatten = T)
Rfits_write(PG_Ch_Ba_MILES, file.path(path_to_SSP,'PG_Ch_Ba_MILES.fits'), flatten = T)
Rfits_write(PG_Ch_Ba_BASEL, file.path(path_to_SSP,'PG_Ch_Ba_BASEL.fits'), flatten = T)
PG_Kr_Ba_C3K = progenyMakeSSP(Iso = BasIso_C3K,
IMFfunc = IMF_Kroupa,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_C3K,
Interp_combine = Interp_Bas_C3K
)
PG_Kr_Ba_PHOENIX = progenyMakeSSP(Iso = BasIso_PHOENIX,
IMFfunc = IMF_Kroupa,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_PHOENIX,
Interp_combine = Interp_Bas_PHOENIX
)
PG_Kr_Ba_MILES = progenyMakeSSP(Iso = BasIso_MILES,
IMFfunc = IMF_Kroupa,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_MILES,
Interp_combine = Interp_Bas_MILES
)
PG_Kr_Ba_BASEL = progenyMakeSSP(Iso = BasIso_BASEL,
IMFfunc = IMF_Kroupa,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_BASEL,
Interp_combine = Interp_Bas_BASEL
)
Rfits_write(PG_Kr_Ba_C3K, file.path(path_to_SSP,'PG_Kr_Ba_C3K.fits'), flatten = T)
Rfits_write(PG_Kr_Ba_PHOENIX, file.path(path_to_SSP,'PG_Kr_Ba_PHOENIX.fits'), flatten = T)
Rfits_write(PG_Kr_Ba_MILES, file.path(path_to_SSP,'PG_Kr_Ba_MILES.fits'), flatten = T)
Rfits_write(PG_Kr_Ba_BASEL, file.path(path_to_SSP,'PG_Kr_Ba_BASEL.fits'), flatten = T)
PG_Sp_Ba_C3K = progenyMakeSSP(Iso = BasIso_C3K,
IMFfunc = IMF_Salpeter,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_C3K,
Interp_combine = Interp_Bas_C3K
)
PG_Sp_Ba_PHOENIX = progenyMakeSSP(Iso = BasIso_PHOENIX,
IMFfunc = IMF_Salpeter,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_PHOENIX,
Interp_combine = Interp_Bas_PHOENIX
)
PG_Sp_Ba_MILES = progenyMakeSSP(Iso = BasIso_MILES,
IMFfunc = IMF_Salpeter,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_MILES,
Interp_combine = Interp_Bas_MILES
)
PG_Sp_Ba_BASEL = progenyMakeSSP(Iso = BasIso_BASEL,
IMFfunc = IMF_Salpeter,
masslow = 0.1,
massmax = 100,
Spec_combine = Spec_BASEL,
Interp_combine = Interp_Bas_BASEL
)
Rfits_write(PG_Sp_Ba_C3K, file.path(path_to_SSP,'PG_Sp_Ba_C3K.fits'), flatten = T)
Rfits_write(PG_Sp_Ba_PHOENIX, file.path(path_to_SSP,'PG_Sp_Ba_PHOENIX.fits'), flatten = T)
Rfits_write(PG_Sp_Ba_MILES, file.path(path_to_SSP,'PG_Sp_Ba_MILES.fits'), flatten = T)
Rfits_write(PG_Sp_Ba_BASEL, file.path(path_to_SSP,'PG_Sp_Ba_BASEL.fits'), flatten = T)
PG_KrE_Mi_C3K = progenyMakeSSP(Iso = MistIso_C3K,
IMFfunc = IMF_Kroupa_evo,
masslow = rep(0.1, 2),
massmax = rep(100, 2),
Spec_combine = Spec_C3K,
Interp_combine = Interp_Mist_C3K
)
PG_KrE_Mi_PHOENIX = progenyMakeSSP(Iso = MistIso_PHOENIX,
IMFfunc = IMF_Kroupa_evo,
masslow = rep(0.1, 2),
massmax = rep(100, 2),
Spec_combine = Spec_PHOENIX,
Interp_combine = Interp_Mist_PHOENIX
)
PG_KrE_Mi_MILES = progenyMakeSSP(Iso = MistIso_MILES,
IMFfunc = IMF_Kroupa_evo,
masslow = rep(0.1, 2),
massmax = rep(100, 2),
Spec_combine = Spec_MILES,
Interp_combine = Interp_Mist_MILES
)
PG_KrE_Mi_BASEL = progenyMakeSSP(Iso = MistIso_BASEL,
IMFfunc = IMF_Kroupa_evo,
masslow = rep(0.1, 2),
massmax = rep(100, 2),
Spec_combine = Spec_BASEL,
Interp_combine = Interp_Mist_BASEL
)
Rfits_write(PG_KrE_Mi_C3K, file.path(path_to_SSP,'PG_KrE_Mi_C3K.fits'), flatten = T)
Rfits_write(PG_KrE_Mi_PHOENIX, file.path(path_to_SSP,'PG_KrE_Mi_PHOENIX.fits'), flatten = T)
Rfits_write(PG_KrE_Mi_MILES, file.path(path_to_SSP,'PG_KrE_Mi_MILES.fits'), flatten = T)
Rfits_write(PG_KrE_Mi_BASEL, file.path(path_to_SSP,'PG_KrE_Mi_BASEL.fits'), flatten = T)
PG_KrZE_Mi_C3K = progenyMakeSSP(Iso = MistIso_C3K,
IMFfunc = IMF_Kroupa_Zevo,
masslow = rep(0.1, 2),
massmax = rep(100, 2),
Spec_combine = Spec_C3K,
Interp_combine = Interp_Mist_C3K
)
PG_KrZE_Mi_PHOENIX = progenyMakeSSP(Iso = MistIso_PHOENIX,
IMFfunc = IMF_Kroupa_Zevo,
masslow = rep(0.1, 2),
massmax = rep(100, 2),
Spec_combine = Spec_PHOENIX,
Interp_combine = Interp_Mist_PHOENIX
)
PG_KrZE_Mi_MILES = progenyMakeSSP(Iso = MistIso_MILES,
IMFfunc = IMF_Kroupa_Zevo,
masslow = rep(0.1, 2),
massmax = rep(100, 2),
Spec_combine = Spec_MILES,
Interp_combine = Interp_Mist_MILES
)
PG_KrZE_Mi_BASEL = progenyMakeSSP(Iso = MistIso_BASEL,
IMFfunc = IMF_Kroupa_Zevo,
masslow = rep(0.1, 2),
massmax = rep(100, 2),
Spec_combine = Spec_BASEL,
Interp_combine = Interp_Mist_BASEL
)
Rfits_write(PG_KrZE_Mi_C3K, file.path(path_to_SSP,'PG_KrZE_Mi_C3K.fits'), flatten = T)
Rfits_write(PG_KrZE_Mi_PHOENIX, file.path(path_to_SSP,'PG_KrZE_Mi_PHOENIX.fits'), flatten = T)
Rfits_write(PG_KrZE_Mi_MILES, file.path(path_to_SSP,'PG_KrZE_Mi_MILES.fits'), flatten = T)
Rfits_write(PG_KrZE_Mi_BASEL, file.path(path_to_SSP,'PG_KrZE_Mi_BASEL.fits'), flatten = T)
PG_LcE_Mi_C3K = progenyMakeSSP(Iso=MistIso_C3K,
IMFfunc=IMF_Lacey_evo,
masslow_lim = c(0.1,0.1),
massmax_lim = c(100,100),
Spec_combine = Spec_C3K,
Interp_combine = Interp_Mist_C3K
)
Rfits_write(PG_LcE_Mi_C3K, file.path(path_to_SSP,'PG_LcE_Mi_C3K.fits'), flatten = T)
You now have all 45 SSPs. Well done! Give your computer a pat on the back :-D