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/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:
- 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 :
- Call to:
- subroutine borderprofiles/pencil_criteria_borderprofiles()
All pencils that this module depends on are specified here.
25-dec-06/wolf: coded
- Call to:
- subroutine borderprofiles/calc_pencils_borderprofiles(f, p)
- Parameters:
- Use :
- Call to:
- subroutine borderprofiles/set_border_initcond(f, ivar, fborder)
- Parameters:
- Use :
- Call to:
- 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
- subroutine borderprofiles/border_quenching(f, df, dt_sub)