pscalar

Module

Description

$Id$

This modules solves the passive scalar advection equation.

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

CPARAM logical, parameter :: lpscalar = .true.

MVAR CONTRIBUTION 1 MAUX CONTRIBUTION 0

PENCILS PROVIDED cc(1); cc1(1); lncc; glncc(3); uglncc; del2lncc PENCILS PROVIDED hlncc(3,3)


Quick access

Variables:

amplcc, amplcc2, ampllncc, ampllncc2, bump, bunit, cc2m, cc_const, cc_left, cc_min, cc_right, cc_xyaver, delta_lncc, diffcc_shock, epsilon_cc, epsilon_lncc, gcc2m, gradc0, hhh, hoverr, icc_end, idiag_cc10m, idiag_cc1m, idiag_cc2m, idiag_cc2mz, idiag_cc3m, idiag_cc4m, idiag_cc5m, idiag_cc6m, idiag_cc7m, idiag_cc8m, idiag_cc9m, idiag_ccglnrm, idiag_ccm, idiag_ccmax, idiag_ccmin, idiag_ccmx, idiag_ccmxy, idiag_ccmxz, idiag_ccmy, idiag_ccmz, idiag_ccrms, idiag_ccugum, idiag_cluz_uzlcm, idiag_crmsm, idiag_cugccm, idiag_cz2m, idiag_cz4m, idiag_gcc10m, idiag_gcc1m, idiag_gcc2m, idiag_gcc3m, idiag_gcc4m, idiag_gcc5m, idiag_gcc6m, idiag_gcc7m, idiag_gcc8m, idiag_gcc9m, idiag_gcguzm, idiag_lnccm, idiag_lnccmx, idiag_lnccmy, idiag_lnccmz, idiag_mcct, idiag_mrclncm, idiag_qpsclm, idiag_qrhoccm, idiag_rhoc2m, idiag_rhoc3m, idiag_rhoccm, idiag_rhoccmax, idiag_ucm, idiag_uudcm, idiag_uxcm, idiag_uxcmz, idiag_uycm, idiag_uycmz, idiag_uzcm, idiag_uzcmz, initcc, initcc2, initlncc, initlncc2, kx_cc, kx_lncc, kxx_cc, ky_cc, ky_lncc, kyy_cc, kz_cc, kz_lncc, kzz_cc, lam_gradc, lambda_cc, ldustdrift, lgradc_profile, ll_sh, llambda_cc, lmean_friction_cc, lncc_min, lnotpassive, lpscalar_diff_simple, lpscalar_per_unitvolume, lpscalar_per_unitvolume_diff, lpscalar_sink, lreactions, lremove_mean, lupw_cc, lupw_lncc, mean_friction_cc, mm_sh, n_xprof, nopscalar, om_gradc, powerlr, pscalar_diff, pscalar_diff_hyper3, pscalar_diff_shock, pscalar_sink, radius_cc, radius_lncc, reinitialize_cc, reinitialize_lncc, rhoccm, rpscalar_sink, scalaracc, soret_diff, spharm, tensor_diff, tensor_pscalar_diff, widthcc, widthlncc, widthlncc1, widthlncc2, zoverh

Routines:

calc_diagnostics_pscalar(), calc_mpscalar(), calc_pencils_pscalar(), dlncc_dt(), get_slices_pscalar(), init_lncc(), initialize_pscalar(), pencil_criteria_pscalar(), pencil_interdep_pscalar(), pscalar_before_boundary(), read_pscalar_init_pars(), read_pscalar_run_pars(), register_pscalar(), rprint_pscalar(), write_pscalar_init_pars(), write_pscalar_run_pars()

Needed modules

