VolumeIntersection.cpp File Reference
#include <iostream>
#include <cmath>
#include <iomanip>
#include "VolumeIntersection.h"

Functions

template<class t_scalar , class brr3 >
bool exists (brr3 &p, int ips, brr3(&W)[56])
 
template<class t_scalar , class brr3 >
t_scalar maxVolume (int ips, brr3(&W)[56])
 
template<class t_scalar , class brr3 >
void maxVolumeAndArea (int ips, brr3(&W)[56], t_scalar &volume, t_scalar &area)
 
template<class t_scalar , class brr3 >
void findCM (int ips, brr3(&W)[56], brr3 &cm)
 
template<class t_scalar , class brr3 >
void getBAndN_Order (brr3(&tetA)[4], int n0, int n1, int n2, brr3 &t, brr3 &b, brr3 &n)
 
template<class t_scalar , class brr3 >
void getBAndN (brr3(&tetA)[4], int n0, int n1, int n2, brr3 &t, brr3 &b, brr3 &n)
 
template<class t_scalar , class brr3 >
void getBAndN (brr3 &f0, brr3 &f1, brr3 &f2, brr3 &p3, brr3 &t, brr3 &b, brr3 &n)
 
template<class t_scalar , class brr3 >
t_scalar volumeForNode (brr3(&tetA)[4], int node)
 
template<class t_scalar , class brr3 >
t_scalar volumeForNode (brr3 &tet0, brr3 &tet1, brr3 &tet2, brr3 &tetN)
 
template<class t_scalar , class brr3 >
void volumeAndAreaForNode (brr3(&tetA)[4], int node, t_scalar &volume, t_scalar &area)
 
template<class t_scalar , class brr3 >
t_scalar volumeForIntPoint (brr3 &ip, brr3(&tetA)[4], int e1, int e2, brr3(&tetB)[4], int f1, int f2, int f3)
 
template<class t_scalar , class brr3 >
t_scalar volumeForIntPointII (brr3 &ip, brr3 &tetAe1, brr3 &tetAe2, brr3 &tetAe3, brr3 &tetAe4, brr3 &tetBf1, brr3 &tetBf2, brr3 &tetBf3, brr3 &tetBf4)
 
template<class t_scalar , class brr3 >
void volumeAndAreaForIntPoint (brr3 &ip, brr3(&tetA)[4], int e1, int e2, brr3(&tetB)[4], int f1, int f2, int f3, t_scalar &volume, t_scalar &area)
 
template<class t_scalar , class brr3 >
t_scalar volumeIntersection (brr3(&tetA)[4], brr3(&tetB)[4], bool calcCM, brr3 &cm)
 
template<class t_scalar , class brr3 >
void contribVolForNode (t_scalar &vol, brr3 &n0, brr3 &n1, brr3 &n2, brr3 &n3, brr3(&W)[56], int &ips)
 
template<class t_scalar , class brr3 >
void contribVolForIntPoint (t_scalar &vol, brr3 &ip, brr3 &tetAi, brr3 &tetAj, brr3 &tetAe3, brr3 &tetAe4, brr3 &tetB0, brr3 &tetB1, brr3 &tetB2, brr3 &tetB3, brr3(&W)[56], int &ips)
 
template<class t_scalar , class brr3 >
void contribVolForIntersections (t_scalar &vol, brr3 &tetAi, brr3 &tetAj, brr3 &tetAe3, brr3 &tetAe4, brr3 &tetB0, brr3 &tetB1, brr3 &tetB2, brr3 &tetB3, brr3(&W)[56], int &ips)
 
template<class t_scalar , class brr3 >
t_scalar volumeIntersectionII (brr3 &tetA0, brr3 &tetA1, brr3 &tetA2, brr3 &tetA3, brr3 &tetB0, brr3 &tetB1, brr3 &tetB2, brr3 &tetB3, bool calcCM, brr3 &cm)
 
template<class t_scalar , class brr3 >
void volumeAndAreaIntersection (brr3(&tetA)[4], brr3(&tetB)[4], t_scalar &vol, t_scalar &area)
 
