# AUTO_SOLUTION_STRATEGY

Automatically creates the solution strategy by issuing all the other commands in this chapter.

## Type

AcuSolve Command

## Syntax

AUTO_SOLUTION_STRATEGY {parameters}

## Qualifier

This command has no qualifier.

## Parameters

- min_cases >=0 [=1]
- Minimum number of optimization cases allowed for the run.
- max_cases >=0 [=50]
- Maximum number of optimization cases allowed for the run.
- optimization_convergence_tolerance >=0 [=1.e-4]
- A necessary condition for the termination of an optimization run is that all convergence measures must be less than this tolerance.
- design_optimization (boolean) [=off]
- Flag to turn on design_optimization. This requires an OPTIMIZATION command.
- min_time_steps or min_steps (integer) >=0 [=1]
- Minimum number of time steps allowed for a run or a case. If zero, this option is ignored.
- max_time_steps or max_steps (integer) >=0 [=100]
- Maximum number of time steps allowed for a run or a case. The run may terminate earlier due to other criteria. If more than one case is used for a run, a case may stop earlier due to other criteria, and the run will move to the next case. If zero, this option is ignored.
- initial_case_time_steps (integer) >=0 [=0]
- Minimum number of time steps used for the initial case. This option will also override the max_time_steps parameter for the initial case. If zero, this option is ignored.
- final_time (real) >=0 [=0]
- Final time of the run. The run will terminate when the analysis time reaches the final time. The run may terminate earlier due to other criteria. If zero, this option is ignored. Used only with transient problems.
- initial_time_increment or init_dt (real) >=0 [=1.e+10]
- Initial value of the time increment for auto time increment control, or the constant value of the time increment for a fixed time increment. If zero, it is set according to a CFL=1 condition.
- auto_time_increment or auto_dt (boolean) [=off]
- Flag specifying whether or not to automatically control the time increment. Used only with transient problems.
- min_time_increment or min_dt (real) >=0 [=0]
- Minimum time increment when using the auto time increment option. Used with transient analyses.
- max_time_increment or max_dt (real) >=0 [=0]
- Maximum time increment when using the auto time increment option. Used with transient analyses.
- min_stagger_iterations or min_stg_iters (integer) >=0 [=0]
- Minimum number of stagger iterations before advancing to the next time step. If zero, this option is determined internally. If set to zero, AcuSolve internally sets the min_stagger_iterations to two when auto_time_increment is off. When auto_time_increment is on, a value of one is used. This option is only used when solving transient analyses.
- max_stagger_iterations or max_stg_iters (integer) >=0 [=0]
- Maximum number of stagger iterations before advancing to the next time step. If zero, this option is determined internally. If set to zero, AcuSolve internally sets the max_stagger_iterations to two when auto_time_increment is off. When auto_time_increment is on, a value of four is used. This option is only used when solving transient analysis.
- convergence_tolerance or conv_tol (real) >=0 [=1.e-3]
- A necessary condition for the termination of a run is that all convergence measures must be less than this tolerance.
- num_krylov_vectors or kvecs (integer) >=0 [=10]
- Number of Krylov vectors used by GMRES and BiCGStab.
- flow (boolean) [=on]
- Flag specifying whether or not to solve the flow equations.
- temperature or temp (boolean) [=on]
- Flag specifying whether or not to solve the temperature equation.
- temperature_flow or temp_flow (boolean) [=off]
- Flag specifying whether or not to solve thermal-flow problems fully coupled. Requires flow and temperature to be both on.
- radiation or rad (boolean) [=on]
- Flag specifying whether or not to solve the radiation equation. Also, p1 incident radiation equation or discrete ordinates method for solving the radiative transfer equation.
- species_1 or spec1 (boolean) [=on]
- Flag specifying whether or not to solve the corresponding species equation.
- species_2 or spec2 (boolean) [=on]
- Flag specifying whether or not to solve the corresponding species equation.
- species_3 or spec3 (boolean) [=on]
- Flag specifying whether or not to solve the corresponding species equation.
- species_4 or spec4 (boolean) [=on]
- Flag specifying whether or not to solve the corresponding species equation.
- species_5 or spec5 (boolean) [=on]
- Flag specifying whether or not to solve the corresponding species equation.
- species_6 or spec6 (boolean) [=on]
- Flag specifying whether or not to solve the corresponding species equation.
- species_7 or spec7 (boolean) [=on]
- Flag specifying whether or not to solve the corresponding species equation.
- species_8 or spec8 (boolean) [=on]
- Flag specifying whether or not to solve the corresponding species equation.
- species_9 or spec9 (boolean) [=on]
- Flag specifying whether or not to solve the corresponding species equation.
- field (boolean) [=on]
- Flag specifying whether or not to solve the field equations for multi field simulations.
- turbulence or turb (boolean) [=on]
- Flag specifying whether or not to solve the turbulence equation.
- turbulence_transition or ttm (boolean) [=on]
- Flag specifying whether or not to solve the turbulence transition equations.
- mesh (boolean) [=on]
- Flag specifying whether or not to solve the mesh displacement equation.
- viscoelastic or vest (boolean) [=on]
- Specifying whether or not to solve the viscoelasticity equations.
- external_code (boolean) [=on]
- Flag specifying whether or not to solve the solid/structural equations with an external code.
- particle_trace [=on]
- Flag specifying whether or not to solve the particle equations in a coupled particle-flow using AcuTrace.
- relaxation_factor (real) >=0 <=1 [=0]
- Parameter used to slow the solution convergence for hard problems.
- topology_stagger_reordering (boolean) [=on]
- Flag specifying whether or not the flow and adjoint equations in topology optimization will be solved sequentially or simultaneously. When topology_stagger_reordering = on, the flow and adjoint equation will be solved sequentially.
- electric_potential or elec_p (boolean) [=on]
- Flag specifying whether to solve the charge conservation equation.

