Skip to content

Commit

Permalink
Merge pull request #723 from galacticusorg/featGalaxyMergerTrees
Browse files Browse the repository at this point in the history
Add functionality to track and output galaxy merger trees
  • Loading branch information
abensonca authored Oct 19, 2024
2 parents fa4b71e + da106bf commit a4ac3d9
Show file tree
Hide file tree
Showing 12 changed files with 1,686 additions and 68 deletions.
4 changes: 2 additions & 2 deletions .github/actions/buildMacOS/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -204,8 +204,8 @@ runs:
if [[ "${OS_VER}" -ge 12 ]]; then
# For OS versions 12 and above we need to ensure that the ParserDetails.ini is set up.
sudo perl -MXML::SAX -e "XML::SAX->add_parser('XML::SAX::PurePerl')->save_parsers()" || true
sudo perl -MXML::SAX -e "XML::SAX->add_parser('XML::LibXML::SAX::Parser')->save_parsers()"
sudo perl -MXML::SAX -e "XML::SAX->add_parser('XML::LibXML::SAX')->save_parsers()"
sudo perl -MXML::SAX -e "XML::SAX->add_parser('XML::LibXML::SAX::Parser')->save_parsers()" || true
sudo perl -MXML::SAX -e "XML::SAX->add_parser('XML::LibXML::SAX')->save_parsers()" || true
fi
sudo perl -MCPAN -e 'force("install","XML::SAX::ParserFactory")'
sudo perl -MCPAN -e 'force("install","XML::Validator::Schema")'
Expand Down
295 changes: 295 additions & 0 deletions parameters/tutorials/galaxyMergerTree.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,295 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- A simple example of outputing galaxy merger tree information -->
<!-- 18-October-2024 -->
<parameters>
<formatVersion>2</formatVersion>
<lastModified revision="165490f4968c699f7e5bb73ef60bcb7e626f51e6"/>

<!-- Component selection -->
<componentBasic value="standard"/>
<componentBlackHole value="standard">
<massSeed value="100.0"/>
<heatsHotHalo value="true"/>
<efficiencyWind value="0.0024"/>
<efficiencyWindScalesWithEfficiencyRadiative value="true"/>
<bondiHoyleAccretionEnhancementHotHalo value="6.0"/>
<bondiHoyleAccretionEnhancementSpheroid value="5.0"/>
<bondiHoyleAccretionTemperatureSpheroid value="100"/>
<bondiHoyleAccretionHotModeOnly value="true"/>
</componentBlackHole>
<componentDarkMatterProfile value="scale"/>
<componentDisk value="standard">
<toleranceAbsoluteMass value="1.0e-6"/>
<massDistributionDisk value="exponentialDisk">
<dimensionless value="true"/>
</massDistributionDisk>
</componentDisk>
<componentHotHalo value="standard">
<fractionLossAngularMomentum value="0.3"/>
<starveSatellites value="false"/>
<efficiencyStrippingOutflow value="0.1"/>
<trackStrippedGas value="true"/>
</componentHotHalo>
<componentSatellite value="standard"/>
<componentSpheroid value="standard">
<ratioAngularMomentumScaleRadius value="0.5"/>
<efficiencyEnergeticOutflow value="1.0e-2"/>
<toleranceAbsoluteMass value="1.0e-6"/>
<massDistributionSpheroid value="hernquist">
<dimensionless value="true"/>
</massDistributionSpheroid>
</componentSpheroid>
<componentSpin value="scalar"/>

<!-- Cosmological parameters and options -->
<cosmologyFunctions value="matterLambda"/>
<cosmologyParameters value="simple">
<HubbleConstant value="70.2"/>
<OmegaMatter value="0.2725"/>
<OmegaDarkEnergy value="0.7275"/>
<OmegaBaryon value="0.0455"/>
<temperatureCMB value="2.72548"/>
</cosmologyParameters>

<!-- Power spectrum options -->
<transferFunction value="eisensteinHu1999">
<neutrinoNumberEffective value="3.046"/>
<neutrinoMassSummed value="0.000"/>
</transferFunction>
<powerSpectrumPrimordial value="powerLaw">
<index value="0.961"/>
<wavenumberReference value="1.000"/>
<running value="0.000"/>
</powerSpectrumPrimordial>
<powerSpectrumPrimordialTransferred value="simple"/>
<cosmologicalMassVariance value="filteredPower">
<sigma_8 value="0.807"/>
</cosmologicalMassVariance>

<!-- Structure formation options -->
<linearGrowth value="collisionlessMatter"/>
<haloMassFunction value="tinker2008"/>
<criticalOverdensity value="sphericalCollapseClsnlssMttrCsmlgclCnstnt"/>
<virialDensityContrast value="sphericalCollapseClsnlssMttrCsmlgclCnstnt"/>

<!-- Merger tree building options -->
<mergerTreeConstructor value="build">
<redshiftBase value="6.0"/>
</mergerTreeConstructor>
<mergerTreeBuilder value="cole2000">
<accretionLimit value="0.1"/>
<mergeProbability value="0.1"/>
</mergerTreeBuilder>
<mergerTreeBranchingProbability value="parkinsonColeHelly">
<G0 value="+0.57"/>
<gamma1 value="+0.38"/>
<gamma2 value="-0.01"/>
<accuracyFirstOrder value="+0.10"/>
</mergerTreeBranchingProbability>
<mergerTreeBuildMasses value="fixedMass">
<massTree value="1.0e12"/>
<treeCount value="1"/>
</mergerTreeBuildMasses>
<mergerTreeMassResolution value="scaled">
<massResolutionFractional value="1.0e-5"/>
<massResolutionMinimum value="2.43e+8"/>
</mergerTreeMassResolution>
<!-- Substructure hierarchy options -->
<mergerTreeNodeMerger value="singleLevelHierarchy"/>

<!-- Dark matter halo structure options -->
<darkMatterProfileDMO value="NFW"/>
<darkMatterProfileScaleRadius value="concentrationLimiter">
<concentrationMinimum value=" 4.0"/>
<concentrationMaximum value="100.0"/>
<darkMatterProfileScaleRadius value="concentration"/>
</darkMatterProfileScaleRadius>
<darkMatterProfileConcentration value="gao2008"/>
<haloSpinDistribution value="bett2007">
<alpha value="2.509"/>
<lambda0 value="0.04326"/>
</haloSpinDistribution>

<!-- Halo accretion options -->
<accretionHalo value="simple">
<redshiftReionization value="10.5"/>
<velocitySuppressionReionization value="35.0"/>
</accretionHalo>

<!-- Hot halo gas cooling model options -->
<hotHaloMassDistribution value="betaProfile"/>
<hotHaloTemperatureProfile value="virial"/>
<hotHaloMassDistributionCoreRadius value="virialFraction">
<coreRadiusOverVirialRadius value="0.3"/>
</hotHaloMassDistributionCoreRadius>
<coolingSpecificAngularMomentum value="constantRotation">
<sourceAngularMomentumSpecificMean value="hotGas"/>
<sourceNormalizationRotation value="hotGas"/>
</coolingSpecificAngularMomentum>
<hotHaloOutflowReincorporation value="haloDynamicalTime">
<multiplier value="5.0"/>
</hotHaloOutflowReincorporation>

<coolingFunction value="atomicCIECloudy"/>
<coolingRadius value="simple"/>
<coolingRate value="whiteFrenk1991">
<velocityCutOff value="10000"/>
</coolingRate>
<coolingTime value="simple">
<degreesOfFreedom value="3.0"/>
</coolingTime>
<coolingTimeAvailable value="whiteFrenk1991">
<ageFactor value="0"/>
</coolingTimeAvailable>
<!-- Hot halo ram pressure stripping options -->
<hotHaloRamPressureStripping value="font2008"/>
<hotHaloRamPressureForce value="font2008"/>
<hotHaloRamPressureTimescale value="ramPressureAcceleration"/>
<!-- Galactic structure solver options -->
<galacticStructureSolver value="equilibrium"/>
<darkMatterProfile value="adiabaticGnedin2004">
<A value="0.73"/>
<omega value="0.7"/>
</darkMatterProfile>
<!-- Star formation rate options -->
<starFormationRateDisks value="intgrtdSurfaceDensity"/>
<starFormationRateSurfaceDensityDisks value="krumholz2009">
<frequencyStarFormation value="0.385"/>
<clumpingFactorMolecularComplex value="5.000"/>
<molecularFractionFast value="true"/>
</starFormationRateSurfaceDensityDisks>
<starFormationRateSpheroids value="timescale">
<starFormationTimescale value="dynamicalTime">
<efficiency value="0.04"/>
<exponentVelocity value="2.0"/>
<timescaleMinimum value="0.001"/>
</starFormationTimescale>
</starFormationRateSpheroids>

<!-- Stellar populations options -->
<stellarPopulationProperties value="instantaneous"/>
<stellarPopulationSpectra value="FSPS"/>
<stellarPopulationSelector value="fixed"/>

<initialMassFunction value="chabrier2001"/>
<stellarPopulation value="standard">
<recycledFraction value="0.46"/>
<metalYield value="0.035"/>
</stellarPopulation>