template bool exists< scalar, arr3 > (arr3 &p, int ips, arr3(&W)[56])
 
template scalar maxVolume< scalar, arr3 > (int ips, arr3(&W)[56])
 
template void maxVolumeAndArea< scalar, arr3 > (int ips, arr3(&W)[56], scalar &volume, scalar &area)
 
template void findCM< scalar, arr3 > (int ips, arr3(&W)[56], arr3 &cm)
 
template void getBAndN_Order< scalar, arr3 > (arr3(&tetA)[4], int n0, int n1, int n2, arr3 &t, arr3 &b, arr3 &n)
 
template void getBAndN< scalar, arr3 > (arr3(&tetA)[4], int n0, int n1, int n2, arr3 &t, arr3 &b, arr3 &n)
 
template void getBAndN< scalar, arr3 > (arr3 &f0, arr3 &f1, arr3 &f2, arr3 &p3, arr3 &t, arr3 &b, arr3 &n)
 
template scalar volumeForNode< scalar, arr3 > (arr3(&tetA)[4], int node)
 
template scalar volumeForNode< scalar, arr3 > (arr3 &tet0, arr3 &tet1, arr3 &tet2, arr3 &tetN)
 
template void volumeAndAreaForNode< scalar, arr3 > (arr3(&tetA)[4], int node, scalar &volume, scalar &area)
 
template scalar volumeForIntPoint< scalar, arr3 > (arr3 &ip, arr3(&tetA)[4], int e1, int e2, arr3(&tetB)[4], int f1, int f2, int f3)
 
template scalar volumeForIntPointII< scalar, arr3 > (arr3 &ip, arr3 &tetAe1, arr3 &tetAe2, arr3 &tetAe3, arr3 &tetAe4, arr3 &tetBf1, arr3 &tetBf2, arr3 &tetBf3, arr3 &tetBf4)
 
template void volumeAndAreaForIntPoint< scalar, arr3 > (arr3 &ip, arr3(&tetA)[4], int e1, int e2, arr3(&tetB)[4], int f1, int f2, int f3, scalar &volume, scalar &area)
 
template scalar volumeIntersection< scalar, arr3 > (arr3(&tetA)[4], arr3(&tetB)[4], bool calcCM, arr3 &cm)
 
template scalar volumeIntersectionII< scalar, arr3 > (arr3 &tetA0, arr3 &tetA1, arr3 &tetA2, arr3 &tetA3, arr3 &tetB0, arr3 &tetB1, arr3 &tetB2, arr3 &tetB3, bool calcCM, arr3 &cm)
 
template void volumeAndAreaIntersection< scalar, arr3 > (arr3(&tetA)[4], arr3(&tetB)[4], scalar &vol, scalar &area)
 
template void contribVolForNode< scalar, arr3 > (scalar &vol, arr3 &n0, arr3 &n1, arr3 &n2, arr3 &n3, arr3(&W)[56], int &ips)
 
template void contribVolForIntPoint< scalar, arr3 > (scalar &vol, arr3 &ip, arr3 &tetAi, arr3 &tetAj, arr3 &tetAe3, arr3 &tetAe4, arr3 &tetB0, arr3 &tetB1, arr3 &tetB2, arr3 &tetB3, arr3(&W)[56], int &ips)
 
template void contribVolForIntersections< scalar, arr3 > (scalar &vol, arr3 &tetAi, arr3 &tetAj, arr3 &tetAe3, arr3 &tetAe4, arr3 &tetB0, arr3 &tetB1, arr3 &tetB2, arr3 &tetB3, arr3(&W)[56], int &ips)
 
template bool exists< geoscalar, grr3 > (grr3 &p, int ips, grr3(&W)[56])
 
template geoscalar maxVolume< geoscalar, grr3 > (int ips, grr3(&W)[56])
 
template void maxVolumeAndArea< geoscalar, grr3 > (int ips, grr3(&W)[56], geoscalar &volume, geoscalar &area)
 
template void findCM< geoscalar, grr3 > (int ips, grr3(&W)[56], grr3 &cm)
 
