Upload
vuongngoc
View
236
Download
1
Embed Size (px)
Citation preview
MODEST-8
Introduction to MUSE
Steve McMillan
MODEST Research
● dense stellar systems– star clusters, galactic nuclei
● many physical processes– stellar dynamics on large and
small scales– stellar evolution– stellar encounters and collisions– gas dynamics
● large dynamic range● physical interactions among
stars
MODEST-1
● no agenda, no speakers!● recognition of basic
issues● breakout groups and
software modules– integration of live stellar evolution?– integration of live stellar collisions?
● MODEST name!
Early Successes
● first general discussion of software interfaces● definition of an
elementary stellar interface
● “toy” stellar evolution/collision implementation (Makino & Hut, in the “proceedings”)
MODEST-2
● no agenda, a few speakers!● hands-on workshop
– integration of dynamics, stellar evolution, hydrodynamics
– runaway mergers
– blue stragglers
– application to specific clusters
● MMAS/Triptych/Tripletych (Lombardi)
● working groups!
A MODEST Problem...
● runaway mergers in clusters– dynamics → high densities– collisions → mergers– ~no mass loss (?) → supermassive stars– evolution (?) → intermediate-mass black holes
A MODEST Problem...
● runaway mergers in clusters– dynamics → high densities– collisions → mergers– ~no mass loss (?) → supermassive stars– evolution (?) → intermediate-mass black holes
● simulation issues– many-body dynamics– stellar hydrodynamics– “exotic” stellar evolution– mass loss from massive stars
Freitag, Gürkan, & Rasio (2006)
Portegies Zwart et al. (2004)
“Kitchen Sink” Codes
● very successful for MODEST problems● limited physics menu
– detailed dynamics– approximate SE– heuristic BE– cartoon hydrodynamics
● hard to expand functionality● wish list...
The State of the Art
● NBODY4/6 + BSE + sticky spheres (?)● kira + seba + sticky spheres● MC + startrack + sticky spheres
– SPH/MMAS after the fact (Lombardi)
● how to include more/better physics?● hard-wiring legacy codes is not the answer
MODEST begets MUSE
● MODEST 6a: Lund, December 2005– live stellar evolution (Church)– evolution of MMAS products (Pols/Glebbeek/Lombardi)– renewed discussion of software frameworks
● MODEST 6d: Amsterdam, April 2006– first “framework” workshop– modules, interfaces, and C++ glue– name MUSE coined:
Multiscale Multiphysics Scientific Environment
What is MUSE?
What is MUSE?
● collaborative programming effort● software interface designed to connect
independent codes● interoperability: plug and play● “easy” incorporation of new physics● facilitate code integration and comparison● don't mandate a programming style or
language
Stellar Dynamics Stellar Evolution
Hydrodynamics
Stellar Dynamics Stellar Evolution
Hydrodynamics
Scheduler
Stellar Dynamics Stellar Evolution
Hydrodynamics
Scheduler
globaldynamicaldata
detailedstellar data
Stellar Dynamics Stellar Evolution
Scheduler
Hydrodynamics
detailedstellar data
Top-level Structure...
while (t <= t_end) {
get_nodes_to_move(b, next_nodes, n_next, t);
if (t > t_log) log_output(b); if (t > t_snap) snap_output(b); if (t > t_end) return; if (t > t_esc) check_and_remove_escapers(b);
integrate_list(b, next_nodes, n_next, t);
if (t >= dt_sstar) evolve_stars(b); }
...and MUSE Modules
● particle pushing● binary and multiple systems● stellar evolution recipes● binary evolution recipes● stellar collision recipes● (live stellar and binary evolution)● (MMAS recipes)● (live SPH) . . .
Stellar DynamicsStellar andBinaryEvolution
Scheduler
detailedstellar dataHydrodynamicsMultiples
MUSE Components
● wiki: http://muse.li
● modules for stars, dynamics, collisions, etc.● implemented as “black boxes” with wrappers● well defined interfaces● all modules provide prediction time scales ● coordinated by “blind” scheduler
● top level “glue” — python (+swig/f2py)
Star Module
INTERFACEinitializationmass, composition
star ID
query
ID, time
massradiustemperature(structure)...
scheduling
ID t
toy modelanalytic calculation
lookup tableheuristic recipefull simulation(real star...)
...
stellar data
stellar module EFT89
INTERFACE
lookup R(M, t), L(M, t), ...
star 1, initial mass M1
star 2, initial mass M2
star 3, initial mass M3
star 4, initial mass M4
stellar module EFT89
INTERFACE
lookup R(M, t), L(M, t), ...
star 1, initial mass M1
star 2, initial mass M2
star 3, initial mass M3
star 4, initial mass M4
ID = 3, t R3(t), L
3(t), etc.
stellar module
EV (star)
INTERFACE
model r(m), L(m), (m)...
star 1, t1, r
1(m), L
1(m),
1(m)
star 2, t2, r
2(m), L
2(m),
2(m)
star 3, t3, r
3(m), L
3(m),
3(m)
star 4, t4, r
4(m), L
4(m),
4(m)
stellar module
EV (star)
INTERFACE
model r(m), L(m), (m)...
star 1, t1, r
1(m), L
1(m),
1(m)
star 2, t2, r
2(m), L
2(m),
2(m)
star 3, t3, r
3(m), L
3(m),
3(m)
star 4, t4, r
4(m), L
4(m),
4(m)
ID = 4, t R4(t), L
4(t), etc.
from gravity.hermite0.muse_dynamics import Hermite as dynfrom stellar.EFT89.muse_stellar import EFT89 as starfrom collisions.sticky_spheres.muse_collisions import StickySpheres as coll.. (initialization).while time < t_max:
time += dtimewhile dyn.get_time() < time:
id1 = dyn.evolve(time)
if id1 > 0:id2 = dyn.find_colliding_secondary(id1)evolve_stars(dyn.get_time())collide_stellar_pair(id1, id2)
evolve_stars(time)
print "end at t = ", time, ", Nstars= ", star.get_number()
int add_star(int id, double mass, double time_of_birth = Current, double metallicity = Default);int remove_star(int id);int get_number();
double get_time_of_birth(int id);double get_time_step(int id);int evolve(int id, double time);
double get_current_time();double get_model_time(id);double get_previous_model_time(id);double get_initial_mass(int id);double get_mass(int id);double get_radius(int id);double get_effective_temperature(int id);double get_luminosity(int id);
Current Stellar Interface
MUSE Functionality
● initial conditions: random numbers, standard models, etc.
● gravity modules– hermite0: shared time step Hermite integrator (MMH)– nbody1h: GRAPE-enabled Hermite NBODY1 (Heggie)– BHTree: parallel/GRAPE/GPU BH tree code (Makino)– CMC: Monte-Carlo (Fregeau)– all softened; emphasis on diversity!
● multiples– smallN (from Starlab): standalone small-N integrator, with
automatic termination and classification of outcomes
MUSE Functionality
● stellar evolution modules– EFT89– HPT00– other tracks (Gaburov)– TWIN (soon—Glebbeek)– EZ (soon—Justham)
● stellar collision modules– sticky spheres– MMAS (Lombardi)
● grid enabled, in principle (Groen)
Other MUSE Issues
● programming culture● legacy codes● legacy programmers● code sharing—pros and cons
● high-performance applications● comparison of simulations with observations
MUSE Summary
● interchangeable modules with standardized interfaces
● allows experimentation and comparison● individual modules clean implementations of
specific pieces of physics– parallel, GRAPE/GPU accelerated, grid enabled, etc.
● top-level code leverages python functionality– easy to add new modules– interface specifications still evolving
Time to replace NBODY and kira?
- maybe not quite yet...
MUSE Sessions at MODEST-8
● Friday: discussion/demonstration/tutorial● Saturday: hands-on
DISCUSSION OF MODEST-9 @ KITP AFTER THE AFTERNOON SESSION TODAY