Skip to content

Commit 972febb

Browse files
committed
core submodule update, Apline docker updated to edge
1 parent 0f25ed0 commit 972febb

File tree

5 files changed

+92
-40
lines changed

5 files changed

+92
-40
lines changed

.github/workflows/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# define base OS environment
2-
FROM alpine:latest
2+
FROM alpine:edge
33

44
# install base dependencies for compiling and testing fdaPDE
55

test/main.cpp

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,6 @@
2222
namespace fdapde {
2323
namespace test {
2424

25-
template <int LocalDim, int EmbedDim>
26-
Triangulation<LocalDim, EmbedDim> read_mesh(const std::string& path, int flags = 0) {
27-
Eigen::Matrix<double, Dynamic, Dynamic> nodes = read_csv<double>(path + "/points.csv").as_matrix();
28-
if constexpr (LocalDim == 1 && EmbedDim == 1) {
29-
return Triangulation<LocalDim, EmbedDim>(nodes, flags);
30-
} else {
31-
Eigen::Matrix<int, Dynamic, Dynamic> boundary = read_csv<int>(path + "/boundary.csv").as_matrix();
32-
Eigen::Matrix<int, Dynamic, Dynamic> cells = read_csv<int>(path + "/elements.csv").as_matrix().array() - 1;
33-
return Triangulation<LocalDim, EmbedDim>(nodes, cells, boundary, flags);
34-
}
35-
}
36-
3725
[[maybe_unused]] constexpr double testing_double_tolerance = 1e-7;
3826

3927
// floating point comparision utilities
@@ -75,7 +63,7 @@ template <typename Scalar> bool almost_equal(const std::vector<Scalar>& op1, std
7563
// #include "src/sr.cpp"
7664
// #include "src/gsr.cpp"
7765
// #include "src/qsr.cpp"
78-
#include "src/de.cpp"
66+
// #include "src/de.cpp"
7967

8068
int main(int argc, char **argv){
8169
// start testing

test/src/de.cpp

Lines changed: 50 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

1717
using namespace fdapde;
18-
using fdapde::test::read_mesh;
1918
using fdapde::test::almost_equal;
2019

2120
// test 1
@@ -27,7 +26,8 @@ using fdapde::test::almost_equal;
2726
// order FE: 1
2827
TEST(de, test_01) {
2928
// geometry
30-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/square_density");
29+
std::string mesh_path = "../data/mesh/square_density/";
30+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
3131
// data
3232
Eigen::Matrix<double, Dynamic, 1> g_init = read_csv<double>("../data/de/01/f_init.csv").as_matrix().array().log();
3333
GeoFrame data(D);
@@ -49,7 +49,8 @@ TEST(de, test_01) {
4949

5050
TEST(de, test_02) {
5151
// geometry
52-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/square_density");
52+
std::string mesh_path = "../data/mesh/square_density/";
53+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
5354
// data
5455
Eigen::Matrix<double, Dynamic, 1> g_init = read_csv<double>("../data/de/02/f_init.csv").as_matrix().array().log();
5556
GeoFrame data(D);
@@ -71,7 +72,8 @@ TEST(de, test_02) {
7172
TEST(de, test_03) {
7273
using matrix_t = Eigen::Matrix<double, Dynamic, Dynamic>;
7374
// geometry
74-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/unit_square_21");
75+
std::string mesh_path = "../data/mesh/unit_square_21/";
76+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
7577
Triangulation<1, 1> T = Triangulation<1, 1>::UnitInterval(7);
7678
// data
7779
Eigen::Matrix<double, Dynamic, 1> g_init = read_csv<double>("../data/de/03/f_init.csv").as_matrix().array().log();
@@ -101,3 +103,47 @@ TEST(de, test_03) {
101103

102104
EXPECT_TRUE(almost_equal<double>(m.log_density(), "../data/de/03/log_density.mtx"));
103105
}
106+
107+
// TEST(de, test_04) {
108+
// using matrix_t = Eigen::Matrix<double, Dynamic, Dynamic>;
109+
// // geometry
110+
// Triangulation<1, 2> D = read_mesh<1, 2>("../data/mesh/network");
111+
// Triangulation<1, 1> T = Triangulation<1, 1>::UnitInterval(3);
112+
// // data
113+
// Eigen::Matrix<double, Dynamic, 1> g_init = read_csv<double>("../data/de/04/f_init.csv").as_matrix().array().log();
114+
// matrix_t locs(500, 3);
115+
// locs.leftCols(2) = read_csv<double>("../data/de/04/data_space.csv").as_matrix();
116+
// locs.rightCols(1) = read_csv<double>("../data/de/04/data_time.csv" ).as_matrix();
117+
// GeoFrame data(D, T);
118+
// auto& l1 = data.insert_scalar_layer<POINT, POINT>("l1", locs);
119+
120+
// std::cout << l1 << std::endl;
121+
122+
// // physics
123+
// FeSpace Vh(D, P1<1>); // linear finite element in space
124+
// TrialFunction f(Vh);
125+
// TestFunction v(Vh);
126+
// auto a_D = integral(D)(dot(grad(f), grad(v)));
127+
// ZeroField<2> u_D;
128+
// auto F_D = integral(D)(u_D * v);
129+
130+
// BsSpace Qh(T, 3); // cubic B-spline in time
131+
// TrialFunction g(Qh);
132+
// TestFunction w(Qh);
133+
// auto a_T = integral(T)(dxx(g) * dxx(w));
134+
// ZeroField<1> u_T;
135+
// auto F_T = integral(T)(u_T * w);
136+
// // modeling
137+
// DEPDE m(data, fe_de_separable(std::pair {a_D, F_D}, std::pair {a_T, F_T}));
138+
// std::cout << "ci arrivo" << std::endl;
139+
// m.set_llik_tolerance(1e-15);
140+
// m.fit(1e-7, 1e-2, g_init, BFGS<Dynamic> {500, 1e-5, 1e-2});
141+
142+
// std::cout << m.log_density().topRows(20) << std::endl;
143+
144+
// std::cout << "n: " << m.log_density().rows() << std::endl;
145+
146+
147+
// // EXPECT_TRUE(almost_equal<double>(m.log_density(), "../data/de/03/log_density.mtx"));
148+
// }
149+

test/src/sr.cpp

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

1717
using namespace fdapde;
18-
using fdapde::test::read_mesh;
1918
using fdapde::test::almost_equal;
2019

2120
// test 1
@@ -27,15 +26,16 @@ using fdapde::test::almost_equal;
2726
// order FE: 1
2827
TEST(sr, test_01) {
2928
// geometry
30-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/unit_square_60");
29+
std::string mesh_path = "../data/mesh/unit_square_60/";
30+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
3131
// data
3232
GeoFrame data(D);
3333
auto& l1 = data.insert_scalar_layer<POINT>("l1", MESH_NODES);
3434
l1.load_csv<double>("../data/sr/01/response.csv");
3535
// physics
3636
FeSpace Vh(D, P1<1>);
3737
TrialFunction f(Vh);
38-
TestFunction v(Vh);
38+
TestFunction v(Vh);
3939
auto a = integral(D)(dot(grad(f), grad(v)));
4040
ZeroField<2> u;
4141
auto F = integral(D)(u * v);
@@ -55,7 +55,8 @@ TEST(sr, test_01) {
5555
// order FE: 1
5656
TEST(sr, test_02) {
5757
// geometry
58-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/c_shaped");
58+
std::string mesh_path = "../data/mesh/c_shaped/";
59+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
5960
// data
6061
GeoFrame data(D);
6162
auto& l1 = data.insert_scalar_layer<POINT>("l1", "../data/sr/02/locs.csv");
@@ -85,7 +86,8 @@ TEST(sr, test_02) {
8586
// order FE: 1
8687
TEST(sr, test_03) {
8788
// geometry
88-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/unit_square_60");
89+
std::string mesh_path = "../data/mesh/unit_square_60/";
90+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
8991
// data
9092
GeoFrame data(D);
9193
auto& l1 = data.insert_scalar_layer<POINT>("l1", MESH_NODES);
@@ -116,7 +118,8 @@ TEST(sr, test_03) {
116118
// GCV optimization: grid stochastic
117119
TEST(sr, test_04) {
118120
// geometry
119-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/unit_square_21");
121+
std::string mesh_path = "../data/mesh/unit_square_21/";
122+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
120123
// data
121124
GeoFrame data(D);
122125
auto& l1 = data.insert_scalar_layer<POINT>("l1", MESH_NODES);
@@ -149,7 +152,8 @@ TEST(sr, test_04) {
149152
// GCV optimization: grid stochastic
150153
TEST(sr, test_05) {
151154
// geometry
152-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/c_shaped");
155+
std::string mesh_path = "../data/mesh/c_shaped/";
156+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
153157
// data
154158
GeoFrame data(D);
155159
auto& l1 = data.insert_scalar_layer<POINT>("l1", "../data/sr/05/locs.csv");
@@ -177,7 +181,8 @@ TEST(sr, test_05) {
177181
TEST(sr, test_06) {
178182
// geometry
179183
Triangulation<1, 1> T = Triangulation<1, 1>::Interval(0, 2, 11);
180-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/unit_square_21");
184+
std::string mesh_path = "../data/mesh/unit_square_21/";
185+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
181186
// data
182187
GeoFrame data(D, T);
183188
auto& l1 = data.insert_scalar_layer<POINT, POINT>("l1", std::pair {MESH_NODES, MESH_NODES});
@@ -206,7 +211,8 @@ TEST(sr, test_06) {
206211
TEST(sr, test_07) {
207212
// geometry
208213
Triangulation<1, 1> T = Triangulation<1, 1>::Interval(0, std::numbers::pi, 5);
209-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/c_shaped");
214+
std::string mesh_path = "../data/mesh/c_shaped/";
215+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
210216
// data
211217
GeoFrame data(D, T);
212218
auto& l1 = data.insert_scalar_layer<POINT, POINT>("l1", std::pair {"../data/sr/07/locs.csv", MESH_NODES});
@@ -237,7 +243,8 @@ TEST(sr, test_07) {
237243
TEST(sr, test_08) {
238244
// geometry
239245
Triangulation<1, 1> T = Triangulation<1, 1>::Interval(0, 2, 11);
240-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/unit_square_21");
246+
std::string mesh_path = "../data/mesh/unit_square_21/";
247+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
241248
// data
242249
GeoFrame data(D, T);
243250
auto& l1 = data.insert_scalar_layer<POINT, POINT>("l1", std::pair {MESH_NODES, "../data/sr/08/locs.csv"});
@@ -266,7 +273,8 @@ TEST(sr, test_08) {
266273
TEST(sr, test_09) {
267274
// geometry
268275
Triangulation<1, 1> T = Triangulation<1, 1>::Interval(0, 1, 21);
269-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/c_shaped");
276+
std::string mesh_path = "../data/mesh/c_shaped/";
277+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
270278
// data
271279
GeoFrame data(D, T);
272280
auto& l1 = data.insert_scalar_layer<POINT, POINT>(
@@ -296,7 +304,8 @@ TEST(sr, test_09) {
296304
TEST(sr, test_10) {
297305
// geometry
298306
Triangulation<1, 1> T = Triangulation<1, 1>::Interval(0, 4, 5);
299-
Triangulation<2, 3> D = read_mesh<2, 3>("../data/mesh/surface");
307+
std::string mesh_path = "../data/mesh/surface/";
308+
Triangulation<2, 3> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
300309
// data
301310
GeoFrame data(D, T);
302311
auto& l1 = data.insert_scalar_layer<POINT, POINT>("l1", std::pair {MESH_NODES, MESH_NODES});
@@ -325,7 +334,8 @@ TEST(sr, test_10) {
325334
// areal test
326335
TEST(sr, test_11) {
327336
// geometry
328-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/quasi_circle");
337+
std::string mesh_path = "../data/mesh/quasi_circle/";
338+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
329339
// data
330340
GeoFrame data(D);
331341
auto& l1 = data.insert_scalar_layer<POLYGON>("l1", "../data/sr/11/incidence_mat.csv");
@@ -349,7 +359,8 @@ TEST(sr, test_12) {
349359
using matrix_t = Eigen::Matrix<double, Dynamic, Dynamic>;
350360
using vector_t = Eigen::Matrix<double, Dynamic, 1>;
351361
// geometry
352-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/quasi_circle");
362+
std::string mesh_path = "../data/mesh/quasi_circle/";
363+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
353364
// data
354365
GeoFrame data(D);
355366
auto& l1 = data.insert_scalar_layer<POLYGON>("l1", "../data/sr/12/incidence_mat.csv");
@@ -375,7 +386,8 @@ TEST(sr, test_13) {
375386
using matrix_t = Eigen::Matrix<double, Dynamic, Dynamic>;
376387
using vector_t = Eigen::Matrix<double, Dynamic, 1>;
377388
// geometry
378-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/quasi_circle");
389+
std::string mesh_path = "../data/mesh/quasi_circle/";
390+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
379391
Triangulation<1, 1> T = Triangulation<1, 1>::Interval(0, 3.6, 10);
380392
// data
381393
GeoFrame data(D, T);
@@ -403,7 +415,8 @@ TEST(sr, test_14) {
403415
using matrix_t = Eigen::Matrix<double, Dynamic, Dynamic>;
404416
using vector_t = Eigen::Matrix<double, Dynamic, 1>;
405417
// geometry
406-
Triangulation<2, 2> D = read_mesh<2, 2>("../data/mesh/unit_square_21");
418+
std::string mesh_path = "../data/mesh/unit_square_21/";
419+
Triangulation<2, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
407420
Triangulation<1, 1> T = Triangulation<1, 1>::Interval(0, 1.8, 10);
408421
// data
409422
GeoFrame data(D, T);
@@ -427,7 +440,8 @@ TEST(sr, test_14) {
427440
// test on network (test_4-SR-PDE_no_cov_network.R)
428441
TEST(sr, test_15) {
429442
// geometry
430-
Triangulation<1, 2> D = read_mesh<1, 2>("../data/mesh/network");
443+
std::string mesh_path = "../data/mesh/network/";
444+
Triangulation<1, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
431445
// data
432446
GeoFrame data(D);
433447
auto& l1 = data.insert_scalar_layer<POINT>("l1", MESH_NODES);
@@ -449,7 +463,8 @@ TEST(sr, test_15) {
449463
// test_5-SR-PDE_with_cov_network.R
450464
TEST(sr, test_16) {
451465
// geometry
452-
Triangulation<1, 2> D = read_mesh<1, 2>("../data/mesh/network");
466+
std::string mesh_path = "../data/mesh/network/";
467+
Triangulation<1, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
453468
// data
454469
GeoFrame data(D);
455470
auto& l1 = data.insert_scalar_layer<POINT>("l1", MESH_NODES);
@@ -473,7 +488,8 @@ TEST(sr, test_16) {
473488
// // test_10-SR-PDE_no_cov_3d.R
474489
TEST(sr, test_17) {
475490
// geometry
476-
Triangulation<3, 3> D = read_mesh<3, 3>("../data/mesh/unit_sphere");
491+
std::string mesh_path = "../data/mesh/unit_sphere/";
492+
Triangulation<3, 3> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
477493
// data
478494
GeoFrame data(D);
479495
auto& l1 = data.insert_scalar_layer<POINT>("l1", MESH_NODES);
@@ -494,7 +510,8 @@ TEST(sr, test_17) {
494510

495511
// test_11-SR-PDE_no_cov_manifold
496512
TEST(sr, test_18) {
497-
Triangulation<2, 3> D = read_mesh<2, 3>("../data/mesh/surface_horseshoe");
513+
std::string mesh_path = "../data/mesh/surface_horseshoe/";
514+
Triangulation<2, 3> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
498515
// data
499516
GeoFrame data(D);
500517
auto& l1 = data.insert_scalar_layer<POINT>("l1", MESH_NODES);
@@ -515,7 +532,8 @@ TEST(sr, test_18) {
515532

516533
// test_12-tSR-PDE_network.R
517534
TEST(sr, test_19) {
518-
Triangulation<1, 2> D = read_mesh<1, 2>("../data/mesh/network");
535+
std::string mesh_path = "../data/mesh/network/";
536+
Triangulation<1, 2> D(mesh_path + "points.csv", mesh_path + "elements.csv", mesh_path + "boundary.csv");
519537
Triangulation<1, 1> T = Triangulation<1, 1>::UnitInterval(6);
520538
// data
521539
GeoFrame data(D, T);

0 commit comments

Comments
 (0)