Toggle navigation
Documentation
Big picture
The finite element method
The data structure
Not-so-quick guide
Optimisation
Order of action functions
Example codes and tutorials
List of example codes and tutorials
Meshing
Solvers
MPI parallel processing
Post-processing/visualisation
Other
Change log
Creating documentation
Coding conventions
Index
FAQ
Get it
Installation guide
Get code from subversion repository
Get code as tar file
Copyright
About
People
Contact/Get involved
Publications
Acknowledgements
Picture show
Go
src
flux_transport
scalar_advection_elements.cc
Go to the documentation of this file.
1
//LIC// ====================================================================
2
//LIC// This file forms part of oomph-lib, the object-oriented,
3
//LIC// multi-physics finite-element library, available
4
//LIC// at http://www.oomph-lib.org.
5
//LIC//
6
//LIC// Version 1.0; svn revision $LastChangedRevision$
7
//LIC//
8
//LIC// $LastChangedDate$
9
//LIC//
10
//LIC// Copyright (C) 2006-2016 Matthias Heil and Andrew Hazel
11
//LIC//
12
//LIC// This library is free software; you can redistribute it and/or
13
//LIC// modify it under the terms of the GNU Lesser General Public
14
//LIC// License as published by the Free Software Foundation; either
15
//LIC// version 2.1 of the License, or (at your option) any later version.
16
//LIC//
17
//LIC// This library is distributed in the hope that it will be useful,
18
//LIC// but WITHOUT ANY WARRANTY; without even the implied warranty of
19
//LIC// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
//LIC// Lesser General Public License for more details.
21
//LIC//
22
//LIC// You should have received a copy of the GNU Lesser General Public
23
//LIC// License along with this library; if not, write to the Free Software
24
//LIC// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
25
//LIC// 02110-1301 USA.
26
//LIC//
27
//LIC// The authors may be contacted at oomph-lib@maths.man.ac.uk.
28
//LIC//
29
//LIC//====================================================================
30
//Non-inline member function of the flux transport elements class
31
32
#include "
scalar_advection_elements.h
"
33
34
namespace
oomph
35
{
36
//=========================================================
37
/// \short Return the flux as a function of the unknowns
38
//=========================================================
39
template
<
unsigned
DIM>
40
void
ScalarAdvectionEquations<DIM>::
41
flux
(
const
Vector<double>
&u,
DenseMatrix<double>
&f)
42
{
43
//Get the wind
44
Vector<double>
W
(DIM);
45
Vector<double>
s
(DIM), x(DIM);
46
//Dummy integration point
47
unsigned
ipt=0;
48
this->get_wind_scalar_adv(ipt,
s
,x,W);
49
50
//Flux is the wind multiplied by the flux
51
for
(
unsigned
j=0;j<DIM;j++) {f(0,j) = W[j]*u[0];}
52
}
53
54
//======================================================================
55
/// \short Return the flux derivatives as a function of the unknowns
56
//=====================================================================
57
template
<
unsigned
DIM>
58
void
ScalarAdvectionEquations<DIM>::
59
dflux_du
(
const
Vector<double>
&u,
RankThreeTensor<double>
&df_du)
60
{
61
const
unsigned
n_flux = this->nflux();
62
63
//Get the wind
64
Vector<double>
W
(DIM);
65
Vector<double>
s
(DIM), x(DIM);
66
//Dummy integration point
67
unsigned
ipt=0;
68
this->get_wind_scalar_adv(ipt,
s
,x,W);
69
70
df_du.
initialise
(0.0);
71
72
for
(
unsigned
i
=0;
i
<n_flux;
i
++)
73
{
74
for
(
unsigned
j=0;j<DIM;j++)
75
{
76
df_du(
i
,j,
i
) = W[j];
77
}
78
}
79
}
80
81
template
class
ScalarAdvectionEquations<1>
;
82
template
class
ScalarAdvectionEquations<2>
;
83
template
class
ScalarAdvectionEquations<3>
;
84
85
}
oomph::ScalarAdvectionEquations::flux
void flux(const Vector< double > &u, DenseMatrix< double > &f)
Return the flux as a function of the unknown.
Definition:
scalar_advection_elements.cc:41
oomph::RankThreeTensor::initialise
void initialise(const T &val)
Initialise all values in the tensor to val.
Definition:
matrices.h:1581
i
cstr elem_len * i
Definition:
cfortran.h:607
oomph
Definition:
advection_diffusion_elements.cc:33
oomph::Vector< double >
oomph::RankThreeTensor
A Rank 3 Tensor class.
Definition:
matrices.h:1337
s
static char t char * s
Definition:
cfortran.h:572
oomph::ScalarAdvectionEquations
Base class for advection equations.
Definition:
scalar_advection_elements.h:52
scalar_advection_elements.h
oomph::ScalarAdvectionEquations::dflux_du
void dflux_du(const Vector< double > &u, RankThreeTensor< double > &df_du)
Return the flux derivatives as a function of the unknowns.
Definition:
scalar_advection_elements.cc:59
oomph::DenseMatrix< double >
oomph::QuadTreeNames::W
Definition:
quadtree.h:60