Block-Structured AMR Software Framework
 
Loading...
Searching...
No Matches
AMReX_Dim3.H
Go to the documentation of this file.
1#ifndef AMREX_DIM3_H_
2#define AMREX_DIM3_H_
3#include <AMReX_Config.H>
4
5#include <AMReX_REAL.H>
7
8#include <iostream>
9
10namespace amrex {
11
12struct Dim3 { int x; int y; int z; };
13struct XDim3 { Real x; Real y; Real z; };
14
16Real dot_product (XDim3 const& a, XDim3 const& b)
17{
18 return a.x*b.x + a.y*b.y + a.z*b.z;
19}
20
22XDim3 cross_product (XDim3 const& a, XDim3 const& b)
23{
24 return {a.y*b.z-a.z*b.y, a.z*b.x-a.x*b.z, a.x*b.y-a.y*b.x};
25}
26
28XDim3 operator+ (XDim3 const& a, XDim3 const& b)
29{
30 return {a.x + b.x, a.y + b.y, a.z + b.z};
31}
32
34XDim3 operator- (XDim3 const& a, XDim3 const& b)
35{
36 return {a.x - b.x, a.y - b.y, a.z - b.z};
37}
38
39template <typename T,
40 std::enable_if_t <std::is_same_v<T, Dim3> ||
41 std::is_same_v<T, XDim3>>* = nullptr>
42std::ostream& operator<< (std::ostream& os, const T& d)
43{
44 os << '(' << d.x << ',' << d.y << ',' << d.z << ')';
45 return os;
46}
47
48}
49
50#endif
#define AMREX_FORCE_INLINE
Definition AMReX_Extension.H:119
#define AMREX_GPU_HOST_DEVICE
Definition AMReX_GpuQualifiers.H:20
Definition AMReX_Amr.cpp:49
__host__ __device__ Real dot_product(XDim3 const &a, XDim3 const &b)
Definition AMReX_Dim3.H:16
__host__ __device__ XDim3 cross_product(XDim3 const &a, XDim3 const &b)
Definition AMReX_Dim3.H:22
std::ostream & operator<<(std::ostream &os, AmrMesh const &amr_mesh)
Definition AMReX_AmrMesh.cpp:1236
__host__ __device__ XDim3 operator-(XDim3 const &a, XDim3 const &b)
Definition AMReX_Dim3.H:34
__host__ __device__ XDim3 operator+(XDim3 const &a, XDim3 const &b)
Definition AMReX_Dim3.H:28
Definition AMReX_Dim3.H:12
int x
Definition AMReX_Dim3.H:12
int z
Definition AMReX_Dim3.H:12
int y
Definition AMReX_Dim3.H:12
Definition AMReX_Dim3.H:13
Real x
Definition AMReX_Dim3.H:13
Real z
Definition AMReX_Dim3.H:13
Real y
Definition AMReX_Dim3.H:13