Neko-TOP
A portable framework for high-order spectral element flow toplogy optimization.
Loading...
Searching...
No Matches
base_functional::base_functional_t Type Referenceabstract

The base functional type. More...

Inheritance diagram for base_functional::base_functional_t:
Collaboration diagram for base_functional::base_functional_t:

Public Member Functions

generic init (this, json, design)
 Constructor interface.
 
generic init (this, json, design, simulation)
 Constructor interface.
 
procedure, pass(this) init_json (this, json, design)
 Constructor based on json input.
 
procedure, pass(this) init_json_sim (this, json, design, simulation)
 Constructor based on json input and simulation.
 
procedure(functional_free), deferred, pass free (this)
 Destructor.
 
procedure(functional_update_value), deferred, pass update_value (this, design)
 Update the value of the function.
 
procedure(functional_update_sensitivity), deferred, pass update_sensitivity (this, design)
 Update the sensitivity of the function.
 
procedure, pass(this) get_value (this)
 Get the value of the function.
 
procedure, pass(this) get_sensitivity (this, sensitivity)
 Get the sensitivity of the function.
 
procedure, pass(this) get_log_size (this)
 Get number of log entries for this functional.
 
procedure, pass(this) get_log_headers (this, headers)
 Get header labels for this functional's log entries.
 
procedure, pass(this) get_log_values (this, values)
 Get values for this functional's log entries.
 
procedure, pass(this) reset_value (this)
 Set the value to zero.
 
procedure, pass(this) reset_sensitivity (this)
 Set the sensitivity to zero.
 
procedure, pass(this) accumulate_value (this, design, time)
 Accumulate the value.
 
procedure, pass(this) accumulate_sensitivity (this, design, time)
 Accumulate the sensitivity.
 

Public Attributes

character(len=25) name = ""
 Name of object in the logfile.
 
real(kind=rp) value = 0.0_dp
 Value of the base_functional.
 
type(vector_t) sensitivity
 Sensitivity field.
 
logical has_mask = .false.
 containing a mask
 
class(point_zone_t), pointer mask => null()
 A mask for where the objective function is evaluated.
 
real(kind=dp) start_time = 0.0_dp
 Time window start for accumulation.
 
real(kind=dp) end_time = huge(0.0_dp)
 Time window end for accumulation.
 
real(kind=xp) value_weight = 0.0_xp
 Length of time actually sampled by accumulate_value, used to normalise the running time average.
 
real(kind=xp) sensitivity_weight = 0.0_xp
 Length of time actually sampled by accumulate_sensitivity, used to normalise the running time average.
 

Detailed Description

This is the base class for objectives and constraints alike. A base functional should be able to evaluate itself and its sensitivity with respect to the design variables.

The base functional is also responsible for managing the adjoint forcing terms that are required for the adjoint problem, any source terms simulation components that are required to evaluate the base functional. All of which should be prepared in the init method.

Definition at line 61 of file base_functional.f90.

Member Function/Subroutine Documentation

◆ accumulate_sensitivity()

procedure, pass(this) base_functional::base_functional_t::accumulate_sensitivity ( class(base_functional_t), intent(inout)  this,
class(design_t), intent(in)  design,
type(time_state_t), intent(in)  time 
)

Normalised exactly as accumulate_value, so that the sensitivity stays consistent with the value it differentiates.

Parameters
thisThe functional.
designThe design.
timeThe current time state.

Definition at line 128 of file base_functional.f90.

◆ accumulate_value()

procedure, pass(this) base_functional::base_functional_t::accumulate_value ( class(base_functional_t), intent(inout)  this,
class(design_t), intent(in)  design,
type(time_state_t), intent(in)  time 
)

Updates the value in place as the running mean of the function.

The result is the running mean of the function over the part of the functional's own time window that has been simulated so far, normalised by the length of time actually sampled. It is therefore invariant to the length of the run: extending end_time of the simulation past the functional's window leaves the value unchanged, and a windowed functional reports the mean over its window rather than over the run.

Parameters
thisThe functional.
designThe design.
timeThe current time state.

Definition at line 126 of file base_functional.f90.

◆ free()

procedure(functional_free), deferred, pass base_functional::base_functional_t::free ( class(base_functional_t), intent(inout)  this)
pure virtual

Definition at line 103 of file base_functional.f90.

◆ get_log_headers()

procedure, pass(this) base_functional::base_functional_t::get_log_headers ( class(base_functional_t), intent(in)  this,
character(len=*), dimension(:), intent(out)  headers 
)
Parameters
[in]thisThe functional object.
[out]headersHeader labels for each log entry.

