deriv_3sec_insteadof_14min_compiletime

Module

Description

$Id$

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

CPARAM integer, parameter :: nghost = 3


Quick access

Variables:

bval_from_3rd, bval_from_3rd_arr, bval_from_3rd_scl, bval_from_4th, bval_from_4th_arr, bval_from_4th_scl, bval_from_neumann, bval_from_neumann_arr, bval_from_neumann_scl, der, der2, der2_coef0, der2_coef1, der2_coef2, der2_coef3, der2_coef4, der2_coef5, der2_main, der2_other, der6, der6_main, der6_other, der_main, der_onesided_4_slice, der_onesided_4_slice_main, der_onesided_4_slice_main_pt, der_onesided_4_slice_other_pt, der_other, deri, deri_2d, deri_3d, derij, derij_main, derij_other, derivative_1, set_ghosts_for_onesided_ders_1d, test

Routines:

calc_coeffs_1(), der2_minmod(), der2_pencil(), der2_x(), der2_z(), der2i2j2k(), der3(), der3i2j1k(), der3i3j(), der4(), der4i1j1k(), der4i2j(), der5(), der5_single(), der5i1j(), der6(), der6_pencil(), der_onesided_4_slice_other(), der_pencil(), der_upwind1st(), der_x(), der_z(), deri_3d_inds(), distr_der(), finalize_deriv(), heatflux_deriv_x(), initialize_deriv(), set_ghosts_for_onesided_ders()

Needed modules

Variables

  • deriv/bval_from_3rd [public]
  • deriv/bval_from_3rd_arr [private]
  • deriv/bval_from_3rd_scl [private]
  • deriv/bval_from_4th [public]
  • deriv/bval_from_4th_arr [private]
  • deriv/bval_from_4th_scl [private]
  • deriv/bval_from_neumann [public]
  • deriv/bval_from_neumann_arr [private]
  • deriv/bval_from_neumann_scl [private]
  • deriv/der [public]
  • deriv/der2 [public]
  • deriv/der2_coef0 [real,private]
  • deriv/der2_coef1 [real,private]
  • deriv/der2_coef2 [real,private]
  • deriv/der2_coef3 [real,private]
  • deriv/der2_main [private]
  • deriv/der2_other [private]
  • deriv/der6_other [public]
  • deriv/der_main [private]
  • deriv/der_onesided_4_slice [public]
  • deriv/der_onesided_4_slice_main [private]
  • deriv/der_onesided_4_slice_main_pt [private]
  • deriv/der_onesided_4_slice_other_pt [private]
  • deriv/der_other [private]
  • deriv/derij [public]
  • deriv/derij_main [private]
  • deriv/derij_other [private]
  • deriv/minmod [private]

Subroutines and functions

subroutine  deriv/initialize_deriv()

Initialize stencil coefficients

23-sep-16/MR: added initialization and manipulation of l-offsets for complete

one-sided calculation of 2nd derivatives

5-jan-17/MR: removed offset manipulation as not needed; see set_ghosts_for_onesided_ders

Use :

general (indgen())

Call to:

fatal_error(), warning(), der5_single(), der6(), heatflux_deriv_x()

subroutine  deriv/der_x(f, df)

x derivative operating on an x-dependent 1-D array

23-jun-15/pete: adapted from der_z; note that f is not the f array!

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

  • df (nx) [real,out]

Call to:

fatal_error(), warning(), der5_single(), der6(), heatflux_deriv_x()

subroutine  deriv/der2_x(f, df2)

Second x derivative operating on an x-dependent 1-D array

23-jun-15/pete: adapted from der2_z

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

  • df2 (nx) [real,out]

Call to:

fatal_error(), warning(), der5_single(), der6(), heatflux_deriv_x()

subroutine  deriv/der_z(f, df)

z derivative operating on a z-dependent 1-D array

9-feb-07/axel: adapted from der_main; note that f is not the f array!

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

  • df (nz) [real,out]

Call to:

