~/bend-docscommunity

force.bend checks

raw source on the hub · import 0xdf198d67659100c90a58ecd6b01d034d/force.bend as Force

3 imports
import Base
import ./geom.bend as G
import ./protein.bend as P

Definitions

def lj_sq source · line 15 · raw

@+x:F32 -> F32

def lj_cube source · line 18 · raw

@+inv:F32 -> F32

def lj_eval source · line 21 · raw

@+u6:F32 -> @+eps:F32 -> F32

def lj_from_inv source · line 24 · raw

@inv:F32 -> @+eps:F32 -> F32

def lj_of_d2 source · line 28 · raw

@d2:F32 -> @+eps:F32 -> @+sig2:F32 -> F32

LJ energy from squared distance: 4e*((s2/d2)^12 - (s2/d2)^6), no sqrt.

def lj_self_go source · line 31 · raw

@d2:F32 -> @+eps:F32 -> @+sig2:F32 -> @self:Bool -> F32

def lj_pair_go source · line 38 · raw

@+d2:F32 -> @+eps:F32 -> @+sig2:F32 -> @below:Bool -> F32

def lj_pair_at source · line 45 · raw

@+pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+pj:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+eps:F32 -> @+sig2:F32 -> @+c2:F32 -> F32

def lj_head source · line 49 · raw

@+pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+eps:F32 -> @+sig2:F32 -> @+c2:F32 -> @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> F32

def lj_row source · line 54 · raw

@+pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+eps:F32 -> @+sig2:F32 -> @+c2:F32 -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> F32

def lj_self_atom source · line 63 · raw

@h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @+ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+eps:F32 -> @+sig2:F32 -> @+c2:F32 -> F32

def lj_total source · line 70 · raw

@xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+eps:F32 -> @+sig2:F32 -> @+c2:F32 -> F32

def coul_formula source · line 84 · raw

@d2:F32 -> @+qq:F32 -> @+ke:F32 -> F32

def coul_self_go source · line 87 · raw

@d2:F32 -> @+qq:F32 -> @+ke:F32 -> @self:Bool -> F32

def coul_pair_go source · line 94 · raw

@+d2:F32 -> @+qq:F32 -> @+ke:F32 -> @below:Bool -> F32

def coul_at source · line 101 · raw

@+pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+pj:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+qq:F32 -> @+ke:F32 -> @+c2:F32 -> F32

def coul_head source · line 105 · raw

@+pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+qi:F32 -> @+ke:F32 -> @+c2:F32 -> @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @qj:F32 -> F32

def coul_row source · line 112 · raw

@+pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+qi:F32 -> @+ke:F32 -> @+c2:F32 -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @qs:List<&2, F32> -> F32

def coul_self source · line 126 · raw

@h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @+qh:F32 -> @+ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+qs_e:List<&2, F32> -> @+ke:F32 -> @+c2:F32 -> F32

def coul_total source · line 134 · raw

@xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+qs_o:List<&2, F32> -> @+ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+qs_e:List<&2, F32> -> @+ke:F32 -> @+c2:F32 -> F32

def lj_k source · line 150 · raw

@+u6:F32 -> @+eps:F32 -> @+d2:F32 -> F32

def lj_fvec source · line 153 · raw

@+d:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+k:F32 -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def lj_fpair source · line 156 · raw

@+d2:F32 -> @+d:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+eps:F32 -> @+sig2:F32 -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def lj_fself source · line 159 · raw

@+d2:F32 -> @+d:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+eps:F32 -> @+sig2:F32 -> @self:Bool -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def lj_fgo source · line 166 · raw

@+d2:F32 -> @+d:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+eps:F32 -> @+sig2:F32 -> @below:Bool -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def lj_fat source · line 173 · raw

@+pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+pj:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+eps:F32 -> @+sig2:F32 -> @+c2:F32 -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def lj_fhead source · line 177 · raw

@+pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+eps:F32 -> @+sig2:F32 -> @+c2:F32 -> @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def lj_frow source · line 182 · raw

@+pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+eps:F32 -> @+sig2:F32 -> @+c2:F32 -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def lj_fself_atom source · line 191 · raw

@h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @+ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+eps:F32 -> @+sig2:F32 -> @+c2:F32 -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def lj_forces source · line 198 · raw

@xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+eps:F32 -> @+sig2:F32 -> @+c2:F32 -> List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3>

def sd_move source · line 209 · raw

@h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @f:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+dt:F32 -> 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom

def sd_sweep source · line 214 · raw

@xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @fs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3> -> @+dt:F32 -> List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom>

def minimize source · line 227 · raw

@fuel:Nat -> @+xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+eps:F32 -> @+sig2:F32 -> @+c2:F32 -> @+dt:F32 -> List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom>

def lj_eps source · line 240 · raw

@e:U32 -> F32

--- Per-element Lennard-Jones: illustrative eps (kcal/mol) and sigma (A) by element number; unknown elements take a generic (0.20, 3.00). These are placeholders, not a force field. Lorentz-Berthelot combining: eps = sqrt(ei*ej), sig2 = ((si+sj)/2)^2.

def lj_sig source · line 255 · raw

@e:U32 -> F32

def lj_combine_eps source · line 270 · raw

@ei:F32 -> @ej:F32 -> F32

def lj_combine_sig2 source · line 273 · raw

@si:F32 -> @sj:F32 -> F32

def lj_head_elem source · line 276 · raw

@+si:U32 -> @+pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+c2:F32 -> @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> F32

def lj_row_elem source · line 281 · raw

@+si:U32 -> @+pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+c2:F32 -> F32

def lj_total_elem source · line 288 · raw

@xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+c2:F32 -> F32

def coul_k source · line 297 · raw

@+qq:F32 -> @+ke:F32 -> @+d2:F32 -> F32

--- Coulomb forces: F_i = ke*qi*qj/d2^1.5 * (pi - pj), repulsive for like charges along +d. Self pairs (d2 == 0) and pairs beyond c2 give zero.

def coul_fpair source · line 300 · raw

@+d2:F32 -> @+d:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+qq:F32 -> @+ke:F32 -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def coul_fself source · line 303 · raw

@+d2:F32 -> @+d:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+qq:F32 -> @+ke:F32 -> @self:Bool -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def coul_fgo source · line 310 · raw

@+d2:F32 -> @+d:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+qq:F32 -> @+ke:F32 -> @below:Bool -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def coul_fat source · line 317 · raw

@+pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+pj:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+qq:F32 -> @+ke:F32 -> @+c2:F32 -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def coul_fhead source · line 321 · raw

@+pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+qi:F32 -> @+ke:F32 -> @+c2:F32 -> @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @qj:F32 -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def coul_frow source · line 326 · raw

@+pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @+qi:F32 -> @+ke:F32 -> @+c2:F32 -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @qs:List<&2, F32> -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def coul_fself_atom source · line 337 · raw

@h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @+qh:F32 -> @+ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+qs_e:List<&2, F32> -> @+ke:F32 -> @+c2:F32 -> 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3

def coul_forces source · line 342 · raw

@xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+qs_o:List<&2, F32> -> @+ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @+qs_e:List<&2, F32> -> @+ke:F32 -> @+c2:F32 -> List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3>

def mass source · line 354 · raw

@e:U32 -> F32

--- Atomic masses (amu) by element; unknown -> 12.0. ---