pscalar_nolog
Module
Description
$Id$
This modules solves (multiple) passive scalar advection equation(s) Solves for c, not ln(c).
** 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(npscalar); cc1(npscalar) PENCILS PROVIDED gcc(3,npscalar); ugcc(npscalar) PENCILS PROVIDED gcc2(npscalar); gcc1(npscalar) PENCILS PROVIDED del2cc(npscalar); del6cc(npscalar) PENCILS PROVIDED g5cc(3,npscalar); g5ccglnrho(npscalar) PENCILS PROVIDED hcc(3,3,npscalar) ***********************************************************
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/amplcc2 [real,private/optional/default=0.0]
- pscalar/ampllncc [real,private/optional/default=impossible]
- pscalar/ampllncc2 [real,private/optional/default=impossible]
- pscalar/bunit (*,*,*,*) [real,private/allocatable]
- pscalar/cc2m [real,public/optional/default=0.0]
- pscalar/cc_const [real,private/optional/default=1.0]
- pscalar/cc_left [real,private/optional/default=1.0]
- pscalar/cc_min [real,private/optional/default=0.0]
- pscalar/cc_right [real,private/optional/default=0.0]
- pscalar/diffcc_shock [real,private/optional/default=0.0]
- pscalar/epsilon_cc [real,private/optional/default=0.0]
- pscalar/epsilon_lncc [real,private/optional/default=impossible]
- pscalar/gcc2m [real,public/optional/default=0.0]
- pscalar/gradc0 (3) [real,private/optional/default=(/0.0,0.0,0.0/)]
- pscalar/hhh (*,*,*,*) [real,private/allocatable]
- pscalar/hoverr [real,private/optional/default=0.05]
- pscalar/icc_end [integer,private]
- pscalar/idiag_cc10m [integer,private/optional/default=0]
DIAG_DOC: $left< c_1^{-10} right>$
- pscalar/idiag_cc1m [integer,private/optional/default=0]
DIAG_DOC: $left< c_1^{-1} right>$
- pscalar/idiag_cc2m [integer,public/optional/default=0]
DIAG_DOC: $left< c_1^{-2} right>$
- pscalar/idiag_cc2mz [integer,private/optional/default=0]
- pscalar/idiag_cc3m [integer,private/optional/default=0]
DIAG_DOC: $left< c_1^{-3} right>$
- pscalar/idiag_cc4m [integer,private/optional/default=0]
DIAG_DOC: $left< c_1^{-4} right>$
- pscalar/idiag_cc5m [integer,private/optional/default=0]
DIAG_DOC: $left< c_1^{-5} right>$
- pscalar/idiag_cc6m [integer,private/optional/default=0]
DIAG_DOC: $left< c_1^{-6} right>$
- pscalar/idiag_cc7m [integer,private/optional/default=0]
DIAG_DOC: $left< c_1^{-7} right>$
- pscalar/idiag_cc8m [integer,private/optional/default=0]
DIAG_DOC: $left< c_1^{-8} right>$
- pscalar/idiag_cc9m [integer,private/optional/default=0]
DIAG_DOC: $left< c_1^{-9} right>$
- pscalar/idiag_ccglnrm [integer,private/optional/default=0]
DIAG_DOC: $left< c_1 partial_z logrho right>$
- pscalar/idiag_ccm [integer,private/optional/default=0]
- pscalar/idiag_ccmax [integer,private/optional/default=0]
DIAG_DOC: $max[ c_1 ]$
- pscalar/idiag_ccmin [integer,private/optional/default=0]
DIAG_DOC: $min[ c_1 ]$
- pscalar/idiag_ccmx [integer,private/optional/default=0]
- pscalar/idiag_ccmxy [integer,private/optional/default=0]
- pscalar/idiag_ccmxz [integer,private/optional/default=0]
- pscalar/idiag_ccmy [integer,private/optional/default=0]
- pscalar/idiag_ccmz [integer,private/optional/default=0]
- pscalar/idiag_ccrms [integer,private/optional/default=0]
DIAG_DOC: $sqrt{left< c_1^2 right>}$
- pscalar/idiag_ccugum [integer,private/optional/default=0]
DIAG_DOC: $left< c_1 vec{u} cdot grad u_z right>$
- pscalar/idiag_cluz_uzlcm [integer,private/optional/default=0]
- pscalar/idiag_crmsm [integer,private/optional/default=0]
DIAG_DOC: $sqrt{left< rho c_1^2 right>}$
- pscalar/idiag_cugccm [integer,private/optional/default=0]
DIAG_DOC: $left< c_1 vec{u} cdot grad c_1 right>$
- pscalar/idiag_cz2m [integer,private/optional/default=0]
DIAG_DOC: $left< rho c_1 z^2 right>$
- pscalar/idiag_cz4m [integer,private/optional/default=0]
DIAG_DOC: $left< rho c_1 z^4 right>$
- pscalar/idiag_gcc10m [integer,private/optional/default=0]
DIAG_DOC: $left< left|grad c_1 right|^{10} right>$
- pscalar/idiag_gcc1m [integer,private/optional/default=0]
DIAG_DOC: $left< left|grad c_1 right| right>$
- pscalar/idiag_gcc2m [integer,public/optional/default=0]
DIAG_DOC: $left< left|grad c_1 right|^{2} right>$
- pscalar/idiag_gcc3m [integer,private/optional/default=0]
DIAG_DOC: $left< left|grad c_1 right|^{3} right>$
- pscalar/idiag_gcc4m [integer,private/optional/default=0]
DIAG_DOC: $left< left|grad c_1 right|^{4} right>$
- pscalar/idiag_gcc5m [integer,private/optional/default=0]
DIAG_DOC: $left< left|grad c_1 right|^{5} right>$
- pscalar/idiag_gcc6m [integer,private/optional/default=0]
DIAG_DOC: $left< left|grad c_1 right|^{6} right>$
- pscalar/idiag_gcc7m [integer,private/optional/default=0]
DIAG_DOC: $left< left|grad c_1 right|^{7} right>$
- pscalar/idiag_gcc8m [integer,private/optional/default=0]
DIAG_DOC: $left< left|grad c_1 right|^{8} right>$
- pscalar/idiag_gcc9m [integer,private/optional/default=0]
DIAG_DOC: $left< left|grad c_1 right|^{9} right>$
- pscalar/idiag_gcguzm [integer,private/optional/default=0]
- pscalar/idiag_mcct [integer,private/optional/default=0]
- pscalar/idiag_mrclncm [integer,private/optional/default=0]
DIAG_DOC: $left< rho c_1 log(c_1) right>$
- pscalar/idiag_qpsclm [integer,private/optional/default=0]
- pscalar/idiag_qrhoccm [integer,private/optional/default=0]
- pscalar/idiag_rhoc2m [integer,private/optional/default=0]
DIAG_DOC: $left< rho c_2 right>$
- pscalar/idiag_rhoc3m [integer,private/optional/default=0]
DIAG_DOC: $left< rho c_3 right>$
- pscalar/idiag_rhoccm [integer,public/optional/default=0]
DIAG_DOC: $left< rho c_1 right>$
- pscalar/idiag_rhoccmax [integer,private/optional/default=0]
DIAG_DOC: $max[ rho c_1 ]$
- pscalar/idiag_ucm [integer,private/optional/default=0]
DIAG_DOC: $left< u_z c_1 right>$ (with an extra factor of $2 cos(z)$ if lgradC_profile=T)
- pscalar/idiag_uudcm [integer,private/optional/default=0]
DIAG_DOC: $left< u_z vec{u} cdot grad c_1 right>$
- pscalar/idiag_uxcm [integer,private/optional/default=0]
DIAG_DOC: $left< u_x c_1 right>$
- pscalar/idiag_uxcmz [integer,private/optional/default=0]
- pscalar/idiag_uycm [integer,private/optional/default=0]
DIAG_DOC: $left< u_y c_1 right>$
- pscalar/idiag_uycmz [integer,private/optional/default=0]
- pscalar/idiag_uzcm [integer,private/optional/default=0]
DIAG_DOC: $left< u_z c_1 right>$
- pscalar/idiag_uzcmz [integer,private/optional/default=0]
- pscalar/initcc [character,private/optional/default='nothing']
- pscalar/initcc2 [character,private/optional/default='zero']
- pscalar/initlncc [character,private/optional/default='impossible']
- pscalar/initlncc2 [character,private/optional/default='impossible']
- pscalar/kx_cc [real,private/optional/default=1.0]
- pscalar/kx_lncc [real,private/optional/default=impossible]
- pscalar/kxx_cc [real,private/optional/default=0.0]
- pscalar/ky_cc [real,private/optional/default=1.0]
- pscalar/ky_lncc [real,private/optional/default=impossible]
- pscalar/kyy_cc [real,private/optional/default=0.0]
- pscalar/kz_cc [real,private/optional/default=1.0]
- pscalar/kz_lncc [real,private/optional/default=impossible]
- pscalar/kzz_cc [real,private/optional/default=0.0]
- pscalar/lam_gradc [real,private/optional/default=0.0]
- pscalar/lambda_cc [real,private/optional/default=0.0]
- pscalar/lgradc_profile [logical,private/optional/default=.false.]
- pscalar/ll_sh [integer,private/optional/default=-1]
- pscalar/llambda_cc [real,private/optional/default=0.0]
- pscalar/lmean_friction_cc [logical,private/optional/default=.false.]
- pscalar/lnotpassive [logical,private/optional/default=.false.]
- pscalar/lpscalar_diff_simple [logical,private/optional/default=.false.]
- pscalar/lpscalar_per_unitvolume [logical,private/optional/default=.false.]
- pscalar/lpscalar_per_unitvolume_diff [logical,private/optional/default=.false.]
- pscalar/lpscalar_sink [logical,private/optional/default=.false.]
- pscalar/lreactions [logical,private/optional/default=.false.]
- pscalar/lremove_mean [logical,private/optional/default=.false.]
- pscalar/lupw_cc [logical,private/optional/default=.false.]
- pscalar/mean_friction_cc [private]
- pscalar/mm_sh [integer,private/optional/default=-1]
- pscalar/n_xprof [integer,private/optional/default=0]
- pscalar/nopscalar [logical,private/optional/default=.false.]
- pscalar/om_gradc [real,private/optional/default=0.0]
- pscalar/powerlr [real,private/optional/default=3.0]
- pscalar/pscalar_diff [real,private/optional/default=0.0]
- pscalar/pscalar_diff_hyper3 [real,private/optional/default=0.0]
- pscalar/pscalar_sink [real,private/optional/default=0.0]
- pscalar/radius_cc [real,private/optional/default=0.0]
- pscalar/radius_lncc [real,private/optional/default=impossible]
- pscalar/reinitialize_cc [logical,private/optional/default=.false.]
- pscalar/reinitialize_lncc [logical,private/optional/default=.false.]
- pscalar/rhoccm [real,public/optional/default=0.0]
- pscalar/rpscalar_sink [real,private/optional/default=0.5]
- pscalar/scalaracc [real,private/optional/default=0.0]
- pscalar/soret_diff [real,private/optional/default=0.0]
- pscalar/spharm (*,*) [real,private/allocatable]
- pscalar/tensor_diff [private]
- pscalar/tensor_pscalar_diff [real,private/optional/default=0.0]
- pscalar/widthcc [real,private/optional/default=0.5]
- pscalar/widthlncc [real,private/optional/default=impossible]
- pscalar/xjump_mid [real,private/optional/default=0.0]
- pscalar/yjump_mid [real,private/optional/default=0.0]
- pscalar/zjump_mid [real,private/optional/default=0.0]
- pscalar/zoverh [real,private/optional/default=1.0]
Subroutines and functions
- subroutine pscalar/register_pscalar()
Initialise variables which should know that we solve for passive scalar: icc; increase nvar accordingly
6-jul-02/axel: coded
- Use :
- Called from:
- Call to:
svn_id(),init_lncc(),fatal_error(),warning(),ylm_other(),ylm(),hatwave(),hat(),gaussian(),parabola(),wave(),linprof(),wave_uu(),cosx_cosy_cosz(),triquad(),htube2(),jump(),initial_condition_lncc(),dot2_mn(),g2ij(),del6(),grad5(),dot_mn(),identify_bcs(),cond_spec_nucl_lagr(),special_calc_pscalar(),calc_diagnostics_pscalar(),integrate_mn_name(),max_mn_name(),xysum_mn_name_z(),xzsum_mn_name_y(),yzsum_mn_name_x(),ysum_mn_name_xz(),remove_mean(),save_name()
- subroutine pscalar/initialize_pscalar(f)
Perform any necessary post-parameter read initialization Since the passive scalar is often used for diagnostic purposes one may want to reinitialize it to its initial distribution.
24-nov-02/tony: coded 20-may-03/axel: reinitialize_cc added
- 17/MRadded bump for lpscalar_sink defined by spherical harmonics,
specified by ll_sh, mm_sh >=0.
- Parameters:
- Use :
- Called from:
- Call to:
init_lncc(),fatal_error(),warning(),ylm_other(),ylm(),hatwave(),hat(),gaussian(),parabola(),wave(),linprof(),wave_uu(),cosx_cosy_cosz(),triquad(),htube2(),jump(),initial_condition_lncc(),dot2_mn(),g2ij(),del6(),grad5(),dot_mn(),identify_bcs(),cond_spec_nucl_lagr(),special_calc_pscalar(),calc_diagnostics_pscalar(),integrate_mn_name(),max_mn_name(),xysum_mn_name_z(),xzsum_mn_name_y(),yzsum_mn_name_x(),ysum_mn_name_xz(),remove_mean(),save_name()
- subroutine pscalar/init_lncc(f)
initialise passive scalar field; called from start.f90
6-jul-2001/axel: coded
- 27-jun-2017/MR: added initial condition: spherical harmonic in theta,phi,
sinusoidal in r with frequency n_xprof
- Parameters:
- Use :
sub,general(yin2yang_coors()),initcond,initialcondition(initial_condition_lncc())- Called from:
- Call to:
warning(),hatwave(),hat(),gaussian(),parabola(),wave(),linprof(),wave_uu(),cosx_cosy_cosz(),triquad(),htube2(),jump(),fatal_error(),ylm_other(),ylm(),initial_condition_lncc(),dot2_mn(),g2ij(),del6(),grad5(),dot_mn(),identify_bcs(),cond_spec_nucl_lagr(),special_calc_pscalar(),calc_diagnostics_pscalar(),integrate_mn_name(),max_mn_name(),xysum_mn_name_z(),xzsum_mn_name_y(),yzsum_mn_name_x(),ysum_mn_name_xz(),remove_mean(),save_name()
- subroutine pscalar/pencil_criteria_pscalar()
All pencils that the Pscalar module depends on are specified here.
20-nov-04/anders: coded
- Called from:
register_modules(),initialize_modules(),finalize_modules(),choose_pencils()- Call to:
dot2_mn(),g2ij(),del6(),grad5(),dot_mn(),identify_bcs(),cond_spec_nucl_lagr(),special_calc_pscalar(),calc_diagnostics_pscalar(),integrate_mn_name(),max_mn_name(),xysum_mn_name_z(),xzsum_mn_name_y(),yzsum_mn_name_x(),ysum_mn_name_xz(),remove_mean(),warning(),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]
- Called from:
register_modules(),initialize_modules(),finalize_modules(),choose_pencils()- Call to:
dot2_mn(),g2ij(),del6(),grad5(),dot_mn(),identify_bcs(),cond_spec_nucl_lagr(),special_calc_pscalar(),calc_diagnostics_pscalar(),integrate_mn_name(),max_mn_name(),xysum_mn_name_z(),xzsum_mn_name_y(),yzsum_mn_name_x(),ysum_mn_name_xz(),remove_mean(),warning(),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 24-oct-11/ccyang: generalize to multiple scalars
- Parameters:
- Use :
- Called from:
pde(),write_diagnostics(),calc_all_module_diagnostic_auxiliaries(),perform_diagnostics(),finalize_diagnostics()- Call to:
dot2_mn(),g2ij(),del6(),grad5(),dot_mn(),identify_bcs(),cond_spec_nucl_lagr(),special_calc_pscalar(),calc_diagnostics_pscalar(),integrate_mn_name(),max_mn_name(),xysum_mn_name_z(),xzsum_mn_name_y(),yzsum_mn_name_x(),ysum_mn_name_xz(),remove_mean(),warning(),save_name()
- subroutine pscalar/dlncc_dt(f, df, p)
Passive scalar evolution. Calculate dc/dt=-uu.gcc + pscalar_diff*[del2cc + glnrho.gcc].
20-may-03/axel: coded
- Parameters:
- Use :
special(special_calc_pscalar()),chemistry(cond_spec_nucl_lagr()),sub- Called from:
pde(),write_diagnostics(),calc_all_module_diagnostic_auxiliaries(),perform_diagnostics(),finalize_diagnostics()- Call to:
identify_bcs(),dot_mn(),dot2_mn(),cond_spec_nucl_lagr(),special_calc_pscalar(),calc_diagnostics_pscalar(),integrate_mn_name(),max_mn_name(),xysum_mn_name_z(),xzsum_mn_name_y(),yzsum_mn_name_x(),ysum_mn_name_xz(),remove_mean(),warning(),save_name()
- subroutine pscalar/calc_diagnostics_pscalar(p)
Diagnostics (only for the first passive scalar)
output for double and triple correlators (assume z-gradient of cc) <u_k u_j d_j c> = <u_k c uu.gradcc>
- Parameters:
p [pencil_case,in]
- Use :
- Called from:
pde(),write_diagnostics(),calc_all_module_diagnostic_auxiliaries(),register_pscalar(),initialize_pscalar(),init_lncc(),pencil_criteria_pscalar(),pencil_interdep_pscalar(),calc_pencils_pscalar(),dlncc_dt()- Call to:
integrate_mn_name(),max_mn_name(),dot_mn(),xysum_mn_name_z(),xzsum_mn_name_y(),yzsum_mn_name_x(),ysum_mn_name_xz(),remove_mean(),warning(),save_name()
- subroutine pscalar/read_pscalar_init_pars(iomsg)
- Parameters:
iomsg [character,out]
- Use :
- Call to:
- subroutine pscalar/write_pscalar_init_pars(unit)
- Parameters:
unit [integer,in]
- Called from:
get_datadir(),get_snapdir(),read_all_init_pars(),read_all_run_pars(),get_downpars()- Call to:
- subroutine pscalar/read_pscalar_run_pars(iomsg)
- Parameters:
iomsg [character,out]
- Use :
- Call to:
- subroutine pscalar/write_pscalar_run_pars(unit)
- Parameters:
unit [integer,in]
- Called from:
get_datadir(),get_snapdir(),read_all_init_pars(),read_all_run_pars(),get_downpars()- Call to:
- 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 :
- Called from:
register_modules(),initialize_modules(),finalize_modules(),choose_pencils(),rprint_list()- Call to:
- subroutine pscalar/get_slices_pscalar(f, slices)
Write slices for animation of pscalar variables.
26-jul-06/tony: coded 31-jan-11/ccyang: generalized to multiple scalars
- Parameters:
slices [slice_data,inout]
- Use :
slices_methods(assign_slices_vec(),process_slices(),log2d())- Called from:
- Call to:
- subroutine pscalar/pscalar_before_boundary(f)
Removes overall means of passive scalars.
5-dec-11/MR: coded
- Parameters:
- Use :
- Called from:
pde(),write_diagnostics(),calc_all_module_diagnostic_auxiliaries(),perform_diagnostics(),finalize_diagnostics()- Call to:
- subroutine pscalar/calc_mpscalar()
Calculate mean magnetic field from xy- or z-averages.
14-apr-03/axel: adaped from calc_mfield
- Use :
- Called from:
pde(),write_diagnostics(),calc_all_module_diagnostic_auxiliaries(),perform_diagnostics(),finalize_diagnostics()- Call to: