def createFromMesh(density, vertices, triangles, inertia, niter): import ymero as ymr def recenter(coords, com): coords = [[r[0] - com[0], r[1] - com[1], r[2] - com[2]] for r in coords] return coords dt = 0.001 # bounding box bb_hi = np.array(vertices).max(axis=0).tolist() bb_lo = np.array(vertices).min(axis=0).tolist() mesh_size = [hi - lo for lo, hi in zip(bb_lo, bb_hi)] fact = 2.0 domain = (float(int(fact * mesh_size[0] + 1)), float(int(fact * mesh_size[1] + 1)), float(int(fact * mesh_size[2] + 1))) ranks = (1, 1, 1) u = ymr.ymero(ranks, domain, dt, debug_level=3, log_filename='log') dpd = ymr.Interactions.DPD('dpd', 1.0, a=10.0, gamma=10.0, kbt=0.5, power=0.5) vv = ymr.Integrators.VelocityVerlet('vv') coords = [bb_lo, bb_hi] com_q = [[0.5 * domain[0], 0.5 * domain[1], 0.5 * domain[2], 1., 0, 0, 0]] mesh = ymr.ParticleVectors.Mesh(vertices, triangles) fakeOV = ymr.ParticleVectors.RigidObjectVector('OV', mass=1, inertia=inertia, object_size=len(coords), mesh=mesh) fakeIc = ymr.InitialConditions.Rigid(com_q=com_q, coords=coords) belongingChecker = ymr.BelongingCheckers.Mesh("meshChecker") pvMesh = u.makeFrozenRigidParticles(belongingChecker, fakeOV, fakeIc, dpd, vv, density, niter) if pvMesh: frozenCoords = pvMesh.getCoordinates() frozenCoords = recenter(frozenCoords, com_q[0]) else: frozenCoords = [[]] if u.isMasterTask(): return frozenCoords else: return None
def run(niter, statsFname, commAddress): dt = 0.001 ranks = (2, 1, 1) domain = (12, 8, 10) u = ymr.ymero(commAddress, ranks, domain, debug_level=8, log_filename='log') pv = ymr.ParticleVectors.ParticleVector('pv', mass=1) ic = ymr.InitialConditions.Uniform(density=2) u.registerParticleVector(pv=pv, ic=ic) dpd = ymr.Interactions.DPD('dpd', 1.0, a=10.0, gamma=10.0, kbt=1.0, dt=dt, power=0.5) u.registerInteraction(dpd) u.setInteraction(dpd, pv, pv) vv = ymr.Integrators.VelocityVerlet('vv', dt=dt) u.registerIntegrator(vv) u.setIntegrator(vv, pv) stats = ymr.Plugins.createStats('stats', statsFname, 1000) u.registerPlugins(stats) u.run(niter)
def createEllipsoid(density, axes, niter): import ymero as ymr def recenter(coords, com): coords = [[r[0] - com[0], r[1] - com[1], r[2] - com[2]] for r in coords] return coords dt = 0.001 axes = tuple(axes) ranks = (1, 1, 1) fact = 3 domain = (fact * axes[0], fact * axes[1], fact * axes[2]) u = ymr.ymero(ranks, domain, debug_level=3, log_filename='log') dpd = ymr.Interactions.DPD('dpd', 1.0, a=10.0, gamma=10.0, kbt=0.5, dt=dt, power=0.5) vv = ymr.Integrators.VelocityVerlet('vv', dt=dt) coords = [[-axes[0], -axes[1], -axes[2]], [axes[0], axes[1], axes[2]]] com_q = [[0.5 * domain[0], 0.5 * domain[1], 0.5 * domain[2], 1., 0, 0, 0]] fakeOV = ymr.ParticleVectors.RigidEllipsoidVector('OV', mass=1, object_size=len(coords), semi_axes=axes) fakeIc = ymr.InitialConditions.Rigid(com_q=com_q, coords=coords) belongingChecker = ymr.BelongingCheckers.Ellipsoid("ellipsoidChecker") pvEllipsoid = u.makeFrozenRigidParticles(belongingChecker, fakeOV, fakeIc, dpd, vv, density, niter) if pvEllipsoid: frozenCoords = pvEllipsoid.getCoordinates() frozenCoords = recenter(frozenCoords, com_q[0]) else: frozenCoords = [[]] if u.isMasterTask(): return frozenCoords else: return None
def createEllipsoid(density, axes, niter): import ymero as ymr def recenter(coords, com): coords = [[r[0]-com[0], r[1]-com[1], r[2]-com[2]] for r in coords] return coords dt = 0.001 axes = tuple(axes) ranks = (1, 1, 1) fact = 3 domain = (fact*axes[0], fact*axes[1], fact*axes[2]) u = ymr.ymero(ranks, domain, dt, debug_level=3, log_filename='log') dpd = ymr.Interactions.DPD('dpd', 1.0, a=10.0, gamma=10.0, kbt=0.5, power=0.5) vv = ymr.Integrators.VelocityVerlet('vv') coords = [[-axes[0], -axes[1], -axes[2]], [ axes[0], axes[1], axes[2]]] com_q = [[0.5 * domain[0], 0.5 * domain[1], 0.5 * domain[2], 1., 0, 0, 0]] fakeOV = ymr.ParticleVectors.RigidEllipsoidVector('OV', mass=1, object_size=len(coords), semi_axes=axes) fakeIc = ymr.InitialConditions.Rigid(com_q=com_q, coords=coords) belongingChecker = ymr.BelongingCheckers.Ellipsoid("ellipsoidChecker") pvEllipsoid = u.makeFrozenRigidParticles(belongingChecker, fakeOV, fakeIc, [dpd], vv, density, niter) if pvEllipsoid: frozenCoords = pvEllipsoid.getCoordinates() frozenCoords = recenter(frozenCoords, com_q[0]) else: frozenCoords = [[]] if u.isMasterTask(): return frozenCoords else: return None
def run(niter, statsFname, comm_address): dt = 0.001 ranks = (2, 1, 1) domain = (12, 8, 10) u = ymr.ymero(ranks, domain, dt, debug_level=8, log_filename='log', comm_ptr=comm_address) pv = ymr.ParticleVectors.ParticleVector('pv', mass = 1) ic = ymr.InitialConditions.Uniform(density=2) u.registerParticleVector(pv=pv, ic=ic) dpd = ymr.Interactions.DPD('dpd', 1.0, a=10.0, gamma=10.0, kbt=1.0, power=0.5) u.registerInteraction(dpd) u.setInteraction(dpd, pv, pv) vv = ymr.Integrators.VelocityVerlet('vv') u.registerIntegrator(vv) u.setIntegrator(vv, pv) stats = ymr.Plugins.createStats('stats', statsFname, 1000) u.registerPlugins(stats) u.run(niter)
parser = argparse.ArgumentParser() parser.add_argument('--kbounds', type=float, default=0.0) parser.add_argument('--ktwist', type=float, default=0.0) parser.add_argument('--kbending', type=float, nargs=3, default=(0.0, 0.0, 0.0)) parser.add_argument('--l0_factor', type=float, default=1.0) parser.add_argument('--tau0', type=float, default=0.0) parser.add_argument('--tau0_eq', type=float, default=0.0) parser.add_argument('--center_line', type=str, choices=["helix", "line"]) args = parser.parse_args() ranks = (1, 1, 1) domain = [16, 16, 16] dt = 1e-3 u = ymr.ymero(ranks, tuple(domain), dt, debug_level=8, log_filename='log', no_splash=True) com_q = [[ 8., 8., 8., 1.0, 0.0, 0.0, 0.0]] L = 5.0 P = 1.0 R = 1.0 if args.center_line == "helix": def center_line(s): t = s * L * np.pi / P return (R * np.cos(t), R * np.sin(t), (s-0.5) * L) def torsion(s):
parser = argparse.ArgumentParser() parser.add_argument("--type", choices=["squarePipe", 'cylinderPipe']) args = parser.parse_args() dt = 0.001 ranks = (1, 1, 1) domain = (16, 8, 8) force = (1.0, 0, 0) density = 4 rc = 1.0 u = ymr.ymero(ranks, domain, debug_level=3, log_filename='stdout') pv = ymr.ParticleVectors.ParticleVector('pv', mass = 1) ic = ymr.InitialConditions.Uniform(density=density) u.registerParticleVector(pv=pv, ic=ic) dpd = ymr.Interactions.DPD('dpd', rc=rc, a=10.0, gamma=50.0, kbt=0.01, dt=dt, power=0.5) u.registerInteraction(dpd) if args.type == "cylinderPipe": center=(domain[1]*0.5, domain[2]*0.5) wall = ymr.Walls.Cylinder("cylinder", center=center, radius=0.5*domain[1]-rc, axis="x", inside=True) elif args.type == "squarePipe": lo = ( -domain[0], rc, rc) hi = (2*domain[0], domain[1]-rc, domain[2]-rc)
def report(): print('Started with the following parameters: ' + str(args)) if unknown is not None and len(unknown) > 0: print('Some arguments are not recognized and will be ignored: ' + str(unknown)) print('') sys.stdout.flush() if args.dry_run: report() quit() domain = args.domain rc = args.rc u = ymr.ymero(tuple(args.nranks), tuple(domain), debug_level=args.debug_lvl, log_filename='log') if u.isMasterTask(): report() #==================================================================================== #==================================================================================== pv = ymr.ParticleVectors.ParticleVector('pv', mass = 1) ic = ymr.InitialConditions.Uniform(density=args.rho) u.registerParticleVector(pv=pv, ic=ic) dpd = ymr.Interactions.DPD('dpd', rc, args.a, args.gamma, args.kbt, args.dt, args.power) u.registerInteraction(dpd) vveq = ymr.Integrators.VelocityVerlet('vveq', args.dt)
#!/usr/bin/env python import ymero as ymr import numpy as np import argparse parser = argparse.ArgumentParser() parser.add_argument("--restart", action='store_true', default=False) args = parser.parse_args() ranks = (1, 1, 1) domain = (4, 6, 8) u = ymr.ymero(ranks, domain, dt=0, debug_level=3, log_filename='log', checkpoint_every = (5 if not args.restart else 0), no_splash=True) pv = ymr.ParticleVectors.ParticleVector('pv', mass = 1) u.registerParticleVector(pv=pv, ic=ymr.InitialConditions.Uniform(density=8)) coords = [[-1, -1, -1], [1, 1, 1]] com_q = [[0.5 * domain[0], 0.5 * domain[1], 0.5 * domain[2], 1., 0, 0, 0]] ov = ymr.ParticleVectors.RigidEllipsoidVector('ov', mass=1, object_size=len(coords), semi_axes=(1,1,1)) u.registerParticleVector(pv=ov, ic=ymr.InitialConditions.Rigid(com_q=com_q, coords=coords)) checker = ymr.BelongingCheckers.Ellipsoid('checker') u.registerObjectBelongingChecker(checker, ov) inner = u.applyObjectBelongingChecker(checker, pv, inside='inner') if args.restart: u.restart("restart/") u.run(7)
import trimesh from mpi4py import MPI parser = argparse.ArgumentParser() parser.add_argument("--restart", action='store_true', default=False) parser.add_argument("--ranks", type=int, nargs=3) args = parser.parse_args() comm = MPI.COMM_WORLD ranks = args.ranks domain = (16, 16, 16) dt = 0 if args.restart: u = ymr.ymero(ranks, domain, dt, comm_ptr=MPI._addressof(comm), debug_level=8, log_filename='log', checkpoint_every=0) else: u = ymr.ymero(ranks, domain, dt, comm_ptr=MPI._addressof(comm), debug_level=8, log_filename='log', checkpoint_every=5) mesh = trimesh.creation.icosphere(subdivisions=1, radius = 0.1) udx_mesh = ymr.ParticleVectors.MembraneMesh(mesh.vertices.tolist(), mesh.faces.tolist()) pv = ymr.ParticleVectors.MembraneVector("pv", mass=1.0, mesh=udx_mesh) if args.restart: ic = ymr.InitialConditions.Restart("restart/") else: nobjs = 10 pos = [ np.array(domain) * t for t in np.linspace(0, 1.0, nobjs) ] Q = [ np.array([1.0, 0., 0., 0.]) for i in range(nobjs) ]
#!/usr/bin/env python import ymero as ymr dt = 0.001 ranks = (1, 1, 1) domain = (12, 8, 10) u = ymr.ymero(ranks, domain, dt, debug_level=3, log_filename='log') pv = ymr.ParticleVectors.ParticleVector('pv', mass=1) ic = ymr.InitialConditions.Uniform(density=2) u.registerParticleVector(pv=pv, ic=ic) dpd = ymr.Interactions.DPD('dpd', 1.0, a=10.0, gamma=10.0, kbt=1.0, power=0.5) u.registerInteraction(dpd) u.setInteraction(dpd, pv, pv) vv = ymr.Integrators.VelocityVerlet('vv') u.registerIntegrator(vv) u.setIntegrator(vv, pv) stats = ymr.Plugins.createStats('stats', "stats.txt", 1000) u.registerPlugins(stats) u.run(5001) # nTEST: flow.rest # cd flow # rm -rf stats.txt
parser = argparse.ArgumentParser() parser.add_argument("--restart", action='store_true', default=False) parser.add_argument("--ranks", type=int, nargs=3) args = parser.parse_args() ranks = args.ranks domain = (4, 6, 8) dt = 0 if args.restart: restart_folder="restart2/" else: restart_folder="restart/" u = ymr.ymero(ranks, domain, dt, debug_level=3, log_filename='log', checkpoint_every=5, checkpoint_folder=restart_folder) pv = ymr.ParticleVectors.ParticleVector('pv', mass = 1) ic = ymr.InitialConditions.Uniform(density=2) u.registerParticleVector(pv, ic) dpd = ymr.Interactions.DPD('dpd', 1.0, a=10.0, gamma=10.0, kbt=1.0, power=0.5) u.registerInteraction(dpd) u.setInteraction(dpd, pv, pv) if args.restart: u.restart("restart/") u.run(7) # TEST: restart.interactions
#!/usr/bin/env python import ymero as ymr import numpy as np import argparse parser = argparse.ArgumentParser() parser.add_argument('--ranks', type=int, nargs=3, required=True) args = parser.parse_args() domain = (8, 16, 4) u = ymr.ymero(args.ranks, domain, dt=0, debug_level=8, log_filename='log') pv = ymr.ParticleVectors.ParticleVector('pv', mass=1) ic = ymr.InitialConditions.Uniform(density=3) u.registerParticleVector(pv=pv, ic=ic) sampleEvery = 1 dumpEvery = 1 binSize = (1., 1., 1.) field = ymr.Plugins.createDumpAverage('field', [pv], sampleEvery, dumpEvery, binSize, [("velocity", "vector_from_float8")], 'h5/solvent-') u.registerPlugins(field) u.run(3) # TEST: dump.h5
#!/usr/bin/env python import numpy as np import ymero as ymr ranks = (1, 1, 1) domain = [4., 4., 4.] density = 8 u = ymr.ymero(ranks, tuple(domain), dt=0, debug_level=3, log_filename='log') pv = ymr.ParticleVectors.ParticleVector('pv', mass = 1) ic = ymr.InitialConditions.UniformSphere(density=density, center=(2., 2., 2.), radius=2.0, inside=True) u.registerParticleVector(pv=pv, ic=ic) u.run(2) if pv: icpos = pv.getCoordinates() icvel = pv.getVelocities() np.savetxt("pos.ic.txt", icpos) np.savetxt("vel.ic.txt", icvel) # TEST: ic.uniform.sphere # cd ic # rm -rf pos*.txt vel*.txt # ymr.run --runargs "-n 2" ./sphere.py > /dev/null # paste pos.ic.txt vel.ic.txt | LC_ALL=en_US.utf8 sort > ic.out.txt
import numpy as np import argparse import trimesh parser = argparse.ArgumentParser() parser.add_argument("--restart", action='store_true', default=False) parser.add_argument("--ranks", type=int, nargs=3) args = parser.parse_args() ranks = args.ranks domain = (16, 16, 16) if args.restart: u = ymr.ymero(ranks, domain, debug_level=8, log_filename='log', checkpoint_every=0) else: u = ymr.ymero(ranks, domain, debug_level=8, log_filename='log', checkpoint_every=5) mesh = trimesh.creation.icosphere(subdivisions=1, radius=0.1) coords = [[-0.01, 0., 0.], [0.01, 0., 0.], [0., -0.01, 0.], [0., 0.01, 0.], [0., 0., -0.01], [0., 0., 0.01]] udx_mesh = ymr.ParticleVectors.Mesh(mesh.vertices.tolist(),
import argparse from mpi4py import MPI parser = argparse.ArgumentParser() parser.add_argument("--restart", action='store_true', default=False) parser.add_argument("--ranks", type=int, nargs=3) args = parser.parse_args() ranks = args.ranks domain = (4, 6, 8) comm = MPI.COMM_WORLD if args.restart: u = ymr.ymero(MPI._addressof(comm), ranks, domain, debug_level=3, log_filename='log', checkpoint_every=0) else: u = ymr.ymero(MPI._addressof(comm), ranks, domain, debug_level=3, log_filename='log', checkpoint_every=5) pv = ymr.ParticleVectors.ParticleVector('pv', mass = 1) if args.restart: ic = ymr.InitialConditions.Restart("restart/") else: ic = ymr.InitialConditions.Uniform(density=2) u.registerParticleVector(pv=pv, ic=ic) u.run(7) rank = comm.Get_rank()
#!/usr/bin/env python import ymero as ymr import numpy as np import argparse parser = argparse.ArgumentParser() parser.add_argument('--ranks', type=int, nargs=3, required=True) args = parser.parse_args() domain = (8, 16, 4) u = ymr.ymero(args.ranks, domain, dt=0, debug_level=8, log_filename='log') pv = ymr.ParticleVectors.ParticleVector('pv', mass = 1) ic = ymr.InitialConditions.Uniform(density=3) u.registerParticleVector(pv=pv, ic=ic) sampleEvery = 1 dumpEvery = 1 binSize = (1., 1., 1.) field = ymr.Plugins.createDumpAverage('field', [pv], sampleEvery, dumpEvery, binSize, [("velocity", "vector_from_float8")], 'h5/solvent-') u.registerPlugins(field) u.run(3) # TEST: dump.h5 # cd dump # rm -rf h5 # ymr.run --runargs "-n 2" ./h5.py --ranks 1 1 1 > /dev/null
def report(): print('Started with the following parameters: ' + str(args)) if unknown is not None and len(unknown) > 0: print('Some arguments are not recognized and will be ignored: ' + str(unknown)) print('Outer viscosity: %f, inner: %f' % (mu_outer, mu_inner)) print('Generated %d cells %s, real hematocrit is %f' % (len(rbcs_ic), str(ncells), real_ht)) print('Cell parameters: %s' % str(params2dict(params))) print('') sys.stdout.flush() if args.dry_run: report() quit() u = ymr.ymero(args.nranks, args.domain, debug_level=args.debug_lvl, log_filename='generate', restart_folder="generated/") if u.isMasterTask(): report() #==================================================================================== #==================================================================================== # Interactions: # DPD dpd = ymr.Interactions.DPD('dpd', rc=1.0, a=args.a, gamma=args.gamma, kbt=args.kbt, dt=args.dt, power=args.power) u.registerInteraction(dpd) # Contact (LJ) contact = ymr.Interactions.LJ('contact', rc=1.0, epsilon=10, sigma=1.0, object_aware=True, max_force=2000) u.registerInteraction(contact)
#!/usr/bin/env python import numpy as np import ymero as ymr ranks = (1, 1, 1) domain = [4., 6., 8.] u = ymr.ymero(ranks, tuple(domain), debug_level=3, log_filename='log') a = (0.1, 0.2, 0.3) coords = [[-a[0], -a[1], -a[2]], [-a[0], -a[1], a[2]], [-a[0], a[1], -a[2]], [-a[0], a[1], a[2]], [a[0], a[1], -a[2]], [a[0], a[1], a[2]]] com_q = [ [1., 0., 0., 1.0, 0.0, 0.0, 0.0], [3., 0., 0., 1.0, 2.0, 0.0, 0.0], [-1., 0., 0., 1.0, 0.0, 3.0, 0.0], # out of the domain [2., 0., 0., 1.0, 0.0, 0.0, 1.0] ] pv = ymr.ParticleVectors.RigidEllipsoidVector('ellipsoid', mass=1, object_size=len(coords), semi_axes=a) ic = ymr.InitialConditions.Rigid(com_q=com_q, coords=coords) u.registerParticleVector(pv=pv, ic=ic) # xyz = ymr.Plugins.createDumpXYZ('xyz', pv, 1, "xyz/") # u.registerPlugins(xyz)
parser = argparse.ArgumentParser() parser.add_argument("--restart", action='store_true', default=False) parser.add_argument("--ranks", type=int, nargs=3) args = parser.parse_args() comm = MPI.COMM_WORLD ranks = args.ranks domain = (16, 16, 16) dt = 0 if args.restart: u = ymr.ymero(ranks, domain, dt, comm_ptr=MPI._addressof(comm), debug_level=8, log_filename='log', checkpoint_every=0) else: u = ymr.ymero(ranks, domain, dt, comm_ptr=MPI._addressof(comm), debug_level=8, log_filename='log', checkpoint_every=5) mesh = trimesh.creation.icosphere(subdivisions=1, radius=0.1) udx_mesh = ymr.ParticleVectors.MembraneMesh(mesh.vertices.tolist(),
parser = argparse.ArgumentParser() parser.add_argument('--subStep', action='store_true', default=False) parser.add_argument('--vis', action='store_true', default=False) args = parser.parse_args() dt = 0.001 substeps = 10 if args.subStep: dt = dt * substeps ranks = (1, 1, 1) domain = (8, 8, 8) u = ymr.ymero(ranks, domain, dt, debug_level=3, log_filename='log') nparts = 1000 pos = np.random.normal(loc = [0.5, 0.5 * domain[1] + 1.0, 0.5 * domain[2]], scale = [0.1, 0.3, 0.3], size = (nparts, 3)) vel = np.random.normal(loc = [1.0, 0., 0.], scale = [0.1, 0.01, 0.01], size = (nparts, 3)) pvSolvent = ymr.ParticleVectors.ParticleVector('pv', mass = 1) icSolvent = ymr.InitialConditions.FromArray(pos=pos.tolist(), vel=vel.tolist()) vv = ymr.Integrators.VelocityVerlet('vv') u.registerParticleVector(pvSolvent, icSolvent)
#!/usr/bin/env python import ymero as ymr import numpy as np import argparse parser = argparse.ArgumentParser() parser.add_argument("--restart", action='store_true', default=False) args = parser.parse_args() ranks = (1, 1, 1) domain = (4, 6, 8) u = ymr.ymero(ranks, domain, dt=0, debug_level=3, log_filename='log', checkpoint_every=(5 if not args.restart else 0)) if args.restart: u.restart("restart/") pv = ymr.ParticleVectors.ParticleVector('pv', mass=1) u.registerParticleVector(pv=pv, ic=ymr.InitialConditions.Uniform(density=8)) coords = [[-1, -1, -1], [1, 1, 1]] com_q = [[0.5 * domain[0], 0.5 * domain[1], 0.5 * domain[2], 1., 0, 0, 0]] ov = ymr.ParticleVectors.RigidEllipsoidVector('ov', mass=1, object_size=len(coords), semi_axes=(1, 1, 1)) u.registerParticleVector(pv=ov,