bd_solver_m Module

Routines implementing Brownian Dynamics (BD) solver.


Uses

  • module~~bd_solver_m~~UsesGraph module~bd_solver_m bd_solver_m iso_c_binding iso_c_binding module~bd_solver_m->iso_c_binding module~constants_m constants_m module~bd_solver_m->module~constants_m module~brown_m brown_m module~bd_solver_m->module~brown_m module~config_io_m config_io_m module~bd_solver_m->module~config_io_m module~atmcfg_m atmcfg_m module~bd_solver_m->module~atmcfg_m module~stats_m stats_m module~bd_solver_m->module~stats_m module~logger_m logger_m module~bd_solver_m->module~logger_m module~control_m control_m module~bd_solver_m->module~control_m mkl_blas mkl_blas module~bd_solver_m->mkl_blas module~trajectory_m trajectory_m module~bd_solver_m->module~trajectory_m module~interaction_m interaction_m module~bd_solver_m->module~interaction_m iso_fortran_env iso_fortran_env module~constants_m->iso_fortran_env module~brown_m->iso_c_binding module~brown_m->module~constants_m module~brown_m->module~logger_m module~brown_m->mkl_blas module~strings_m strings_m module~brown_m->module~strings_m module~random_m random_m module~brown_m->module~random_m mkl_lapack mkl_lapack module~brown_m->mkl_lapack module~config_io_m->module~constants_m module~config_io_m->module~atmcfg_m module~config_io_m->module~strings_m module~simbox_m simbox_m module~config_io_m->module~simbox_m module~atmcfg_m->module~constants_m module~stats_m->module~constants_m module~stats_m->module~atmcfg_m module~stats_m->module~control_m module~stats_m->module~strings_m module~stats_m->module~simbox_m module~timestamp_m timestamp_m module~logger_m->module~timestamp_m module~logger_m->iso_fortran_env module~control_m->module~constants_m module~control_m->module~strings_m module~trajectory_m->module~constants_m module~interaction_m->module~constants_m module~interaction_m->module~atmcfg_m module~interaction_m->module~stats_m module~interaction_m->module~control_m module~ia_dihedral_m ia_dihedral_m module~interaction_m->module~ia_dihedral_m module~ia_bond_m ia_bond_m module~interaction_m->module~ia_bond_m module~ia_vdw_m ia_vdw_m module~interaction_m->module~ia_vdw_m module~ia_external_m ia_external_m module~interaction_m->module~ia_external_m module~ia_angle_m ia_angle_m module~interaction_m->module~ia_angle_m module~table_m table_m module~interaction_m->module~table_m module~interaction_m->module~simbox_m module~pairtab_m pairtab_m module~interaction_m->module~pairtab_m module~ia_tether_m ia_tether_m module~interaction_m->module~ia_tether_m module~ia_dihedral_m->module~constants_m module~ia_dihedral_m->module~atmcfg_m module~ia_bond_m->module~constants_m module~ia_bond_m->module~logger_m module~ia_bond_m->module~strings_m module~ia_vdw_m->module~constants_m module~ia_vdw_m->module~atmcfg_m module~ia_external_m->module~constants_m module~ia_external_m->module~atmcfg_m module~strings_m->module~constants_m module~ia_angle_m->module~constants_m module~ia_angle_m->module~atmcfg_m module~table_m->module~constants_m module~vector_m vector_m module~table_m->module~vector_m module~simbox_m->module~constants_m module~simbox_m->module~random_m module~pairtab_m->module~constants_m module~pairtab_m->module~atmcfg_m module~pairtab_m->module~table_m module~pairtab_m->module~simbox_m module~connectivity_m connectivity_m module~pairtab_m->module~connectivity_m module~pairtab_m->module~vector_m module~cell_list_m cell_list_m module~pairtab_m->module~cell_list_m module~aabbtree_m aabbtree_m module~pairtab_m->module~aabbtree_m module~ia_tether_m->module~constants_m module~ia_tether_m->module~atmcfg_m module~random_m->module~constants_m mkl_vsl_type mkl_vsl_type module~random_m->mkl_vsl_type mkl_vsl mkl_vsl module~random_m->mkl_vsl module~connectivity_m->module~constants_m module~connectivity_m->module~table_m module~connectivity_m->module~vector_m module~vector_m->module~constants_m module~qsort_m qsort_m module~vector_m->module~qsort_m module~cell_list_m->module~constants_m module~cell_list_m->module~simbox_m module~cell_list_m->module~vector_m module~aabbtree_m->module~constants_m module~aabbtree_m->module~strings_m module~aabbtree_m->module~vector_m module~aabb_m aabb_m module~aabbtree_m->module~aabb_m module~qsort_m->module~constants_m module~aabb_m->module~constants_m module~aabb_m->module~strings_m

