Neko-TOP
A portable framework for high-order spectral element flow toplogy optimization.
Loading...
Searching...
No Matches
problem::problem_t Type Reference

The abstract problem type. More...

Public Member Functions

procedure, pass, public init (this, parameters, design, simulation)
 Constructor for the base class.
 
procedure, pass, public free (this)
 Destructor for the base class.
 
procedure, pass, public compute (this, design)
 Evaluate the optimization problem. This is the main function that evaluates the problem. It should be implemented in the derived classes.
 
procedure, pass, public compute_sensitivity (this, design)
 Evaluate the sensitivity of the optimization problem. This is the main function that evaluates the problem sensitivity to the design. It should be implemented in the derived classes.
 
procedure, pass, public read_objectives (this, parameters, simulation, design)
 Read objective json-file.
 
procedure, pass, public read_constraints (this, parameters, simulation, design)
 Read constraint json-file.
 
procedure, pass, public write (this, idx)
 Sample the problem.
 
procedure, pass, public add_objective (this, objective)
 Add an objective to the list.
 
procedure, pass, public add_constraint (this, constraint)
 Add a constraint to the list.
 
procedure, pass(thisupdate_objectives (this, design)
 Update the objective function.
 
procedure, pass(thisupdate_constraints (this, design)
 Update the volume constraint.
 
procedure, pass(thisupdate_objective_sensitivities (this, design)
 Update the objective sensitivities.
 
procedure, pass(thisupdate_constraint_sensitivities (this, design)
 Update the constraint sensitivities.
 
procedure, pass, public get_objective_value (this, objective_value)
 Return the objective.
 
procedure, pass, public get_all_objective_values (this, all_objective_values)
 Return all components of the objective.
 
procedure, pass, public get_constraint_values (this, constraint_value)
 Return the constraints.
 
procedure, pass, public get_objective_sensitivities (this, sensitivity)
 Return the sensitivity of the objective.
 
procedure, pass, public get_constraint_sensitivities (this, sensitivity)
 Return the sensitivity of the constraints.
 
procedure, pass(thisget_n_objectives (this)
 Return the number of objectives.
 
procedure, pass(thisget_n_constraints (this)
 Return the number of constraints.
 
procedure, pass(thisget_log_header (this)
 Return the logfile header.
 

Public Attributes

integer n_objectives
 Number of objectives in the problem.
 
integer n_constraints
 Number of constraints in the problem.
 
class(objective_wrapper_t), dimension(:), allocatable objective_list
 The objective of the problem.
 
class(constraint_wrapper_t), dimension(:), allocatable constraint_list
 The constraints of the problem.
 

Private Attributes

integer n_design
 The number of design variables.
 

Detailed Description

This module defines the problem_t type which is the main interface for the optimization problem. The problem is defined by a set of objectives and constraints that are evaluated based on the design variables. The problem also handles the output of the problem and the simulation.

Definition at line 61 of file problem.f90.

Member Function/Subroutine Documentation

◆ add_constraint()

procedure, pass, public problem::problem_t::add_constraint ( class(problem_t), intent(inout this,
class(constraint_t), intent(inout), allocatable  constraint 
)

Definition at line 115 of file problem.f90.

◆ add_objective()

procedure, pass, public problem::problem_t::add_objective ( class(problem_t), intent(inout this,
class(objective_t), intent(inout), allocatable  objective 
)

Definition at line 113 of file problem.f90.

◆ compute()

procedure, pass, public problem::problem_t::compute ( class(problem_t), intent(inout this,
class(design_t), intent(inout design 
)

Definition at line 89 of file problem.f90.

◆ compute_sensitivity()

procedure, pass, public problem::problem_t::compute_sensitivity ( class(problem_t), intent(inout this,
class(design_t), intent(inout design 
)

Definition at line 94 of file problem.f90.

◆ free()

procedure, pass, public problem::problem_t::free ( class(problem_t), intent(inout this)

Definition at line 84 of file problem.f90.

◆ get_all_objective_values()

procedure, pass, public problem::problem_t::get_all_objective_values ( class(problem_t), intent(inout this,
type(vector_t), intent(out all_objective_values 
)

This function returns all the indivual objectives comprising the objective function

Parameters
[out]all_objective_valuesA vector containing all objectives

Definition at line 140 of file problem.f90.

◆ get_constraint_sensitivities()

procedure, pass, public problem::problem_t::get_constraint_sensitivities ( class(problem_t), intent(inout this,
type(matrix_t), intent(out sensitivity 
)

This function constructs the sensitivity of the constraint values from the individual constraints.

Parameters
[out]sensitivityThe matrix of all constraint sensitivities.

Definition at line 149 of file problem.f90.

◆ get_constraint_values()

procedure, pass, public problem::problem_t::get_constraint_values ( class(problem_t), intent(inout this,
type(vector_t), intent(out constraint_value 
)

This function constructs the constraint values from the individual constraints.

Parameters
[out]constraint_valueThe vector of all constraint values.

Definition at line 143 of file problem.f90.

◆ get_log_header()

procedure, pass(this) problem::problem_t::get_log_header ( class(problem_t), intent(in this)

Definition at line 158 of file problem.f90.

◆ get_n_constraints()

procedure, pass(this) problem::problem_t::get_n_constraints ( class(problem_t), intent(in this)

Definition at line 155 of file problem.f90.

◆ get_n_objectives()

procedure, pass(this) problem::problem_t::get_n_objectives ( class(problem_t), intent(in this)

Definition at line 153 of file problem.f90.

◆ get_objective_sensitivities()

procedure, pass, public problem::problem_t::get_objective_sensitivities ( class(problem_t), intent(inout this,
type(vector_t), intent(out sensitivity 
)

This function constructs the sensitivity of the objective value from the individual objectives and their weights.

Parameters
[out]sensitivityThe weighted sum of all objective sensitivities.

Definition at line 146 of file problem.f90.

◆ get_objective_value()

procedure, pass, public problem::problem_t::get_objective_value ( class(problem_t), intent(inout this,
real(kind=rp), intent(out objective_value 
)

This function constructs the objective value from the individual objectives and their weights.

Parameters
[out]objective_valueThe weighted sum of all objective values.

Definition at line 137 of file problem.f90.

◆ init()

procedure, pass, public problem::problem_t::init ( class(problem_t), intent(inout this,
type(json_file), intent(inout parameters,
class(design_t), intent(in design,
type(simulation_t), intent(inout simulation 
)

Definition at line 82 of file problem.f90.

◆ read_constraints()

procedure, pass, public problem::problem_t::read_constraints ( class(problem_t), intent(inout this,
type(json_file), intent(inout parameters,
type(simulation_t), intent(inout simulation,
class(design_t), intent(in design 
)

Definition at line 103 of file problem.f90.

◆ read_objectives()

procedure, pass, public problem::problem_t::read_objectives ( class(problem_t), intent(inout this,
type(json_file), intent(inout parameters,
type(simulation_t), intent(inout simulation,
class(design_t), intent(in design 
)

Definition at line 101 of file problem.f90.

◆ update_constraint_sensitivities()

procedure, pass(this) problem::problem_t::update_constraint_sensitivities ( class(problem_t), intent(inout this,
class(design_t), intent(in design 
)

This function should be called after the design has been updated. It will update the sensitivity of all the constraints.

Parameters
[in]designThe design to update the constraints with.

Definition at line 130 of file problem.f90.

◆ update_constraints()

procedure, pass(this) problem::problem_t::update_constraints ( class(problem_t), intent(inout this,
class(design_t), intent(in design 
)

This function should be called after the design has been updated. It will update the value of all the constraints.

Parameters
[in]designThe design to update the constraints with.

Definition at line 124 of file problem.f90.

◆ update_objective_sensitivities()

procedure, pass(this) problem::problem_t::update_objective_sensitivities ( class(problem_t), intent(inout this,
class(design_t), intent(in design 
)

This function should be called after the design has been updated. It will update the sensitivity of all the objectives.

Parameters
[in]designThe design to update the objectives with.

Definition at line 127 of file problem.f90.

◆ update_objectives()

procedure, pass(this) problem::problem_t::update_objectives ( class(problem_t), intent(inout this,
class(design_t), intent(in design 
)

This function should be called after the design has been updated. It will update the value of all the objectives.

Parameters
[in]designThe design to update the objectives with.

Definition at line 121 of file problem.f90.

◆ write()

procedure, pass, public problem::problem_t::write ( class(problem_t), intent(inout this,
integer, intent(in idx 
)

Definition at line 110 of file problem.f90.

Member Data Documentation

◆ constraint_list

class(constraint_wrapper_t), dimension(:), allocatable problem::problem_t::constraint_list

Definition at line 74 of file problem.f90.

◆ n_constraints

integer problem::problem_t::n_constraints

Definition at line 69 of file problem.f90.

◆ n_design

integer problem::problem_t::n_design
private

Definition at line 65 of file problem.f90.

◆ n_objectives

integer problem::problem_t::n_objectives

Definition at line 67 of file problem.f90.

◆ objective_list

class(objective_wrapper_t), dimension(:), allocatable problem::problem_t::objective_list

Definition at line 72 of file problem.f90.


The documentation for this type was generated from the following file: