Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
368 commits
Select commit Hold shift + click to select a range
42d2ed1
independent set goes through full list
Angelyr Jun 5, 2025
965629a
new min length
Angelyr Jun 6, 2025
846f727
rename get touching independent set
Angelyr Jun 6, 2025
bdef238
combined touching independent set
Angelyr Jun 6, 2025
9f0be1e
fixed get length
Angelyr Jun 6, 2025
dc62761
fixed typo
Angelyr Jun 7, 2025
e21ead2
simplify touching independent set
Angelyr Jun 7, 2025
02158f9
rename variable and comment
Angelyr Jun 7, 2025
35a0b0e
calculate edge length
Angelyr Jun 7, 2025
001decc
check shortest collapsable edge
Angelyr Jun 7, 2025
f65350a
smaller factor
Angelyr Jun 7, 2025
2a5f0f9
collapse only shortest edges
Angelyr Jun 11, 2025
ea5fcb8
only collapse once
Angelyr Jun 11, 2025
b7ac7a4
don't try to collapse long edges
Angelyr Jun 11, 2025
931ab03
iterate from current position
Angelyr Jun 11, 2025
98b6f45
small base area case
Angelyr Jun 12, 2025
136b423
enable split collapse
Angelyr Jun 13, 2025
49cef8a
aggressive coarsen
Angelyr Jun 13, 2025
9aa4b87
fixed base condition
Angelyr Jun 14, 2025
9a8d56e
fix snap bug
Angelyr Jun 14, 2025
9f33614
moved snap queue to adapt
Angelyr Jun 14, 2025
50df026
fixed splt-collapse snap bug
Angelyr Jun 14, 2025
4e8b0f8
better snap warnings
Angelyr Jun 16, 2025
995290a
using old coarsen
Angelyr Jun 18, 2025
ba9dba1
fixed coarsen bug
Angelyr Jun 19, 2025
45672e3
combined collapse shortest
Angelyr Jun 19, 2025
bf420a9
small performance fix
Angelyr Jun 19, 2025
5132e34
run multiple coarsen once
Angelyr Jun 25, 2025
ef38ec5
reduced min size
Angelyr Jun 26, 2025
08c63d4
single step coarsen
Angelyr Jun 27, 2025
7d9b960
multiple step coarsen
Angelyr Jun 27, 2025
ff096dc
coarsen multiple
Angelyr Jun 27, 2025
25aa8b2
single step coarsen
Angelyr Jun 27, 2025
541e880
cache length
Angelyr Jun 27, 2025
a4efa3a
check collapse size check
Angelyr Jul 1, 2025
13b8cc0
remove cap adapt
Angelyr Jul 2, 2025
c753ca4
Merge branch 'develop' into ac/adapt-changes
Angelyr Jul 2, 2025
9b82444
fix compile error
Angelyr Jul 2, 2025
19aee8e
single coarsen
Angelyr Jul 2, 2025
827e7bd
fixed snap bug
Angelyr Jul 3, 2025
d27737f
add up snap values
Angelyr Jul 3, 2025
b15f7e2
fixed bug caused by shared edge verts
Angelyr Jul 3, 2025
4a2c1ca
prevent infinite loop
Angelyr Jul 16, 2025
0e90bfe
Merge branch 'master' into ac/adapt-changes
Angelyr Jul 16, 2025
235ddfa
bring back eswap spltclps
Angelyr Jul 17, 2025
6cf0455
generalize getTetStats
Angelyr Jul 17, 2025
9104ce1
new fixed shape
Angelyr Jul 18, 2025
af7f1a7
better printFPP
Angelyr Jul 19, 2025
9c20565
fixed bug with partial periodic
Angelyr Jul 23, 2025
c3a1db1
removed capdefined
Angelyr Jul 24, 2025
82c5636
fix shape once
Angelyr Jul 24, 2025
b1aa88a
optional capstone check
Angelyr Jul 26, 2025
d7efb63
remove aggressive coarsen
Angelyr Jul 26, 2025
51db699
revert maShape
Angelyr Jul 30, 2025
cc0d274
remove unused
Angelyr Jul 30, 2025
a9c52a8
fixed snap bug
Angelyr Jul 30, 2025
fcb8e0d
removed unused test
Angelyr Jul 30, 2025
1c1a0f9
end iterator
Angelyr Jul 30, 2025
17628e8
split clps valid quality
Angelyr Jul 30, 2025
e257e35
removed meshes
Angelyr Jul 30, 2025
a7f40eb
remove double cone
Angelyr Jul 30, 2025
44a7fe7
revert aniso_ma_test
Angelyr Jul 30, 2025
b0d8a7f
cube test
Angelyr Jul 31, 2025
2440d94
force coarsen test
Angelyr Aug 1, 2025
ae33ba5
snap test
Angelyr Aug 1, 2025
daae4be
fixed layer snapping error
Angelyr Aug 1, 2025
f127dad
adapt_cap
Angelyr Aug 1, 2025
e04178f
sim_test
Angelyr Aug 2, 2025
7b6a33f
refine into coarsen
Angelyr Aug 2, 2025
02edf07
aniso adapt cap tests
Angelyr Aug 2, 2025
a672a3c
smaller cube test
Angelyr Aug 2, 2025
854bdc6
face swap skeleton
Angelyr Aug 6, 2025
c3c41af
capstone mesh
Angelyr Aug 6, 2025
762e86d
curved cube mesh
Angelyr Aug 6, 2025
1d006c0
update mesh dir
Angelyr Aug 7, 2025
b239075
Merge branch 'develop' into ac/adapt-changes
Angelyr Aug 7, 2025
3ffc85f
added meshes back in
Angelyr Aug 7, 2025
b27f8b5
updated capstone test
Angelyr Aug 7, 2025
18017d8
fixed warnings
Angelyr Aug 7, 2025
48eb9e6
checked size_t
Angelyr Aug 7, 2025
04f5fbc
void m
Angelyr Aug 7, 2025
9f2005d
fixed snapper warnings
Angelyr Aug 7, 2025
24561ab
remove unsused from adapt test
Angelyr Aug 7, 2025
7a210c8
compute case
Angelyr Aug 7, 2025
5cb2e9a
Merge branch 'ac/adapt-changes' into ac/face-swap
Angelyr Aug 7, 2025
6fd71ed
added comments
Angelyr Aug 8, 2025
9395079
fixed unused warning
Angelyr Aug 8, 2025
f6832ba
collapse comments
Angelyr Aug 8, 2025
1c829f6
update simmetrix version
Angelyr Aug 8, 2025
e275b4f
two2two case
Angelyr Aug 8, 2025
fd3b1a7
two2three case and build cavity
Angelyr Aug 8, 2025
e6bb1b1
implement find common edge
Angelyr Aug 8, 2025
1f2af61
Merge branch 'ac/adapt-changes' into ac/face-swap
Angelyr Aug 8, 2025
673523a
testing faceswp
Angelyr Aug 9, 2025
e46a5c2
quality check
Angelyr Aug 13, 2025
4163701
2d get invalid
Angelyr Aug 13, 2025
854d089
broke up into functions
Angelyr Aug 13, 2025
8597708
faceswap running
Angelyr Aug 14, 2025
b925308
faceswap size check
Angelyr Aug 16, 2025
9632690
print histogram stats
Angelyr Aug 16, 2025
21e2ba5
ma shape new
Angelyr Aug 17, 2025
acae05b
print before and after
Angelyr Aug 20, 2025
e853d1f
new fix shape working
Angelyr Aug 28, 2025
41e827e
apply coarsening first, revert changes
joshia5 Aug 28, 2025
da0db34
fix face swap errors
Angelyr Aug 28, 2025
cc2d767
print every loop
Angelyr Aug 29, 2025
d465479
moved comments from github
Angelyr Aug 29, 2025
f9de866
small fix shape improvement
Angelyr Aug 30, 2025
a747e28
pass collapse
Angelyr Aug 30, 2025
f1fd03d
moved istwolargeangles
Angelyr Aug 31, 2025
5705472
moved fix shape to object
Angelyr Aug 31, 2025
655840d
two and three large angle functions
Angelyr Aug 31, 2025
9783d15
edge collapse first
Angelyr Aug 31, 2025
d735b64
todo comments
Angelyr Aug 31, 2025
ac4a00f
print statistics
Angelyr Sep 2, 2025
38dcf6e
fix tolerance bug
Angelyr Sep 3, 2025
7988f5f
remove unused
Angelyr Sep 3, 2025
a34b777
Merge branch 'ac/adapt-changes' into ac/face-swap
Angelyr Sep 3, 2025
2c05df5
collapse to adjacent
Angelyr Sep 4, 2025
e5967e3
testing torus adaptation
Angelyr Sep 4, 2025
8f8f3f7
better bins
Angelyr Sep 10, 2025
881dcb6
dont force and collapse to adj
Angelyr Sep 10, 2025
07a8697
.3 2d quality one large angle comparison
Angelyr Sep 11, 2025
f258d59
cbrt quality
Angelyr Sep 11, 2025
e12858f
fixed worst shape
Angelyr Sep 12, 2025
3a55c0b
fix typo
Angelyr Sep 12, 2025
da99415
better formatting for copy paste
Angelyr Sep 12, 2025
fd03ae7
collapse 3 large angles 1 direction
Angelyr Sep 13, 2025
7f6dac9
corrected one large angle print
Angelyr Sep 13, 2025
a876394
print next layer
Angelyr Sep 16, 2025
5e5afc4
region collapse
Angelyr Sep 16, 2025
088d768
fixed spacing
Angelyr Sep 16, 2025
ab7ea9e
split reposition
Angelyr Sep 18, 2025
f4e81b8
print adjacent
Angelyr Sep 25, 2025
e0bc156
fixed error collapsing model edge
Angelyr Sep 25, 2025
9f9d333
fixed snapper issue
Angelyr Sep 26, 2025
63c223d
fixed cap test
Angelyr Sep 26, 2025
eddc013
removed unused adapt tests
Angelyr Sep 26, 2025
1a72cf8
moved code maCoarsen
Angelyr Sep 26, 2025
03119fe
reformating
Angelyr Sep 26, 2025
1d928d9
removed unecessary apf::up
Angelyr Sep 26, 2025
905f74b
using size_t
Angelyr Sep 26, 2025
9c0fba7
int to size_t
Angelyr Sep 26, 2025
41ec122
simplify code
Angelyr Sep 26, 2025
6894ffc
fixed error with isCapstone
Angelyr Sep 27, 2025
47ed51a
reuse and recycle adapt_sim
Angelyr Sep 27, 2025
24dccb2
simplify aniso_adapt
Angelyr Sep 27, 2025
450753f
Merge branch 'ac/adapt-changes' into ac/face-swap
Angelyr Sep 27, 2025
9bfd494
reuse print next layer
Angelyr Sep 27, 2025
aaaf02b
fixed parallel adapt
Angelyr Sep 29, 2025
3c86168
remove debug
Angelyr Oct 1, 2025
ab8c580
improved comments
Angelyr Oct 1, 2025
2318a28
Merge branch 'ac/adapt-changes' into ac/face-swap
Angelyr Oct 2, 2025
a2960ec
coarsen once v1
Angelyr Oct 2, 2025
6d4b3d7
corsen a few times
Angelyr Oct 2, 2025
a170396
collapse once
Angelyr Oct 3, 2025
ee5373f
unused
Angelyr Oct 8, 2025
395697f
collapse check validity first
Angelyr Oct 8, 2025
8691b80
quality first
Angelyr Oct 8, 2025
2cde312
remove unused
Angelyr Oct 8, 2025
140f9bb
get short edges once
Angelyr Oct 8, 2025
344d7a0
seperate valid and quality
Angelyr Oct 8, 2025
33608f9
combine setupCollapse
Angelyr Oct 9, 2025
17dd85f
remove unused
Angelyr Oct 9, 2025
23df81c
check valid earlier
Angelyr Oct 9, 2025
757eecb
collapse edge
Angelyr Oct 9, 2025
d299be0
added quality to collapse
Angelyr Oct 9, 2025
35168e5
clear collapse flag
Angelyr Oct 9, 2025
3b9a558
temp code for testing
Angelyr Oct 10, 2025
f76664a
coarsen all
Angelyr Oct 10, 2025
42b4543
print bad shape surface
Angelyr Oct 10, 2025
0dbba4d
print bad faces
Angelyr Oct 15, 2025
a191a66
collapse all class
Angelyr Oct 16, 2025
36be24b
using apply to list
Angelyr Oct 16, 2025
977e18c
parallel coarsen tested and working
Angelyr Oct 16, 2025
e485808
print worst shape type
Angelyr Oct 17, 2025
4379f55
better print bad shape
Angelyr Oct 19, 2025
28bbabc
better reposition dir
Angelyr Oct 20, 2025
fb810f3
unmark after collapse
Angelyr Oct 22, 2025
0a4de89
better debug options
Angelyr Oct 23, 2025
b198c2a
improve print bad shape
Angelyr Oct 24, 2025
e15f470
more bad shape info
Angelyr Oct 24, 2025
8745b2a
undo
Angelyr Oct 24, 2025
d3379f7
rename multiple coarsen
Angelyr Oct 24, 2025
cc8fd84
print more tet info
Angelyr Oct 25, 2025
773918e
fixed tet print
Angelyr Oct 25, 2025
2408f75
flag entity all dim
Angelyr Oct 25, 2025
b65cb5d
better flag all dim
Angelyr Oct 25, 2025
c8e06e7
faster collapse build
Angelyr Nov 2, 2025
f0e60a2
get reusable entities function
Angelyr Nov 2, 2025
6ef021c
replace recursive rebuild with iterative rebuild
Angelyr Nov 2, 2025
f171fc7
fixed valgrind errors
Angelyr Nov 6, 2025
90a50a2
Merge branch 'develop' into ac/adapt-changes
Angelyr Nov 6, 2025
1ca51ab
rebuild entity
Angelyr Nov 6, 2025
ef726a8
store integrator
Angelyr Nov 7, 2025
d00069a
reuse mesh element
Angelyr Nov 7, 2025
8cb1eec
removed integrator
Angelyr Nov 7, 2025
fa4d9a0
cache integration points and weight
Angelyr Nov 7, 2025
fef5192
cache log field element
Angelyr Nov 7, 2025
3dff5ce
cache integration point
Angelyr Nov 7, 2025
4dec00b
reuse last field element
Angelyr Nov 8, 2025
9811881
using eigen library
Angelyr Nov 8, 2025
90d1707
adapt test updates
Angelyr Nov 13, 2025
36160a9
Merge branch 'ac/adapt-changes' into ac/face-swap
Angelyr Nov 13, 2025
c4edbf3
use pumi-master
Angelyr Nov 13, 2025
550aea3
cache bounding boxes
Angelyr Nov 13, 2025
f86d701
cache periodic range
Angelyr Nov 13, 2025
8ca5867
fix shape header file
Angelyr Nov 14, 2025
36bd8d4
bool fix shape
Angelyr Nov 15, 2025
431cc96
rename fix shape file
Angelyr Nov 15, 2025
500ab4b
rewrite print collapse info
Angelyr Nov 15, 2025
979c9bb
print bad qual collapse
Angelyr Nov 15, 2025
5c2b24a
verify mesh
Angelyr Nov 19, 2025
7039a14
collapse one large angle region
Angelyr Nov 20, 2025
9c29262
small collapse region refactor
Angelyr Nov 21, 2025
1bcb61f
simplify snapper code
Angelyr Nov 21, 2025
2aff960
fetch content eigen
Angelyr Nov 21, 2025
8deb346
Merge branch 'develop' into ac/face-swap
Angelyr Nov 21, 2025
a8f64c6
remove unused
Angelyr Nov 21, 2025
3e26c51
removed unused
Angelyr Nov 21, 2025
58caf50
optional Eigen library
Angelyr Nov 22, 2025
2f90f89
remove extra coarsen
Angelyr Nov 29, 2025
55cb127
remove debugging
Angelyr Nov 29, 2025
6fa0fd9
moved one sided collapse
Angelyr Nov 29, 2025
1ec2df3
removed usage of wrong quality measure
Angelyr Dec 3, 2025
f6a8839
use mesh element without pointer
Angelyr Dec 4, 2025
a80fbc1
simplify get integration point
Angelyr Dec 4, 2025
169a0be
remove max jacobian
Angelyr Dec 4, 2025
2ab64c8
simplify element usage
Angelyr Dec 4, 2025
2ae9e37
moved reposition
Angelyr Dec 4, 2025
293d8da
small rewrite
Angelyr Dec 4, 2025
5836973
removed unsused
Angelyr Dec 5, 2025
1c9ca21
move to heightest quality
Angelyr Dec 5, 2025
1447fae
debugging functions
Angelyr Dec 5, 2025
2c95975
fixed quality over 1.0
Angelyr Dec 11, 2025
0c36c21
remove unused split reposition
Angelyr Dec 11, 2025
3f3e230
cache quality functions
Angelyr Dec 13, 2025
c74573d
using golden search
Angelyr Dec 17, 2025
eb19262
better reposition target
Angelyr Dec 18, 2025
59a9f4e
reposition existing vertices
Angelyr Dec 19, 2025
2974141
clamp sizefield
Angelyr Dec 20, 2025
2e99dfb
universal size cache
Angelyr Dec 20, 2025
d0289ff
cache edge lengths fix shape
Angelyr Dec 20, 2025
5a66078
cache all quality
Angelyr Dec 20, 2025
be49cdd
simplify
Angelyr Dec 21, 2025
512dcb7
reposition and min quality
Angelyr Dec 22, 2025
ac66f6a
added algorithms
Angelyr Jan 8, 2026
01e015b
fix 2D bugs
Angelyr Jan 9, 2026
5f9699a
delete unused
Angelyr Jan 10, 2026
2126158
fix bug related to non simplex meshes
Angelyr Jan 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,22 @@ if(ENABLE_CGNS)
add_definitions(-DHAVE_CGNS)
endif()

