Neko 1.99.6
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
lpt::lpt_t Type Reference

Passive Lagrangian particle tracking. More...

Collaboration diagram for lpt::lpt_t:

Public Member Functions

procedure, pass(thisinit (this, json, case)
 Build a mask of elastic wall facets from configured mesh zone ids.
 
procedure, pass(thisfree (this)
 Free all LPT-owned state and reset pointers/flags.
 
procedure, pass(thispreprocess (this, time)
 Advance particle positions and, for inertial particles, velocities.
 
procedure, pass(thiscompute (this, time)
 Refresh particle/fluid coupling after the fluid step and emit output.
 

Public Attributes

character(:), allocatable name
 LPT instance name.
 
type(field_t), pointer u_field => null()
 
type(field_t), pointer v_field => null()
 
type(field_t), pointer w_field => null()
 
type(field_t), pointer mu_fluid => null()
 
type(field_t), pointer rho_fluid => null()
 
type(mesh_t), pointer msh => null()
 
type(dofmap_t), pointer dm_xh => null()
 
type(coef_t), pointer coef => null()
 
integer time_order
 
integer lag_len
 
integer history_len = 0
 
logical inertia = .false.
 
real(kind=rp) nonlinear_coefficient
 
real(kind=rp) nonlinear_exponent
 
logical elastic_wall_enabled = .false.
 
integer, dimension(:), allocatable wall_zone_indices
 
logical, dimension(:, :), allocatable wall_facet_mask
 
type(time_state_tlpt_time
 
logical lpt_time_initialized = .false.
 
type(global_interpolation_tglobal_interp
 
type(lpt_periodic_bc_tperiodic_bc
 
type(lpt_migrate_tmigration
 
type(particles_tparticles
 
type(lpt_output_toutput
 
type(time_based_controller_toutput_controller
 
logical output_enabled = .false.
 
logical log = .true.
 
real(kind=rp) start_time = -huge(0.0_rp)
 

Private Member Functions

procedure, pass(this), private read_particles_json (this, json)
 Read particle data from JSON and initialise particles on rank 0.
 
procedure, pass(this), private read_particles_csv (this, json)
 Read particle data from a CSV file and initialise particles on rank 0.
 
procedure, pass(this), private evaluate_velocity (this, u_fluid, v_fluid, w_fluid)
 Interpolate the carrier velocity at the local particles.
 
procedure, pass(this), private evaluate_acceleration (this, acc_x, acc_y, acc_z, u_fluid, v_fluid, w_fluid)
 Estimate particle acceleration from local carrier-fluid velocity.
 
procedure, pass(this), private sync_time_controller (this, time)
 Build an LPT-local time-step history from the times at which LPT runs.
 
procedure, pass(this), private ode_integrate_ab_3c (this, sol_x, sol_y, sol_z, rhs_x, rhs_y, rhs_z, rhs_xlag, rhs_ylag, rhs_zlag, rhs_xlaglag, rhs_ylaglag, rhs_zlaglag, n)
 Advance a three-component state with variable-step Adams-Bashforth.
 
procedure, pass(this), private update_current_rhs (this)
 Refresh particle RHS values using the current fluid solution.
 
procedure, pass(this), private write_output (this, time)
 Write one trajectory snapshot.
 
procedure, pass(this), private log_status (this)
 Emit a setup summary for the configured LPT instance.
 

Detailed Description

Definition at line 73 of file lpt.f90.

Member Function/Subroutine Documentation

◆ compute()

procedure, pass(this) lpt::lpt_t::compute ( class(lpt_t), intent(inout this,
type(time_state_t), intent(in time 
)
Parameters
timeCurrent simulation time used for output scheduling.

Definition at line 107 of file lpt.f90.

◆ evaluate_acceleration()

procedure, pass(this), private lpt::lpt_t::evaluate_acceleration ( class(lpt_t), intent(inout this,
type(vector_t), intent(inout acc_x,
type(vector_t), intent(inout acc_y,
type(vector_t), intent(inout acc_z,
type(vector_t), intent(in u_fluid,
type(vector_t), intent(in v_fluid,
type(vector_t), intent(in w_fluid 
)
private
Parameters
acc_xParticle acceleration in x.
acc_yParticle acceleration in y.
acc_zParticle acceleration in z.
u_fluidInterpolated x velocity at particle locations.
v_fluidInterpolated y velocity at particle locations.
w_fluidInterpolated z velocity at particle locations.

Definition at line 111 of file lpt.f90.

◆ evaluate_velocity()

procedure, pass(this), private lpt::lpt_t::evaluate_velocity ( class(lpt_t), intent(inout this,
type(vector_t), intent(inout u_fluid,
type(vector_t), intent(inout v_fluid,
type(vector_t), intent(inout w_fluid 
)
private
Parameters
u_fluidInterpolated x velocity at particle locations.
v_fluidInterpolated y velocity at particle locations.
w_fluidInterpolated z velocity at particle locations.

Definition at line 110 of file lpt.f90.

◆ free()

procedure, pass(this) lpt::lpt_t::free ( class(lpt_t), intent(inout this)

Definition at line 105 of file lpt.f90.

◆ init()

procedure, pass(this) lpt::lpt_t::init ( class(lpt_t), intent(inout), target  this,
type(json_file), intent(inout json,
class(case_t), intent(inout), target  case 
)

Reflect particles and histories after elastic wall contact. Construct from JSON. Supported particle input is either a flat coordinates array [x1,y1,z1,x2,y2,z2,...] or a three-column CSV points_file.

Definition at line 104 of file lpt.f90.

◆ log_status()

procedure, pass(this), private lpt::lpt_t::log_status ( class(lpt_t), intent(in this)
private

Definition at line 116 of file lpt.f90.

Here is the call graph for this function:

◆ ode_integrate_ab_3c()

procedure, pass(this), private lpt::lpt_t::ode_integrate_ab_3c ( class(lpt_t), intent(inout this,
type(vector_t), intent(inout sol_x,
type(vector_t), intent(inout sol_y,
type(vector_t), intent(inout sol_z,
type(vector_t), intent(in rhs_x,
type(vector_t), intent(in rhs_y,
type(vector_t), intent(in rhs_z,
type(vector_t), intent(in rhs_xlag,
type(vector_t), intent(in rhs_ylag,
type(vector_t), intent(in rhs_zlag,
type(vector_t), intent(in rhs_xlaglag,
type(vector_t), intent(in rhs_ylaglag,
type(vector_t), intent(in rhs_zlaglag,
integer, intent(in n 
)
private
Parameters
sol_xState component in x.
sol_yState component in y.
sol_zState component in z.
nNumber of local particles to advance.

Definition at line 113 of file lpt.f90.

◆ preprocess()

procedure, pass(this) lpt::lpt_t::preprocess ( class(lpt_t), intent(inout this,
type(time_state_t), intent(in time 
)
Parameters
timeCurrent simulation time used to build the LPT local step.

Definition at line 106 of file lpt.f90.

◆ read_particles_csv()

procedure, pass(this), private lpt::lpt_t::read_particles_csv ( class(lpt_t), intent(inout this,
type(json_file), intent(inout json 
)
private
Parameters
jsonLPT configuration containing points_file.

Definition at line 109 of file lpt.f90.

◆ read_particles_json()

procedure, pass(this), private lpt::lpt_t::read_particles_json ( class(lpt_t), intent(inout this,
type(json_file), intent(inout json 
)
private
Parameters
jsonLPT configuration containing either coordinates or points_file.

Definition at line 108 of file lpt.f90.

◆ sync_time_controller()

procedure, pass(this), private lpt::lpt_t::sync_time_controller ( class(lpt_t), intent(inout this,
type(time_state_t), intent(in time 
)
private
Parameters
timeCurrent simulation time from the main solver.

Definition at line 112 of file lpt.f90.

◆ update_current_rhs()

procedure, pass(this), private lpt::lpt_t::update_current_rhs ( class(lpt_t), intent(inout this)
private

Definition at line 114 of file lpt.f90.

◆ write_output()

procedure, pass(this), private lpt::lpt_t::write_output ( class(lpt_t), intent(inout this,
type(time_state_t), intent(in time 
)
private
Parameters
timeCurrent simulation time stored with particle data.

Definition at line 115 of file lpt.f90.

Member Data Documentation

◆ coef

type(coef_t), pointer lpt::lpt_t::coef => null()

Definition at line 84 of file lpt.f90.

◆ dm_xh

type(dofmap_t), pointer lpt::lpt_t::dm_xh => null()

Definition at line 83 of file lpt.f90.

◆ elastic_wall_enabled

logical lpt::lpt_t::elastic_wall_enabled = .false.

Definition at line 89 of file lpt.f90.

◆ global_interp

type(global_interpolation_t) lpt::lpt_t::global_interp

Definition at line 94 of file lpt.f90.

◆ history_len

integer lpt::lpt_t::history_len = 0

Definition at line 86 of file lpt.f90.

◆ inertia

logical lpt::lpt_t::inertia = .false.

Definition at line 87 of file lpt.f90.

◆ lag_len

integer lpt::lpt_t::lag_len

Definition at line 85 of file lpt.f90.

◆ log

logical lpt::lpt_t::log = .true.

Definition at line 101 of file lpt.f90.

◆ lpt_time

type(time_state_t) lpt::lpt_t::lpt_time

Definition at line 92 of file lpt.f90.

◆ lpt_time_initialized

logical lpt::lpt_t::lpt_time_initialized = .false.

Definition at line 93 of file lpt.f90.

◆ migration

type(lpt_migrate_t) lpt::lpt_t::migration

Definition at line 96 of file lpt.f90.

◆ msh

type(mesh_t), pointer lpt::lpt_t::msh => null()

Definition at line 82 of file lpt.f90.

◆ mu_fluid

type(field_t), pointer lpt::lpt_t::mu_fluid => null()

Definition at line 80 of file lpt.f90.

◆ name

character(:), allocatable lpt::lpt_t::name

Definition at line 75 of file lpt.f90.

◆ nonlinear_coefficient

real(kind=rp) lpt::lpt_t::nonlinear_coefficient

Definition at line 88 of file lpt.f90.

◆ nonlinear_exponent

real(kind=rp) lpt::lpt_t::nonlinear_exponent

Definition at line 88 of file lpt.f90.

◆ output

type(lpt_output_t) lpt::lpt_t::output

Definition at line 98 of file lpt.f90.

◆ output_controller

type(time_based_controller_t) lpt::lpt_t::output_controller

Definition at line 99 of file lpt.f90.

◆ output_enabled

logical lpt::lpt_t::output_enabled = .false.

Definition at line 100 of file lpt.f90.

◆ particles

type(particles_t) lpt::lpt_t::particles

Definition at line 97 of file lpt.f90.

◆ periodic_bc

type(lpt_periodic_bc_t) lpt::lpt_t::periodic_bc

Definition at line 95 of file lpt.f90.

◆ rho_fluid

type(field_t), pointer lpt::lpt_t::rho_fluid => null()

Definition at line 81 of file lpt.f90.

◆ start_time

real(kind=rp) lpt::lpt_t::start_time = -huge(0.0_rp)

Definition at line 102 of file lpt.f90.

◆ time_order

integer lpt::lpt_t::time_order

Definition at line 85 of file lpt.f90.

◆ u_field

type(field_t), pointer lpt::lpt_t::u_field => null()

Definition at line 77 of file lpt.f90.

◆ v_field

type(field_t), pointer lpt::lpt_t::v_field => null()

Definition at line 78 of file lpt.f90.

◆ w_field

type(field_t), pointer lpt::lpt_t::w_field => null()

Definition at line 79 of file lpt.f90.

◆ wall_facet_mask

logical, dimension(:, :), allocatable lpt::lpt_t::wall_facet_mask

Definition at line 91 of file lpt.f90.

◆ wall_zone_indices

integer, dimension(:), allocatable lpt::lpt_t::wall_zone_indices

Definition at line 90 of file lpt.f90.


The documentation for this type was generated from the following file: