|
Neko 1.99.9
A portable framework for high-order spectral element flow simulations
|
Defines overset interface vector boundary conditions.
Data Types | |
| type | overset_interface_vector_t |
Extension of the user defined dirichlet condition overset_interface More... | |
Functions/Subroutines | |
| subroutine | overset_interface_vector_init (this, coef, json) |
| Constructor. | |
| subroutine | overset_interface_vector_init_from_components (this, coef, tol, pad, log, relaxation) |
| Constructor from components. | |
| subroutine | overset_interface_vector_free (this) |
Destructor. Currently unused as is, all field_dirichlet attributes are freed in fluid_scheme_incompressible::free. | |
| subroutine | overset_interface_vector_restart (this, u, v, w, ulag, vlag, wlag) |
| Restore interface history from checkpointed solution fields. Values are inserted from oldest to newest, leaving the current accepted value in the base interface vectors. The next regular update shifts that value into the first lag position before extrapolation. This must be called after the fluid restart has restored continuity of interpolated checkpoint fields. | |
| subroutine | overset_interface_vector_apply_scalar (this, x, n, time, strong) |
| No-op apply scalar. | |
| subroutine | overset_interface_vector_apply_scalar_dev (this, x_d, time, strong, strm) |
| No-op apply scalar (device). | |
| subroutine | overset_interface_vector_apply_vector (this, x, y, z, n, time, strong) |
| Apply the boundary condition to a vector field. | |
| subroutine | overset_interface_vector_apply_vector_dev (this, x_d, y_d, z_d, time, strong, strm) |
| Apply the boundary condition to a vector field on the device. | |
| subroutine | overset_interface_vector_finalize (this) |
| Finalize by building the mask arrays and propagating to underlying bcs. | |
| subroutine | overset_interface_update (this, time) |
| Update the values at the interfaces. | |
| subroutine | relax_interface_values_ (this) |
Under-relax a Schwarz correction using the previously applied interface. For each velocity component, blend the new donor value g_new with the preceding Schwarz iterate g_old as g = relaxation * g_new + (1 - relaxation) * g_old. The caller skips this routine on the first pass of every physical timestep, preserving the temporal accuracy of the IEXT prediction. | |
| subroutine | log_interface_error_ (this, u, v, w) |
| Log interface RMSE for each vector component. | |
| subroutine | build_masks_ (this) |
| Build masks. | |
| subroutine | gather_interface_dofs_ (this) |
| Gather interface dofs. | |
| subroutine | setup_interpolator_ (this) |
| Set up the interpolator. | |
|
private |
Create a new mask_t based on the 0-mask for the overset boundary points
Create a mask that marks the full elements containing overset boundary points
Create a domain mask that exclude the boundary elements.
Definition at line 729 of file overset_interface_vector.f90.

|
private |
Gather the coordinates to the vectors
synchronize if on device
Definition at line 782 of file overset_interface_vector.f90.

|
private |
Compute the L2 norm (RMSE in reality) of the error at the interface points
Log the errors
Definition at line 686 of file overset_interface_vector.f90.

|
private |
Change the coordinates of the interface if set up by the user
Update in sub-step 1 should be an extrapolation of the boundary values
Find points if needed - later make sure only in first substep
Interpolate
If this is the first substep, then we do the extrapolation
Scatter them to the bc fields
Definition at line 528 of file overset_interface_vector.f90.

|
private |
| x | Field onto which to copy the values (e.g. u,v,w,p or s). |
| n | Size of the array x. |
| t | Current time state. |
Definition at line 356 of file overset_interface_vector.f90.
|
private |
| x_d | Device pointer to the field onto which to copy the values. |
| time | The current time state. |
Definition at line 371 of file overset_interface_vector.f90.
|
private |
| x | x-component of the field onto which to apply the values. |
| y | y-component of the field onto which to apply the values. |
| z | z-component of the field onto which to apply the values. |
| n | Size of the x, y and z arrays. |
| time | The current time state. |
TODO: Change the mask to mask_t
Definition at line 390 of file overset_interface_vector.f90.

|
private |
| x | x-component of the field onto which to apply the values. |
| y | y-component of the field onto which to apply the values. |
| z | z-component of the field onto which to apply the values. |
| time | The current time state. |
| strm | Device stream |
Definition at line 432 of file overset_interface_vector.f90.

|
private |
From field_dirichlet_vector_t
Build heper masks
Gather the interface boundary points
Initialize the interpolator and find the points
Keep a vector list that holds the values of interface fields
Fill the vector lists
Initialize the lag arrays
Definition at line 471 of file overset_interface_vector.f90.
|
private |
Definition at line 267 of file overset_interface_vector.f90.
| subroutine overset_interface_vector::overset_interface_vector_init | ( | class(overset_interface_vector_t), intent(inout), target | this, |
| type(coef_t), intent(in), target | coef, | ||
| type(json_file), intent(inout) | json | ||
| ) |
| [in] | coef | The SEM coefficients. |
| [in,out] | json | The JSON object configuring the boundary condition. |
Parse the interpolation settings
Definition at line 168 of file overset_interface_vector.f90.
|
private |
| [in] | coef | The SEM coefficients. |
| [in] | tol | The tolerance for the interpolation. |
| [in] | pad | The padding for the interpolation. |
| [in] | log | Whether to log the interpolation. |
| [in] | relaxation | Under-relaxation factor for interface updates. |
This initializes coef, dof, msh, and Xh pointers
Set the interpolation settings
init coord vectors
Copy the dof coordinates to the internal vectors keep this to later check if the coordinates have changed.
Definition at line 200 of file overset_interface_vector.f90.

|
private |
Definition at line 309 of file overset_interface_vector.f90.

|
private |
Definition at line 646 of file overset_interface_vector.f90.

|
private |
Initialize the interpolator with the mask and the dof coords
Find the interface points on the global domain
Definition at line 807 of file overset_interface_vector.f90.