MODEST-8 Introduction to MUSE Steve McMillan
MODEST Research dense stellar systems many physical processes star clusters, galactic nuclei 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
Freitag, Gürkan, & Rasio (2006) 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 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 Scheduler Hydrodynamics
Stellar Dynamics Stellar Evolution Scheduler global dynamical data detailed stellar data Hydrodynamics
Stellar Dynamics Stellar Evolution Scheduler Hydrodynamics detailed stellar 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 and Binary Evolution Stellar Dynamics Scheduler Multiples Hydrodynamics detailed stellar data
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 initialization toy model analytic calculation lookup table heuristic recipe full simulation (real star...)... mass, composition stellar data INTERFACE star ID ID, time query mass radius temperature (structure)... ID t scheduling
lookup R(M, t), L(M, t),... stellar module EFT89 star 1, initial mass M1 star 2, initial mass M2 star 3, initial mass M3 star 4, initial mass M4 INTERFACE
lookup R(M, t), L(M, t),... stellar module EFT89 star 1, initial mass M1 star 2, initial mass M2 star 3, initial mass M3 star 4, initial mass M4 INTERFACE ID = 3, t R3(t), L3(t), etc.
stellar module EV (star) model r(m), L(m), (m)... star 1, t1, r1(m), L1(m), 1(m) star 2, t2, r2(m), L2(m), 2(m) star 3, t3, r3(m), L3(m), 3(m) star 4, t4, r4(m), L4(m), 4(m) INTERFACE
stellar module EV (star) model r(m), L(m), (m)... star 1, t1, r1(m), L1(m), 1(m) star 2, t2, r2(m), L2(m), 2(m) star 3, t3, r3(m), L3(m), 3(m) star 4, t4, r4(m), L4(m), 4(m) INTERFACE ID = 4, t R4(t), L4(t), etc.
from gravity.hermite0.muse_dynamics import Hermite as dyn from stellar.eft89.muse_stellar import EFT89 as star from collisions.sticky_spheres.muse_collisions import StickySpheres as coll.. (initialization). while time < t_max: time += dtime while 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()
Current Stellar Interface 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);
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 stellar collision modules EFT89 HPT00 other tracks (Gaburov) TWIN (soon Glebbeek) EZ (soon Justham) 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