if(DEBUG_FPP)
add_definitions(-DDEBUG_FPP)
endif()

if(ENABLE_EIGEN)
include(FetchContent)
FetchContent_Declare(
eigen
GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git
GIT_TAG 5.0
)
FetchContent_MakeAvailable(eigen)
include_directories(${eigen_SOURCE_DIR})
add_definitions(-DEIGEN_ENABLED)
endif()

configure_file(SCOREC_config.h.in SCOREC_config.h)
install(FILES "${CMAKE_BINARY_DIR}/SCOREC_config.h" DESTINATION include)
include_directories(PUBLIC "$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>")
Expand Down
7 changes: 7 additions & 0 deletions apf/apf.cc
Original file line number Diff line number Diff line change
Expand Up @@ -357,6 +357,13 @@ void getIntPoint(MeshElement* e, int order, int point, Vector3& param)
param = p->param;
}

Vector3 getIntPoint(MeshElement* e, int order, int point)
{
IntegrationPoint const* p =
getIntegration(e->getType())->getAccurate(order)->getPoint(point);
return p->param;
}

double getIntWeight(MeshElement* e, int order, int point)
{
IntegrationPoint const* p =
Expand Down
9 changes: 9 additions & 0 deletions apf/apf.h
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,15 @@ int countIntPoints(MeshElement* e, int order);
*/
void getIntPoint(MeshElement* e, int order, int point, Vector3& param);


/** \brief Get an integration point in an element.
*
* \param order The polynomial order of accuracy.
* \param point The integration point number.
* \returns The resulting local coordinate of the integration point.
*/
Vector3 getIntPoint(MeshElement* e, int order, int point);

/** \brief Get the weight of an integration point in an element.
*
* \details All integration point tables in APF are scaled
Expand Down
34 changes: 34 additions & 0 deletions apf/apfCavityOp.cc
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,40 @@ void CavityOp::applyToDimension(int d)
sharing = 0;
}

void CavityOp::applyToList(std::list<MeshEntity*>& elements)
{
do {
delete sharing;
sharing = apf::getSharing(mesh);

isRequesting = false;
for (auto iter = elements.begin(); iter != elements.end();) {
if (sharing->isOwned(*iter)) {
if (setEntity(*iter) == OK) {
movedByDeletion=false;
apply();
if (movedByDeletion) {iter = elements.erase(iter); continue;}
}
}
++iter;
}
/* request any non-local cavities.
note: it is critical that this loop
be separated from the one above for
mesh-modifying operators, since an apply()
call could change other overlapping cavities */
isRequesting = true;
for (auto iter = elements.begin(); iter != elements.end();) {
if (sharing->isOwned(*iter))
setEntity(*iter);
++iter;
}
} while (tryToPull());

