forcing_cont_sample

Module

Description

$Id$

This module contains routines both for delta-correlated and continuous forcing. The fcont pencil is only provided for continuous forcing.

** 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 :: lforcing = .true.

MVAR CONTRIBUTION 0 MAUX CONTRIBUTION 0

PENCILS PROVIDED fcont(3,n_forcing_cont_max)


Quick access

Variables:

alpha_shift, ampl1_ff, ampl_bb, ampl_double_ff, b0_mode, bconst, beta_gp, bslope, calc_counter_centrifugal, calc_fluxring_cylindrical, calc_force_ampl, calc_gp_tc13, calc_tg_random, channel_force, ck_equator_gap, ck_gap_step, cklist, cosxt, cosyt, coszt, crosshel, cs0eff, dforce, dtforce_ampl, dtforce_duration, ell_shift, embedx, embedy, embedz, enum_iforcing_cont, eps_fcont, equator, eta_gp, expmk2x2, expmk2y2, fconst_coefs_hel, fcont_ampl, fcont_from_file, force, force1_scl, force2, force2_scl, force_direction, force_double, force_strength, forcing_2drandom_xy, forcing_2drandom_xy_simple, forcing_abc, forcing_blobhs_random, forcing_blobs, forcing_chandra_kendall, forcing_cktest, forcing_coefs_hel, forcing_coefs_hel2, forcing_cont_after_boundary, forcing_diffrot, forcing_fountain, forcing_gaussianpot, forcing_gp, forcing_gp92, forcing_hel, forcing_hel_both, forcing_hel_kprof, forcing_hel_noshear, forcing_hel_smooth, forcing_hillrain, forcing_hshear, forcing_irro, forcing_mhd_mode, forcing_nocos, forcing_roberts, forcing_spherical_radial, forcing_tg, forcing_tidal, forcing_twist, forcing_white_noise, fountain, fpre, fxyz_coefs_hel, get_2dmodes, height_ff, hel_vec, helsign, i2fff, i2ffx, i2ffy, i2ffz, icklist, idiag_bfm, idiag_ffm, idiag_fxbym, idiag_fxbzm, idiag_ofm, idiag_rufint, idiag_rufm, idiag_ruxfxm, idiag_ruxfym, idiag_ruyfxm, idiag_ruyfym, idiag_ruzfzm, idiag_ufm, ifcont_aux, iff, iff_aux, ifff, iffx, iffy, iffz, iforce, iforce2, iforce_profile, iforce_tprofile, iforcing_cont, iforcing_zsym, ifx, ify, ifz, input_persist_forcing, input_persist_forcing_id, input_persistent_forcing, itestfield_forcing_offset, itestflow_forcing_offset, iylm_list, iylm_rot, jtest_aa0, jtest_uu0, k1xyz, k2d, kav2, kf_fcont, kf_fcont_x, kf_fcont_y, kf_fcont_z, kfountain, kkx2, kky2, kkz2, kmax_gp, kmin_gp, kx_2df, kx_ff, ky_2df, ky_ff, kz_ff, kzlarge, l2dxz, l2dyz, laniso_forcing_old, lavoid_xymean, lavoid_ymean, lavoid_zmean, lconservative_hydro, lconservative_ptr, lcrosshel_forcing, ldiscrete_phases, lembed, lfastck, lfastsr, lfcont_as_comaux, lff_as_aux, lforce_always_all_compomemts, lforce_cuty, lforce_peri, lforce_ramp_down, lforcing2_curl, lforcing2_same, lforcing_coefs_hel_double, lforcing_osc, lforcing_osc2, lforcing_osc_double, lgentle, lhelical_test, lhydro_forcing, lisotropize_sr, lmagnetic_forcing, lmhd_forcing, lmomentum_ff, lneutral_forcing, location2, lrandom_time, lsamesign, lshearing_adjust_old, ltestfield_forcing, ltestflow_forcing, lwork_ff, lwrite_gausspot_to_file, lwrite_gausspot_to_file_always, lwrite_psi, lxxcorr_forcing, lxycorr_forcing, max_force, n_axisrot_angles, n_equator_ff, n_forcing_cont, n_hel_sin_pow, ncol, nexp_ff, nk2, nk_gp, nlist_ck, nlocation, old_forcing_evector, omega_double_ff, omega_fcont, omega_ff, omega_tidal, omegay_fcont, omegaz_fcont, phi1_ff, phi2_ff, phi_tidal, profx_ampl, profx_ampl1, profx_hel, profy_ampl, profy_hel, profz_ampl, profz_hel, profz_k, psif, qdouble_profile, r0_tidal, r_ff, r_ff_hel, radius_ff, random2d_kmax, random2d_kmin, random2d_kmodes, random2d_nmodes, rcyl_ff, rel_zcomp, rylm_list, rylm_rot, sinxt, sinyt, sinzt, slope_ff, sr_alpha_shift, sr_ell_shift, tauforce_ramp_down, tcor_gp, tforce_ramp_down, tforce_start, tforce_start2, tforce_stop, tforce_stop2, tgentle, theta_tg, torus, wff2_ampl, wff_ampl, width_bb, width_fcont, width_ff, work_ff, x1_fcont, x2_fcont, xff2_ampl, xff_ampl, xi_gp, xmaxf, xminf, yff2_ampl, yff_ampl, ymaxf, yminf, z_bb, z_center, z_center_fcont, zff2_ampl, zff_ampl, zff_height, zff_hel, zpsi_list

