mdevolve

Integrator framework for Molecular Dynamic evolutions

Pure Nim score 30/100 · tests present · docs generated

Summary

Latest Version Unknown
License MIT
CI Status Failing
Downloads 0
Last Indexed 2026-07-22 05:28

Installation

nimble install mdevolve
choosenim install mdevolve
git clone https://github.com/jxy/MDevolve

OS Compatibility

Platform Linux macOS Windows FreeBSD OpenBSD NetBSD Android iOS WASM Embedded
mdevolve - - - - - - -

Source

Repository https://github.com/jxy/MDevolve
Homepage https://github.com/jxy/MDevolve
Documentation View Documentation
Registry Source nimble_official

README

NAME MDevolve: Integrator framework for Molecular Dynamic evolutions

DESCRIPTION To use: 1. Create individual integrators from update procedures, using one of the newIntegratorPair. 2. Compose integrators using mk.... 3. Start the integration with evolve. 4. Finish the integration with finish.

SYNOPSIS const mdevolveVersion:int = 1 type Integrator = ref object ParIntegrator = ref object nonZeroStep:float nonZeroStepWarn:float Integrators = ref object func $(x:Integrator):string func $(x:ParIntegrator):string proc steps(x:Integrator):int proc steps(x:ParIntegrator):int proc steps=(x:Integrator, n:int) proc steps=(x:ParIntegrator, n:int) proc forceGradient(x:Integrator):Integrator proc forceGradient=(x:Integrator, G:Integrator) proc [](xs:Integrators, n:int):Integrator template newIntegratorPair(f,g:proc(t:float)):(Integrator,Integrator) template newIntegratorPair(f:proc(ts:openarray[float]),g:proc(t:float)):(Integrators,Integrator) template newIntegratorPair(f:proc(t:float),g:proc(ts:openarray[float])):(Integrator,Integrators) template newIntegratorPair(f:proc(ts:openarray[float]),g:proc(ts:openarray[float])):(Integrators,Integrators) template newIntegratorPair(f:proc(ts,ss:openarray[float]),g:proc(t:float)):(Integrators,Integrator) template newIntegratorPair(f:proc(t:float),g:proc(ts,ss:openarray[float])):(Integrator,Integrators) macro newIntegratorPair(fs:tuple, g:proc(t:float)):auto macro newIntegratorPair(f:proc(t:float), gs:tuple):auto macro newIntegratorPair(fs:tuple, gs:tuple):auto proc newSerialEvolution(id:string, mds:seq[tuple[i:Integrator,f:float]], steps:int, order:int):Integrator proc add(r:ParIntegrator, xs:varargs[Integrator]) proc newParallelEvolution(xs:varargs[Integrator]):ParIntegrator proc evolve(x:Integrator, t:float) proc evolve(x:ParIntegrator, t:float) proc finish(x:Integrator) proc finish(x:ParIntegrator) proc approximateFGcoeff(cv,cg:float):tuple[tf:float,tg:float] proc approximateFGcoeff2(cv,cg:float, b = 0.2):tuple[tf:array[2,float],tg:array[2,float]] proc mkLeapFrog(T,V:Integrator, steps = 1):Integrator proc mkOmelyan2MN(T,V:Integrator, steps = 1, lambda = 0.1931833275037836):Integrator proc mkSW92(T,V:Integrator, steps = 1):Integrator proc mkOmelyan4MN4FP(T,V:Integrator, steps = 1, rho = 0.1786178958448091, theta = -0.06626458266981843, lambda = 0.7123418310626056):Integrator proc mkOmelyan4MN5FV(T,V:Integrator, steps = 1, rho = 0.2539785108410595, theta = -0.03230286765269967, vartheta = 0.08398315262876693, lambda = 0.6822365335719091):Integrator proc mkOmelyan4MN5FP(T,V:Integrator, steps = 1, rho = 0.2750081212332419, theta = -0.1347950099106792, vartheta= -0.08442961950707149, lambda = 0.3549000571574260):Integrator proc mkOmelyan6MN7FV(T,V:Integrator, steps = 1):Integrator proc mkOmelyan4MN2F2GV(T,V:Integrator, steps = 1, xi = -17.0/18000.0):Integrator proc mkOmelyan4MN2F1GV(T,V:Integrator, steps = 1):Integrator proc mkOmelyan4MN3F3GP(T,V:Integrator, steps = 1, lambda = 0.2825633404177051, chi = 0.003035236056708454):Integrator proc mkOmelyan4MN3F2GP(T,V:Integrator, steps = 1, lambda = 0.3152315246820299):Integrator proc mkOmelyan4MN3F1GP(T,V:Integrator, steps = 1, lambda = 0.2470939580390842):Integrator proc mkOmelyan4MN3F3GV(T,V:Integrator, steps = 1, theta = 0.2728983001988755, chi = 0.002960781208329478):Integrator proc mkOmelyan4MN3F2GV(T,V:Integrator, steps = 1, theta = 0.2813980611667719):Integrator proc mkOmelyan4MN3F1GV(T,V:Integrator, steps = 1, theta = 0.2409202729169543):Integrator proc mkOmelyan4MN4F2GVG(T,V:Integrator, steps = 1):Integrator proc mkOmelyan4MN4F2GV(T,V:Integrator, steps = 1):Integrator proc mkOmelyan4MN5F2GV(T,V:Integrator, steps = 1):Integrator proc mkOmelyan4MN5F1GV(T,V:Integrator, steps = 1):Integrator proc mkOmelyan4MN5F2GP(T,V:Integrator, steps = 1):Integrator proc mkOmelyan4MN5F1GP(T,V:Integrator, steps = 1):Integrator proc mkOmelyan6MN5F5GV(T,V:Integrator, steps = 1):Integrator proc mkOmelyan6MN5F4GV(T,V:Integrator, steps = 1):Integrator proc mkOmelyan6MN5F5GP(T,V:Integrator, steps = 1):Integrator proc mkOmelyan6MN5F3GP(T,V:Integrator, steps = 1):Integrator proc mkOmelyan8S11F11GP(T,V:Integrator, steps = 1):Integrator proc mkCreutzGocksch(S:Integrator, steps = 1):Integrator proc mkOmelyan8CK4P4(S4:Integrator, steps = 1):Integrator proc mkOmelyan10CK4P7(S4:Integrator, steps = 1):Integrator proc mkOmelyan12CK4P12(S4:Integrator, steps = 1):Integrator proc mkOmelyan10CK6P4(S6:Integrator, steps = 1):Integrator proc mkOmelyan12CK6P7*(S6:Integrator, steps = 1):Integrator

EXAMPLES See tests.

LICENSE This work is licensed under the MIT license. See file LICENSE for details.

SEE ALSO Creutz and Gocksch, https://doi.org/10.1103/PhysRevLett.63.9 Omelyan, Mryglod, and Folk, https://doi.org/10.1103/PhysRevE.66.026701 Omelyan, Mryglod, and Folk, https://doi.org/10.1016/S0010-4655(02)00754-3 Yin and Mawhinney, https://doi.org/10.22323/1.139.0051