delete sharing;
sharing = 0;
}

bool CavityOp::requestLocality(MeshEntity** entities, int count)
{
bool areLocal = true;
Expand Down
7 changes: 6 additions & 1 deletion apf/apfCavityOp.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
#include "apfMesh.h"
#include <vector>
#include <cstring>
#include <functional>
#include <list>

namespace apf {

Expand Down Expand Up @@ -87,12 +89,15 @@ class CavityOp
virtual void apply() = 0;
/** \brief parallel collective operation over entities of one dimension */
void applyToDimension(int d);
/** \brief parallel collective operation over entities in list */
void applyToList(std::list<MeshEntity*>& elements);
/** \brief within setEntity, require that entities be made local */
bool requestLocality(MeshEntity** entities, int count);
/** \brief call before deleting a mesh entity during the operation */
void preDeletion(MeshEntity* e);
/** \brief mesh pointer for convenience */
Mesh* mesh;
bool movedByDeletion;
private:
typedef std::vector<MeshEntity*> Requests;
Requests requests;
Expand All @@ -102,8 +107,8 @@ class CavityOp
bool tryToPull();
void applyLocallyWithModification(int d);
void applyLocallyWithoutModification(int d);

bool canModify;
bool movedByDeletion;
MeshIterator* iterator;
protected:
Sharing* sharing;
Expand Down
4 changes: 4 additions & 0 deletions apf/apfElement.cc
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ void Element::init(Field* f, MeshEntity* e, VectorElement* p)
getNodeData();
}

Element::Element()
{
}

Element::Element(Field* f, MeshEntity* e)
{
init(f,e,0);
Expand Down
3 changes: 2 additions & 1 deletion apf/apfElement.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class VectorElement;
class Element
{
public:
Element();
Element(Field* f, MeshEntity* e);
Element(Field* f, VectorElement* p);
virtual ~Element();
Expand All @@ -36,8 +37,8 @@ class Element
FieldShape* getFieldShape() {return field->getShape();}
void getComponents(Vector3 const& xi, double* c);
void getElementNodeData(NewArray<double>& d);
protected:
void init(Field* f, MeshEntity* e, VectorElement* p);
protected:
void getNodeData();
Field* field;
Mesh* mesh;
Expand Down
4 changes: 4 additions & 0 deletions apf/apfElementOf.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ template <class T, class S = T>
class ElementOf : public Element
{
public:
ElementOf():
Element()
{
}
ElementOf(FieldOf<S>* f, MeshEntity* e):
Element(f,e)
{
Expand Down
20 changes: 20 additions & 0 deletions apf/apfMatrix.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
#include "apf2mth.h"
#include <mthQR.h>
#include <pcu_util.h>
#ifdef EIGEN_ENABLED
#include <Eigen/Dense>
#endif

namespace apf {

Expand Down Expand Up @@ -69,6 +72,22 @@ int eigen(Matrix3x3 const& A,
Vector<3>* eigenVectors,
double* eigenValues)
{
#ifdef EIGEN_ENABLED
Eigen::Matrix3d matrix;
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
matrix(i, j) = A[i][j];

Eigen::SelfAdjointEigenSolver<Eigen::Matrix3d> solver(matrix);
Eigen::Vector3d values = solver.eigenvalues();
Eigen::Matrix3d vectors = solver.eigenvectors();

for (unsigned i = 0; i < 3; ++i)
eigenValues[i] = values(i);
for (unsigned i = 0; i < 3; ++i)
for (unsigned j = 0; j < 3; ++j)
eigenVectors[j][i] = vectors(i,j);
#else
mth::Matrix<double,3,3> A2 = to_mth(A);
mth::Matrix<double,3,3> L;
mth::Matrix<double,3,3> Q;
Expand All @@ -79,6 +98,7 @@ int eigen(Matrix3x3 const& A,
for (unsigned i = 0; i < 3; ++i)
for (unsigned j = 0; j < 3; ++j)
eigenVectors[j][i] = Q(i,j);
#endif
return 3;
}

Expand Down
17 changes: 15 additions & 2 deletions apf/apfMesh.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include <pcu_util.h>
#include <lionPrint.h>
#include <algorithm>
#include <array>

namespace apf {

Expand Down Expand Up @@ -221,11 +222,23 @@ void Mesh::getParamOn(ModelEntity* g, MeshEntity* e, Vector3& p)
gmi_reparam(getModel(), from, &from_p[0], to, &p[0]);
}

std::map<std::pair<gmi_ent*, int>,
std::pair<std::array<double, 2>, bool>> periodicRanges;
bool Mesh::getPeriodicRange(ModelEntity* g, int axis, double range[2])
{
gmi_ent* e = (gmi_ent*)g;
gmi_range(getModel(), e, axis, range);
return gmi_periodic(getModel(), e, axis);
auto it = periodicRanges.find({e, axis});
if (it != periodicRanges.end()) {
range[0] = it->second.first[0];
range[1] = it->second.first[1];
return it->second.second;
}
else{
gmi_range(getModel(), e, axis, range);
bool output = gmi_periodic(getModel(), e, axis);
periodicRanges[{e, axis}] = {{range[0], range[1]}, output};
return output;
}
}

void Mesh::getClosestPoint(ModelEntity* g, Vector3 const& from,
Expand Down
5 changes: 5 additions & 0 deletions apf/apfVectorElement.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@

namespace apf {

VectorElement::VectorElement():
ElementOf<Vector3>()
{
}

VectorElement::VectorElement(VectorField* f, MeshEntity* e):
ElementOf<Vector3>(f,e)
{
Expand Down
1 change: 1 addition & 0 deletions apf/apfVectorElement.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class VectorField;
class VectorElement : public ElementOf<Vector3>
{
public:
VectorElement();
VectorElement(VectorField* f, MeshEntity* e);
VectorElement(VectorField* f, VectorElement* p);
virtual ~VectorElement() {}
Expand Down
3 changes: 3 additions & 0 deletions ma/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ set(SOURCES
maSolutionTransferHelper.cc
maSnap.cc
maEdgeSwap.cc
maFaceSwap.cc
maFixShape.cc
maShape.cc
maShapeHandler.cc
maQuality.cc
Expand Down Expand Up @@ -59,6 +61,7 @@ set(HEADERS
maMesh.h
maSize.h
maShape.h
maFixShape.h
maTables.h
maSolutionTransfer.h
maExtrude.h
Expand Down
Loading
Loading