Definition at line 118 of file base_functional.f90.

◆ get_log_size()

procedure, pass(this) base_functional::base_functional_t::get_log_size ( class(base_functional_t), intent(in)  this)
Parameters
[in]thisThe functional object.
Returns
n Number of log entries.

Definition at line 116 of file base_functional.f90.

◆ get_log_values()

procedure, pass(this) base_functional::base_functional_t::get_log_values ( class(base_functional_t), intent(in)  this,
real(kind=rp), dimension(:), intent(out)  values 
)
Parameters
[in]thisThe functional object.
[out]valuesValues corresponding to the log headers.

Definition at line 120 of file base_functional.f90.

◆ get_sensitivity()

procedure, pass(this) base_functional::base_functional_t::get_sensitivity ( class(base_functional_t), intent(in)  this,
type(vector_t), intent(inout)  sensitivity 
)

Definition at line 114 of file base_functional.f90.

◆ get_value()

procedure, pass(this) base_functional::base_functional_t::get_value ( class(base_functional_t), intent(in)  this)

Definition at line 112 of file base_functional.f90.

◆ init() [1/2]

generic base_functional::base_functional_t::init ( class(base_functional_t), intent(inout)  this,
type(json_file), intent(inout)  json,
class(design_t), intent(in)  design 
)

Definition at line 96 of file base_functional.f90.

◆ init() [2/2]

generic base_functional::base_functional_t::init ( class(base_functional_t), intent(inout)  this,
type(json_file), intent(inout)  json,
class(design_t), intent(in)  design,
type(simulation_t), intent(inout), target  simulation 
)

Definition at line 96 of file base_functional.f90.

◆ init_json()

procedure, pass(this) base_functional::base_functional_t::init_json ( class(base_functional_t), intent(inout)  this,
type(json_file), intent(inout)  json,
class(design_t), intent(in)  design 
)

Definition at line 99 of file base_functional.f90.

◆ init_json_sim()

procedure, pass(this) base_functional::base_functional_t::init_json_sim ( class(base_functional_t), intent(inout)  this,
type(json_file), intent(inout)  json,
class(design_t), intent(in)  design,
type(simulation_t), intent(inout), target  simulation 
)

Definition at line 101 of file base_functional.f90.

◆ reset_sensitivity()

procedure, pass(this) base_functional::base_functional_t::reset_sensitivity ( class(base_functional_t), intent(inout)  this)

Definition at line 124 of file base_functional.f90.

◆ reset_value()

procedure, pass(this) base_functional::base_functional_t::reset_value ( class(base_functional_t), intent(inout)  this)

Definition at line 122 of file base_functional.f90.

◆ update_sensitivity()

procedure(functional_update_sensitivity), deferred, pass base_functional::base_functional_t::update_sensitivity ( class(base_functional_t), intent(inout)  this,
class(design_t), intent(in)  design 
)
pure virtual

Definition at line 108 of file base_functional.f90.

◆ update_value()

procedure(functional_update_value), deferred, pass base_functional::base_functional_t::update_value ( class(base_functional_t), intent(inout)  this,
class(design_t), intent(in)  design 
)
pure virtual

Definition at line 106 of file base_functional.f90.

Member Data Documentation

◆ end_time

real(kind=dp) base_functional::base_functional_t::end_time = huge(0.0_dp)

Definition at line 82 of file base_functional.f90.

◆ has_mask

logical base_functional::base_functional_t::has_mask = .false.

Definition at line 71 of file base_functional.f90.

◆ mask

class(point_zone_t), pointer base_functional::base_functional_t::mask => null()

Definition at line 73 of file base_functional.f90.

◆ name

character(len=25) base_functional::base_functional_t::name = ""

Definition at line 64 of file base_functional.f90.

◆ sensitivity

type(vector_t) base_functional::base_functional_t::sensitivity

Definition at line 69 of file base_functional.f90.

◆ sensitivity_weight

real(kind=xp) base_functional::base_functional_t::sensitivity_weight = 0.0_xp

Definition at line 88 of file base_functional.f90.

◆ start_time

real(kind=dp) base_functional::base_functional_t::start_time = 0.0_dp

Definition at line 80 of file base_functional.f90.

◆ value

real(kind=rp) base_functional::base_functional_t::value = 0.0_dp

Definition at line 67 of file base_functional.f90.

◆ value_weight

real(kind=xp) base_functional::base_functional_t::value_weight = 0.0_xp

Definition at line 85 of file base_functional.f90.


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