<!-- AGN feedback options -->
<hotHaloExcessHeatDrivesOutflow value="true"/>
<!-- Accretion disk properties -->
<accretionDisks value="switched">
<accretionRateThinDiskMaximum value="0.30"/>
<accretionRateThinDiskMinimum value="0.01"/>
<scaleADAFRadiativeEfficiency value="true"/>
<accretionDisksShakuraSunyaev value="shakuraSunyaev"/>
<accretionDisksADAF value="ADAF">
<efficiencyRadiationType value="thinDisk"/>
<adiabaticIndex value="1.444"/>
<energyOption value="pureADAF"/>
<efficiencyRadiation value="0.01"/>
<viscosityOption value="fit"/>
</accretionDisksADAF>
</accretionDisks>

<!-- Black hole options -->
<blackHoleBinaryMergers value="rezzolla2008"/>
<!-- Galaxy merger options -->
<virialOrbit value="benson2005"/>
<satelliteMergingTimescales value="jiang2008">
<timescaleMultiplier value="0.75"/>
</satelliteMergingTimescales>
<mergerMassMovements value="simple">
<destinationGasMinorMerger value="spheroid"/>
<massRatioMajorMerger value="0.25"/>
</mergerMassMovements>
<mergerRemnantSize value="cole2000">
<energyOrbital value="1"/>
</mergerRemnantSize>

<!-- Node evolution and physics -->
<nodeOperator value="multi">
<!-- Cosmological epoch -->
<nodeOperator value="cosmicTime"/>
<!-- DMO evolution -->
<nodeOperator value="DMOInterpolate"/>
<!-- Halo concentrations -->
<nodeOperator value="darkMatterProfileScaleSet"/>
<nodeOperator value="darkMatterProfileScaleInterpolate"/>
<!-- Halo spins -->
<nodeOperator value="haloAngularMomentumRandom">
<factorReset value="2.0"/>
</nodeOperator>
<nodeOperator value="haloAngularMomentumInterpolate"/>
<!-- Satellite evolution -->
<nodeOperator value="satelliteMergingTime"/>
<nodeOperator value="satelliteMassLoss"/>
<!-- Star formation -->
<nodeOperator value="starFormationDisks"/>
<nodeOperator value="starFormationSpheroids"/>
<!--Stellar feedback outflows-->
<nodeOperator value="stellarFeedbackDisks">
<stellarFeedbackOutflows value="rateLimit">
<timescaleOutflowFractionalMinimum value="0.001"/>
<stellarFeedbackOutflows value="powerLaw">
<velocityCharacteristic value="250.0"/>
<exponent value="3.5"/>
</stellarFeedbackOutflows>
</stellarFeedbackOutflows>
</nodeOperator>
<nodeOperator value="stellarFeedbackSpheroids">
<stellarFeedbackOutflows value="rateLimit">
<timescaleOutflowFractionalMinimum value="0.001"/>
<stellarFeedbackOutflows value="powerLaw">
<velocityCharacteristic value="100.0"/>
<exponent value="3.5"/>
</stellarFeedbackOutflows>
</stellarFeedbackOutflows>
</nodeOperator>
<!-- Bar instability in galactic disks -->
<nodeOperator value="barInstability">
<galacticDynamicsBarInstability value="efstathiou1982">
<stabilityThresholdGaseous value="0.7"/>
<stabilityThresholdStellar value="1.1"/>
</galacticDynamicsBarInstability>
</nodeOperator>
<!-- Track galaxy merger trees -->
<nodeOperator value="uniqueIDBranchTip"/>
<nodeOperator value="galaxyMergerTree">
<timeStep value="0.025"/>
<nodePropertyExtractor value="massStellar"/>
<nodePropertyExtractor value="massISM"/>
<nodePropertyExtractor value="massBasic"/>
<nodePropertyExtractor value="starFormationRate">
<component value="total"/>
</nodePropertyExtractor>
</nodeOperator>
</nodeOperator>

<!-- Numerical tolerances -->
<mergerTreeNodeEvolver value="standard">
<odeToleranceAbsolute value="0.01"/>
<odeToleranceRelative value="0.01"/>
</mergerTreeNodeEvolver>

<mergerTreeEvolver value="standard">
<timestepHostAbsolute value="1.0"/>
<timestepHostRelative value="0.1"/>
</mergerTreeEvolver>

<!-- Output options -->
<outputFileName value="galaxyMergerTree.hdf5"/>
<outputTimes value="list">
<redshifts value="6.0"/>
</outputTimes>
<mergerTreeOutputter value="standard">
<outputReferences value="false"/>
</mergerTreeOutputter>
<nodePropertyExtractor value="multi">
<nodePropertyExtractor value="nodeIndices"/>
<nodePropertyExtractor value="galaxyMergerTree"/>
</nodePropertyExtractor>

</parameters>
Loading

0 comments on commit a4ac3d9

Please sign in to comment.