CS 294-73 Software Engineering for Scientific Computing - - PowerPoint PPT Presentation

cs 294 73 software engineering for scientific computing
SMART_READER_LITE
LIVE PREVIEW

CS 294-73 Software Engineering for Scientific Computing - - PowerPoint PPT Presentation

CS 294-73 Software Engineering for Scientific Computing Lecture 14: PPPM for Molecular Dynamics; Final Project Molecular Dynamics We want to simulate a collection of N physical particles, evolving under Newtons laws of


slide-1
SLIDE 1

CS 294-73 
 Software Engineering for Scientific Computing
 
 
 Lecture 14: PPPM for Molecular Dynamics; Final Project


slide-2
SLIDE 2

10/10/2017 CS294-73 – Lecture 14

Molecular Dynamics

We want to simulate a collection of N physical particles, evolving under Newton’s laws of classical mechanics.

2

dxk dt = vk dvk dt = F (xk) F (x) = X

k0

wk0(rΦ)(x xk0) {xk, vk, wk}N

k=1

slide-3
SLIDE 3

10/10/2017 CS294-73 – Lecture 14

N-Body Calculation for Coulombic Systems

Collection of charged particles, each of which induces a contribution to the forces

function in any point in space via Coulomb potential.

3

Computing the forces on N particles is an O(N2) calculation

~ F(xk) = X

k0

~ Fk0(x) , k = 1, . . . , N

Can’t just use nearby particles, due to long-range nature of the forces Can’t use PIC,

due to short-range nature of the forces..

~ Fk(x) = qkrxG(x xk) , G(z) = 1 4⇡|z| , ~ F(x) = X

k0

~ Fk0(x)

slide-4
SLIDE 4

10/10/2017 CS294-73 – Lecture 14

Splitting into short-range and long-range

To compute the force on a particle (red), represent as a combination of

4

  • Contributions from nearby particles (black), using (local) N-Body calculations.
  • Contributions from far-away particles, using PIC (blue).

How do you do this without double-counting, or having many PIC solves ? What is the error of the resulting method for an arbitrary distribution of a finite number of particles ?

slide-5
SLIDE 5

10/10/2017 CS294-73 – Lecture 14

P3M (Hockney and Eastwood)

5

Idea: express the potential as a sum.

  • Computed using N-body calculation.
  • Approximated using PIC.

X

k0

(rGP M)(x x0

k)

X

k0

(rGP P )(x x0

k)

Cost of PP calculation: Cost of PM calculation: O(N) + O(NglogNg)

O(Nδ3)N = O(N 2δ3) G(z) = GP P (z) + GP M(z) GP P (z) =0 for |z| > δ =G(z) for |z| < δ0 < δ , δ = O(δ0)

slide-6
SLIDE 6

10/10/2017 CS294-73 – Lecture 14

P3M (Hockney and Eastwood)

6

Issues:

  • How to implement ?
  • Approach: basic particle representation from PIC doesn’t change - only

force calculation does.

  • What is the error ?
  • This is only a question about the error in the PIC calculation - the

decomposition and the PP calculation are exact.

  • Error analysis is tricky, since the number of particles is fixed.
slide-7
SLIDE 7

10/10/2017 CS294-73 – Lecture 14

PM Force Calculation

Focus on the first two steps. We are making the approximation

7

⇢g

i =

X

k

qkΨ(ihg xk) g

i =

X

j∈Z3

GP M(ihg jhg)⇢g

i

~ F g

i = rg(g)i

~ FP M,k = X

i

~ F g

i Ψ(xk ihg)

X

k

qkGP M(x − xk) ≈ X

j∈Z3

GP M(x − jhg)ρg

i

= X

j∈Z3

GP M(x − jhg)qkΨ(jhg − xk) = X

k

qk X

j∈Z3

GP M(x − jhg)Ψ(jhg − xk)

slide-8
SLIDE 8

