Neko-TOP
A portable framework for high-order spectral element flow toplogy optimization.
Loading...
Searching...
No Matches
RAMP_mapping_cpu.f90
Go to the documentation of this file.
1
34!
37 use num_types, only: rp
38 implicit none
39 private
40
43
44contains
45
53 subroutine convex_down_ramp_mapping_apply_cpu(f_min, f_max, q, X_out, X_in, n)
54 integer, intent(in) :: n
55 real(kind=rp), intent(in) :: f_min, f_max, q
56 real(kind=rp), dimension(n), intent(out) :: x_out
57 real(kind=rp), dimension(n), intent(in) :: x_in
58
59 x_out = convex_down_ramp_mapping_kernel(f_min, f_max, q, x_in)
60
62
71 subroutine convex_down_ramp_mapping_apply_backward_cpu(f_min, f_max, q, &
72 sens_out, sens_in, X_in, n)
73 integer, intent(in) :: n
74 real(kind=rp), intent(in) :: f_min, f_max, q
75 real(kind=rp), dimension(n), intent(out) :: sens_out
76 real(kind=rp), dimension(n), intent(in) :: sens_in
77 real(kind=rp), dimension(n), intent(in) :: x_in
78
79 sens_out = convex_down_ramp_mapping_backward_kernel(f_min, f_max, q, &
80 sens_in, x_in)
81
83
90 elemental function convex_down_ramp_mapping_kernel(f_min, f_max, q, X_in) &
91 result(x_out)
92 real(kind=rp), intent(in) :: f_min, f_max, q
93 real(kind=rp), intent(in) :: x_in
94 real(kind=rp) :: x_out
95
96 x_out = f_min + (f_max - f_min) * x_in / (1.0_rp + q * (1.0_rp - x_in))
97
98 end function convex_down_ramp_mapping_kernel
99
107 elemental function convex_down_ramp_mapping_backward_kernel(f_min, f_max, q, &
108 sens_in, X_in) result(sens_out)
109 real(kind=rp), intent(in) :: f_min, f_max, q
110 real(kind=rp), intent(in) :: sens_in, x_in
111 real(kind=rp) :: sens_out
112
113 sens_out = sens_in * (f_max - f_min) * (q + 1.0_rp) / &
114 ((1.0_rp - q * (x_in - 1.0_rp))**2)
115
116 end function convex_down_ramp_mapping_backward_kernel
117
118end module ramp_mapping_cpu
CPU backend for RAMP mapping operations.
subroutine, public convex_down_ramp_mapping_apply_backward_cpu(f_min, f_max, q, sens_out, sens_in, x_in, n)
Apply convex-down RAMP chain rule on CPU.
subroutine, public convex_down_ramp_mapping_apply_cpu(f_min, f_max, q, x_out, x_in, n)
Apply convex-down RAMP forward mapping on CPU.