FEDEM Solver  R8.0
Source code of the dynamics solver
FFaVolume.H
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: 2023 SAP SE
2 //
3 // SPDX-License-Identifier: Apache-2.0
4 //
5 // This file is part of FEDEM - https://openfedem.org
7 
8 #ifndef _FFAVOLUME_H_
9 #define _FFAVOLUME_H_
10 
11 class FaVec3;
12 class FFaTensor3;
13 
14 
20 class FFaVolume
21 {
22 public:
23  // Volume only calculation.
24  static void tetVolume (const FaVec3& v1, const FaVec3& v2,
25  const FaVec3& v3, const FaVec3& v4, double& vol);
26  static void wedVolume (const FaVec3& v1, const FaVec3& v2,
27  const FaVec3& v3, const FaVec3& v4,
28  const FaVec3& v5, const FaVec3& v6, double& vol);
29  static void hexVolume (const FaVec3& v1, const FaVec3& v2,
30  const FaVec3& v3, const FaVec3& v4,
31  const FaVec3& v5, const FaVec3& v6,
32  const FaVec3& v7, const FaVec3& v8, double& vol);
33 
34  // Calculation of volume center. The input vertices are then shifted
35  // such that they become relative to the computed volume center.
36  // The return value is the volume of the object.
37  static double tetCenter (FaVec3& v1, FaVec3& v2,
38  FaVec3& v3, FaVec3& v4, FaVec3& vc);
39  static double wedCenter (FaVec3& v1, FaVec3& v2,
40  FaVec3& v3, FaVec3& v4,
41  FaVec3& v5, FaVec3& v6, FaVec3& vc);
42  static double hexCenter (FaVec3& v1, FaVec3& v2,
43  FaVec3& v3, FaVec3& v4,
44  FaVec3& v5, FaVec3& v6,
45  FaVec3& v7, FaVec3& v8, FaVec3& vc);
46 
47  // Calculation of volume moments (inertias). The input vertices
48  // are here assumed to be relative to the objects volume center.
49  static void tetMoment (const FaVec3& v1, const FaVec3& v2,
50  const FaVec3& v3, const FaVec3& v4, FFaTensor3& vm);
51  static void wedMoment (const FaVec3& v1, const FaVec3& v2,
52  const FaVec3& v3, const FaVec3& v4,
53  const FaVec3& v5, const FaVec3& v6, FFaTensor3& vm);
54  static void hexMoment (const FaVec3& v1, const FaVec3& v2,
55  const FaVec3& v3, const FaVec3& v4,
56  const FaVec3& v5, const FaVec3& v6,
57  const FaVec3& v7, const FaVec3& v8, FFaTensor3& vm);
58 
59 private:
60  static double tetVolume (const FaVec3& v1, const FaVec3& v2,
61  const FaVec3& v3, const FaVec3& v4);
62 
63  static double pyrVolume (const FaVec3& v1, const FaVec3& v2,
64  const FaVec3& v3, const FaVec3& v4,
65  const FaVec3& v5);
66 
67  static double pyrCenter (const FaVec3& v1, const FaVec3& v2,
68  const FaVec3& v3, const FaVec3& v4,
69  const FaVec3& v5, FaVec3& vc);
70 
71  static FFaTensor3 pyrMoment (const FaVec3& v1, const FaVec3& v2,
72  const FaVec3& v3, const FaVec3& v4);
73 };
74 
75 #endif
Definition: FFaTensor3.H:27
Definition: FFaVolume.H:21
static void wedMoment(const FaVec3 &v1, const FaVec3 &v2, const FaVec3 &v3, const FaVec3 &v4, const FaVec3 &v5, const FaVec3 &v6, FFaTensor3 &vm)
Definition: FFaVolume.C:158
static void tetVolume(const FaVec3 &v1, const FaVec3 &v2, const FaVec3 &v3, const FaVec3 &v4, double &vol)
Definition: FFaVolume.C:18
static double wedCenter(FaVec3 &v1, FaVec3 &v2, FaVec3 &v3, FaVec3 &v4, FaVec3 &v5, FaVec3 &v6, FaVec3 &vc)
Definition: FFaVolume.C:81
static void tetMoment(const FaVec3 &v1, const FaVec3 &v2, const FaVec3 &v3, const FaVec3 &v4, FFaTensor3 &vm)
Definition: FFaVolume.C:149
static void wedVolume(const FaVec3 &v1, const FaVec3 &v2, const FaVec3 &v3, const FaVec3 &v4, const FaVec3 &v5, const FaVec3 &v6, double &vol)
Definition: FFaVolume.C:26
static double tetCenter(FaVec3 &v1, FaVec3 &v2, FaVec3 &v3, FaVec3 &v4, FaVec3 &vc)
Definition: FFaVolume.C:66
static double hexCenter(FaVec3 &v1, FaVec3 &v2, FaVec3 &v3, FaVec3 &v4, FaVec3 &v5, FaVec3 &v6, FaVec3 &v7, FaVec3 &v8, FaVec3 &vc)
Definition: FFaVolume.C:110
static void hexVolume(const FaVec3 &v1, const FaVec3 &v2, const FaVec3 &v3, const FaVec3 &v4, const FaVec3 &v5, const FaVec3 &v6, const FaVec3 &v7, const FaVec3 &v8, double &vol)
Definition: FFaVolume.C:42
static double pyrVolume(const FaVec3 &v1, const FaVec3 &v2, const FaVec3 &v3, const FaVec3 &v4, const FaVec3 &v5)
Definition: FFaVolume.C:198
static void hexMoment(const FaVec3 &v1, const FaVec3 &v2, const FaVec3 &v3, const FaVec3 &v4, const FaVec3 &v5, const FaVec3 &v6, const FaVec3 &v7, const FaVec3 &v8, FFaTensor3 &vm)
Definition: FFaVolume.C:171
static double pyrCenter(const FaVec3 &v1, const FaVec3 &v2, const FaVec3 &v3, const FaVec3 &v4, const FaVec3 &v5, FaVec3 &vc)
Definition: FFaVolume.C:210
static FFaTensor3 pyrMoment(const FaVec3 &v1, const FaVec3 &v2, const FaVec3 &v3, const FaVec3 &v4)
Definition: FFaVolume.C:233
Class for point vectors in 3D space.
Definition: FFaVec3.H:40
real(dp), dimension(:), allocatable v1
Definition: inverseModule.f90:27
real(dp), dimension(:), allocatable v2
Definition: inverseModule.f90:28