Variables

  • pscalar/amplcc [real,private/optional/default=0.1]
  • pscalar/ampllncc [real,private/optional/default=0.1]
  • pscalar/ampllncc2 [real,private/optional/default=0.0]
  • pscalar/bunit (nx,ny,nz,3) [real,private]
  • pscalar/cc2m [real,public/optional/default=0.0]
  • pscalar/cc_const [real,private/optional/default=0.0]
  • pscalar/cc_min [real,private/optional/default=0.0]
  • pscalar/delta_lncc [real,private/optional/default=0]
  • pscalar/epsilon_lncc [real,private/optional/default=0.0]
  • pscalar/gcc2m [real,public/optional/default=0.0]
  • pscalar/gradc0 (3) [real,private/optional/default=(/0.0,0.0,0.0/)]
  • pscalar/hhh (nx,ny,nz,3) [real,private]
  • pscalar/idiag_cc10m [integer,private/optional/default=0]
  • pscalar/idiag_cc1m [integer,private/optional/default=0]
  • pscalar/idiag_cc2m [integer,public/optional/default=0]
  • pscalar/idiag_cc3m [integer,private/optional/default=0]
  • pscalar/idiag_cc4m [integer,private/optional/default=0]
  • pscalar/idiag_cc5m [integer,private/optional/default=0]
  • pscalar/idiag_cc6m [integer,private/optional/default=0]
  • pscalar/idiag_cc7m [integer,private/optional/default=0]
  • pscalar/idiag_cc8m [integer,private/optional/default=0]
  • pscalar/idiag_cc9m [integer,private/optional/default=0]
  • pscalar/idiag_ccglnrm [integer,private/optional/default=0]
  • pscalar/idiag_ccmax [integer,private/optional/default=0]
  • pscalar/idiag_ccmin [integer,private/optional/default=0]
  • pscalar/idiag_ccmx [integer,private/optional/default=0]
  • pscalar/idiag_ccmy [integer,private/optional/default=0]
  • pscalar/idiag_ccmz [integer,private/optional/default=0]
  • pscalar/idiag_crmsm [integer,private/optional/default=0]
  • pscalar/idiag_cz2m [integer,private/optional/default=0]
  • pscalar/idiag_cz4m [integer,private/optional/default=0]
  • pscalar/idiag_gcc10m [integer,private/optional/default=0]
  • pscalar/idiag_gcc1m [integer,private/optional/default=0]
  • pscalar/idiag_gcc2m [integer,public/optional/default=0]
  • pscalar/idiag_gcc3m [integer,private/optional/default=0]
  • pscalar/idiag_gcc4m [integer,private/optional/default=0]
  • pscalar/idiag_gcc5m [integer,private/optional/default=0]
  • pscalar/idiag_gcc6m [integer,private/optional/default=0]
  • pscalar/idiag_gcc7m [integer,private/optional/default=0]
  • pscalar/idiag_gcc8m [integer,private/optional/default=0]
  • pscalar/idiag_gcc9m [integer,private/optional/default=0]
  • pscalar/idiag_lnccm [integer,private/optional/default=0]
  • pscalar/idiag_lnccmx [integer,private/optional/default=0]
  • pscalar/idiag_lnccmy [integer,private/optional/default=0]
  • pscalar/idiag_lnccmz [integer,private/optional/default=0]
  • pscalar/idiag_mcct [integer,private/optional/default=0]
  • pscalar/idiag_rhoccm [integer,public/optional/default=0]
  • pscalar/idiag_ucm [integer,private/optional/default=0]
  • pscalar/idiag_uudcm [integer,private/optional/default=0]
  • pscalar/initlncc [character,private/optional/default='zero']
  • pscalar/initlncc2 [character,private/optional/default='zero']
  • pscalar/kx_lncc [real,private/optional/default=1.0]
  • pscalar/ky_lncc [real,private/optional/default=1.0]
  • pscalar/kz_lncc [real,private/optional/default=1.0]
  • pscalar/ldustdrift [logical,private/optional/default=.false.]
  • pscalar/lncc_min [real,private]
  • pscalar/lupw_lncc [logical,private/optional/default=.false.]
  • pscalar/nopscalar [logical,private/optional/default=.false.]
  • pscalar/pscalar_diff [real,private/optional/default=0.0]
  • pscalar/pscalar_diff_shock [real,private/optional/default=0.0]
  • pscalar/radius_lncc [real,private/optional/default=0.0]
  • pscalar/reinitialize_lncc [logical,private/optional/default=.false.]
  • pscalar/rhoccm [real,public/optional/default=0.0]
  • pscalar/tensor_diff [private]
  • pscalar/tensor_pscalar_diff [real,private/optional/default=0.0]
  • pscalar/widthlncc [real,private/optional/default=0.5]
  • pscalar/widthlncc1 [real,private/optional/default=1.0]
  • pscalar/widthlncc2 [real,private/optional/default=1.5]

Subroutines and functions

subroutine  pscalar/register_pscalar()

Initialise variables which should know that we solve for passive scalar: ilncc; increase nvar accordingly.

6-jul-02/axel: coded

Use :

farraymanager

Call to:

svn_id(), init_lncc(), gaussian(), parabola(), wave(), wave_uu(), htube2(), fatal_error(), initial_condition_lncc(), g2ij(), identify_bcs(), dot_mn(), special_calc_pscalar(), calc_diagnostics_pscalar(), integrate_mn_name(), max_mn_name(), xysum_mn_name_z(), xzsum_mn_name_y(), yzsum_mn_name_x(), information(), save_name()

subroutine  pscalar/initialize_pscalar(f)

Perform any necessary post-parameter read initialization. Dummy routine

24-nov-02/tony: coded

Parameters:

f (,,*,*) [real,contiguous]

Use :

sharedvariables (put_shared_variable())

Call to:

init_lncc(), gaussian(), parabola(), wave(), wave_uu(), htube2(), fatal_error(), initial_condition_lncc(), g2ij(), identify_bcs(), dot_mn(), special_calc_pscalar(), calc_diagnostics_pscalar(), integrate_mn_name(), max_mn_name(), xysum_mn_name_z(), xzsum_mn_name_y(), yzsum_mn_name_x(), information(), save_name()

