|
Neko 1.99.9
A portable framework for high-order spectral element flow simulations
|
Base type of compressible fluid formulations. More...


Public Member Functions | |
| procedure, pass(this) | scheme_init (this, msh, lx, params, scheme, user) |
| Constructors. | |
| procedure, pass(this) | scheme_free (this) |
| Destructor for the base type. | |
| procedure, pass(this) | validate (this) |
| Validate that all components are properly allocated. | |
| procedure, pass(this) | compute_cfl (this, dt) |
| Compute the CFL number. | |
| procedure, pass(this) | set_material_properties (this, params, user) |
| Set rho and mu. | |
| procedure, pass(this) | update_material_properties (this, time) |
| Update variable material properties. | |
| procedure, pass(this) | update_physical_flux (this) |
| Refresh the physical-flux switches from the material properties. | |
| procedure, pass(this) | compute_max_wave_speed (this) |
| Compute maximum wave speed. | |
| procedure, pass(this) | log_solver_info (this, params, scheme, lx) |
| Log solver information. | |
| procedure(fluid_scheme_base_init_intrf), deferred, pass | init (this, msh, lx, params, user, chkp) |
| Constructor. | |
| procedure(fluid_scheme_base_free_intrf), deferred, pass | free (this) |
| Destructor. | |
| procedure(fluid_scheme_base_step_intrf), deferred, pass | step (this, time, dt_controller) |
| Advance one step in time. | |
| procedure(fluid_scheme_base_restart_intrf), deferred, pass | restart (this, chkp) |
| Restart from a checkpoint. | |
| procedure(fluid_scheme_setup_bcs_intrf), deferred, pass | setup_bcs (this, user, params) |
| procedure(validate_intrf), deferred, pass | validate (this) |
| Set the user inflow. | |
| procedure(fluid_scheme_base_compute_cfl_intrf), deferred, pass | compute_cfl (this, dt) |
| Compute the CFL number. | |
| procedure(update_material_properties), deferred, pass | update_material_properties (this, time) |
| Set rho and mu. | |
Public Attributes | |
| type(field_t), pointer | m_x => null() |
| The momentum field. | |
| type(field_t), pointer | m_y => null() |
| y-component of Momentum | |
| type(field_t), pointer | m_z => null() |
| z-component of Momentum | |
| type(field_t), pointer | e => null() |
| Total energy. | |
| type(field_t), pointer | temperature => null() |
| Temperature field. | |
| type(field_t), pointer | max_wave_speed => null() |
| Maximum wave speed field. | |
| type(field_t), pointer | artificial_visc => null() |
| Artificial viscosity field (without physical) | |
| type(field_t), pointer | kappa => null() |
| Thermal conductivity. | |
| real(kind=rp) | gamma |
| real(kind=rp) | mu_amax = 0.0_rp |
| Largest magnitude of the dynamic viscosity over the domain. | |
| real(kind=rp) | kappa_amax = 0.0_rp |
| Largest magnitude of the thermal conductivity over the domain. | |
| logical | add_physical_flux = .false. |
| Whether the physical viscous and heat fluxes are evaluated. | |
| logical | add_physical_stress = .false. |
| Whether the physical viscous stress is evaluated. | |
| logical | variable_material_properties = .false. |
| Whether a user routine re-evaluates the material properties every time-step, in which case the switches above have to be refreshed. | |
| integer(kind=i8) | glb_n_points |
| Global number of GLL points for the fluid (not unique) | |
| integer(kind=i8) | glb_unique_points |
| Global number of GLL points for the fluid (unique) | |
| character(len=:), allocatable | name |
| A name that can be used to distinguish this solver in e.g. user routines. | |
| type(space_t) | xh |
| Function space \( X_h \). | |
| type(dofmap_t) | dm_xh |
| Dofmap associated with \( X_h \). | |
| type(gs_t) | gs_xh |
| Gather-scatter associated with \( X_h \). | |
| type(coef_t) | c_xh |
| Coefficients associated with \( X_h \). | |
| type(time_scheme_controller_t), allocatable | ext_bdf |
| type(field_t), pointer | u => null() |
| The velocity field. | |
| type(field_t), pointer | v => null() |
| y-component of Velocity | |
| type(field_t), pointer | w => null() |
| z-component of Velocity | |
| type(field_t), pointer | p => null() |
| Pressure. | |
| type(field_series_t) | ulag |
| type(field_series_t) | vlag |
| type(field_series_t) | wlag |
| fluid field (lag) | |
| type(chkp_t), pointer | chkp => null() |
| Checkpoint. | |
| type(field_t), pointer | f_x => null() |
| X-component of the right-hand side. | |
| type(field_t), pointer | f_y => null() |
| Y-component of the right-hand side. | |
| type(field_t), pointer | f_z => null() |
| Z-component of the right-hand side. | |
| type(bc_list_t) | bcs_prs |
| Boundary conditions. | |
| type(bc_list_t) | bcs_vel |
| type(json_file), pointer | params |
| Parameters. | |
| type(mesh_t), pointer | msh => null() |
| Mesh. | |
| character(len=neko_msh_max_zlbl_len), dimension(:), allocatable | bc_labels |
| Boundary condition labels (if any) | |
| type(field_t), pointer | rho => null() |
| Density field. | |
| type(field_t), pointer | mu => null() |
| The dynamic viscosity. | |
| type(field_list_t) | material_properties |
| A helper that packs material properties to pass to the user routine. | |
| logical | freeze = .false. |
| Is the fluid frozen at the moment. | |
Static Public Attributes | |
| procedure(user_material_properties_intf), pointer, nopass | user_material_properties => null() |
| User material properties routine. | |
Definition at line 68 of file fluid_scheme_compressible.f90.
|
pure virtualinherited |
Definition at line 129 of file fluid_scheme_base.f90.
| procedure, pass(this) fluid_scheme_compressible::fluid_scheme_compressible_t::compute_cfl | ( | class(fluid_scheme_compressible_t), intent(in) | this, |
| real(kind=dp), intent(in) | dt | ||
| ) |
| this | The compressible fluid scheme object |
| dt | Current timestep size |
Definition at line 109 of file fluid_scheme_compressible.f90.
| procedure, pass(this) fluid_scheme_compressible::fluid_scheme_compressible_t::compute_max_wave_speed | ( | class(fluid_scheme_compressible_t), intent(inout) | this | ) |
| this | The compressible fluid scheme object |
Definition at line 121 of file fluid_scheme_compressible.f90.
|
pure virtualinherited |
Definition at line 118 of file fluid_scheme_base.f90.
|
pure virtualinherited |
Definition at line 116 of file fluid_scheme_base.f90.
| procedure, pass(this) fluid_scheme_compressible::fluid_scheme_compressible_t::log_solver_info | ( | class(fluid_scheme_compressible_t), intent(inout) | this, |
| type(json_file), intent(inout) | params, | ||
| character(len=*), intent(in) | scheme, | ||
| integer, intent(in) | lx | ||
| ) |
| this | The compressible fluid scheme object |
| params | JSON configuration parameters |
| scheme | Name of the numerical scheme |
| lx | Polynomial order in x-direction |
Definition at line 124 of file fluid_scheme_compressible.f90.
|
pure virtualinherited |
Definition at line 122 of file fluid_scheme_base.f90.
| procedure, pass(this) fluid_scheme_compressible::fluid_scheme_compressible_t::scheme_free | ( | class(fluid_scheme_compressible_t), intent(inout) | this | ) |
| this | The compressible fluid scheme object to destroy |
Definition at line 104 of file fluid_scheme_compressible.f90.
| procedure, pass(this) fluid_scheme_compressible::fluid_scheme_compressible_t::scheme_init | ( | class(fluid_scheme_compressible_t), intent(inout), target | this, |
| type(mesh_t), intent(inout), target | msh, | ||
| integer, intent(in) | lx, | ||
| type(json_file), intent(inout), target | params, | ||
| character(len=*), intent(in) | scheme, | ||
| type(user_t), intent(in), target | user | ||
| ) |
| this | The compressible fluid scheme object |
| msh | Mesh data structure |
| lx | Polynomial order in x-direction |
| params | JSON configuration parameters |
| scheme | Name of the numerical scheme |
| user | User-defined parameters and functions |
Definition at line 102 of file fluid_scheme_compressible.f90.
| procedure, pass(this) fluid_scheme_compressible::fluid_scheme_compressible_t::set_material_properties | ( | class(fluid_scheme_compressible_t), intent(inout), target | this, |
| type(json_file), intent(inout) | params, | ||
| type(user_t), intent(in), target | user | ||
| ) |
| this | The compressible fluid scheme object |
| params | The case parameter file |
| user | The user interface |
Definition at line 112 of file fluid_scheme_compressible.f90.
|
pure virtualinherited |
Definition at line 124 of file fluid_scheme_base.f90.
|
pure virtualinherited |
Definition at line 120 of file fluid_scheme_base.f90.
|
pure virtualinherited |
Definition at line 132 of file fluid_scheme_base.f90.
| procedure, pass(this) fluid_scheme_compressible::fluid_scheme_compressible_t::update_material_properties | ( | class(fluid_scheme_compressible_t), intent(inout) | this, |
| type(time_state_t), intent(in) | time | ||
| ) |
| this | The compressible fluid scheme object |
| time | The time state |
Definition at line 115 of file fluid_scheme_compressible.f90.
| procedure, pass(this) fluid_scheme_compressible::fluid_scheme_compressible_t::update_physical_flux | ( | class(fluid_scheme_compressible_t), intent(inout) | this | ) |
Decides whether the physical Navier-Stokes viscous and heat fluxes have to be evaluated at all, by testing \( \max_i |\mu_i| \) and \( \max_i |\kappa_i| \) against zero.
On a device backend the reduction runs as a kernel over the device resident arrays. Inspecting the host mirrors mux and kappax instead would be wrong as well as slow: field_cfill, and the device_math routines a user file calls, only write x_d, so the host copies stay at their initial zero and the solver would silently degrade to Euler.
The reduction is global, so all ranks agree on the branch taken even when the viscosity is non-zero on only some of them.
| this | The compressible fluid scheme object |
Definition at line 118 of file fluid_scheme_compressible.f90.
|
pure virtualinherited |
Definition at line 127 of file fluid_scheme_base.f90.
| procedure, pass(this) fluid_scheme_compressible::fluid_scheme_compressible_t::validate | ( | class(fluid_scheme_compressible_t), intent(inout), target | this | ) |
| this | The compressible fluid scheme object |
Definition at line 107 of file fluid_scheme_compressible.f90.
| logical fluid_scheme_compressible::fluid_scheme_compressible_t::add_physical_flux = .false. |
Definition at line 88 of file fluid_scheme_compressible.f90.
| logical fluid_scheme_compressible::fluid_scheme_compressible_t::add_physical_stress = .false. |
Definition at line 90 of file fluid_scheme_compressible.f90.
| type(field_t), pointer fluid_scheme_compressible::fluid_scheme_compressible_t::artificial_visc => null() |
Definition at line 77 of file fluid_scheme_compressible.f90.
|
inherited |
Definition at line 96 of file fluid_scheme_base.f90.
|
inherited |
Definition at line 88 of file fluid_scheme_base.f90.
|
inherited |
Definition at line 90 of file fluid_scheme_base.f90.
|
inherited |
Definition at line 65 of file fluid_scheme_base.f90.
Definition at line 77 of file fluid_scheme_base.f90.
|
inherited |
Definition at line 63 of file fluid_scheme_base.f90.
Definition at line 74 of file fluid_scheme_compressible.f90.
|
inherited |
Definition at line 67 of file fluid_scheme_base.f90.
Definition at line 80 of file fluid_scheme_base.f90.
Definition at line 82 of file fluid_scheme_base.f90.
Definition at line 84 of file fluid_scheme_base.f90.
|
inherited |
Definition at line 108 of file fluid_scheme_base.f90.
| real(kind=rp) fluid_scheme_compressible::fluid_scheme_compressible_t::gamma |
Definition at line 80 of file fluid_scheme_compressible.f90.
| integer(kind=i8) fluid_scheme_compressible::fluid_scheme_compressible_t::glb_n_points |
Definition at line 96 of file fluid_scheme_compressible.f90.
| integer(kind=i8) fluid_scheme_compressible::fluid_scheme_compressible_t::glb_unique_points |
Definition at line 98 of file fluid_scheme_compressible.f90.
|
inherited |
Definition at line 64 of file fluid_scheme_base.f90.
Definition at line 78 of file fluid_scheme_compressible.f90.
| real(kind=rp) fluid_scheme_compressible::fluid_scheme_compressible_t::kappa_amax = 0.0_rp |
Definition at line 85 of file fluid_scheme_compressible.f90.
x-component of Momentum
Definition at line 71 of file fluid_scheme_compressible.f90.
Definition at line 72 of file fluid_scheme_compressible.f90.
Definition at line 73 of file fluid_scheme_compressible.f90.
|
inherited |
Definition at line 105 of file fluid_scheme_base.f90.
| type(field_t), pointer fluid_scheme_compressible::fluid_scheme_compressible_t::max_wave_speed => null() |
Definition at line 76 of file fluid_scheme_compressible.f90.
Definition at line 93 of file fluid_scheme_base.f90.
Definition at line 102 of file fluid_scheme_base.f90.
| real(kind=rp) fluid_scheme_compressible::fluid_scheme_compressible_t::mu_amax = 0.0_rp |
Definition at line 83 of file fluid_scheme_compressible.f90.
|
inherited |
Definition at line 60 of file fluid_scheme_base.f90.
Definition at line 73 of file fluid_scheme_base.f90.
|
inherited |
Definition at line 92 of file fluid_scheme_base.f90.
Definition at line 99 of file fluid_scheme_base.f90.
| type(field_t), pointer fluid_scheme_compressible::fluid_scheme_compressible_t::temperature => null() |
Definition at line 75 of file fluid_scheme_compressible.f90.
x-component of Velocity
Definition at line 70 of file fluid_scheme_base.f90.
|
inherited |
Definition at line 74 of file fluid_scheme_base.f90.
|
staticinherited |
Definition at line 111 of file fluid_scheme_base.f90.
Definition at line 71 of file fluid_scheme_base.f90.
| logical fluid_scheme_compressible::fluid_scheme_compressible_t::variable_material_properties = .false. |
Definition at line 93 of file fluid_scheme_compressible.f90.
|
inherited |
Definition at line 74 of file fluid_scheme_base.f90.
Definition at line 72 of file fluid_scheme_base.f90.
|
inherited |
Definition at line 74 of file fluid_scheme_base.f90.
|
inherited |
Definition at line 62 of file fluid_scheme_base.f90.