border_profiles

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 logical, parameter :: lborder_profiles = .true.


Quick access

Variables:

border_prof_r, border_prof_x, border_prof_y, border_prof_z, fac_sqrt_gsum1, fraction_tborder1, fsave_init_xy, fsave_init_xz, get_border, get_drive_time, i_border_, i_border_special, i_border_zero, iborder_var_max, iborder_var_max_current, lborder_driving, lborder_quenching, set_border_xy, set_border_xz, tborder1

Routines:

border_driving(), border_quenching(), calc_pencils_borderprofiles(), initialize_border_profiles(), pencil_criteria_borderprofiles(), request_border_driving(), set_border_initcond()

Needed modules

Variables

  • borderprofiles/border_prof_r (mx,my,mz) [real,private/optional/default=1.0]
  • borderprofiles/border_prof_x (mx) [real,private/optional/default=1.0]
  • borderprofiles/border_prof_y (my) [real,private/optional/default=1.0]
  • borderprofiles/border_prof_z (mz) [real,private/optional/default=1.0]
  • borderprofiles/fac_sqrt_gsum1 [real,private/optional/default=1.0]
  • borderprofiles/fraction_tborder1 [real,private/optional/default=impossible]
  • borderprofiles/fsave_init_xy (*,*,*) [real,private/allocatable]
  • borderprofiles/fsave_init_xz (*,*,*) [real,private/allocatable]
  • borderprofiles/get_border [private]
  • borderprofiles/get_drive_time [private]
  • borderprofiles/i_border_ [integer,public/parameter/optional/default=3]
  • borderprofiles/i_border_special [integer,public/parameter/optional/default=2]
  • borderprofiles/i_border_zero [integer,public/parameter/optional/default=1]
  • borderprofiles/iborder_var_max [integer,private/optional/default=0]
  • borderprofiles/iborder_var_max_current [integer,private/optional/default=0]
  • borderprofiles/lborder_driving [logical,private/optional/default=.false.]
  • borderprofiles/lborder_quenching [logical,private/optional/default=.false.]
  • borderprofiles/set_border_xy [private]
  • borderprofiles/set_border_xz [private]
  • borderprofiles/tborder1 [real,private/optional/default=impossible]

Subroutines and functions

subroutine  borderprofiles/initialize_border_profiles()

Position-dependent quenching factor that multiplies rhs of pde by a factor that goes gradually to zero near the boundaries. border_frac_[xyz] is a 2-D array, separately for all three directions. border_frac_[xyz]=1 would affect everything between center and border.

9-nov-09/axel: set r_int_border and r_ext_border if still impossible

17-jun-10/wlad: moved r_int_border and r_ext_border to border drive

because r_int and r_ext are not set until after all calls to initialize are done in Register.

Use :

hdf5_io (output_profile()), io (input_snap(), input_snap_finalize()), sharedvariables (get_shared_variable())

Call to:

fatal_error(), input_snap(), input_snap_finalize(), del6()

subroutine  borderprofiles/request_border_driving(bordertype, caller, ivar_border1[, ivar_border2])

Tell the BorderProfiles subroutine that we need border driving; determines maximum variable index iborder_var_max across all modules, which employ border driving. Used for requesting the right pencils. Only to be called if there is a variable requesting initial condition as border.

25-aug-09/anders: coded 06-mar-11/wlad : added IC functionality

Parameters:
  • bordertype (*) [character]

  • caller [character]

  • ivar_border1 [integer,in]

  • ivar_border2 [integer,in,]

Use :

general (ioptest())

Call to:

fatal_error(), del6()

subroutine  borderprofiles/pencil_criteria_borderprofiles()

All pencils that this module depends on are specified here.

25-dec-06/wolf: coded

Call to:

fatal_error(), del6()

subroutine  borderprofiles/calc_pencils_borderprofiles(f, p)
Parameters:
Use :

general (keep_compiler_quiet())

Call to:

fatal_error(), del6()

subroutine  borderprofiles/set_border_initcond(f, ivar, fborder)
Parameters:
Use :

general (keep_compiler_quiet())

Call to:

fatal_error(), del6()

subroutine  borderprofiles/border_driving(f, df, p, f_target, j)

Position-dependent driving term that attempts to drive pde the variable toward some target solution on the boundary.

The driving is applied in the inner stripe between r_int_border and r_int_border+2*w, and in the outer stripe between r_ext_border-2*w and r_ext_border, as sketched below

Radial extent of the box:

border | untouched | border | ——————————————-
r_int_border r_int_border … r_ext_border r_ext_border

+2*w -2*w

Parameters:
Call to:

del6()

subroutine  borderprofiles/border_quenching(f, df, dt_sub)
Parameters:
Use :

sub (del6())

Call to:

del6()

subroutine  borderprofiles/pushpars2c(p_par)
Parameters:

p_par (10) [integer]

Use :

syscalls (copy_addr())