particles_spin

Module

Description

$Id$

This module takes care of everything related to particle spin including lifting forces. The module maintains a full f-array vorticity field, to be able to interpolate on the flow vorticity.

The module should be considered experimental as it is virtually untested (as of aug-08).

NOTE: all code relating to particle spin or the magnus force

have been commented out.

** AUTOMATIC CPARAM.INC GENERATION ************************

Declare (for generation of cparam.inc) the number of f array variables and auxiliary variables added by this module

MPVAR CONTRIBUTION 3 CPARAM logical, parameter :: lparticles_spin = .true.


Quick access

Variables:

amplsp, calc_magnus_liftforce, calc_saffman_liftforce, gaunoise_vect, idiag_psxm, idiag_psym, idiag_pszm, initsp, lmagnus_lift, lsaffman_lift, prepare_curl_vectorfield

Routines:

calc_liftforce(), dps_dt(), dps_dt_pencil(), init_particles_spin(), initialize_particles_spin(), pencil_criteria_par_spin(), read_particles_spin_init_pars(), read_particles_spin_run_pars(), register_particles_spin(), rprint_particles_spin(), write_particles_spin_init_pars(), write_particles_spin_run_pars()

Needed modules

Variables

  • particles_spin/amplsp (ninit) [real,private/optional/default=0.0]
  • particles_spin/calc_magnus_liftforce [private]
  • particles_spin/calc_saffman_liftforce [private]
  • particles_spin/gaunoise_vect [private]
  • particles_spin/idiag_psxm [integer,private/optional/default=0]
  • particles_spin/idiag_psym [integer,private/optional/default=0]
  • particles_spin/idiag_pszm [integer,private/optional/default=0]
  • particles_spin/initsp (ninit) [character,private/optional/default='nothing']
  • particles_spin/lmagnus_lift [logical,private/optional/default=.false.]
  • particles_spin/lsaffman_lift [logical,private/optional/default=.false.]

Subroutines and functions

subroutine  particles_spin/register_particles_spin()

Set up indices for access to the fp and dfp arrays.

21-jul-08/kapelrud: coded

use FArrayManager

Called from:

particles_register_modules()

Call to:

svn_id(), append_npvar(), fatal_error(), sum_par_name(), getnu()

subroutine  particles_spin/initialize_particles_spin(f)

Perform any post-parameter-read initialization, i.e., calculate derived parameters.

21-jul-08/kapelrud: coded 22-oct-15/ccyang: continued.

Parameters:

f (mx,my,mz,mfarray) [real,in]

Use :

general (keep_compiler_quiet())

Called from:

particles_register_modules(), particles_rprint_list(), particles_initialize_modules()

Call to:

fatal_error(), sum_par_name(), getnu()

subroutine  particles_spin/init_particles_spin(f, fp)

Initial spin of particles.

21-jul-08/kapelrud: coded. 07-oct-15/ccyang: continued.

Parameters:
Use :

general (keep_compiler_quiet())

Called from:

particles_register_modules(), particles_rprint_list(), particles_initialize_modules(), particles_init()

Call to:

fatal_error(), sum_par_name(), getnu()

subroutine  particles_spin/pencil_criteria_par_spin()

All pencils that the Particles_spin module depends on are specified here.

06-oct-15/ccyang: stub.

Called from:

particles_register_modules(), particles_rprint_list(), particles_initialize_modules(), particles_init(), particles_finalize(), particles_read_snapshot(), particles_write_snapshot(), particles_write_dsnapshot(), particles_write_pdim(), particles_write_block(), particles_write_rmv(), particles_timestep_first(), particles_timestep_second(), split_update_particles(), particles_load_balance(), particles_boundconds(), particles_pencil_criteria(), particles_calc_selfpotential(), particles_before_boundary(), particles_special_bfre_bdary(), particles_special_after_dtsub(), read_all_particles_init_pars(), read_all_particles_run_pars(), write_dim_particles(), write_snapshot_particles(), read_snapshot_particles()

Call to:

sum_par_name(), getnu(), fatal_error()

subroutine  particles_spin/dps_dt_pencil(f, df, fp, dfp, p, ineargrid)

Evolution of particle spin (called in the pencil loop.)

06-oct-15/ccyang: stub.

Parameters:
  • f (mx,my,mz,mfarray) [real,in]

  • df (mx,my,mz,mvar) [real,in]

  • fp (mpar_loc,mparray) [real,in]

  • dfp (mpar_loc,mpvar) [real,inout]

  • p [pencil_case,in]

  • ineargrid (mpar_loc,3) [integer,in]

Use :

general (keep_compiler_quiet())

Called from:

particles_register_modules(), particles_rprint_list(), particles_initialize_modules(), particles_init(), particles_finalize(), particles_read_snapshot(), particles_write_snapshot(), particles_write_dsnapshot(), particles_write_pdim(), particles_write_block(), particles_write_rmv(), particles_timestep_first(), particles_timestep_second(), split_update_particles(), particles_load_balance(), particles_boundconds(), particles_pencil_criteria(), particles_pencil_interdep(), particles_calc_pencils(), particles_calc_selfpotential(), particles_before_boundary(), particles_special_bfre_bdary(), particles_special_after_dtsub(), particles_pde(), particles_pde_pencil(), read_all_particles_init_pars(), read_all_particles_run_pars(), write_dim_particles(), write_snapshot_particles(), read_snapshot_particles()