Routines:

addforce(), calc_diagnostics_forcing(), calc_pencils_forcing(), forcing_after_boundary(), forcing_clean_up(), forcing_cont(), forcing_pars_hel(), initialize_forcing(), input_persistent_forcing(), output_persistent_forcing(), pencil_criteria_forcing(), pencil_interdep_forcing(), read_forcing_run_pars(), register_forcing(), rprint_forcing(), write_forcing_run_pars()

Needed modules

Variables

  • forcing/ampl_bb [real,private/optional/default=0.05]
  • forcing/ampl_ff [real,private/optional/default=1.0]
  • forcing/calc_force_ampl [private]
  • forcing/ck_equator_gap [real,private/optional/default=0.0]
  • forcing/ck_gap_step [real,private/optional/default=0.0]
  • forcing/cklist (*,*) [real,private/allocatable]
  • forcing/cosx (mx) [real,private]
  • forcing/cosy (my) [real,private]
  • forcing/cosz (mz) [real,private]
  • forcing/crosshel [real,private/optional/default=0.0]
  • forcing/dforce [real,private/optional/default=0.0]
  • forcing/dtforce [real,private/optional/default=0.0]
  • forcing/dtforce_duration [real,private/optional/default=-1.0]
  • forcing/embedx (mx) [real,private]
  • forcing/embedy (my) [real,private]
  • forcing/embedz (mz) [real,private]
  • forcing/eps_fcont [real,private/optional/default=0.0]
  • forcing/equator [real,private/optional/default=0.0]
  • forcing/eta_bb [real,private/optional/default=0.0001]
  • forcing/force [real,private/optional/default=0.0]
  • forcing/force2 [real,private/optional/default=0.0]
  • forcing/force_direction (3) [real,private/optional/default=(/0.,0.,0./)]
  • forcing/force_strength [real,private/optional/default=0.0]
  • forcing/forcing_2drandom_xy [private]
  • forcing/forcing_abc [private]
  • forcing/forcing_blobs [private]
  • forcing/forcing_chandra_kendall [private]
  • forcing/forcing_cktest [private]
  • forcing/forcing_coefs_hel [private]
  • forcing/forcing_cont_after_boundary [private]
  • forcing/forcing_continuous [private]
  • forcing/forcing_diffrot [private]
  • forcing/forcing_fountain [private]
  • forcing/forcing_gaussianpot [private]
  • forcing/forcing_gp [private]
  • forcing/forcing_hel [private]
  • forcing/forcing_hel_both [private]
  • forcing/forcing_hel_kprof [private]
  • forcing/forcing_hel_noshear [private]
  • forcing/forcing_hel_smooth [private]
  • forcing/forcing_hshear [private]
  • forcing/forcing_irro [private]
  • forcing/forcing_nocos [private]
  • forcing/forcing_roberts [private]
  • forcing/forcing_tg [private]
  • forcing/forcing_twist [private]
  • forcing/fountain [real,private/optional/default=1.0]
  • forcing/fpre [real,private/optional/default=1.0]
  • forcing/get_2dmodes [private]
  • forcing/height_ff [real,private/optional/default=0.0]
  • forcing/hel_vec [private]
  • forcing/helsign [integer,private/optional/default=0]
  • forcing/i2fff [integer,private]
  • forcing/i2ffx [integer,private]
  • forcing/i2ffy [integer,private]
  • forcing/i2ffz [integer,private]
  • forcing/icklist [integer,private]
  • forcing/id_block_persistent [integer,private/parameter/optional/default=2000]
  • forcing/id_record_dt_gw [integer,private/parameter/optional/default=350]
  • forcing/id_record_eps_rkf [integer,private/parameter/optional/default=331]
  • forcing/id_record_forcing_location [integer,private/parameter/optional/default=270]
  • forcing/id_record_forcing_torus [integer,private/parameter/optional/default=272]
  • forcing/id_record_forcing_tsforce [integer,private/parameter/optional/default=271]
  • forcing/id_record_hydro_ampl [integer,private/parameter/optional/default=286]
  • forcing/id_record_hydro_avec_gb [integer,private/parameter/optional/default=289]
  • forcing/id_record_hydro_location [integer,private/parameter/optional/default=285]
  • forcing/id_record_hydro_phase1 [integer,private/parameter/optional/default=281]
  • forcing/id_record_hydro_phase2 [integer,private/parameter/optional/default=282]
  • forcing/id_record_hydro_qvec_gb [integer,private/parameter/optional/default=288]
  • forcing/id_record_hydro_tphase [integer,private/parameter/optional/default=280]
  • forcing/id_record_hydro_tsforce [integer,private/parameter/optional/default=284]
  • forcing/id_record_hydro_wavenumber [integer,private/parameter/optional/default=287]
  • forcing/id_record_ism_bold_mass [integer,private/parameter/optional/default=252]
  • forcing/id_record_ism_pos_next_old [integer,private/parameter/optional/default=251]
  • forcing/id_record_ism_snrs [integer,private/parameter/optional/default=259]
  • forcing/id_record_ism_snrs_old [integer,private/parameter/optional/default=1002]
  • forcing/id_record_ism_t_cluster [integer,private/parameter/optional/default=261]
  • forcing/id_record_ism_t_next_old [integer,private/parameter/optional/default=250]
  • forcing/id_record_ism_t_next_sni [integer,private/parameter/optional/default=253]
  • forcing/id_record_ism_t_next_snii [integer,private/parameter/optional/default=254]
  • forcing/id_record_ism_toggle_old [integer,private/parameter/optional/default=1001]
  • forcing/id_record_ism_toggle_sni [integer,private/parameter/optional/default=257]
  • forcing/id_record_ism_toggle_snii [integer,private/parameter/optional/default=258]
  • forcing/id_record_ism_x_cluster [integer,private/parameter/optional/default=255]
  • forcing/id_record_ism_y_cluster [integer,private/parameter/optional/default=256]
  • forcing/id_record_ism_z_cluster [integer,private/parameter/optional/default=260]
  • forcing/id_record_iteration_number [integer,private/parameter/optional/default=100]
  • forcing/id_record_magnetic_ampl [integer,private/parameter/optional/default=312]
  • forcing/id_record_magnetic_phase [integer,private/parameter/optional/default=311]
  • forcing/id_record_random_seeds [integer,private/parameter/optional/default=1]
  • forcing/id_record_random_seeds2 [integer,private/parameter/optional/default=2]
  • forcing/id_record_shear_delta_y [integer,private/parameter/optional/default=320]
  • forcing/id_record_special_lnkmin0 [integer,private/parameter/optional/default=340]
  • forcing/id_record_time_step [integer,private/parameter/optional/default=330]
  • forcing/idiag_ffm [integer,private/optional/default=0]
  • forcing/idiag_fxbxm [integer,private/optional/default=0]
  • forcing/idiag_fxbym [integer,private/optional/default=0]
  • forcing/idiag_fxbzm [integer,private/optional/default=0]
  • forcing/idiag_ofm [integer,private/optional/default=0]
  • forcing/idiag_rufm [integer,private/optional/default=0]
  • forcing/idiag_ufm [integer,private/optional/default=0]
  • forcing/ifff [integer,private]
  • forcing/iffx [integer,private]
  • forcing/iffy [integer,private]
  • forcing/iffz [integer,private]
  • forcing/iforce [character,private/optional/default='zero']
  • forcing/iforce2 [character,private/optional/default='zero']
  • forcing/iforce_profile [character,private/optional/default='nothing']
  • forcing/iforcing_cont [character,private/optional/default='abc']
  • forcing/input_persist_forcing [private]
  • forcing/input_persist_forcing_id [private]
  • forcing/input_persistent_forcing [public]
  • forcing/itestfield_forcing_offset [integer,private/optional/default=0]
  • forcing/itestflow_forcing_offset [integer,private/optional/default=0]
  • forcing/iylm_list (*,*,*) [real,private/allocatable]
  • forcing/jtest_aa0 [integer,private/optional/default=5]
  • forcing/jtest_uu0 [integer,private/optional/default=1]
  • forcing/k1_ff [real,private/optional/default=1.0]
  • forcing/k2d [integer,private]
  • forcing/kf_fcont [real,private/optional/default=0.0]
  • forcing/kfountain [integer,private/optional/default=5]
  • forcing/l2dxz [logical,private]
  • forcing/l2dyz [logical,private]
  • forcing/lcrosshel_forcing [logical,private/optional/default=.false.]
  • forcing/lembed [logical,private/optional/default=.false.]
  • forcing/lfastck [logical,private/optional/default=.false.]
  • forcing/lforce_cuty [logical,private/optional/default=.false.]
  • forcing/lforce_peri [logical,private/optional/default=.false.]
  • forcing/lgentle [logical,private/optional/default=.false.]
  • forcing/lhelical_test [logical,private/optional/default=.false.]
  • forcing/lhydro_forcing [logical,public/optional/default=.true.]
  • forcing/lmagnetic_forcing [logical,private/optional/default=.false.]
  • forcing/lmomentum_ff [logical,private/optional/default=.false.]
  • forcing/location (3) [real,private]
  • forcing/location_fixed (3) [real,private/optional/default=(/0.,0.,0./)]
  • forcing/lrandom_location [logical,private/optional/default=.true.]
  • forcing/lsamesign [logical,private/optional/default=.true.]
  • forcing/lscale_kvector_fac [logical,private/optional/default=.false.]
  • forcing/lscale_kvector_tobox [logical,private/optional/default=.false.]
  • forcing/lshearing_adjust_old [logical,private/optional/default=.false.]
  • forcing/ltestfield_forcing [logical,private/optional/default=.false.]
  • forcing/ltestflow_forcing [logical,public/optional/default=.false.]
  • forcing/lwork_ff [logical,private/optional/default=.false.]
  • forcing/lwrite_gausspot_to_file [logical,private/optional/default=.false.]
  • forcing/lwrite_psi [logical,private/optional/default=.false.]
  • forcing/max_force [real,private/optional/default=impossible]
  • forcing/n_forcing_cont [integer,public/optional/default=n_forcing_cont_max]
  • forcing/nexp_ff [real,private/optional/default=1.0]
  • forcing/nlist_ck [integer,private/optional/default=25]
  • forcing/old_forcing_evector [logical,private/optional/default=.false.]
  • forcing/omega_fcont [real,private/optional/default=0.0]
  • forcing/omega_ff [real,private/optional/default=1.0]
  • forcing/phi1_ff (my) [real,private]
  • forcing/phi2_ff (mx) [real,private]
  • forcing/profx_ampl (nx) [real,private/optional/default=1.]
  • forcing/profx_hel (nx) [real,private/optional/default=1.]
  • forcing/profy_ampl (my) [real,private/optional/default=1.]
  • forcing/profy_hel (my) [real,private/optional/default=1.]
  • forcing/profz_ampl (mz) [real,private/optional/default=1.]
  • forcing/profz_hel (mz) [real,private/optional/default=1.]
  • forcing/psif (*,*,*) [real,private/allocatable]
  • forcing/r_ff [real,private/optional/default=0.0]
  • forcing/radius_ff [real,private/optional/default=0.0]
  • forcing/random2d_kmax [integer,private]
  • forcing/random2d_kmin [integer,private]
  • forcing/random2d_kmodes (*,*) [integer,private/allocatable]
  • forcing/random2d_nmodes [integer,private]
  • forcing/rcyl_ff [real,private/optional/default=0.0]
  • forcing/relhel [real,private/optional/default=1.0]
  • forcing/rylm_list (*,*,*) [real,private/allocatable]
  • forcing/scale_kvectorx [real,private/optional/default=1.0]
  • forcing/scale_kvectory [real,private/optional/default=1.0]
  • forcing/scale_kvectorz [real,private/optional/default=1.0]
  • forcing/sinx (mx) [real,private]
  • forcing/siny (my) [real,private]
  • forcing/sinz (mz) [real,private]
  • forcing/slope_ff [real,private/optional/default=0.0]
  • forcing/tforce_start [real,private/optional/default=0.0]
  • forcing/tforce_start2 [real,private/optional/default=0.0]
  • forcing/tforce_stop [real,private/optional/default=impossible]
  • forcing/tforce_stop2 [real,private/optional/default=impossible]
  • forcing/tgentle [real,private/optional/default=0.0]
  • forcing/tsforce [real,private/optional/default=-10.0]
  • forcing/wff_ampl [real,private/optional/default=0.0]
  • forcing/width_bb [real,private/optional/default=0.1]
  • forcing/width_fcont [real,private/optional/default=1.0]
  • forcing/width_ff [real,private/optional/default=0.5]
  • forcing/work_ff [real,private/optional/default=0.0]
  • forcing/x1_fcont [real,private/optional/default=0.0]
  • forcing/x2_fcont [real,private/optional/default=0.0]
  • forcing/xff_ampl [real,private/optional/default=0.0]
  • forcing/z_bb [real,private/optional/default=0.1]
  • forcing/zff_ampl [real,private/optional/default=0.0]
  • forcing/zff_hel [real,private/optional/default=0.0]
  • forcing/zpsi_list (*,*,*) [real,private/allocatable]