template void getBAndN_Order< geoscalar, grr3 > (grr3(&tetA)[4], int n0, int n1, int n2, grr3 &t, grr3 &b, grr3 &n)
 
template void getBAndN< geoscalar, grr3 > (grr3(&tetA)[4], int n0, int n1, int n2, grr3 &t, grr3 &b, grr3 &n)
 
template void getBAndN< geoscalar, grr3 > (grr3 &f0, grr3 &f1, grr3 &f2, grr3 &p3, grr3 &t, grr3 &b, grr3 &n)
 
template geoscalar volumeForNode< geoscalar, grr3 > (grr3(&tetA)[4], int node)
 
template geoscalar volumeForNode< geoscalar, grr3 > (grr3 &tet0, grr3 &tet1, grr3 &tet2, grr3 &tetN)
 
template void volumeAndAreaForNode< geoscalar, grr3 > (grr3(&tetA)[4], int node, geoscalar &volume, geoscalar &area)
 
template geoscalar volumeForIntPoint< geoscalar, grr3 > (grr3 &ip, grr3(&tetA)[4], int e1, int e2, grr3(&tetB)[4], int f1, int f2, int f3)
 
template geoscalar volumeForIntPointII< geoscalar, grr3 > (grr3 &ip, grr3 &tetAe1, grr3 &tetAe2, grr3 &tetAe3, grr3 &tetAe4, grr3 &tetBf1, grr3 &tetBf2, grr3 &tetBf3, grr3 &tetBf4)
 
template void volumeAndAreaForIntPoint< geoscalar, grr3 > (grr3 &ip, grr3(&tetA)[4], int e1, int e2, grr3(&tetB)[4], int f1, int f2, int f3, geoscalar &volume, geoscalar &area)
 
template geoscalar volumeIntersection< geoscalar, grr3 > (grr3(&tetA)[4], grr3(&tetB)[4], bool calcCM, grr3 &cm)
 
template geoscalar volumeIntersectionII< geoscalar, grr3 > (grr3 &tetA0, grr3 &tetA1, grr3 &tetA2, grr3 &tetA3, grr3 &tetB0, grr3 &tetB1, grr3 &tetB2, grr3 &tetB3, bool calcCM, grr3 &cm)
 
template void volumeAndAreaIntersection< geoscalar, grr3 > (grr3(&tetA)[4], grr3(&tetB)[4], geoscalar &vol, geoscalar &area)
 
template void contribVolForNode< geoscalar, grr3 > (geoscalar &vol, grr3 &n0, grr3 &n1, grr3 &n2, grr3 &n3, grr3(&W)[56], int &ips)
 
template void contribVolForIntPoint< geoscalar, grr3 > (geoscalar &vol, grr3 &ip, grr3 &tetAi, grr3 &tetAj, grr3 &tetAe3, grr3 &tetAe4, grr3 &tetB0, grr3 &tetB1, grr3 &tetB2, grr3 &tetB3, grr3(&W)[56], int &ips)
 
template void contribVolForIntersections< geoscalar, grr3 > (geoscalar &vol, grr3 &tetAi, grr3 &tetAj, grr3 &tetAe3, grr3 &tetAe4, grr3 &tetB0, grr3 &tetB1, grr3 &tetB2, grr3 &tetB3, grr3(&W)[56], int &ips)
 

Function Documentation

◆ contribVolForIntersections()

template<class t_scalar , class brr3 >
void contribVolForIntersections ( t_scalar &  vol,
brr3 &  tetAi,
brr3 &  tetAj,
brr3 &  tetAe3,
brr3 &  tetAe4,
brr3 &  tetB0,
brr3 &  tetB1,
brr3 &  tetB2,
brr3 &  tetB3,
brr3(&)  W[56],
int &  ips 
)

◆ contribVolForIntersections< geoscalar, grr3 >()

template void contribVolForIntersections< geoscalar, grr3 > ( geoscalar vol,
grr3 tetAi,
grr3 tetAj,
grr3 tetAe3,
grr3 tetAe4,
grr3 tetB0,
grr3 tetB1,
grr3 tetB2,
grr3 tetB3,
grr3(&)  W[56],
int &  ips 
)

