28 #define USE_LOG_ENTROPY 1 31 namespace buckleyleverett {
50 return "buckleyleverett";
106 size_t index)
const {
110 template<
class T,
class S>
117 size_t index)
const {
125 const ConservedVariables& input) {
126 output.
u.at(index) = input.
u;
133 const ExtraVariables& input)
const {
143 const ConservedVariables& input) {
144 output.
u.at(index) += input.
u;
159 template<
size_t direction>
161 ConservedVariables& F)
const {
162 static_assert(direction < 3,
"We only support up to three dimensions");
163 double u2 = u.
u * u.
u;
164 F = u2 / (u2 + (1 - u.
u) * (1 - u.
u));
182 primitiveVariables)
const {
195 const PrimitiveVariables& primitiveVariables)
const {
203 template<
int direction>
205 const ExtraVariables& v)
const {
206 static_assert(direction >= 0,
"Direction can not be negative");
207 static_assert(direction < 3,
"We only support dimension up to and inclusive 3");
209 return fabs(2 * u.
u * (u.
u * u.
u + (1 - u.
u) * (1 - u.
u)) - u.
u * u.
u *
210 (2 * u.
u - 2 * (1 - u.
u)))
211 / ((u.
u * u.
u + (1 - u.
u) * (1 - u.
u)) * (u.
u * u.
u + (1 - u.
u) * (1 - u.
u)));
224 const ExtraVariables& v)
const {
226 return u.
u < INFINITY && (u.
u == u.
u);
235 return in.
u.at(index);
239 const ConservedVariables& conserved)
const {
253 return (1 / (entropyUpperBound - conserved.
u)) - 1 / (conserved.
u -
272 - entropyUpperBound * log(entropyUpperBound - conserved.
u) - entropyLowerBound *
273 log(conserved.
u - entropyLowerBound));
275 return 1.0 / 6.0 * (conserved.
u * conserved.
u * conserved.
u);
280 template<
int direction>
282 const ConservedVariables& conserved)
const {
285 return rvec1(2.0 * conserved.
u / (conserved.
u * (conserved.
u - 2)));
287 return rvec1(conserved.
u);
291 template<
int direction>
295 matrix1 matrixWithEigenVectors;
296 matrixWithEigenVectors(0, 0) = 1;
297 return matrixWithEigenVectors;
300 template<
int direction>
303 return (2 * u.
u * (u.
u * u.
u + (1 - u.
u) * (1 - u.
u)) - u.
u * u.
u *
304 (2 * u.
u - 2 * (1 - u.
u)))
305 / ((u.
u * u.
u + (1 - u.
u) * (1 - u.
u)) * (u.
u * u.
u + (1 - u.
u) * (1 - u.
u)));
__device__ __host__ ExtraVariables computeExtra(const PrimitiveVariables &primitiveVariables) const
computes the extra variables from the primitive ones
Definition: BuckleyLeverett.hpp:181
__device__ __host__ real computeWaveSpeed(const ConservedVariables &u, const ExtraVariables &v) const
Definition: BuckleyLeverett.hpp:204
static std::string getName()
Definition: BuckleyLeverett.hpp:49
__device__ __host__ rvec1 computeEntropyVariables(const ConservedVariables &conserved) const
Definition: BuckleyLeverett.hpp:250
__device__ __host__ real getWeight(const ConstViews &in, size_t index) const
Definition: BuckleyLeverett.hpp:234
__device__ __host__ AllVariables makeAllVariables(real u) const
Definition: BuckleyLeverett.hpp:229
__device__ __host__ rvec1 computeEigenValues(const ConservedVariables &u) const
Definition: BuckleyLeverett.hpp:301
simulator::SimulatorParameters & parameters
Definition: CellComputerFactory.cpp:60
__device__ __host__ AllVariables fetchAllVariables(ConstViews &views, size_t index) const
Definition: BuckleyLeverett.hpp:105
static const size_t numberOfConservedVariables
Definition: BuckleyLeverett.hpp:71
__device__ static __host__ void addToViewAt(Views &output, size_t index, const ConservedVariables &input)
Definition: BuckleyLeverett.hpp:142
static const std::vector< std::string > extraVariables
Definition: BuckleyLeverett.hpp:66
Definition: BuckleyLeverett.hpp:33
static const std::vector< std::string > primitiveVariables
Definition: BuckleyLeverett.hpp:61
#define __host__
Definition: types.hpp:46
Definition: ConservedVariables.hpp:26
equation::buckleyleverett::ViewsExtra< volume::Volume, memory::View< real > > ViewsExtra
Definition: BuckleyLeverett.hpp:97
BuckleyLeverett(const EquationParameters ¶meters)
Definition: BuckleyLeverett.hpp:36
__device__ __host__ void computePointFlux(const AllVariables &u, ConservedVariables &F) const
Definition: BuckleyLeverett.hpp:160
__device__ __host__ rvec1 computeEntropyVariablesMultipliedByEigenVectorMatrix(const ConservedVariables &conserved) const
Definition: BuckleyLeverett.hpp:281
__device__ __host__ bool obeysConstraints(const ConservedVariables &u, const ExtraVariables &v) const
Definition: BuckleyLeverett.hpp:223
double real
Definition: types.hpp:65
__device__ __host__ rvec1 computeEntropyPotential(const ConservedVariables &conserved) const
Definition: BuckleyLeverett.hpp:267
__device__ __host__ PrimitiveVariables computePrimitiveVariables(const ConservedVariables &conserved) const
Definition: BuckleyLeverett.hpp:238
EquationParameters Parameters
Definition: BuckleyLeverett.hpp:40
real u
Definition: ConservedVariables.hpp:54
__device__ __host__ void setExtraViewAt(ViewsExtra &output, size_t index, const ExtraVariables &input) const
Definition: BuckleyLeverett.hpp:132
buckleyleverett::ConservedVariables ConservedVariables
Definition: BuckleyLeverett.hpp:41
Definition: EquationParameters.hpp:21
equation::buckleyleverett::Views< volume::Volume, memory::View< real > > Views
Definition: BuckleyLeverett.hpp:92
buckleyleverett::AllVariables AllVariables
Definition: BuckleyLeverett.hpp:44
Definition: AllVariables.hpp:24
equation::buckleyleverett::ViewsExtra< const volume::Volume, const memory::View< const real > > ConstViewsExtra
Definition: BuckleyLeverett.hpp:99
__device__ __host__ ExtraVariables fetchExtraVariables(ConstViewsExtra &views, size_t index) const
Definition: BuckleyLeverett.hpp:116
#define static_assert(x, y)
Definition: types.hpp:52
real u
Definition: PrimitiveVariables.hpp:34
__device__ static __host__ void setViewAt(Views &output, size_t index, const ConservedVariables &input)
Definition: BuckleyLeverett.hpp:124
static const constexpr real entropyLowerBound
Definition: BuckleyLeverett.hpp:78
__device__ static __host__ size_t getNumberOfConservedVariables()
Definition: BuckleyLeverett.hpp:87
buckleyleverett::PrimitiveVariables PrimitiveVariables
Definition: BuckleyLeverett.hpp:43
#define __device__
Definition: types.hpp:45
ViewType u
Definition: Views.hpp:55
Various utility functions to implement the tecno flux.
Definition: types.hpp:30
__device__ __host__ matrix1 computeEigenVectorMatrix(const ConservedVariables &conserved) const
Definition: BuckleyLeverett.hpp:292
buckleyleverett::ExtraVariables ExtraVariables
Definition: BuckleyLeverett.hpp:42
__device__ __host__ ConservedVariables computeConserved(const PrimitiveVariables &primitiveVariables) const
computes the conserved variables from the primitive ones
Definition: BuckleyLeverett.hpp:194
vec1< real > rvec1
Definition: types.hpp:70
Definition: PrimitiveVariables.hpp:23
static const constexpr real entropyUpperBound
Definition: BuckleyLeverett.hpp:85
__device__ static __host__ ConservedVariables fetchConservedVariables(buckleyleverett::Views< T, S > &views, size_t index)
Definition: BuckleyLeverett.hpp:111
equation::buckleyleverett::Views< const volume::Volume, const memory::View< const real > > ConstViews
Definition: BuckleyLeverett.hpp:94
__device__ __host__ ExtraVariables computeExtra(const ConservedVariables &u) const
Definition: BuckleyLeverett.hpp:172
static const std::vector< std::string > conservedVariables
Definition: BuckleyLeverett.hpp:56