Neko-TOP
A portable framework for high-order spectral element flow toplogy optimization.
|
Type encapsulating advection routines with dealiasing. More...
Public Member Functions | |
procedure, pass(this) | compute_linear (this, vx, vy, vz, vxb, vyb, vzb, fx, fy, fz, xh, coef, n) |
Add the linearized advection term for the fluid, i.e. \(u' \cdot \nabla \bar{U} + \bar{U} \cdot \nabla u' \), to the RHS. | |
procedure, pass(this) | compute_adjoint (this, vx, vy, vz, vxb, vyb, vzb, fx, fy, fz, xh, coef, n) |
Add the adjoint advection term for the fluid in weak form, i.e. \( \int_\Omega v \cdot u' (\nabla \bar{U})^T u^\dagger d\Omega
+ \int_\Omega \nabla v \cdot (\bar{U} \otimes u^\dagger) d \Omega \), to the RHS. | |
procedure, pass(this) | init (this, lxd, coef) |
Constructor. | |
procedure, pass(this) | free (this) |
Destructor. | |
procedure(compute_adv_lin), deferred, pass | compute_linear (this, vx, vy, vz, vxb, vyb, vzb, fx, fy, fz, xh, coef, n) |
procedure(compute_adv_lin), deferred, pass | compute_adjoint (this, vx, vy, vz, vxb, vyb, vzb, fx, fy, fz, xh, coef, n) |
procedure(advection_adjoint_free), deferred, pass | free (this) |
Public Attributes | |
type(coef_t) | coef_gl |
Coeffs of the higher-order space. | |
type(coef_t), pointer | coef_gll |
Coeffs of the original space in the simulation. | |
type(interpolator_t) | gll_to_gl |
Interpolator between the original and higher-order spaces. | |
type(space_t) | xh_gl |
The additional higher-order space used in dealiasing. | |
type(space_t), pointer | xh_gll |
The original space used in the simulation. | |
real(kind=rp), dimension(:), allocatable | temp |
real(kind=rp), dimension(:), allocatable | tbf |
real(kind=rp), dimension(:), allocatable | tx |
Temporary arrays. | |
real(kind=rp), dimension(:), allocatable | ty |
real(kind=rp), dimension(:), allocatable | tz |
real(kind=rp), dimension(:), allocatable | vr |
real(kind=rp), dimension(:), allocatable | vs |
real(kind=rp), dimension(:), allocatable | vt |
type(c_ptr) | temp_d = C_NULL_PTR |
Device pointer for temp | |
type(c_ptr) | tbf_d = C_NULL_PTR |
Device pointer for tbf | |
type(c_ptr) | tx_d = C_NULL_PTR |
Device pointer for u on GL. | |
type(c_ptr) | ty_d = C_NULL_PTR |
Device pointer for v on GL. | |
type(c_ptr) | tz_d = C_NULL_PTR |
Device pointer for w on GL. | |
type(c_ptr) | vr_d = C_NULL_PTR |
Device pointer for vr | |
type(c_ptr) | vs_d = C_NULL_PTR |
Device pointer for vs | |
type(c_ptr) | vt_d = C_NULL_PTR |
Device pointer for vt | |
real(kind=rp), dimension(:), allocatable | txb |
real(kind=rp), dimension(:), allocatable | tyb |
real(kind=rp), dimension(:), allocatable | tzb |
type(c_ptr) | txb_d = C_NULL_PTR |
Device pointer for Ub on GL. | |
type(c_ptr) | tyb_d = C_NULL_PTR |
Device pointer for Vb on GL. | |
type(c_ptr) | tzb_d = C_NULL_PTR |
Device pointer for Wb on GL. | |
real(kind=rp), dimension(:), allocatable | duxb |
real(kind=rp), dimension(:), allocatable | duyb |
real(kind=rp), dimension(:), allocatable | duzb |
real(kind=rp), dimension(:), allocatable | dvxb |
real(kind=rp), dimension(:), allocatable | dvyb |
real(kind=rp), dimension(:), allocatable | dvzb |
real(kind=rp), dimension(:), allocatable | dwxb |
real(kind=rp), dimension(:), allocatable | dwyb |
real(kind=rp), dimension(:), allocatable | dwzb |
type(c_ptr) | duxb_d = C_NULL_PTR |
Device pointer for dUb/dx | |
type(c_ptr) | duyb_d = C_NULL_PTR |
Device pointer for dUb/dy | |
type(c_ptr) | duzb_d = C_NULL_PTR |
Device pointer for dUb/dz | |
type(c_ptr) | dvxb_d = C_NULL_PTR |
Device pointer for dVb/dx | |
type(c_ptr) | dvyb_d = C_NULL_PTR |
Device pointer for dVb/dy | |
type(c_ptr) | dvzb_d = C_NULL_PTR |
Device pointer for dVb/dz | |
type(c_ptr) | dwxb_d = C_NULL_PTR |
Device pointer for dWb/dx | |
type(c_ptr) | dwyb_d = C_NULL_PTR |
Device pointer for dWb/dy | |
type(c_ptr) | dwzb_d = C_NULL_PTR |
Device pointer for dWb/dz | |
Definition at line 52 of file adv_adjoint_dealias.f90.
procedure, pass(this) adv_lin_dealias::adv_lin_dealias_t::compute_adjoint | ( | class(adv_lin_dealias_t), intent(inout) | this, |
type(field_t), intent(inout) | vx, | ||
type(field_t), intent(inout) | vy, | ||
type(field_t), intent(inout) | vz, | ||
type(field_t), intent(inout) | vxb, | ||
type(field_t), intent(inout) | vyb, | ||
type(field_t), intent(inout) | vzb, | ||
type(field_t), intent(inout) | fx, | ||
type(field_t), intent(inout) | fy, | ||
type(field_t), intent(inout) | fz, | ||
type(space_t), intent(inout) | xh, | ||
type(coef_t), intent(inout) | coef, | ||
integer, intent(in) | n | ||
) |
vx | The x component of adjoint velocity. |
vy | The y component of adjoint velocity. |
vz | The z component of adjoint velocity. |
vxb | The x component of baseflow. |
vyb | The y component of baseflow. |
vzb | The z component of baseflow. |
fx | The x component of source term. |
fy | The y component of source term. |
fz | The z component of source term. |
Xh | The function space. |
coef | The coefficients of the (Xh, mesh) pair. |
n | Typically the size of the mesh. |
Definition at line 124 of file adv_adjoint_dealias.f90.
|
pure virtualinherited |
Definition at line 46 of file advection_adjoint.f90.
procedure, pass(this) adv_lin_dealias::adv_lin_dealias_t::compute_linear | ( | class(adv_lin_dealias_t), intent(inout) | this, |
type(field_t), intent(inout) | vx, | ||
type(field_t), intent(inout) | vy, | ||
type(field_t), intent(inout) | vz, | ||
type(field_t), intent(inout) | vxb, | ||
type(field_t), intent(inout) | vyb, | ||
type(field_t), intent(inout) | vzb, | ||
type(field_t), intent(inout) | fx, | ||
type(field_t), intent(inout) | fy, | ||
type(field_t), intent(inout) | fz, | ||
type(space_t), intent(inout) | xh, | ||
type(coef_t), intent(inout) | coef, | ||
integer, intent(in) | n | ||
) |
vx | The x component of perturbed velocity. |
vy | The y component of perturbed velocity. |
vz | The z component of perturbed velocity. |
vxb | The x component of baseflow. |
vyb | The y component of baseflow. |
vzb | The z component of baseflow. |
fx | The x component of source term. |
fy | The y component of source term. |
fz | The z component of source term. |
Xh | The function space. |
coef | The coefficients of the (Xh, mesh) pair. |
n | Typically the size of the mesh. |
Definition at line 118 of file adv_adjoint_dealias.f90.
|
pure virtualinherited |
Definition at line 45 of file advection_adjoint.f90.
procedure, pass(this) adv_lin_dealias::adv_lin_dealias_t::free | ( | class(adv_lin_dealias_t), intent(inout) | this | ) |
Definition at line 129 of file adv_adjoint_dealias.f90.
|
pure virtualinherited |
Definition at line 49 of file advection_adjoint.f90.
procedure, pass(this) adv_lin_dealias::adv_lin_dealias_t::init | ( | class(adv_lin_dealias_t), intent(inout), target | this, |
integer, intent(in) | lxd, | ||
type(coef_t), intent(inout), target | coef | ||
) |
lxd | The polynomial order of the space used in the dealiasing. |
coef | The coefficients of the (space, mesh) pair. |
Definition at line 127 of file adv_adjoint_dealias.f90.
type(coef_t) adv_lin_dealias::adv_lin_dealias_t::coef_gl |
Definition at line 54 of file adv_adjoint_dealias.f90.
Definition at line 56 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::duxb |
Definition at line 92 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::duxb_d = C_NULL_PTR |
Definition at line 96 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::duyb |
Definition at line 92 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::duyb_d = C_NULL_PTR |
Definition at line 98 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::duzb |
Definition at line 92 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::duzb_d = C_NULL_PTR |
Definition at line 100 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::dvxb |
Definition at line 93 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::dvxb_d = C_NULL_PTR |
Definition at line 102 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::dvyb |
Definition at line 93 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::dvyb_d = C_NULL_PTR |
Definition at line 104 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::dvzb |
Definition at line 93 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::dvzb_d = C_NULL_PTR |
Definition at line 106 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::dwxb |
Definition at line 94 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::dwxb_d = C_NULL_PTR |
Definition at line 108 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::dwyb |
Definition at line 94 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::dwyb_d = C_NULL_PTR |
Definition at line 110 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::dwzb |
Definition at line 94 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::dwzb_d = C_NULL_PTR |
Definition at line 112 of file adv_adjoint_dealias.f90.
type(interpolator_t) adv_lin_dealias::adv_lin_dealias_t::gll_to_gl |
Definition at line 58 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::tbf |
Definition at line 63 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::tbf_d = C_NULL_PTR |
Definition at line 70 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::temp |
Definition at line 63 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::temp_d = C_NULL_PTR |
Definition at line 68 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::tx |
Definition at line 65 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::tx_d = C_NULL_PTR |
Definition at line 72 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::txb |
Definition at line 84 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::txb_d = C_NULL_PTR |
Definition at line 86 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::ty |
Definition at line 65 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::ty_d = C_NULL_PTR |
Definition at line 74 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::tyb |
Definition at line 84 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::tyb_d = C_NULL_PTR |
Definition at line 88 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::tz |
Definition at line 65 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::tz_d = C_NULL_PTR |
Definition at line 76 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::tzb |
Definition at line 84 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::tzb_d = C_NULL_PTR |
Definition at line 90 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::vr |
Definition at line 66 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::vr_d = C_NULL_PTR |
Definition at line 78 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::vs |
Definition at line 66 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::vs_d = C_NULL_PTR |
Definition at line 80 of file adv_adjoint_dealias.f90.
real(kind=rp), dimension(:), allocatable adv_lin_dealias::adv_lin_dealias_t::vt |
Definition at line 66 of file adv_adjoint_dealias.f90.
type(c_ptr) adv_lin_dealias::adv_lin_dealias_t::vt_d = C_NULL_PTR |
Definition at line 82 of file adv_adjoint_dealias.f90.
type(space_t) adv_lin_dealias::adv_lin_dealias_t::xh_gl |
Definition at line 60 of file adv_adjoint_dealias.f90.
Definition at line 62 of file adv_adjoint_dealias.f90.