◆ contribVolForIntersections< scalar, arr3 >()

template void contribVolForIntersections< scalar, arr3 > ( scalar vol,
arr3 tetAi,
arr3 tetAj,
arr3 tetAe3,
arr3 tetAe4,
arr3 tetB0,
arr3 tetB1,
arr3 tetB2,
arr3 tetB3,
arr3(&)  W[56],
int &  ips 
)

◆ contribVolForIntPoint()

template<class t_scalar , class brr3 >
void contribVolForIntPoint ( t_scalar &  vol,
brr3 &  ip,
brr3 &  tetAi,
brr3 &  tetAj,
brr3 &  tetAe3,
brr3 &  tetAe4,
brr3 &  tetB0,
brr3 &  tetB1,
brr3 &  tetB2,
brr3 &  tetB3,
brr3(&)  W[56],
int &  ips 
)

◆ contribVolForIntPoint< geoscalar, grr3 >()

template void contribVolForIntPoint< geoscalar, grr3 > ( geoscalar vol,
grr3 ip,
grr3 tetAi,
grr3 tetAj,
grr3 tetAe3,
grr3 tetAe4,
grr3 tetB0,
grr3 tetB1,
grr3 tetB2,
grr3 tetB3,
grr3(&)  W[56],
int &  ips 
)

◆ contribVolForIntPoint< scalar, arr3 >()

template void contribVolForIntPoint< scalar, arr3 > ( scalar vol,
arr3 ip,
arr3 tetAi,
arr3 tetAj,
arr3 tetAe3,
arr3 tetAe4,
arr3 tetB0,
arr3 tetB1,
arr3 tetB2,
arr3 tetB3,
arr3(&)  W[56],
int &  ips 
)

◆ contribVolForNode()

template<class t_scalar , class brr3 >
void contribVolForNode ( t_scalar &  vol,
brr3 &  n0,
brr3 &  n1,
brr3 &  n2,
brr3 &  n3,
brr3(&)  W[56],
int &  ips 
)

Referenced by volumeIntersectionII().

◆ contribVolForNode< geoscalar, grr3 >()

template void contribVolForNode< geoscalar, grr3 > ( geoscalar vol,
grr3 n0,
grr3 n1,
grr3 n2,
grr3 n3,
grr3(&)  W[56],
int &  ips 
)

◆ contribVolForNode< scalar, arr3 >()

template void contribVolForNode< scalar, arr3 > ( scalar vol,
arr3 n0,
arr3 n1,
arr3 n2,
arr3 n3,
arr3(&)  W[56],
int &  ips 
)

◆ exists()

template<class t_scalar , class brr3 >
bool exists ( brr3 &  p,
int  ips,
brr3(&)  W[56] 
)

◆ exists< geoscalar, grr3 >()

template bool exists< geoscalar, grr3 > ( grr3 p,
int  ips,
grr3(&)  W[56] 
)

◆ exists< scalar, arr3 >()

template bool exists< scalar, arr3 > ( arr3 p,
int  ips,
arr3(&)  W[56] 
)

◆ findCM()

template<class t_scalar , class brr3 >
void findCM ( int  ips,
brr3(&)  W[56],
brr3 &  cm 
)

CM for the first ips points stored in brr3 W[56]

◆ findCM< geoscalar, grr3 >()

template void findCM< geoscalar, grr3 > ( int  ips,
grr3(&)  W[56],
grr3 cm 
)

◆ findCM< scalar, arr3 >()

template void findCM< scalar, arr3 > ( int  ips,
arr3(&)  W[56],
arr3 cm 
)

◆ getBAndN() [1/2]

template<class t_scalar , class brr3 >
void getBAndN ( brr3(&)  tetA[4],
int  n0,
int  n1,
int  n2,
brr3 &  t,
brr3 &  b,
brr3 &  n 
)

Given the face formed by tetA[0]:tetA[1]:tetA[2] and the tangent unit vector t: get b: the normal to a face pointing inwards. n: the normal to t, on the face

◆ getBAndN() [2/2]

