- objective_namePreferred name of reporter value defining the objective.
C++ Type:ReporterValueName
Unit:(no unit assumed)
Controllable:No
Description:Preferred name of reporter value defining the objective.
- parameter_namesList of parameter names, one for each group of parameters.
C++ Type:std::vector<ReporterValueName>
Unit:(no unit assumed)
Controllable:No
Description:List of parameter names, one for each group of parameters.
GeneralOptimization
Reporter that provides TAO with the objective, gradient, and constraint data, which are supplied by the reporters and postprocessors from the forward and adjoint subapps.
Overview
GeneralOptimization
is responsible for creating parameter vector(s) for optimization, setting the parameter initial condition for the optimization, and setting parameter bounds and constraints. Although the Optimize executioner holds a single vector for parameter values, this vector can be split into groups of parameters. This is done by specifying a name for each group with "parameter_names" and the number of parameters in each group with "num_values" or "num_values_name". The total number of parameters is ultimately defined by the sum of "num_values" or the values inside of the reporter defined by "num_values_name". The initial condition for the optimization can then be defined with "initial_condition", where a vector of data must defined for each group. This vector can be a single value in which case all parameters in that group are set to that value or a value can be set for every parameter in that group. The lower and upper bounds for the parameters can then specified by "lower_bounds" and "upper_bounds", respectively. The bounds follow the same input format rules as the initial_condition
. If no initial conditions are provided, the parameters are initialized with 0. Default values for upper_bounds
and lower_bounds
are std::numeric<Real>::max()
and std::numeric<Real>::lower()
, respectively. These bounds are only applied if a bounded optimization algorithm is used. The reporter that holds the objective value is defined by "objective_name". Additionally, equality and inequality constraints can be defined by "equality_names" and "inequality_names", respectively.
Input Parameters
- equality_namesList of equality names.
C++ Type:std::vector<ReporterValueName>
Unit:(no unit assumed)
Controllable:No
Description:List of equality names.
- execute_onTIMESTEP_ENDThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
Default:TIMESTEP_END
C++ Type:ExecFlagEnum
Unit:(no unit assumed)
Options:XFEM_MARK, FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR_CONVERGENCE, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM
Controllable:No
Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
- inequality_namesList of inequality names.
C++ Type:std::vector<ReporterValueName>
Unit:(no unit assumed)
Controllable:No
Description:List of inequality names.
- initial_conditionInitial conditions for each parameter. A vector is given for each parameter group. A single value can be given for each group and all parameters in that group will be set to that value. The default value is 0.
C++ Type:std::vector<std::vector<double>>
Unit:(no unit assumed)
Controllable:No
Description:Initial conditions for each parameter. A vector is given for each parameter group. A single value can be given for each group and all parameters in that group will be set to that value. The default value is 0.
- lower_boundsLower bound for each parameter. A vector is given for each parameter group. A single value can be given for each group and all parameters in that group will be set to that value
C++ Type:std::vector<std::vector<double>>
Unit:(no unit assumed)
Controllable:No
Description:Lower bound for each parameter. A vector is given for each parameter group. A single value can be given for each group and all parameters in that group will be set to that value
- num_valuesNumber of parameter values associated with each parameter group in 'parameter_names'.
C++ Type:std::vector<unsigned long>
Unit:(no unit assumed)
Controllable:No
Description:Number of parameter values associated with each parameter group in 'parameter_names'.
- num_values_nameReporter that holds the number of parameter values associated with each parameter group in 'parameter_names'.
C++ Type:ReporterValueName
Unit:(no unit assumed)
Controllable:No
Description:Reporter that holds the number of parameter values associated with each parameter group in 'parameter_names'.
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- tikhonov_coeff0Coefficient for Tikhonov Regularization.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Coefficient for Tikhonov Regularization.
- upper_boundsUpper bound for each parameter. A vector is given for each parameter group. A single value can be given for each group and all parameters in that group will be set to that value
C++ Type:std::vector<std::vector<double>>
Unit:(no unit assumed)
Controllable:No
Description:Upper bound for each parameter. A vector is given for each parameter group. A single value can be given for each group and all parameters in that group will be set to that value
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Optional Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
Default:0
C++ Type:int
Unit:(no unit assumed)
Controllable:No
Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
- force_postauxFalseForces the UserObject to be executed in POSTAUX
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in POSTAUX
- force_preauxFalseForces the UserObject to be executed in PREAUX
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in PREAUX
- force_preicFalseForces the UserObject to be executed in PREIC during initial setup
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in PREIC during initial setup
- outputsVector of output names where you would like to restrict the output of variables(s) associated with this object
C++ Type:std::vector<OutputName>
Unit:(no unit assumed)
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
Input Files
- (modules/optimization/test/tests/executioners/constrained/shape_optimization/main.i)
- (modules/combined/test/tests/optimization/invOpt_mechanics/main_auto_adjoint.i)
- (modules/optimization/test/tests/optimizationreporter/general_opt/point_loads_gen_opt/main_auto_adjoint_transfer_data.i)
- (modules/optimization/test/tests/optimizationreporter/constant_heat_source/main.i)
- (modules/optimization/test/tests/optimizationreporter/general_opt/point_loads_gen_opt/main_separate_multiapps.i)
- (modules/optimization/test/tests/optimizationreporter/bimaterial/regularization_for_main.i)
- (modules/optimization/test/tests/optimizationreporter/constant_heat_source/main_nonLinear.i)
- (modules/optimization/test/tests/optimizationreporter/bimaterial/main_auto_adjoint.i)
- (modules/optimization/test/tests/optimizationreporter/general_opt/point_loads_gen_opt/regularization_for_main.i)
- (modules/optimization/test/tests/optimizationreporter/optimization_reporter_base/optRep_fromInput.i)
- (modules/optimization/test/tests/optimizationreporter/optimization_reporter_base/optRep_fromCsv_paramBounds.i)
- (modules/optimization/test/tests/optimizationreporter/optimization_reporter_base/optRep_fromCsv_groupBounds.i)
- (modules/optimization/test/tests/optimizationreporter/general_opt/point_loads_gen_opt/main_auto_adjoint.i)
- (modules/optimization/test/tests/optimizationreporter/material/main.i)
- (modules/optimization/test/tests/outputs/exodus_optimization_steady/main.i)
- (modules/optimization/test/tests/executioners/constrained/inequality/main_auto_adjoint.i)
- (modules/optimization/examples/materialTransient/optimize_auto_adjoint.i)
- (modules/optimization/test/tests/optimizationreporter/point_loads/main.i)
- (modules/optimization/test/tests/optimizationreporter/nonlinear_material/main.i)
- (modules/optimization/examples/materialTransient/optimize_grad.i)
- (modules/optimization/test/tests/optimizationreporter/general_opt/function_optimization/main.i)
- (modules/optimization/examples/simpleTransient/main_auto_adjoint.i)
- (modules/optimization/test/tests/optimizationreporter/point_loads/regularization_for_main.i)
- (modules/combined/test/tests/optimization/invOpt_bc_convective/main.i)
- (modules/optimization/test/tests/optimizationreporter/optimization_reporter_base/optRep_fromCsv_mixBounds.i)
- (modules/optimization/test/tests/optimizationreporter/bimaterial/main.i)
- (modules/optimization/examples/materialFrequency/wave1D/inversion.i)
- (modules/optimization/examples/materialTransient/optimize_nograd.i)
- (modules/optimization/test/tests/optimizationreporter/bc_load_linearFunction/main.i)
- (modules/combined/test/tests/optimization/invOpt_elasticity_modular/main.i)
- (modules/optimization/test/tests/outputs/exodus_optimization_steady/main_auto_adjoint.i)
- (modules/optimization/test/tests/optimizationreporter/bc_load_linearFunction/main_auto_adjoint.i)
- (modules/optimization/test/tests/reporters/multiExperiment/optimize.i)
- (modules/optimization/examples/simpleTransient/main_gradient.i)
- (modules/combined/test/tests/optimization/invOpt_mechanics/main.i)
- (modules/optimization/test/tests/optimizationreporter/point_loads/main_auto_adjoint.i)
- (modules/combined/test/tests/optimization/invOpt_nonlinear/main.i)
parameter_names
C++ Type:std::vector<ReporterValueName>
Unit:(no unit assumed)
Controllable:No
Description:List of parameter names, one for each group of parameters.
num_values
C++ Type:std::vector<unsigned long>
Unit:(no unit assumed)
Controllable:No
Description:Number of parameter values associated with each parameter group in 'parameter_names'.
num_values_name
C++ Type:ReporterValueName
Unit:(no unit assumed)
Controllable:No
Description:Reporter that holds the number of parameter values associated with each parameter group in 'parameter_names'.
num_values
C++ Type:std::vector<unsigned long>
Unit:(no unit assumed)
Controllable:No
Description:Number of parameter values associated with each parameter group in 'parameter_names'.
num_values_name
C++ Type:ReporterValueName
Unit:(no unit assumed)
Controllable:No
Description:Reporter that holds the number of parameter values associated with each parameter group in 'parameter_names'.
initial_condition
C++ Type:std::vector<std::vector<double>>
Unit:(no unit assumed)
Controllable:No
Description:Initial conditions for each parameter. A vector is given for each parameter group. A single value can be given for each group and all parameters in that group will be set to that value. The default value is 0.
lower_bounds
C++ Type:std::vector<std::vector<double>>
Unit:(no unit assumed)
Controllable:No
Description:Lower bound for each parameter. A vector is given for each parameter group. A single value can be given for each group and all parameters in that group will be set to that value
upper_bounds
C++ Type:std::vector<std::vector<double>>
Unit:(no unit assumed)
Controllable:No
Description:Upper bound for each parameter. A vector is given for each parameter group. A single value can be given for each group and all parameters in that group will be set to that value
objective_name
C++ Type:ReporterValueName
Unit:(no unit assumed)
Controllable:No
Description:Preferred name of reporter value defining the objective.
equality_names
C++ Type:std::vector<ReporterValueName>
Unit:(no unit assumed)
Controllable:No
Description:List of equality names.
inequality_names
C++ Type:std::vector<ReporterValueName>
Unit:(no unit assumed)
Controllable:No
Description:List of inequality names.
(modules/optimization/test/tests/executioners/constrained/shape_optimization/main.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
parameter_names = 'radii'
num_values_name = num_radii
equality_names = 'volume_constraint'
initial_condition = '0 0'
lower_bounds = '-10'
upper_bounds = '10'
objective_name = max_temp
[]
[Executioner]
type = Optimize
tao_solver = taoalmm
petsc_options_iname = '-tao_almm_subsolver_tao_type -tao_gatol -tao_catol -tao_almm_type -tao_almm_mu_init -tao_fd_gradient -tao_fd_delta'
petsc_options_value = 'bqnktr 1e-3 1e-3 phr 1e9 true 1e-8 '
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
# Run on initial so the forward problem can determine number of parameters
execute_on = 'INITIAL FORWARD'
[]
[]
[Transfers]
[to_forward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'OptimizationReporter/radii'
to_reporters = 'params/radii'
execute_on = FORWARD
[]
[from_forward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'params/num_params
objective/value
vol_constraint/vol_constraint
eq_grad/eq_grad'
to_reporters = 'OptimizationReporter/num_radii
OptimizationReporter/max_temp
OptimizationReporter/volume_constraint
OptimizationReporter/grad_volume_constraint'
[]
[]
[Outputs]
csv = true
print_linear_residuals = false
print_nonlinear_residuals = false
[]
(modules/combined/test/tests/optimization/invOpt_mechanics/main_auto_adjoint.i)
[Optimization]
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 2
xmin = 0.0
xmax = 5.0
ymin = 0.0
ymax = 1.0
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'force_right'
num_values = '2'
initial_condition = '100'
outputs = 'csv'
[]
[Executioner]
type = Optimize
tao_solver = taobqnktr
petsc_options_iname = '-tao_gttol -tao_max_it'
petsc_options_value = '1e-7 500 '
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward_and_adjoint.i
execute_on = "FORWARD"
clone_parent_mesh = true
[]
[]
[Transfers]
[toForward_measument]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'OptimizationReporter/force_right'
to_reporters = 'params/right_values'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'combined/gradient obj/obj_val'
to_reporters = 'OptimizationReporter/grad_force_right OptimizationReporter/objective_value'
[]
[]
[Outputs]
csv = true
execute_on = 'FINAL'
[]
(modules/optimization/test/tests/optimizationreporter/general_opt/point_loads_gen_opt/main_auto_adjoint_transfer_data.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = misfit_norm
parameter_names = 'parameter_results'
num_values = '3'
[]
[Reporters]
[measure_data]
type = OptimizationData
measurement_points = '0.5 0.28 0
0.5 0.6 0
0.5 0.8 0
0.5 1.1 0'
measurement_values = '293 304 315 320'
[]
[]
[Executioner]
type = Optimize
tao_solver = taolmvm
petsc_options_iname = '-tao_gttol -tao_ls_type'
petsc_options_value = '1e-5 unit'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward_and_adjoint_transfer_data.i
execute_on = "FORWARD"
[]
[]
[Transfers]
# FORWARD transfers
[toForward_measument]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
OptimizationReporter/parameter_results'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
point_source/value'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'gradient/temperature_adjoint
measure_data/misfit_norm'
to_reporters = 'OptimizationReporter/grad_parameter_results
OptimizationReporter/misfit_norm'
[]
[]
[Outputs]
csv = true
file_base = main_out
[]
(modules/optimization/test/tests/optimizationreporter/constant_heat_source/main.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'parameter_results'
num_values = '1'
initial_condition = '500'
lower_bounds = '0.1'
upper_bounds = '10000'
[]
[Reporters]
[main]
type = OptimizationData
measurement_points = '0.2 0.2 0
0.8 0.6 0
0.2 1.4 0
0.8 1.8 0'
measurement_values = '226 254 214 146'
[]
[]
[Executioner]
type = Optimize
tao_solver = taoblmvm
petsc_options_iname = '-tao_gatol'
petsc_options_value = '1e-6'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
execute_on = FORWARD
[]
[adjoint]
type = FullSolveMultiApp
input_files = adjoint.i
execute_on = ADJOINT
[]
[]
[Transfers]
[toForward_measument]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/parameter_results'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
params/q'
[]
[toAdjoint]
type = MultiAppReporterTransfer
to_multi_app = adjoint
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/misfit_values
OptimizationReporter/parameter_results'
to_reporters = 'misfit/measurement_xcoord
misfit/measurement_ycoord
misfit/measurement_zcoord
misfit/measurement_time
misfit/misfit_values
params/q'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measure_data/misfit_values measure_data/objective_value'
to_reporters = 'main/misfit_values OptimizationReporter/objective_value'
[]
[fromadjoint]
type = MultiAppReporterTransfer
from_multi_app = adjoint
from_reporters = 'gradient_vpp/inner_product'
to_reporters = 'OptimizationReporter/grad_parameter_results'
[]
[]
[Outputs]
csv = true
[]
(modules/optimization/test/tests/optimizationreporter/general_opt/point_loads_gen_opt/main_separate_multiapps.i)
measurement_points = '0.5 0.28 0
0.5 0.6 0
0.5 0.8 0
0.5 1.1 0'
measurement_values = '293 304 315 320'
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = misfit_norm
parameter_names = 'parameter_results'
num_values = '3'
[]
[Reporters]
[main]
# We need to have an OptimizationData on the main app to allow the
# transferring of the correct information when doing Hessian based optimization.
type = OptimizationData
measurement_points = ${measurement_points}
measurement_values = ${measurement_values}
[]
[]
[Executioner]
type = Optimize
tao_solver = taonls
petsc_options_iname = '-tao_gttol -tao_max_it -tao_nls_pc_type -tao_nls_ksp_type'
petsc_options_value = '1e-5 10 none cg'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
execute_on = "FORWARD"
cli_args = 'measurement_points="${measurement_points}";measurement_values="${measurement_values}"'
[]
[adjoint]
type = FullSolveMultiApp
input_files = adjoint.i
execute_on = "ADJOINT"
cli_args = 'measurement_points="${measurement_points}";measurement_values="${measurement_values}"'
[]
[homogeneousForward]
type = FullSolveMultiApp
input_files = forward_homogeneous.i
execute_on = "HOMOGENEOUS_FORWARD"
cli_args = 'measurement_points="${measurement_points}";measurement_values="${measurement_values}"'
[]
[]
[Transfers]
# FORWARD transfers
[toForward_measument]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'OptimizationReporter/parameter_results'
to_reporters = 'point_source/value'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
# Note: We are transferring the misfit values into main misfit
from_reporters = 'measure_data/misfit_norm measure_data/misfit_values'
to_reporters = 'OptimizationReporter/misfit_norm main/misfit_values'
[]
# ADJOINT transfers
#NOTE: the adjoint variable we are transferring is actually the gradient
[toAdjoint]
type = MultiAppReporterTransfer
# We are transferring directly from the forward app to the adjoint app
to_multi_app = adjoint
from_reporters = 'main/misfit_values'
to_reporters = 'misfit/misfit_values'
[]
[fromAdjoint]
type = MultiAppReporterTransfer
from_multi_app = adjoint
from_reporters = 'gradient/adjoint'
to_reporters = 'OptimizationReporter/grad_parameter_results'
[]
# HESSIAN transfers. Same as forward.
[toHomoForward]
type = MultiAppReporterTransfer
to_multi_app = homogeneousForward
from_reporters = 'OptimizationReporter/parameter_results'
to_reporters = 'point_source/value'
[]
[fromHomoForward]
type = MultiAppReporterTransfer
from_multi_app = homogeneousForward
# Note: We are transferring the simulation values into misfit
# this has to be done when using general opt and homogenous forward.
from_reporters = 'measure_data/simulation_values'
to_reporters = 'main/misfit_values'
[]
[]
[Reporters]
[optInfo]
type = OptimizationInfo
[]
[]
[Outputs]
csv = true
file_base = main_out
[]
(modules/optimization/test/tests/optimizationreporter/bimaterial/regularization_for_main.i)
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
num_values = 2
initial_condition = '35 35'
tikhonov_coeff = 10
lower_bounds = '1'
upper_bounds = '50'
[]
[Outputs]
file_base = main_out_reg
csv = true
[]
(modules/optimization/test/tests/optimizationreporter/constant_heat_source/main_nonLinear.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'parameter_results'
num_values = '1'
initial_condition = '500'
lower_bounds = '0.1'
upper_bounds = '10000'
[]
[Reporters]
[main]
type = OptimizationData
measurement_points = '0.2 0.2 0
0.8 0.6 0
0.2 1.4 0
0.8 1.8 0'
measurement_values = '270 339 321 221'
[]
[]
[Executioner]
type = Optimize
tao_solver = taoblmvm
petsc_options_iname = '-tao_gatol'
petsc_options_value = '.01'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward_nonLinear.i
execute_on = FORWARD
[]
[adjoint]
type = FullSolveMultiApp
input_files = adjoint_nonLinear.i
execute_on = ADJOINT
[]
[]
[Transfers]
[toForward_measument]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/parameter_results'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
params/q'
[]
[toAdjoint]
type = MultiAppReporterTransfer
to_multi_app = adjoint
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/misfit_values
OptimizationReporter/parameter_results'
to_reporters = 'misfit/measurement_xcoord
misfit/measurement_ycoord
misfit/measurement_zcoord
misfit/measurement_time
misfit/misfit_values
params/q'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measure_data/misfit_values measure_data/objective_value'
to_reporters = 'main/misfit_values OptimizationReporter/objective_value'
[]
[fromadjoint]
type = MultiAppReporterTransfer
from_multi_app = adjoint
from_reporters = 'gradient_vpp/inner_product'
to_reporters = 'OptimizationReporter/grad_parameter_results'
[]
#for temperature dependent material
[fromforwardMesh]
type = MultiAppCopyTransfer
from_multi_app = forward
to_multi_app = adjoint
source_variable = 'T'
variable = 'T'
[]
[]
[Reporters]
[optInfo]
type = OptimizationInfo
[]
[]
[Outputs]
csv = true
[]
(modules/optimization/test/tests/optimizationreporter/bimaterial/main_auto_adjoint.i)
# This main.i file runs the subapps model.i and grad.i, using an FullSolveMultiApp
# The purpose of main.i is to find the two diffusivity_values
# (one in the bottom material of model.i, and one in the top material of model.i)
# such that the misfit between experimental observations (defined in model.i) and MOOSE predictions is minimised.
# The adjoint computed in grad.i is used to compute the gradient for the gradient based LMVM solver in TAO
# PETSc-TAO optimisation is used to perform this inversion
#
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = diffusivity_values
num_values = 2 # diffusivity in the bottom material and in the top material of model.i
initial_condition = '3 4' # the expected result is about '1 10' so this initial condition is not too bad
lower_bounds = '1'
upper_bounds = '20'
[]
[Reporters]
[main]
type = OptimizationData
measurement_file = 'synthetic_data.csv'
file_value = 'temperature'
[]
[]
[Executioner]
type = Optimize
tao_solver = taoblmvm
petsc_options_iname = '-tao_gatol'
petsc_options_value = '1e-3'
## THESE OPTIONS ARE FOR TESTING THE ADJOINT GRADIENT
# petsc_options_iname='-tao_max_it -tao_fd_test -tao_test_gradient -tao_fd_gradient -tao_fd_delta -tao_gatol'
# petsc_options_value='1 true true false 1e-8 0.1'
# petsc_options = '-tao_test_gradient_view'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = model_and_adjoint.i
execute_on = FORWARD
[]
[]
[Transfers]
[toForward] #pass the coordinates where we knew the measurements to the forward model to do the extraction of the simulation data at the location of the measurements to compute the misfit
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/diffusivity_values'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
data/diffusivity'
[]
[from_forward] #get the simulation values
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measure_data/objective_value
gradvec/inner_product'
to_reporters = 'OptimizationReporter/objective_value
OptimizationReporter/grad_diffusivity_values'
[]
[]
[Outputs]
console = true
csv = true
[]
(modules/optimization/test/tests/optimizationreporter/general_opt/point_loads_gen_opt/regularization_for_main.i)
[OptimizationReporter]
type = GeneralOptimization
objective_name = misfit_norm
parameter_names = 'parameter_results'
num_values = '3'
tikhonov_coeff = 0.0001
[]
(modules/optimization/test/tests/optimizationreporter/optimization_reporter_base/optRep_fromInput.i)
[Mesh]
type = GeneratedMesh
dim = 1
[]
[Variables]
[u]
[]
[]
[Kernels]
[null]
type = NullKernel
variable = u
[]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'p1 p2 p3'
num_values = '2 4 6'
initial_condition = '1 2; 3 4 5 6; 7 8 9 10 11 12'
upper_bounds = '110; 210; 310'
lower_bounds = '-1; -2; -3'
outputs = out
[]
[UserObjects]
[optReporterTester]
type = OptimizationReporterTest
values_to_set_parameters_to = '10 20 30 40 50 60 70 80 90 100 110 120'
expected_lower_bounds = '-1 -1 -2 -2 -2 -2 -3 -3 -3 -3 -3 -3'
expected_upper_bounds = '110 110 210 210 210 210 310 310 310 310 310 310'
[]
[]
[Executioner]
type = Steady
[]
[Outputs]
[out]
type = JSON
execute_system_information_on = none
[]
[]
(modules/optimization/test/tests/optimizationreporter/optimization_reporter_base/optRep_fromCsv_paramBounds.i)
[Mesh]
type = GeneratedMesh
dim = 1
[]
[Variables]
[u]
[]
[]
[Kernels]
[null]
type = NullKernel
variable = u
[]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'p1 p2 p3'
num_values = '2 4 6'
initial_condition = '1 2; 3 4 5 6; 7 8 9 10 11 12'
upper_bounds = '101 102; 103 104 105 106; 107 108 109 110 111 112'
lower_bounds = '-1 -2; -3 -4 -5 -6; -7 -8 -9 -10 -11 -12'
outputs = out
[]
[UserObjects]
[optReporterTester]
type = OptimizationReporterTest
values_to_set_parameters_to = '10 20 30 40 50 60 70 80 90 100 110 120'
expected_lower_bounds = '-1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12'
expected_upper_bounds = '101 102 103 104 105 106 107 108 109 110 111 112'
[]
[]
[Executioner]
type = Steady
[]
[Outputs]
[out]
type = JSON
execute_system_information_on = none
[]
[]
(modules/optimization/test/tests/optimizationreporter/optimization_reporter_base/optRep_fromCsv_groupBounds.i)
[Mesh]
type = GeneratedMesh
dim = 1
[]
[Variables]
[u]
[]
[]
[Kernels]
[null]
type = NullKernel
variable = u
[]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'p1 p2 p3'
num_values = '2 4 6'
initial_condition = '1; 3; 7'
upper_bounds = '110; 210; 310'
lower_bounds = '-1; -2; -3'
outputs = out
[]
[UserObjects]
[optReporterTester]
type = OptimizationReporterTest
values_to_set_parameters_to = '10 20 30 40 50 60 70 80 90 100 110 120'
expected_lower_bounds = '-1 -1 -2 -2 -2 -2 -3 -3 -3 -3 -3 -3'
expected_upper_bounds = '110 110 210 210 210 210 310 310 310 310 310 310'
[]
[]
[Executioner]
type = Steady
[]
[Outputs]
[out]
type = JSON
execute_system_information_on = none
[]
[]
(modules/optimization/test/tests/optimizationreporter/general_opt/point_loads_gen_opt/main_auto_adjoint.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = misfit_norm
parameter_names = 'parameter_results'
num_values = '3'
[]
[Reporters]
[measure_data]
type = OptimizationData
measurement_points = '0.5 0.28 0
0.5 0.6 0
0.5 0.8 0
0.5 1.1 0'
measurement_values = '293 304 315 320'
[]
[]
[Executioner]
type = Optimize
tao_solver = taolmvm
petsc_options_iname = '-tao_gttol -tao_ls_type'
petsc_options_value = '1e-5 unit'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward_and_adjoint.i
execute_on = "FORWARD"
[]
[]
[Transfers]
# FORWARD transfers
[toForward_measument]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'OptimizationReporter/parameter_results'
to_reporters = 'point_source/value'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'gradient/temperature_adjoint
measure_data/misfit_norm'
to_reporters = 'OptimizationReporter/grad_parameter_results
OptimizationReporter/misfit_norm'
[]
[]
[Outputs]
csv = true
file_base = main_out
[]
(modules/optimization/test/tests/optimizationreporter/material/main.i)
[Optimization]
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 2
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'p1'
num_values = '1'
initial_condition = '7'
lower_bounds = '0'
upper_bounds = '10'
[]
[Reporters]
[main]
type = OptimizationData
measurement_points = '0.2 0.2 0
0.8 0.6 0
0.2 1.4 0
0.8 1.8 0'
measurement_values = '226 254 214 146'
[]
[]
[Executioner]
type = Optimize
tao_solver = taoblmvm
petsc_options_iname = '-tao_gatol'
petsc_options_value = '0.0001'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
execute_on = "FORWARD"
clone_parent_mesh = true
[]
[adjoint]
type = FullSolveMultiApp
input_files = adjoint.i
execute_on = "ADJOINT"
clone_parent_mesh = true
[]
[]
[Transfers]
[toForward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/p1'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
params/p1'
[]
[fromForward_mesh]
type = MultiAppCopyTransfer
from_multi_app = forward
to_multi_app = adjoint
source_variable = 'temperature'
variable = 'temperature_forward'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measure_data/misfit_values measure_data/objective_value'
to_reporters = 'main/misfit_values OptimizationReporter/objective_value'
[]
[toAdjoint]
type = MultiAppReporterTransfer
to_multi_app = adjoint
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/misfit_values
OptimizationReporter/p1'
to_reporters = 'misfit/measurement_xcoord
misfit/measurement_ycoord
misfit/measurement_zcoord
misfit/measurement_time
misfit/misfit_values
params/p1'
[]
[fromAdjoint]
type = MultiAppReporterTransfer
from_multi_app = adjoint
from_reporters = 'adjoint_grad/inner_product'
to_reporters = 'OptimizationReporter/grad_p1'
[]
[]
[Outputs]
csv = true
[]
(modules/optimization/test/tests/outputs/exodus_optimization_steady/main.i)
[Optimization]
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 2
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'p1'
num_values = '1'
initial_condition = '7'
lower_bounds = '0'
upper_bounds = '10'
[]
[Reporters]
[main]
type = OptimizationData
measurement_points = '0.2 0.2 0
0.8 0.6 0
0.2 1.4 0
0.8 1.8 0'
measurement_values = '226 254 214 146'
[]
[]
[Executioner]
type = Optimize
tao_solver = taoblmvm
petsc_options_iname = '-tao_gatol'
petsc_options_value = '1e-4'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
execute_on = "FORWARD"
clone_parent_mesh = true
[]
[adjoint]
type = FullSolveMultiApp
input_files = adjoint_iteration_output.i
execute_on = "ADJOINT"
clone_parent_mesh = true
[]
[]
[Transfers]
[toForward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/p1'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
params/p1'
[]
[fromForward_mesh]
type = MultiAppCopyTransfer
from_multi_app = forward
to_multi_app = adjoint
source_variable = 'temperature'
variable = 'temperature_forward'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measure_data/misfit_values measure_data/objective_value'
to_reporters = 'main/misfit_values OptimizationReporter/objective_value'
[]
[toAdjoint]
type = MultiAppReporterTransfer
to_multi_app = adjoint
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/misfit_values
OptimizationReporter/p1'
to_reporters = 'misfit/measurement_xcoord
misfit/measurement_ycoord
misfit/measurement_zcoord
misfit/measurement_time
misfit/misfit_values
params/p1'
[]
[fromAdjoint]
type = MultiAppReporterTransfer
from_multi_app = adjoint
from_reporters = 'adjoint_grad/inner_product'
to_reporters = 'OptimizationReporter/grad_p1'
[]
[]
[Outputs]
csv = true
[]
(modules/optimization/test/tests/executioners/constrained/inequality/main_auto_adjoint.i)
# This tests constrained optimization of a linear and constant function
# that are used to apply NuemannBCs on a side.
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'left'
num_values = '2'
initial_condition = '10 10'
lower_bounds = '0'
upper_bounds = '1000'
inequality_names = 'ineq'
[]
[Reporters]
[main]
type = OptimizationData
measurement_points = '0.2 0.2 0'
measurement_values = '207'
file_value = 'measured_value'
[]
[]
[Executioner]
type = Optimize
tao_solver = taoalmm
petsc_options_iname = '-tao_gatol -tao_catol -tao_almm_type -tao_almm_mu_factor -tao_almm_mu_init -tao_almm_subsolver_tao_type'
petsc_options_value = ' 1e-3 1e-3 phr 1.1 1.0 bqnktr'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward_and_adjoint.i
execute_on = "FORWARD"
[]
[]
[Reporters]
[optInfo]
type = OptimizationInfo
[]
[]
[Transfers]
[toForward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/left'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
params/left'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measure_data/objective_value
grad_bc_left/inner_product
ineq/ineq
gradient_c/gradient_c'
to_reporters = 'OptimizationReporter/objective_value
OptimizationReporter/grad_left
OptimizationReporter/ineq
OptimizationReporter/grad_ineq'
[]
[]
(modules/optimization/examples/materialTransient/optimize_auto_adjoint.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'D'
num_values = '4'
initial_condition = '0.01 0.01 0.01 0.01'
upper_bounds = '1e2'
lower_bounds = '1e-3'
[]
[Reporters]
[main]
type = OptimizationData
measurement_file = forward_out_data_0011.csv
file_xcoord = measurement_xcoord
file_ycoord = measurement_ycoord
file_zcoord = measurement_zcoord
file_time = measurement_time
file_value = simulation_values
[]
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward_and_adjoint.i
execute_on = FORWARD
[]
[]
[Transfers]
[to_forward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/D'
to_reporters = 'data/measurement_xcoord
data/measurement_ycoord
data/measurement_zcoord
data/measurement_time
data/measurement_values
diffc_rep/D_vals'
[]
[from_forward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'data/objective_value
adjoint/inner_product'
to_reporters = 'OptimizationReporter/objective_value
OptimizationReporter/grad_D'
[]
[]
[Executioner]
type = Optimize
tao_solver = taobqnls
petsc_options_iname = '-tao_gatol'
petsc_options_value = '1e-4'
[]
(modules/optimization/test/tests/optimizationreporter/point_loads/main.i)
# DO NOT CHANGE THIS TEST
# this test is documented as an example in forceInv_pointLoads.md
# if this test is changed, the figures will need to be updated.
measurement_points = '0.5 0.28 0
0.5 0.6 0
0.5 0.8 0
0.5 1.1 0'
measurement_values = '293 304 315 320'
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'parameter_results'
num_values = '3'
[]
[Reporters]
[main]
type = OptimizationData
measurement_points = ${measurement_points}
measurement_values = ${measurement_values}
[]
[]
[Executioner]
type = Optimize
tao_solver = taonls
petsc_options_iname = '-tao_gttol -tao_max_it -tao_nls_pc_type -tao_nls_ksp_type'
petsc_options_value = '1e-5 10 none cg'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
execute_on = "FORWARD"
[]
[adjoint]
type = FullSolveMultiApp
input_files = adjoint.i
execute_on = "ADJOINT"
[]
[homogeneousForward]
type = FullSolveMultiApp
input_files = forward_homogeneous.i
execute_on = "HOMOGENEOUS_FORWARD"
[]
[]
[Transfers]
# FORWARD transfers
[toForward_measument]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/parameter_results'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
point_source/value'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
# Note: We are transferring the misfit values into main misfit
from_reporters = 'measure_data/objective_value measure_data/misfit_values'
to_reporters = 'OptimizationReporter/objective_value main/misfit_values'
[]
# ADJOINT transfers
#NOTE: the adjoint variable we are transferring is actually the gradient
[toAdjoint]
type = MultiAppReporterTransfer
to_multi_app = adjoint
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/misfit_values'
to_reporters = 'misfit/measurement_xcoord
misfit/measurement_ycoord
misfit/measurement_zcoord
misfit/measurement_time
misfit/misfit_values'
[]
[fromAdjoint]
type = MultiAppReporterTransfer
from_multi_app = adjoint
from_reporters = 'gradient/adjoint'
to_reporters = 'OptimizationReporter/grad_parameter_results'
[]
# HESSIAN transfers. Same as forward.
[toHomoForward]
type = MultiAppReporterTransfer
multi_app = homogeneousForward
direction = to_multiapp
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/parameter_results'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
point_source/value'
[]
[fromHomoForward]
type = MultiAppReporterTransfer
multi_app = homogeneousForward
direction = from_multiapp
# Note: We are transferring the simulation values into misfit
# this has to be done when using general opt and homogenous forward.
from_reporters = 'measure_data/simulation_values'
to_reporters = 'main/misfit_values'
[]
[]
[Reporters]
[optInfo]
type = OptimizationInfo
[]
[]
[Outputs]
csv = true
[]
(modules/optimization/test/tests/optimizationreporter/nonlinear_material/main.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'heat_source'
num_values = '1'
initial_condition = '0'
lower_bounds = '0.1'
upper_bounds = '10000'
[]
[Reporters]
[main]
type = OptimizationData
measurement_points = '0.2 0.2 0
0.8 0.6 0
0.2 1.4 0
0.8 1.8 0'
measurement_values = '1.98404 1.91076 1.56488 1.23863'
[]
[]
[Executioner]
type = Optimize
tao_solver = taolmvm
petsc_options_iname = '-tao_gttol'
petsc_options_value = ' 1e-5'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward_and_adjoint.i
execute_on = FORWARD
[]
[]
[Transfers]
[to_forward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/heat_source'
to_reporters = 'measurement_locations/measurement_xcoord
measurement_locations/measurement_ycoord
measurement_locations/measurement_zcoord
measurement_locations/measurement_time
measurement_locations/measurement_values
params/heat_source'
[]
[from_forward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measurement_locations/objective_value
gradient_vpp/inner_product'
to_reporters = 'OptimizationReporter/objective_value
OptimizationReporter/grad_heat_source'
[]
[]
[Outputs]
csv = true
[]
(modules/optimization/examples/materialTransient/optimize_grad.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'D'
num_values = '4'
initial_condition = '0.01 0.01 0.01 0.01'
upper_bounds = '1e2'
lower_bounds = '1e-3'
[]
[Reporters]
[main]
type = OptimizationData
measurement_file = forward_out_data_0011.csv
file_xcoord = measurement_xcoord
file_ycoord = measurement_ycoord
file_zcoord = measurement_zcoord
file_time = measurement_time
file_value = simulation_values
[]
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
cli_args = 'Outputs/csv=false;Outputs/console=false'
execute_on = FORWARD
[]
[adjoint]
type = FullSolveMultiApp
input_files = gradient.i
cli_args = 'Outputs/console=false;UserObjects/load_u/mesh=optimize_grad_out_forward0.e'
execute_on = ADJOINT
[]
[]
[Transfers]
[to_forward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/D'
to_reporters = 'data/measurement_xcoord
data/measurement_ycoord
data/measurement_zcoord
data/measurement_time
data/measurement_values
diffc_rep/D_vals'
[]
[from_forward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'data/misfit_values data/objective_value'
to_reporters = 'main/misfit_values OptimizationReporter/objective_value'
[]
[to_adjoint]
type = MultiAppReporterTransfer
to_multi_app = adjoint
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/misfit_values
OptimizationReporter/D'
to_reporters = 'data/measurement_xcoord
data/measurement_ycoord
data/measurement_zcoord
data/measurement_time
data/misfit_values
diffc_rep/D_vals'
[]
[from_adjoint]
type = MultiAppReporterTransfer
from_multi_app = adjoint
from_reporters = 'adjoint/inner_product'
to_reporters = 'OptimizationReporter/grad_D'
[]
[]
[Executioner]
type = Optimize
tao_solver = taobqnls
petsc_options_iname = '-tao_gatol'
petsc_options_value = '1e-4'
[]
(modules/optimization/test/tests/optimizationreporter/general_opt/function_optimization/main.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
parameter_names = 'vals'
num_values = '2'
objective_name = obj_value
[]
[Problem]
solve = false
[]
[Executioner]
type = Optimize
tao_solver = taobqnktr
petsc_options_iname = '-tao_gatol'
petsc_options_value = '1e-8 '
verbose = true
output_optimization_iterations = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
execute_on = FORWARD
[]
[]
[Transfers]
[toForward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'OptimizationReporter/vals'
to_reporters = 'vals/vals'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'obj_pp/value
grad_f/grad_f'
to_reporters = 'OptimizationReporter/obj_value
OptimizationReporter/grad_vals'
[]
[]
[Outputs]
[json]
type = JSON
execute_system_information_on = none
[]
[json_forward]
type = JSON
execute_on = 'FORWARD '
execute_system_information_on = none
[]
[]
(modules/optimization/examples/simpleTransient/main_auto_adjoint.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'source'
num_values = '44'
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward_and_adjoint.i
execute_on = FORWARD
[]
[]
[Transfers]
[to_forward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'OptimizationReporter/source'
to_reporters = 'src_values/values'
[]
[from_forward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measured_data/objective_value adjoint/inner_product'
to_reporters = 'OptimizationReporter/objective_value OptimizationReporter/grad_source'
[]
[]
[Executioner]
type = Optimize
solve_on = none
tao_solver = taolmvm
petsc_options_iname = '-tao_gatol -tao_ls_type'
petsc_options_value = '1e-2 unit'
verbose = true
[]
(modules/optimization/test/tests/optimizationreporter/point_loads/regularization_for_main.i)
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
num_values = '3'
tikhonov_coeff = 0.0001
[]
[Outputs]
file_base = main_out_reg
csv = true
[]
(modules/combined/test/tests/optimization/invOpt_bc_convective/main.i)
[Optimization]
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 20
xmax = 1
ymax = 2
[]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'p1'
num_values = '1'
initial_condition = '9'
upper_bounds = '10'
lower_bounds = '1'
[]
[Reporters]
[main]
type = OptimizationData
measurement_points = '0.1 0 0
0.1 0.1 0
0.1 0.2 0
0.1 0.3 0
0.1 0.4 0
0.1 0.5 0
0.1 0.6 0
0.1 0.7 0
0.1 0.8 0
0.1 0.9 0
0.1 1 0
0.1 1.1 0
0.1 1.2 0
0.1 1.3 0
0.1 1.4 0
0.1 1.5 0
0.1 1.6 0
0.1 1.7 0
0.1 1.8 0
0.1 1.9 0
0.1 2 0'
measurement_values = '500
472.9398111
450.8117197
434.9560747
423.3061045
414.9454912
409.3219399
406.1027006
405.0865428
406.1604905
409.2772668
414.4449772
421.7253934
431.2401042
443.1862012
457.8664824
475.7450186
497.5582912
524.4966003
559.1876637
600'
[]
[]
[Executioner]
type = Optimize
tao_solver = taoblmvm #taolmvm#taonm #taolmvm
petsc_options_iname = '-tao_gatol' # -tao_fd_gradient -tao_fd_delta'
petsc_options_value = '1e-4' #1e-1 '#true 1e-4'
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
execute_on = "FORWARD"
clone_parent_mesh = true
[]
[adjoint]
type = FullSolveMultiApp
input_files = adjoint.i
execute_on = "ADJOINT"
clone_parent_mesh = true
[]
[]
[Transfers]
#these are usually the same for all input files.
[toForward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/p1'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
params/vals'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measure_data/misfit_values measure_data/objective_value'
to_reporters = 'main/misfit_values OptimizationReporter/objective_value'
[]
[toAdjoint]
type = MultiAppReporterTransfer
to_multi_app = adjoint
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/misfit_values
OptimizationReporter/p1'
to_reporters = 'misfit/measurement_xcoord
misfit/measurement_ycoord
misfit/measurement_zcoord
misfit/measurement_time
misfit/misfit_values
params/vals'
[]
[fromAdjoint]
type = MultiAppReporterTransfer
from_multi_app = adjoint
from_reporters = 'adjoint_pt/inner_product'
to_reporters = 'OptimizationReporter/grad_p1'
[]
# these are transferring data from subapp to subapp because the adjoint problem
# needs the forward solution to compute the gradient. Maybe this step could be
# done on the main app. The adjoint only passes the adjoint variable (whole mesh)
# to the main app and the main app computes the gradient from this.
[fromForwardtoAdjoint_temp]
type = MultiAppCopyTransfer
from_multi_app = forward
to_multi_app = adjoint
source_variable = 'temperature'
variable = 'temperature_forward'
[]
[]
[Outputs]
csv = true
[]
(modules/optimization/test/tests/optimizationreporter/optimization_reporter_base/optRep_fromCsv_mixBounds.i)
[Mesh]
type = GeneratedMesh
dim = 1
[]
[Variables]
[u]
[]
[]
[Kernels]
[null]
type = NullKernel
variable = u
[]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'p1 p2 p3'
num_values = '2 4 6'
initial_condition = '1 2; 3; 7 8 9 10 11 12'
upper_bounds = '101; 103; 107 108 109 110 111 112'
lower_bounds = '-1 -2; -3 -4 -5 -6; -7'
outputs = out
[]
[UserObjects]
[optReporterTester]
type = OptimizationReporterTest
values_to_set_parameters_to = '10 20 30 40 50 60 70 80 90 100 110 120'
expected_lower_bounds = '-1 -2 -3 -4 -5 -6 -7 -7 -7 -7 -7 -7'
expected_upper_bounds = '101 101 103 103 103 103 107 108 109 110 111 112'
[]
[]
[Executioner]
type = Steady
[]
[Outputs]
[out]
type = JSON
execute_system_information_on = none
[]
[]
(modules/optimization/test/tests/optimizationreporter/bimaterial/main.i)
# This main.i file runs the subapps model.i and grad.i, using an FullSolveMultiApp
# The purpose of main.i is to find the two diffusivity_values
# (one in the bottom material of model.i, and one in the top material of model.i)
# such that the misfit between experimental observations (defined in model.i) and MOOSE predictions is minimised.
# The adjoint computed in grad.i is used to compute the gradient for the gradient based LMVM solver in TAO
# PETSc-TAO optimisation is used to perform this inversion
#
[Optimization]
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 16
ny = 16
xmin = -4
xmax = 4
ymin = -4
ymax = 4
[]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = diffusivity_values
num_values = 2 # diffusivity in the bottom material and in the top material of model.i
initial_condition = '15 15' # the expected result is about '1 10' so this initial condition is not too bad
lower_bounds = '1'
upper_bounds = '50'
[]
[Reporters]
[main]
type = OptimizationData
measurement_file = 'synthetic_data.csv'
file_value = 'temperature'
[]
[]
[Executioner]
# type = Optimize
# tao_solver = taoblmvm
# petsc_options_iname = '-tao_fd_gradient -tao_gatol'
# petsc_options_value = ' true 0.001'
type = Optimize
tao_solver = taobqnktr
petsc_options_iname = '-tao_gatol'
petsc_options_value = '1e-3'
## THESE OPTIONS ARE FOR TESTING THE ADJOINT GRADIENT
# petsc_options_iname='-tao_max_it -tao_fd_test -tao_test_gradient -tao_fd_gradient -tao_fd_delta -tao_gatol'
# petsc_options_value='1 true true false 1e-8 0.1'
# petsc_options = '-tao_test_gradient_view'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = model.i
execute_on = FORWARD
[]
[adjoint]
type = FullSolveMultiApp
input_files = grad.i #write this input file to compute the adjoint solution and the gradient
execute_on = ADJOINT
[]
[]
[Transfers]
[toForward] #pass the coordinates where we knew the measurements to the forward model to do the extraction of the simulation data at the location of the measurements to compute the misfit
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/diffusivity_values'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
data/diffusivity'
[]
[from_forward] #get the simulation values
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measure_data/misfit_values measure_data/objective_value'
to_reporters = 'main/misfit_values OptimizationReporter/objective_value'
[]
#############
#copy the temperature variable - we will need this for the computation of the gradient
[fromforwardMesh]
type = MultiAppCopyTransfer
from_multi_app = forward
to_multi_app = adjoint
source_variable = 'temperature'
variable = 'temperature_forward'
[]
#############
[toAdjoint] #pass the misfit to the adjoint
type = MultiAppReporterTransfer
to_multi_app = adjoint
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/misfit_values
OptimizationReporter/diffusivity_values'
to_reporters = 'misfit/measurement_xcoord
misfit/measurement_ycoord
misfit/measurement_zcoord
misfit/measurement_time
misfit/misfit_values
data/diffusivity'
[]
[fromadjoint]
type = MultiAppReporterTransfer
from_multi_app = adjoint
from_reporters = 'gradvec/inner_product'
to_reporters = 'OptimizationReporter/grad_diffusivity_values'
[]
[]
[Outputs]
console = false
csv = true
[]
(modules/optimization/examples/materialFrequency/wave1D/inversion.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
parameter_names = 'G'
num_values = 1
# Converges when initital value is in between 3.99 and 4.01, e.g. 3.95 and 4.05 diverge
initial_condition = '3.98'
lower_bounds = '1'
upper_bounds = '10'
objective_name = objective
[]
[Executioner]
type = Optimize
tao_solver = taoblmvm
petsc_options_iname = '-tao_gatol -tao_max_it -tao_ls_type'
petsc_options_value = '1e-8 100 unit'
verbose = true
[]
[Reporters]
[OptimizationInfo]
type = OptimizationInfo
items = 'current_iterate function_value gnorm'
[]
[]
[Outputs]
csv = true
[]
[MultiApps]
[model_grad_sampler]
type = FullSolveMultiApp
input_files = 'sampler.i'
execute_on = FORWARD
[]
[]
[Transfers]
[SetParameters]
type = MultiAppReporterTransfer
to_multi_app = model_grad_sampler
from_reporters = 'OptimizationReporter/G'
to_reporters = 'parameters/G'
[]
[GetObjectiveGradient]
type = MultiAppReporterTransfer
from_multi_app = model_grad_sampler
from_reporters = 'objective/objective
gradient/gradient'
to_reporters = 'OptimizationReporter/objective
OptimizationReporter/grad_G'
[]
[]
(modules/optimization/examples/materialTransient/optimize_nograd.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'D'
num_values = '4'
initial_condition = '0.2 0.2 0.2 0.2'
[]
[Reporters]
[main]
type = OptimizationData
measurement_file = forward_out_data_0011.csv
file_xcoord = measurement_xcoord
file_ycoord = measurement_ycoord
file_zcoord = measurement_zcoord
file_time = measurement_time
file_value = simulation_values
[]
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
cli_args = 'Outputs/csv=false;Outputs/console=false'
execute_on = FORWARD
[]
[]
[Transfers]
[to_forward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_values
OptimizationReporter/D'
to_reporters = 'data/measurement_values
diffc_rep/D_vals'
[]
[from_forward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'data/objective_value'
to_reporters = 'OptimizationReporter/objective_value'
[]
[]
[Executioner]
type = Optimize
tao_solver = taonm
petsc_options_iname = '-tao_gatol -tao_nm_lambda'
petsc_options_value = '1e-8 0.25'
verbose = true
[]
(modules/optimization/test/tests/optimizationreporter/bc_load_linearFunction/main.i)
# This tests that a linear and constant function can be scaled in
# two separate functionNeumannBCs both applied to the same sideset using
# two parsed functions. The scale of the linear and constant functions
# are being parameterized.
[Optimization]
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 20
xmax = 1
ymax = 2
bias_x = 1.1
bias_y = 1.1
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'left right'
num_values = '2 1'
[]
[Reporters]
[main]
type = OptimizationData
file_xcoord = 'coordx'
file_ycoord = 'y'
file_zcoord = 'z'
file_value = 'weightedMeasurement'
file_variable_weights = 'weight'
measurement_file = 'measurementData.csv'
[]
[]
[Executioner]
type = Optimize
tao_solver = taonls
petsc_options_iname = '-tao_gttol -tao_nls_pc_type -tao_nls_ksp_type'
petsc_options_value = '1e-3 none cg'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
execute_on = "FORWARD"
clone_parent_mesh = true
[]
[adjoint]
type = FullSolveMultiApp
input_files = adjoint.i
execute_on = "ADJOINT"
clone_parent_mesh = true
[]
[homogeneousForward]
type = FullSolveMultiApp
input_files = homogeneous_forward.i
execute_on = "HOMOGENEOUS_FORWARD"
clone_parent_mesh = true
[]
[]
[Transfers]
[toForward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
main/weight
OptimizationReporter/left
OptimizationReporter/right'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
measure_data/weightForTemperature
params_left/vals
params_right/vals'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measure_data/misfit_values measure_data/objective_value'
to_reporters = 'main/misfit_values OptimizationReporter/objective_value'
[]
[toAdjoint]
type = MultiAppReporterTransfer
to_multi_app = adjoint
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/misfit_values
main/weight
OptimizationReporter/left
OptimizationReporter/right'
to_reporters = 'misfit/measurement_xcoord
misfit/measurement_ycoord
misfit/measurement_zcoord
misfit/measurement_time
misfit/misfit_values
misfit/weight
params_left/vals
params_right/vals'
[]
[fromadjoint]
type = MultiAppReporterTransfer
from_multi_app = adjoint
from_reporters = 'grad_bc_left/inner_product
grad_bc_right/inner_product'
to_reporters = 'OptimizationReporter/grad_left
OptimizationReporter/grad_right'
[]
# HESSIAN transfers. Same as forward.
[toHomogeneousForward]
type = MultiAppReporterTransfer
to_multi_app = homogeneousForward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
main/weight
OptimizationReporter/left
OptimizationReporter/right'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
measure_data/weightForTemperature
params_left/vals
params_right/vals'
[]
[fromHomogeneousForward]
type = MultiAppReporterTransfer
from_multi_app = homogeneousForward
from_reporters = 'measure_data/simulation_values'
to_reporters = 'main/misfit_values'
[]
[]
[Reporters]
[optInfo]
type = OptimizationInfo
items = 'current_iterate function_value gnorm'
[]
[]
[Outputs]
csv = true
console = false
[]
(modules/combined/test/tests/optimization/invOpt_elasticity_modular/main.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'youngs_modulus'
num_values = '3'
initial_condition = '5.0 5.0 5.0'
lower_bounds = '0.1'
upper_bounds = '10.0'
[]
[Reporters]
[main]
type = OptimizationData
measurement_points = '-1.0 -1.0 0.0
-1.0 0.0 0.0
-1.0 1.0 0.0
0.0 -1.0 0.0
0.0 0.0 0.0
0.0 1.0 0.0
1.0 -1.0 0.0
1.0 0.0 0.0
1.0 1.0 0.0'
measurement_values = '3.276017e+00 4.763281e+00 6.380137e+00 3.171603e+00 4.660766e+00 6.289842e+00 3.127077e+00 4.608134e+00 6.228638e+00'
[]
[]
[Executioner]
type = Optimize
tao_solver = taobqnls #taobncg #taoblmvm
petsc_options_iname = '-tao_gatol -tao_ls_type -tao_max_it'
petsc_options_value = '1e-10 unit 1000'
# THESE OPTIONS ARE FOR TESTING THE ADJOINT GRADIENT
# petsc_options_iname = '-tao_max_it -tao_fd_test -tao_test_gradient -tao_fd_gradient -tao_fd_delta -tao_gatol'
# petsc_options_value = '1 true true false 1e-8 0.1'
# petsc_options = '-tao_test_gradient_view'
# verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
execute_on = FORWARD
[]
[adjoint]
type = FullSolveMultiApp
input_files = grad.i
execute_on = ADJOINT
[]
[]
[Transfers]
[toForward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/youngs_modulus'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
parametrization/youngs_modulus'
[]
[get_misfit]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measure_data/misfit_values measure_data/objective_value'
to_reporters = 'main/misfit_values OptimizationReporter/objective_value'
[]
[set_state_for_adjoint]
type = MultiAppCopyTransfer
from_multi_app = forward
to_multi_app = adjoint
source_variable = 'ux uy'
variable = 'state_x state_y'
[]
[setup_adjoint_run]
type = MultiAppReporterTransfer
to_multi_app = adjoint
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/misfit_values
OptimizationReporter/youngs_modulus'
to_reporters = 'misfit/measurement_xcoord
misfit/measurement_ycoord
misfit/measurement_zcoord
misfit/measurement_time
misfit/misfit_values
parametrization/youngs_modulus'
[]
[get_grad_youngs_modulus]
type = MultiAppReporterTransfer
from_multi_app = adjoint
from_reporters = 'grad_youngs_modulus/inner_product'
to_reporters = 'OptimizationReporter/grad_youngs_modulus'
[]
[]
[Reporters]
[optInfo]
type = OptimizationInfo
items = 'current_iterate function_value gnorm'
[]
[]
[Outputs]
console = false
csv = true
[]
(modules/optimization/test/tests/outputs/exodus_optimization_steady/main_auto_adjoint.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'parameter_results'
num_values = '3'
[]
[Reporters]
[main]
type = OptimizationData
measurement_points = '0.5 0.28 0
0.5 0.6 0
0.5 0.8 0
0.5 1.1 0'
measurement_values = '293 304 315 320'
[]
[]
[Executioner]
type = Optimize
tao_solver = taolmvm
petsc_options_iname = '-tao_gttol -tao_ls_type'
petsc_options_value = '1e-5 unit'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward_and_adjoint_iteration_output.i
execute_on = "FORWARD"
[]
[]
[Transfers]
# FORWARD transfers
[toForward_measument]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/parameter_results'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
point_source/value'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measure_data/objective_value
gradient/temperature_adjoint'
to_reporters = 'OptimizationReporter/objective_value
OptimizationReporter/grad_parameter_results'
[]
[]
[Outputs]
csv = true
[]
(modules/optimization/test/tests/optimizationreporter/bc_load_linearFunction/main_auto_adjoint.i)
# This tests that a linear and constant function can be scaled in
# two separate functionNeumannBCs both applied to the same sideset using
# two parsed functions. The scale of the linear and constant functions
# are being parameterized.
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
parameter_names = 'left right'
num_values = '2 1'
objective_name = obj_value
[]
[Executioner]
type = Optimize
tao_solver = taobqnls
petsc_options_iname = '-tao_gatol -tao_ls_type'
petsc_options_value = '1e-5 unit'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward_and_adjoint.i
execute_on = "FORWARD"
[]
[]
[Transfers]
[toForward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'OptimizationReporter/left
OptimizationReporter/right'
to_reporters = 'params/left
params/right'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'obj_sum/value
grad_bc_left/inner_product
grad_bc_right/inner_product'
to_reporters = 'OptimizationReporter/obj_value
OptimizationReporter/grad_left
OptimizationReporter/grad_right'
[]
[]
(modules/optimization/test/tests/reporters/multiExperiment/optimize.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
parameter_names = 'vals'
num_values = '2'
objective_name = obj_value
[]
[Executioner]
type = Optimize
tao_solver = taobqnktr
petsc_options_iname = '-tao_gatol'
petsc_options_value = '1e-8 '
verbose = true
[]
[MultiApps]
[forward_sampler]
type = FullSolveMultiApp
input_files = sampler_subapp.i
execute_on = FORWARD
[]
[]
[Transfers]
[toForward]
type = MultiAppReporterTransfer
to_multi_app = forward_sampler
from_reporters = 'OptimizationReporter/vals'
to_reporters = 'parameters/vals'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward_sampler
from_reporters = 'obj_sum/value
grad_sum/row_sum'
to_reporters = 'OptimizationReporter/obj_value
OptimizationReporter/grad_vals'
[]
[]
[Outputs]
csv = true
[]
(modules/optimization/examples/simpleTransient/main_gradient.i)
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'source'
num_values = '44'
[]
[Reporters]
[main]
type = OptimizationData
[]
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
execute_on = FORWARD
[]
[adjoint]
type = FullSolveMultiApp
input_files = adjoint.i
execute_on = ADJOINT
[]
[]
[Transfers]
[to_forward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'OptimizationReporter/source'
to_reporters = 'src_values/values'
[]
[from_forward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measured_data/misfit_values measured_data/objective_value'
to_reporters = 'main/misfit_values OptimizationReporter/objective_value'
[]
[to_adjoint]
type = MultiAppReporterTransfer
to_multi_app = adjoint
from_reporters = 'OptimizationReporter/source main/misfit_values'
to_reporters = 'src_values/values measured_data/misfit_values'
[]
[from_adjoint]
type = MultiAppReporterTransfer
from_multi_app = adjoint
from_reporters = 'adjoint/inner_product'
to_reporters = 'OptimizationReporter/grad_source'
[]
[]
[Executioner]
type = Optimize
solve_on = none
tao_solver = taolmvm
petsc_options_iname = '-tao_gatol -tao_ls_type'
petsc_options_value = '1e-2 unit'
verbose = true
[]
[Postprocessors]
[elapsed]
type = PerfGraphData
section_name = "Root"
data_type = total
[]
[]
[Outputs]
[pgraph]
type = PerfGraphOutput
level = 1
[]
[]
(modules/combined/test/tests/optimization/invOpt_mechanics/main.i)
[Optimization]
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 2
xmin = 0.0
xmax = 5.0
ymin = 0.0
ymax = 1.0
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'fy_right'
num_values = '1'
initial_condition = '100'
[]
[Reporters]
[main]
type = OptimizationData
measurement_points = '5.0 1.0 0.0'
measurement_values = '80.9'
[]
[]
[Executioner]
type = Optimize
tao_solver = taonls
petsc_options_iname = '-tao_gttol -tao_max_it -tao_nls_pc_type -tao_nls_ksp_type'
petsc_options_value = '1e-5 50 none cg'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
execute_on = "FORWARD"
clone_parent_mesh = true
[]
[adjoint]
type = FullSolveMultiApp
input_files = adjoint.i
execute_on = "ADJOINT"
clone_parent_mesh = true
[]
# the forward problem has homogeneous boundary conditions so it can be reused here.
[homogeneousForward]
type = FullSolveMultiApp
input_files = forward.i
execute_on = "HOMOGENEOUS_FORWARD"
clone_parent_mesh = true
[]
[]
[Transfers]
[toForward_measument]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/fy_right'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
params/right_fy_value'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measure_data/misfit_values measure_data/objective_value'
to_reporters = 'main/misfit_values OptimizationReporter/objective_value'
[]
[toAdjoint]
type = MultiAppReporterTransfer
to_multi_app = adjoint
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/misfit_values
OptimizationReporter/fy_right'
to_reporters = 'misfit/measurement_xcoord
misfit/measurement_ycoord
misfit/measurement_zcoord
misfit/measurement_time
misfit/misfit_values
params/right_fy_value'
[]
[fromAdjoint]
type = MultiAppReporterTransfer
from_multi_app = adjoint
from_reporters = 'adjoint_pt/inner_product'
to_reporters = 'OptimizationReporter/grad_fy_right'
[]
[toHomogeneousForward_measument]
type = MultiAppReporterTransfer
to_multi_app = homogeneousForward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/fy_right'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
params/right_fy_value'
[]
[fromHomogeneousForward]
type = MultiAppReporterTransfer
from_multi_app = homogeneousForward
from_reporters = 'measure_data/simulation_values'
to_reporters = 'main/misfit_values'
[]
[]
[Reporters]
[optInfo]
type = OptimizationInfo
[]
[]
[Outputs]
csv = true
[]
(modules/optimization/test/tests/optimizationreporter/point_loads/main_auto_adjoint.i)
measurement_points = '0.5 0.28 0
0.5 0.6 0
0.5 0.8 0
0.5 1.1 0'
measurement_values = '293 304 315 320'
[Optimization]
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'parameter_results'
num_values = '3'
[]
[Reporters]
[main]
type = OptimizationData
measurement_points = ${measurement_points}
measurement_values = ${measurement_values}
[]
[]
[Executioner]
type = Optimize
tao_solver = taolmvm
petsc_options_iname = '-tao_gttol -tao_ls_type'
petsc_options_value = '1e-5 unit'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward_and_adjoint.i
execute_on = "FORWARD"
[]
[]
[Transfers]
# FORWARD transfers
[toForward_measument]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/parameter_results'
to_reporters = 'measure_data/measurement_xcoord
measure_data/measurement_ycoord
measure_data/measurement_zcoord
measure_data/measurement_time
measure_data/measurement_values
point_source/value'
[]
[fromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measure_data/objective_value
gradient/temperature_adjoint'
to_reporters = 'OptimizationReporter/objective_value
OptimizationReporter/grad_parameter_results'
[]
[]
[Outputs]
csv = true
[]
(modules/combined/test/tests/optimization/invOpt_nonlinear/main.i)
[Optimization]
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 2
[]
[OptimizationReporter]
type = GeneralOptimization
objective_name = objective_value
parameter_names = 'heat_source'
num_values = '1'
initial_condition = '0'
lower_bounds = '0.1'
upper_bounds = '10000'
[]
[Reporters]
[main]
type = OptimizationData
measurement_points = '0.2 0.2 0
0.8 0.6 0
0.2 1.4 0
0.8 1.8 0'
measurement_values = '1.98404 1.91076 1.56488 1.23863'
[]
[]
[Executioner]
type = Optimize
tao_solver = taonls
petsc_options_iname = '-tao_gttol -tao_max_it -tao_nls_pc_type -tao_nls_ksp_type'
petsc_options_value = ' 1e-5 5 none cg'
verbose = true
[]
[MultiApps]
[forward]
type = FullSolveMultiApp
input_files = forward.i
execute_on = FORWARD
clone_parent_mesh = true
[]
[homogeneous_forward]
type = FullSolveMultiApp
input_files = homogeneous_forward.i
execute_on = HOMOGENEOUS_FORWARD
clone_parent_mesh = true
[]
[adjoint]
type = FullSolveMultiApp
input_files = adjoint.i
execute_on = ADJOINT
clone_parent_mesh = true
[]
[]
[Transfers]
## RUN FORWARD SIMULATION WITH CURRENT PARAMETERS AS FORCE,
## AND EXTRACT SIMULATED VALUES AT MEASUREMENT POINTS
## AS WELL AS TOTAL FIELD VARIABLE FOR NONLINEAR PURPOSES
[MeasurementLocationsToForward]
type = MultiAppReporterTransfer
to_multi_app = forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/heat_source'
to_reporters = 'measurement_locations/measurement_xcoord
measurement_locations/measurement_ycoord
measurement_locations/measurement_zcoord
measurement_locations/measurement_time
measurement_locations/measurement_values
params/heat_source'
[]
[SimulatedDataFromForward]
type = MultiAppReporterTransfer
from_multi_app = forward
from_reporters = 'measurement_locations/misfit_values measurement_locations/objective_value'
to_reporters = 'main/misfit_values OptimizationReporter/objective_value'
[]
### RUN THE HOMOGENEOUS_FORWARD WITH CURRENT NONLINEAR STATE, PARAMETER_STEP,
### AND EXTRACT SIMULATED DATA AT MEASURMENT POINTS
[CurrentStateFromForwardNonlinearToHomogeneousForwardNonlinear]
type = MultiAppCopyTransfer
from_multi_app = forward
to_multi_app = homogeneous_forward
source_variable = 'forwardT'
variable = 'forwardT'
[]
[MeasurementLocationsToHomogeneousForward]
type = MultiAppReporterTransfer
to_multi_app = homogeneous_forward
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/measurement_values
OptimizationReporter/heat_source'
to_reporters = 'measurement_locations/measurement_xcoord
measurement_locations/measurement_ycoord
measurement_locations/measurement_zcoord
measurement_locations/measurement_time
measurement_locations/measurement_values
params/heat_source'
[]
[SimulatedDataFromHomogeneousForward]
type = MultiAppReporterTransfer
from_multi_app = homogeneous_forward
from_reporters = 'measurement_locations/simulation_values'
to_reporters = 'main/misfit_values'
[]
### RUN THE ADJOINT WITH CURRENT NONLINEAR STATE, WITH MISFIT AS EXCITATION,
### AND EXTRACT GRADIENT
[CurrentStateToAdjointNonlinear]
type = MultiAppCopyTransfer
from_multi_app = forward
to_multi_app = adjoint
source_variable = 'forwardT'
variable = 'forwardT'
[]
[MisfitToAdjoint]
type = MultiAppReporterTransfer
to_multi_app = adjoint
from_reporters = 'main/measurement_xcoord
main/measurement_ycoord
main/measurement_zcoord
main/measurement_time
main/misfit_values
OptimizationReporter/heat_source'
to_reporters = 'misfit/measurement_xcoord
misfit/measurement_ycoord
misfit/measurement_zcoord
misfit/measurement_time
misfit/misfit_values
params/heat_source'
[]
[GradientFromAdjoint]
type = MultiAppReporterTransfer
from_multi_app = adjoint
from_reporters = 'gradient_vpp/inner_product'
to_reporters = 'OptimizationReporter/grad_heat_source'
[]
[]
[Reporters]
[optInfo]
type = OptimizationInfo
[]
[]
[Outputs]
csv = true
[]