sim.bend checks
raw source on the hub · import 0xdf198d67659100c90a58ecd6b01d034d/sim.bend as Sim
7 imports
import Base import ./geom.bend as G import ./protein.bend as P import ./topology.bend as T import ./force.bend as F import ./bonded.bend as B import ./rng.bend as Rng
Types
type DynAtom source · line 20 · raw
Data
DA@serial:U32 -> @elem:U32 -> @pos:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @vel:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @frc:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @mass:F32 -> DynAtom
type SimParams source · line 23 · raw
Data
SP@eps:F32 -> @sig2:F32 -> @c2:F32 -> @ke:F32 -> @kbond:F32 -> SimParams
Definitions
def acc_conv source · line 26 · raw
F32
def boltzmann source · line 29 · raw
F32
def ke_coul source · line 32 · raw
F32
def dyn_of_atom source · line 35 · raw
@h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> DynAtom
def dyn_of_atoms source · line 40 · raw
@xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> List<&2, DynAtom>
def dyn_atoms source · line 47 · raw
@ds:List<&2, DynAtom> -> List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom>
def zero_charges source · line 58 · raw
@xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> List<&2, F32>
Zero charges aligned with atoms (no charge model yet; Coulomb kernels take external charges and are exercised by laws).
def kick_vec source · line 66 · raw
@+s:U32 -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3
Uniform kicks in [-0.5, 0.5) per component, seeded per serial.
def init_kick_atom source · line 69 · raw
@h:DynAtom -> DynAtom
def init_kicks source · line 74 · raw
@ds:List<&2, DynAtom> -> List<&2, DynAtom>
def sum_vels_ds source · line 81 · raw
@ds:List<&2, DynAtom> -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3
def sub_com_ds source · line 90 · raw
@ds:List<&2, DynAtom> -> @+com:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> List<&2, DynAtom>
def ke_head source · line 99 · raw
@h:DynAtom -> F32
def ke_sim_of source · line 104 · raw
@ds:List<&2, DynAtom> -> F32
def temp_of_ke source · line 111 · raw
@ke:F32 -> @n:Nat -> F32
def temp_of_ds source · line 114 · raw
@ds:List<&2, DynAtom> -> @n:Nat -> F32
def vv_scale_head source · line 117 · raw
@h:DynAtom -> @lam:F32 -> DynAtom
def vv_scale source · line 122 · raw
@ds:List<&2, DynAtom> -> @+lam:F32 -> List<&2, DynAtom>
def scale_to_temp source · line 129 · raw
@ds:List<&2, DynAtom> -> @+now:F32 -> @want:F32 -> List<&2, DynAtom>
def com_of_n source · line 132 · raw
@+kicked:List<&2, DynAtom> -> @n:Nat -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3
def init_scaled source · line 135 · raw
@+nocom:List<&2, DynAtom> -> @+n:Nat -> @temp0:F32 -> List<&2, DynAtom>
def init_nocom source · line 138 · raw
@+kicked:List<&2, DynAtom> -> @+n:Nat -> @temp0:F32 -> List<&2, DynAtom>
def init_vels source · line 141 · raw
@+ds:List<&2, DynAtom> -> @+temp0:F32 -> List<&2, DynAtom>
def dyn_set_force source · line 145 · raw
@ds:List<&2, DynAtom> -> @fs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3> -> List<&2, DynAtom>
Set per-atom forces from a force list (truncates to the shorter).
def add_forces source · line 158 · raw
@a:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3> -> @b:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3> -> List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3>
def set_forces source · line 170 · raw
@+ds:List<&2, DynAtom> -> @+qs:List<&2, F32> -> @+bonds:List<&2, U32> -> @+p:SimParams -> List<&2, DynAtom>
Fresh forces (uniform-LJ with exclusions + Coulomb + bonds) into state.
def vv_half_head source · line 176 · raw
@h:DynAtom -> @+dt:F32 -> DynAtom
Velocity Verlet halves over explicit state (forces must be fresh).
def vv_half source · line 183 · raw
@ds:List<&2, DynAtom> -> @+dt:F32 -> List<&2, DynAtom>
def vv_full_head source · line 190 · raw
@h:DynAtom -> @dt:F32 -> DynAtom
def vv_full source · line 196 · raw
@ds:List<&2, DynAtom> -> @+dt:F32 -> List<&2, DynAtom>
def md_thermo source · line 204 · raw
@+ds:List<&2, DynAtom> -> @+dt:F32 -> @+tau:F32 -> @+temp0:F32 -> @+n:Nat -> List<&2, DynAtom>
Berendsen thermostat folded into the step (T == 0 keeps velocities).
def md_step source · line 208 · raw
@+ds:List<&2, DynAtom> -> @+qs:List<&2, F32> -> @+bonds:List<&2, U32> -> @+p:SimParams -> @+dt:F32 -> @+tau:F32 -> @+temp0:F32 -> @+n:Nat -> List<&2, DynAtom>
def md_run source · line 211 · raw
@steps:Nat -> @ds:List<&2, DynAtom> -> @+qs:List<&2, F32> -> @+bonds:List<&2, U32> -> @+p:SimParams -> @+dt:F32 -> @+tau:F32 -> @+temp0:F32 -> @+n:Nat -> List<&2, DynAtom>
def sd_norm_head source · line 221 · raw
@h:DynAtom -> @+step:F32 -> DynAtom
Steepest descent over state (fixed fuel; CLI reports convergedness). Normalized steps (fixed distance along each force) relax clashes that raw F*dt would overshoot; raw forces still feed MD and max-force.
def sd_norm_sweep source · line 227 · raw
@ds:List<&2, DynAtom> -> @+step:F32 -> List<&2, DynAtom>
def min_run source · line 234 · raw
@fuel:Nat -> @ds:List<&2, DynAtom> -> @+qs:List<&2, F32> -> @+bonds:List<&2, U32> -> @+p:SimParams -> @+dt:F32 -> List<&2, DynAtom>
def maxforce2_of source · line 242 · raw
@ds:List<&2, DynAtom> -> F32
def converged_ds source · line 251 · raw
@ds:List<&2, DynAtom> -> @+tol:F32 -> Bool
def pairs_of_flat source · line 255 · raw
@bs:List<&2, U32> -> List<&1, Pair(U32, U32)>
Flat bonds back to pairs for the pair-list energies.
def energy_sum source · line 265 · raw
@+xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+qs:List<&2, F32> -> @+bonds:List<&2, U32> -> @+p:SimParams -> F32
Reportable potential: excluded uniform LJ + Coulomb + bonds.
def total_energy source · line 270 · raw
@+ds:List<&2, DynAtom> -> @+qs:List<&2, F32> -> @+bonds:List<&2, U32> -> @+p:SimParams -> F32