Implements symmetry_aligned_t.
|
| subroutine | symmetry_aligned_init (this, coef, json) |
| | Construct the boundary condition from JSON.
|
| |
| subroutine | symmetry_aligned_init_from_components (this, coef) |
| | Construct the boundary condition from its components.
|
| |
| subroutine | symmetry_aligned_finalize (this) |
| | Finalize the boundary condition.
|
| |
| subroutine | symmetry_aligned_get_normal_axis (this, sx, sy, sz, facet, el) |
| | Estimate which global axis is normal to a marked facet.
|
| |
| subroutine | symmetry_aligned_apply_scalar (this, x, n, time, strong) |
| | No-op scalar application.
|
| |
| subroutine | symmetry_aligned_apply_vector (this, x, y, z, n, time, strong) |
| | Remove the normal component on the CPU.
|
| |
| subroutine | symmetry_aligned_apply_scalar_dev (this, x_d, time, strong, strm) |
| | No-op scalar application on the device.
|
| |
| subroutine | symmetry_aligned_apply_vector_dev (this, x_d, y_d, z_d, time, strong, strm) |
| | Remove the normal component on the device.
|
| |
| subroutine | symmetry_aligned_free (this) |
| | Free the boundary condition and its nested storage.
|
| |
◆ symmetry_aligned_apply_scalar()
| subroutine symmetry_aligned::symmetry_aligned_apply_scalar |
( |
class(symmetry_aligned_t), intent(inout) |
this, |
|
|
real(kind=rp), dimension(n), intent(inout) |
x, |
|
|
integer, intent(in) |
n, |
|
|
type(time_state_t), intent(in), optional |
time, |
|
|
logical, intent(in), optional |
strong |
|
) |
| |
|
private |
- Parameters
-
| x | Scalar field values. |
| n | Number of entries in x. |
| time | Current time state. |
| strong | Whether to apply the strong form. |
Definition at line 196 of file symmetry_aligned.f90.
◆ symmetry_aligned_apply_scalar_dev()
| subroutine symmetry_aligned::symmetry_aligned_apply_scalar_dev |
( |
class(symmetry_aligned_t), intent(inout), target |
this, |
|
|
type(c_ptr), intent(inout) |
x_d, |
|
|
type(time_state_t), intent(in), optional |
time, |
|
|
logical, intent(in), optional |
strong, |
|
|
type(c_ptr), intent(inout) |
strm |
|
) |
| |
|
private |
- Parameters
-
| x_d | Device pointer to the scalar field. |
| time | Current time state. |
| strong | Whether to apply the strong form. |
| strm | Device stream. |
Definition at line 241 of file symmetry_aligned.f90.
◆ symmetry_aligned_apply_vector()
| subroutine symmetry_aligned::symmetry_aligned_apply_vector |
( |
class(symmetry_aligned_t), intent(inout) |
this, |
|
|
real(kind=rp), dimension(n), intent(inout) |
x, |
|
|
real(kind=rp), dimension(n), intent(inout) |
y, |
|
|
real(kind=rp), dimension(n), intent(inout) |
z, |
|
|
integer, intent(in) |
n, |
|
|
type(time_state_t), intent(in), optional |
time, |
|
|
logical, intent(in), optional |
strong |
|
) |
| |
|
private |
For axis-aligned facets this reduces to applying the nested zero-Dirichlet condition to the corresponding global component.
- Parameters
-
| x | x-component of the field. |
| y | y-component of the field. |
| z | z-component of the field. |
| n | Number of entries in each component array. |
| time | Current time state. |
| strong | Whether to apply the strong form. |
Definition at line 213 of file symmetry_aligned.f90.
◆ symmetry_aligned_apply_vector_dev()
| subroutine symmetry_aligned::symmetry_aligned_apply_vector_dev |
( |
class(symmetry_aligned_t), intent(inout), target |
this, |
|
|
type(c_ptr), intent(inout) |
x_d, |
|
|
type(c_ptr), intent(inout) |
y_d, |
|
|
type(c_ptr), intent(inout) |
z_d, |
|
|
type(time_state_t), intent(in), optional |
time, |
|
|
logical, intent(in), optional |
strong, |
|
|
type(c_ptr), intent(inout) |
strm |
|
) |
| |
|
private |
Uses the component masks of the nested zero-Dirichlet boundary conditions corresponding to the axis-aligned facet normals.
- Parameters
-
| x_d | Device pointer to the x-component. |
| y_d | Device pointer to the y-component. |
| z_d | Device pointer to the z-component. |
| time | Current time state. |
| strong | Whether to apply the strong form. |
| strm | Device stream. |
Definition at line 258 of file symmetry_aligned.f90.
◆ symmetry_aligned_finalize()
Detects the normal axis of each marked facet and marks the corresponding nested zero-Dirichlet component boundary condition.
Definition at line 112 of file symmetry_aligned.f90.
◆ symmetry_aligned_free()
◆ symmetry_aligned_get_normal_axis()
| subroutine symmetry_aligned::symmetry_aligned_get_normal_axis |
( |
class(symmetry_aligned_t), intent(inout), target |
this, |
|
|
real(kind=rp), intent(out) |
sx, |
|
|
real(kind=rp), intent(out) |
sy, |
|
|
real(kind=rp), intent(out) |
sz, |
|
|
integer, intent(in) |
facet, |
|
|
integer, intent(in) |
el |
|
) |
| |
|
private |
- Parameters
-
| [out] | sx | Deviation from an x-aligned normal. |
| [out] | sy | Deviation from a y-aligned normal. |
| [out] | sz | Deviation from a z-aligned normal. |
| [in] | facet | Facet id on the reference hex. |
| [in] | el | Element id. |
Definition at line 147 of file symmetry_aligned.f90.
◆ symmetry_aligned_init()
- Parameters
-
| [in] | coef | The SEM coefficients. |
| [in,out] | json | The JSON object configuring the boundary condition. |
Definition at line 86 of file symmetry_aligned.f90.
◆ symmetry_aligned_init_from_components()