Neko-TOP
A portable framework for high-order spectral element flow toplogy optimization.
Loading...
Searching...
No Matches
Borrvall_Petersson_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 borrvall_petersson_mapping_apply_cpu(f_min, f_max, q, X_out, &
54 X_in, n)
55 integer, intent(in) :: n
56 real(kind=rp), intent(in) :: f_min, f_max, q
57 real(kind=rp), dimension(n), intent(out) :: x_out
58 real(kind=rp), dimension(n), intent(in) :: x_in
59
60 x_out = borrvall_petersson_mapping_kernel(f_min, f_max, q, x_in)
61
63
73 sens_out, sens_in, X_in, n)
74 integer, intent(in) :: n
75 real(kind=rp), intent(in) :: f_min, f_max, q
76 real(kind=rp), dimension(n), intent(out) :: sens_out
77 real(kind=rp), dimension(n), intent(in) :: sens_in
78 real(kind=rp), dimension(n), intent(in) :: x_in
79
80 sens_out = borrvall_petersson_mapping_backward_kernel(f_min, f_max, q, &
81 sens_in, x_in)
82
84
91 elemental function borrvall_petersson_mapping_kernel(f_min, f_max, q, X_in) &
92 result(x_out)
93 real(kind=rp), intent(in) :: f_min, f_max, q
94 real(kind=rp), intent(in) :: x_in
95 real(kind=rp) :: x_out
96
97 x_out = f_min + (f_max - f_min) * x_in * (1.0_rp + q) / (x_in + q)
98
99 end function borrvall_petersson_mapping_kernel
100
108 elemental function borrvall_petersson_mapping_backward_kernel(f_min, f_max, &
109 q, sens_in, X_in) result(sens_out)
110 real(kind=rp), intent(in) :: f_min, f_max, q
111 real(kind=rp), intent(in) :: sens_in, x_in
112 real(kind=rp) :: sens_out
113
114 sens_out = sens_in * (f_max - f_min) * (q + 1.0_rp) * q / ((x_in + q)**2)
115
116 end function borrvall_petersson_mapping_backward_kernel
117
CPU backend for Borrvall & Petersson mapping operations.
subroutine, public borrvall_petersson_mapping_apply_backward_cpu(f_min, f_max, q, sens_out, sens_in, x_in, n)
Apply Borrvall & Petersson chain rule on CPU.
subroutine, public borrvall_petersson_mapping_apply_cpu(f_min, f_max, q, x_out, x_in, n)
Apply Borrvall & Petersson forward mapping on CPU.