@@ -229,6 +229,164 @@ TEST(CurvilinearGridFromSplinesTransfinite, FourSplinesOneNSwapped)
229229 ASSERT_NEAR (85.932983124208747 , curvilinearGrid->GetNode (10 , 1 ).y , tolerance);
230230}
231231
232+ TEST (CurvilinearGridFromSplinesTransfinite, FourSplinesOneNReversed)
233+ {
234+ std::vector<Point> firstSpline{{2.172341E+02 , -2.415445E+01 },
235+ {4.314185E+02 , 1.947381E+02 },
236+ {8.064374E+02 , 3.987241E+02 }};
237+
238+ auto splines = std::make_shared<Splines>(Projection::cartesian);
239+ splines->AddSpline (firstSpline);
240+
241+ std::vector<Point> secondSpline{{2.894012E+01 , 2.010146E+02 },
242+ {2.344944E+02 , 3.720490E+02 },
243+ {6.424647E+02 , 5.917262E+02 }};
244+ splines->AddSpline (secondSpline);
245+
246+ std::vector<Point> thirdSpline{{2.799988E+02 , -2.807726E+01 },
247+ {2.265137E+00 , 2.802553E+02 }};
248+ splines->AddSpline (thirdSpline);
249+
250+ std::vector<Point> fourthSpline{{5.067361E+02 , 6.034946E+02 },
251+ {7.475956E+02 , 3.336055E+02 }};
252+ splines->AddSpline (fourthSpline);
253+
254+ CurvilinearParameters curvilinearParameters;
255+ curvilinearParameters.n_refinement = 40 ;
256+ curvilinearParameters.m_refinement = 20 ;
257+ CurvilinearGridFromSplinesTransfinite curvilinearGridFromSplinesTransfinite (splines, curvilinearParameters);
258+
259+ const auto curvilinearGrid = curvilinearGridFromSplinesTransfinite.Compute ();
260+
261+ constexpr double tolerance = 1e-6 ;
262+ ASSERT_NEAR (244.84733455150598 , curvilinearGrid->GetNode (0 , 0 ).x , tolerance);
263+ ASSERT_NEAR (240.03223719861575 , curvilinearGrid->GetNode (1 , 0 ).x , tolerance);
264+ ASSERT_NEAR (235.21721587684686 , curvilinearGrid->GetNode (2 , 0 ).x , tolerance);
265+ ASSERT_NEAR (230.40187707543339 , curvilinearGrid->GetNode (3 , 0 ).x , tolerance);
266+ ASSERT_NEAR (225.58666038317327 , curvilinearGrid->GetNode (4 , 0 ).x , tolerance);
267+ ASSERT_NEAR (220.77175891290770 , curvilinearGrid->GetNode (5 , 0 ).x , tolerance);
268+ ASSERT_NEAR (215.95654192442103 , curvilinearGrid->GetNode (6 , 0 ).x , tolerance);
269+ ASSERT_NEAR (211.14151904110099 , curvilinearGrid->GetNode (7 , 0 ).x , tolerance);
270+ ASSERT_NEAR (206.32630377949152 , curvilinearGrid->GetNode (8 , 0 ).x , tolerance);
271+ ASSERT_NEAR (201.51108480926104 , curvilinearGrid->GetNode (9 , 0 ).x , tolerance);
272+ ASSERT_NEAR (196.69606411139034 , curvilinearGrid->GetNode (10 , 0 ).x , tolerance);
273+
274+ ASSERT_NEAR (10.946966348412502 , curvilinearGrid->GetNode (0 , 0 ).y , tolerance);
275+ ASSERT_NEAR (16.292559955716278 , curvilinearGrid->GetNode (1 , 0 ).y , tolerance);
276+ ASSERT_NEAR (21.638069155281958 , curvilinearGrid->GetNode (2 , 0 ).y , tolerance);
277+ ASSERT_NEAR (26.983930812344244 , curvilinearGrid->GetNode (3 , 0 ).y , tolerance);
278+ ASSERT_NEAR (32.329656907057121 , curvilinearGrid->GetNode (4 , 0 ).y , tolerance);
279+ ASSERT_NEAR (37.675033050656793 , curvilinearGrid->GetNode (5 , 0 ).y , tolerance);
280+ ASSERT_NEAR (43.020759474232527 , curvilinearGrid->GetNode (6 , 0 ).y , tolerance);
281+ ASSERT_NEAR (48.366270407390992 , curvilinearGrid->GetNode (7 , 0 ).y , tolerance);
282+ ASSERT_NEAR (53.711994913833436 , curvilinearGrid->GetNode (8 , 0 ).y , tolerance);
283+ ASSERT_NEAR (59.057723537488684 , curvilinearGrid->GetNode (9 , 0 ).y , tolerance);
284+ ASSERT_NEAR (64.403232044419184 , curvilinearGrid->GetNode (10 , 0 ).y , tolerance);
285+
286+ ASSERT_NEAR (263.67028430842242 , curvilinearGrid->GetNode (0 , 1 ).x , tolerance);
287+ ASSERT_NEAR (259.11363739326902 , curvilinearGrid->GetNode (1 , 1 ).x , tolerance);
288+ ASSERT_NEAR (254.53691267796933 , curvilinearGrid->GetNode (2 , 1 ).x , tolerance);
289+ ASSERT_NEAR (249.93698634609487 , curvilinearGrid->GetNode (3 , 1 ).x , tolerance);
290+ ASSERT_NEAR (245.31456069699095 , curvilinearGrid->GetNode (4 , 1 ).x , tolerance);
291+ ASSERT_NEAR (240.66785332275725 , curvilinearGrid->GetNode (5 , 1 ).x , tolerance);
292+ ASSERT_NEAR (235.99933187522288 , curvilinearGrid->GetNode (6 , 1 ).x , tolerance);
293+ ASSERT_NEAR (231.30940727936030 , curvilinearGrid->GetNode (7 , 1 ).x , tolerance);
294+ ASSERT_NEAR (226.60252865287427 , curvilinearGrid->GetNode (8 , 1 ).x , tolerance);
295+ ASSERT_NEAR (221.88022520931327 , curvilinearGrid->GetNode (9 , 1 ).x , tolerance);
296+ ASSERT_NEAR (217.14743651601677 , curvilinearGrid->GetNode (10 , 1 ).x , tolerance);
297+
298+ ASSERT_NEAR (34.264668045745267 , curvilinearGrid->GetNode (0 , 1 ).y , tolerance);
299+ ASSERT_NEAR (39.307546170495868 , curvilinearGrid->GetNode (1 , 1 ).y , tolerance);
300+ ASSERT_NEAR (44.379080332661857 , curvilinearGrid->GetNode (2 , 1 ).y , tolerance);
301+ ASSERT_NEAR (49.481517460105827 , curvilinearGrid->GetNode (3 , 1 ).y , tolerance);
302+ ASSERT_NEAR (54.613111211730796 , curvilinearGrid->GetNode (4 , 1 ).y , tolerance);
303+ ASSERT_NEAR (59.775023214376127 , curvilinearGrid->GetNode (5 , 1 ).y , tolerance);
304+ ASSERT_NEAR (64.963841851929189 , curvilinearGrid->GetNode (6 , 1 ).y , tolerance);
305+ ASSERT_NEAR (70.178519042215470 , curvilinearGrid->GetNode (7 , 1 ).y , tolerance);
306+ ASSERT_NEAR (75.413628528250186 , curvilinearGrid->GetNode (8 , 1 ).y , tolerance);
307+ ASSERT_NEAR (80.667056521594716 , curvilinearGrid->GetNode (9 , 1 ).y , tolerance);
308+ ASSERT_NEAR (85.932983124208747 , curvilinearGrid->GetNode (10 , 1 ).y , tolerance);
309+ }
310+
311+ TEST (CurvilinearGridFromSplinesTransfinite, FourSplinesOneMReversed)
312+ {
313+ std::vector<Point> firstSpline{{2.172341E+02 , -2.415445E+01 },
314+ {4.314185E+02 , 1.947381E+02 },
315+ {8.064374E+02 , 3.987241E+02 }};
316+
317+ auto splines = std::make_shared<Splines>(Projection::cartesian);
318+ splines->AddSpline (firstSpline);
319+
320+ std::vector<Point> secondSpline{{6.424647E+02 , 5.917262E+02 },
321+ {2.344944E+02 , 3.720490E+02 },
322+ {2.894012E+01 , 2.010146E+02 }};
323+ splines->AddSpline (secondSpline);
324+
325+ std::vector<Point> thirdSpline{{2.265137E+00 , 2.802553E+02 },
326+ {2.799988E+02 , -2.807726E+01 }};
327+ splines->AddSpline (thirdSpline);
328+
329+ std::vector<Point> fourthSpline{{5.067361E+02 , 6.034946E+02 },
330+ {7.475956E+02 , 3.336055E+02 }};
331+ splines->AddSpline (fourthSpline);
332+
333+ CurvilinearParameters curvilinearParameters;
334+ curvilinearParameters.n_refinement = 40 ;
335+ curvilinearParameters.m_refinement = 20 ;
336+ CurvilinearGridFromSplinesTransfinite curvilinearGridFromSplinesTransfinite (splines, curvilinearParameters);
337+
338+ const auto curvilinearGrid = curvilinearGridFromSplinesTransfinite.Compute ();
339+
340+ constexpr double tolerance = 1e-6 ;
341+ ASSERT_NEAR (244.84733455150598 , curvilinearGrid->GetNode (0 , 0 ).x , tolerance);
342+ ASSERT_NEAR (240.03223719861575 , curvilinearGrid->GetNode (1 , 0 ).x , tolerance);
343+ ASSERT_NEAR (235.21721587684686 , curvilinearGrid->GetNode (2 , 0 ).x , tolerance);
344+ ASSERT_NEAR (230.40187707543339 , curvilinearGrid->GetNode (3 , 0 ).x , tolerance);
345+ ASSERT_NEAR (225.58666038317327 , curvilinearGrid->GetNode (4 , 0 ).x , tolerance);
346+ ASSERT_NEAR (220.77175891290770 , curvilinearGrid->GetNode (5 , 0 ).x , tolerance);
347+ ASSERT_NEAR (215.95654192442103 , curvilinearGrid->GetNode (6 , 0 ).x , tolerance);
348+ ASSERT_NEAR (211.14151904110099 , curvilinearGrid->GetNode (7 , 0 ).x , tolerance);
349+ ASSERT_NEAR (206.32630377949152 , curvilinearGrid->GetNode (8 , 0 ).x , tolerance);
350+ ASSERT_NEAR (201.51108480926104 , curvilinearGrid->GetNode (9 , 0 ).x , tolerance);
351+ ASSERT_NEAR (196.69606411139034 , curvilinearGrid->GetNode (10 , 0 ).x , tolerance);
352+
353+ ASSERT_NEAR (10.946966348412502 , curvilinearGrid->GetNode (0 , 0 ).y , tolerance);
354+ ASSERT_NEAR (16.292559955716278 , curvilinearGrid->GetNode (1 , 0 ).y , tolerance);
355+ ASSERT_NEAR (21.638069155281958 , curvilinearGrid->GetNode (2 , 0 ).y , tolerance);
356+ ASSERT_NEAR (26.983930812344244 , curvilinearGrid->GetNode (3 , 0 ).y , tolerance);
357+ ASSERT_NEAR (32.329656907057121 , curvilinearGrid->GetNode (4 , 0 ).y , tolerance);
358+ ASSERT_NEAR (37.675033050656793 , curvilinearGrid->GetNode (5 , 0 ).y , tolerance);
359+ ASSERT_NEAR (43.020759474232527 , curvilinearGrid->GetNode (6 , 0 ).y , tolerance);
360+ ASSERT_NEAR (48.366270407390992 , curvilinearGrid->GetNode (7 , 0 ).y , tolerance);
361+ ASSERT_NEAR (53.711994913833436 , curvilinearGrid->GetNode (8 , 0 ).y , tolerance);
362+ ASSERT_NEAR (59.057723537488684 , curvilinearGrid->GetNode (9 , 0 ).y , tolerance);
363+ ASSERT_NEAR (64.403232044419184 , curvilinearGrid->GetNode (10 , 0 ).y , tolerance);
364+
365+ ASSERT_NEAR (263.67028430842242 , curvilinearGrid->GetNode (0 , 1 ).x , tolerance);
366+ ASSERT_NEAR (259.11363739326902 , curvilinearGrid->GetNode (1 , 1 ).x , tolerance);
367+ ASSERT_NEAR (254.53691267796933 , curvilinearGrid->GetNode (2 , 1 ).x , tolerance);
368+ ASSERT_NEAR (249.93698634609487 , curvilinearGrid->GetNode (3 , 1 ).x , tolerance);
369+ ASSERT_NEAR (245.31456069699095 , curvilinearGrid->GetNode (4 , 1 ).x , tolerance);
370+ ASSERT_NEAR (240.66785332275725 , curvilinearGrid->GetNode (5 , 1 ).x , tolerance);
371+ ASSERT_NEAR (235.99933187522288 , curvilinearGrid->GetNode (6 , 1 ).x , tolerance);
372+ ASSERT_NEAR (231.30940727936030 , curvilinearGrid->GetNode (7 , 1 ).x , tolerance);
373+ ASSERT_NEAR (226.60252865287427 , curvilinearGrid->GetNode (8 , 1 ).x , tolerance);
374+ ASSERT_NEAR (221.88022520931327 , curvilinearGrid->GetNode (9 , 1 ).x , tolerance);
375+ ASSERT_NEAR (217.14743651601677 , curvilinearGrid->GetNode (10 , 1 ).x , tolerance);
376+
377+ ASSERT_NEAR (34.264668045745267 , curvilinearGrid->GetNode (0 , 1 ).y , tolerance);
378+ ASSERT_NEAR (39.307546170495868 , curvilinearGrid->GetNode (1 , 1 ).y , tolerance);
379+ ASSERT_NEAR (44.379080332661857 , curvilinearGrid->GetNode (2 , 1 ).y , tolerance);
380+ ASSERT_NEAR (49.481517460105827 , curvilinearGrid->GetNode (3 , 1 ).y , tolerance);
381+ ASSERT_NEAR (54.613111211730796 , curvilinearGrid->GetNode (4 , 1 ).y , tolerance);
382+ ASSERT_NEAR (59.775023214376127 , curvilinearGrid->GetNode (5 , 1 ).y , tolerance);
383+ ASSERT_NEAR (64.963841851929189 , curvilinearGrid->GetNode (6 , 1 ).y , tolerance);
384+ ASSERT_NEAR (70.178519042215470 , curvilinearGrid->GetNode (7 , 1 ).y , tolerance);
385+ ASSERT_NEAR (75.413628528250186 , curvilinearGrid->GetNode (8 , 1 ).y , tolerance);
386+ ASSERT_NEAR (80.667056521594716 , curvilinearGrid->GetNode (9 , 1 ).y , tolerance);
387+ ASSERT_NEAR (85.932983124208747 , curvilinearGrid->GetNode (10 , 1 ).y , tolerance);
388+ }
389+
232390TEST (CurvilinearGridFromSplinesTransfinite, FiveSplines)
233391{
234392 std::vector<Point> firstSpline{{2.172341E+02 , -2.415445E+01 },
0 commit comments