Used by

  • module~~bd_solver_m~~UsedByGraph module~bd_solver_m bd_solver_m module~setup_m setup_m module~setup_m->module~bd_solver_m program~main main program~main->module~setup_m

Contents


Variables

TypeVisibility AttributesNameInitial
logical, private :: lhdia
logical, private :: write_traj
integer, private :: lanc_mxitr
integer, private :: nlmxitr
integer, private :: kdmax
integer, private :: nts_mobsam
real(kind=rp), private :: tim_stp
real(kind=rp), private :: lanc_tol
real(kind=rp), private :: ftol
real(kind=rp), private :: stptol
integer(kind=ip_long), private :: nts
integer(kind=ip_long), private :: nts_sim
integer(kind=ip_long), private :: nts_dump
integer(kind=ip_long), private :: nts_samp
integer(kind=ip_long), private :: nts_log
character(len=4), private :: mob_fctr
character(len=4), private :: bdintg
character(len=:), private, allocatable:: fn_revive
type(smbx_t), private, pointer:: psmbx=> null()
type(atmcfg_t), private, pointer:: patc=> null()
integer, private :: cntr_mobsam
real(kind=rp), private :: sqrt_two_dt
real(kind=rp), private, dimension(: ), allocatable:: drift
real(kind=rp), private, dimension(:,:), allocatable:: diffusion
real(kind=rp), private, dimension(:,:), allocatable:: mob
real(kind=rp), private, dimension(:), allocatable:: crd0
real(kind=rp), private, dimension(:), allocatable:: sol
real(kind=rp), private, dimension(:), allocatable:: nitsol_rwork
real(kind=rp), private, dimension(:), pointer:: pvcrd=> null()
real(kind=rp), private, dimension(:), pointer:: pvfrc=> null()

Subroutines

public subroutine bds_init(cpar, num_atoms, job_tag, ierr)

Initializes the BD solver.

Arguments

Type IntentOptional AttributesName
type(ctrlpar_t), intent(in) :: cpar
integer, intent(in) :: num_atoms
character(len=*), intent(in) :: job_tag
integer, intent(out) :: ierr

public subroutine bds_finish()

Clears up memory allocated in bds_init.

Arguments

None

public subroutine bds_run(nts_beg, simbox, atc, ierr)

Driver for BD integrator.

Read more…

Arguments

Type IntentOptional AttributesName
integer(kind=ip_long), intent(in) :: nts_beg
type(smbx_t), intent(in), target:: simbox
type(atmcfg_t), intent(inout), target:: atc
integer, intent(out) :: ierr

Error flag

private subroutine integrate_em(ierr)

Performs one step of BD integration using explicit Euler-Maruyama scheme.

Arguments

Type IntentOptional AttributesName
integer, intent(out) :: ierr

private subroutine integrate_se(ierr)

Performs one step of BD integration using semi-implicit Euler scheme.

Arguments

Type IntentOptional AttributesName
integer, intent(out) :: ierr

public subroutine se_fval(n, xcur, fcur, rpar, ipar, ierr)

Calculates the nonlinear function.

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: n
real(kind=rp), intent(in), dimension(*):: xcur
real(kind=rp), intent(out), dimension(*):: fcur
real(kind=rp), intent(in), dimension(*):: rpar
integer, intent(in), dimension(*):: ipar
integer, intent(out) :: ierr

public subroutine se_jacv(n, xcur, fcur, ijob, v, z, rpar, ipar, ierr)

Calculates jacobian times vector product. This is a dummy subroutine.

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: n
real(kind=rp), intent(in), dimension(:):: xcur
real(kind=rp), intent(in), dimension(:):: fcur
integer, intent(in) :: ijob
real(kind=rp), intent(in), dimension(:):: v
real(kind=rp), intent(out), dimension(:):: z
real(kind=rp), intent(in), dimension(:):: rpar
integer, intent(in), dimension(:):: ipar
integer, intent(out) :: ierr

private subroutine calc_diffusion(ierr)

Calculates the diffusion term of the SDE. Updates module variables diffusion and cntr_mobsam.

Arguments

Type IntentOptional AttributesName
integer, intent(out) :: ierr

private subroutine calc_drift(ierr)

Calculates the drift term of the SDE.

Arguments

Type IntentOptional AttributesName
integer, intent(out) :: ierr

private subroutine calc_rpy_tensor(coordinates, mob)

Calculates the RPY approximation to the mobility tensor.

Arguments

Type IntentOptional AttributesName
real(kind=rp), intent(in), dimension(:,:):: coordinates

(3, num_atoms*) matrix; stores the atom positions.

real(kind=rp), intent(out), dimension(:,:):: mob

(3num_atoms, 3num_atoms) matrix; stores the mobility tensor.