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

advectionDiffusionLattices.hh

Go to the documentation of this file.
00001 /* This file is part of the Palabos library.
00002  *
00003  * Copyright (C) 2011 FlowKit Sarl
00004  * Avenue de Chailly 23
00005  * 1012 Lausanne, Switzerland
00006  * E-mail contact: contact@flowkit.com
00007  *
00008  * The most recent release of Palabos can be downloaded at 
00009  * <http://www.palabos.org/>
00010  *
00011  * The library Palabos is free software: you can redistribute it and/or
00012  * modify it under the terms of the GNU Affero General Public License as
00013  * published by the Free Software Foundation, either version 3 of the
00014  * License, or (at your option) any later version.
00015  *
00016  * The library is distributed in the hope that it will be useful,
00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019  * GNU Affero General Public License for more details.
00020  *
00021  * You should have received a copy of the GNU Affero General Public License
00022  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
00023 */
00024 
00025 /* Main author: Orestis Malaspinas
00026  */
00027 
00034 #ifndef ADVECTION_DIFFUSION_LATTICES_HH
00035 #define ADVECTION_DIFFUSION_LATTICES_HH
00036 
00037 #include "latticeBoltzmann/advectionDiffusionLattices.h"
00038 
00039 namespace plb {
00040 
00041 namespace descriptors {
00042 
00043     // AdvectionDiffusion D2Q5 //////////////////////////////////////////////
00044 
00045     template<typename T>
00046     const T D2Q5Constants<T>::invD = (T)1 / (T) d;
00047 
00048     template<typename T>
00049     const int D2Q5Constants<T>::vicinity = 1;
00050 
00051     template<typename T>
00052     const int D2Q5Constants<T>::c
00053             [D2Q5Constants<T>::q][D2Q5Constants<T>::d] =
00054         {
00055             { 0, 0},
00056             {-1, 0}, {0, -1}, {1,0}, { 0,1}
00057         };
00058 
00059     template<typename T>
00060     const int D2Q5Constants<T>::cNormSqr[D2Q5Constants<T>::q] =
00061         { 0, 1, 1, 1, 1 };
00062 
00063     template<typename T>
00064     const T D2Q5Constants<T>::t[D2Q5Constants<T>::q] =
00065         {
00066             (T)1-(T)2/invCs2, 
00067             (T)1/(invCs2*(T)2), (T)1/(invCs2*(T)2), 
00068             (T)1/(invCs2*(T)2), (T)1/(invCs2*(T)2)
00069         };
00070 
00071     template<typename T>
00072     const T D2Q5Constants<T>::cs2 = (T)1 / (T)3;
00073 
00074     template<typename T>
00075     const T D2Q5Constants<T>::invCs2 = (T)3;
00076 
00077     template<typename T>
00078     const char AdvectionDiffusionD2Q5Descriptor<T>::name[] = "AdvectionDiffusionD2Q5";
00079 
00080         
00081     // AdvectionDiffusion D3Q7 ////////////////////////////////////////////////////
00082 
00083     template<typename T>
00084     const T D3Q7Constants<T>::invD = (T)1 / (T) d;
00085 
00086     template<typename T>
00087     const int D3Q7Constants<T>::vicinity = 1;
00088 
00089 
00090     template<typename T>
00091     const int D3Q7Constants<T>::c
00092         [D3Q7Constants<T>::q][D3Q7Constants<T>::d] =
00093         {
00094             { 0, 0, 0},
00095 
00096             {-1, 0, 0}, {0,-1, 0},
00097             { 0, 0,-1}, {1, 0, 0},
00098             { 0, 1, 0}, {0, 0, 1},
00099         }; 
00100 
00101     template<typename T>
00102     const int D3Q7Constants<T>::cNormSqr[D3Q7Constants<T>::q] =
00103         { 0, 1, 1, 1, 1, 1, 1};
00104 
00105     template<typename T>
00106     const T D3Q7Constants<T>::t[D3Q7Constants<T>::q] =
00107         {
00108             (T)1-(T)3 / invCs2,
00109 
00110             (T)1/(invCs2*(T)2), (T)1/(invCs2*(T)2), (T)1/(invCs2*(T)2),
00111             (T)1/(invCs2*(T)2), (T)1/(invCs2*(T)2), (T)1/(invCs2*(T)2)
00112         };
00113         
00114     template<typename T>
00115     const T D3Q7Constants<T>::cs2 = (T)1 / (T)4;
00116 
00117     template<typename T>
00118     const T D3Q7Constants<T>::invCs2 = (T)4;
00119 
00120     template<typename T>
00121     const char AdvectionDiffusionD3Q7Descriptor<T>::name[] = "AdvectionDiffusionD3Q7";
00122 
00123     template<typename T>
00124     const char AdvectionDiffusionWithSourceD3Q7Descriptor<T>::name[] = "AdvectionDiffusionWithSourceD3Q7";
00125 
00126 }  // namespace descriptors
00127 
00128 }  // namespace plb
00129 
00130 #endif