10/10/2017 CS294-73 – Lecture 14

PM Force Calculation

In what sense does Taylor expansion of GPM(y) = GPM(x - y) about y = xk (multi-index notation).

8

GP M(x − xk) ≈ X

j∈Z3

GP M(x − jhg)Ψ(jhg − xk)?

X

j∈Z3

GP M(x jhg)Ψ(jhg xk) =GP M(x xk) X

j∈Z3

Ψ(jhg xk) + X

p

(1)|p|1 p! (rpGP M)|(x−xk) X

j∈Z3

(jhg xk)pΨ(jhg xk) + O ⇣ hP

g

max(|x xk|, δ)P +1 ⌘

=1 (conservation of charge) =0 (moment conditions) Remainder term in the Taylor expansion.

slide-9
SLIDE 9

10/10/2017 CS294-73 – Lecture 14

PM Force Calculation

Thus the error in the field induced by a single particle is What happens for many particles - some nearby, some farther away ? (Missing a factor of log(R) if P=2).

9

O ⇣ hP

g

max(|x − xk|, δ)P +1 ⌘ ✏ = X

k

qkO ⇣ hP

g

max(|x − xk|, )P +1 ⌘ = X

r

O ⇣ hP (r)P +1 ¯ q(r)2⌘ = O ⇣ hP

g

δP −2

R

X

r=1

1 rP −1 ⌘ = O ⇣ h2

g

⇣hg δ ⌘P −2⌘

slide-10
SLIDE 10

10/10/2017 CS294-73 – Lecture 14

Different deposition functions

10

slide-11
SLIDE 11

10/10/2017 CS294-73 – Lecture 14

Final Project

  • Done in teams of 2-4 people.
  • Final report due at 11:59PM, 12/15/17.
  • We have set of intermediate deadlines that
  • Define a process
  • Define the work product of your project.
  • The intermediate work will not be graded at the various deadlines,

but read to provide you feedback and guidance.They are still required by the end of the project.

  • You should be using git to track / submit your intermediate work,

and to communicate within the team. Don’t just submit everything at the end.

  • In this lecture, I will go through in detail the process and deadlines

in terms of a project I have used in the past.

11

slide-12
SLIDE 12

10/10/2017 CS294-73 – Lecture 14

Intermediate milestones

  • Identification of the teams, and of the topic for the project. A

mathematical description of the problem being solved. This can be in the form of a research article, combined with a concise summary. (Required by 10/30/17. We will set up shared git repositories for each project / team.)

  • A complete mathematical specification of the discretization

methods and / or numerical algorithms to be used to solve the

  • problem. A specification of what will constitute a

computational solution to this problem. (11/13/17)

  • A top-level design of the software used to solve this problem,

in the form of header files for the major classes, the mapping

  • f those classes to the algorithm specification given above,

and the specification of a testing process for each class.

(11/27/17).

12

slide-13
SLIDE 13

10/10/2017 CS294-73 – Lecture 14

Mathematical Specification

13

slide-14
SLIDE 14

10/10/2017 CS294-73 – Lecture 14

Incompressible Euler Equations

  • Bell, Colella, Glaz, J. Comput. Phys. 1989.
  • Initial conditions on velocity specified, periodic boundary

conditions:

  • Mathematically unfamiliar: combination of evolution equations

and constraints.

14

~ u(x, 0) = ~ u0(x) ~ u(x + (k, l)) = ~ u(x) , k, l ∈ Z

slide-15
SLIDE 15

10/10/2017 CS294-73 – Lecture 14

Pressure-Poisson formulation

  • Eliminate the constraint by differentiating it with respect to

time, obtaining an equation for p.

15

slide-16
SLIDE 16

10/10/2017 CS294-73 – Lecture 14

Projection formulation

  • Use the Helmholtz projection operator to make this manifestly

an evolution equation without constraints. Starting from We apply the projection operator

16

slide-17
SLIDE 17

