Neko-TOP
A portable framework for high-order spectral element flow toplogy optimization.
Loading...
Searching...
No Matches
neko_top_source_terms.f90
1
34
36submodule(neko_top) neko_top_source_terms
37 use source_term, only: source_term_t, source_term_allocate, &
38 register_source_term
39
40 ! Our user-defined source terms
49
50contains
51
53 module subroutine register_source_terms()
54 procedure(source_term_allocate), pointer :: adjoint_lube
55 procedure(source_term_allocate), pointer :: adjoint_minimum_dissipation
56 procedure(source_term_allocate), pointer :: adjoint_mixing_scalar
57 procedure(source_term_allocate), pointer :: adjoint_scalar_convection
58 procedure(source_term_allocate), pointer :: simple_brinkman
59
60 ! Assign the pointers
61 adjoint_lube => &
62 adjoint_lube_source_term_allocate
63 adjoint_minimum_dissipation => &
64 adjoint_minimum_dissipation_source_term_allocate
65 adjoint_mixing_scalar => &
66 adjoint_mixing_scalar_source_term_allocate
67 adjoint_scalar_convection => &
68 adjoint_scalar_convection_source_term_allocate
69 simple_brinkman => &
70 simple_brinkman_source_term_allocate
71
72 ! Register the source terms
73 call register_source_term('adjoint_lube', &
74 adjoint_lube)
75 call register_source_term('adjoint_minimum_dissipation', &
76 adjoint_minimum_dissipation)
77 call register_source_term('adjoint_mixing_scalar', &
78 adjoint_mixing_scalar)
79 call register_source_term('adjoint_scalar_convection', &
80 adjoint_scalar_convection)
81 call register_source_term('simple_brinkman', &
82 simple_brinkman)
83 end subroutine register_source_terms
84
85 ! ========================================================================== !
86 ! Definitions of the source term allocators
87
89 subroutine adjoint_lube_source_term_allocate(obj)
90 class(source_term_t), allocatable, intent(inout) :: obj
91 allocate(adjoint_lube_source_term_t::obj)
92 end subroutine adjoint_lube_source_term_allocate
93
95 subroutine adjoint_minimum_dissipation_source_term_allocate(obj)
96 class(source_term_t), allocatable, intent(inout) :: obj
98 end subroutine adjoint_minimum_dissipation_source_term_allocate
99
101 subroutine adjoint_mixing_scalar_source_term_allocate(obj)
102 class(source_term_t), allocatable, intent(inout) :: obj
104 end subroutine adjoint_mixing_scalar_source_term_allocate
105
107 subroutine adjoint_scalar_convection_source_term_allocate(obj)
108 class(source_term_t), allocatable, intent(inout) :: obj
110 end subroutine adjoint_scalar_convection_source_term_allocate
111
113 subroutine simple_brinkman_source_term_allocate(obj)
114 class(source_term_t), allocatable, intent(inout) :: obj
115 allocate(simple_brinkman_source_term_t::obj)
116 end subroutine simple_brinkman_source_term_allocate
117
118end submodule neko_top_source_terms
Implements the adjoint_lube_source_term_t type.
Implements the adjoint_minimum_dissipation_source_term_t type.
Implements the adjoint_mixing_scalar_source_term type.
Implements the adjoint_scalar_convection_source_term type.
Implements the simple_brinkman_source_term_t type.
A adjoint source term corresponding to an objective of.