Please enable JavaScript.
Coggle requires JavaScript to display documents.
/Vashishta, common.f90, CBMC_Initialize.f90, ETableFunctions.f90,…
/Vashishta
EnergyInterfaceFunctions_Vashishta.f90
module
E_Interface_Vashishta
subroutine
Shift_EnergyCalc_Vashishta
#
#
call
Shift_ECalc_Inter
if (regrowType(disp(1)%molType) .ne. 0) then
if (useIntra(1)) then
call
Shift_ECalc_IntraNonBonded_Vashishta
subroutine
SwapIn_EnergyCalc_Vashishta
#
energy calculation when a molecule has been inserted
call
NewMol_ECalc_Inter
#
subroutine
SwapOut_EnergyCalc_Vashishta
#
energy calculation when a molecule has been selected for a removal
call
Mol_ECalc_Inter
subroutine
Update_SubEnergies_Vashishta
subroutine
Detailed_EnergyCalc_Vashishta
#
call
Detailed_ECalc_Inter
if (distCriteria)
else
call
Detailed_EnergyCriteria
call
Detailed_ECalc_IntraNonBonded
call
Detailed_DistanceCriteria
Vashishta_Functions.f90
module
InterEnergy_Vashishta
#
#
subroutine
Detailed_ECalc_Inter
E_T
#
E_twobody, E_steric, E_coulomb, E_chargeDipole, E_vanderWaals
subroutine
Shift_ECalc_Inter
#
subroutine
Mol_ECalc_Inter
#
subroutine
NewMol_ECalc_Inter
Rosen_Vashishta_Functions
module
Rosenbluth_Functions_Vashishta_Q
contains
pure subroutine
Rosen_Vashishta_Molecule_New
pure subroutine
Rosen_Vashishta_Molecule_Old
subroutine
Rosen_Vashishta_Atom_New
pure subroutine
Rosen_Vashishta_Atom_Old
subroutine
Rosen_Vashishta_Atom_Intra_New
pure subroutine
Rosen_Vashishta_Atom_Intra_Old
common.f90
module
CoordinateTypes
type
FloatPointer
type
SimpleMolCoords
#
#
real(dp), allocatable ::
x(:)
y(:)
z(:)
type
SimpleAtomCoords
type
GlobalAtomIndex
#
nType
nMol
nAtom
atmType
type
Molecule
globalIndx(:)
x(:), y(:), z(:)
indx
type
MolArrayType
#
mol(:)
type
MolPointers
#
type
Displacement
type
TrialCoordinates
#
molType, molIndx
x(:), y(:), z(:)
module
Coords
MolArray(:)
#
#
type(GlobalAtomIndex), allocatable ::
atomIndicies(:)
#
#
rosenTrial(:)
NeighborList(:)
NumNei(:)
typeList(:)
subIndxList(:)
newMol
,
newMol2
type(
SimpleMolCoords
), allocatable ::
gasConfig(:)
module
EnergyTables
integer, allocatable :: ETable(:)
real(dp), allocatable :: NeiETable(:)
real(dp), allocatable :: biasAlpha(:, :)
variables
E_inter_T
E_Inter_Diff
integer, allocatable :: neiCount(:)
module
WHAM_Module
real(dp), allocatable ::
refSizeNumbers(:)
WHAM_Numerator(:)
WHAM_Denominator(:, :)
HistStorage(:)
FreeEnergyEst(:)
BiasStorage(:, :)
NewBias(:)
ProbArray(:)
TempHist(:)
integer ::
refBin
intervalWHAM
maxSelfConsist
equilInterval
whamEstInterval
nWhamItter, nCurWhamItter
logical ::
useWHAM = .true.
real(dp) ::
tolLimit
module
IndexingFunctions
contains
subroutine
Get_MolIndex
pure subroutine
Get_SubIndex
pure integer function
Get_MolType
module
SimParameters
#
#
#
defined simulation parameters read using the
set
function
logical ::
multipleInput
= .false.
logical ::
calcPressure
= .false.
integer(kind=8) ::
ncycle, ncycle2
integer(kind=atomIntType) ::
nMolTypes
= 1
integer,allocatable ::
NMin(:), NMax(:)
integer,allocatable, target ::
NPart(:)
integer,allocatable, target ::
NPart_New(:)
logical,allocatable ::
isActive(:)
integer, target ::
NTotal, NTotal_New
integer ::
maxMol
integer ::
maxAtoms, vmdAtoms
real(dp) ::
avbmc_vol
logical ::
distCriteria
= .false.
real(dp), target ::
temperature, tempNew
real(dp) ::
global_r_min
real(dp) ::
softCutoff
real(dp) ::
Pressure, P_Diff
real(dp), allocatable ::
P_Avg(:)
Vashishta required parameters
real(dp) ::
r1s
real(dp) ::
rc
module
UmbrellaFunctions
contains
pure integer function
getBiasIndex
pure integer function
getNewBiasIndex
module
AcceptRates
module
AVBMC_RejectionVar
module
CBMC_Variables
module
ParallelVar
CBMC_Initialize.f90
subroutine
CBMC_CreateTopology
allocate (
regrowType
(1:nMolTypes), STAT=AllocateStatus)
allocate (
topolArray
(1:nMolTypes), STAT=AllocateStatus)
allocate (
regrowOrder
(1:nMolTypes, 1:maxAtoms), STAT=AllocateStatus)
allocate (
pathArray
(1:nMolTypes), STAT=AllocateStatus)
call
DetermineRegrowthType
call
DetermineRegrowOrder
#
subroutine
CBMC_FindPathways
subroutine
getNextAtom(iType, atmPrev, atmCur, atmNext)
subroutine
getBondedAtoms(iType, atmPrev, atmCur, nBranch, BondedAtoms)
subroutine
DetermineRegrowthType
#
subroutine
Schedule_BranchedMol_Swap
subroutine
DetermineRegrowOrder
ETableFunctions.f90
subroutine
Create_NeiTable
subroutine
Insert_NewNeiETable
subroutine
Insert_NewNeiETable_Distance_Old
subroutine
Insert_NewNeiETable_Distance
subroutine
Insert_NewNeiETable_Distance_V2
#
subroutine
Insert_NewNeiETable_Distance_V2_PairStore
ForceFieldFunctions.f90
module
ForceFieldVariableType
type AtomDef
Symb
atmName
sig, ep, q, mass
type atomDefV
#
real(dp) :: H, eta, Zi, Zj, r1s, D, r4s
real(dp) :: W, rc, B, xi, r0, C, theta
type BondDef
k_eq
ang_eq
angleName
type BendAngleDef
type TorsionAngleDef
type ImproperAngleIndex
type BondIndex
bondType
bondMembr(1:2)
type
NonBondedIndex
#
nonMembr(1:2)
module
ForceField
#
#
#
character(len=20) ::
ForceFieldName
type(AtomDef), allocatable ::
atomData(:)
#
type(AtomDefV), allocatable ::
atomDataV(:)
integer, allocatable ::
nAtoms(:)
nAtoms
(nMol)
#
# of atoms in index nMol
#
integer(kind=atomIntType), allocatable ::
atomArray(:, :)
atomArray
(nMol, iUnit)
nMol = number of molecule / mol type
iUnit = atomic number composing the molecule
type(NonBondedIndex), allocatable ::
nonBondArray(:, :)
module
ForceFieldFunctions
module
ForceFieldPara_Vashishta
#
#
module
WHAM_Functions
subroutine
WHAM_Initialize
subroutine
WHAM_AdjustHist
subroutine
WHAM_MidSimOutput
subroutine
WHAM_Finalize
WHAM_DG_Output.txt
WHAM_FinalBias.txt
WHAM_Probabilities.txt
WHAM_OverallHist.txt
Rosen_CreateSubset_Reverse
Simple_RosenConfigGen_Reverse_Vashishta
Rosen_Mol_Old_V
loop over Rosen configuration
Rosen_Mol_Old_V
#
E_Trial(m)
rosenRatio
for the selected molecule
nTarget
isIncluded(:)
AVBMC
AVBMC_EBias_Rosen_In
SwapIn_ECalc
=> SwapIn_EnergyCalc_Vashishta
E_T = E_T + E_Inter
NewMol_ECalc_Inter
E_Trial
#
E_T
#
AVBMC_EBias_Rosen_Out
SwapOut_ECalc
=> SwapOut_EnergyCalc_Vashishta
E_T = E_T + E_Inter
E_Inter = - E_Inter
Mol_ECalc_Inter
E_Trial
#
E_T
#
EBias_Remove_ReverseProbTarget
ProbTargIn
Simple_RosenConfig_Reverse_Vashishta
#
rosenRatio
EBias_Remove_ChooseNeighbor
ProblSel
Create_NeiETable
EBias_Remove_ChooseTarget
ProbTargOut
E_T
Translation
Translation(E_T, acc_x, atmp_x)
Shift_ECalc
=>
Shift_EnergyCalc_Vashishta
(
E_Inter
, E_Intra, disp, PairList, dETable, useIntra, rejMove, useInter)
E_Inter
#
subroutine
Shift_ECalc_Inter(E_Trial, disp, PairList, dETable, rejMove)
E_Trial
\( \Delta E = E_B - E_A\)
\( E_B = E_A + \Delta E \)
#
E_Inter_Diff = E_Inter
#
#
#
E_Inter
#
Update_Shift
(disp(1:nAtoms(nType)), nType, nIndx,
E_T, E_Inter
, acc_x, atmp_x, PairList, dETable)
Update_SubEnergies_Vashishta
E_Inter_T = E_Inter_T + E_Inter_Diff
E_T = E_T + E_Inter
E_T
nMove, nType, nMol
call
Get_MolIndex
module
EnergyPointers
interface
subroutine
DetailedInterface
procedure(DetailedInterface), pointer ::
Detailed_ECalc
=> NULL()
#
subroutine
ShiftInterface
procedure(ShiftInterface), pointer ::
Shift_ECalc
=> NULL()
#
subroutine
SwapOutInterface
procedure(SwapInInterface), pointer ::
SwapIn_ECalc
=> NULL()
#
subroutine
RosenMolNewInterface
procedure(RosenMolNewInterface), pointer ::
Rosen_Mol_New
=> NULL()
#
subroutine
RosenMolOldInterface
procedure(RosenMolOldInterface), pointer ::
Rosen_Mol_Old
=> NULL()
#
subroutine
QuickInterface
procedure(QuickInterface), pointer ::
Quick_Nei_ECalc
=> NULL()
#
subroutine
SwapInInterface
procedure(SwapOutInterface), pointer ::
SwapOut_ECalc
=> NULL()
#
EnergyPointers.f90
Units.f90
module
Units
#
real(dp) function
FindEngUnit
real(dp) function
FindLengthUnit
real(dp) function
FindAngularUnit
module
Constants
WHAM_Version2.f90
contains
subroutine
WHAM_Initialize
subroutine
WHAM_AdjustHist
subroutine
WHAM_MidSimOutput
subroutine
WHAM_Finalize
use
WHAM_Module
#
Rosen_Vashista_Molecule_Old
E_Trial
Rosen_Mol_New
=> Rosen_Vashishta_Molecule_New
ScriptForceField.f90
module
ForceFieldInput
contains
subroutine
SetForcefieldtype
#
ForceFieldName
= "Vashishta"
Detailed_ECalc
=> Detailed_EnergyCalc_Vashishta
Shift_ECalc
=> Shift_EnergyCalc_Vashishta
#
SwapIn_ECalc
=> SwapIn_EnergyCalc_Vashishta
#
SwapOut_ECalc
=> SwapOut_EnergyCalc_Vashishta
Rosen_Mol_New
=> Rosen_Vashishta_Molecule_New
Rosen_Mol_Old
=> Rosen_Vashishta_Molecule_Old
Quick_Nei_ECalc
=> QuickNei_ECalc_Inter_Vashishta
boundaryFunction
=> Bound_MaxMin
commonFunction
=> Allocate_Vashishta
FFSpecificFlags
=> Vashishta_SetFlags
interFunction
=> Read_Vashishta
interFunction2
=> Read_Vashishta2
interFunction3
=> Read_Vashishta3
fieldTypeSet
= .true.
subroutine
ScriptForceField
subroutine
DefineForceField
#
subroutine
SetForcefieldParam
subroutine
CreateForcefield
#
subroutine
FindCommandBlock
subroutine
SetRMin
subroutine
GetCommand
allocation subroutine
subroutine
Allocate_LJ_Q
subroutine
Allocate_Pedone
subroutine
Allocate_Vashista
reading subroutine
subroutine
Read_Tersoff
subroutine
Read_Pedone
subroutine
Read_LJ_Q
subroutine
Read_Vashishta
VariablePrecision.f90
module
VarPrecision
#
#
ClusterCriteria_Distance.f90
module
DistanceCriteria
contains
subroutine
Detailed_DistanceCriteria
#
subroutine
Shift_DistanceCriteria
subroutine
SwapOut_DistanceCriteria
subroutine
NeighborUpdate_Distance
subroutine
NeighborUpdate_SwapIn_Distance
ScriptInput.f90
module
ScriptInput
contains
subroutine
Script_ReadParameters
#
#
#
subroutine
setVariable
avbmc_distance
nMolTypes
=> NPART(1:n
MolTypes
)
subroutine
setDefaults
subroutine
LoadFile
subroutine
GetCommand
subroutine
FindCommandBlock
CoordinateFunctions.f90
module
CoordinateFunctions
contains
subroutine
AllocateCoordinateArrays
allocate (
atomIndicies
(1:nTotalAtoms), stat=AllocationStatus)
allocate (
MolArray
(1:nMolTypes), stat=AllocationStatus)
allocate (
gasConfig
(1:nMolTypes), stat=AllocationStatus)
allocate (
isActive
(1:maxMol), stat=AllocationStatus)
allocate (
newMol
%x(1:maxAtoms), stat=AllocationStatus)
allocate (
newMol
%y(1:maxAtoms), stat=AllocationStatus)
allocate (
newMol
%z(1:maxAtoms), stat=AllocationStatus)
allocate (
newMol2
%x(1:maxAtoms), stat=AllocationStatus)
allocate (
newMol2
%y(1:maxAtoms), stat=AllocationStatus)
allocate (
newMol2
%z(1:maxAtoms), stat=AllocationStatus)
allocate (
NeighborList
(1:maxMol, 1:maxMol), stat=AllocationStatus)
subroutine CreateJoinArray
subroutine
ReadInitialConfiguration
subroutine
ReadInitialGasPhase
gasConfig(iType)%x(iAtom)
gasConfig(iType)%y(iAtom)
gasConfig(iType)%z(iAtom)
subroutine RecenterCoordinates
subroutine Generate_UnitPyramid
subroutine
Generate_UnitSphere
subroutine
Generate_UnitCone
subroutine Generate_UnitTorsion
subroutine Generate_UnitTetrahedral
subroutine GenerateRotation_Reverse
subroutine GenerateRotation
subroutine
GenerateBondLength
subroutine
GenerateBendingAngle
subroutine GenerateTwoBranches
subroutine GenerateTwoBranches_Reverse
subroutine GenerateThreeBranches
subroutine GenerateThreeBranches_Reverse
subroutine GenerateTorsAngle
subroutine FindBond
subroutine FindAngle
subroutine FindTorsion
subroutine FindSingleDihedral
main.f90
program
Swaper
MPI hint
call
Script_ReadParameters
call
CBMC_CreateTopology
#
Call
Detailed_Ecalc(E_T, errRtn)
call
InitialTrajOutput
call
TrajOutput(iCycle, E_T)
This function outputs current config to the trajectory visualization file.
call
UmbrellaHistAdd(E_T)
call
CheckInitialValues
1 more item...
Print Dummy frame to VMD so VMD will correctly display varying cluster sizes.
gasConfig(iType)%x(iAtom)
Intial Energy Calculations
call
MPI_INIT(ierror)
call
MPI_COMM_SIZE(MPI_COMM_WORLD, p_size, ierror)
call
MPI_COMM_RANK(MPI_COMM_WORLD, myid, ierror)
BasicMovements.f90
module
SimpleMCMoves_Module
contains
subroutine
SingleAtom_Translation(E_T, acc_x, atmp_x)
subroutine
Translation(E_T, acc_x, atmp_x)
:one: call
Get_MolIndex(nMove, NPart, nType,
nMol
)
#
molIndx, molType
create a trial shift and construct the
Displacement Vectors
for each atom in the molecule that was chosen.
:two: call
Shift_ECalc(E_Inter, E_Intra, disp(1:nAtoms(nType)), PairList, dETable, useIntra, rejMove)
E_Inter
#
:four: call
Update_Shift(disp, nType, nIndx, E_T, E_Inter, acc_x, atmp_x, PairList, dETable)
E_T, E_Inter
call
NeighborUpdate_Distance
call
Update_SubEnergies_Vashishta
#
enforce the translation move
:three: call
GetUmbrellaBias_Disp
subroutine
Rotation(E_T, acc_x, atmp_x)
subroutine
Update_Shift
AVBMC_EBias_Rosen.f90
contains
module
AVBMC_Module
subroutine
AVBMC_EBias_Rosen_In(E_T, arrayMax, acc_x, atmp_x)
#
#
#
call
EBias_Insert_ChooseTarget
call
Rosen_CreateSubset
#
select
regrowType
(nType)
Ridgid_RosenConfigGen
(0)
#
call
GetUmbrellaBias_SwapIn
call
SwapIn_ECalc
1 more item...
Simple_RosenConfigGen
(1)
#
:two:
the purpose of this subroutine is to create a list of molecules that will be included in the intermolecular component of the Rosenbluth weight
:one:
call
EBias_Insert_ChooseTarget
Generate the configuration for the newly inserted molecule
call
Rosen_CreateSubset
select reGrowType
call
Quick_Nei_ECalc
call
GetUmbrellaBias_SwapIn
2 more items...
create a list of molecules that will be included in the intermolecular component of the Rosenbluth weight
subroutine
AVBMC_EBias_Rosen_Out(E_T, arrayMax, acc_x, atmp_x)
#
#
#
call
Create_NeiETable
call
EBias_Remove_ChooseTarget
call
EBias_Remove_ChooseNeighbor
call
GetUmbrellaBias_SwapOut
Check to see if the deletion of the particle will break the cluster
call
SwapOut_EnergyCriteria
2 more items...
subroutine
EBias_Insert_ChooseTarget(nInsType, nTarget, nTargType, nMol, ProbSel)
#
#
subroutine
EBias_Insert_ReverseProbTarget(nTarget, nType, newNeiETable, ProbRev)
#
#
subroutine
EBias_Insert_ReverseProbSel(nTarget, nType, dE, ProbRev)
#
#
subroutine
EBias_Remove_ChooseTarget(nTarget, nTargType, nTargMol, ProbTarget)
#
subroutine
EBias_Remove_ChooseNeighbor(nTarget, nType, nSel, ProbTarget)
#
subroutine
EBias_Remove_ReverseProbTarget(nTarget, nSel, nType, dE, ProbSel)
#
subroutine
AVBMC(E_T, acc_x, atmp_x)
call
AVBMC_EBias_Rosen_In(E_T, maxMol, acc_x, atmp_x)
call
AVBMC_EBias_Rosen_Out(E_T, maxMol, acc_x, atmp_x)
MCModule_Module.f90
module
MoveTypeModule
subroutine
CalcAcceptanceRates
subroutine
ScriptInput_Moves
#
type
MoveArray
#
procedure(MCMoveSub), pointer, nopass ::
moveFunction => NULL()
abstract interface : subroutine MCMoveSub
#
type(MoveArray), allocatable ::
mcMoveArray
(:)
#
UmbrellaSampling_Version2.f90
module
UmbrellaSamplingNew
contains
subroutine
AllocateUmbrellaVariables
#
subroutine
ScriptInput_Umbrella
call
AllocateUmbrellaVariables
call
AllocateUmbrellaArray
call
ReadInitialBias
nBiasVariables
binMax, binMin
biasvar
varType
intVar
biasvarnew
varType
intVar
subroutine
AllocateUmbrellaArray
#
subroutine
ReadInitialBias
#
subroutine
UmbrellaHistAdd
#
#
#
getbiasIndex()
curUIndx
UHist(:)
subroutine
GetUmbrellaBias_Disp
subroutine
GetUmbrellaBias_SwapIn
#
call
getNewBiasIndex
(newUIndx, rejMove)
biasNew
UBias
(newUIndx)
biasOld
biasDiff = biasNew - biasOld
call
SwapInUmbrella
(iSwapFunc)%
func
type(SwapInUmbrellaArray), allocatable ::
SwapInUmbrella
(:)
type
SwapInUmbrellaArray
procedure(), pointer, nopass ::
func
end type
#
subroutine
GetUmbrellaBias_SwapOut
subroutine
ScreenOutUmbrella
subroutine
OutputUmbrellaHist
TemporaryHist.txt
subroutine
OutputUmbrellaAnalytics
call MPI_BARRIER
call MPI_REDUCE
call MPI_REDUCE
Umbrella_AvgE.txt
Umbrella_DensityStates.txt
subroutine
getNewBiasIndex
subroutine
getUIndexArray
subroutine
findVarValues
subroutine
CheckInitialValues
function
getBiasIndex() result (biasIndx)
CBMC_Rosen_AVBMC_ConfigGen
module
AVBMC_CBMC
contains
subroutine
Ridgid_RosenConfigGen
subroutine
Ridgid_RosenConfigGen_Reverse
subroutine
Simple_RosenConfigGen_Vashishta
subroutine
Simple_RosenConfigGen_Reverse_Vashishta
subroutine
Simple_RosenConfigGen_Reverse
subroutine
StraightChain_RosenConfigGen
subroutine
StraightChain_RosenConfigGen_GasPhase
subroutine
StraightChain_RosenConfigGen_GasPhase_Reverse
subroutine
BranchedMol_RosenConfigGen_Reverse
subroutine
BranchedMol_RosenConfigGen_GasPhase
subroutine
BranchedMol_RosenConfigGen_GasPhase_Reverse
subroutine
Simple_RosenConfigGen
subroutine
Ridgid_RosenConfigGen_Vashishta
subroutine
Ridgid_RosenConfigGen_Vashishta
CBMC_Utility.f90
module
CBMC_Utility
contains
subroutine
Rosen_CreateSubset
subroutine
Rosen_CreateSubset_Reverse
subroutine
Schedule_BranchedMol_Growth
subroutine
FindAtomsFromPath
subroutine
FindNextBondFromPath
subroutine
getRandomBondedAtoms
subroutine
RandomSort
subroutine
FindNextAngleFromPath
subroutine
ChooseRosenTrial
subroutine
ChooseRosenTrial_Branched
Rosen_Mol_Old
=> Rosen_Vashishta_Molecule_Old
#
Rosen_Vashista_Molecule_Old
E_Trial
call
Detailed_ECalc
(
E_Final
, errRtn)
E_Final
call
Detailed_ECalc
(
E_Final
, errRtn)
E_Final
call
Detailed_ECalc
(
E_T
, errRtn) -- initial energy calculation
E_T
\( E_A\)
subroutine
AVBMC_EBias_Rosen_In
call
EBias_Insert_ChooseTarget
(nType, nTarget, nTargType, nTargMol, ProbTarg_In)
Generate the configuration for the Newly inserted molecule
call
Rosen_CreateSubset
(nTarget, isIncluded)
call
Simple_RosenConfigGen_Vashishta
(nType, nIndx, nTarget, nTargType, isIncluded, rosenRatio, rejMove)
call
DEBUG_Output_NewConfig
call
GetUmbrellaBias_SwapIn
(biasDiff, rejMove)
call
SwapIn_ECalc
(E_Inter, E_Intra,
PairList
, dETable, rejMove)
determine the reverse probability of this move
call
Insert_NewNeiETable_Distance_V2
(nType, PairList, dETable, newNeiETable)
3 more items...
E_Inter
E_Intra
PairList
#
rejMove
dETable
#
#
rosenRatio
#
rejMove
isIncluded
#
#
nType
#
#
#
#
#
nTarget
#
#
#
nTargType
#
ProbTarg_In
#
nTargMol
use
EnergyTables
ProbTable(i) = exp(
biasAlpha
(nInsType, iType)*(ETable(i) - avgE(iType)))
ETable(i)
Umbrella_Types.f90
module UmbrellaTypes
BiasVariablePointer
varType
integer, pointer ::
intVar
real(dp), pointer ::
realVar
type DispUmbrellaArray
type SwapInUmbrellaArray
type SwapOutUmbrellaArray