10/10/2017 CS294-73 – Lecture 14

Projection formulation

  • Use the Helmholtz projection operator to make this manifestly

an evolution equation without constraints.

17

And using the fact that the projection annihilates gradients, leaves divergence-free fields unchanged

slide-18
SLIDE 18

10/10/2017 CS294-73 – Lecture 14

Projection formulation

  • Use the Helmholtz projection operator to make this manifestly

an evolution equation without constraints.

18

slide-19
SLIDE 19

10/10/2017 CS294-73 – Lecture 14

Discretization

19

slide-20
SLIDE 20

10/10/2017 CS294-73 – Lecture 14

Discretization in space

  • Cell-centered discretization on a power-of-two grid.
  • Discretization of :

20

~ uh

i (t)

Dd(ud~ u)i

slide-21
SLIDE 21

10/10/2017 CS294-73 – Lecture 14

Discretization in space

  • Cell-centered discretization on a power-of-two grid.
  • Discretization of the projection operator

21

~ uh

i (t)

slide-22
SLIDE 22

10/10/2017 CS294-73 – Lecture 14

Solvers

We require two solver algorithms: one for solving Poisson’s equation on a periodic grid, plus a time-discretization algorithm.

  • We will use an FFT solver for Poisson’s equation.
  • We will use RK4 for time discretization, with a slight variation

specific to the kind of projection discretization we are using.

22

slide-23
SLIDE 23

10/10/2017 CS294-73 – Lecture 14

Method of Lines

23

This leads to a system of ordinary differential equations for the discretized variables. To solve a system of ordinary differential equations of the form

dQ dt = F(Q, t) d~ ui dt = −Ph⇣ X

d

Dd(uh

d~

uh)i ⌘

slide-24
SLIDE 24

10/10/2017 CS294-73 – Lecture 14

Fourth-order Runge-Kutta

24

Generalizes Simpson’s rule for integrals.

slide-25
SLIDE 25

10/10/2017 CS294-73 – Lecture 14

Method of Lines

25

For the case of we compute

~ u∗ = ~ un + 1 6(k1 + k2 + k3 + k4) ~ un+1 = Ph(~ u∗) d~ ui dt = −Ph⇣ X

d

Dd(uh

d~

uh)i ⌘

slide-26
SLIDE 26

10/10/2017 CS294-73 – Lecture 14

FFT Solver for Poisson’s equation

Given , we compute as follows.

  • Compute the normalized complex forward FFT in 2D of
  • Compute the Fourier coefficients of :
  • Compute the inverse FFT to obtain :

26

slide-27
SLIDE 27

10/10/2017 CS294-73 – Lecture 14

Software Design

Use the mathematical structure of your algorithm as a basis for your software design

  • Hierarchical structure that represents the hierarchy of

abstractions in the description of your algorithm.

  • Classes for data containers, and low-level operations on

them.

  • Classes or functions for operators (depending on whether the
  • perator has state, or needs to be used as a template

parameter).

27

slide-28
SLIDE 28

10/10/2017 CS294-73 – Lecture 14

Operator Class: RK4

template <class X, class F, class dX> class RK4 { public: void advance(double a_time, double a_dt, X& a_state); protected: dX m_k; dX m_delta; F m_f; }; In advance, the operator m_f(...) is called to compute increments of the solution in RK4: m_f(dX& a_dx, double& a_time, double& a_dt, X& a_x,
 dX& a_oldDx);

28

slide-29
SLIDE 29

10/10/2017 CS294-73 – Lecture 14

Comments on RK4

  • Interface class done purely with templates (as opposed

to inheritance).

  • X comes in as an argument of advance, so it keeps

track of any time-dependent context required to execute the various other operators.

  • dX <-> k very lightweight: data holder for information

required to increment the solution.

  • F is a class, but is really just a function pointer.

29

slide-30
SLIDE 30

10/10/2017 CS294-73 – Lecture 14

