API Reference

Core Simulation Interface

class pa3py.PA3Py(data_dir: str, comp_model: CompositionModel | None = None)[source]

Bases: object

Centraliza flujo de PA3Py: Datos HDF5, química, acreción y gráficas.

calculate_isolation_mass_map()[source]

Calcula el mapa teórico de masa de aislamiento en todo el disco.

static load_results(filename: str) tuple[dict, list][source]

Carga tracks de crecimiento desde HDF5. Retorna (results_dict, species_list).

plot_hovmoller(field: str = 'dust_Sigma', show_snowlines: bool = True, **kwargs)[source]

Genera el diagrama de Hovmöller (Radio vs Tiempo). field puede ser ‘dust_Sigma’, ‘gas_Sigma’, o ‘epsilon’.

plot_population(results: dict, **kwargs)[source]

Grafica la población sintética de planetas (Masa Final vs Posición Inicial).

run_growth(embryos_au: list, m_seed_me: float = 0.001) dict[source]

Corre la simulación de acreción para los embriones dados.

Parámetros:

embryos_aulist

Lista de radios iniciales en AU (ej: [1.0, 5.0, 15.0]).

m_seed_mefloat

Masa semilla en Masas Terrestres. Default: 1e-3.

Retorna:

dict

Resultados de la evolución de masa en el tiempo.

save_results(results: dict, filename: str)[source]

Guarda tracks de crecimiento en HDF5.

set_custom_chemistry(user_func: Callable, species: List[str] | None = None)[source]

Atajo para redefinir la química con una función Python.

Ejemplo:

sim.set_custom_chemistry(mi_funcion, [“silicatos”, “H2O”])

Physics Engine

class pa3py.pebble_accretion.PebbleAccretionModule3(disk_data: DiskData, comp_model: CompositionModel = None)[source]

Bases: object

Motor físico de acreción agnóstico a HDF5 (Ormel 2017 & Drążkowska 2023).

calculate_isolation_mass_map() ndarray[source]

Calcula el mapa de masa de aislamiento teórico 2D.

peb_idx = -1
run_growth(embryo_locations_AU: list, M0_g: float = None) dict[source]
summary(results: dict)[source]

Imprime tabla resumen de la composición final.

Data Handling

pa3py.load_tripodpy_hdf5(datadir: str, M_star: float = 1.0, t_min_yr: float = 0.0) DiskData[source]

Convierte archivos HDF5 de tripodpy a un objeto DiskData.

class pa3py.data.DiskData(times: ndarray, r: ndarray, gas_Sigma: ndarray, gas_T: ndarray, gas_cs: ndarray, gas_eta: ndarray, gas_nu: ndarray, gas_alpha: ndarray, gas_Hp: ndarray, dust_Sigma: ndarray, dust_vr: ndarray, dust_St: ndarray, dust_H: ndarray, Omega_K: ndarray, M_star: float, hdf5_snowlines: Dict[str, ndarray])[source]

Bases: object

Contenedor de propiedades físicas del disco (gas y polvo).

M_star: float
property Nr
property Nt
Omega_K: ndarray
dust_H: ndarray
dust_Sigma: ndarray
dust_St: ndarray
dust_vr: ndarray
gas_Hp: ndarray
gas_Sigma: ndarray
gas_T: ndarray
gas_alpha: ndarray
gas_cs: ndarray
gas_eta: ndarray
gas_nu: ndarray
hdf5_snowlines: Dict[str, ndarray]
r: ndarray
times: ndarray

Composition Models

class pa3py.CompositionModel[source]

Bases: ABC

Clase base para modelos de composición.

abstractmethod get_fractions(r: float, t_sec: float, t_idx: int) Dict[str, float][source]

Dado un radio orbital r (en cm), el tiempo físico t_sec (s), y el índice temporal t_idx, devuelve un diccionario con las fracciones de masa de cada elemento químico que se está acretando. Las fracciones deben sumar 1.0.

abstractmethod get_species() List[str][source]

Devuelve la lista de nombres de las especies químicas rastreadas.

class pa3py.SimpleWaterComposition(rsnow_h2o_array: ndarray)[source]

Bases: CompositionModel

Modelo clásico PA3Py: - 100% silicatos interior a la snowline. - 50% silicatos, 50% H2O exterior a la snowline.

get_fractions(r: float, t_sec: float, t_idx: int) Dict[str, float][source]

Dado un radio orbital r (en cm), el tiempo físico t_sec (s), y el índice temporal t_idx, devuelve un diccionario con las fracciones de masa de cada elemento químico que se está acretando. Las fracciones deben sumar 1.0.

get_species() List[str][source]

Devuelve la lista de nombres de las especies químicas rastreadas.

class pa3py.MultiSnowlineComposition(snowlines: Dict[str, ndarray], zone_abundances: List[Dict[str, float]])[source]

Bases: CompositionModel

Zonas estáticas separadas por snowlines pre-calculadas.

get_fractions(r: float, t_sec: float, t_idx: int) Dict[str, float][source]

Dado un radio orbital r (en cm), el tiempo físico t_sec (s), y el índice temporal t_idx, devuelve un diccionario con las fracciones de masa de cada elemento químico que se está acretando. Las fracciones deben sumar 1.0.

get_species() List[str][source]

Devuelve la lista de nombres de las especies químicas rastreadas.

class pa3py.FunctionComposition(user_func: Callable[[float, float], Dict[str, float]], species: List[str] | None = None)[source]

Bases: CompositionModel

Química dinámica definida por el usuario mediante una función Python.

get_fractions(r: float, t_sec: float, t_idx: int) Dict[str, float][source]

Dado un radio orbital r (en cm), el tiempo físico t_sec (s), y el índice temporal t_idx, devuelve un diccionario con las fracciones de masa de cada elemento químico que se está acretando. Las fracciones deben sumar 1.0.

get_species() List[str][source]

Devuelve la lista de nombres de las especies químicas rastreadas.