## Description

The goal of the AUTO_SOLUTION_STRATEGY command is to completely automate the specification of all the solution strategy commands based on the physical specification of the problem. This is not entirely possible currently, but for most problems only the few parameters from this command are needed. AUTO_SOLUTION_STRATEGY is a functional command, hence it is processed immediately upon being read from the input file. As such its position in the input file may be very important. When AUTO_SOLUTION_STRATEGY is issued, the parameters of the previously-given ANALYSIS and EQUATION commands are used to determine whether the problem is steady or transient and what equations are being solved. Then the appropriate TIME_SEQUENCE, STAGGER, TIME_INCREMENT, TIME_INTEGRATION, and LINEAR_SOLVER_PARAMETERS commands are issued. These commands are also saved in a file called problem.ss.inc, where problem is given by the corresponding option of the AcuRun or AcuPrep programs. See the AcuSolve Programs Reference Manual. The parameters from these commands may be overwritten afterward by manually issuing the commands. On the next run problem.ss.inc may be included, modified or not, instead of AUTO_SOLUTION_STRATEGY.

```
ANALYSIS {
title = "A steady problem"
type = steady
}
EQUATION {
flow = navier_stokes
turbulence = spalart_allmaras
temperature = advective_diffusive
}
AUTO_SOLUTION_STRATEGY {
}
```

```
ANALYSIS {
title = "A transient problem"
type = transient
}
EQUATION {
...
}
AUTO_SOLUTION_STRATEGY {
initial_time_increment = 0.01
}
```

```
ANALYSIS {
type = steady
}
AUTO_SOLUTION_STRATEGY {
max_time_steps = 100
initial_time_increment = 1.e+10
convergence_tolerance = 1.e-3
num_krylov_vectors = 10
flow = on
temperature = on
temperature_flow = off
radiation = on
species_1 = on
species_2 = on
species_3 = on
species_4 = on
species_5 = on
species_6 = on
species_7 = on
species_8 = on
species_9 = on
field = on
turbulence = on
transition = on
mesh = on
viscoelastic = on
external_code = on
relaxation_factor = 0
}
```

The given values are the defaults. Three of these parameters are determined by the level of difficulty of the problem. The number of krylov vectors for flow and tflow staggers is given by num_krylov_vectors; the number of vectors for other staggers is determined by this base value. To solve thermal-flow problems with a fully-coupled strategy temperature_flow is set to on, otherwise these problems are solved with a staggered strategy. The choice generally depends on the degree of coupling, that is, buoyancy, between the momentum and thermal equations; forced convection problems may be solved staggered, while free convection problems usually benefit from the more expensive coupled approach. The solution convergence behavior of hard problems may be smoothed by increasing relaxation_factor; this parameter will have the most impact on the velocity_update_factor parameter of the LINEAR_SOLVER_PARAMETERS command. The other parameters from flow to external_code are used only if the corresponding equation in the EQUATION command is defined. These are normally left on, except when an equation exists in a problem but a solution for it is not desired. The other parameters are used the same way as for steady problems.

```
ANALYSIS {
type = steady
}
AUTO_SOLUTION_STRATEGY {
max_time_steps = 100
initial_time_increment = 1.e+10
convergence_tolerance = 1.e-3
num_krylov_vectors = 10
flow = on
temperature = on
temperature_flow = off
radiation = on
species_1 = on
species_2 = on
species_3 = on
species_4 = on
species_5 = on
species_6 = on
species_7 = on
species_8 = on
species_9 = on
field = on
turbulence = on
transition = on
mesh = on
viscoelastic = on
external_code = on
relaxation_factor = 0
}
```

Note that the default for initial_time_increment is different from the steady case. You are encouraged to set a reasonable value for initial_time_increment. If this parameter is not specified, or set to zero, the time increment which satisfies a maximum CFL condition of one is used. The nodal boundary conditions are imposed over the initial conditions before the CFL numbers are computed. If auto_time_increment is specified, then you may also supply min_time_increment and max_time_increment. If min_time_increment is zero, it is reset at the beginning of each time step such that the maximum CFL number is one. If max_time_increment is zero, it is ignored. If min_stagger_iterations or max_stagger_iterations is non-zero, the given value is used to control the nonlinear iterations instead of the default value.

```
ANALYSIS {
title = "A thermal/flow problem"
type = steady
}
EQUATION {
flow = navier_stokes
}
AUTO_SOLUTION_STRATEGY {
}
```

```
RESTART {
}
ANALYSIS {
title = "A thermal/flow problem"
type = transient
}
EQUATION {
flow = navier_stokes
temperature = advective_diffusive
}
AUTO_SOLUTION_STRATEGY {
initial_time_increment = 0.01
```

You can discover the stagger names used in the staggers parameter of the TIME_SEQUENCE command by examining the problem.ss.inc file.

The optimization solution strategy adds the concept of cases. A case normally holds a single design in order to make the solutions output for shape optimization more manageable. In practical terms, a case is a grouping of a sequence of time steps. You specify the minimum and maximum of cases for a single simulation run, and you also specify the minimum and maximum time steps for each case. The ordinary convergence tolerance relates to the time step sequence as usual, and the optimization convergence tolerance relates to the overall convergence of the shape and optimization problem.

The other solution strategy parameters are similar to what is used running regular fluid dynamic runs. It may also be a good idea to use some relaxation, for instance specified by the relaxation factor in the auto solution command.

```
AUTO_SOLUTION_STRATEGY {
min_cases = 5
max_cases = 50
optimization_convergence_tolerance = 1.e-3
min_time_steps = 10
max_time_steps = 20
initial_case_time_steps = 100
convergence_tolerance = 1.e-3
```