Operator Class: ComputeEulerRHS ComputeEulerRHS implements and conforms to the F template parameter interface.

30

−Ph⇣ X

d

Dd(uh

d~

uh)i ⌘

slide-31
SLIDE 31

10/10/2017 CS294-73 – Lecture 14

Operator Class: ComputeEulerRHS

Class ComputeEulerRHS // Corresponds to F in RK4. {public: void operator()( DeltaVelocity& a_newDv, const Real& a_time, const Real& a_dt, const FieldData& a_velocity, DeltaVelocity& a_oldDv); }

31

slide-32
SLIDE 32

10/10/2017 CS294-73 – Lecture 14

State Data : FieldData (X)

class FieldData {public: FieldData(); FieldData(DBox a_grid,a_nComponent,int a_ghost,int a_M, int a_N); ~FieldData(); void fillGhosts(); void increment(const Real& a_scalar, const DeltaVelocity& a_fieldIncrement); void imposeConstraint(); int m_components; DBox m_grid; int m_M,m_N,m_ghosts; RectMDArray<Real,DIM> m_data;

32

slide-33
SLIDE 33

10/10/2017 CS294-73 – Lecture 14

State Data: DeltaVelocity (dX)

class DeltaVelocity {public: DeltaVelocity (); DeltaVelocity (DBox a_grid); ~DeltaVelocity(); RectMDArray<Real,DIM>& getVelocity(); void increment(const double& a_scalar, const DeltaVelocity& a_fieldIncrement); ... private: DBox m_grid; RectMDArray<double,DIM> m_data; }

33

slide-34
SLIDE 34

10/10/2017 CS294-73 – Lecture 14

Operator Class: Projection

class Projection {public: Projection(); Projection(int a_M); ~Projection(); void applyProjection(RectMDArray<Real,DIM>& a_velocity) const; void gradient(RectMDArray<Real,DIM>& a_vector, const RectMDArray<Real,DIM>& a_scalar); void divergence(RectMDArray<Real>& a_scalar, const RectMDArray<Real,DIM>& a_vector); ... private: int m_M,m_N; DBox m_grid; FFTPoissonSolver m_solver; }

34

slide-35
SLIDE 35

10/10/2017 CS294-73 – Lecture 14

Operator Class: FFTPoissonSolver

class FFTPoissonSolver {public: FFTPoissonSolver(); FFTPoissonSolver(int a_M); ~FFTPoissonSolver(); void solve(RectMDArray<Real>& a_Rhs); ... private: int m_M,m_N; Box m_grid; FFTMD m_fft; }

35

slide-36
SLIDE 36

10/10/2017 CS294-73 – Lecture 14

function: Advection

void advectionOperator( deltaVelocity& a_divuu, const FieldData& a_velocity, const DBox m_grid, const double& a_h);

36

slide-37
SLIDE 37

10/10/2017 CS294-73 – Lecture 14

Organizing Your Project

MyProject/

  • Code/
  • src/ (or src1/ , src2/ , ... ; or subdirectories of

src)

  • <*.H, *.cpp files>
  • unitTests
  • o/ , d/
  • exec/ (or exec1/ , exec2/ , ...)
  • lib/
  • include/
  • Documents/
  • designDocument/
  • doxygenDocument/
  • FinalReport/

Everything should be buildable by invoking “make all” in Code/exec/ , possibly by invoking make from other directories.

37

slide-38
SLIDE 38

10/10/2017 CS294-73 – Lecture 14

What are Unit Tests ?

  • For each class, want to test member functions to see

whether the various member functions are correctly implemented.

  • (D(\vec{u} == const) == 0.)
  • Lh(uh) = O(hP) as h-> 0.
  • Known analytic behavior for small systems.
  • Unit tests should have their own makefile, make targets.
  • Unit tests grow in time. As you identify fix bugs, you want

to be sure they stay fixed.

38