Module application

class pysph.solver.application.Application(fname=None, output_dir=None, domain=None)[source]

Bases: object

Subclass this to run any SPH simulation. There are several important methods that this class provides. The application is typically used as follows:

class EllipticalDrop(Application):
    def create_particles(self):
        # ...
    def create_scheme(self):
        # ...
    ...
app = EllipticalDrop()
app.run()
app.post_process(app.info_filename)

The post_process() method is entirely optional and typically performs the post-processing. It is important to understand the correct sequence of the method calls. When the Application instance is created, the following methods are invoked by the __init__() method:

  1. initialize(): use this to setup any constants etc.
  2. create_scheme(): this needs to be overridden if one wishes to use a pysph.sph.scheme.Scheme. If one does not want to use a scheme, the create_equations() and create_solver() methods must be overridden.
  3. self.scheme.add_user_options(): i.e. the scheme’s command line options are added, if there is a scheme.
  4. add_user_options(): add any user specified command line options.

When app.run() is called, the following methods are called in order:

  1. _parse_command_line(): this is a private method but it is important to note that the command line arguments are first parsed.
  2. consume_user_options(): this is called right after the command line args are parsed.
  3. configure_scheme(): This is where one may configure the scheme according to the passed command line arguments.
  4. create_solver(): Create the solver, note that this is needed only if one has not used a scheme, otherwise, this will by default return the solver created by the scheme chosen.
  5. create_equations(): Create any equations. Defaults to letting the scheme generate and return the desired equations.
  6. create_particles()
  7. create_inlet_outlet()
  8. create_domain(): Not needed for non-periodic domains.
  9. create_nnps(): Not needed unless one wishes to override the default NNPS.
  10. create_tools(): Add any pysph.solver.tools.Tool instances.
  11. customize_output(): Customize the output visualization.

Additionally, as the application runs there are several convenient optional callbacks setup:

  1. pre_step(): Called before each time step.
  2. post_stage(): Called after every stage of the integration.
  3. post_step(): Called after each time step.

Finally, it is a good idea to overload the post_process() method to perform any post processing for the generated data.

The application instance also has several important attributes, some of these are as follows:

Constructor

Parameters:
  • fname (str) – file name to use for the output files.
  • output_dir (str) – output directory name.
  • domain (pysph.base.nnps_base.DomainManager) – A domain manager to use. This is used for periodic domains etc.
add_tool(tool)[source]

Add a pysph.solver.tools.Tool instance to the application.

add_user_options(group)[source]

Add any user-defined options to the given option group.

Note

This uses the argparse module.

configure_scheme()[source]

This is called after consume_user_options() is called. One can configure the SPH scheme here as at this point all the command line options are known.

consume_user_options()[source]

This is called right after the command line arguments are parsed.

All the parsed options are available in self.options and can be used in this method.

This is meant to be overridden by users to setup any internal variables etc. that depend on the command line arguments passed. Note that this method is called well before the solver or particles are created.

create_domain()[source]

Create a pysph.base.nnps_base.DomainManager and return it if needed.

This is used for periodic domains etc. Note that if the domain is passed to __init__(), then this method is not called.

create_equations()[source]

Create the equations to be used and return them.

create_inlet_outlet(particle_arrays)[source]

Create inlet and outlet objects and return them as a list.

The method is passed a dictionary of particle arrays keyed on the name of the particle array.

create_nnps()[source]

Create any NNPS if desired and return it, else a default NNPS will be created automatically.

create_particles()[source]

Create particle arrays and return a list of them.

create_scheme()[source]

Create a suitable SPH scheme and return it.

Note that this method is called after the arguments are all processed and after consume_user_options() is called.

create_solver()[source]

Create the solver and return it.

create_tools()[source]

Create any tools and return a sequence of them. This method is called after particles/inlets etc. are all setup, configured etc.

customize_output()[source]

Customize the output file visualization by adding any files.

For example, the pysph view command will look for a mayavi_config.py file that can be used to script the viewer. You can use self._mayavi_config(‘code’) to add a default customization here.

Note that this is executed before the simulation starts.

dump_code(file)[source]

Dump the generated code to given file.

initialize()[source]

Called on the constructor, set constants etc. up here if needed.

post_process(info_fname_or_directory)[source]

Given an info filename or a directory containing the info file, read the information and do any post-processing of the results. Please overload the method to perform any processing.

The info file has a few useful attributes and can be read using the read_info() method.

The output_files property should provide the output files generated.

post_stage(current_time, dt, stage)[source]

If overloaded, this is called automatically after each integrator stage, i.e. if the integrator is a two stage integrator it will be called after the first and second stages.

The method is passed (current_time, dt, stage). See the the pysph.sph.integrator.Integrator.one_timestep() methods for examples of how this is called.

post_step(solver)[source]

If overloaded, this is called automatically after each integrator step. The method is passed the solver instance.

pre_step(solver)[source]

If overloaded, this is called automatically before each integrator step. The method is passed the solver instance.

read_info(fname_or_dir)[source]

Read the information from the given info file (or directory containing the info file, the first found info file will be used).

run(argv=None)[source]

Run the application.

This basically calls setup() and then solve().

Parameters:argv (list) – Optional command line arguments. Handy when running interactively.
setup(argv=None)[source]

Setup the application.

This may be used to setup the various pieces of infrastructure to run an SPH simulation, for example, this will parse the command line arguments passed, setup the scheme, solver, equations etc. It will not call the solver’s solve method though. This can be useful if you wish to manually run the solver.

Parameters:argv (list) – Optional command line arguments. Handy when running interactively.
solve()[source]

This runs the solver.

Note that this method expects that setup has already been called.

Don’t use this method unless you really know what you are doing.

pysph.solver.application.list_all_kernels()[source]

Return list of available kernels.