template<class t_scalar , class brr3 >
void getBAndN ( brr3 &  f0,
brr3 &  f1,
brr3 &  f2,
brr3 &  p3,
brr3 &  t,
brr3 &  b,
brr3 &  n 
)

Given the face formed by f0, f1, f2 (knowing p3) and the tangent unit vector t: get b: the normal to a face pointing inwards. n: the normal to t, on the face

◆ getBAndN< geoscalar, grr3 >() [1/2]

template void getBAndN< geoscalar, grr3 > ( grr3(&)  tetA[4],
int  n0,
int  n1,
int  n2,
grr3 t,
grr3 b,
grr3 n 
)

◆ getBAndN< geoscalar, grr3 >() [2/2]

template void getBAndN< geoscalar, grr3 > ( grr3 f0,
grr3 f1,
grr3 f2,
grr3 p3,
grr3 t,
grr3 b,
grr3 n 
)

◆ getBAndN< scalar, arr3 >() [1/2]

template void getBAndN< scalar, arr3 > ( arr3(&)  tetA[4],
int  n0,
int  n1,
int  n2,
arr3 t,
arr3 b,
arr3 n 
)

◆ getBAndN< scalar, arr3 >() [2/2]

template void getBAndN< scalar, arr3 > ( arr3 f0,
arr3 f1,
arr3 f2,
arr3 p3,
arr3 t,
arr3 b,
arr3 n 
)

◆ getBAndN_Order()

template<class t_scalar , class brr3 >
void getBAndN_Order ( brr3(&)  tetA[4],
int  n0,
int  n1,
int  n2,
brr3 &  t,
brr3 &  b,
brr3 &  n 
)

Given the face formed by tetA[0]:tetA[1]:tetA[2] and the tangent unit vector t: get b: the normal to a face pointing inwards. n: the normal to t, on the face the code assumes that tetA has its vertices in the right order.

◆ getBAndN_Order< geoscalar, grr3 >()

template void getBAndN_Order< geoscalar, grr3 > ( grr3(&)  tetA[4],
int  n0,
int  n1,
int  n2,
grr3 t,
grr3 b,
grr3 n 
)

◆ getBAndN_Order< scalar, arr3 >()

template void getBAndN_Order< scalar, arr3 > ( arr3(&)  tetA[4],
int  n0,
int  n1,
int  n2,
arr3 t,
arr3 b,
arr3 n 
)

◆ maxVolume()

template<class t_scalar , class brr3 >
t_scalar maxVolume ( int  ips,
brr3(&)  W[56] 
)

max volume for a number of points computed as the size of the cube with the same side size as the double of the maximum distance found between the given points.

◆ maxVolume< geoscalar, grr3 >()

template geoscalar maxVolume< geoscalar, grr3 > ( int  ips,
grr3(&)  W[56] 
)

◆ maxVolume< scalar, arr3 >()

template scalar maxVolume< scalar, arr3 > ( int  ips,
arr3(&)  W[56] 
)

◆ maxVolumeAndArea()

template<class t_scalar , class brr3 >
void maxVolumeAndArea ( int  ips,
brr3(&)  W[56],
t_scalar &  volume,
t_scalar &  area 
)

max volume and area for a number of points computed as the size of the cube with the same side size as the double of the maximum distance found between the given points.

◆ maxVolumeAndArea< geoscalar, grr3 >()

template void maxVolumeAndArea< geoscalar, grr3 > ( int  ips,
grr3(&)  W[56],
geoscalar volume,
geoscalar area 
)

◆ maxVolumeAndArea< scalar, arr3 >()

template void maxVolumeAndArea< scalar, arr3 > ( int  ips,
arr3(&)  W[56],
scalar volume,
scalar area 
)

◆ volumeAndAreaForIntPoint()

template<class t_scalar , class brr3 >
void volumeAndAreaForIntPoint ( brr3 &  ip,
brr3(&)  tetA[4],
int  e1,
int  e2,
brr3(&)  tetB[4],
int  f1,
int  f2,
int  f3,
t_scalar &  volume,
t_scalar &  area 
)

