Giter Site home page Giter Site logo

picassodev / picasso Goto Github PK

View Code? Open in Web Editor NEW
5.0 7.0 7.0 1.48 MB

Particle-in-cell library based on Cabana and Kokkos

License: BSD 3-Clause "New" or "Revised" License

CMake 1.57% C++ 97.66% Dockerfile 0.77%
cabana high-performance-computing hpc kokkos particle-in-cell

picasso's Introduction

Picasso

picasso's People

Contributors

abisner avatar dalg24 avatar kwitaechong avatar lebuller avatar sslattery avatar streeve avatar terwin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

picasso's Issues

Tensor and TensorViewWrapper for Rank > 2

  • Implementation of higher rank tensor field types using variadic template type.
    • Re-write rank-2 Tensor as a specialization, possibly Vector as rank-1.
  • Implementation of corresponding field ViewWrappers.

Deep Copy Operation for Batched Linear Algebra

A deep_copy(lhs,rhs) function needs to be added to BatchedLinearAlgebra to ensure that deep copies always occur when needed instead of relying on potentially confusing assignment operator syntax.

DDMPM in Picasso

This issue concerns the implementation of the dual domain material point method (DDMPM) in Picasso.
DDMPM scores a few numerical advantages over the classical MPM, namely, improved accuracy and stability, especially in the vicinity of contact discontinuities, by reducing cell crossing noise.

A few sub-steps for a robust implementation are required:

  • A distribution coefficient algorithm (DCA) for reducing small node mass instabilities. This requires the definition of nodal transfer coefficients, $C_{li}$. See Eq. (41) in the Zhang et al. paper.
  • Modified shape function gradient calculation. This may be represented by a series of two consecutive stencil operations on the nodes.
  • Incorporation of modified shape function gradient in the velocity (momentum) update.

Random seed for particle initialization

Picasso::initializeParticles and Picasso::initializeSurfaceParticles should accept a seed parameter to allow a user to specify a fixed seed for the Kokkos::Random_XorShift64_Pool pool. Otherwise, the behavior should default to initializing the pool with a random seed.

Add CI

  • GitHub actions #3
  • Cache boost in GHA #22
  • Jenkins CUDA #9
  • Jenkins HIP

Shared random number generator utility functions

Instead of hard-coding seed generation and state-pool creation from Kokkos:: random number generators, a set of utility functions in the Picasso:: namespace should be created to facilitate their use.

2D Particle Infrastructure

2D base grid infrastructure has been largely added. Particle infrastructure (initialization, interpolation, I/O, etc.) is also needed.

Fix indexing/memory issue in Tensor3 wrapper

When indexing along the view wrapper for a Tensor3, there appears to be duplicated memory issue where setting values in certain indices will cause those values to be reproduced across separate indices.
i.e. when creating a wrapper for a 3x3x7 Tensor3 Field, filling the values across (All, All, 0) leads to some of the values on (All, All, 3) and (All, All, 6) to be erroneously filled at the same time.

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.