VirtualFluids 0.2.0
Parallel CFD LBM Solver
Loading...
Searching...
No Matches
DataTypes.h
Go to the documentation of this file.
1//=======================================================================================
2// ____ ____ __ ______ __________ __ __ __ __
3// \ \ | | | | | _ \ |___ ___| | | | | / \ | |
4// \ \ | | | | | |_) | | | | | | | / \ | |
5// \ \ | | | | | _ / | | | | | | / /\ \ | |
6// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____
7// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______|
8// \ \ | | ________________________________________________________________
9// \ \ | | | ______________________________________________________________|
10// \ \| | | | __ __ __ __ ______ _______
11// \ | | |_____ | | | | | | | | | _ \ / _____)
12// \ | | _____| | | | | | | | | | | \ \ \_______
13// \ | | | | |_____ | \_/ | | | | |_/ / _____ |
14// \ _____| |__| |________| \_______/ |__| |______/ (_______/
15//
16// This file is part of VirtualFluids. VirtualFluids is free software: you can
17// redistribute it and/or modify it under the terms of the GNU General Public
18// License as published by the Free Software Foundation, either version 3 of
19// the License, or (at your option) any later version.
20//
21// VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
22// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
24// for more details.
25//
26// SPDX-License-Identifier: GPL-3.0-or-later
27// SPDX-FileCopyrightText: Copyright © VirtualFluids Project contributors, see AUTHORS.md in root folder
28//
32//=======================================================================================
33#ifndef DATATYPES_H
34#define DATATYPES_H
35
36#include <limits>
37#include <string>
38
39#ifdef VF_DOUBLE_ACCURACY
40using real = double;
41#else
42using real = float;
43#endif
44
45using realLim = std::numeric_limits<real>;
46
47using uint = unsigned int;
48#define INVALID_INDEX 4294967295 // max uint
49
50struct real3
51{
52 real x, y, z;
53};
54
55constexpr real3 operator+(const real3& a, const real3& b)
56{
57 return { a.x + b.x, a.y + b.y, a.z + b.z };
58}
59
60constexpr void operator+=(real3& a, const real3& b)
61{
62 a.x += b.x; a.y += b.y; a.z += b.z;
63}
64
65constexpr real3 operator-(const real3& a, const real3& b)
66{
67 return { a.x - b.x, a.y - b.y, a.z - b.z };
68}
69
70constexpr real3 operator*(const real3& a, real b)
71{
72 return { a.x * b, a.y * b, a.z * b };
73}
74
75constexpr real3 operator*(real a, const real3& b)
76{
77 return { a * b.x, a * b.y, a * b.z };
78}
79
80constexpr real3 operator/(const real3& a, real b)
81{
82 return { a.x / b, a.y / b, a.z / b };
83}
84
85constexpr real3 operator/(const real3& a, const real3& b)
86{
87 return { a.x / b.x, a.y / b.y, a.z / b.z };
88}
89
90constexpr void operator/=(real3& a, real b)
91{
92 a.x /= b;
93 a.y /= b;
94 a.z /= b;
95}
96
97constexpr real dot(const real3& a, const real3& b)
98{
99 return a.x * b.x + a.y * b.y + a.z * b.z;
100}
101
102constexpr real square(const real3& a)
103{
104 return a.x * a.x + a.y * a.y + a.z * a.z;
105}
106
107constexpr bool operator==(const real3& a, const real3& b)
108{
109 return a.x == b.x && a.y == b.y && a.z == b.z;
110}
111
112#endif
113
constexpr bool operator==(const real3 &a, const real3 &b)
Definition DataTypes.h:107
constexpr void operator/=(real3 &a, real b)
Definition DataTypes.h:90
std::numeric_limits< real > realLim
Definition DataTypes.h:45
constexpr void operator+=(real3 &a, const real3 &b)
Definition DataTypes.h:60
std::shared_ptr< T > SPtr
float real
Definition DataTypes.h:42
unsigned int uint
Definition DataTypes.h:47
constexpr real3 operator+(const real3 &a, const real3 &b)
Definition DataTypes.h:55
constexpr real3 operator-(const real3 &a, const real3 &b)
Definition DataTypes.h:65
constexpr real3 operator*(const real3 &a, real b)
Definition DataTypes.h:70
constexpr real dot(const real3 &a, const real3 &b)
Definition DataTypes.h:97
constexpr real square(const real3 &a)
Definition DataTypes.h:102
constexpr real3 operator/(const real3 &a, real b)
Definition DataTypes.h:80
real x
Definition DataTypes.h:52
real y
Definition DataTypes.h:52
real z
Definition DataTypes.h:52