Subroutines and functions

subroutine  forcing/register_forcing()

add forcing in timestep() 11-may-2002/wolf: coded

Use :

mpicomm, sub

Call to:

svn_id(), stop_it(), fatal_error(), erfunc(), timing(), mpifinalize(), inevitably_fatal_error(), curl(), warning(), gij_psi(), curl_mn(), gij_psi_etc(), multsv_mn(), dot_mn(), read_snaptime(), update_snaptime(), blob(), forcing_cont(), output_persistent_forcing()

subroutine  forcing/initialize_forcing()

read seed field parameters nothing needs to be done when called from start.f90

Use :

mpicomm (stop_it()), sub (step(), erfunc())

Call to:

stop_it(), fatal_error(), erfunc(), timing(), mpifinalize(), inevitably_fatal_error(), curl(), warning(), gij_psi(), curl_mn(), gij_psi_etc(), multsv_mn(), dot_mn(), read_snaptime(), update_snaptime(), blob(), forcing_cont(), output_persistent_forcing()

subroutine  forcing/addforce(f)

add forcing at the end of each time step Since forcing is constant during one time step, this can be added as an Euler 1st order step

Parameters:

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

Call to:

timing(), mpifinalize(), inevitably_fatal_error(), fatal_error(), curl(), warning(), stop_it(), gij_psi(), curl_mn(), gij_psi_etc(), multsv_mn(), dot_mn(), read_snaptime(), update_snaptime(), blob(), forcing_cont(), output_persistent_forcing()

