39 use num_types,
only: rp
40 use point_zone_registry,
only: neko_point_zone_registry
41 use json_module,
only: json_file
57 procedure, pass(this) :: free_base => constraint_free_base
63 class(constraint_t),
allocatable :: constraint
65 procedure, pass(this) :: free => constraint_wrapper_free
73 module subroutine constraint_factory(object, json,
design, simulation)
74 class(constraint_t),
allocatable,
intent(inout) :: object
75 type(json_file),
intent(inout) :: json
77 type(
simulation_t),
target,
optional,
intent(inout) :: simulation
78 end subroutine constraint_factory
91 subroutine constraint_init_base(this, name, design_size, mask_name)
92 class(constraint_t),
intent(inout) :: this
93 character(len=*),
intent(in) :: name
94 integer,
intent(in) :: design_size
95 character(len=*),
intent(in),
optional :: mask_name
99 call this%sensitivity%init(design_size)
101 this%has_mask = .false.
102 if (trim(mask_name) .ne.
"")
then
103 this%has_mask = .true.
104 this%mask => neko_point_zone_registry%get_point_zone(mask_name)
107 end subroutine constraint_init_base
110 subroutine constraint_free_base(this)
111 class(constraint_t),
target,
intent(inout) :: this
114 call this%sensitivity%free()
115 this%has_mask = .false.
116 if (
associated(this%mask))
nullify(this%mask)
118 end subroutine constraint_free_base
124 subroutine constraint_wrapper_free(this)
125 class(constraint_wrapper_t),
intent(inout) :: this
126 if (
allocated(this%constraint))
then
127 call this%constraint%free()
128 deallocate(this%constraint)
130 end subroutine constraint_wrapper_free
Defines the abstract the base_functional_t type.
Implements the constraint_t type.
subroutine constraint_init_base(this, name, design_size, mask_name)
Factory function interface.
Implements the steady_problem_t type.
The base functional type.
The abstract constraint type.
Wrapper for constraints for use in lists.