Bonded.bond_fpair: def of bend-prot@0.1.0.0 Import: import bend-prot@0.1.0.0/bonded.bend as Bonded Lines 266-272 of bend-prot@0.1.0.0/bonded.bend: https://jend.leeeet.dev/read.txt?path=bend-prot@0.1.0.0/bonded.bend&start_line=266&end_line=272 import Base import bend-prot@0.1.0.0/geom.bend as G # Bond forces: F = -2k(d-r0) * unit(pa-pb) on a, opposite on b; zero for # coincident or missing atoms. Per-atom loop over flat bonds. def bond_fpair(+d: G.Vec3, +d2: F32, +k: F32, +r0: F32) -> G.Vec3 & G.Vec3: +r = F32.sqrt(d2) +mag = Bool.pick(F32, F32.is_eq(d2, 0.0), 0.0, (((0.0 - (2.0 * k : F32) : F32) * (r - r0 : F32) : F32) / r : F32)) +fa = G.Vec3.scale(mag, d) (fa, G.Vec3.neg(fa)) Uses (12): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool.pick https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32.div https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32.is_eq https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32.mul https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32.sqrt https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=F32.sub https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Pair https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Sigma https://jend.leeeet.dev/definition.txt?path=bend-prot@0.1.0.0/geom.bend&name=Vec3 https://jend.leeeet.dev/definition.txt?path=bend-prot@0.1.0.0/geom.bend&name=Vec3.neg https://jend.leeeet.dev/definition.txt?path=bend-prot@0.1.0.0/geom.bend&name=Vec3.scale