fatal_error(), warning(), der5_single(), der6(), heatflux_deriv_x()

subroutine  deriv/der2_z(f, df2)

z derivative operating on a z-dependent 1-D array

2-jan-10/axel: adapted from der_z and der_main

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

  • df2 (nz) [real,out]

Call to:

fatal_error(), warning(), der5_single(), der6(), heatflux_deriv_x()

subroutine  deriv/der_pencil(j, pencil, df)

Calculate first derivative of any x, y or z pencil.

01-nov-07/anders: adapted from der

Parameters:
  • j [integer,in]

  • pencil (*) [real,in]

  • df (*) [real,out]

Call to:

fatal_error(), warning(), der5_single(), der6(), heatflux_deriv_x()

subroutine  deriv/der2_pencil(j, pencil, df2)

Calculate 2nd derivative of any x, y or z pencil.

01-nov-07/anders: adapted from der2

Parameters:
  • j [integer,in]

  • pencil (*) [real,in]

  • df2 (*) [real,out]

Call to:

fatal_error(), warning(), der5_single(), der6(), heatflux_deriv_x()

subroutine  deriv/der3(f, k, df, j[, ignoredx])

Calculate 3rd derivative of a scalar, get scalar

10-feb-06/anders: adapted from der5

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

  • k [integer,in]

  • df (nx) [real,out]

  • j [integer,in]

  • ignoredx [logical,in,]

Call to:

fatal_error(), warning(), der5_single(), der6(), heatflux_deriv_x()

subroutine  deriv/der4(f, k, df, j[, ignoredx[, upwind]])
Calculate 4th derivative of a scalar, get scalar

Used for hyperdiffusion that affects small wave numbers as little as

possible (useful for density).

The optional flag IGNOREDX is useful for numerical purposes, where

you want to affect the Nyquist scale in each direction, independent of the ratios dx:dy:dz.

8-jul-02/wolf: coded 9-dec-03/nils: adapted from der6

10-feb-06/anders: corrected sign and factor

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

  • k [integer,in]

  • df (nx) [real,out]

  • j [integer,in]

  • ignoredx [logical,in,]

  • upwind [logical,in,]

Call to:

fatal_error(), warning(), der5_single(), der6(), heatflux_deriv_x()

subroutine  deriv/der5(f, k, df, j[, ignoredx])
Calculate 5th derivative of a scalar, get scalar

Used for hyperdiffusion that affects small wave numbers as little as

possible (useful for density).

The optional flag IGNOREDX is useful for numerical purposes, where

you want to affect the Nyquist scale in each direction, independent of the ratios dx:dy:dz.

29-oct-04/anders: adapted from der6

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

  • k [integer,in]

  • df (nx) [real,out]

  • j [integer,in]

  • ignoredx [logical,in,]

Call to:

fatal_error(), der5_single(), warning(), der6(), heatflux_deriv_x()

subroutine  deriv/der6(f, k, df, j[, ignoredx[, upwind]])
Calculate 6th derivative of a scalar, get scalar

Used for hyperdiffusion that affects small wave numbers as little as

possible (useful for density).

The optional flag IGNOREDX is useful for numerical purposes, where

you want to affect the Nyquist scale in each direction, independent of the ratios dx:dy:dz.

The optional flag UPWIND is a variant thereof, which calculates

D^(6)*dx^5/60, which is the upwind correction of centered derivatives.

8-jul-02/wolf: coded

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

  • k [integer,in]

  • df (nx) [real,out] :: (minus extra terms)

  • j [integer,in]

  • ignoredx [logical,in,]

  • upwind [logical,in,]

Called from:

register_magnetic(), initialize_magnetic(), init_aa(), pencil_criteria_magnetic(), pencil_interdep_magnetic(), daa_dt(), register_energy(), initialize_energy(), init_energy(), pencil_criteria_energy(), pencil_interdep_energy(), calc_pencils_energy(), denergy_dt(), update_char_vel_magnetic(), set_ambipolar_diffusion(), diamagnetism(), set_border_neutralvelocity(), calc_viscous_force_neutral(), rmwig(), der6(), register_shear(), initialize_shear(), read_shear_init_pars(), write_shear_init_pars(), read_shear_run_pars(), write_shear_run_pars(), shear_before_boundary(), pencil_criteria_shear(), pencil_interdep_shear(), calc_pencils_shear(), shearing(), calc_pencils_magnetic(), max_mn(), sum_mn(), dot_mn(), vec_dot_3tensor(), matrix2linarray(), linarray2matrix(), inv2_3x3mat(), scalartripleproduct(), det3x3mat(), dot_mn_sv(), dot_mn_sv_pencil(), dot_mn_sm(), dot_mn_vm(), dot_mn_vm_trans(), dot2_mn(), dot2_mx(), dot2fj(), dyadic2(), dyadic2_other(), trace_mn(), mult_matrix(), multm2_mn(), multm2_sym_mn(), multmv_mn(), invmat_db(), multsv_mn(), multsv_mn_add(), multsm_mn(), cross_mn(), cross_mixed(), gij(), gij_v_times_s(), gijl_symmetric(), grad5(), div(), div_tensor(), div_other(), div_mn(), div_mn_2tensor(), curl_mn(), curl_horizontal(), curl(), curl_other(), curli(), del2v(), del2m3x3_sym(), del2fj(), del2fi_dxjk(), d2fi_dxj(), symmetrise3x3_ut2lt(), del2v_etc(), del2vi_etc(), del4v(), del6v(), bij_tilde(), gij_etc(), g2ij(), del4(), del6(), del6_strict(), del4graddiv(), del6_other(), del6fj(), del6fjv(), u_dot_grad_mat(), nou_dot_grad_scl(), h_dot_grad_vec(), gradf_upw1st(), rdim(), read_snaptime(), update_snaptime(), shift_dt(), set_next_dt(), set_dt(), vecout(), vecout_initialize(), vecout_finalize(), despike(), smooth_kernel(), smooth(), smooth_mn(), get_smooth_kernel(), eulag_filter(), identify_bcs(), lower_triangular_index(), step_vector(), der6_step(), stepdown(), der_stepdown(), coeff_ydep(), parse_bc(), inverse_parse_bc(), parse_bc_rad(), parse_bc_radg(), parse_shell(), control_file_exists(), read_line_from_file(), get_nseed(), get_where(), write_dx_general(), write_zprof(), write_yprof(), write_xprof(), remove_prof(), blob(), blobs(), gamma_function(), tensor_diffusion_coef(), get_radial_distance(), interp1(), bspline_basis(), bspline_interpolation(), bspline_precondition(), ludcmp(), lubksb(), gij_psi(), gij_psi_etc(), location_in_proc(), xlocation(), ylocation(), zlocation(), position(), fourier_single_mode(), register_report_aux(), unit_vector(), calc_del6_for_upwind()

Call to:

fatal_error(), der5_single(), warning(), der6(), heatflux_deriv_x()

subroutine  deriv/der2_minmod(f, j, delfk, delfkp1, delfkm1, k)

Calculates gradient of a scalar along the direction j but get for the derivatives at the point i-1,i,i+1

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

  • j [integer,in]

  • delfk (nx) [real,out]

  • delfkp1 (nx) [real,out]

  • delfkm1 (nx) [real,out]

  • k [integer,in]

Call to:

fatal_error(), der5_single(), warning(), der6(), heatflux_deriv_x()

function  deriv/der5_single(f, j, dc1)

computes 5th order derivative of function given by f at position j

3-oct-12/MR: coded

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

  • j [integer,in]

  • dc1 (*) [real,in]

Return:

der5_single [real]

Call to:

warning(), der6(), fatal_error(), heatflux_deriv_x()

subroutine  deriv/der5i1j(f, k, df, i, j)

Calculate 6th derivative with respect to two different directions.

05-dec-06/anders: adapted from derij

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

  • k [integer,in]

  • df (nx) [real,out]

  • i [integer,in]

  • j [integer,in]

Call to:

warning(), der6(), fatal_error(), heatflux_deriv_x()

subroutine  deriv/der4i2j(f, k, df, i, j)

Calculate 6th derivative with respect to two different directions.

02-apr-17/wlyra: adapted from der5i1j

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

  • k [integer,in]

  • df (nx) [real,out]

  • i [integer,in]

  • j [integer,in]

Call to:

warning(), der6(), fatal_error(), heatflux_deriv_x()

subroutine  deriv/der2i2j2k(f, k, df)

Mixed 6th derivative of der2x(der2y(der2z(f))). Worked out symbolically in python. Result as spit from the python routine.

02-apr-17/wlyra: coded

Parameters:
Call to:

warning(), fatal_error(), heatflux_deriv_x()

subroutine  deriv/der3i3j(f, ik, df, i, j)
Parameters:
  • f (mx,my,mz,mfarray) [real]

  • ik [integer,in]

  • df (nx) [real,out]

  • i [integer,in]

  • j [integer,in]

Call to:

fatal_error(), heatflux_deriv_x()

subroutine  deriv/der3i2j1k(f, ik, df, i, j, k)
Parameters:
  • f (mx,my,mz,mfarray) [real]

  • ik [integer,in]

  • df (nx) [real,out]

  • i [integer,in]

  • j [integer,in]

  • k [integer,in]

Call to:

fatal_error(), heatflux_deriv_x()

subroutine  deriv/der4i1j1k(f, ik, df, i, j, k)
Parameters:
  • f (mx,my,mz,mfarray) [real]

  • ik [integer,in]

  • df (nx) [real,out]

  • i [integer,in]

  • j [integer,in]

  • k [integer,in]

Call to:

fatal_error(), heatflux_deriv_x()

subroutine  deriv/der_upwind1st(f, uu, k, df, j)

First order upwind derivative of variable

Useful for advecting non-logarithmic variables

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

  • uu (nx,3) [real,in]

  • k [integer,in]

  • df (nx) [real,out]

  • j [integer,in]

Call to:

fatal_error(), heatflux_deriv_x()

subroutine  deriv/der_onesided_4_slice_other(f, sgn, df, pos, j)

Calculate x/y/z-derivative on a yz/xz/xy-slice at gridpoint pos. Uses a one-sided 4th order stencil. sgn = +1 for forward difference, sgn = -1 for backwards difference.

Because of its original intended use in relation to solving characteristic equations on boundaries (NSCBC), this sub should return only PARTIAL derivatives, NOT COVARIANT. Applying the right scaling factors and connection terms should instead be done when solving the characteristic equations.

7-jul-08/arne: coded.

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

  • sgn [integer,in]

  • df (,) [real,out]

  • pos [integer,in]

  • j [integer,in]

Call to:

fatal_error(), heatflux_deriv_x()

subroutine  deriv/finalize_deriv()

Dummy

Call to:

fatal_error(), heatflux_deriv_x()

subroutine  deriv/deri_3d_inds(f, df, inds, j[, lignored[, lnometric]])

dummy routine for compatibility

26-mar-12/MR: coded

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

  • df (nx) [real,out]

  • inds (nx) [integer,in]

  • j [integer,in]

  • lignored [logical,in,]

  • lnometric [logical,in,]

Call to:

fatal_error(), heatflux_deriv_x()

function  deriv/heatflux_deriv_x(f, inh, fac, topbot)

dummy routine

17-apr-12/MR: coded

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

  • inh (my,mz) [real,in]

  • fac [real,in]

  • topbot [integer,in]

Return:

heatflux_deriv_x [logical]

Use :

general (keep_compiler_quiet())

subroutine  deriv/set_ghosts_for_onesided_ders(f, topbot, j, idir[, l2nd])
Parameters:
  • f (mx,my,mz,*) [real]

  • topbot [character]

  • j [integer]

  • idir [integer]

  • l2nd [logical]

Use :

general (loptest())