subroutine  forcing/forcing_after_boundary(f)

precalculate parameters that are new at each timestep, but the same for all pencils

Parameters:

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

Call to:

mpifinalize(), inevitably_fatal_error(), fatal_error(), curl(), warning(), stop_it(), gij_psi(), curl_mn(), gij_psi_etc(), multsv_mn(), dot_mn(), read_snaptime(), update_snaptime(), blob(), forcing_cont(), output_persistent_forcing()

subroutine  forcing/pencil_criteria_forcing()

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

24-mar-08/axel: adapted from density.f90

Call to:

forcing_cont(), stop_it(), dot_mn(), output_persistent_forcing()

subroutine  forcing/pencil_interdep_forcing(lpencil_in)

Interdependency among pencils from the Forcing module is specified here.

24-mar-08/axel: adapted from density.f90

Parameters:

lpencil_in (npencils) [logical]

Call to:

forcing_cont(), stop_it(), dot_mn(), output_persistent_forcing()

subroutine  forcing/calc_pencils_forcing(f, p)

Calculate forcing pencils.

24-mar-08/axel: adapted from density.f90

6-feb-09/axel: added epsilon factor in ABC flow (eps_fcont=1. -> nocos)

Parameters:
Call to:

forcing_cont(), stop_it(), dot_mn(), output_persistent_forcing()

subroutine  forcing/calc_diagnostics_forcing(p)

dummy routine

Parameters:

p [pencil_case]

Call to:

stop_it(), dot_mn(), output_persistent_forcing()

subroutine  forcing/forcing_cont(force)

9-apr-10/MR: added RobertsFlow_exact forcing, compensates nunabla^2 u and u.grad u for Roberts geometry Note: It is not enough to set lforcing_cont = T in input parameters of forcing one must also set lforcing_cont_uu = T in hydro for the continious is time forcing to be added to velocity.

Parameters:

force (nx,3) [real,out]

Use :

sub (quintic_step(), quintic_der_step()), mpicomm (stop_it()), gravity (gravz()), sharedvariables (get_shared_variable()), viscosity (getnu())

Call to:

stop_it(), dot_mn(), output_persistent_forcing()

subroutine  forcing/read_forcing_run_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

Call to:

output_persistent_forcing()

subroutine  forcing/write_forcing_run_pars(unit)
Parameters:

unit [integer,in]

Call to:

output_persistent_forcing()

function  forcing/output_persistent_forcing()

Writes out the time of the next SNI This is used, for example, for forcing functions with temporal memory, such as in the paper by Mee & Brandenburg (2006, MNRAS)

21-dec-05/tony: coded 13-Dec-2011/Bourdin.KIS: reworked

Return:

output_persistent_forcing [logical]

Use :

io (write_persist())

subroutine  forcing/rprint_forcing(lreset[, lwrite])

reads and registers print parameters relevant for hydro part

26-jan-04/axel: coded

Parameters:
  • lreset [logical]

  • lwrite [logical]

Use :

diagnostics

subroutine  forcing/forcing_pars_hel(force_fact, kkx, kky, kkz, nk, kav, coef1, coef2, coef3, kk, phase, fact, fda)
Parameters:
  • force_fact [real,in]

  • kkx (nk) [real,in]

  • kky (nk) [real,in]

  • kkz (nk) [real,in]

  • nk [integer,in,]

  • kav [real,in]

  • coef1 (3) [real,out]

  • coef2 (3) [real,out]

  • coef3 (3) [real,out]

  • kk (3) [real,out]

  • phase [real,out]

  • fact [real,out]

  • fda (3) [real,out]

Use :

general (keep_compiler_quiet())

subroutine  forcing/forcing_clean_up()

deallocate the variables needed for forcing

12-aug-09/dhruba: coded

subroutine  forcing/pushpars2c(p_par)
Parameters:

p_par (0) [integer]