Calculate the volume and area contribution of the intersection point ip, resulting of the intersection between edge tetA[e1]->tetA[e2] and the face given by the points tetB[f1]:tetB[f2]:tetB[f3].

◆ volumeAndAreaForIntPoint< geoscalar, grr3 >()

template void volumeAndAreaForIntPoint< geoscalar, grr3 > ( grr3 ip,
grr3(&)  tetA[4],
int  e1,
int  e2,
grr3(&)  tetB[4],
int  f1,
int  f2,
int  f3,
geoscalar volume,
geoscalar area 
)

◆ volumeAndAreaForIntPoint< scalar, arr3 >()

template void volumeAndAreaForIntPoint< scalar, arr3 > ( arr3 ip,
arr3(&)  tetA[4],
int  e1,
int  e2,
arr3(&)  tetB[4],
int  f1,
int  f2,
int  f3,
scalar volume,
scalar area 
)

◆ volumeAndAreaForNode()

template<class t_scalar , class brr3 >
void volumeAndAreaForNode ( brr3(&)  tetA[4],
int  node,
t_scalar &  volume,
t_scalar &  area 
)

Get the volume and area contribution of a node of type 1, i. e., a node of the intersection polyhedron that already existed in one of the intersectant thetrahedra.

◆ volumeAndAreaForNode< geoscalar, grr3 >()

template void volumeAndAreaForNode< geoscalar, grr3 > ( grr3(&)  tetA[4],
int  node,
geoscalar volume,
geoscalar area 
)

◆ volumeAndAreaForNode< scalar, arr3 >()

template void volumeAndAreaForNode< scalar, arr3 > ( arr3(&)  tetA[4],
int  node,
scalar volume,
scalar area 
)

◆ volumeAndAreaIntersection()

template<class t_scalar , class brr3 >
void volumeAndAreaIntersection ( brr3(&)  tetA[4],
brr3(&)  tetB[4],
t_scalar &  vol,
t_scalar &  area 
)

Return the volume and area of intersection between two tetrahedra

◆ volumeAndAreaIntersection< geoscalar, grr3 >()

template void volumeAndAreaIntersection< geoscalar, grr3 > ( grr3(&)  tetA[4],
grr3(&)  tetB[4],
geoscalar vol,
geoscalar area 
)

◆ volumeAndAreaIntersection< scalar, arr3 >()

template void volumeAndAreaIntersection< scalar, arr3 > ( arr3(&)  tetA[4],
arr3(&)  tetB[4],
scalar vol,
scalar area 
)

◆ volumeForIntPoint()

template<class t_scalar , class brr3 >
t_scalar volumeForIntPoint ( brr3 &  ip,
brr3(&)  tetA[4],
int  e1,
int  e2,
brr3(&)  tetB[4],
int  f1,
int  f2,
int  f3 
)

Calculate the volume contribution of the intersection point ip, resulting of the intersection between edge tetA[e1]->tetA[e2] and the face given by the points tetB[f1]:tetB[f2]:tetB[f3].

◆ volumeForIntPoint< geoscalar, grr3 >()

template geoscalar volumeForIntPoint< geoscalar, grr3 > ( grr3 ip,
grr3(&)  tetA[4],
int  e1,
int  e2,
grr3(&)  tetB[4],
int  f1,
int  f2,
int  f3 
)

◆ volumeForIntPoint< scalar, arr3 >()

template scalar volumeForIntPoint< scalar, arr3 > ( arr3 ip,
arr3(&)  tetA[4],
int  e1,
int  e2,
arr3(&)  tetB[4],
int  f1,
int  f2,
int  f3 
)

◆ volumeForIntPointII()

template<class t_scalar , class brr3 >
t_scalar volumeForIntPointII ( brr3 &  ip,
brr3 &  tetAe1,
brr3 &  tetAe2,
brr3 &  tetAe3,
brr3 &  tetAe4,
brr3 &  tetBf1,
brr3 &  tetBf2,
brr3 &  tetBf3,
brr3 &  tetBf4 
)

Calculate the volume contribution of the intersection point ip, resulting of the intersection between edge tetAe1->tetAe2 and the face given by the points tetBf1:tetBf2:tetBf3, while knowing the rest of the tetrahedra points.

◆ volumeForIntPointII< geoscalar, grr3 >()

template geoscalar volumeForIntPointII< geoscalar, grr3 > ( grr3 ip,
grr3 tetAe1,
grr3 tetAe2,
grr3 tetAe3,
grr3 tetAe4,
grr3 tetBf1,
grr3 tetBf2,
grr3 tetBf3,
grr3 tetBf4 
)

◆ volumeForIntPointII< scalar, arr3 >()

template scalar volumeForIntPointII< scalar, arr3 > ( arr3 ip,
arr3 tetAe1,
arr3 tetAe2,
arr3 tetAe3,
arr3 tetAe4,
arr3 tetBf1,
arr3 tetBf2,
arr3 tetBf3,
arr3 tetBf4 
)

◆ volumeForNode() [1/2]

template<class t_scalar , class brr3 >
t_scalar volumeForNode ( brr3(&)  tetA[4],
int  node 
)

Get the volume contribution of a node of type 1, i. e., a node of the intersection polyhedron that already existed in one of the intersectant thetrahedra.

◆ volumeForNode() [2/2]

template<class t_scalar , class brr3 >
t_scalar volumeForNode ( brr3 &  tet0,
brr3 &  tet1,
brr3 &  tet2,
brr3 &  tetN 
)

◆ volumeForNode< geoscalar, grr3 >() [1/2]

template geoscalar volumeForNode< geoscalar, grr3 > ( grr3(&)  tetA[4],
int  node 
)

◆ volumeForNode< geoscalar, grr3 >() [2/2]

template geoscalar volumeForNode< geoscalar, grr3 > ( grr3 tet0,
grr3 tet1,
grr3 tet2,
grr3 tetN 
)

◆ volumeForNode< scalar, arr3 >() [1/2]

template scalar volumeForNode< scalar, arr3 > ( arr3(&)  tetA[4],
int  node 
)

◆ volumeForNode< scalar, arr3 >() [2/2]

template scalar volumeForNode< scalar, arr3 > ( arr3 tet0,
arr3 tet1,
arr3 tet2,
arr3 tetN 
)

◆ volumeIntersection()

template<class t_scalar , class brr3 >
t_scalar volumeIntersection ( brr3(&)  tetA[4],
brr3(&)  tetB[4],
bool  calcCM,
brr3 &  cm 
)

Return the volume intersection between two tetrahedra

◆ volumeIntersection< geoscalar, grr3 >()

template geoscalar volumeIntersection< geoscalar, grr3 > ( grr3(&)  tetA[4],
grr3(&)  tetB[4],
bool  calcCM,
grr3 cm 
)

◆ volumeIntersection< scalar, arr3 >()

template scalar volumeIntersection< scalar, arr3 > ( arr3(&)  tetA[4],
arr3(&)  tetB[4],
bool  calcCM,
arr3 cm 
)

◆ volumeIntersectionII()

template<class t_scalar , class brr3 >
t_scalar volumeIntersectionII ( brr3 &  tetA0,
brr3 &  tetA1,
brr3 &  tetA2,
brr3 &  tetA3,
brr3 &  tetB0,
brr3 &  tetB1,
brr3 &  tetB2,
brr3 &  tetB3,
bool  calcCM,
brr3 &  cm 
)

Return the volume intersection between two tetrahedra

◆ volumeIntersectionII< geoscalar, grr3 >()

template geoscalar volumeIntersectionII< geoscalar, grr3 > ( grr3 tetA0,
grr3 tetA1,
grr3 tetA2,
grr3 tetA3,
grr3 tetB0,
grr3 tetB1,
grr3 tetB2,
grr3 tetB3,
bool  calcCM,
grr3 cm 
)

◆ volumeIntersectionII< scalar, arr3 >()

template scalar volumeIntersectionII< scalar, arr3 > ( arr3 tetA0,
arr3 tetA1,
arr3 tetA2,
arr3 tetA3,
arr3 tetB0,
arr3 tetB1,
arr3 tetB2,
arr3 tetB3,
bool  calcCM,
arr3 cm 
)