$treeview $search $mathjax
Palabos  Version 1.1
$projectbrief
$projectbrief
$searchbox

plb::Compute_C_processor< T, Descriptor > Class Template Reference

Compute the concentration C of the heavy phase. More...

#include <heLeeProcessor3D.h>

Inheritance diagram for plb::Compute_C_processor< T, Descriptor >:
Collaboration diagram for plb::Compute_C_processor< T, Descriptor >:

List of all members.

Public Member Functions

 Compute_C_processor (T M_)
virtual void processGenericBlocks (Box3D domain, std::vector< AtomicBlock3D * > blocks)
virtual Compute_C_processor< T,
Descriptor > * 
clone () const
virtual void getTypeOfModification (std::vector< modif::ModifT > &modified) const

Detailed Description

template<typename T, template< typename U > class Descriptor>
class plb::Compute_C_processor< T, Descriptor >

Compute the concentration C of the heavy phase.

GENERAL CONCEPTS ================ In this implementation of the He/Lee binary fluid, the macroscopic variables like velocity and concentration are stored in separate fields (unlike the Shan/Chen implementation in Palabos, in which this kind of variables are stored in external scalars). The reason is that the model makes a massive use of finite difference schemes to compute derivatives, and derivatives of derivaties (up to fourth derivative). Derivatives are non-local, and so, before each deriva- tive some inter-block communication is needed to fill the envelopes. This is most easily achieved by putting each macroscopic variable in a separate field which then spontaneously updates its envelope when it has been modified.

LITERATURE ==========

VARIABLES ========= The variables, each stored in a separate lattice or field, are: Block-Lattices:

Note that not all terms used in the He/Lee model are not represented as fields. For example, although the gradient of the pressure is used in the model, it is not stored in a tensor-field; instead, it is computed on-the-fly during the collision to save memory and to improve efficiency. This would not have been possible for the gradient of C, for example, because this quantity is used not only directly in the collision, but also for the computation of the velocity u.

DATA PROCESSORS FOR THE IMPLEMENTATION OF THE MODEL =================================================== The He/Lee algorithm is split over 4 data processors; the three first are needed to compute the macroscopic variables and their space deri- vatives from the populations f and g; the fourth implements the collision step.

Note that all processors take the field f as their first argument, even if they don't need it, for a purely technical reason: in this way they can all be added as internal processors to f, to guarantee that they are executed automatically.

DATA PROCESSORS FOR SIMULATION SETUP ==================================== To create an initial condition, the user must assign a value to C, u, and p1. Then, derivative variables can be computed by invoking Compute_gradC_rho_mu_processor. A special data processor is available to compute the derivatives of mu without overwriting u and p1:

Comment: laplaceMu is taken from the previous time step to preserve an explicit scheme.


Constructor & Destructor Documentation

template<typename T , template< typename U > class Descriptor>
plb::Compute_C_processor< T, Descriptor >::Compute_C_processor ( M_  )  [inline]

Member Function Documentation

template<typename T , template< typename U > class Descriptor>
Compute_C_processor< T, Descriptor > * plb::Compute_C_processor< T, Descriptor >::clone (  )  const [inline, virtual]
template<typename T , template< typename U > class Descriptor>
void plb::Compute_C_processor< T, Descriptor >::getTypeOfModification ( std::vector< modif::ModifT > &  modified  )  const [inline, virtual]
template<typename T , template< typename U > class Descriptor>
void plb::Compute_C_processor< T, Descriptor >::processGenericBlocks ( Box3D  domain,
std::vector< AtomicBlock3D * >  blocks 
) [inline, virtual]

The documentation for this class was generated from the following files: