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
56{
57 return { a.x + b.x, a.y + b.y, a.z + b.z };
58}
59
60constexpr void operator+=(real3 a, real3 b)
61{
62 a.x += b.x; a.y += b.y; a.z += b.z;
63}
64
66{
67 return { a.x - b.x, a.y - b.y, a.z - b.z };
68}
69
70constexpr real3 operator*(real3 a, real b)
71{
72 return { a.x * b, a.y * b, a.z * b };
73}
74
75constexpr real3 operator*(real a, real3 b)
76{
77 return { a * b.x, a * b.y, a * b.z };
78}
79
80constexpr real3 operator/(real3 a, real b)
81{
82 return { a.x / b, a.y / b, a.z / b };
83}
84
85constexpr void operator/=(real3& a, real b)
86{
87 a.x /= b;
88 a.y /= b;
89 a.z /= b;
90}
91
92constexpr real dot(real3 a, real3 b)
93{
94 return a.x * b.x + a.y * b.y + a.z * b.z;
95}
96
97constexpr real square(real3 a)
98{
99 return a.x * a.x + a.y * a.y + a.z * a.z;
100}
101
102#endif
103
constexpr real square(real3 a)
Definition DataTypes.h:97
constexpr void operator/=(real3 &a, real b)
Definition DataTypes.h:85
std::numeric_limits< real > realLim
Definition DataTypes.h:45
std::shared_ptr< T > SPtr
float real
Definition DataTypes.h:42
constexpr real3 operator+(real3 a, real3 b)
Definition DataTypes.h:55
unsigned int uint
Definition DataTypes.h:47
constexpr real3 operator*(real3 a, real b)
Definition DataTypes.h:70
constexpr void operator+=(real3 a, real3 b)
Definition DataTypes.h:60
constexpr real3 operator-(real3 a, real3 b)
Definition DataTypes.h:65
constexpr real3 operator/(real3 a, real b)
Definition DataTypes.h:80
constexpr real dot(real3 a, real3 b)
Definition DataTypes.h:92
real x
Definition DataTypes.h:52
real y
Definition DataTypes.h:52
real z
Definition DataTypes.h:52