Call to:

sum_par_name(), getnu(), fatal_error()

subroutine  particles_spin/dps_dt(f, df, fp, dfp, ineargrid)

Evolution of particle spin (called after the pencil loop.)

25-jul-08/kapelrud: coded

Parameters:
  • f (mx,my,mz,mfarray) [real,in]

  • df (mx,my,mz,mvar) [real,in]

  • fp (mpar_loc,mparray) [real,in]

  • dfp (mpar_loc,mpvar) [real,in]

  • ineargrid (mpar_loc,3) [integer,in]

Use :

particles_sub (sum_par_name())

Called from:

particles_register_modules(), particles_rprint_list(), particles_initialize_modules(), particles_init(), particles_finalize(), particles_read_snapshot(), particles_write_snapshot(), particles_write_dsnapshot(), particles_write_pdim(), particles_write_block(), particles_write_rmv(), particles_timestep_first(), particles_timestep_second(), split_update_particles(), particles_load_balance(), particles_boundconds(), particles_pencil_criteria(), particles_pencil_interdep(), particles_calc_pencils(), particles_calc_selfpotential(), particles_before_boundary(), particles_special_bfre_bdary(), particles_special_after_dtsub(), particles_pde(), read_all_particles_init_pars(), read_all_particles_run_pars(), write_dim_particles(), write_snapshot_particles(), read_snapshot_particles()

Call to:

sum_par_name(), getnu(), fatal_error()

subroutine  particles_spin/read_particles_spin_init_pars(iomsg)

Read initialization parameters from namelist particles_spin_init_pars.

06-oct-15/ccyang: coded.

Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

Call to:

getnu(), fatal_error()

subroutine  particles_spin/write_particles_spin_init_pars(unit)

Write initialization parameters from namelist particles_spin_init_pars.

06-oct-15/ccyang: coded.

Parameters:

unit [integer,in]

Called from:

particles_register_modules(), particles_rprint_list(), particles_initialize_modules(), particles_init(), particles_finalize(), particles_read_snapshot(), particles_write_snapshot(), particles_write_dsnapshot(), particles_write_pdim(), particles_write_block(), particles_write_rmv(), particles_timestep_first(), particles_timestep_second(), split_update_particles(), particles_load_balance(), particles_boundconds(), particles_pencil_criteria(), particles_pencil_interdep(), particles_calc_pencils(), particles_calc_selfpotential(), particles_before_boundary(), particles_special_bfre_bdary(), particles_special_after_dtsub(), particles_pde(), particles_pde_pencil(), particles_calc_pencil_diags(), particles_pde_blocks(), read_all_particles_init_pars(), write_all_particles_init_pars(), read_all_particles_run_pars(), write_dim_particles(), write_snapshot_particles(), read_snapshot_particles()

Call to:

getnu(), fatal_error()

subroutine  particles_spin/read_particles_spin_run_pars(iomsg)

Read runtime parameters from namelist particles_spin_run_pars.

06-oct-15/ccyang: coded.

Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

Call to:

getnu(), fatal_error()

subroutine  particles_spin/write_particles_spin_run_pars(unit)

Write runtime parameters from namelist particles_spin_run_pars.

06-oct-15/ccyang: coded.

Parameters:

unit [integer,in]

Called from:

particles_register_modules(), particles_rprint_list(), particles_initialize_modules(), particles_init(), particles_finalize(), particles_read_snapshot(), particles_write_snapshot(), particles_write_dsnapshot(), particles_write_pdim(), particles_write_block(), particles_write_rmv(), particles_timestep_first(), particles_timestep_second(), split_update_particles(), particles_load_balance(), particles_boundconds(), particles_pencil_criteria(), particles_pencil_interdep(), particles_calc_pencils(), particles_calc_selfpotential(), particles_before_boundary(), particles_special_bfre_bdary(), particles_special_after_dtsub(), particles_pde(), particles_pde_pencil(), particles_calc_pencil_diags(), particles_pde_blocks(), read_all_particles_init_pars(), write_all_particles_init_pars(), read_all_particles_run_pars(), write_all_particles_run_pars(), write_dim_particles(), write_snapshot_particles(), read_snapshot_particles()

Call to:

getnu(), fatal_error()

subroutine  particles_spin/rprint_particles_spin(lreset[, lwrite])

Read and register print parameters relevant for particles spin.

21-jul-08/kapelrud: coded. 06-oct-15/ccyang: continued.

Parameters:
  • lreset [logical,in]

  • lwrite [logical,in,]

Use :

diagnostics

Called from:

particles_register_modules(), particles_rprint_list()

Call to:

getnu(), fatal_error()

subroutine  particles_spin/calc_liftforce(fp, k, rep, liftforce)

Calculate lifting forces for a given particle. It should be possible to make this a routine operating on pencils.

22-jul-08/kapelrud: coded

Parameters:
  • fp (mparray) [real,in]

  • k [integer,in]

  • rep [real,in]

  • liftforce (3) [real,out]

Call to:

getnu(), fatal_error()