subroutine  pscalar/init_lncc(f)

Initialise passive scalar field; called from start.f90.

6-jul-2001/axel: coded

Parameters:

f (,,*,*) [real,contiguous]

Use :

sub, initcond, initialcondition (initial_condition_lncc())

Call to:

gaussian(), parabola(), wave(), wave_uu(), htube2(), fatal_error(), initial_condition_lncc(), g2ij(), identify_bcs(), dot_mn(), special_calc_pscalar(), calc_diagnostics_pscalar(), integrate_mn_name(), max_mn_name(), xysum_mn_name_z(), xzsum_mn_name_y(), yzsum_mn_name_x(), information(), save_name()

subroutine  pscalar/pencil_criteria_pscalar()

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

20-11-04/anders: coded

Call to:

g2ij(), identify_bcs(), dot_mn(), special_calc_pscalar(), calc_diagnostics_pscalar(), integrate_mn_name(), max_mn_name(), xysum_mn_name_z(), xzsum_mn_name_y(), yzsum_mn_name_x(), information(), save_name()

subroutine  pscalar/pencil_interdep_pscalar(lpencil_in)

Interdependency among pencils provided by the Pscalar module is specified here.

20-11-04/anders: coded

Parameters:

lpencil_in (npencils) [logical]

Call to:

g2ij(), identify_bcs(), dot_mn(), special_calc_pscalar(), calc_diagnostics_pscalar(), integrate_mn_name(), max_mn_name(), xysum_mn_name_z(), xzsum_mn_name_y(), yzsum_mn_name_x(), information(), save_name()

subroutine  pscalar/calc_pencils_pscalar(f, p)

Calculate Pscalar pencils. Most basic pencils should come first, as others may depend on them.

20-11-04/anders: coded

Parameters:
  • f (,,*,*) [real,in,contiguous]

  • p [pencil_case,inout]

Use :

sub

Call to:

g2ij(), identify_bcs(), dot_mn(), special_calc_pscalar(), calc_diagnostics_pscalar(), integrate_mn_name(), max_mn_name(), xysum_mn_name_z(), xzsum_mn_name_y(), yzsum_mn_name_x(), information(), save_name()

subroutine  pscalar/dlncc_dt(f, df, p)

Passive scalar evolution.

Calculate dc/dt=-uu.glncc + pscaler_diff*[del2lncc + (glncc+glnrho).glncc]

6-jul-02/axel: coded

Parameters:
  • f (,,*,*) [real,in,contiguous]

  • df (,,*,*) [real,inout,contiguous]

  • p [pencil_case]

Use :

special (special_calc_pscalar()), sub

Call to:

identify_bcs(), dot_mn(), special_calc_pscalar(), calc_diagnostics_pscalar(), integrate_mn_name(), max_mn_name(), xysum_mn_name_z(), xzsum_mn_name_y(), yzsum_mn_name_x(), information(), save_name()

subroutine  pscalar/calc_diagnostics_pscalar(p)
Parameters:

p [pencil_case]

Use :

diagnostics

Call to:

integrate_mn_name(), max_mn_name(), xysum_mn_name_z(), xzsum_mn_name_y(), yzsum_mn_name_x(), information(), save_name(), dot_mn()

subroutine  pscalar/read_pscalar_init_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

Call to:

information(), save_name(), dot_mn()

subroutine  pscalar/write_pscalar_init_pars(unit)
Parameters:

unit [integer,in]

Call to:

information(), save_name(), dot_mn()

subroutine  pscalar/read_pscalar_run_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

Call to:

information(), save_name(), dot_mn()

subroutine  pscalar/write_pscalar_run_pars(unit)
Parameters:

unit [integer,in]

Call to:

information(), save_name(), dot_mn()

subroutine  pscalar/rprint_pscalar(lreset[, lwrite])

Reads and registers print parameters relevant for passive scalar.

6-jul-02/axel: coded

Parameters:
  • lreset [logical]

  • lwrite [logical]

Use :

diagnostics

Call to:

information(), save_name(), dot_mn()

subroutine  pscalar/get_slices_pscalar(f, slices)

Write slices for animation of pscalar variables.

26-jul-06/tony: coded

Parameters:
Use :

slices_methods (assign_slices_scal(), process_slices(), exp2d())

Call to:

information(), save_name(), dot_mn()

subroutine  pscalar/pscalar_before_boundary(f)

Dummy.

Parameters:

f (,,*,*) [real,in,contiguous]

Call to:

information(), save_name(), dot_mn()

subroutine  pscalar/calc_mpscalar()

calculate mean magnetic field from xy- or z-averages

14-apr-03/axel: adaped from calc_mfield

Use :

diagnostics

Call to:

information(), save_name(), dot_mn()