39 use num_types,
only: rp
40 use point_zone_registry,
only: neko_point_zone_registry
41 use json_module,
only: json_file
52 real(kind=rp) :: weight = 1.0_rp
59 procedure, pass(this) :: free_base => objective_free_base
65 class(objective_t),
allocatable :: objective
67 procedure, pass(this) :: free => objective_wrapper_free
75 module subroutine objective_factory(object, json,
design, simulation)
76 class(objective_t),
allocatable,
intent(inout) :: object
77 type(json_file),
intent(inout) :: json
79 type(
simulation_t),
target,
optional,
intent(inout) :: simulation
80 end subroutine objective_factory
94 subroutine objective_init_base(this, name, design_size, weight, mask_name)
95 class(objective_t),
intent(inout) :: this
96 character(len=*),
intent(in) :: name
97 integer,
intent(in) :: design_size
98 real(kind=rp),
intent(in) :: weight
99 character(len=*),
intent(in),
optional :: mask_name
103 call this%sensitivity%init(design_size)
107 this%has_mask = .false.
108 if (trim(mask_name) .ne.
"")
then
109 this%has_mask = .true.
110 this%mask => neko_point_zone_registry%get_point_zone(mask_name)
113 end subroutine objective_init_base
116 subroutine objective_free_base(this)
117 class(objective_t),
target,
intent(inout) :: this
120 call this%sensitivity%free()
122 this%has_mask = .false.
123 if (
associated(this%mask))
nullify(this%mask)
125 end subroutine objective_free_base
131 subroutine objective_wrapper_free(this)
132 class(objective_wrapper_t),
intent(inout) :: this
133 if (
allocated(this%objective))
then
134 call this%objective%free()
135 deallocate(this%objective)
137 end subroutine objective_wrapper_free
Defines the abstract the base_functional_t type.
Implements the objective_t type.
subroutine objective_init_base(this, name, design_size, weight, mask_name)
Factory function interface.
Implements the steady_problem_t type.
The base functional type.
The abstract objective type.
Wrapper for objectives for use in lists.