32.7. Solver Settings Objects

The top-level settings object in Fluent's Pythonic interface is the solver. It contains all other settings objects in a hierarchical structure.

>>> solver

The solver object contains attributes such as file, setup, solution, and results. These objects are also instances of settings objects and roughly mirror Fluent's approach to organizing a simulation (and one that is visible in the Outline View through the Setup, Solution, Results structure).

32.7.1. Types of Settings Objects

A settings object can be one of the primitive types, like Integer, Real, String, and Boolean, or a container object.

There are three types of container objects: Group, NamedObject, and ListObject.

A Group object is a static container with predefined child objects that can be accessed via attribute access. For example, setup.models.energy refers to the energy child of models child of the setup object. The names of the child objects of a group can be accessed with the child_names attribute of a Group object.

A NamedObject is a container holding dynamically created named objects of its specified child type (accessible via a child_object_type attribute), similar to a dictionary. A specified named object can be accessed using the index operator. For example, solver.setup.boundary_conditions.velocity_inlet['inlet2'] refers to the velocity_inlet object with the name inlet2. Create named objects using the create() method and remove them using the del keyword, The current list of named object children can be accessed with the get_object_names() function of the container class. For example:

 >>> contour1 = solver.results.graphics.contour.create("contour-1")
>>> solver.results.graphics.contour.get_object_names()
['contour-1']
>>> contour1.field = "pressure"
>>> contour1.surfaces_list = ["wall"]
>>> contour1.display()
.
.
.
>>> del solver.results.graphics.contour["contour-1"]
>>> solver.results.graphics.contour.get_object_names()

A ListObject is a container holding dynamically created unnamed objects of its specified child type (accessible via a child_object_type attribute) in a list. Children of ListObject can be accessed using the index operator. For example, solver.setup.cell_zone_conditions.fluid['fluid-1'].source_terms['mass'][2] refers to the third (starting from index 0) mass source entry for the fluid zone named fluid-1. The current number of child objects can be accessed with the get_size() function.

32.7.2. Setting and Modifying State

The state of any object can be accessed by "calling" it. For container objects, this returns the state of the children as a dictionary (for Group and NamedObject types) or a list (for ListObject types):

>>> solver.setup.models.viscous.model()
  'k-epsilon-standard'

  >>> from pprint import pprint
  >>> pprint (solver.setup.models.energy())
  {'enabled': True,
   'inlet_diffusion': True,
   'kinetic_energy': False,
   'pressure_work': False,
   'viscous_dissipation': False}
  >>> solver.setup.boundary_conditions.velocity_inlet['inlet1'].vmag.constant()
  10.0

To modify the state of any object, you can assign the corresponding attribute in its parent object. This assignment can be done at any level. For Group and NamedObject type objects, the state value is a dictionary. For ListObject type objects, the state value is a list.

>>> solver.setup.models.viscous.model = 'laminar'
  >>> solver.setup.models.energy = { 'enabled' : False }
  >>> solver.setup.boundary_conditions.velocity['inlet1'].vmag.constant = 14

The state of an object can also be accessed with the get_state() method and modified with the set_state() method.

The current state can also be printed in a simple text format with the print_state() method. For example, assume you entered:

>>> solver.setup.models.print_state()

Output is displayed in the following format:

viscous :
    k_epsilon_model : standard
    near_wall_treatment : standard-wall-fn?
    model : k-epsilon-standard
    options :
      viscous_heating : False
      curvature_correction : False
      production_kato_launder : False
      production_limiter : False
  energy :
    enabled : True
    pressure_work : False
    viscous_dissipation : False
    inlet_diffusion : True
    kinetic_energy : False
  multiphase :
    number_of_phases : 0
    models : none

32.7.3. Settings Object Commands

Commands are methods of settings objects that you use to modify the state of the application. For example, the hybrid_initialize() method of solution.initialization initializes the solution using the hybrid initialization method. The command_names attribute of a settings object provides the names of its commands.

If needed, commands can be passed keyword arguments, and the list of valid arguments can be accessed using the arguments attribute. If an argument is not specified, its default value is used. Arguments are also settings objects and can be either the primitive type or the container type.

For example:

>>>solver.solution.run_calculation.iterate.argument_names
['iter_count']
>>> solver.solution.run_calculation.iterate(iter_count=2)

iter  continuity  x-velocity  y-velocity  z-velocity      energy           k     epsilon     time/iter
    1  1.0000e+00  3.3399e+00  4.5158e-02  0.0000e+00  1.1371e-09  4.8996e-02  1.4475e+00  0:00:00    1
    2  1.0000e+00  1.7086e-01  1.4975e-01  1.0733e-01  1.6440e-10  1.3899e+00  7.8817e+00  0:00:00    0