@@ -271,3 +271,74 @@ TEST_F(CoordinatesTest, NegativeB) {
271271
272272 EXPECT_THROW (Coordinates coords (mesh), BoutException);
273273}
274+
275+ TEST_F (CoordinatesTest, CellAreas) {
276+
277+ static_cast <FakeMesh*>(bout::globals::mesh)
278+ ->setGridDataSource (
279+ new FakeGridDataSource ({{" g_11" , 4.0 }, {" g_22" , 1.0 }, {" g_33" , 9 }}));
280+
281+ Coordinates coords (mesh);
282+
283+ EXPECT_TRUE (IsFieldEqual (coords.dx , 1.0 ));
284+ EXPECT_TRUE (IsFieldEqual (coords.dy , 1.0 ));
285+ EXPECT_TRUE (IsFieldEqual (coords.dz , 1.0 ));
286+
287+ EXPECT_TRUE (IsFieldEqual (coords.g11 , 4.0 ));
288+ EXPECT_TRUE (IsFieldEqual (coords.g22 , 1.0 ));
289+ EXPECT_TRUE (IsFieldEqual (coords.g33 , 9.0 ));
290+ EXPECT_TRUE (IsFieldEqual (coords.g12 , 0.0 ));
291+ EXPECT_TRUE (IsFieldEqual (coords.g13 , 0.0 ));
292+ EXPECT_TRUE (IsFieldEqual (coords.g23 , 0.0 ));
293+
294+ EXPECT_TRUE (IsFieldEqual (coords.J , 6.0 ));
295+ EXPECT_TRUE (IsFieldEqual (coords.Bxy , 1.0 ));
296+
297+ EXPECT_TRUE (IsFieldEqual (coords.cell_area_xlow (), 3.0 ));
298+ EXPECT_TRUE (IsFieldEqual (coords.cell_area_xhigh (), 3.0 ));
299+ EXPECT_TRUE (IsFieldEqual (coords.cell_area_ylow (), 6.0 ));
300+ EXPECT_TRUE (IsFieldEqual (coords.cell_area_yhigh (), 6.0 ));
301+ EXPECT_TRUE (IsFieldEqual (coords.cell_area_zlow (), 2.0 ));
302+ EXPECT_TRUE (IsFieldEqual (coords.cell_area_zhigh (), 2.0 ));
303+
304+ EXPECT_TRUE (IsFieldEqual (coords.cell_volume (), 6.0 ));
305+ }
306+
307+ TEST_F (CoordinatesTest, CellAreasUpdate) {
308+
309+ static_cast <FakeMesh*>(bout::globals::mesh)
310+ ->setGridDataSource (new FakeGridDataSource ());
311+
312+ Coordinates coords (mesh);
313+
314+ EXPECT_TRUE (IsFieldEqual (coords.dx , 1.0 ));
315+ EXPECT_TRUE (IsFieldEqual (coords.dy , 1.0 ));
316+ EXPECT_TRUE (IsFieldEqual (coords.dz , 1.0 ));
317+
318+ EXPECT_TRUE (IsFieldEqual (coords.g11 , 1.0 ));
319+ EXPECT_TRUE (IsFieldEqual (coords.g22 , 1.0 ));
320+ EXPECT_TRUE (IsFieldEqual (coords.g33 , 1.0 ));
321+ EXPECT_TRUE (IsFieldEqual (coords.g12 , 0.0 ));
322+ EXPECT_TRUE (IsFieldEqual (coords.g13 , 0.0 ));
323+ EXPECT_TRUE (IsFieldEqual (coords.g23 , 0.0 ));
324+
325+ EXPECT_TRUE (IsFieldEqual (coords.J , 1.0 ));
326+ EXPECT_TRUE (IsFieldEqual (coords.Bxy , 1.0 ));
327+
328+ coords.cell_area_xlow () *= 2 ;
329+ coords.cell_area_xhigh () *= 3 ;
330+ coords.cell_area_ylow () *= 4 ;
331+ coords.cell_area_yhigh () *= 5 ;
332+ coords.cell_area_zlow () *= 6 ;
333+ coords.cell_area_zhigh () *= 7 ;
334+ coords.cell_volume () *= 8 ;
335+
336+ EXPECT_TRUE (IsFieldEqual (coords.cell_area_xlow (), 2.0 ));
337+ EXPECT_TRUE (IsFieldEqual (coords.cell_area_xhigh (), 3.0 ));
338+ EXPECT_TRUE (IsFieldEqual (coords.cell_area_ylow (), 4.0 ));
339+ EXPECT_TRUE (IsFieldEqual (coords.cell_area_yhigh (), 5.0 ));
340+ EXPECT_TRUE (IsFieldEqual (coords.cell_area_zlow (), 6.0 ));
341+ EXPECT_TRUE (IsFieldEqual (coords.cell_area_zhigh (), 7.0 ));
342+
343+ EXPECT_TRUE (IsFieldEqual (coords.cell_volume (), 8.0 ));
344+ }
0 commit comments