pyrcel.ParcelModel¶
-
class
pyrcel.
ParcelModel
(aerosols, V, T0, S0, P0, console=False, accom=1.0, truncate_aerosols=False)¶ Wrapper class for instantiating and running the parcel model.
The parcel model has been implemented in an object-oriented format to facilitate easy extensibility to different aerosol and meteorological conditions. A typical use case would involve specifying the initial conditions such as:
>>> import pyrcel as pm >>> P0 = 80000. >>> T0 = 283.15 >>> S0 = 0.0 >>> V = 1.0 >>> aerosol1 = pm.AerosolSpecies('sulfate', ... Lognorm(mu=0.025, sigma=1.3, N=2000.), ... bins=200, kappa=0.54) >>> initial_aerosols = [aerosol1, ] >>> z_top = 50. >>> dt = 0.01
which initializes the model with typical conditions at the top of the boundary layer (800 hPa, 283.15 K, 100% Relative Humidity, 1 m/s updraft), and a simple sulfate aerosol distribution which will be discretized into 200 size bins to track. Furthermore the model was specified to simulate the updraft for 50 meters (z_top) and use a time-discretization of 0.01 seconds. This timestep is used in the model output – the actual ODE solver will generally calculate the trace of the model at many more times.
Running the model and saving the output can be accomplished by invoking:
>>> model = pm.ParcelModel(initial_aerosols, V, T0, S0, P0) >>> par_out, aer_out = pm.run(z_top, dt)
This will yield par_out, a
pandas.DataFrame
containing the meteorological conditions in the parcel, and aerosols, a dictionary ofDataFrame
objects for each species in initial_aerosols with the appropriately tracked size bins and their evolution over time.See also
_setup_run
- companion routine which computes equilibrium droplet sizes and sets the model’s state vectors.
Attributes
V, T0, S0, P0, aerosols (floats) Initial parcel settings (see Parameters). _r0s (array_like of floats) Initial equilibrium droplet sizes. _r_drys (array_like of floats) Dry radii of aerosol population. _kappas (array_like of floats) Hygroscopicity of each aerosol size. _Nis (array_like of floats) Number concentration of each aerosol size. _nr (int) Number of aerosol sizes tracked in model. _model_set (boolean) Flag indicating whether or not at any given time the model initialization/equilibration routine has been run with the current model settings. _y0 (array_like) Initial state vector. Methods
run(t_end, dt, max_steps=1000, solver=”odeint”, output_fmt=”dataframes”, terminate=False, solver_args={}) Execute model simulation. set_initial_conditions(V=None, T0=None, S0=None, P0=None, aerosols=None) Re-initialize a model simulation in order to run it. -
__init__
(aerosols, V, T0, S0, P0, console=False, accom=1.0, truncate_aerosols=False)¶ Initialize the parcel model.
Parameters: aerosols : array_like sequence of
AerosolSpecies
The aerosols contained in the parcel.
V, T0, S0, P0 : floats
The updraft speed and initial temperature (K), pressure (Pa), supersaturation (percent, with 0.0 = 100% RH).
console : boolean, optional
Enable some basic debugging output to print to the terminal.
accom : float, optional (default=:const:constants.ac)
Condensation coefficient
truncate_aerosols : boolean, optional (default=**False**)
Eliminate extremely small aerosol which will cause numerical problems
Methods
__init__
(aerosols, V, T0, S0, P0[, console, …])Initialize the parcel model. next
()run
(t_end[, output_dt, solver_dt, …])Run the parcel model simulation. save
([filename, format, other_dfs])set_initial_conditions
([V, T0, S0, P0, aerosols])Set the initial conditions and parameters for a new parcel model run without having to create a new ParcelModel
instance.write_csv
(parcel_data, aerosol_data[, …])Write output to CSV files. write_summary
(parcel_data, aerosol_data, …)Write a quick and dirty summary of given parcel model output to the terminal.