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 namespace FFaVolume
21 {
22  // Volume only calculation.
23  void tetVolume (const FaVec3& v1, const FaVec3& v2,
24  const FaVec3& v3, const FaVec3& v4, double& vol);
25  void wedVolume (const FaVec3& v1, const FaVec3& v2,
26  const FaVec3& v3, const FaVec3& v4,
27  const FaVec3& v5, const FaVec3& v6, double& vol);
28  void hexVolume (const FaVec3& v1, const FaVec3& v2,
29  const FaVec3& v3, const FaVec3& v4,
30  const FaVec3& v5, const FaVec3& v6,
31  const FaVec3& v7, const FaVec3& v8, double& vol);
32 
33  // Calculation of volume center. The input vertices are then shifted
34  // such that they become relative to the computed volume center.
35  // The return value is the volume of the object.
36  double tetCenter (FaVec3& v1, FaVec3& v2,
37  FaVec3& v3, FaVec3& v4, FaVec3& vc);
38  double wedCenter (FaVec3& v1, FaVec3& v2,
39  FaVec3& v3, FaVec3& v4,
40  FaVec3& v5, FaVec3& v6, FaVec3& vc);
41  double hexCenter (FaVec3& v1, FaVec3& v2,
42  FaVec3& v3, FaVec3& v4,
43  FaVec3& v5, FaVec3& v6,
44  FaVec3& v7, FaVec3& v8, FaVec3& vc);
45 
46  // Calculation of volume moments (inertias). The input vertices
47  // are here assumed to be relative to the objects volume center.
48  void tetMoment (const FaVec3& v1, const FaVec3& v2,
49  const FaVec3& v3, const FaVec3& v4, FFaTensor3& vm);
50  void wedMoment (const FaVec3& v1, const FaVec3& v2,
51  const FaVec3& v3, const FaVec3& v4,
52  const FaVec3& v5, const FaVec3& v6, FFaTensor3& vm);
53  void hexMoment (const FaVec3& v1, const FaVec3& v2,
54  const FaVec3& v3, const FaVec3& v4,
55  const FaVec3& v5, const FaVec3& v6,
56  const FaVec3& v7, const FaVec3& v8, FFaTensor3& vm);
57 }
58 
59 #endif
Definition: FFaTensor3.H:28
Class for point vectors in 3D space.
Definition: FFaVec3.H:40
Definition: FFaVolume.H:21
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:211
void tetVolume(const FaVec3 &v1, const FaVec3 &v2, const FaVec3 &v3, const FaVec3 &v4, double &vol)
Definition: FFaVolume.C:71
double wedCenter(FaVec3 &v1, FaVec3 &v2, FaVec3 &v3, FaVec3 &v4, FaVec3 &v5, FaVec3 &v6, FaVec3 &vc)
Definition: FFaVolume.C:134
void tetMoment(const FaVec3 &v1, const FaVec3 &v2, const FaVec3 &v3, const FaVec3 &v4, FFaTensor3 &vm)
Definition: FFaVolume.C:202
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:79
double tetCenter(FaVec3 &v1, FaVec3 &v2, FaVec3 &v3, FaVec3 &v4, FaVec3 &vc)
Definition: FFaVolume.C:119
double hexCenter(FaVec3 &v1, FaVec3 &v2, FaVec3 &v3, FaVec3 &v4, FaVec3 &v5, FaVec3 &v6, FaVec3 &v7, FaVec3 &v8, FaVec3 &vc)
Definition: FFaVolume.C:163
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:95
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:224
real(dp), dimension(:), allocatable v1
Definition: inverseModule.f90:27
real(dp), dimension(:), allocatable v2
Definition: inverseModule.f90:28