MRMD 0.4.0
Multi Resolution Molecular Dynamics
Loading...
Searching...
No Matches
Subdomain.hpp
Go to the documentation of this file.
1// Copyright 2024 Sebastian Eibl
2// Copyright 2026 Julian Friedrich Hille
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// https://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16#pragma once
17
18#include <array>
19#include <cassert>
20
21#include "assert/assert.hpp"
22#include "datatypes.hpp"
23
24namespace mrmd
25{
26namespace data
27{
38{
39 Subdomain() = default;
40
72
73 void scaleDim(const real_t& scalingFactor, const AXIS& axis);
74 void scale(const real_t& scalingFactor);
75 real_t getVolume() const;
76 Point3D getCenter() const;
77
78 Point3D minCorner = {std::numeric_limits<real_t>::signaling_NaN(),
79 std::numeric_limits<real_t>::signaling_NaN(),
80 std::numeric_limits<real_t>::signaling_NaN()};
81 Point3D maxCorner = {std::numeric_limits<real_t>::signaling_NaN(),
82 std::numeric_limits<real_t>::signaling_NaN(),
83 std::numeric_limits<real_t>::signaling_NaN()}; // namespace data
84
85 Point3D ghostLayerThickness = {std::numeric_limits<real_t>::signaling_NaN(),
86 std::numeric_limits<real_t>::signaling_NaN(),
87 std::numeric_limits<real_t>::signaling_NaN()};
88
89 Point3D minGhostCorner = {std::numeric_limits<real_t>::signaling_NaN(),
90 std::numeric_limits<real_t>::signaling_NaN(),
91 std::numeric_limits<real_t>::signaling_NaN()};
92 Point3D maxGhostCorner = {std::numeric_limits<real_t>::signaling_NaN(),
93 std::numeric_limits<real_t>::signaling_NaN(),
94 std::numeric_limits<real_t>::signaling_NaN()};
95
96 Point3D minInnerCorner = {std::numeric_limits<real_t>::signaling_NaN(),
97 std::numeric_limits<real_t>::signaling_NaN(),
98 std::numeric_limits<real_t>::signaling_NaN()};
99 Point3D maxInnerCorner = {std::numeric_limits<real_t>::signaling_NaN(),
100 std::numeric_limits<real_t>::signaling_NaN(),
101 std::numeric_limits<real_t>::signaling_NaN()};
102
103 Vector3D diameter = {std::numeric_limits<real_t>::signaling_NaN(),
104 std::numeric_limits<real_t>::signaling_NaN(),
105 std::numeric_limits<real_t>::signaling_NaN()};
106
107 Vector3D diameterWithGhostLayer = {std::numeric_limits<real_t>::signaling_NaN(),
108 std::numeric_limits<real_t>::signaling_NaN(),
109 std::numeric_limits<real_t>::signaling_NaN()};
110};
111
112void checkInvariants(const Subdomain& subdomain);
113
114} // namespace data
115} // namespace mrmd
#define MRMD_HOST_CHECK_GREATEREQUAL(...)
Definition host.hpp:118
void checkInvariants(const Subdomain &subdomain)
Definition Subdomain.cpp:41
Definition BerendsenBarostat.cpp:18
Kokkos::Array< real_t, 3 > Point3D
Definition datatypes.hpp:100
AXIS
Definition datatypes.hpp:141
double real_t
Definition datatypes.hpp:99
Kokkos::Array< real_t, 3 > Vector3D
Definition datatypes.hpp:101
Definition Array.hpp:21
|X|O|OOOOOOOOOO |X|O|OOOOOOOOOO |X|O+-------— <– minInnerCorner |X|OOOOOOOOOOOO |X+---------— <– minC...
Definition Subdomain.hpp:38
Point3D minCorner
Definition Subdomain.hpp:78
Point3D maxInnerCorner
Definition Subdomain.hpp:99
Point3D getCenter() const
Definition Subdomain.cpp:59
Point3D minInnerCorner
Definition Subdomain.hpp:96
void scale(const real_t &scalingFactor)
Definition Subdomain.cpp:34
Subdomain(const Point3D &minCornerArg, const Point3D &maxCornerArg, const Vector3D &ghostLayerThicknessArg)
Definition Subdomain.hpp:41
Point3D maxCorner
Definition Subdomain.hpp:81
void scaleDim(const real_t &scalingFactor, const AXIS &axis)
Definition Subdomain.cpp:24
Vector3D diameter
Definition Subdomain.hpp:103
Subdomain(const Point3D &minCornerArg, const Point3D &maxCornerArg, const real_t &ghostLayerThicknessArg)
Definition Subdomain.hpp:63
Point3D ghostLayerThickness
Definition Subdomain.hpp:85
Point3D minGhostCorner
Definition Subdomain.hpp:89
Vector3D diameterWithGhostLayer
Definition Subdomain.hpp:107
Point3D maxGhostCorner
Definition Subdomain.hpp:92
real_t getVolume() const
Definition Subdomain.cpp:57