Git Product home page Git Product logo

mirheo's People

Contributors

aecon avatar amlucas avatar dimaleks avatar ikicic avatar kirilllykov avatar mauro-bis avatar mbernaschi avatar phadjido avatar wadaniel avatar yhtang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mirheo's Issues

Dump SDF

Add a tool (written in c++, wrapped in python) that dumps SDF (from sdf files, analytical shapes) in hdf5.

  • merge sdf function
  • dump sdf

more general mesh dump

mesh dump should be able to have additional fields, such as velocity, stresses, energy density...

  • use xdmf + hdf5 to dump positions (new grid type...)
  • attach extra fields per vertex
  • add tests

Average flow plugins bug

When sampling a lot of particles per bin, floats aren't enough!

  • add Buffer of doubles which keeps accumulated data (along time)
  • send that buffer and convert to float on the postprocess rank
  • switch pinned to device buffers where not needed

Mesh for the ellipsoids

Generate or pass mesh to the ellipsoid objects to enable PLY dumps and other mesh-related stuff

Make 'permanent' particle vector channels

As of now, the extra particle vector channel are not persistent. They are communicated via MPI, but not preserved during the cell-list update. The goal is to make them truly stick:

  • Make CellList reorder data of the extra channels
  • Non-primary CellList should keep the reordered extra channels
  • Views should be aware of the channels store within the non-primary CellList (e.g. for interactions with charge, etc.)
  • Permanent channels should be written and read to/from the restart files

Set up versioning

  • add tags in git
  • synchronize with pip and "hello message" from udx

Rename to YMeRo

The abbreviation is probably ymr.
We have to rename everything, including (but not probably limited to):

  • Repo name
  • Python module
  • Coordinator
  • Bindings
  • Tests
  • Documentation
  • Tools
  • Grep for udevice(x), udx and u. to make sure nothing remains

Developer documentation

  • More comment in the code, most of the files lack them
  • Revive the dev docs build system with Sphinx and RTD
  • Add the code overview description with task dependencies

Adaptive time step

Change time step at run time according to maximum forces

  • pass dt at every step from simulation
  • adapt DPD parameters according to dt
  • change dumpEvery parameters to DPD time unit?
  • adapt dt based on forces

add Tutorials

Add a section with tutorials in the docs.
Should include several sections, with commented scripts.
The scripts must be part of the tests for maintainability reasons.

  • a simple "hello world" setup
  • a basic setup with plugins example
  • walls creation
  • object belonging: membranes with inner/outer
  • object belonging: create rigid objects

Remove MPI for one-rank setup

  • Make exchangers use ParticleExchanger instead of inheriting from it
  • Add a single-rank exchanger that calls no MPI and simply manipulates with memory

Benchmarks

Create benchmarks for representative cases
Report weak (and strong?) scaling for each case

  • dump timings in stats file
  • bulk fluid
  • bulk blood
  • bulk suspended rigid objects
  • with walls
  • with IO
  • add corresponding entries in documentation

new CUDA instructions

overlad warp instructions to remove warnings in newer CUDA versions (__shfl()...)

Report wall forces

compute and report wall stresses/forces;
this will allow to measure viscosity for couette flow with cells

  • reduce total stresses/forces acting on wall frozen particles
  • compute and reduce stresses/forces induced by bounce-back on walls

stress-free shape

allow stress-free shape to be different than initial shape of membranes

Bonce back tests

add tests for bounce back:

  • analytic shape: ellipsoid
  • rigid mesh
  • membrane

Add licence

Need to talk to the ETH people to determine an appropriate one

MPI initialization and finalization

Make possible to initialize mpi outside of the udx coordinator constructor
This would allow multiple instances of udx in the same python script

Restart

Create and test the restarting mechanism based on XDMF / HDF5

  • Read XDMF files
  • Regular ParticleVector restart
  • test it
  • test it, mpi
  • ObjectVector restart
  • test it
  • test it, mpi
  • Object quantities restart
  • test it
  • test it, mpi

separate sdf from walls

This would allow plugins to have a sdf; benefits:

  • apply something in specific and possibly complex regions only, in e.g. plugins
  • can be constructed from function pointer on host: configuration more general in python

average_flow plugin: scale option

for now all quantities are averaged by dividing by number density.
stresses need to be divided by volume instead
-> make configurable scaling

Membrane bending

add more accurate bending kernels for membranes

  • implement Julicher bending
  • separate bending from other forces in interaction kernel
  • configure it from python
  • add test

stress output vectors

pass string argument to name the stress storage array
this would allow to separate different stresses (e.g. fsi and self interactions)

Liquid membrane

  • add separate connectivity structures for different membranes
  • edge-flip for more robust bending

The first avg timestep in stats is too small

Stats at timestep 1001 (simulation time 0.250250):
One timestep takes 0.69 ms Number of particles (total, min/proc, max/proc): 383247, 383247, 383247
Average momentum: [8.583316e-02 1.185539e-04 -2.597606e-04]
Max velocity magnitude: 6.462542
Temperature: 0.1575

Stats at timestep 2001 (simulation time 0.500250):
One timestep takes 14.61 ms Number of particles (total, min/proc, max/proc): 383247, 383247, 383247
Average momentum: [1.778514e-01 6.261818e-04 -3.726583e-02]
Max velocity magnitude: 5.070049
Temperature: 0.6456

Stats at timestep 3001 (simulation time 0.750250):
One timestep takes 14.59 ms Number of particles (total, min/proc, max/proc): 383247, 383247, 383247
Average momentum: [2.302195e-01 -2.846199e-04 -3.787914e-02]
Max velocity magnitude: 5.572831
Temperature: 0.6607

Base class

Add a base class for all uDeviceX objects which contains common quantities (name)
Optionally, this class should have access to global quantities that are shared by everyone (time, domain, dt...).

MDPD

Implement many body DPD: repulsive force needs a density per particle, which is computed from neighbouring particles. (within a different cut of radius rd in general).
This is a 2-step interaction and implies some reorganisation in the code.

  • interaction kernel should have a more generic input and output
  • new kind of interactions: intermediate (only different from simulation point of view)
  • more general packers
  • scheduler: intermediate, then normal
  • general reverse exchanger for ovs
  • exchange back and clear intermediate quantities
  • add documentation

forces saver plugin

add a possibility to save forces for dumping/postprocessing purpose:
For now, the object forces are cleared after integration so the getForces() function returns zeros after run() returns.
Can be implemented as a plugin

YmeroState object

add a state object which contains global quantities (some might change over time):

  • domain info
  • time step
  • current simulation time
  • flag: compute task
    every YmeroObject must accept a (const) pointer to this in their constructor.
    This will allow the users to know that internal variables, such as domain in pvs, are needed

udx.load not working on compute nodes

Looks like udx.load always checks the hostname when it's run, and fails on compute nodes with names like "nidXXXXX". Probably better to make it resolve the hostname only once when installing

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.